qt/LedOK/player/playwin.h

70 lines
1.7 KiB
C
Raw Normal View History

2023-04-18 14:14:46 +08:00
#ifndef PLAYWIN_H
#define PLAYWIN_H
2023-10-23 14:58:29 +08:00
#include "gutil/qjson.h"
2023-04-18 14:14:46 +08:00
#include "synctimer.h"
#include <QMenu>
#include <QMap>
2023-10-23 14:58:29 +08:00
class EleBase {
public:
QString id;
QString type;
int x;
int y;
int w;
int h;
int startTime;
int endTime;
bool repeat;
QWidget *wgt{0};
};
2023-04-18 14:14:46 +08:00
class Page : public QWidget {
public:
explicit Page(QWidget *parent = nullptr);
int timeSpan{0};
2023-10-23 14:58:29 +08:00
std::vector<EleBase> eles;
2023-04-18 14:14:46 +08:00
};
class TimerValue{
public:
TimerValue(QWidget *ele = nullptr, bool visible = false): ele(ele), visible(visible){}
QWidget* ele;
bool visible;
};
class PlayWin : public QWidget {
Q_OBJECT
public:
static PlayWin *self;
2023-10-23 14:58:29 +08:00
static PlayWin *newIns(int width, int height, QString dir, const JValue &prog, QWidget *parent = nullptr);
PlayWin(int x, int y, int width, int height, QString dir, const JValue &prog, QWidget *parent = nullptr);
2023-04-18 14:14:46 +08:00
SyncTimer* timer = 0;
int cur = 0;
2023-10-23 14:58:29 +08:00
std::vector<Page*> pages;
2023-04-18 14:14:46 +08:00
QMap<int,TimerValue> timerMap;
QPoint mPressRel;
QMenu *menu;
public slots:
void sltNext();
void sltSetVisible(QWidget *wgt, bool visible){
wgt->setVisible(visible);
}
signals:
void sigSetVisible(QWidget *, bool);
protected:
void paintEvent(QPaintEvent *) override;
void timerEvent(QTimerEvent *) override;
void mousePressEvent(QMouseEvent *) override;
void mouseReleaseEvent(QMouseEvent *) override;
void mouseMoveEvent(QMouseEvent *) override;
void leaveEvent(QEvent *) override;
void contextMenuEvent(QContextMenuEvent *) override;
void closeEvent(QCloseEvent *) override;
};
#endif // PLAYWIN_H