qt/LedOK/wProgramManager/ebase.h

81 lines
2.2 KiB
C
Raw Normal View History

2022-08-25 18:37:24 +08:00
#ifndef EBASE_H
#define EBASE_H
#include <QGraphicsObject>
#include <QVBoxLayout>
#include <QPen>
#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(QVBoxLayout *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