Remove switch popup in cpp style 82/198582/5
authorOskar Chodowicz <o.chodowicz@samsung.com>
Fri, 25 Jan 2019 13:45:51 +0000 (14:45 +0100)
committerOskar Chodowicz <o.chodowicz@samsung.com>
Tue, 12 Feb 2019 11:17:10 +0000 (12:17 +0100)
This commit refactor "remove switch" popup
with UI components to cpp style

Change-Id: Iae4c84513b0f235c24f89bd48d8b44449a1e34ad

15 files changed:
src/AccessoriesSwitchesPage.cpp
src/AccessoriesSwitchesPage.hpp
src/AddSwitchPage.cpp
src/AddSwitchPage.hpp
src/CameraSwitchesPage.cpp
src/CameraSwitchesPage.hpp
src/RemoveSwitchPage.cpp
src/RemoveSwitchPage.hpp
src/ScreenSwitchPage.cpp
src/ScreenSwitchPage.hpp
src/SettingPopup.cpp
src/SettingPopup.hpp
src/UniversalSwitchConfiguration.hpp
src/UpdateSwitchPage.cpp
src/UpdateSwitchPage.hpp

index c52398d..a4cad22 100644 (file)
@@ -47,7 +47,7 @@ AccessoriesSwitchesPage::AccessoriesSwitchesPage(SettingAccessibility *ad)
        setting_accessibility_universal_switch_dbus_config_captureSwitch(&context_->config, ACCESSIBILITY_UNIVERSAL_SWITCH_ACCESSORIES_SWITCH_PROVIDER, -1, captureSwitchCb, this);
 }
 
