setting_accessibility_universal_switch_dbus_config_captureSwitch(&ad->config, ACCESSIBILITY_UNIVERSAL_SWITCH_ACCESSORIES_SWITCH_PROVIDER, -1, captureSwitchCb, ad);
}
-void AccessoriesSwitchesPage::attachActionCallback(SettingAccessibility *ad, UniversalSwitchUpdateCb cb)
+void AccessoriesSwitchesPage::attachActionCallback(SettingAccessibility *ad, UniversalSwitchUpdateCb cb, void *cbData)
{
retm_if(ad == NULL, "Input parameter is NULL");
ad->us_configuration.accessories_switch_added_cb = cb;
+ ad->us_configuration.accessories_switch_added_cb_data = cbData;
}
Evas_Object *AccessoriesSwitchesPage::createEntry(Evas_Object *parent, const char *part_name)
if (ad->us_configuration.accessories_switch_added_cb) {
char *switch_name = (char *)user_data;
- ad->us_configuration.accessories_switch_added_cb(ad, ad->us_configuration.switch_id.c_str(), action, switch_name);
+ ad->us_configuration.accessories_switch_added_cb(ad->us_configuration.accessories_switch_added_cb_data, ad->us_configuration.switch_id.c_str(), action, switch_name);
free(switch_name);
}
}
{
public:
AccessoriesSwitchesPage(SettingAccessibility *ad);
- static void attachActionCallback(SettingAccessibility *ad, UniversalSwitchUpdateCb cb);
+ static void attachActionCallback(SettingAccessibility *ad, UniversalSwitchUpdateCb cb, void *cbData);
private:
static Evas_Object *createEntry(Evas_Object *parent, const char *part_name);
elm_layout_content_set(ad->md.getNaviframe()->getObject(), "prev_btn", back_btn);
}
-void AddSwitchPage::attachCallbackOnSwitchAttach(SettingAccessibility *ad, UniversalSwitchUpdateCb cb)
+void AddSwitchPage::attachCallbackOnSwitchAttach(SettingAccessibility *ad, UniversalSwitchUpdateCb cb, void *cbData)
{
- ScreenSwitchPage::attachActionCallback(ad, cb);
- AccessoriesSwitchesPage::attachActionCallback(ad, cb);
- CameraSwitchesPage::attachActionCallback(ad, cb);
+ ScreenSwitchPage::attachActionCallback(ad, cb, cbData);
+ AccessoriesSwitchesPage::attachActionCallback(ad, cb, cbData);
+ CameraSwitchesPage::attachActionCallback(ad, cb, cbData);
}
void AddSwitchPage::disableScreenSwitchProviderIfSwitchMapped(const std::vector<UniversalSwitchConfigurationItem *> &configuration_items, UniversalSwitchSwitchProvider *switch_provider, Elm_Object_Item *item)
auto ad = static_cast<SettingAccessibility *>(data);
ad->us_configuration.screen_switch_added_cb = NULL;
+ ad->us_configuration.screen_switch_added_cb_data = nullptr;
ad->us_configuration.camera_switch_added_cb = NULL;
ad->us_configuration.accessories_switch_added_cb = NULL;
{
public:
AddSwitchPage(SettingAccessibility *ad);
- static void attachCallbackOnSwitchAttach(SettingAccessibility *ad, UniversalSwitchUpdateCb cb); //TODO: rename
+ 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);
elm_layout_content_set(ad->md.getNaviframe()->getObject(), "prev_btn", back_btn);
}
-void CameraSwitchesPage::attachActionCallback(SettingAccessibility *ad, UniversalSwitchUpdateCb cb)
+void CameraSwitchesPage::attachActionCallback(SettingAccessibility *ad, UniversalSwitchUpdateCb cb, void *cbData)
{
retm_if(ad == NULL, "Input parameter is NULL");
ad->us_configuration.camera_switch_added_cb = cb;
+ ad->us_configuration.camera_switch_added_cb_data = cbData;
}
void CameraSwitchesPage::addSwitchCb(void *data, Evas_Object *obj, void *event_info)
auto camera_switch = static_cast<UniversalSwitchInfoType *>(user_data);
if (ad->us_configuration.camera_switch_added_cb)
- ad->us_configuration.camera_switch_added_cb(ad, camera_switch->id, action, camera_switch->name);
+ ad->us_configuration.camera_switch_added_cb(ad->us_configuration.camera_switch_added_cb_data, camera_switch->id, action, camera_switch->name);
}
void CameraSwitchesPage::backCb(void *data, Evas_Object *obj, void *event_info)
{
public:
CameraSwitchesPage(SettingAccessibility *ad);
- static void attachActionCallback(SettingAccessibility *ad, UniversalSwitchUpdateCb cb);
+ static void attachActionCallback(SettingAccessibility *ad, UniversalSwitchUpdateCb cb, void *cbData);
private:
static void addSwitchCb(void *data, Evas_Object *obj, void *event_info);
}
}
-void RemoveSwitchPage::attachCallback(SettingAccessibility *ad, UniversalSwitchUpdateCb cb)
+void RemoveSwitchPage::attachCallback(SettingAccessibility *ad, UniversalSwitchUpdateCb cb, void *cbData)
{
retm_if(ad == NULL, "Input parameter is NULL");
ad->us_configuration.switch_removed_cb = cb;
+ ad->us_configuration.switch_removed_cb_data = cbData;
}
void RemoveSwitchPage::onDeleteButtonClicked(void *data, Evas_Object *obj, void *event_info)
auto config_item = ad->config.configuration_items[item_id];
SETTING_TRACE_DEBUG("Removing switch, switch_id: %s", config_item->switch_id.c_str());
- ad->us_configuration.switch_removed_cb(ad, config_item->switch_id, config_item->activity_type, config_item->user_name);
+ ad->us_configuration.switch_removed_cb(ad->us_configuration.switch_removed_cb_data, config_item->switch_id, config_item->activity_type, config_item->user_name);
}
{
public:
RemoveSwitchPage(SettingAccessibility *ad);
- static void attachCallback(SettingAccessibility *ad, UniversalSwitchUpdateCb cb);
+ static void attachCallback(SettingAccessibility *ad, UniversalSwitchUpdateCb cb, void *cbData);
static void useNaviframeTitleAsCounter(SettingAccessibility *ad);
private:
ActionPage::attachCallback(ad, actionCb, NULL);
}
-void ScreenSwitchPage::attachActionCallback(SettingAccessibility *ad, UniversalSwitchUpdateCb cb)
+void ScreenSwitchPage::attachActionCallback(SettingAccessibility *ad, UniversalSwitchUpdateCb cb, void *cbData)
{
retm_if(ad == NULL, "Input parameter is NULL");
ad->us_configuration.screen_switch_added_cb = cb;
+ ad->us_configuration.screen_switch_added_cb_data = cbData;
}
void ScreenSwitchPage::actionCb(SettingAccessibility *ad, const std::string &action, void *user_data)
auto switches = setting_accessibility_universal_switch_dbus_config_get_switches(&ad->config, ACCESSIBILITY_UNIVERSAL_SWITCH_SCREEN_SWITCH_PROVIDER);
retm_if(switches.size() < 1, "Screen switch not found");
auto screen_switch = switches[0];
- ad->us_configuration.screen_switch_added_cb(ad, screen_switch->id, action, ACCESSIBILITY_UNIVERSAL_SWITCH_SCREEN);
+ ad->us_configuration.screen_switch_added_cb(ad->us_configuration.screen_switch_added_cb_data, screen_switch->id, action, ACCESSIBILITY_UNIVERSAL_SWITCH_SCREEN);
}
}
{
public:
ScreenSwitchPage(SettingAccessibility *ad);
- static void attachActionCallback(SettingAccessibility *ad, UniversalSwitchUpdateCb cb);
+ static void attachActionCallback(SettingAccessibility *ad, UniversalSwitchUpdateCb cb, void *cbData);
private:
static void actionCb(SettingAccessibility *ad, const std::string &action, void *user_data);
Evas_Object *popup;
Evas_Object *entry;
Evas_Object *all_checkbox;
- Evas_Object *remove_switches_page_button;
Evas_Object *remove_switches_popup_button;
Evas_Object *update_accessories_action_genlist;
Elm_Object_Item *naviframe_it;
SetValueLayout set_value_layout;
- Elm_Genlist *universal_switch_switches;
- back_cb universal_switch_switches_back;
- void *universal_switch_switches_back_data = nullptr;
-
tts_h tts;
UniversalSwitchDbusConfig config;
std::unique_ptr<AccessoriesSwitchesPage> accessoriesSwitchesPage_;
std::unique_ptr<ScreenSwitchPage> screenSwitchPage_;
std::unique_ptr<AddSwitchPage> addSwitchPage_;
- std::unique_ptr<UpdateSwitchPage> updateSwitchPage_;
- std::unique_ptr<RemoveSwitchPage> removeSwitchPage_;
std::unique_ptr<ActionPage> actionPage_;
std::unique_ptr<SetValuePage> setValuePage_;
std::unique_ptr<SettingPopup> settingPopup_; //TODO: change this variable name when all popups would be unified
#include <app.h>
SwitchesPage::SwitchesPage(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");
- ad->md.naviframe_it = elm_naviframe_item_push(ad->md.getNaviframe()->getObject(), _("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_GROUP_SWITCHES"), NULL, NULL, genlist, NULL);
- elm_naviframe_item_pop_cb_set(ad->md.naviframe_it, naviframePopCb, ad);
- elm_object_item_domain_text_translatable_set(ad->md.naviframe_it, PACKAGE, EINA_TRUE);
+ context_->md.naviframe_it = elm_naviframe_item_push(context_->md.getNaviframe()->getObject(), _("IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_GROUP_SWITCHES"), NULL, NULL, genlist, NULL);
+ elm_naviframe_item_pop_cb_set(context_->md.naviframe_it, naviframePopCb, this);
+ elm_object_item_domain_text_translatable_set(context_->md.naviframe_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, ad);
+ elm_layout_content_set(context_->md.getNaviframe()->getObject(), "prev_btn", back_btn);
- ad->remove_switches_page_button = WidgetFactory::createButton(ad->md.getNaviframe()->getObject(), "IDS_ACCS_DELETE_CAPS", "naviframe/title_right", createRemovePageCb, ad);
- elm_layout_content_set(ad->md.getNaviframe()->getObject(), "title_right_btn", ad->remove_switches_page_button);
+ remove_switches_page_button = WidgetFactory::createButton(context_->md.getNaviframe()->getObject(), "IDS_ACCS_DELETE_CAPS", "naviframe/title_right", createRemovePageCb, this);
+ elm_layout_content_set(context_->md.getNaviframe()->getObject(), "title_right_btn", remove_switches_page_button);
elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
elm_object_style_set(genlist, "dialogue");
- updateSwitchesList(ad, genlist);
- ad->universal_switch_switches = genlist;
+ updateSwitchesList(genlist);
+ universal_switch_switches = genlist;
}
-void SwitchesPage::attachCallback(SettingAccessibility *ad, back_cb callback, void *data)
+void SwitchesPage::attachCallback(back_cb callback, void *data)
{
- retm_if(ad == NULL, "Input parameter is NULL");
-
- ad->universal_switch_switches_back = callback;
- ad->universal_switch_switches_back_data = data;
+ universal_switch_switches_back = callback;
+ universal_switch_switches_back_data = data;
}
-void SwitchesPage::updateSwitchesList(SettingAccessibility *ad, Evas_Object *genlist)
+void SwitchesPage::updateSwitchesList(Evas_Object *genlist)
{
- retm_if(ad == NULL, "Input argument is NULL");
retm_if(genlist == NULL, "Input argument is NULL");
elm_genlist_clear(genlist);
- createSwitchesGroup(ad, genlist);
- createAddButton(ad, genlist);
- elm_object_disabled_set(ad->remove_switches_page_button, ad->config.configuration_items.size() == 0);
+ createSwitchesGroup(genlist);
+ createAddButton(genlist);
+ elm_object_disabled_set(remove_switches_page_button, context_->config.configuration_items.size() == 0);
}
-void SwitchesPage::createAddButton(SettingAccessibility *ad, Evas_Object *genlist)
+void SwitchesPage::createAddButton(Evas_Object *genlist)
{
- retm_if(ad == NULL, "Input argument is NULL");
-
GenGroupItemData *item = createGendialGroupItem(genlist, &itc_1text_1icon_3,
- addSwitchClickedCb, ad,
+ addSwitchClickedCb, this,
SwallowType::ICON_IMAGE, 0,
"IDS_ACCS_UNIVERSAL_SWITCH_SETTINGS_GROUP_SWITCHES_ADD_SWITCH",
{},
if (item) {
item->l_swallow_path = ACCESSIBILITY_UNIVERSAL_SWITCH_PLUS_ICON;
- item->userdata = ad;
+ item->userdata = context_;
}
}
-void SwitchesPage::createSwitchesGroup(SettingAccessibility *ad, Evas_Object *genlist)
+void SwitchesPage::createSwitchesGroup(Evas_Object *genlist)
{
- retm_if(ad == NULL, "Input argument is NULL");
-
- for (auto &it : ad->config.configuration_items) {
- auto activity_name = setting_accessibility_universal_switch_dbus_config_get_activity_name(&ad->config, it->activity_type);
- addMappedSwitchMenuItem(ad, genlist, it->user_name, activity_name, switchClickCb, it);
+ for (auto &it : context_->config.configuration_items) {
+ auto activity_name = setting_accessibility_universal_switch_dbus_config_get_activity_name(&context_->config, it->activity_type);
+ addMappedSwitchMenuItem(genlist, it->user_name, activity_name, switchClickCb, it);
}
}
void SwitchesPage::createRemovePageCb(void *data, Evas_Object *obj, void *event_info)
{
retm_if(data == NULL, "Data argument is NULL");
- auto ad = static_cast<SettingAccessibility *>(data);
+ auto self = static_cast<SwitchesPage *>(data);
- ad->removeSwitchPage_ = std::make_unique<RemoveSwitchPage>(ad);
- RemoveSwitchPage::attachCallback(ad, switchRemovedCb);
+ self->removeSwitchPage_ = std::make_unique<RemoveSwitchPage>(self->context_);
+ RemoveSwitchPage::attachCallback(self->context_, switchRemovedCb, self);
}
void SwitchesPage::addSwitchClickedCb(void *data, Evas_Object *obj, void *event_info)
{
elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
retm_if(data == NULL, "Data argument is NULL");
- auto ad = static_cast<SettingAccessibility *>(data);
+ auto self = static_cast<SwitchesPage *>(data);
- AddSwitchPage::attachCallbackOnSwitchAttach(ad, addSwitchCb);
- ad->addSwitchPage_ = std::make_unique<AddSwitchPage>(ad);
+ self->addSwitchPage_ = std::make_unique<AddSwitchPage>(self->context_);
+ AddSwitchPage::attachCallbackOnSwitchAttach(self->context_, addSwitchCb, self);
}
void SwitchesPage::switchClickCb(void *data, Evas_Object *obj, void *event_info)
auto list_item = static_cast<GenGroupItemData *>(elm_object_item_data_get(item));
auto config_item = static_cast<UniversalSwitchConfigurationItem *>(list_item->userdata);
- auto ad = static_cast<SettingAccessibility *>(data);
- UpdateSwitchPage::attachActionCallback(ad, switchUpdatedCb);
- ad->updateSwitchPage_ = std::make_unique<UpdateSwitchPage>(ad, config_item);
+ auto self = static_cast<SwitchesPage *>(data);
+ UpdateSwitchPage::attachActionCallback(self->context_, switchUpdatedCb, self);
+ self->updateSwitchPage_ = std::make_unique<UpdateSwitchPage>(self->context_, config_item);
}
-void SwitchesPage::switchUpdatedCb(SettingAccessibility *ad, const std::string &switch_id, const std::string &switch_action, const std::string &switch_name)
+void SwitchesPage::switchUpdatedCb(void *data, const std::string &switch_id, const std::string &switch_action, const std::string &switch_name)
{
- retm_if(ad == NULL, "Input parameter is NULL");
+ retm_if(data == NULL, "Input parameter is NULL");
+ auto self = static_cast<SwitchesPage *>(data);
SETTING_TRACE_DEBUG("Switch updated, id: %s, name: %s, action: %s.", switch_id.c_str(), switch_name.c_str(), switch_action.c_str());
- setting_accessibility_universal_switch_dbus_config_updateSwitchConfigurationItem(&ad->config, switch_id.c_str(), switch_name.c_str(), switch_action.c_str());
- updateSwitchesList(ad, ad->universal_switch_switches);
+ setting_accessibility_universal_switch_dbus_config_updateSwitchConfigurationItem(&self->context_->config, switch_id.c_str(), switch_name.c_str(), switch_action.c_str());
+ self->updateSwitchesList(self->universal_switch_switches);
}
-void SwitchesPage::switchRemovedCb(SettingAccessibility *ad, const std::string &switch_id, const std::string &switch_action, const std::string &switch_name)
+void SwitchesPage::switchRemovedCb(void *data, const std::string &switch_id, const std::string &switch_action, const std::string &switch_name)
{
- retm_if(ad == NULL, "Input parameter is NULL");
+ retm_if(data == NULL, "Input parameter is NULL");
+ auto self = static_cast<SwitchesPage *>(data);
SETTING_TRACE_DEBUG("Switch removed, name: %s, id: %s, action: %s.", switch_name.c_str(), switch_id.c_str(), switch_action.c_str());
- setting_accessibility_universal_switch_dbus_config_removeSwitchConfigurationItem(&ad->config, switch_id.c_str());
- updateSwitchesList(ad, ad->universal_switch_switches);
+ setting_accessibility_universal_switch_dbus_config_removeSwitchConfigurationItem(&self->context_->config, switch_id.c_str());
+ self->updateSwitchesList(self->universal_switch_switches);
}
-void SwitchesPage::addSwitchCb(SettingAccessibility *ad, const std::string &switch_id, const std::string &switch_action, const std::string &switch_name)
+void SwitchesPage::addSwitchCb(void *data, const std::string &switch_id, const std::string &switch_action, const std::string &switch_name)
{
- retm_if(ad == NULL, "Input parameter is NULL");
+ retm_if(data == NULL, "Input parameter is NULL");
+ auto self = static_cast<SwitchesPage *>(data);
SETTING_TRACE_DEBUG("Add switch, id: %s, name: %s, action: %s.", switch_id.c_str(), switch_name.c_str(), switch_action.c_str());
- setting_accessibility_universal_switch_dbus_config_addSwitchConfigurationItem(&ad->config, switch_id.c_str(), switch_name.c_str(), switch_action.c_str());
- updateSwitchesList(ad, ad->universal_switch_switches);
+ setting_accessibility_universal_switch_dbus_config_addSwitchConfigurationItem(&self->context_->config, switch_id.c_str(), switch_name.c_str(), switch_action.c_str());
+ self->updateSwitchesList(self->universal_switch_switches);
}
-GenGroupItemData *SwitchesPage::addMappedSwitchMenuItem(SettingAccessibility *ad, Evas_Object *genlist, const std::string &main_text,
+GenGroupItemData *SwitchesPage::addMappedSwitchMenuItem(Evas_Object *genlist, const std::string &main_text,
const std::string &sub_text, SettingCallback item_cb, void *user_data)
{
- retvm_if(ad == NULL, NULL, "Input argument is NULL");
retvm_if(genlist == NULL, NULL, "Input genlist argument is NULL");
auto item = createGendialGroupItem(genlist, &itc_2text_1icon_3,
- item_cb, ad,
+ item_cb, this,
SwallowType::INVALID, 0,
main_text,
sub_text,
Eina_Bool SwitchesPage::naviframePopCb(void *data, Elm_Object_Item *it)
{
retv_if(data == NULL, EINA_TRUE);
- auto ad = static_cast<SettingAccessibility *>(data);
-
- if (ad->universal_switch_switches_back)
- ad->universal_switch_switches_back(ad->universal_switch_switches_back_data);
+ auto self = static_cast<SwitchesPage *>(data);
- ad->universal_switch_switches_back = NULL;
- ad->universal_switch_switches_back = nullptr;
- ad->universal_switch_switches = NULL;
- ad->md.naviframe_it = NULL;
+ if (self->universal_switch_switches_back)
+ self->universal_switch_switches_back(self->universal_switch_switches_back_data);
+ self->universal_switch_switches_back = NULL;
+ self->universal_switch_switches_back_data = nullptr;
+ self->universal_switch_switches = nullptr;
+ self->context_->md.naviframe_it = NULL;
return EINA_TRUE;
}
#include "SettingAccessibility.hpp"
#include "GenGroupItemData.hpp"
+#include "RemoveSwitchPage.hpp"
+#include "AddSwitchPage.hpp"
+#include "UpdateSwitchPage.hpp"
+
+class RemoveSwitchPage;
+class AddSwitchPage;
+class UpdateSwitchPage;
/**
* View displaying already configured switches and allowing
public:
using back_cb = void(*)(void *ad); //TODO: probably remove
SwitchesPage(SettingAccessibility *ad);
- static void attachCallback(SettingAccessibility *ad, back_cb callback, void *data);
- static void addSwitchCb(SettingAccessibility *ad, const std::string &switch_id, const std::string &switch_action, const std::string &switch_name);
+ void attachCallback(back_cb callback, void *data);
+ static void addSwitchCb(void *data, const std::string &switch_id, const std::string &switch_action, const std::string &switch_name);
private:
- static void updateSwitchesList(SettingAccessibility *ad, Evas_Object *genlist);
- static void createAddButton(SettingAccessibility *ad, Evas_Object *genlist);
- static void createSwitchesGroup(SettingAccessibility *ad, Evas_Object *genlist);
+ void updateSwitchesList(Evas_Object *genlist);
+ void createAddButton(Evas_Object *genlist);
+ void createSwitchesGroup(Evas_Object *genlist);
static void createRemovePageCb(void *data, Evas_Object *obj, void *event_info);
static void addSwitchClickedCb(void *data, Evas_Object *obj, void *event_info);
static void switchClickCb(void *data, Evas_Object *obj, void *event_info);
- static void switchUpdatedCb(SettingAccessibility *ad, const std::string &switch_id, const std::string &switch_action, const std::string &switch_name);
- static void switchRemovedCb(SettingAccessibility *ad, const std::string &switch_id, const std::string &switch_action, const std::string &switch_name);
- static GenGroupItemData *addMappedSwitchMenuItem(SettingAccessibility *ad, Evas_Object *genlist, const std::string &main_text,
+ static void switchUpdatedCb(void *data, const std::string &switch_id, const std::string &switch_action, const std::string &switch_name);
+ static void switchRemovedCb(void *data, const std::string &switch_id, const std::string &switch_action, const std::string &switch_name);
+ GenGroupItemData *addMappedSwitchMenuItem(Evas_Object *genlist, const std::string &main_text,
const std::string &sub_text, SettingCallback item_cb, void *user_data);
static Eina_Bool naviframePopCb(void *data, Elm_Object_Item *it);
static void backCb(void *data, Evas_Object *obj, void *event_info);
+ SettingAccessibility *context_ = nullptr;
+ Evas_Object *remove_switches_page_button = nullptr;
+ back_cb universal_switch_switches_back = nullptr;
+ void *universal_switch_switches_back_data = nullptr;
+ Elm_Genlist *universal_switch_switches;
+ std::unique_ptr<RemoveSwitchPage> removeSwitchPage_;
+ std::unique_ptr<AddSwitchPage> addSwitchPage_;
+ std::unique_ptr<UpdateSwitchPage> updateSwitchPage_;
};
#endif
};
class SettingAccessibility;
-using UniversalSwitchUpdateCb = std::function<void(SettingAccessibility *, const std::string &, const std::string &, const std::string &)>;
+using UniversalSwitchUpdateCb = std::function<void(void *, const std::string &, const std::string &, const std::string &)>;
/**
* Class containing cached parameteres required by Universal Switch
bool manage_options_state[MANAGE_OPTIONS_COUNT] = {false};
UniversalSwitchUpdateCb screen_switch_added_cb;
+ void *screen_switch_added_cb_data = nullptr;
UniversalSwitchUpdateCb camera_switch_added_cb;
+ void *camera_switch_added_cb_data = nullptr;
UniversalSwitchUpdateCb accessories_switch_added_cb;
+ void *accessories_switch_added_cb_data = nullptr;
UniversalSwitchUpdateCb switch_removed_cb;
+ void *switch_removed_cb_data = nullptr;
UniversalSwitchUpdateCb switch_updated_cb;
+ void *switch_updated_cb_data = nullptr;
private:
};
void UniversalSwitchPage::addNewSwitch()
{
- AddSwitchPage::attachCallbackOnSwitchAttach(context_, onNewSwitchAddition);
+ AddSwitchPage::attachCallbackOnSwitchAttach(context_, onNewSwitchAddition, context_);
context_->addSwitchPage_ = std::make_unique<AddSwitchPage>(context_);
}
}
}
-void UniversalSwitchPage::onNewSwitchAddition(SettingAccessibility *ad, const std::string &switch_id, const std::string &switch_action, const std::string &switch_name)
+void UniversalSwitchPage::onNewSwitchAddition(void *data, const std::string &switch_id, const std::string &switch_action, const std::string &switch_name)
{
- retm_if(ad == NULL, "Input parameter is NULL");
+ retm_if(data == NULL, "Input parameter is NULL");
+ auto ad = static_cast<SettingAccessibility *>(data);
SwitchesPage::addSwitchCb(ad, switch_id, switch_action, switch_name);
int switch_count = setting_accessibility_universal_switch_dbus_config_get_switch_count(&ad->config);
void displayState(bool state);
static bool setState(bool state);
void updateVconfKey(int state); //TODO rename
- static void onNewSwitchAddition(SettingAccessibility *ad, const std::string &switch_id, const std::string &switch_action, const std::string &switch_name);
+ static void onNewSwitchAddition(void *data, const std::string &switch_id, const std::string &switch_action, const std::string &switch_name);
static void popupResponseCb(void *data, Evas_Object *obj, void *event_info);
static void backCb(void *data, Evas_Object *obj, void *event_info);
static Eina_Bool naviframePopCb(void *data, Elm_Object_Item *it);
auto self = static_cast<UniversalSwitchSettingsPage *>(data);
self->switchesPage_ = std::make_unique<SwitchesPage>(self->context_);
- SwitchesPage::attachCallback(self->context_, updateSwitchesCount, self);
+ self->switchesPage_->attachCallback(updateSwitchesCount, self);
}
void UniversalSwitchSettingsPage::ctxPopupDelCb(void *data, Evas_Object *obj, void *event_info)
}
}
-void UpdateSwitchPage::attachActionCallback(SettingAccessibility *ad, UniversalSwitchUpdateCb cb)
+void UpdateSwitchPage::attachActionCallback(SettingAccessibility *ad, UniversalSwitchUpdateCb cb, void *cbData)
{
retm_if(ad == NULL, "Input parameter is NULL");
ad->us_configuration.switch_updated_cb = cb;
+ ad->us_configuration.switch_updated_cb_data = cbData;
}
void UpdateSwitchPage::onActionUpdate(SettingAccessibility *ad, const std::string &action, void *user_data)
{
if (ad->us_configuration.switch_updated_cb) {
auto config_item = static_cast<UniversalSwitchConfigurationItem *>(user_data);
- ad->us_configuration.switch_updated_cb(ad, config_item->switch_id, action, config_item->user_name);
+ ad->us_configuration.switch_updated_cb(ad->us_configuration.switch_updated_cb_data, config_item->switch_id, action, config_item->user_name);
}
}
{
public:
UpdateSwitchPage(SettingAccessibility *ad, UniversalSwitchConfigurationItem *config_item);
- static void attachActionCallback(SettingAccessibility *ad, UniversalSwitchUpdateCb cb);
+ static void attachActionCallback(SettingAccessibility *ad, UniversalSwitchUpdateCb cb, void *cbData);
private:
static void onActionUpdate(SettingAccessibility *ad, const std::string &action, void *user_data);