Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
ApplicationGui.hpp
Go to the documentation of this file.
1#ifndef IV_SRC_APP_APPLICATIONGUI_HPP_
2#define IV_SRC_APP_APPLICATIONGUI_HPP_
3
9#include "ui/gui/CInfoBar.hpp"
10#include "ui/gui/CMenu.hpp"
14
15namespace iv::appdiamar
16{
17
19{
20public:
22
23 ApplicationGui() = delete;
24 explicit ApplicationGui(std::string_view name, std::string_view icon);
25
26 ApplicationGui(const ApplicationGui &other) = delete;
27 ApplicationGui(ApplicationGui &&other) = default;
28 ApplicationGui &operator=(const ApplicationGui &other) = delete;
30
31 [[nodiscard]] std::weak_ptr<iv::appdiamar::IApplicationController> getApplicationController() const override;
32
33 void addIndicator(std::string_view title, bool resizeDialog, std::unique_ptr<IIndicator> &&indicator) const;
34 void addOptionToSubMenu(CMenu *submenu, std::string_view nameOption, AbstractMenuOption **option);
35 void addOptionMenuWithImage(std::string_view nameOption, std::string_view nameImage, bool isToolbar,
36 AbstractMenuOption **option);
37 void addOptionWithImageToSubMenu(CMenu *submenu, std::string_view nameOption, std::string_view nameImage,
38 bool isToolbar, AbstractMenuOption **option);
39 void addSubMenu(std::string_view name, CMenu **submenu);
40 void addWorkspace(CWorkspace **workspace);
41 void endApplication();
42 bool canEndApplication();
43 void runDialogIndicator(double xPos, double yPos, unsigned char justify, CIndicator *indicator);
44 virtual bool start();
45 void update();
46
47 [[nodiscard]] bool closeAllDialogsState() const;
48
49 [[nodiscard]] std::string_view getName() const;
50 [[nodiscard]] std::string_view getTitle() const;
51 [[nodiscard]] CDialog *getDialogApplicationRef() const;
52 [[nodiscard]] CWorkspace *getCurrentWorkspaceRef() const;
53 [[nodiscard]] const std::shared_ptr<IComponentsGUI> &getFrameRef() const;
54 [[nodiscard]] const std::shared_ptr<CIndicators> &getIndicators() const;
55 [[nodiscard]] const std::shared_ptr<CMenu> &getMenu() const;
56 const std::unique_ptr<CInfoBar> &getInfoBar();
57 const std::optional<iv::gui::HeaderNavigableOptions> &getHeaderNavigableOptions() const;
58
61
62 // protected:
63 virtual bool starting(const std::shared_ptr<AbstractProgress> &progress, CDialog *dlgFather);
64 virtual void ending(const std::shared_ptr<AbstractProgress> &progress, CDialog *dlgFather);
65 void runGUI(const std::shared_ptr<IComponentsGUI> &frame, int32_t argc, char *argv[]);
66
67 void setModelApplication(iv::model::IModel **modelApplication);// TODO: Funcion magica -> Si lo borras, no indexas
68 void setIcon(std::string_view icon);
69 void setCSS(std::string_view css);
70
71 virtual bool canEnd(CDialog *dlgFather);
72 void updateWorkSpaces();
73 void updateAppTitle();
74
75protected:
76 std::string m_title;
77 std::string m_icon;
78 std::string m_css;
79
80 std::unique_ptr<CInfoBar> m_infoBar;
81 std::shared_ptr<iv::diamar::INotificationIndicator> m_notificationIndicator;
82 std::shared_ptr<iv::diamar::IClockNotification> m_clockNotification;
83 std::shared_ptr<CMenu> m_menu;
84 std::shared_ptr<CIndicators> m_indicators;
85 // Title to display next to the menu icon
86 std::optional<std::string> m_headerTitle;
87 // Set of possible headers to calculate fixed size for the title
88 std::optional<std::set<std::string>> m_possibleHeaderTitle;
89
90 std::optional<iv::gui::HeaderNavigableOptions> m_headerNavigableOptions;
91 std::optional<iv::gui::FooterNavigableOptions> m_navigableOptions;
92
93 std::unique_ptr<std::vector<CWorkspace *>> m_workspaces;
96
97 std::shared_ptr<IComponentsGUI> m_frameRef;
98
100};
101
102}// namespace iv::appdiamar
103
104#endif//IV_SRC_APP_APPLICATIONGUI_HPP_
Definition AbstractMenuOption.hpp:7
Definition CDialog.hpp:21
Definition CIndicator.hpp:10
Definition CMenu.hpp:12
Definition CWorkspace.hpp:31
Definition ApplicationGui.hpp:19
bool closeAllDialogsState() const
Definition ApplicationGui.cpp:226
std::shared_ptr< CMenu > m_menu
Definition ApplicationGui.hpp:83
void addWorkspace(CWorkspace **workspace)
Definition ApplicationGui.cpp:145
std::string m_icon
Definition ApplicationGui.hpp:77
static ApplicationGui * getApplicationGui()
Definition ApplicationGui.cpp:73
std::optional< iv::gui::HeaderNavigableOptions > m_headerNavigableOptions
Definition ApplicationGui.hpp:90
const std::shared_ptr< CIndicators > & getIndicators() const
Definition ApplicationGui.cpp:410
void runDialogIndicator(double xPos, double yPos, unsigned char justify, CIndicator *indicator)
Definition ApplicationGui.cpp:166
void runGUI(const std::shared_ptr< IComponentsGUI > &frame, int32_t argc, char *argv[])
Definition ApplicationGui.cpp:245
const std::unique_ptr< CInfoBar > & getInfoBar()
Definition ApplicationGui.cpp:372
std::optional< iv::gui::FooterNavigableOptions > m_navigableOptions
Definition ApplicationGui.hpp:91
CDialog * getDialogApplicationRef() const
Definition ApplicationGui.cpp:367
virtual bool start()
Definition ApplicationGui.cpp:176
std::unique_ptr< std::vector< CWorkspace * > > m_workspaces
Definition ApplicationGui.hpp:93
std::weak_ptr< iv::appdiamar::IApplicationController > getApplicationController() const override
Definition ApplicationGui.cpp:85
iv::ui::theme::ThemesManager m_themesManager
Definition ApplicationGui.hpp:99
ApplicationGui & operator=(const ApplicationGui &other)=delete
void updateWorkSpaces()
Definition ApplicationGui.cpp:392
void addSubMenu(std::string_view name, CMenu **submenu)
Definition ApplicationGui.cpp:140
virtual bool starting(const std::shared_ptr< AbstractProgress > &progress, CDialog *dlgFather)
Definition ApplicationGui.cpp:333
std::string m_title
Definition ApplicationGui.hpp:76
ApplicationGui & operator=(ApplicationGui &&other)=delete
std::shared_ptr< iv::diamar::INotificationIndicator > m_notificationIndicator
Definition ApplicationGui.hpp:81
void setCSS(std::string_view css)
Definition ApplicationGui.cpp:356
void addIndicator(std::string_view title, bool resizeDialog, std::unique_ptr< IIndicator > &&indicator) const
Definition ApplicationGui.cpp:90
std::optional< std::string > m_headerTitle
Definition ApplicationGui.hpp:86
const std::optional< iv::gui::HeaderNavigableOptions > & getHeaderNavigableOptions() const
Definition ApplicationGui.cpp:377
const std::shared_ptr< IComponentsGUI > & getFrameRef() const
Definition ApplicationGui.cpp:405
std::string_view getName() const
Definition ApplicationGui.cpp:231
std::shared_ptr< IComponentsGUI > m_frameRef
Definition ApplicationGui.hpp:97
iv::app::eExitMode & exitMode()
Definition ApplicationGui.cpp:387
ApplicationGui(const ApplicationGui &other)=delete
void endApplication()
Definition ApplicationGui.cpp:151
iv::app::eState & state()
Definition ApplicationGui.cpp:382
void setIcon(std::string_view icon)
Definition ApplicationGui.cpp:350
bool canEndApplication()
Definition ApplicationGui.cpp:161
void addOptionToSubMenu(CMenu *submenu, std::string_view nameOption, AbstractMenuOption **option)
Definition ApplicationGui.cpp:96
void addOptionMenuWithImage(std::string_view nameOption, std::string_view nameImage, bool isToolbar, AbstractMenuOption **option)
Definition ApplicationGui.cpp:110
virtual bool canEnd(CDialog *dlgFather)
Definition ApplicationGui.cpp:362
void updateAppTitle()
Definition ApplicationGui.cpp:420
virtual void ending(const std::shared_ptr< AbstractProgress > &progress, CDialog *dlgFather)
Definition ApplicationGui.cpp:241
std::unique_ptr< CInfoBar > m_infoBar
Definition ApplicationGui.hpp:80
std::shared_ptr< CIndicators > m_indicators
Definition ApplicationGui.hpp:84
const std::shared_ptr< CMenu > & getMenu() const
Definition ApplicationGui.cpp:415
void addOptionWithImageToSubMenu(CMenu *submenu, std::string_view nameOption, std::string_view nameImage, bool isToolbar, AbstractMenuOption **option)
Definition ApplicationGui.cpp:123
CDialog * m_dialogApplicationRef
Definition ApplicationGui.hpp:95
void update()
Definition ApplicationGui.cpp:213
ApplicationGui(ApplicationGui &&other)=default
std::string_view getTitle() const
Definition ApplicationGui.cpp:236
std::shared_ptr< iv::diamar::IClockNotification > m_clockNotification
Definition ApplicationGui.hpp:82
std::optional< std::set< std::string > > m_possibleHeaderTitle
Definition ApplicationGui.hpp:88
void setModelApplication(iv::model::IModel **modelApplication)
Definition ApplicationGui.cpp:339
CWorkspace * getCurrentWorkspaceRef() const
Definition ApplicationGui.cpp:400
std::string m_css
Definition ApplicationGui.hpp:78
CWorkspace * m_currentWorkspaceRef
Definition ApplicationGui.hpp:94
Definition Application.hpp:11
Definition IModel.hpp:12
Definition ThemesManager.hpp:19
eState
Definition enums.hpp:20
eExitMode
Definition enums.hpp:13
Definition Application.cpp:6