-void AccessoriesSwitchesPage::attachActionCallback(UniversalSwitchUpdateCb cb, void *cbData)
+void AccessoriesSwitchesPage::attachActionCallback(UniversalSwitchCb cb, void *cbData)
 {
        accessories_switch_added_cb = cb;
        accessories_switch_added_cb_data = cbData;
index 3d93ff7..0419d91 100644 (file)
@@ -35,7 +35,7 @@ class AccessoriesSwitchesPage
 {
 public:
        AccessoriesSwitchesPage(SettingAccessibility *ad);
-       void attachActionCallback(UniversalSwitchUpdateCb cb, void *cbData);
+       void attachActionCallback(UniversalSwitchCb cb, void *cbData);
 
 private:
        static Evas_Object *createEntry(Evas_Object *parent, const char *part_name);
@@ -50,7 +50,7 @@ private:
        static void backCb(void *data, Evas_Object *obj, void *event_info);
 
        SettingAccessibility *context_ = nullptr;
-       UniversalSwitchUpdateCb accessories_switch_added_cb = nullptr;
+       UniversalSwitchCb accessories_switch_added_cb = nullptr;
        void *accessories_switch_added_cb_data = nullptr;
        std::string switchName_; //TODO remove when lambda expression would be added
        Evas_Object *entry;
index 3487a74..5befd27 100644 (file)
@@ -55,7 +55,7 @@ AddSwitchPage::AddSwitchPage(SettingAccessibility *ad)
        elm_layout_content_set(context_->md.getNaviframe()->getObject(), "prev_btn", back_btn);
 }
 
-void AddSwitchPage::attachCallbackOnSwitchAttach(UniversalSwitchUpdateCb cb, void *cbData)
+void AddSwitchPage::attachCallbackOnSwitchAttach(UniversalSwitchCb cb, void *cbData)
 {
        switch_added_cb = cb;
        switch_added_cb_data = cbData;
index 277e791..22f7e8a 100644 (file)
@@ -41,7 +41,7 @@ class AddSwitchPage
 {
 public:
        AddSwitchPage(SettingAccessibility *ad);
-       void attachCallbackOnSwitchAttach(UniversalSwitchUpdateCb cb, void *cbData); //TODO: rename
+       void attachCallbackOnSwitchAttach(UniversalSwitchCb 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
 
 
@@ -58,7 +58,7 @@ private:
        std::unique_ptr<AccessoriesSwitchesPage> accessoriesSwitchesPage_;
 
        //TODO: These callbacks are only cached here and should be removed later
-       UniversalSwitchUpdateCb switch_added_cb = nullptr;
+       UniversalSwitchCb switch_added_cb = nullptr;
        void *switch_added_cb_data = nullptr;
 };
 
index ee6bf11..974bc9d 100644 (file)
@@ -66,7 +66,7 @@ CameraSwitchesPage::CameraSwitchesPage(SettingAccessibility *ad)
        elm_layout_content_set(context_->md.getNaviframe()->getObject(), "prev_btn", back_btn);
 }
 
-void CameraSwitchesPage::attachActionCallback(UniversalSwitchUpdateCb cb, void *cbData)
+void CameraSwitchesPage::attachActionCallback(UniversalSwitchCb cb, void *cbData)
 {
        camera_switch_added_cb = cb;
        camera_switch_added_cb_data = cbData;
index 152bdfe..ca39c39 100644 (file)
@@ -34,7 +34,7 @@ class CameraSwitchesPage
 {
 public:
        CameraSwitchesPage(SettingAccessibility *ad);
-       void attachActionCallback(UniversalSwitchUpdateCb cb, void *cbData);
+       void attachActionCallback(UniversalSwitchCb cb, void *cbData);
 
 private:
        static void addSwitchCb(void *data, Evas_Object *obj, void *event_info);
@@ -43,7 +43,7 @@ private:
 
        SettingAccessibility *context_ = nullptr;
        GenGroupItemData *universal_switch_camera_comment = nullptr;
-       UniversalSwitchUpdateCb camera_switch_added_cb = nullptr;
+       UniversalSwitchCb camera_switch_added_cb = nullptr;
        void *camera_switch_added_cb_data = nullptr;
        UniversalSwitchInfoType *chosenSwitch_ = nullptr;
        std::unique_ptr<ActionPage> actionPage_;
index 50957fb..4077c46 100644 (file)
@@ -18,6 +18,8 @@
 
 #include "setting-accessibility.h"
 #include "WidgetFactory.hpp"
+#include "Popup.hpp"
+#include "Button.hpp"
 
 #include <app.h>
 #include <efl_extension.h>
@@ -46,7 +48,7 @@ RemoveSwitchPage::RemoveSwitchPage(SettingAccessibility *ad)
        }
 }
 
-void RemoveSwitchPage::attachCallback(UniversalSwitchUpdateCb cb, void *cbData)
+void RemoveSwitchPage::attachCallback(UniversalSwitchCb cb, void *cbData)
 {
        switch_removed_cb = cb;
        switch_removed_cb_data = cbData;
@@ -99,82 +101,77 @@ void RemoveSwitchPage::useNaviframeTitleAsCounter(RemoveSwitchPage *self)
 
 void RemoveSwitchPage::createPopupForSwitchesRemoving()
 {
-       popup_ = Widget::make<Popup>(context_->md.getNaviframe());
+       auto popup = Widget::make<Popup>(context_->md.getNaviframe());
 
-       popup_->setOrientation(ELM_POPUP_ORIENT_CENTER);
-       popup_->setWeightHint(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       popup->setOrientation(ELM_POPUP_ORIENT_CENTER);
+       popup->setWeightHint(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
 
        int vconf_val;
        int vconf_ret = vconf_get_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_INTERACTION_SERVICE, &vconf_val);
        retm_if(vconf_ret != 0,
                        "Failed to get vconf bool value VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_INTERACTION_SERVICE. Error: %d", vconf_ret);
 
-       popup_->setPartText("title,text", TranslatedString{"IDS_ACCS_UNIVERSAL_SWITCH_DELETE_SWITCHES"});
+       popup->setPartText("title,text", TranslatedString{"IDS_ACCS_UNIVERSAL_SWITCH_DELETE_SWITCHES"});
 
 
        if (vconf_val && context_->switches_to_remove_counter == (int)elm_genlist_items_count(context_->set_value_layout.getGenlist())) {
-               popup_->setText(TranslatedString{"IDS_ACCS_UNIVERSAL_SWITCH_DELETE_ALL_SWITCHES_DESC"});
+               popup->setText("IDS_ACCS_UNIVERSAL_SWITCH_DELETE_ALL_SWITCHES_DESC");
        } else {
                auto s = std::to_string(context_->switches_to_remove_counter) + " " + TranslatedString{"IDS_ACCS_UNIVERSAL_SWITCH_DELETE_SWITCHES_DESC"} .str();
-               popup_->setText(s);
+               popup->setText(s);
        }
-       auto removeCb = [p = popup_, nf = context_->md.getNaviframe()]() {
+       auto removeCb = [p = popup, nf = context_->md.getNaviframe()]() {
                nf->removeChild(p);
        };
-       popup_->setEextEventCallback(EEXT_CALLBACK_BACK, removeCb);
-       popup_->setEvasSmartCallback("dismissed", removeCb);
-       popup_->setEvasSmartCallback("block,clicked", removeCb);
+       popup->setEextEventCallback(EEXT_CALLBACK_BACK, removeCb);
+       popup->setEvasSmartCallback("dismissed", removeCb);
+       popup->setEvasSmartCallback("block,clicked", removeCb);
 
-       auto btn = WidgetFactory::createButton(popup_->getObject(), "IDS_ST_BUTTON_CANCEL", "bottom", onCancelPopupButtonClicked, this);
 
-       elm_object_part_content_set(popup_->getObject(), "button1", btn);
+       auto cancelBtn = Widget::make<Button>(popup);
+       cancelBtn->setText("IDS_ST_BUTTON_CANCEL");
+       cancelBtn->setStyle("bottom");
+       cancelBtn->setEvasSmartCallback("clicked", removeCb);
+       popup->setPartContent("button1", cancelBtn);
 
+       auto deleteSwitchBtn = Widget::make<Button>(popup);
+       deleteSwitchBtn->setText("IDS_ACCS_DELETE");
+       deleteSwitchBtn->setStyle("bottom");
 
-       btn = WidgetFactory::createButton(popup_->getObject(), "IDS_ACCS_DELETE", "bottom", onRemoveSelectedSwitches, this);
+       auto removeSwitchCb = [removeCb, this]() {
 
-       elm_object_part_content_set(popup_->getObject(), "button2", btn);
-       popup_->show();
-}
+               Elm_Object_Item *item = elm_genlist_last_item_get(context_->set_value_layout.getGenlist());
+               while (item != NULL) {
+                       auto list_item = static_cast<GenGroupItemData *>(elm_object_item_data_get(item));
+                       item = elm_genlist_item_prev_get(item);
+                       if (list_item->chk_status)
+                               removeSwitch(list_item->chk_id);
+               }
 
-void RemoveSwitchPage::onRemoveSelectedSwitches(void *data, Evas_Object *obj, void *event_info)
-{
-       auto self = static_cast<RemoveSwitchPage *>(data);
-       bool disable_universal_switch = (self->context_->switches_to_remove_counter == (int)elm_genlist_items_count(self->context_->set_value_layout.getGenlist()));
+               removeCb();
+               context_->md.getNaviframe()->popBack();
 
-       Elm_Object_Item *item = elm_genlist_last_item_get(self->context_->set_value_layout.getGenlist());
-       while (item != NULL) {
-               auto list_item = static_cast<GenGroupItemData *>(elm_object_item_data_get(item));
-               item = elm_genlist_item_prev_get(item);
-               if (list_item->chk_status)
-                       removeSwitch(self, list_item->chk_id);
-       }
+               bool disable_universal_switch = (context_->switches_to_remove_counter == (int)elm_genlist_items_count(context_->set_value_layout.getGenlist()));
+               if (disable_universal_switch && vconf_set_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_INTERACTION_SERVICE, 0))
+                       LOGE("Failed to set vconf key %s.", VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_INTERACTION_SERVICE);
 
-       auto nf = self->context_->md.getNaviframe();
-       nf->removeChild(self->popup_);
-       elm_naviframe_item_pop(self->context_->md.getNaviframe()->getObject());
-
-       if (disable_universal_switch && vconf_set_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_INTERACTION_SERVICE, 0))
-               LOGE("Failed to set vconf key %s.", VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_INTERACTION_SERVICE);
-}
+       };
+       deleteSwitchBtn->setEvasSmartCallback("clicked", removeSwitchCb);
+       popup->setPartContent("button2", deleteSwitchBtn);
 
-void RemoveSwitchPage::onCancelPopupButtonClicked(void *data, Evas_Object *obj, void *event_info)
-{
-       auto self = static_cast<RemoveSwitchPage *>(data);
-       auto nf = self->context_->md.getNaviframe();
-       nf->removeChild(self->popup_);
+       popup->show();
 }
 
-void RemoveSwitchPage::removeSwitch(RemoveSwitchPage *self, size_t item_id)
+void RemoveSwitchPage::removeSwitch(size_t item_id)
 {
-       retm_if(self->switch_removed_cb == NULL, "Remove callback not set");
 
-       if (item_id >= self->context_->config.configuration_items.size()) {
+       if (item_id >= context_->config.configuration_items.size()) {
                SETTING_TRACE_END;
                return;
        }
 
-       auto config_item = self->context_->config.configuration_items[item_id];
+       auto config_item = context_->config.configuration_items[item_id];
        SETTING_TRACE_DEBUG("Removing switch, switch_id: %s", config_item->switch_id.c_str());
 
-       self->switch_removed_cb(self->switch_removed_cb_data, config_item->switch_id, config_item->activity_type, config_item->user_name);
+       switch_removed_cb(switch_removed_cb_data, config_item->switch_id, config_item->activity_type, config_item->user_name); //TODO try to do this without callback
 }
index 9c14749..b47b673 100644 (file)
@@ -38,7 +38,7 @@ class RemoveSwitchPage
 {
 public:
        RemoveSwitchPage(SettingAccessibility *ad);
-       void attachCallback(UniversalSwitchUpdateCb cb, void *cbData);
+       void attachCallback(UniversalSwitchCb cb, void *cbData);
        static void useNaviframeTitleAsCounter(RemoveSwitchPage *self);
 
 private:
@@ -46,17 +46,15 @@ private:
        static void onAllButtonsClicked(void *data, Evas_Object *obj, void *event_info);
        void createPopupForSwitchesRemoving();
        static void onRemoveSelectedSwitches(void *data, Evas_Object *obj, void *event_info);
-       static void onCancelPopupButtonClicked(void *data, Evas_Object *obj, void *event_info);
        static void onRemovePopup(void *data, Evas_Object *obj, void *event_info);
-       static void removeSwitch(RemoveSwitchPage *self, size_t item_id);
+       void removeSwitch(size_t item_id);
 
        SettingAccessibility *context_ = nullptr;
        std::unique_ptr<SetValuePage> setValuePage_;
-       UniversalSwitchUpdateCb switch_removed_cb;
+       UniversalSwitchCb switch_removed_cb;
        void *switch_removed_cb_data = nullptr;
        Evas_Object *remove_switches_popup_button = nullptr;
        Evas_Object *all_checkbox = nullptr;
-       Popup *popup_ = nullptr;
 };
 
 
index d0cf40a..ec6138d 100644 (file)
@@ -27,7 +27,7 @@ ScreenSwitchPage::ScreenSwitchPage(SettingAccessibility *ad)
        actionPage_->attachCallback(actionCb, this);
 }
 
-void ScreenSwitchPage::attachActionCallback(UniversalSwitchUpdateCb cb, void *cbData)
+void ScreenSwitchPage::attachActionCallback(UniversalSwitchCb cb, void *cbData)
 {
        switch_added_cb = cb;
        switch_added_cb_data = cbData;
index 9e9b0fa..08d5d75 100644 (file)
@@ -38,7 +38,7 @@ class ScreenSwitchPage
 {
 public:
        ScreenSwitchPage(SettingAccessibility *ad);
-       void attachActionCallback(UniversalSwitchUpdateCb cb, void *cbData);
+       void attachActionCallback(UniversalSwitchCb cb, void *cbData);
 
 private:
        static void actionCb(SettingAccessibility *ad, const std::string &action, void *user_data);
@@ -46,7 +46,7 @@ private:
        SettingAccessibility *context_ = nullptr;
        std::unique_ptr<ActionPage> actionPage_;
 
-       UniversalSwitchUpdateCb switch_added_cb = nullptr;
+       UniversalSwitchCb switch_added_cb = nullptr;
        void *switch_added_cb_data = nullptr;
 };
 
index cd5ecfc..8f2f9f0 100644 (file)
@@ -18,7 +18,7 @@
 
 #include "TranslatedString.hpp"
 #include "setting-common-draw-widget.h"
-#include "WidgetFactory.hpp"
+#include "Button.hpp"
 
 #include <efl_extension.h>
 #include <app.h>
@@ -32,18 +32,18 @@ SettingPopup::SettingPopup(void *data, Widget *parent,
 
        popup_->setAlignment(ELM_NOTIFY_ALIGN_FILL, 1.0);
        popup_->setWeightHint(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-
-       popup_->setText(TranslatedString{text});
-       popup_->setPartText("title,text", TranslatedString{title});
+       popup_->setText(text);
+       popup_->setPartText("title,text", title);
        popup_->setEextEventCallback(EEXT_CALLBACK_BACK, []() {});
 
        if (buttons.size() <= 3) {
-               std::vector<TranslatedString> buttons_parts = {"button1", "button2", "button3"};
+               std::vector<std::string> buttons_parts = {"button1", "button2", "button3"};
                for (auto i = 0u; i < buttons.size(); ++i) {
-                       Evas_Object *btn = WidgetFactory::createButton(popup_->getObject(), buttons[i], {}, response_cb, data);
-                       elm_object_style_set(btn, "popup");
-                       elm_object_part_content_set(popup_->getObject(), buttons_parts[i].c_str(), btn);
-                       evas_object_data_set(popup_->getObject(), buttons_parts[i].c_str(), TranslatedString{buttons[i]} .c_str());
+                       auto btn = Widget::make<Button>(popup_);
+                       btn->setText(buttons[i]);
+                       btn->setStyle("popup");
+                       evas_object_smart_callback_add(btn->getObject(), "clicked", response_cb, data); //TODO change to cpp callback
+                       popup_->setPartContent(buttons_parts[i], btn);
                }
        } else {
                SETTING_TRACE_ERROR("incorrect button number for popup");
index 775dc15..5eb88a0 100644 (file)
@@ -58,9 +58,7 @@ public:
 
 private:
 
-       static void ignoreBackKeyCb(void *data, Evas_Object *obj, void *event_info);
-
-       Popup *popup_;
+       Popup *popup_ = nullptr;
 };
 
 #endif
index a348d26..f1f78df 100644 (file)
@@ -31,7 +31,7 @@ enum class ScanDirection {
 };
 
 class SettingAccessibility;
-using UniversalSwitchUpdateCb = std::function<void(void *, const std::string &, const std::string &, const std::string &)>;
+using UniversalSwitchCb = std::function<void(void *, const std::string &, const std::string &, const std::string &)>;
 
 /**
  * Class containing cached parameteres required by Universal Switch
@@ -73,8 +73,6 @@ public:
        int feedback_voice_speech_volume = 0;
        bool manage_options_state[MANAGE_OPTIONS_COUNT] = {false};
 
-       UniversalSwitchUpdateCb switch_updated_cb;
-       void *switch_updated_cb_data = nullptr;
 
 private:
 };
index 67b2664..d47b1f2 100644 (file)
@@ -42,7 +42,7 @@ UpdateSwitchPage::UpdateSwitchPage(SettingAccessibility *ad, UniversalSwitchConf
        }
 }
 
-void UpdateSwitchPage::attachActionCallback(UniversalSwitchUpdateCb cb, void *cbData)
+void UpdateSwitchPage::attachActionCallback(UniversalSwitchCb cb, void *cbData)
 {
        switch_updated_cb = cb;
        switch_updated_cb_data = cbData;
index 6ed6c09..e0f56a1 100644 (file)
@@ -34,7 +34,7 @@ class UpdateSwitchPage
 {
 public:
        UpdateSwitchPage(SettingAccessibility *ad, UniversalSwitchConfigurationItem *config_item);
-       void attachActionCallback(UniversalSwitchUpdateCb cb, void *cbData);
+       void attachActionCallback(UniversalSwitchCb cb, void *cbData);
 
 private:
        static void onActionUpdate(SettingAccessibility *ad, const std::string &action, void *user_data);
@@ -46,7 +46,7 @@ private:
        static void updateSwitchChooseAction(SettingAccessibility *ad, const std::string &action, void *user_data);
 
        SettingAccessibility *context_ = nullptr;
-       UniversalSwitchUpdateCb switch_updated_cb = nullptr;
+       UniversalSwitchCb switch_updated_cb = nullptr;
        void *switch_updated_cb_data = nullptr;
        UniversalSwitchConfigurationItem config_item_to_update_;
        std::unique_ptr<ActionPage> actionPage_;