Maki
Formally verfied low-code orchestration
Loading...
Searching...
No Matches
canvas_control_widget.h
1#pragma once
2
3#include <QColor>
4#include <QGraphicsProxyWidget>
5#include <functional>
6
7#include "app_configs.h"
8
9class QEnterEvent;
10class QEvent;
11class QHBoxLayout;
12class QPropertyAnimation;
13class QTimer;
14class QWidget;
15
16class CloseButton;
17class StyledFrame;
18
19namespace maki
20{
21class ControlWidget;
22}
23
25{
26 bool isFading = false;
27 int fadeDurationMs = 150;
28 int fadeDelayMs = 1000;
29
30 QColor highlightColor;
31 Config::ControlPosition position = Config::ControlPosition::Top;
32};
33
34class CanvasControlWidget : public QGraphicsProxyWidget
35{
36public:
37 CanvasControlWidget(std::function<void()> dismissed, QGraphicsItem* parent = nullptr);
38
39 maki::ControlWidget* controlWidget() const;
40 void setControlWidget(maki::ControlWidget* controls, const ControlProperties& properties);
41
42 bool hideControl();
43
44protected:
45 void hoverEnterEvent(QGraphicsSceneHoverEvent* event) override;
46 void hoverLeaveEvent(QGraphicsSceneHoverEvent* event) override;
47 bool eventFilter(QObject* watched, QEvent* event) override;
48
49private:
50 const int FADE_DELAY_MS = 2000;
51 const int FADE_DURATION_MS = 150;
52
53 StyledFrame* mFrame = nullptr;
54 QHBoxLayout* mFrameLayout = nullptr;
55 maki::ControlWidget* mControls = nullptr;
56 CloseButton* mCloseButton = nullptr;
57
58 std::function<void()> mDismissed;
59
60 ControlProperties mProperties;
61 bool mMouseInside = false;
62 QTimer* mFadeTimer = nullptr;
63 QPropertyAnimation* mFadeAnimation = nullptr;
64
65 void startFadeOut();
66 void cancelFadeOut();
67};
Definition close_button.h:6
Definition frame.h:10
Contains UI helper widgets and layout grouping utilities used by MAKI.
Definition generator.h:10
Definition canvas_control_widget.h:25