Manage Menu Options in MVP 19/206719/2
authorOskar Chodowicz <o.chodowicz@samsung.com>
Thu, 23 May 2019 14:45:05 +0000 (16:45 +0200)
committerOskar Chodowicz <o.chodowicz@samsung.com>
Thu, 30 May 2019 07:01:51 +0000 (09:01 +0200)
Change-Id: I85d3ab3baa7f102f87a5cae08329be7602add912

src/model/ManageMenuOptionsPageModel.cpp [new file with mode: 0644]
src/model/ManageMenuOptionsPageModel.hpp [new file with mode: 0644]
src/presenter/ManageMenuOptionsPagePresenter.cpp [new file with mode: 0644]
src/presenter/ManageMenuOptionsPagePresenter.hpp [new file with mode: 0644]
src/presenter/UniversalSwitchSettingsPagePresenter.cpp

diff --git a/src/model/ManageMenuOptionsPageModel.cpp b/src/model/ManageMenuOptionsPageModel.cpp
new file mode 100644 (file)
index 0000000..aba783e
--- /dev/null
@@ -0,0 +1,42 @@
+#include "ManageMenuOptionsPageModel.hpp"
+
+#define VCONF_MEMORY_TYPE "db/"
+#define VCONF_PROJECT_NAME "setting/accessibility/universal-switch/"
+#define VCONF_PROJECT_PREFIX VCONF_MEMORY_TYPE VCONF_PROJECT_NAME
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_ACTIONS VCONF_PROJECT_PREFIX "SHOW_ACTIONS_MENU_ITEM"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_SETTINGS VCONF_PROJECT_PREFIX "SHOW_SETTINGS_MENU_ITEM"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_HOMESCREEN VCONF_PROJECT_PREFIX "SHOW_HOME_SCREEN_MENU_ITEM"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_KEYS VCONF_PROJECT_PREFIX "SHOW_BUTTONS_AND_KEYS_MENU_ITEM"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_CONTEXTUAL_MENU VCONF_PROJECT_PREFIX "SHOW_CONTEXTUAL_MENU"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_GESTURES VCONF_PROJECT_PREFIX "SHOW_GESTURES_MENU_ITEM"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_RECENT_APPS VCONF_PROJECT_PREFIX "SHOW_RECENT_APPS_MENU_ITEM"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_BACK VCONF_PROJECT_PREFIX "SHOW_BACK_MENU_ITEM"
+
+ManageMenuOptionsPageModel::ManageMenuOptionsPageModel()
+{
+       std::vector<std::string> vconfKeys{
+               {VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_ACTIONS},
+               {VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_SETTINGS},
+               {VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_HOMESCREEN},
+               {VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_KEYS},
+               {VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_CONTEXTUAL_MENU},
+               {VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_GESTURES},
+               {VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_RECENT_APPS},
+               {VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_BACK}};
+       manageMenuOptionStates_.resize(ManageMenuOptionsCount);
+       vconfHandles_.resize(ManageMenuOptionsCount);
+
+       for (auto i = 0u; i < ManageMenuOptionsCount; ++i) {
+               auto key = vconfKeys[i];
+               vconfHandles_[i] = Singleton<VConfInterface>::instance().registerAndGet<bool>(
+                       key,
+                       false,
+                       [this, i](auto value) {
+                               this->manageMenuOptionStates_[i] = value;
+                       });
+
+               manageMenuOptionStates_[i].attach([this, key](auto newValue) {
+                       Singleton<VConfInterface>::instance().set(key, newValue);
+               });
+       }
+}
\ No newline at end of file
diff --git a/src/model/ManageMenuOptionsPageModel.hpp b/src/model/ManageMenuOptionsPageModel.hpp
new file mode 100644 (file)
index 0000000..2f0402f
--- /dev/null
@@ -0,0 +1,18 @@
+#ifndef MANAGE_MENU_OPTIONS_PAGE_MODEL_HPP
+#define MANAGE_MENU_OPTIONS_PAGE_MODEL_HPP
+
+#include "ObservableProperty.hpp"
+#include "VConf.hpp"
+
+class ManageMenuOptionsPageModel
+{
+       public:
+       static const int ManageMenuOptionsCount = 8;
+       ManageMenuOptionsPageModel();
+       std::vector<ObservableProperty<bool>> manageMenuOptionStates_;
+
+       private:
+       std::vector<VConfInterface::CallbackHandle> vconfHandles_;
+};
+
+#endif
\ No newline at end of file
diff --git a/src/presenter/ManageMenuOptionsPagePresenter.cpp b/src/presenter/ManageMenuOptionsPagePresenter.cpp
new file mode 100644 (file)
index 0000000..6c13fce
--- /dev/null
@@ -0,0 +1,35 @@
+#include "ManageMenuOptionsPagePresenter.hpp"
+
+ManageMenuOptionsPagePresenter::ManageMenuOptionsPagePresenter()
+{
+       std::vector<std::pair<std::string, std::string>> titleAndDescription =
+               {
+                       {"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_GROUP_MANAGE_GESTURES", ""},
+                       {"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_GROUP_MANAGE_ACTIONS", ""},
+                       {"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_GROUP_MANAGE_SETTINGS", ""},
+                       {"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_GROUP_MANAGE_RECENT_APPS", ""},
+                       {"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_GROUP_MANAGE_HOME_SCREEN", ""},
+                       {"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_GROUP_MANAGE_BACK", ""},
+                       {"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_GROUP_MANAGE_BUTTONS_AND_KEYS", ""},
+                       {"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_GROUP_MANAGE_CONTEXTUAL_MENU", "IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_GROUP_MANAGE_CONTEXTUAL_MENU_DESC"}};
+
+       setTitle("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_GROUP_MANAGE");
+       groups_.emplace_back("");
+
+       for (auto i = 0u; i < ManageMenuOptionsPageModel::ManageMenuOptionsCount; ++i) {
+               groups_.back().items_.push_back(std::make_unique<ListItem>(
+                       titleAndDescription[i].first,
+                       titleAndDescription[i].second,
+                       [this, i](auto item) {
+                               model_.manageMenuOptionStates_[i] = item->widgetState_.value();
+                       },
+                       ListItem::WidgetType::toggle,
+                       std::function<void(ListItem * item)>{},
+                       std::function<void(ListItem * item)>{},
+                       model_.manageMenuOptionStates_[i].value()));
+               auto item = groups_.back().items_.back().get();
+               model_.manageMenuOptionStates_[i].attach([item](auto state) {
+                       item->widgetState_ = state;
+               });
+       }
+}
\ No newline at end of file
diff --git a/src/presenter/ManageMenuOptionsPagePresenter.hpp b/src/presenter/ManageMenuOptionsPagePresenter.hpp
new file mode 100644 (file)
index 0000000..ce57474
--- /dev/null
@@ -0,0 +1,18 @@
+#ifndef MANAGE_MENU_OPTIONS_PAGE_PRESENTER_HPP
+#define MANAGE_MENU_OPTIONS_PAGE_PRESENTER_HPP
+
+#include "ListPresenter.hpp"
+#include "ManageMenuOptionsPageModel.hpp"
+
+#include <vector>
+
+class ManageMenuOptionsPagePresenter : public ListPresenter
+{
+       public:
+       ManageMenuOptionsPagePresenter();
+
+       private:
+       ManageMenuOptionsPageModel model_;
+};
+
+#endif
\ No newline at end of file
index e3ab566127d45d89f9ef81e4efc262a55aef9eb7..afa01170cfa3462a33631f5268a1034f51af2600 100644 (file)
@@ -1,5 +1,7 @@
 #include "UniversalSwitchSettingsPagePresenter.hpp"
 
+#include "ManageMenuOptionsPagePresenter.hpp"
+
 UniversalSwitchSettingsPagePresenter::UniversalSwitchSettingsPagePresenter()
 {
        setTitle("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS");
@@ -297,7 +299,7 @@ void UniversalSwitchSettingsPagePresenter::createFeedbackGroup()
                std::string{"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_GROUP_MANAGE"},
                std::string{"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_GROUP_MANAGE_SUB"},
                [this](auto item) {
-                       DEBUG("manage groups");
+                       Singleton<AppContext>::instance().push(std::make_unique<ManageMenuOptionsPagePresenter>());
                }));
 }