6#include <ibase/ICommandsProvider.h>
7#include <iqtgui/IVisualStatusProvider.h>
8#include <ibase/TRuntimeStatusHanderCompWrap.h>
9#include <iqtgui/CGuiComponentBase.h>
10#include <iqtgui/CHierarchicalCommand.h>
11#include <ilog/TLoggerCompWrap.h>
12#include <imod/CMultiModelDispatcherBase.h>
15#include <imtgui/IWidgetProvider.h>
22class CMenuBasedCommandsProviderComp:
24 public ibase::TRuntimeStatusHanderCompWrap<ilog::CLoggerComponentBase>,
25 virtual public ibase::ICommandsProvider
29 typedef ibase::TRuntimeStatusHanderCompWrap<ilog::CLoggerComponentBase> BaseClass;
31 I_BEGIN_COMPONENT(CMenuBasedCommandsProviderComp);
32 I_REGISTER_INTERFACE(ibase::ICommandsProvider);
33 I_ASSIGN(m_menuGuiCompPtr,
"MenuGuiObject",
"The gui object, provides menu",
true,
"MenuGuiObject");
34 I_ASSIGN(m_menuAnchorProviderCompPtr,
"MenuAnchorProvider",
"The widget provider for positioning the GUI component",
true,
"MenuAnchorProvider");
35 I_ASSIGN_TO(m_menuCommandVisualStatusProviderCompPtr, m_menuGuiCompPtr,
true);
36 I_ASSIGN(m_commandIdAttrPtr,
"CommandId",
"Menu activation command ID",
true,
"")
39 CMenuBasedCommandsProviderComp();
42 virtual const ibase::IHierarchicalCommand* GetCommands() const override;
45 virtual
void OnSystemStarted() override;
46 virtual
void OnSystemShutdown() override;
48 void UpdateMenuCommandVisualStatus();
51 void OnCommandActivated(
bool checked = false);
55 class MenuCommandVisualStatusObserver: public imod::CMultiModelDispatcherBase
58 explicit MenuCommandVisualStatusObserver(CMenuBasedCommandsProviderComp& parent);
61 virtual void OnModelChanged(
int modelId,
const istd::IChangeable::ChangeSet& changeSet)
override;
64 CMenuBasedCommandsProviderComp& m_parent;
68 I_REF(iqtgui::IGuiObject, m_menuGuiCompPtr);
69 I_REF(imtgui::IWidgetProvider, m_menuAnchorProviderCompPtr);
70 I_REF(iqtgui::IVisualStatusProvider, m_menuCommandVisualStatusProviderCompPtr);
71 I_ATTR(QByteArray, m_commandIdAttrPtr);
73 iqtgui::CHierarchicalCommand m_rootMenuCommand;
74 iqtgui::CHierarchicalCommand m_mainMenuCommand;
75 iqtgui::CHierarchicalCommand* m_menuCommand;
76 QWidget* m_anchorButtonPtr;
77 QWidget* m_topFramePtr;
78 QWidget* m_mainWidgetPtr;
79 MenuCommandVisualStatusObserver m_menuCommandVisualStatusObserver;