ImagingTools Core SDK
CHierarchicalLayoutWidget.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4// Qt includes
5#include <QtCore/QTimer>
6#include <QtGui/QPainter>
7#include <QtGui/QPaintEvent>
8#include <QtWidgets/QWidget>
9#include <GeneratedFiles/imtgui/ui_CCustomLayoutWidgetForm.h>
10
11// ACF includes
12#include <iser/ISerializable.h>
13#include <iser/CXmlStringWriteArchive.h>
14#include <iser/CXmlStringReadArchive.h>
15#include <imtgui/ILayout.h>
16#include <imtgui/CLayoutSettingsDialog.h>
17
18
19namespace imtgui
20{
21
22
23class CCustomLayoutWidget;
24
25
29class CHierarchicalLayoutWidget: public QWidget
30{
31 Q_OBJECT
32
33public:
34 typedef QList<QByteArray> IdsList;
35 typedef QList<int> SizeList;
36
37
38 enum ViewMode
39 {
40 VM_UNDEFINED,
41 VM_NORMAL,
42 VM_EDIT
43 };
44
45 CHierarchicalLayoutWidget(QWidget* parentPtr = Q_NULLPTR);
46
47 void SetViewMode(ViewMode viewMode);
48 CHierarchicalLayoutWidget::ViewMode GetViewMode();
49 void ClearAll();
50 void SetAdditionalNames(QStringList& additionalNames);
51 void CleanLayoutRecursive(QLayout* layoutPtr);
52 CCustomLayoutWidget* createCustomWidget();
53 void SetBorderColor(const QColor &color);
54 QColor GetBorderColor() const;
55 void SetBorderEnabled(bool isBorderEnabled);
56 bool IsBorderEnabled() const;
57
58protected:
59 friend class CCustomLayoutWidget;
60
61private:
62
63Q_SIGNALS:
64 void EmitLayoutChanged(QByteArray id, ILayout::LayoutType type, int count);
65 void EmitDropEvent(QByteArray id, QDropEvent* eventPtr);
66 void EmitOpenMenuEvent(QByteArray id, QMouseEvent* eventPtr);
67 void EmitClearEvent(const QByteArray& id);
68 void EmitAddWidget(const QByteArray& id, int index);
69 void EmitAddWidgetByViewId(const QByteArray& id, const QByteArray& viewId);
70 void EmitDeleteWidget(const QByteArray& id);
71 void EmitSplitLayout(const QByteArray& id, ILayout::LayoutType type, int width, int height);
72 void EmitChangeIcon(const QByteArray& id);
73 void EmitRemoveIcon(const QByteArray& id);
74 void EmitChangeAlignTitle(const QByteArray& id, const ILayout::AlignType& align);
75 void EmitChangeTitle(const QByteArray& id, const QString& title);
76 void EmitChangeSizes(const QByteArray& id, const SizeList& sizeList);
77 void EmitChangeProperties(const QByteArray& id);
78
79private:
80 typedef QMap<QByteArray, CCustomLayoutWidget*> CustomWidgetMap;
81 CustomWidgetMap m_customWidgetMap;
82 ViewMode m_viewMode;
83 QStringList m_additionalNames;
84 QColor m_borderColor;
85 bool m_isShowBox;
86};
87
88
92class CCustomLayoutWidget: public QWidget, Ui::CCustomLayoutWidgetForm
93{
94 Q_OBJECT
95public:
96 CCustomLayoutWidget(const QByteArray& id, CHierarchicalLayoutWidget& hierarchicalLayoutWidget, CCustomLayoutWidget* parentCustomWidgetPtr = Q_NULLPTR, QWidget* parentPtr = Q_NULLPTR);
97
98 void SetDefaultPalette();
99 void SetHighLightPalette();
100 bool SetWidget(QWidget* widgetPtr);
101 QWidget* GetWidget();
102 void SetName(QString name);
103 QString GetName();
104 void SetEditMode(bool isEditMode);
105 QByteArray GetId();
106 void SetId(const QByteArray& id);
107 QPixmap GetIcon();
108 void SetIcon(const QPixmap &icon);
109 QByteArray GetViewId();
110 void SetViewId(const QByteArray& viewId);
111 void SetTitleAlign(const ILayout::AlignType &align);
112 ILayout::AlignType GetTitleAlign();
113 void SetLayoutProperties(const ILayout::LayoutProperties &properties);
114 int LeftMargin();
115 int RightMargin();
116 int TopMargin();
117 int BottomMargin();
118
119protected:
120 // reimplemented (QWidget)
121 virtual void paintEvent(QPaintEvent* eventPtr) Q_DECL_OVERRIDE;
122
123protected Q_SLOTS:
124 void OnAddWidget();
125 void OnChangeSettings();
126 void OnDeleteWidget();
127 void OnSplitVertical();
128 void OnSplitHorizontal();
129 void OnAlignLeft();
130 void OnAlignCenter();
131 void OnAlignRight();
132 void OnChangeIcon();
133 void OnTitleChanged();
134 void OnRemoveIcon();
135
136private:
137 CHierarchicalLayoutWidget& m_hierarchicalLayoutWidget;
138 CCustomLayoutWidget* m_parentCustomWidgetPtr;
139 QByteArray m_id;
140 QByteArray m_viewId;
141 QWidget* m_externalWidgetPtr;
142 ILayout::AlignType m_titleAlign;
143 ILayout::LayoutProperties m_properties;
144};
145
146
147} //namespace imtgui
148
149