ImagingTools Core SDK
CLayout.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
5// Qt includes
6#include <QtCore/QMap>
7#include <QtCore/QList>
8#include <QtCore/QDataStream>
9#include <QtGui/QIcon>
10
11// ACF includes
12#include <istd/TSmartPtr.h>
13#include <istd/TChangeDelegator.h>
14
15// ImtCore includes
16#include <imtgui/ILayout.h>
17
18
19namespace imtgui
20{
21
22
23/*
24 Basic implementation for gui layout.
25*/
26class CLayout: public istd::TChangeDelegator<imtgui::ILayout>
27{
28public:
29 CLayout(CLayout* parentLayoutPtr = nullptr);
30 virtual ~CLayout();
31
32 // reimplemented (imtgui::ILayout)
33 virtual QByteArray GetLayoutId() const Q_DECL_OVERRIDE;
34 virtual void SetType(const LayoutType& type) Q_DECL_OVERRIDE;
35 virtual LayoutType GetType() const Q_DECL_OVERRIDE;
36 virtual void SetTitle(const QString& title) Q_DECL_OVERRIDE;
37 virtual QString GetTitle() const Q_DECL_OVERRIDE;
38 virtual void SetTitleAlign(const AlignType& align) Q_DECL_OVERRIDE;
39 virtual AlignType GetTitleAlign() const Q_DECL_OVERRIDE;
40 virtual void SetIcon(const QPixmap& icon) Q_DECL_OVERRIDE;
41 virtual QPixmap GetIcon() const Q_DECL_OVERRIDE;
42 virtual void SetViewId(const QByteArray& viewId) Q_DECL_OVERRIDE;
43 virtual QByteArray GetViewId() const Q_DECL_OVERRIDE;
44 virtual void SetSizes(const SizeList& sizes) Q_DECL_OVERRIDE;
45 virtual SizeList GetSizes() const Q_DECL_OVERRIDE;
46 virtual void SetLayoutProperties(const LayoutProperties &properties) Q_DECL_OVERRIDE;
47 virtual LayoutProperties GetLayoutProperties() const Q_DECL_OVERRIDE;
48 virtual ILayout* GetParent() const Q_DECL_OVERRIDE;
49 virtual int GetChildsCount() const Q_DECL_OVERRIDE;
50 virtual ILayout* GetChild(int index) const Q_DECL_OVERRIDE;
51 virtual void InsertChild(int index, ILayout* layout) Q_DECL_OVERRIDE;
52 virtual void AppendChild(ILayout* layout) Q_DECL_OVERRIDE;
53 virtual ILayout* TakeChild(int index) Q_DECL_OVERRIDE;
54 virtual ILayout* TakeFirst() Q_DECL_OVERRIDE;
55 virtual ILayout* TakeLast() Q_DECL_OVERRIDE;
56 virtual void Clear() Q_DECL_OVERRIDE;
57 virtual ILayout* FindChild(const QByteArray& id) const Q_DECL_OVERRIDE;
58 virtual ILayout* RemoveChild(const QByteArray& id) Q_DECL_OVERRIDE;
59 virtual void SplitLayout(ILayout::LayoutType type, int width, int height) Q_DECL_OVERRIDE;
60
61 // reimplemented (iser::ISerializable)
62 virtual bool Serialize(iser::IArchive& archive) Q_DECL_OVERRIDE;
63
64private:
65 void CopyData(ILayout* source);
66 bool InternalSerializeItemRecursive(iser::IArchive& archive);
67 bool SerializeProperties(iser::IArchive& archive, LayoutProperties &properties);
68
69private:
70 SizeList m_sizes;
71 LayoutType m_layoutType;
72 AlignType m_alignType;
73 QString m_title;
74 QPixmap m_icon;
75 QByteArray m_id;
76 QByteArray m_viewId;
77 CLayout* m_parent;
78 QList<ILayout*> m_childs;
79 LayoutProperties m_properties;
80
81// QDataStream &operator<<(QDataStream &dataStream, LayoutProperties* src);
82};
83
84
85QDataStream &operator<<(QDataStream &dataStream, const ILayout::LayoutProperties &src);
86QDataStream &operator>>(QDataStream &dataStream, ILayout::LayoutProperties &src);
87bool operator ==(const ILayout::LayoutProperties &left, const ILayout::LayoutProperties &right);
88bool operator !=(const ILayout::LayoutProperties &left, const ILayout::LayoutProperties &right);
89
90
91} // namespace imtgui
92
93