Extract AddSwitchPage data from context class 78/195578/5
authorLukasz Wlazly <l.wlazly@partner.samsung.com>
Fri, 14 Dec 2018 11:07:20 +0000 (12:07 +0100)
committerLukasz Wlazly <l.wlazly@partner.samsung.com>
Wed, 16 Jan 2019 10:29:54 +0000 (11:29 +0100)
Change-Id: Ib329ef681c8c426ae695d10bd1729f36ec6844d0

src/AddSwitchPage.cpp
src/AddSwitchPage.hpp
src/SettingAccessibility.hpp
src/SwitchesPage.cpp
src/UniversalSwitchPage.cpp

index 838b6ec..b3c20bf 100644 (file)
 #include <app.h>
 
 AddSwitchPage::AddSwitchPage(SettingAccessibility *ad)
+       : context_(ad)
 {
        retm_if(ad == NULL, "Input parameter is NULL");
-       Evas_Object *genlist = elm_genlist_add(ad->md.getNaviframe()->getObject());
+       Evas_Object *genlist = elm_genlist_add(context_->md.getNaviframe()->getObject());
        retm_if(genlist == NULL, "Cannot set genlist object as content of layout");
 
        elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
        elm_object_style_set(genlist, "dialogue");
        elm_genlist_clear(genlist);
 
-       for (auto &it : ad->config.switch_providers) {
+       for (auto &it : context_->config.switch_providers) {
                auto item = createGendialGroupItem(
-                                               genlist, &ad->itc_multiline_sub,
+                                               genlist, &context_->itc_multiline_sub,
                                                onSwitchAddition, &it->info->id,
                                                SwallowType::INVALID, 0,
                                                it->info->name,
@@ -41,24 +42,24 @@ AddSwitchPage::AddSwitchPage(SettingAccessibility *ad)
                                                NULL);
 
                if (item) {
-                       item->userdata = ad;
-                       disableScreenSwitchProviderIfSwitchMapped(ad->config.configuration_items, it, item->item);
+                       item->userdata = this;
+                       disableScreenSwitchProviderIfSwitchMapped(context_->config.configuration_items, it, item->item);
                }
        }
 
-       Elm_Object_Item *navi_it = elm_naviframe_item_push(ad->md.getNaviframe()->getObject(), _("IDS_ACCS_UNIVERSAL_SWITCH_ADD_SWITCH"), NULL, NULL, genlist, NULL);
-       elm_naviframe_item_pop_cb_set(navi_it, onNaviframePopCb, ad);
+       Elm_Object_Item *navi_it = elm_naviframe_item_push(context_->md.getNaviframe()->getObject(), _("IDS_ACCS_UNIVERSAL_SWITCH_ADD_SWITCH"), NULL, NULL, genlist, NULL);
+       elm_naviframe_item_pop_cb_set(navi_it, onNaviframePopCb, context_);
        elm_object_item_domain_text_translatable_set(navi_it, PACKAGE, EINA_TRUE);
 
-       Evas_Object *back_btn = WidgetFactory::createButton(ad->md.getNaviframe()->getObject(), {}, WidgetFactory::BACK_BUTTON_ARROW_STYLE, backCb, ad);
-       elm_layout_content_set(ad->md.getNaviframe()->getObject(), "prev_btn", back_btn);
+       Evas_Object *back_btn = WidgetFactory::createButton(context_->md.getNaviframe()->getObject(), {}, WidgetFactory::BACK_BUTTON_ARROW_STYLE, backCb, context_);
+       elm_layout_content_set(context_->md.getNaviframe()->getObject(), "prev_btn", back_btn);
 }
 
-void AddSwitchPage::attachCallbackOnSwitchAttach(SettingAccessibility *ad, UniversalSwitchUpdateCb cb, void *cbData)
+void AddSwitchPage::attachCallbackOnSwitchAttach(UniversalSwitchUpdateCb cb, void *cbData)
 {
-       ScreenSwitchPage::attachActionCallback(ad, cb, cbData);
-       AccessoriesSwitchesPage::attachActionCallback(ad, cb, cbData);
-       CameraSwitchesPage::attachActionCallback(ad, cb, cbData);
+       ScreenSwitchPage::attachActionCallback(context_, cb, cbData);
+       AccessoriesSwitchesPage::attachActionCallback(context_, cb, cbData);
+       CameraSwitchesPage::attachActionCallback(context_, cb, cbData);
 }
 
 void AddSwitchPage::disableScreenSwitchProviderIfSwitchMapped(const std::vector<UniversalSwitchConfigurationItem *> &configuration_items, UniversalSwitchSwitchProvider *switch_provider, Elm_Object_Item *item)
@@ -87,23 +88,23 @@ void AddSwitchPage::onSwitchAddition(void *data, Evas_Object *obj, void *event_i
        Elm_Object_Item *item = (Elm_Object_Item *)event_info;
        elm_genlist_item_selected_set(item, EINA_FALSE);
        auto settings_item = static_cast<GenGroupItemData *>(elm_object_item_data_get(item));
-       auto ad = static_cast<SettingAccessibility *>(settings_item->userdata);
-       retm_if(ad == NULL, "Input argument is NULL");
+       auto self = static_cast<AddSwitchPage *>(settings_item->userdata);
+       retm_if(self == NULL, "Input argument is NULL");
        auto providerId = *static_cast<std::string *>(data);
 
-       showSwitchesPage(ad, providerId.c_str());
+       self->showSwitchesPage(providerId);
 }
 
-void AddSwitchPage::showSwitchesPage(SettingAccessibility *ad, const char *providerId)
+void AddSwitchPage::showSwitchesPage(const std::string &providerId)
 {
-       SETTING_TRACE_DEBUG("Create add switch page for %s", providerId);
-
-       if (strncmp(providerId, ACCESSIBILITY_UNIVERSAL_SWITCH_SCREEN_SWITCH_PROVIDER, sizeof(ACCESSIBILITY_UNIVERSAL_SWITCH_SCREEN_SWITCH_PROVIDER)) == 0)
-               ad->screenSwitchPage_ = std::make_unique<ScreenSwitchPage>(ad);
-       else if (strncmp(providerId, ACCESSIBILITY_UNIVERSAL_SWITCH_CAMERA_SWITCH_PROVIDER, sizeof(ACCESSIBILITY_UNIVERSAL_SWITCH_SCREEN_SWITCH_PROVIDER)) == 0)
-               ad->cameraSwitchesPage_ = std::make_unique<CameraSwitchesPage>(ad);
-       else if (strncmp(providerId, ACCESSIBILITY_UNIVERSAL_SWITCH_ACCESSORIES_SWITCH_PROVIDER, sizeof(ACCESSIBILITY_UNIVERSAL_SWITCH_ACCESSORIES_SWITCH_PROVIDER)) == 0)
-               ad->accessoriesSwitchesPage_ = std::make_unique<AccessoriesSwitchesPage>(ad);
+       SETTING_TRACE_DEBUG("Create add switch page for %s", providerId.c_str());
+
+       if (providerId == ACCESSIBILITY_UNIVERSAL_SWITCH_SCREEN_SWITCH_PROVIDER)
+               screenSwitchPage_ = std::make_unique<ScreenSwitchPage>(context_);
+       else if (providerId == ACCESSIBILITY_UNIVERSAL_SWITCH_CAMERA_SWITCH_PROVIDER)
+               cameraSwitchesPage_ = std::make_unique<CameraSwitchesPage>(context_);
+       else if (providerId == ACCESSIBILITY_UNIVERSAL_SWITCH_ACCESSORIES_SWITCH_PROVIDER)
+               accessoriesSwitchesPage_ = std::make_unique<AccessoriesSwitchesPage>(context_);
        else
                SETTING_TRACE_ERROR("Unknown provider: %s", providerId);
 }
index 6c6f5df..0cd4169 100644 (file)
 #define ADD_SWITCH_PAGE_HPP
 
 #include "SettingAccessibility.hpp"
+#include "ScreenSwitchPage.hpp"
+#include "CameraSwitchesPage.hpp"
+#include "AccessoriesSwitchesPage.hpp"
 
 #include <Elementary.h>
 
+class ScreenSwitchPage;
+class CameraSwitchesPage;
+class AccessoriesSwitchesPage;
+
 /**
  * View that supports searching of switches by narrowing search space to particular SwitchProvider
  *
@@ -34,16 +41,21 @@ class AddSwitchPage
 {
 public:
        AddSwitchPage(SettingAccessibility *ad);
-       static void attachCallbackOnSwitchAttach(SettingAccessibility *ad, UniversalSwitchUpdateCb cb, void *cbData); //TODO: rename
-       static void disableAlreadyMappedSwitch(const std::vector<UniversalSwitchConfigurationItem *> &configuration_items, const std::string &switch_id, Elm_Object_Item *item);
+       void attachCallbackOnSwitchAttach(UniversalSwitchUpdateCb cb, void *cbData); //TODO: rename
+       static void disableAlreadyMappedSwitch(const std::vector<UniversalSwitchConfigurationItem *> &configuration_items, const std::string &switch_id, Elm_Object_Item *item); //TODO: probably move to another class
 
 
 private:
        static void disableScreenSwitchProviderIfSwitchMapped(const std::vector<UniversalSwitchConfigurationItem *> &configuration_items, UniversalSwitchSwitchProvider *switch_provider, Elm_Object_Item *item);
        static void onSwitchAddition(void *data, Evas_Object *obj, void *event_info);
-       static void showSwitchesPage(SettingAccessibility *ad, const char *providerId);
+       void showSwitchesPage(const std::string &providerId);
        static void backCb(void *data, Evas_Object *obj, void *event_info);
        static Eina_Bool onNaviframePopCb(void *data, Elm_Object_Item *it);
+
+       SettingAccessibility *context_ = nullptr;
+       std::unique_ptr<ScreenSwitchPage> screenSwitchPage_;
+       std::unique_ptr<CameraSwitchesPage> cameraSwitchesPage_;
+       std::unique_ptr<AccessoriesSwitchesPage> accessoriesSwitchesPage_;
 };
 
 #endif
index 25f901d..9360b61 100644 (file)
@@ -21,9 +21,6 @@
 #include "SetValueLayout.hpp"
 #include "UniversalSwitchConfiguration.hpp"
 #include "setting-accessibility-universal-switch-dbus.h"
-#include "CameraSwitchesPage.hpp"
-#include "AccessoriesSwitchesPage.hpp"
-#include "ScreenSwitchPage.hpp"
 #include "AddSwitchPage.hpp"
 #include "UpdateSwitchPage.hpp"
 #include "RemoveSwitchPage.hpp"
@@ -37,9 +34,6 @@
 
 #include <memory>
 
-class CameraSwitchesPage;
-class AccessoriesSwitchesPage;
-class ScreenSwitchPage;
 class AddSwitchPage;
 class UpdateSwitchPage;
 class RemoveSwitchPage;
@@ -79,9 +73,6 @@ struct SettingAccessibility {
        int switches_to_remove_counter;
 
        std::unique_ptr<MainPage> mainPage_;
-       std::unique_ptr<CameraSwitchesPage> cameraSwitchesPage_;
-       std::unique_ptr<AccessoriesSwitchesPage> accessoriesSwitchesPage_;
-       std::unique_ptr<ScreenSwitchPage> screenSwitchPage_;
        std::unique_ptr<AddSwitchPage> addSwitchPage_;
        std::unique_ptr<ActionPage> actionPage_;
        std::unique_ptr<SetValuePage> setValuePage_;
index 5de73f4..2b28f3a 100644 (file)
@@ -99,7 +99,7 @@ void SwitchesPage::addSwitchClickedCb(void *data, Evas_Object *obj, void *event_
        auto self = static_cast<SwitchesPage *>(data);
 
        self->addSwitchPage_ = std::make_unique<AddSwitchPage>(self->context_);
-       AddSwitchPage::attachCallbackOnSwitchAttach(self->context_, addSwitchCb, self);
+       self->addSwitchPage_->attachCallbackOnSwitchAttach(addSwitchCb, self);
 }
 
 void SwitchesPage::switchClickCb(void *data, Evas_Object *obj, void *event_info)
index 1add25c..92123b2 100644 (file)
@@ -93,8 +93,8 @@ void UniversalSwitchPage::createSettingsPage(void *data, Evas_Object *obj, void
 
 void UniversalSwitchPage::addNewSwitch()
 {
-       AddSwitchPage::attachCallbackOnSwitchAttach(context_, onNewSwitchAddition, context_);
        context_->addSwitchPage_ = std::make_unique<AddSwitchPage>(context_);
+       context_->addSwitchPage_->attachCallbackOnSwitchAttach(onNewSwitchAddition, context_);
 }
 
 void UniversalSwitchPage::displayState(bool state)