#ifndef EPHOTO_H
#define EPHOTO_H

#include "ebase.h"
#include "pagelistitem.h"

class EPhoto : public EBase {
    Q_OBJECT
public:
    enum EnterStyle {
        NoneStyle = 0,
        Expanding2Left,
        Expanding2Right,
        Expanding2Top,
        Expanding2Bottom,
        ExpandingFromCenter
    };

public:
    static QString filters() { return tr("Images (*.png *.jpg *.jpeg *.bmp)"); }
    static EPhoto *create(const QString &file, PageListItem *pageItem, EBase *multiWin = nullptr);
    static EPhoto *create(const QJsonObject &, PageListItem *pageItem, EBase *multiWin = nullptr);

    explicit EPhoto(const QImage&, const QString &dir, const QString &name, PageListItem *pageItem, EBase *multiWin = nullptr);

    void scaleImgIfNeed();

    int type() const override { return EBase::Photo; }
    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
    QJsonObject attrJson() const override;
    void freeFiles() override;
    void loadFiles() override;
    bool save(const QString &pageDir) override;
    QWidget* attrWgt() override;

    QImage img;
    QString mDir;
    QString mName;
protected:
    PageListItem *mPageItem;
    int mDuration = 10;
    int mEnterStyle = 0;
    int mEnterDuration = 0;
};

#endif // EPHOTO_H