#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,
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)
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);
}
#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
*
{
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