From 1b0d7b313c55ac7f0a9278b1a6645599a437577f Mon Sep 17 00:00:00 2001 From: Lukasz Wlazly Date: Fri, 14 Dec 2018 12:07:20 +0100 Subject: [PATCH] Extract AddSwitchPage data from context class Change-Id: Ib329ef681c8c426ae695d10bd1729f36ec6844d0 --- src/AddSwitchPage.cpp | 51 ++++++++++++++++++++++---------------------- src/AddSwitchPage.hpp | 18 +++++++++++++--- src/SettingAccessibility.hpp | 9 -------- src/SwitchesPage.cpp | 2 +- src/UniversalSwitchPage.cpp | 2 +- 5 files changed, 43 insertions(+), 39 deletions(-) diff --git a/src/AddSwitchPage.cpp b/src/AddSwitchPage.cpp index 838b6ec..b3c20bf 100644 --- a/src/AddSwitchPage.cpp +++ b/src/AddSwitchPage.cpp @@ -22,18 +22,19 @@ #include 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 &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(elm_object_item_data_get(item)); - auto ad = static_cast(settings_item->userdata); - retm_if(ad == NULL, "Input argument is NULL"); + auto self = static_cast(settings_item->userdata); + retm_if(self == NULL, "Input argument is NULL"); auto providerId = *static_cast(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(ad); - else if (strncmp(providerId, ACCESSIBILITY_UNIVERSAL_SWITCH_CAMERA_SWITCH_PROVIDER, sizeof(ACCESSIBILITY_UNIVERSAL_SWITCH_SCREEN_SWITCH_PROVIDER)) == 0) - ad->cameraSwitchesPage_ = std::make_unique(ad); - else if (strncmp(providerId, ACCESSIBILITY_UNIVERSAL_SWITCH_ACCESSORIES_SWITCH_PROVIDER, sizeof(ACCESSIBILITY_UNIVERSAL_SWITCH_ACCESSORIES_SWITCH_PROVIDER)) == 0) - ad->accessoriesSwitchesPage_ = std::make_unique(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(context_); + else if (providerId == ACCESSIBILITY_UNIVERSAL_SWITCH_CAMERA_SWITCH_PROVIDER) + cameraSwitchesPage_ = std::make_unique(context_); + else if (providerId == ACCESSIBILITY_UNIVERSAL_SWITCH_ACCESSORIES_SWITCH_PROVIDER) + accessoriesSwitchesPage_ = std::make_unique(context_); else SETTING_TRACE_ERROR("Unknown provider: %s", providerId); } diff --git a/src/AddSwitchPage.hpp b/src/AddSwitchPage.hpp index 6c6f5df..0cd4169 100644 --- a/src/AddSwitchPage.hpp +++ b/src/AddSwitchPage.hpp @@ -18,9 +18,16 @@ #define ADD_SWITCH_PAGE_HPP #include "SettingAccessibility.hpp" +#include "ScreenSwitchPage.hpp" +#include "CameraSwitchesPage.hpp" +#include "AccessoriesSwitchesPage.hpp" #include +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 &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 &configuration_items, const std::string &switch_id, Elm_Object_Item *item); //TODO: probably move to another class private: static void disableScreenSwitchProviderIfSwitchMapped(const std::vector &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_; + std::unique_ptr cameraSwitchesPage_; + std::unique_ptr accessoriesSwitchesPage_; }; #endif diff --git a/src/SettingAccessibility.hpp b/src/SettingAccessibility.hpp index 25f901d..9360b61 100644 --- a/src/SettingAccessibility.hpp +++ b/src/SettingAccessibility.hpp @@ -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 -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_; - std::unique_ptr cameraSwitchesPage_; - std::unique_ptr accessoriesSwitchesPage_; - std::unique_ptr screenSwitchPage_; std::unique_ptr addSwitchPage_; std::unique_ptr actionPage_; std::unique_ptr setValuePage_; diff --git a/src/SwitchesPage.cpp b/src/SwitchesPage.cpp index 5de73f4..2b28f3a 100644 --- a/src/SwitchesPage.cpp +++ b/src/SwitchesPage.cpp @@ -99,7 +99,7 @@ void SwitchesPage::addSwitchClickedCb(void *data, Evas_Object *obj, void *event_ auto self = static_cast(data); self->addSwitchPage_ = std::make_unique(self->context_); - AddSwitchPage::attachCallbackOnSwitchAttach(self->context_, addSwitchCb, self); + self->addSwitchPage_->attachCallbackOnSwitchAttach(addSwitchCb, self); } void SwitchesPage::switchClickCb(void *data, Evas_Object *obj, void *event_info) diff --git a/src/UniversalSwitchPage.cpp b/src/UniversalSwitchPage.cpp index 1add25c..92123b2 100644 --- a/src/UniversalSwitchPage.cpp +++ b/src/UniversalSwitchPage.cpp @@ -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(context_); + context_->addSwitchPage_->attachCallbackOnSwitchAttach(onNewSwitchAddition, context_); } void UniversalSwitchPage::displayState(bool state) -- 2.7.4