Plasma Engine  2.0
Loading...
Searching...
No Matches
QtProxy.moc.h
1#pragma once
2
3#include <Foundation/Containers/HybridArray.h>
4#include <Foundation/Strings/String.h>
5#include <Foundation/Types/Variant.h>
6#include <GuiFoundation/Action/BaseActions.h>
7#include <GuiFoundation/GuiFoundationDLL.h>
8#include <ToolsFoundation/Factory/RttiMappedObjectFactory.h>
9
10#include <QEvent>
11#include <QObject>
12#include <QPointer>
13#include <QSharedPointer>
14#include <QWidget>
15#include <QWidgetAction>
16
17class QAction;
18class QMenu;
19class QLabel;
20class QSlider;
21class plAction;
22
24class PL_GUIFOUNDATION_DLL plQtProxy : public QObject
25{
26 Q_OBJECT
27
28public:
29 plQtProxy();
30 virtual ~plQtProxy();
31
32 virtual void Update() = 0;
33
34 virtual void SetAction(plAction* pAction);
35 plAction* GetAction() { return m_pAction; }
36
48 static bool TriggerDocumentAction(plDocument* pDocument, QKeyEvent* pEvent, bool bTestOnly);
49
50 static plRttiMappedObjectFactory<plQtProxy>& GetFactory();
51 static QSharedPointer<plQtProxy> GetProxy(plActionContext& ref_context, plActionDescriptorHandle hAction);
52
53protected:
54 PL_MAKE_SUBSYSTEM_STARTUP_FRIEND(GuiFoundation, QtProxies);
59 static QObject* s_pSignalProxy;
60
61protected:
62 plAction* m_pAction;
63};
64
65class PL_GUIFOUNDATION_DLL plQtActionProxy : public plQtProxy
66{
67 Q_OBJECT
68
69public:
70 virtual QAction* GetQAction() = 0;
71};
72
73class PL_GUIFOUNDATION_DLL plQtCategoryProxy : public plQtProxy
74{
75 Q_OBJECT
76public:
77 virtual void Update() override {}
78};
79
80class PL_GUIFOUNDATION_DLL plQtMenuProxy : public plQtProxy
81{
82 Q_OBJECT
83
84public:
87
88 virtual void Update() override;
89 virtual void SetAction(plAction* pAction) override;
90
91 virtual QMenu* GetQMenu();
92
93protected:
94 QMenu* m_pMenu;
95};
96
97class PL_GUIFOUNDATION_DLL plQtButtonProxy : public plQtActionProxy
98{
99 Q_OBJECT
100
101public:
104
105 virtual void Update() override;
106 virtual void SetAction(plAction* pAction) override;
107
108 virtual QAction* GetQAction() override;
109
110private Q_SLOTS:
111 void OnTriggered();
112
113private:
114 void StatusUpdateEventHandler(plAction* pAction);
115
116private:
117 QPointer<QAction> m_pQtAction;
118};
119
120
121class PL_GUIFOUNDATION_DLL plQtDynamicMenuProxy : public plQtMenuProxy
122{
123 Q_OBJECT
124
125public:
126 virtual void SetAction(plAction* pAction) override;
127
128private Q_SLOTS:
129 void SlotMenuAboutToShow();
130 void SlotMenuEntryTriggered();
131
132private:
134};
135
136class PL_GUIFOUNDATION_DLL plQtDynamicActionAndMenuProxy : public plQtDynamicMenuProxy
137{
138 Q_OBJECT
139
140public:
143
144 virtual void Update() override;
145 virtual void SetAction(plAction* pAction) override;
146 virtual QAction* GetQAction();
147
148private Q_SLOTS:
149 void OnTriggered();
150
151private:
152 void StatusUpdateEventHandler(plAction* pAction);
153
154private:
155 QPointer<QAction> m_pQtAction;
156};
157
158
159class PL_GUIFOUNDATION_DLL plQtLabeledSlider : public QWidget
160{
161 Q_OBJECT
162
163public:
164 plQtLabeledSlider(QWidget* pParent);
165
166 QLabel* m_pLabel;
167 QSlider* m_pSlider;
168};
169
170
171class PL_GUIFOUNDATION_DLL plQtSliderWidgetAction : public QWidgetAction
172{
173 Q_OBJECT
174
175public:
176 plQtSliderWidgetAction(QWidget* pParent);
177 void setMinimum(int value);
178 void setMaximum(int value);
179 void setValue(int value);
180
181Q_SIGNALS:
182 void valueChanged(int value);
183
184private Q_SLOTS:
185 void OnValueChanged(int value);
186
187protected:
188 virtual QWidget* createWidget(QWidget* parent) override;
189 virtual bool eventFilter(QObject* obj, QEvent* e) override;
190
191 plInt32 m_iMinimum;
192 plInt32 m_iMaximum;
193 plInt32 m_iValue;
194};
195
196class PL_GUIFOUNDATION_DLL plQtSliderProxy : public plQtActionProxy
197{
198 Q_OBJECT
199
200public:
203
204 virtual void Update() override;
205 virtual void SetAction(plAction* pAction) override;
206
207 virtual QAction* GetQAction() override;
208
209private Q_SLOTS:
210 void OnValueChanged(int value);
211
212private:
213 void StatusUpdateEventHandler(plAction* pAction);
214
215private:
216 QPointer<plQtSliderWidgetAction> m_pQtAction;
217};
218
Handle for a plAction.
Definition Action.h:27
Definition Action.h:111
Definition Document.h:57
A hybrid array uses in-place storage to handle the first few elements without any allocation....
Definition HybridArray.h:12
Definition Map.h:408
Definition QtProxy.moc.h:66
Definition QtProxy.moc.h:98
Definition QtProxy.moc.h:74
Definition QtProxy.moc.h:137
Definition QtProxy.moc.h:122
Definition QtProxy.moc.h:160
Definition QtProxy.moc.h:81
Glue class that maps plActions to QActions. QActions are only created if the plAction is actually map...
Definition QtProxy.moc.h:25
Definition QtProxy.moc.h:197
Definition QtProxy.moc.h:172
A factory that creates the closest matching objects according to the passed type.
Definition RttiMappedObjectFactory.h:13
Definition Action.h:67