qt/LedOK/wProgramManager/wEditProgram/wElement/eobject.h
2022-01-04 18:11:48 +08:00

95 lines
2.1 KiB
C++

#ifndef EOBJECT_H
#define EOBJECT_H
#include <math.h>
#include <QDebug>
#include <LoQClass/loqgraphicsobject.h>
#include <QPainter>
#include <QJsonValue>
#include <QJsonArray>
#include <QJsonObject>
#include <QJsonDocument>
#include <QWidget>
#include <QSpinBox>
#include <QDir>
#include <QFile>
#include <QFileInfo>
#include <QHBoxLayout>
#include <QVBoxLayout>
#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