Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
HeaderNavigableOptions.hpp
Go to the documentation of this file.
1#ifndef IV_SRC_UI_GUI_HEADERNAVIGABLEOPTIONS_HPP_
2#define IV_SRC_UI_GUI_HEADERNAVIGABLEOPTIONS_HPP_
3
5
6#include <functional>
7#include <map>
8#include <memory>
9#include <optional>
10#include <string>
11#include <vector>
12
13namespace iv::gui
14{
15
17{
18 std::optional<std::string> text;
19 std::optional<std::string> icon;
20
21 std::function<void()> action;
22
24 IWidget *widget {nullptr};
25};
26
28{
29 typedef std::string OptionId;
30
31public:
33
34 void addTextOption(OptionId id, std::string_view text, const std::function<void()> &action);
35 void addIconOption(OptionId id, std::string_view icon, const std::function<void()> &action);
36 void addOption(OptionId id, std::string_view text, std::string_view icon, const std::function<void()> &action);
37
38 [[nodiscard]] const std::vector<std::shared_ptr<HeaderNavigableOption>> &getOptions() const;
39 [[nodiscard]] std::weak_ptr<HeaderNavigableOption> getOption(const OptionId &id) const;
40
41 void makeWidgets(CDialog *dialogFatherRef, AbstractComponentGUI *componentFatherRef);
42
43private:
44 std::vector<std::shared_ptr<HeaderNavigableOption>> m_orderedOptions;
45 std::map<OptionId, std::shared_ptr<HeaderNavigableOption>> m_options;
46};
47
48}// namespace iv::gui
49
50#endif//IV_SRC_UI_GUI_HEADERNAVIGABLEOPTIONS_HPP_
Definition AbstractComponentGUI.hpp:30
Definition CDialog.hpp:21
Definition IWidget.hpp:5
Definition HeaderNavigableOptions.hpp:28
void addOption(OptionId id, std::string_view text, std::string_view icon, const std::function< void()> &action)
Definition HeaderNavigableOptions.cpp:24
void addTextOption(OptionId id, std::string_view text, const std::function< void()> &action)
Definition HeaderNavigableOptions.cpp:8
std::map< OptionId, std::shared_ptr< HeaderNavigableOption > > m_options
Definition HeaderNavigableOptions.hpp:45
std::vector< std::shared_ptr< HeaderNavigableOption > > m_orderedOptions
Definition HeaderNavigableOptions.hpp:44
const std::vector< std::shared_ptr< HeaderNavigableOption > > & getOptions() const
Definition HeaderNavigableOptions.cpp:32
void addIconOption(OptionId id, std::string_view icon, const std::function< void()> &action)
Definition HeaderNavigableOptions.cpp:16
std::string OptionId
Definition HeaderNavigableOptions.hpp:29
void makeWidgets(CDialog *dialogFatherRef, AbstractComponentGUI *componentFatherRef)
Definition HeaderNavigableOptions.cpp:47
std::weak_ptr< HeaderNavigableOption > getOption(const OptionId &id) const
Definition HeaderNavigableOptions.cpp:37
Definition enums.hpp:5
Definition HeaderNavigableOptions.hpp:17
std::optional< std::string > text
Definition HeaderNavigableOptions.hpp:18
std::function< void()> action
Definition HeaderNavigableOptions.hpp:21
AbstractComponentGUI * component
Definition HeaderNavigableOptions.hpp:23
IWidget * widget
Definition HeaderNavigableOptions.hpp:24
std::optional< std::string > icon
Definition HeaderNavigableOptions.hpp:19