[Refactor] Move field to CameraSwitchesPage class
[profile/mobile/apps/native/accessibility-setting.git] / src / CameraSwitchesPage.cpp
1 #include "CameraSwitchesPage.hpp"
2
3 #include "setting-accessibility.h"
4
5 #include <app.h>
6
7 CameraSwitchesPage::CameraSwitchesPage(SettingAccessibility *ad)
8 {
9         retm_if(ad == NULL, "Input parameter is NULL");
10         Evas_Object *genlist = elm_genlist_add(ad->md.getNaviframe());
11         retm_if(genlist == NULL, "Cannot set genlist object as content of layout");
12
13         elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
14         elm_object_style_set(genlist, "dialogue");
15         elm_genlist_clear(genlist);
16
17         universal_switch_camera_comment = setting_create_Gendial_field_def(
18                         genlist, &ad->itc_multiline_sub,
19                         NULL, ad, SwallowType::INVALID, NULL,
20                         NULL, 0,
21                         NULL,
22                         _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_ADD_SWITCH_CAMERA_COMMENT),
23                         NULL);
24
25         elm_genlist_item_select_mode_set(universal_switch_camera_comment->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
26         setting_create_Gendial_field_titleItem(genlist, &itc_group_item, DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_ADD_SWITCH_CAMERA_GROUP_HEAD, NULL);
27
28         auto switches = setting_accessibility_universal_switch_dbus_config_get_switches(&ad->config, ACCESSIBILITY_UNIVERSAL_SWITCH_CAMERA_SWITCH_PROVIDER);
29         for (auto &it : switches) {
30                 auto item = setting_create_Gendial_field_def(genlist, &ad->itc_multiline_sub, addSwitchCb, it,
31                                 SwallowType::INVALID, NULL, NULL, 0, it->name.c_str(), it->description.c_str(), NULL);
32
33                 if (item) {
34                         item->userdata = ad;
35                         AddSwitchPage::disableAlreadyMappedSwitch(ad->config.configuration_items, it->id, item->item);
36                 }
37         }
38
39         Elm_Object_Item *navi_it = elm_naviframe_item_push(ad->md.getNaviframe(), _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_ADD_SWITCH_CAMERA_TITLE), NULL, NULL, genlist, NULL);
40         elm_object_item_domain_text_translatable_set(navi_it, PACKAGE, EINA_TRUE);
41
42         Evas_Object *back_btn = setting_create_button(ad->md.getNaviframe(), NULL, NAVI_BACK_ARROW_BUTTON_STYLE, backCb, ad);
43         elm_layout_content_set(ad->md.getNaviframe(), "prev_btn", back_btn);
44 }
45
46 void CameraSwitchesPage::attachActionCallback(SettingAccessibility *ad, UniversalSwitchUpdateCb cb)
47 {
48         retm_if(ad == NULL, "Input parameter is NULL");
49
50         ad->us_configuration.camera_switch_added_cb = cb;
51 }
52
53 void CameraSwitchesPage::addSwitchCb(void *data, Evas_Object *obj, void *event_info)
54 {
55         Elm_Object_Item *item = (Elm_Object_Item *)event_info;
56         elm_genlist_item_selected_set(item, EINA_FALSE);
57         GenGroupItemData *settings_item = (GenGroupItemData *)elm_object_item_data_get(item);
58         SettingAccessibility *ad = (SettingAccessibility *)settings_item->userdata;
59         retm_if(ad == NULL, "Input argument is NULL");
60         UniversalSwitchInfoType * camera_switch = (UniversalSwitchInfoType *)data;
61
62         createActionPage(ad, camera_switch);
63 }
64
65 void CameraSwitchesPage::createActionPage(SettingAccessibility *ad, UniversalSwitchInfoType * camera_switch)
66 {
67         retm_if(ad == NULL, "Data argument is NULL");
68
69         SETTING_TRACE_DEBUG("Camera switch, id: %s, name: %s", camera_switch->id, camera_switch->name);
70
71         ad->actionPage_ = std::make_unique<ActionPage>(ad);
72         ActionPage::attachCallback(ad, switchActionCb, camera_switch);
73 }
74
75 void CameraSwitchesPage::switchActionCb(SettingAccessibility *ad, const std::string& action, void *user_data)
76 {
77         retm_if(user_data == NULL, "User data parameter is NULL");
78         UniversalSwitchInfoType * camera_switch = (UniversalSwitchInfoType *)user_data;
79
80         if (ad->us_configuration.camera_switch_added_cb)
81                 ad->us_configuration.camera_switch_added_cb(ad, camera_switch->id, action, camera_switch->name);
82 }
83
84 void CameraSwitchesPage::backCb(void *data, Evas_Object *obj, void *event_info)
85 {
86         retm_if(data == NULL, "Data argument is NULL");
87         SettingAccessibility *ad = (SettingAccessibility *)data;
88
89         elm_naviframe_item_pop(ad->md.getNaviframe());
90 }