81 lines
2.2 KiB
C++
81 lines
2.2 KiB
C++
#ifndef EBASE_H
|
|
#define EBASE_H
|
|
|
|
#include <QGraphicsObject>
|
|
#include <QVBoxLayout>
|
|
#include <QPen>
|
|
#include <float.h>
|
|
#define m_handleLen 10
|
|
|
|
class EBase : public QGraphicsObject {
|
|
Q_OBJECT
|
|
public:
|
|
enum ElementType {
|
|
Text = QGraphicsItem::UserType + 1,
|
|
Photo, Video, Gif, Audio,
|
|
DClock, AClock, Timer, Environ, Window, Web
|
|
};
|
|
Q_ENUM(ElementType)
|
|
|
|
explicit EBase(EBase *multiWin = nullptr);
|
|
|
|
void setBaseAttr(const QJsonObject &);
|
|
void addBaseAttr(QJsonObject &) const;
|
|
|
|
QRectF boundingRect() const override;
|
|
void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *) override;
|
|
|
|
virtual QJsonObject attrJson() const = 0;
|
|
virtual void loadFiles() {}
|
|
virtual void freeFiles() {}
|
|
virtual bool save(const QString &) {return true;}
|
|
virtual QWidget* attrWgt() = 0;
|
|
|
|
void addBaseAttrWgt(QBoxLayout *vBox);
|
|
inline void setSize(qreal width, qreal height) {
|
|
prepareGeometryChange();
|
|
mWidth = width;
|
|
mHeight = height;
|
|
emit sizeChanged();
|
|
}
|
|
void fitProgSize();
|
|
QRectF innerRect() const;
|
|
QRectF rect() const { return innerRect(); }
|
|
|
|
int mType{-1};
|
|
EBase *mMultiWin{nullptr};
|
|
qreal mWidth{0.0}, mHeight{0.0};
|
|
int mStartTime{0};
|
|
signals:
|
|
void sizeChanged();
|
|
|
|
protected:
|
|
void mousePressEvent(QGraphicsSceneMouseEvent *) override;
|
|
void mouseReleaseEvent(QGraphicsSceneMouseEvent *) override;
|
|
void mouseMoveEvent(QGraphicsSceneMouseEvent *) override;
|
|
void hoverMoveEvent(QGraphicsSceneHoverEvent *) override;
|
|
void hoverLeaveEvent(QGraphicsSceneHoverEvent *) override;
|
|
QVariant itemChange(GraphicsItemChange change, const QVariant &value) override;
|
|
|
|
void timerEvent(QTimerEvent *) override;
|
|
|
|
void setFrmSec(const QPointF &);
|
|
void setFrmSecIfNeed(Qt::WindowFrameSection frmSec, Qt::CursorShape cursor);
|
|
void clearSnap();
|
|
QPen mSidePen;
|
|
|
|
QRectF m_rL, m_rR, m_rT, m_rB, m_rLT, m_rRT, m_rRB, m_rLB;
|
|
QPointF mPressRel{FLT_MAX, FLT_MAX};
|
|
Qt::WindowFrameSection mFrmSec{Qt::NoSection};
|
|
char mLRSnap{0}, mTBSnap{0};
|
|
QList<EBase *> mOtherEles;
|
|
|
|
int bdImgIdx{-1};
|
|
QString bdEff{"rotate"};
|
|
int bdSpeed{2};
|
|
int bdOff{0};
|
|
int bdTimerId{0};
|
|
};
|
|
|
|
#endif // EBASE_H
|