#ifndef EOBJECT_H #define EOBJECT_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "loappconfig.h" #include "loapptools.h" #include "globaldefine.h" #define MACRO_DEFAULT_PLAYDURATION 10 class eObjectAttr; class eObject : public LoQGraphicsObject { Q_OBJECT public: enum ElementType { Text = QGraphicsItem::UserType + 1, Photo, Movie, Gif, DClock, AClock, Audio, Office, Temp, Weather, Rss, Timer, ColorText, Window }; struct Data { qreal x; qreal y; qreal w; qreal h; }; public: explicit eObject(InteractiveType type = Dynamic, QGraphicsItem *parent = nullptr); explicit eObject(QRectF rect, InteractiveType type = Dynamic, QGraphicsItem *parent = nullptr); explicit eObject(const QJsonObject &json, InteractiveType type = Dynamic, QGraphicsItem *parent = nullptr); int m_iType=-1; private: void init(); public: virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) override { Q_UNUSED(event); } public: virtual QJsonObject save(const QString &pRoot) = 0; virtual QWidget* wAttrElement() = 0; public: virtual QWidget* wAttr(); virtual QStringList filesList() const { return QStringList(); } virtual QJsonObject elementJson() const; public: void setRLimit(const QRectF r); QString getFileMd5(QString filePath); signals: // Qt::BlockingQueuedConnection void sPlayBQ(); void sStopBQ(); void sAttrSetting(const eObject::Data &); public slots: virtual void playElectment() {} virtual void stopElectment() {} void onAttrChanged(const eObject::Data &data); void onAttrSetting(const QRectF &r); private: eObjectAttr *m_wAttr; }; #endif // EOBJECT_H