ACF $AcfVersion:0$
CHierarchicalCommand.h
Go to the documentation of this file.
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ACF-Commercial
2#pragma once
3
4
5// Qt includes
6#include <QtCore/QString>
7
8#if QT_VERSION >= 0x050000 && QT_VERSION < 0x060000
9#include <QtWidgets/QAction>
10#else
11#include <QtGui/QAction>
12#endif
13
14// ACF includes
17#include <iprm/CNameParam.h>
19#include <ibase/ICommand.h>
20#include <iqtgui/iqtgui.h>
21
22
23namespace iqtgui
24{
25
26
31 public QAction,
33 public iprm::CNameParam,
34 public istd::THierarchicalBase<ibase::IHierarchicalCommand>
35{
36 Q_OBJECT
37
38public:
39 typedef QAction BaseClass;
42
44 const QString& name = "",
45 int priority = 100,
46 int staticFlags = CF_GLOBAL_MENU,
47 int groupId = GI_NORMAL,
48 const QByteArray& commandId = QByteArray());
49
50 void SetPriority(int priority);
51 void SetStaticFlags(int flags);
52 void SetCommandId(const QByteArray& commandId);
53 void SetGroupId(int groupId);
54
59
68 void InsertChild(CHierarchicalCommand* commandPtr, bool releaseFlag = false, int index = -1);
69
73 void RemoveChild(int index);
74
80
89 void SetVisuals(const QString& name, const QString& shortName, const QString& description, const QIcon& icon = QIcon());
90
91 // reimplemented (ibase::ICommand)
92 virtual int GetPriority() const override;
93 virtual QByteArray GetCommandId() const override;
94 virtual int GetGroupId() const override;
95 virtual int GetStaticFlags() const override;
96 virtual bool Execute(istd::IPolymorphic* contextPtr) override;
97
98 // reimplemented (istd::TIHierarchical<ibase::ICommand>)
99 virtual int GetChildsCount() const override;
100 virtual ibase::ICommand* GetChild(int index) const override;
101
102 // reimplemented (iprm::INameParam)
103 virtual void SetName(const QString& name) override;
104
105 // reimplemented (iprm::IEnableableParam)
106 virtual bool SetEnabled(bool isEnabled = true) override;
107
108 // reimplemented (iser::ISerializable)
109 virtual bool Serialize(iser::IArchive& archive) override;
110
111 // reimplemented (istd::IChangeable)
112 virtual int GetSupportedOperations() const override;
113 virtual bool CopyFrom(const istd::IChangeable& object, CompatibilityMode mode = CM_WITHOUT_REFS) override;
115 virtual bool IsEqual(const istd::IChangeable& object) const override;
116
117 // operators
118 bool operator==(const CHierarchicalCommand& command) const;
119 bool operator!=(const CHierarchicalCommand& command) const;
121
122protected Q_SLOTS:
124
125protected:
135 int FindInsertingIndex(int priority) const;
136
137private:
138 int m_priority;
139 int m_staticFlags;
140 int m_groupId;
141 QByteArray m_commandId;
142
144 Childs m_childs;
145};
146
147
148} // namespace iqtgui
149
150
151
152
Provides single command for interaction with user.
Definition ICommand.h:21
Basic implementation of IEnableableParam interface.
Implementation of a named object over iprm::INameParam interface.
Definition CNameParam.h:17
Implementation of hierarchical command based on QAction from Qt.
CHierarchicalCommand(const QString &name="", int priority=100, int staticFlags=CF_GLOBAL_MENU, int groupId=GI_NORMAL, const QByteArray &commandId=QByteArray())
virtual bool CopyFrom(const istd::IChangeable &object, CompatibilityMode mode=CM_WITHOUT_REFS) override
Copy this object from another one.
void ResetChilds()
Reset list of children.
void SetStaticFlags(int flags)
int FindTheSameCommand(const ibase::IHierarchicalCommand &command) const
Find the same command in child list.
virtual ibase::ICommand * GetChild(int index) const override
void JoinLinkFrom(const ibase::IHierarchicalCommand *rootPtr)
Joint the second root as links.
int FindInsertingIndex(int priority) const
Find index where element with specified priority should be inserted.
virtual bool IsEqual(const istd::IChangeable &object) const override
Compare this object with another object.
bool operator!=(const CHierarchicalCommand &command) const
void InsertChild(CHierarchicalCommand *commandPtr, bool releaseFlag=false, int index=-1)
Insert command to child list.
void SetGroupId(int groupId)
void SetVisuals(const QString &name, const QString &shortName, const QString &description, const QIcon &icon=QIcon())
Set all visual elements of this command.
void SetCommandId(const QByteArray &commandId)
virtual istd::IChangeableUniquePtr CloneMe(istd::IChangeable::CompatibilityMode mode=istd::IChangeable::CM_WITHOUT_REFS) const override
Make a copy of this object.
virtual int GetChildsCount() const override
iprm::CEnableableParam BaseClass2
CHierarchicalCommand & operator=(const CHierarchicalCommand &command)
virtual bool SetEnabled(bool isEnabled=true) override
Set the enabled state.
virtual void SetName(const QString &name) override
Set the object name.
virtual int GetSupportedOperations() const override
Get set of flags for supported operations.
virtual int GetPriority() const override
void RemoveChild(int index)
Remove child at specified index.
void SetPriority(int priority)
virtual QByteArray GetCommandId() const override
virtual int GetStaticFlags() const override
virtual int GetGroupId() const override
bool operator==(const CHierarchicalCommand &command) const
virtual bool Serialize(iser::IArchive &archive) override
Load or store state of this object as a archive stream.
virtual bool Execute(istd::IPolymorphic *contextPtr) override
Represents an input/output persistence archive for object serialization.
Definition IArchive.h:164
Common interface for data model objects, which can be changed.
Definition IChangeable.h:28
CompatibilityMode
Control how relationship betweeen objects are interpreted.
@ CM_WITHOUT_REFS
External references are simple ignored.
Base interface for all used interfaces and implementations.
Template based implementation of a hierarchical object.
Common interface to define the hierarchical graph structures.
Implementation of a special pointer container, which controls the live cycle of the pointer object,...
Standard GUI specific interfaces and components based on Qt.