Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
GroupMenuModel_impl.hpp
Go to the documentation of this file.
1#ifndef IV_SRC_MODEL_DIAMAR_GROUPMENUMODEL_IMPL_HPP_
2#define IV_SRC_MODEL_DIAMAR_GROUPMENUMODEL_IMPL_HPP_
3
5#include "diamar/Mimic.hpp"
7
8namespace iv::model
9{
10
11template<>
13{
14 auto nodeMimicGroups = node.appendChild(Mimic::Sections::mimicGroups);
15
16 std::set<iv::model::ItemModel<std::weak_ptr<iv::diamar::Mimic>>> orderedItems;
17 for (const auto &item: this->items | std::views::values)
18 {
19 orderedItems.insert(item);
20 }
21
22 for (const auto &groupMimics: orderedItems)
23 {
24 switch (groupMimics.type)
25 {
27 {
28 auto nodeMimicGroup = nodeMimicGroups.appendChild(Mimic::Sections::group);
29 nodeMimicGroup.addAttribute(Mimic::Keys::groupName, groupMimics.label);
30 nodeMimicGroup.addAttribute(Mimic::Keys::groupOrder, groupMimics.order);
31
32 std::set<iv::model::ItemModel<std::weak_ptr<iv::diamar::Mimic>>> orderedSubItems;
33 for (const auto &item: groupMimics.subOptions | std::views::values)
34 {
35 orderedSubItems.insert(item);
36 }
37
38 for (const auto &mimicItem: orderedSubItems)
39 {
40 auto nodeMimic = nodeMimicGroup.appendChild(Mimic::Sections::mimic);
41 nodeMimic.addAttribute(Mimic::Keys::mimicId, mimicItem.label);
42 nodeMimic.addAttribute(Mimic::Keys::mimicOrder, mimicItem.order);
43 }
44 }
45 break;
46
48 {
49 auto nodeMimic = nodeMimicGroups.appendChild(Mimic::Sections::mimic);
50 nodeMimic.addAttribute(Mimic::Keys::mimicId, groupMimics.label);
51 nodeMimic.addAttribute(Mimic::Keys::mimicOrder, groupMimics.order);
52 }
53 break;
54 }
55 }
56}
57
58template<>
60{
61 const auto controller = iv::appdiamar::Application::get()->getApplicationController().lock();
62 auto nodeMimicGroups = node.getChild(Mimic::Sections::mimicGroups);
63
64 items.clear();
65 for (const iv::file::xml::node nodeMimicGroup: nodeMimicGroups)
66 {
67 if (nodeMimicGroup.name() == Mimic::Sections::group)
68 {
69 auto groupId = nodeMimicGroup.getAttribute(Mimic::Keys::groupName, Mimic::DefaultValues::string);
70 auto groupOrder = nodeMimicGroup.getAttribute(Mimic::Keys::groupOrder, Mimic::DefaultValues::order);
71
72 addEmptyDropdownItem(groupId, groupId, groupOrder);
73
74 for (const iv::file::xml::node nodeMimic: nodeMimicGroup)
75 {
76 auto mimicId = nodeMimic.getAttribute(Mimic::Keys::mimicId, Mimic::DefaultValues::string);
77 auto mimicOrder = nodeMimic.getAttribute(Mimic::Keys::mimicOrder, Mimic::DefaultValues::order);
78
79 if (const auto mimic = controller->mimics()->getMimic(mimicId).lock())
80 {
81 addActionToDropdownItem(groupId, mimicId, mimicId, mimic, mimicOrder);
82 }
83 }
84 }
85 else
86 {
87 auto mimicId = nodeMimicGroup.getAttribute(Mimic::Keys::mimicId, Mimic::DefaultValues::string);
88 auto mimicOrder = nodeMimicGroup.getAttribute(Mimic::Keys::mimicOrder, Mimic::DefaultValues::order);
89
90 if (const auto mimic = controller->mimics()->getMimic(mimicId).lock())
91 {
92 addActionItem(mimicId, mimicId, mimic, mimicOrder);
93 }
94 }
95 }
96}
97
98}// namespace iv::model
99
100#endif//IV_SRC_MODEL_DIAMAR_GROUPMENUMODEL_IMPL_HPP_
static std::unique_ptr< Application > & get()
Definition Application.cpp:20
Definition xmlFile.hpp:15
iv::file::xml::node getChild(std::string_view name) const
Definition xmlFile.cpp:43
iv::file::xml::node appendChild(std::string_view name)
Definition xmlFile.cpp:53
Definition GroupMenuModel.hpp:121
Definition DiamarModel.cpp:14
static constexpr std::string string
Definition GroupMenuModel.hpp:350
static constexpr uint8_t order
Definition GroupMenuModel.hpp:349
static constexpr std::string_view groupName
Definition GroupMenuModel.hpp:336
static constexpr std::string_view mimicId
Definition GroupMenuModel.hpp:338
static constexpr std::string_view groupOrder
Definition GroupMenuModel.hpp:337
static constexpr std::string_view mimicOrder
Definition GroupMenuModel.hpp:339
static constexpr std::string_view mimic
Definition GroupMenuModel.hpp:345
static constexpr std::string_view mimicGroups
Definition GroupMenuModel.hpp:343
static constexpr std::string_view group
Definition GroupMenuModel.hpp:344