4#ifndef DCC_MODULEOBJECT_H
5#define DCC_MODULEOBJECT_H
13using DCC_MODULE_TYPE = uint32_t;
15#define DCC_MODULE_HIERARCHY_BIT 0x80000000
16#define DCC_MODULE_GROUP_BIT 0x40000000
17#define DCC_MODULE_LEAF_BIT 0x20000000
18#define DCC_MODULE_LAYOUT_BIT 0x10000000
20#define DCC_MODULE_LISTVIEW_BIT 0x08000000
21#define DCC_MODULE_ITEM_BIT 0x04000000
22#define DCC_MODULE_SETTINGSGROUP_BIT 0x02000000
23#define DCC_MODULE_HORIZONTAL_BIT 0x01000000
24#define DCC_MODULE_VERTICAL_BIT 0x00800000
26#define DCC_MODULE_MAIN_BIT 0x00040000
27#define DCC_MODULE_CUSTOM_BIT 0x00020000
29namespace DCC_NAMESPACE {
30enum : DCC_MODULE_TYPE {
31 HIERARCHY_OBJECT = DCC_MODULE_HIERARCHY_BIT,
32 LEAF_OBJECT = DCC_MODULE_LEAF_BIT,
33 LISTVIEW = DCC_MODULE_GROUP_BIT | DCC_MODULE_LAYOUT_BIT | DCC_MODULE_LISTVIEW_BIT,
34 ITEM = DCC_MODULE_LEAF_BIT | DCC_MODULE_ITEM_BIT,
35 SETTINGSGROUP = DCC_MODULE_GROUP_BIT | DCC_MODULE_LAYOUT_BIT | DCC_MODULE_SETTINGSGROUP_BIT,
36 HORIZONTAL = DCC_MODULE_GROUP_BIT | DCC_MODULE_LAYOUT_BIT | DCC_MODULE_HORIZONTAL_BIT,
37 MAINLAYOUT = DCC_MODULE_GROUP_BIT | DCC_MODULE_LAYOUT_BIT | DCC_MODULE_MAIN_BIT,
38 HLISTLAYOUT = DCC_MODULE_GROUP_BIT | DCC_MODULE_LAYOUT_BIT | DCC_MODULE_HORIZONTAL_BIT
39 | DCC_MODULE_LISTVIEW_BIT,
40 VLISTLAYOUT = DCC_MODULE_GROUP_BIT | DCC_MODULE_LAYOUT_BIT | DCC_MODULE_VERTICAL_BIT
41 | DCC_MODULE_LISTVIEW_BIT,
42 PAGELAYOUT = DCC_MODULE_GROUP_BIT | DCC_MODULE_LAYOUT_BIT | DCC_MODULE_VERTICAL_BIT,
43 CUSTOM_OBJECT = DCC_MODULE_CUSTOM_BIT,
46class ModuleObjectPrivate;
57 QStringList contentText;
68 Q_PROPERTY(QString name READ name WRITE setName NOTIFY moduleDataChanged)
69 Q_PROPERTY(QString displayName READ displayName WRITE setDisplayName NOTIFY displayNameChanged)
70 Q_PROPERTY(QString description READ description WRITE setDescription NOTIFY moduleDataChanged)
72 QStringList contentText READ contentText WRITE setContentText NOTIFY moduleDataChanged)
73 Q_PROPERTY(QVariant icon READ icon WRITE setIcon NOTIFY moduleDataChanged)
74 Q_PROPERTY(
int badge READ badge WRITE setBadge NOTIFY moduleDataChanged)
76 Q_PROPERTY(
bool hidden READ isHidden WRITE setHidden NOTIFY stateChanged)
77 Q_PROPERTY(
bool disabled READ isDisabled WRITE setDisabled NOTIFY stateChanged)
82 const QString &displayName = {},
83 QObject *parent =
nullptr);
85 const QStringList &contentText,
86 QObject *parent =
nullptr);
88 const QString &displayName,
89 const QStringList &contentText,
90 QObject *parent =
nullptr);
92 const QString &displayName,
94 QObject *parent =
nullptr);
96 const QString &displayName,
97 const QString &description,
98 QObject *parent =
nullptr);
100 const QString &displayName,
101 const QString &description,
102 const QVariant &icon,
103 QObject *parent =
nullptr);
105 const QString &displayName,
106 const QString &description,
108 QObject *parent =
nullptr);
110 const QString &displayName,
111 const QString &description,
112 const QStringList &contentText,
113 const QVariant &icon,
114 QObject *parent =
nullptr);
142 QString name()
const;
143 QString displayName()
const;
144 QString description()
const;
145 QStringList contentText()
const;
146 QVariant icon()
const;
149 bool isHidden()
const;
150 bool isVisible()
const;
151 bool isDisabled()
const;
152 bool isEnabled()
const;
158 uint32_t getFlag()
const;
162 void setExtra(
bool value =
true);
165 bool noSearch()
const;
166 void setNoSearch(
bool noSearch =
true);
185 void setHidden(
bool hidden);
186 void setVisible(
bool visible);
187 void setDisabled(
bool disabled);
188 void setEnabled(
bool enabled);
192 virtual void setName(
const QString &name);
194 virtual void setDisplayName(
const QString &displayName);
196 virtual void setDescription(
const QString &description);
198 virtual void setContentText(
const QStringList &contentText);
199 virtual void addContentText(
const QString &contentText);
200 virtual void addContentText(
const QStringList &contentText);
203 virtual void setIcon(
const QVariant &icon);
204 virtual void setIcon(
const QIcon &icon);
206 virtual void setBadge(
int badge);
263 void visibleChanged();
276 inline bool hasChildrens() {
return !childrens().isEmpty(); }
284 int getChildrenSize()
const;
288 virtual void removeChild(
const int index);
289 virtual void insertChild(QList<ModuleObject *>::iterator before,
ModuleObject *
const module);
290 virtual void insertChild(
const int index,
ModuleObject *
const module);
299 static bool IsVisible(DCC_NAMESPACE::ModuleObject *
const module);
300 static bool IsHidden(DCC_NAMESPACE::ModuleObject *
const module);
312 static bool IsEnabled(DCC_NAMESPACE::ModuleObject *
const module);
313 static bool IsDisabled(DCC_NAMESPACE::ModuleObject *
const module);
321 inline virtual DCC_MODULE_TYPE getClassID()
const {
return HIERARCHY_OBJECT; }
ModuleObject作为规范每个Module的接口,每个Module必须提供其基本的信息
Definition moduleobject.h:66
static bool IsEnabled(dccv23::ModuleObject *const module)
IsEnabled 返回module是否可用,判断了配置项和程序设置项
static bool IsHiddenFlag(uint32_t flag)
IsHiddenFlag 判断标志是否为隐藏标志
void removedChild(ModuleObject *const module)
删除child前触发
void currentModuleChanged(ModuleObject *currentModule)
currentModuleChanged 当前激活的子项改变时会触发此信号
void displayNameChanged(const QString &displayName)
displayName改变后发送此信号
int findChild(ModuleObject *const child)
搜索子项,使用广度搜索
void stateChanged(uint32_t flag, bool state)
stateChanged 状态标志变化 (可见、禁用等)
virtual void setFlagState(uint32_t flag, bool state)
setFlagState 设置状态标志,状态标志共32位,高16位为预留,低16位可根据需要设置
void childStateChanged(ModuleObject *const child, uint32_t flag, bool state)
childStateChanged 子项状态标志变化 (可见、禁用等)
virtual QWidget * page()
每次被调均需new新的QWidget
void moduleDataChanged()
基本信息改变后发送此信号
virtual void active()
当进入模块时,active会被调用,如无需通知则可不实现
virtual ModuleObject * defultModule()
defultModule 默认active的子项 当某个页面被active时,会通过defultModule去active子项 当返回为nullptr时,不再递归active子项 ModuleObjec...
const QList< ModuleObject * > & childrens()
子项,不可直接使用QList进行增删改操作,应使用appendChild、removeChild、insertChild
static bool IsDisabledFlag(uint32_t flag)
IsDisabledFlag 判断标志是否为禁用标志
ModuleObject * currentModule() const
currentModule 当前active的子项 当前active的子项变化时会触发currentModuleChanged信号, page与子项相关时需要处理currentModuleChanged...
void triggered()
trigger触发该信号,框架收到信号会切换到该ModuleObject页
virtual void deactive()
当离开模块时,deactive会被调用,如无需通知则可不实现
void setCurrentModule(ModuleObject *child)
setCurrentModule 设置当前active的子项
void childrenSizeChanged(const int size)
childrens() 改变后必须发送此信号
void insertedChild(ModuleObject *const module)
插入child后触发
static unsigned GetCurrentVersion()
Returns current ModuleObject version
bool getFlagState(uint32_t flag) const
获取状态标志
virtual QWidget * activePage(bool autoActive=true)
activePage 激活并返回page
static bool IsVisible(dccv23::ModuleObject *const module)
IsVisible 返回module是否显示,判断了配置项和程序设置项
ModuleInitContext 作为初始化传入的结构体,其中name和displayName 必须有数值 这个结构体保存了所有初始化的信息
Definition moduleobject.h:54