OpenTwin 0.1
OpenTwin
 
Loading...
Searching...
No Matches
GraphicsPicker.h
Go to the documentation of this file.
1
4// ###########################################################################################################################################################################################################################################################################################################################
5
6#pragma once
7
8// OpenTwin header
12
13// Qt header
14#include <QtWidgets/qdockwidget.h>
15#include <QtCore/qobject.h>
16#include <QtCore/qsize.h>
17
18// std header
19#include <list>
20
21class QLabel;
22class QWidget;
23class QGridLayout;
24class QVBoxLayout;
25class QTreeWidgetItem;
26
27namespace ot {
28
29 class Splitter;
30 class GraphicsItemCfg;
31 class TreeWidgetFilter;
32 class GraphicsItemPreview;
33 class GraphicsPickerCollectionPackage;
34
35 class OT_WIDGETS_API_EXPORT GraphicsPicker : public QObject {
36 Q_OBJECT
37 public:
38 GraphicsPicker(Qt::Orientation _orientation = Qt::Vertical);
39 virtual ~GraphicsPicker();
40
41 QWidget* pickerWidget(void);
42
43 void setOrientation(Qt::Orientation _orientation);
44 Qt::Orientation orientation(void) const;
45
46 void add(const ot::GraphicsPickerCollectionPackage& _pckg);
47 void add(ot::GraphicsPickerCollectionCfg* _topLevelCollection);
48 void add(const std::list<ot::GraphicsPickerCollectionCfg*>& _topLevelCollections);
49
50 void clear(void);
51
52 void setPreviewBoxSize(const QSize& _size) { m_previewSize = _size; };
53 const QSize& previewBoxSize(void) const { return m_previewSize; };
54
55 void setOwner(const BasicServiceInformation& _owner) { m_owner = _owner; };
56
59 const BasicServiceInformation& getOwner(void) const { return m_owner; };
60
61 private Q_SLOTS:
62 void slotSelectionChanged(void);
63
64 private:
65 void addCollection(ot::GraphicsPickerCollectionCfg* _category, QTreeWidgetItem* _parentNavigationItem);
66 void addCollections(const std::list<ot::GraphicsPickerCollectionCfg*>& _categories, QTreeWidgetItem* _parentNavigationItem);
67
68 void addItem(const GraphicsPickerItemInformation& _info, QTreeWidgetItem* _parentNavigationItem);
69 void addItems(const std::list<GraphicsPickerItemInformation>& _info, QTreeWidgetItem* _parentNavigationItem);
70
71 void storePreviewData(QTreeWidgetItem* _item, const GraphicsPickerItemInformation& _info);
72
73 struct PreviewBox {
74 QWidget* layoutWidget;
75 QVBoxLayout* layout;
77 QLabel* label;
78 };
79
80 bool m_repaintPreviewRequired;
81
82 BasicServiceInformation m_owner;
83
84 QSize m_previewSize;
85 Splitter* m_splitter;
86 TreeWidgetFilter* m_navigation;
87
88 std::list<PreviewBox> m_previews;
89 QWidget* m_viewLayoutW;
90 QGridLayout* m_viewLayout;
91
92 std::map<QTreeWidgetItem*, std::list<GraphicsPickerItemInformation>*> m_previewData;
93 };
94
95 // ###########################################################################################################################################################################################################################################################################################################################
96
97 // ###########################################################################################################################################################################################################################################################################################################################
98
99 // ###########################################################################################################################################################################################################################################################################################################################
100
102 Q_OBJECT
103 public:
104
107 GraphicsPickerDockWidget(QWidget* _parentWidget = (QWidget*)nullptr);
108
112 GraphicsPickerDockWidget(const QString& _title, QWidget* _parentWidget = (QWidget*)nullptr);
113
118 GraphicsPickerDockWidget(GraphicsPicker* _customPickerWidget, const QString& _title, QWidget* _parentWidget = (QWidget*)nullptr);
119
121
122 virtual void resizeEvent(QResizeEvent* _event) override;
123
124 void clear(void);
125
126 ot::GraphicsPicker* pickerWidget(void) { return m_widget; };
127
128 private:
129 inline Qt::Orientation calcWidgetOrientation(void) const { return (this->width() > this->height() ? Qt::Horizontal : Qt::Vertical); };
130
131 GraphicsPicker* m_widget;
132 };
133
134}
#define OT_WIDGETS_API_EXPORT
Definition OTWidgetsAPIExport.h:12
The BasicServiceInformation class is used to hold a service name and type. The BasicServiceInformatio...
Definition BasicServiceInformation.h:21
Definition GraphicsItemPreview.h:20
Definition GraphicsPickerCollectionCfg.h:20
Package that will be used to fill the graphics picker The name of the editor must be unique....
Definition GraphicsPackage.h:24
Definition GraphicsPicker.h:101
ot::GraphicsPicker * pickerWidget(void)
Definition GraphicsPicker.h:126
Definition GraphicsPicker.h:35
void setOwner(const BasicServiceInformation &_owner)
Definition GraphicsPicker.h:55
const QSize & previewBoxSize(void) const
Definition GraphicsPicker.h:53
void setPreviewBoxSize(const QSize &_size)
Definition GraphicsPicker.h:52
const BasicServiceInformation & getOwner(void) const
Returns the current owner of the graphics picker. The owner information will be added to the mime dat...
Definition GraphicsPicker.h:59
Definition GraphicsPickerItemInformation.h:19
Definition Connector.h:8
@ Vertical
Definition GuiTypes.h:37