1 #ifndef POPUPWIDGET_H
2 #define POPUPWIDGET_H
3 
4 #define GAP 0
5 
6 #include <QWidget>
7 #include <QPropertyAnimation>
8 #include <QDebug>
9 
10 enum struct PopupPos {TOP, RIGHT, LEFT, BOTTOM};
11 enum struct PopupState {SHOWN, HIDDEN};
12 enum struct PopupAnimationState {HIDE_ANIMATION, SHOW_ANIMATION, IDLE};
13 
14 class PopupWidget : public QWidget
15 {
16     Q_OBJECT
17 public:
18     explicit PopupWidget(PopupPos pos, double relPos, QWidget *parent = nullptr);
19     void setWidget(QWidget *widget);
20     void setState(PopupState state);
21     void updatePositions();
22     PopupState getState();
23     PopupAnimationState getAnimationState();
24 
25 public slots:
26     void showWidget();
27     void hideWidget();
28 
29 
30 protected slots:
31     void animationFinished();
32 
33 protected:
34     QWidget *floatingWidget;
35     QPropertyAnimation *animator;
36 
37     PopupPos directionPos;
38     double relativePos;
39     PopupState state;
40     PopupAnimationState animationState;
41     bool showOnHover;
42     int gap;
43 };
44 
45 #endif // POPUPWIDGET_H
46