Updating any switch.
Managing accessories (add/delete/update/check if already exist)
Disabling mapped switches.
Now saving options (including switch management) can be done, by selecting desired option, rather than on click of virtual back button.
UI Corrections according to the guide
This patch is a continuation of https://review.tizen.org/gerrit/#/c/143128/
Change-Id: If38bfc57bcd75a934622d6640cef9eef53bb10dc
#define GRP_SET_VALUE_RADIOS "set-value-radios"
#define GRP_SET_VALUE_SWITCHES "set-value-switches"
#define GRP_SET_VALUE_LIST_SWITCH "set-value-list-switch"
+#define GRP_SET_VALUE_UPDATE_ACCESSORIES_SWITCH "set-value-update-accessories-switch"
#define PRT_SET_VALUE_BG "set-value-bg"
#define PRT_SET_VALUE_SWITCH_BG "set-value-switch-bg"
#define PRT_SET_VALUE_SWITCH "set-value-switch"
#define PRT_SET_VALUE_RANGE "set-value-range"
#define PRT_SET_VALUE_DESC "set-value-desc"
#define PRT_SET_VALUE_LIST "set-value-list"
+#define PRT_SET_VALUE_ENTRY "set-value-entry"
styles {
style {
}
}
}
+
+ group {
+ name: GRP_SET_VALUE_UPDATE_ACCESSORIES_SWITCH;
+ parts {
+ part {
+ name: PRT_SET_VALUE_BG;
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ rel1.relative: 0.0 0.0;
+ rel2.relative: 1.0 1.0;
+ color: 255 255 255 255;
+ }
+ }
+
+ part {
+ name: PRT_SET_VALUE_DESC;
+ type: TEXTBLOCK;
+ description {
+ state: "default" 0.0;
+ rel1.offset: 40 5;
+ rel1.to: PRT_SET_VALUE_BG;
+ text.style: TXT_STYLE_DESC;
+ text.align: 0.0 0.0;
+ }
+ }
+
+ part {
+ name: PRT_SET_VALUE_ENTRY;
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ rel1.offset: 40 150;
+ rel1.to_x: PRT_SET_VALUE_BG;
+ rel2.relative: 1.0 0.0;
+ rel2.to: PRT_SET_VALUE_BG;
+ }
+ }
+
+ part {
+ name: PRT_SET_VALUE_LIST;
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ rel1.relative: 0.0 1.0;
+ rel1.to_x: PRT_SET_VALUE_BG;
+ rel1.to_y: PRT_SET_VALUE_ENTRY;
+ rel2.relative: 1.0 1.0;
+ rel2.to: PRT_SET_VALUE_BG;
+ }
+ }
+ }
+ }
}
\ No newline at end of file
msgid "IDS_ST_SBODY_ERASE_ALL_DELETED_DATA_ON_THE_PHONE_PERMANENTLY_FOR_SECURITY_PURPOSES_THIS_DATA_WILL_NOT_BE_RECOVERABLE_BY_ANYONE"
msgstr "Erase all deleted data on the phone permanently for security purposes. This data will not be recoverable by anyone."
-
void setting_accessibility_universal_switch_add_switch_page_create(SettingAccessibility *ad);
void setting_accessibility_universal_switch_add_switch_new_switch_callback_attach(SettingAccessibility *ad, universal_switch_added_cb cb);
+void setting_accessibility_universal_switch_disable_already_mapped_switch(Eina_Array *configuration_items, const char *switch_id, Elm_Object_Item *item);
#endif /* SETTINGACCESSIBILITYUNIVERSALSWITCHADDSWITCH_H */
char *switch_id;
char *user_name;
char *activity_type;
+ char *provider_id;
};
typedef struct _UniversalSwitchConfigurationItem UniversalSwitchConfigurationItem;
#include "setting-accessibility.h"
void setting_accessibility_universal_switch_remove_switch_page_create(SettingAccessibility *ad);
+void setting_accessibility_universal_switch_use_naviframe_title_as_counter(SettingAccessibility *ad);
void setting_accessibility_universal_switch_remove_switch_callback_attach(SettingAccessibility *ad, universal_switch_removed_cb cb);
void setting_accessibility_universal_switch_settings_set_value_switch_set(SettingAccessibility *ad, bool state);
void setting_accessibility_universal_switch_settings_set_value_radio_item_add(SettingAccessibility *ad, const char *caption, int id, bool selected);
void setting_accessibility_universal_switch_settings_set_value_switch_item_add(SettingAccessibility *ad, const char *caption, int id, bool state);
+void setting_accessibility_universal_switch_settings_set_value_switch_item_with_subtext_add(SettingAccessibility *ad, const char *caption, const char *subtext, int id, bool state);
Setting_GenGroupItem_Data* setting_accessibility_universal_switch_settings_set_value_radio_list_item_add(SettingAccessibility *ad, const char *main_text, const char *sub_text, int option_id);
void setting_accessibility_universal_switch_settings_set_value_add_value_change_cb(SettingAccessibility *ad, change_value_cb cb);
void setting_accessibility_universal_switch_settings_set_value_add_switch_change_cb(SettingAccessibility *ad, change_switch_cb cb);
void setting_accessibility_universal_switch_settings_set_value_add_radio_item_change_cb(SettingAccessibility *ad, change_radio_item_cb cb);
void setting_accessibility_universal_switch_settings_set_value_add_switch_item_change_cb(SettingAccessibility *ad, change_switch_item_cb cb);
void setting_accessibility_universal_switch_settings_set_value_add_list_item_options_request_cb(SettingAccessibility *ad, request_list_item_options_cb cb);
+void setting_accessibility_universal_switch_settings_create_update_accesories_switch_page(SettingAccessibility *ad);
+void setting_accessibility_universal_switch_settings_synchronize_page_with_vconf(keynode_t *node, void *user_data);
#endif /* SETTINGACCESSIBILITYUNIVERSALSWITCHSETTINGSSETVALUE_H */
#include "setting-accessibility.h"
-void setting_accessibility_universal_switch_settings_page_create(SettingAccessibility *ad);
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_SCAN_ENABLED "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_SCAN_ENABLED"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_SCAN_INT "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_SCAN_INT"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_NUM_OF_SCANS "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_NUM_OF_SCANS"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_SCAN_METHOD "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_SCAN_METHOD"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_SCAN_DIR "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_SCAN_DIR"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_SCAN_PT_SPEED "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_SCAN_PT_SPEED"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_PAUSE_ON_FIRST_STATE "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_PAUSE_ON_FIRST_STATE"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_PAUSE_ON_FIRST_VALUE "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_PAUSE_ON_FIRST_VALUE"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_TAP_DURATION_STATE "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_TAP_DURATION_STATE"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_TAP_DURATION_VALUE "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_TAP_DURATION_VALUE"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_SGL_IACTION_INT_STATE "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_SGL_IACTION_INT_STATE"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_SGL_IACTION_INT_VALUE "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_SGL_IACTION_INT_VALUE"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_TAP_STATE "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_TAP_STATE"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_TAP_VALUE "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_TAP_VALUE"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_MOVE_INT_STATE "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_MOVE_INT_STATE"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_MOVE_INT_VALUE "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_MOVE_INT_VALUE"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_TAP_KBD_STATE "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_TAP_KBD_STATE"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_CURSOR_COLOR "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_CURSOR_COLOR"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_SOUND_STATE "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_SOUND_STATE"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_SOUND_VOLUME "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_SOUND_VOLUME"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_VOICE_STATE "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_VOICE_STATE"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_VOICE_SPEECH_RATE "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_VOICE_SPEECH_RATE"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_VOICE_SPEECH_VOLUME "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_VOICE_SPEECH_VOLUME"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_ACTIONS "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_ACTIONS"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_SETTINGS "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_SETTINGS"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_HOMESCREEN "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_HOMESCREEN"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_KEYS "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_KEYS"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_EDITTEXT "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_EDITTEXT"
+
+void setting_accessibility_universal_switch_settings_page_create(SettingAccessibility *data);
#endif /* SETTINGACCESSIBILITYUNIVERSALSWITCHSETTINGS_H */
void setting_accessibility_universal_switch_switches_page_create(SettingAccessibility *ad);
void setting_accessibility_universal_switch_switches_callback_attach(SettingAccessibility *ad, back_cb callback);
+void setting_accessibility_universal_switch_add_switch_cb(SettingAccessibility *ad, const char *switch_id, switch_action_t switch_action, const char *switch_name);
#endif /* SETTINGACCESSIBILITYUNIVERSALSWITCHSWITCHES_H */
--- /dev/null
+#ifndef SETTINGACCESSIBILITYUNIVERSALSWITCHUPDATESWITCH_H
+#define SETTINGACCESSIBILITYUNIVERSALSWITCHUPDATESWITCH_H
+
+#include "setting-accessibility.h"
+
+void setting_accessibility_universal_switch_update_switch_page_create(SettingAccessibility *ad, UniversalSwitchConfigurationItem *config_item);
+void setting_accessibility_universal_switch_update_switch_callback_attach(SettingAccessibility *ad, universal_switch_updated_cb cb);
+
+#endif /* SETTINGACCESSIBILITYUNIVERSALSWITCHUPDATESWITCH_H */
+
#include "setting-common-init.h"
#include "setting-accessibility-universal-switch-dbus.h"
+#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_STATE "db/setting/accessibility/universal-switch"
+
#define DEVOPTION_STR_ACCESSIBILITY_VISION "IDS_ST_HEADER_VISION"
#define DEVOPTION_STR_ACCESSIBILITY_SCREEN_READER_SETTINGS_SPEECH \
"IDS_ST_BODY_SPEECH"
the opening of your mouth and the blinking of your eyes."
#define DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS "Settings"
#define DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_POPUP_ADD "Add switch"
-#define DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_POPUP_CANCEL "Cancel"
-#define DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_POPUP_SAVE "Save"
+#define DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_CANCEL "Cancel"
+#define DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SAVE "Save"
+#define DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_NAME "Name"
+#define DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_ACTION "Action"
-#define DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS "Settings"
#define DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_GROUP_SWITCHES "Switches"
#define DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_GROUP_SWITCHES_ADD_SWITCH "Add switch"
#define DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_GROUP_SWITCHES_DELETE "DELETE"
#define DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_SET_VALUE_DESC_FEEDBACK_VOICE "Select the volume and speed of voice feedback."
#define DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SELECT_ACTION "Select switch action"
-#define DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_ENTER_NAME "Enter switch name."
#define DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_ADD_SWITCH "Add switch"
+#define DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_DELETE_SWITCHES "Delete switches"
+#define DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_DELETE_ALL_SWITCHES_DESC "All switches will be removed. Universal Switch will be disabled."
+#define DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_DELETE_SWITCHES_DESC "switches will be removed."
+#define DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_OK "Ok"
+#define DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_UNABLE_TO_ADD "Unable to add accessory"
+#define DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_ALREADY_ADDED "This accessory has already been added. Try adding another accessory."
#define DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_ADD_SWITCH_NAME "Switch name"
#define DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_ADD_SWITCH_SCREEN "Screen"
#define DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_ADD_SWITCH_SCREEN_HINT "Tap anywhere on the screen."
#define DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_ADD_SWITCH_CAMERA_GROUP_HEAD_BLINK_SUB "Close your eyes for at least 2.0 seconds to allow the device to recognise this switch."
#define DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_ADD_SWITCH_CAMERA_GROUP_HEAD_MOUTH "Open mouth"
+#define DEVOPTION_STR_ACCESSIBILITY_SELECT_ITEMS "Select items"
+#define DEVOPTION_STR_ACCESSIBILITY_DELETE "Delete"
+#define DEVOPTION_STR_ACCESSIBILITY_ALL_CAPS "ALL"
+#define DEVOPTION_STR_ACCESSIBILITY_DELETE_CAPS "DELETE"
+#define DEVOPTION_STR_ACCESSIBILITY_SETTINGS_CAPS "SETTINGS"
#define DEVOPTION_STR_ACCESSIBILITY_INDICATOR_TIME "IDS_ST_HEADER_TIME"
#define DEVOPTION_STR_ACCESSIBILITY_INDICATOR_BATTERY "IDS_ST_BODY_BATTERY"
#define DEVOPTION_STR_ACCESSIBILITY_INDICATOR_BLUETOOTH "IDS_ST_BODY_BLUETOOTH"
#define ACCESSIBILITY_UNIVERSAL_SWITCH_ACCESSORIES_SWITCH_PROVIDER "AccessoriesSwitchProvider"
#define ACCESSIBILITY_UNIVERSAL_SWITCH_CAMERA_SWITCH_PROVIDER "CameraSwitchProvider"
#define ACCESSIBILITY_UNIVERSAL_SWITCH_SCREEN "Screen"
+#define ACCESSIBILITY_UNIVERSAL_SWITCH_SCREEN_SWITCH_ID "ScreenSwitchProvider_touch"
#define ACCESSIBILITY_UNIVERSAL_SWITCH_PLUS_ICON SETTING_ICON_PATH "/plus.png"
Elm_Genlist_Item_Class itc_1text;
Evas_Object *popup;
Evas_Object *entry;
+ Evas_Object *all_checkbox;
+ Evas_Object *remove_switches_page_button;
+ Evas_Object *update_accessories_action_genlist;
+ Elm_Object_Item *save_object_item;
SetValueLayout set_value_layout;
Setting_GenGroupItem_Data *speech_rate_item;
Setting_GenGroupItem_Data *universal_switch_item;
Setting_GenGroupItem_Data *universal_switch_off_checkbox;
Setting_GenGroupItem_Data *universal_switch_comment;
- Setting_GenGroupItem_Data *universal_switch_settings;
Setting_GenGroupItem_Data *universal_switch_add_switch_screen;
Setting_GenGroupItem_Data *universal_switch_add_switch_accessories;
Setting_GenGroupItem_Data *universal_switch_add_switch_camera;
tts_h tts;
UniversalSwitchDbusConfig config;
+ UniversalSwitchConfigurationItem config_item_to_update;
char * switch_id;
bool auto_scan;
double auto_scan_interval;
universal_switch_removed_cb switch_removed_cb;
universal_switch_updated_cb switch_updated_cb;
bool empty_flag;
+ int switches_to_remove_counter;
};
extern setting_view setting_view_accessibility_main;
retm_if(ad == NULL, "Input parameter is NULL");
setting_accessibility_universal_switch_settings_set_value_page_create(ad, VT_RADIOS, _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SELECT_ACTION));
+ setting_accessibility_universal_switch_settings_set_value_add_radio_item_change_cb(ad, __action_changed_cb);
Eina_Array_Iterator iterator;
UniversalSwitchActivityType *activity;
int i;
EINA_ARRAY_ITER_NEXT(ad->config.activity_types, i, activity, iterator) {
- setting_accessibility_universal_switch_settings_set_value_radio_item_add(ad, activity->name, i, /*_action[i].id == ...*/false);
+ setting_accessibility_universal_switch_settings_set_value_radio_item_add(ad, activity->name, i, false);
}
- elm_radio_value_set(ad->set_value_layout.radio_group, -1);
- setting_accessibility_universal_switch_settings_set_value_add_radio_item_change_cb(ad, __action_changed_cb);
-
SETTING_TRACE_END;
}
static Evas_Object *__create_layout(Evas_Object *parent, const char *edj_file, const char *group);
static Evas_Object *__create_entry(Evas_Object *parent, const char *part_name);
+static void __capture_switch_cb(void *user_data, const char *switch_id);
static void __back_cb(void *data, Evas_Object *obj, void *event_info)
{
SETTING_TRACE_BEGIN;
retm_if(data == NULL, "Data argument is NULL");
SettingAccessibility *ad = (SettingAccessibility *)data;
+ elm_naviframe_item_pop(ad->md.naviframe);
+
+ SETTING_TRACE_END;
+}
+
+static Eina_Bool __naviframe_pop_cb(void *data, Elm_Object_Item *it)
+{
+ SETTING_TRACE_BEGIN;
+ retv_if(data == NULL, EINA_TRUE);
+ SettingAccessibility *ad = (SettingAccessibility *)data;
- //TODO: should be called whenever exiting frame
setting_accessibility_universal_switch_dbus_config_cancelCaptureSwitch(&ad->config);
- if (ad->switch_id) {
- free(ad->switch_id);
- ad->switch_id = NULL;
- }
+ free(ad->switch_id);
+ ad->switch_id = NULL;
- elm_naviframe_item_pop(ad->md.naviframe);
+ SETTING_TRACE_END;
+ return EINA_TRUE;
+}
+
+static Eina_Bool __renew_capture_switch_cb(void *data, Elm_Object_Item *it)
+{
+ SETTING_TRACE_BEGIN;
+ retv_if(data == NULL, EINA_TRUE);
+ SettingAccessibility *ad = (SettingAccessibility *)data;
+
+ setting_accessibility_universal_switch_dbus_config_captureSwitch(&ad->config, ACCESSIBILITY_UNIVERSAL_SWITCH_ACCESSORIES_SWITCH_PROVIDER, -1, __capture_switch_cb, ad);
SETTING_TRACE_END;
+ return EINA_TRUE;
}
static void __accessory_switch_action_cb(SettingAccessibility *ad, switch_action_t action, void *user_data)
}
setting_accessibility_universal_switch_action_page_create(ad);
+ elm_naviframe_item_pop_cb_set(elm_naviframe_top_item_get(ad->md.naviframe), __renew_capture_switch_cb, ad);
setting_accessibility_universal_switch_action_callback_attach(ad, __accessory_switch_action_cb, (void *)strdup(switch_name));
+ } else {
+ __renew_capture_switch_cb(ad, NULL);
}
- if (ad->popup) {
- evas_object_del(ad->popup);
- ad->popup = NULL;
- ad->entry = NULL;
- }
+ evas_object_del(ad->popup);
+ ad->popup = NULL;
+ ad->entry = NULL;
+
+ SETTING_TRACE_END;
+}
+
+static void __ok_response_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ SETTING_TRACE_BEGIN;
+ retm_if(data == NULL, "Data parameter is NULL");
+ SettingAccessibility *ad = (SettingAccessibility *)data;
+
+ __renew_capture_switch_cb(ad, NULL);
+
+ evas_object_del(ad->popup);
+ ad->popup = NULL;
+
+ SETTING_TRACE_END;
+}
+
+static void __switch_already_mapped_popup(SettingAccessibility *ad)
+{
+ SETTING_TRACE_BEGIN;
+
+ ad->popup = setting_create_popup(ad, ad->md.naviframe,
+ _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_UNABLE_TO_ADD), NULL,
+ __ok_response_cb, 0,
+ true,
+ true,
+ 1, DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_OK);
+
+ Evas_Object *layout = __create_layout(ad->popup, EDJ_ACCESSORY_POPUP, GRP_ACCESSORY_POPUP);
+
+ elm_object_part_text_set(layout, PRT_ACCESSORY_POPUP_LABEL, DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_ALREADY_ADDED);
+ elm_object_content_set(ad->popup, layout);
SETTING_TRACE_END;
}
retm_if(switch_id == NULL, "switch_id is NULL");
SettingAccessibility *ad = (SettingAccessibility *)user_data;
+ Eina_Array_Iterator iterator;
+ UniversalSwitchConfigurationItem *config_item;
+ int i;
+ EINA_ARRAY_ITER_NEXT(ad->config.configuration_items, i, config_item, iterator) {
+ if (strlen(switch_id) == strlen(config_item->switch_id) && strncmp(switch_id, config_item->switch_id, strlen(switch_id)) == 0) {
+ __switch_already_mapped_popup(ad);
+ SETTING_TRACE_END;
+ return;
+ }
+ }
+
ad->switch_id = strdup(switch_id);
ad->popup = setting_create_popup(ad, ad->md.naviframe,
_(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_ADD_SWITCH), NULL,
__popup_response_cb, 0,
true,
true,
- 2, DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_POPUP_CANCEL, DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_POPUP_SAVE);
+ 2, DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_CANCEL, DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SAVE);
Evas_Object *layout = __create_layout(ad->popup, EDJ_ACCESSORY_POPUP, GRP_ACCESSORY_POPUP);
- elm_object_part_text_set(layout, PRT_ACCESSORY_POPUP_LABEL, _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_ENTER_NAME));
ad->entry = __create_entry(layout, PRT_ACCESSORY_POPUP_ENTRY);
elm_object_part_text_set(ad->entry, "guide", _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_ADD_SWITCH_NAME));
elm_layout_text_set(layout, PRT_ACCESSORY_LABEL, _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_ADD_SWITCH_ACCESSORIES_DESC));
Elm_Object_Item *navi_it = elm_naviframe_item_push(ad->md.naviframe, _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_ADD_SWITCH_ACCESSORIES_TITLE), NULL, NULL, layout, NULL);
+ elm_naviframe_item_pop_cb_set(navi_it, __naviframe_pop_cb, ad);
elm_object_item_domain_text_translatable_set(navi_it, SETTING_PACKAGE, EINA_TRUE);
Evas_Object *back_btn = setting_create_button(ad->md.naviframe, NULL, NAVI_BACK_ARROW_BUTTON_STYLE, __back_cb, ad);
#include "setting-accessibility-universal-switch-add-switch-camera.h"
#include "setting-accessibility-universal-switch-action.h"
+#include "setting-accessibility-universal-switch-add-switch.h"
static void __back_cb(void *data, Evas_Object *obj, void *event_info)
item = setting_create_Gendial_field_def(genlist, &itc_1text, __add_camera_switch_cb, camer_switch,
SWALLOW_Type_INVALID, NULL, NULL, 0, camer_switch->name, description, NULL);
- if (item)
+ if (item) {
item->userdata = ad;
+ setting_accessibility_universal_switch_disable_already_mapped_switch(ad->config.configuration_items, camer_switch->id, item->item);
+ }
+
}
}
#include "setting-accessibility-universal-switch-add-switch-accessories.h"
#include "setting-accessibility-universal-switch-add-switch-camera.h"
-static Eina_Bool __universal_switch_add_switch_page_hide_cb(void *data, Elm_Object_Item *it)
+static Eina_Bool __naviframe_pop_cb(void *data, Elm_Object_Item *it)
{
SETTING_TRACE_BEGIN;
retv_if(data == NULL, EINA_TRUE);
return EINA_TRUE;
}
-static void __universal_switch_back_cb(void *data, Evas_Object *obj, void *event_info)
+static void __back_cb(void *data, Evas_Object *obj, void *event_info)
{
SETTING_TRACE_BEGIN;
retm_if(data == NULL, "Data argument is NULL");
SETTING_TRACE_END;
}
+void setting_accessibility_universal_switch_disable_already_mapped_switch(Eina_Array *configuration_items, const char *switch_id, Elm_Object_Item *item)
+{
+ SETTING_TRACE_BEGIN;
+ retm_if(configuration_items == NULL, "Input parameter is NULL");
+ retm_if(switch_id == NULL, "Input parameter is NULL");
+ retm_if(item == NULL, "Input parameter is NULL");
+
+ Eina_Array_Iterator already_mapped_iterator;
+ UniversalSwitchConfigurationItem *config_item;
+ int i;
+ EINA_ARRAY_ITER_NEXT(configuration_items, i, config_item, already_mapped_iterator) {
+ if (strcmp(switch_id, config_item->switch_id) == 0)
+ elm_object_item_disabled_set(item, EINA_TRUE);
+ }
+ SETTING_TRACE_END;
+}
+
+static void __disable_screen_switch_provider_when_screen_switches_is_mapped(Eina_Array *configuration_items, UniversalSwitchSwitchProvider *switch_provider, Elm_Object_Item *item)
+{
+ SETTING_TRACE_BEGIN;
+ retm_if(configuration_items == NULL, "Input parameter is NULL");
+ retm_if(switch_provider == NULL, "Input parameter is NULL");
+ retm_if(item == NULL, "Input parameter is NULL");
+
+ SETTING_TRACE_DEBUG("provider_id %s", switch_provider->info->id);
+
+ if (strcmp(switch_provider->info->id, ACCESSIBILITY_UNIVERSAL_SWITCH_SCREEN_SWITCH_PROVIDER) == 0)
+ setting_accessibility_universal_switch_disable_already_mapped_switch(configuration_items, ACCESSIBILITY_UNIVERSAL_SWITCH_SCREEN_SWITCH_ID, item);
+
+ SETTING_TRACE_END;
+}
+
void setting_accessibility_universal_switch_add_switch_page_create(SettingAccessibility *ad)
{
SETTING_TRACE_BEGIN;
switch_provider->info->name,
switch_provider->info->description, NULL);
- if (item)
+ if (item) {
item->userdata = ad;
+ __disable_screen_switch_provider_when_screen_switches_is_mapped(ad->config.configuration_items, switch_provider, item->item);
+ }
}
Elm_Object_Item *navi_it = elm_naviframe_item_push(ad->md.naviframe, _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_ADD_SWITCH), NULL, NULL, genlist, NULL);
+ elm_naviframe_item_pop_cb_set(navi_it, __naviframe_pop_cb, ad);
elm_object_item_domain_text_translatable_set(navi_it, SETTING_PACKAGE, EINA_TRUE);
- elm_naviframe_item_pop_cb_set(navi_it, __universal_switch_add_switch_page_hide_cb, ad);
- Evas_Object *back_btn = setting_create_button(ad->md.naviframe, NULL, NAVI_BACK_ARROW_BUTTON_STYLE, __universal_switch_back_cb, ad);
+ Evas_Object *back_btn = setting_create_button(ad->md.naviframe, NULL, NAVI_BACK_ARROW_BUTTON_STYLE, __back_cb, ad);
elm_layout_content_set(ad->md.naviframe, "prev_btn", back_btn);
SETTING_TRACE_END;
info->id = strdup(id);
info->name = strdup(name);
info->description = strdup(description);
- SETTING_TRACE_DEBUG("id: %s, name: %s, desc: %s", info->id, info->name, info->description);
eina_array_push(infoTypes, info);
}
}
static void __eldbus_getAllSwitchConfigurationItemsArray(Eina_Array *infoTypes, Eldbus_Message *reply)
{
+ SETTING_TRACE_BEGIN;
Eldbus_Message_Iter *array;
Eldbus_Message_Iter *struct_sssi;
return;
}
while (eldbus_message_iter_get_and_next(array, 'r', &struct_sssi)) {
- char *switchId, *userName, *activityType;
+ char *switchId;
+ char *userName;
+ char *activityType;
int changeType;
if (!eldbus_message_iter_arguments_get(struct_sssi, "sssi", &switchId, &userName, &activityType, &changeType)) {
SETTING_TRACE_ERROR("Error on eldbus_message_arguments_get()\n");
return;
}
+ char *pointer_to_end_of_switch_provider_str = strstr(switchId, "_");
+ if (!pointer_to_end_of_switch_provider_str) {
+ SETTING_TRACE_ERROR("Wrong switch ID format");
+ return;
+ }
+ size_t provider_id_size = pointer_to_end_of_switch_provider_str - switchId;
UniversalSwitchConfigurationItem *item = calloc(1, sizeof(UniversalSwitchConfigurationItem));
if (!item) {
SETTING_TRACE_ERROR("Out of memory");
return;
}
+ item->provider_id = strndup(switchId, provider_id_size);
item->switch_id = strdup(switchId);
item->user_name = strdup(userName);
item->activity_type = strdup(activityType);
eina_array_push(infoTypes, item);
}
+ SETTING_TRACE_END;
}
static Eina_Array * __eldbus_getAllSwitchConfigurationItems(UniversalSwitchEldbus *eldbus)
free(item->switch_id);
free(item->user_name);
free(item->activity_type);
+ free(item->provider_id);
free(item);
}
eina_array_free(config->configuration_items);
void setting_accessibility_universal_switch_dbus_config_cancelCaptureSwitch(UniversalSwitchDbusConfig *config)
{
UniversalSwitchEldbus * eldbus = &config->eldbus;
+
+ SETTING_TRACE_DEBUG("Running " IFACE ".cancelCaptureSwitch");
+ eldbus_proxy_call(config->eldbus.proxy, "cancelCaptureSwitch", NULL, NULL, ELDBUS_TIMEOUT, "");
+
SETTING_TRACE_DEBUG("DBus call captureSwitch canceled");
eldbus->capture_switch_callback = NULL;
- if (eldbus->capture_switch_request)
+ if (eldbus->capture_switch_request) {
eldbus_pending_cancel(eldbus->capture_switch_request);
- eldbus->capture_switch_request = NULL;
+ eldbus->capture_switch_request = NULL;
+ }
}
#include "setting-accessibility-universal-switch-settings-set-value.h"
#include "setting-accessibility-universal-switch-dbus.h"
+#define SWITCH_COUNTER_MAX 99
+#define SWITCH_COUNTER_TITLE_LENGTH 4
-static void __action_remove_cb(SettingAccessibility *ad, int item_id)
+static void __remove_switch(SettingAccessibility *ad, int item_id)
{
SETTING_TRACE_BEGIN;
retm_if(ad == NULL, "Input parameter is NULL");
SETTING_TRACE_END;
}
+static void __remove_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ evas_object_del(obj);
+}
+
+static void __cancel_button_clicked_remove_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ Evas_Object *popup = data;
+ evas_object_del(popup);
+}
+
+static void __remove_selected_switches_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ SettingAccessibility *ad = data;
+ bool disable_universal_switch = (ad->switches_to_remove_counter == elm_genlist_items_count(ad->set_value_layout.genlist));
+
+ Elm_Object_Item *item = elm_genlist_last_item_get(ad->set_value_layout.genlist);
+ while (item != NULL) {
+ Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)elm_object_item_data_get(item);
+ item = elm_genlist_item_prev_get(item);
+ if (list_item->chk_status)
+ __remove_switch(ad, list_item->chk_id);
+ }
+
+ evas_object_del(ad->popup);
+ ad->popup = NULL;
+ elm_naviframe_item_pop(ad->md.naviframe);
+
+ if (disable_universal_switch && vconf_set_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_STATE, 0))
+ LOGE("Failed to set vconf key %s.", VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_STATE);
+}
+
+static void __confirm_removing_switches_create_popup(SettingAccessibility *ad)
+{
+ ad->popup = elm_popup_add(ad->md.naviframe);
+ retm_if(!ad->popup, "Popup creation failure");
+ elm_popup_orient_set(ad->popup, ELM_POPUP_ORIENT_CENTER);
+ evas_object_size_hint_weight_set(ad->popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ int vconf_val;
+ int vconf_ret = vconf_get_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_STATE, &vconf_val);
+ retm_if(vconf_ret != 0,
+ "Failed to get vconf bool value VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_STATE. Error: %d", vconf_ret);
+
+ elm_object_part_text_set(ad->popup, "title,text", _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_DELETE_SWITCHES));
+
+ if (vconf_val && ad->switches_to_remove_counter == elm_genlist_items_count(ad->set_value_layout.genlist)) {
+ elm_object_text_set(ad->popup, _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_DELETE_ALL_SWITCHES_DESC));
+ } else {
+ char s[64];
+ snprintf(s, 64, "%d %s", ad->switches_to_remove_counter, _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_DELETE_SWITCHES_DESC));
+ elm_object_text_set(ad->popup, s);
+ }
+
+ eext_object_event_callback_add(ad->popup, EEXT_CALLBACK_BACK, __remove_popup_cb, NULL);
+ evas_object_smart_callback_add(ad->popup, "dismissed", __remove_popup_cb, NULL);
+ evas_object_smart_callback_add(ad->popup, "block,clicked", __remove_popup_cb, NULL);
+
+
+ Evas_Object *btn = elm_button_add(ad->popup);
+ if (!btn) {
+ SETTING_TRACE_ERROR("Button creation failed");
+ evas_object_del(ad->popup);
+ ad->popup = NULL;
+ }
+ elm_object_style_set(btn, "bottom");
+ elm_object_text_set(btn, _(IDS_ST_BUTTON_CANCEL));
+ elm_object_part_content_set(ad->popup, "button1", btn);
+ evas_object_smart_callback_add(btn, "clicked", __cancel_button_clicked_remove_popup_cb, ad->popup);
+
+
+ btn = elm_button_add(ad->popup);
+ if (!btn) {
+ SETTING_TRACE_ERROR("Button creation failed");
+ evas_object_del(ad->popup);
+ ad->popup = NULL;
+ }
+ elm_object_style_set(btn, "bottom");
+ elm_object_text_set(btn, _(DEVOPTION_STR_ACCESSIBILITY_DELETE));
+ elm_object_part_content_set(ad->popup, "button2", btn);
+ evas_object_smart_callback_add(btn, "clicked", __remove_selected_switches_cb, ad);
+
+ evas_object_show(ad->popup);
+}
+
+void setting_accessibility_universal_switch_use_naviframe_title_as_counter(SettingAccessibility *ad)
+{
+ SETTING_TRACE_BEGIN;
+ retm_if(ad == NULL, "Input parameter is NULL");
+
+ elm_check_state_set(ad->all_checkbox, ad->switches_to_remove_counter == elm_genlist_items_count(ad->set_value_layout.genlist));
+
+ char array[SWITCH_COUNTER_TITLE_LENGTH];
+ char *title = array;
+ if (ad->switches_to_remove_counter > SWITCH_COUNTER_MAX) {
+ snprintf(title, SWITCH_COUNTER_TITLE_LENGTH, "%d+", SWITCH_COUNTER_MAX);
+ } else if (ad->switches_to_remove_counter > 0) {
+ snprintf(title, SWITCH_COUNTER_TITLE_LENGTH, "%d", ad->switches_to_remove_counter);
+ } else {
+ title = _(DEVOPTION_STR_ACCESSIBILITY_SELECT_ITEMS);
+ }
+ elm_layout_text_set(ad->md.naviframe, "default", title);
+ SETTING_TRACE_END;
+}
+
+static void __all_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ SETTING_TRACE_BEGIN;
+ SettingAccessibility *ad = (SettingAccessibility *)data;
+ retm_if(ad == NULL, "Input parameter is NULL");
+ retm_if(ad->set_value_layout.genlist == NULL, "No genlist provided");
+
+ int genlist_size = elm_genlist_items_count(ad->set_value_layout.genlist);
+ bool all_selected = (ad->switches_to_remove_counter == genlist_size);
+
+ Elm_Object_Item *item = elm_genlist_first_item_get(ad->set_value_layout.genlist);
+ while (item != NULL) {
+ Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)elm_object_item_data_get(item);
+ setting_update_gl_item_chk_status(list_item, !all_selected);
+ item = elm_genlist_item_next_get(item);
+ }
+
+ ad->switches_to_remove_counter = all_selected ? 0 : genlist_size;
+ setting_accessibility_universal_switch_use_naviframe_title_as_counter(ad);
+
+ SETTING_TRACE_END;
+}
+
+static void __delete_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ SETTING_TRACE_BEGIN;
+ SettingAccessibility *ad = data;
+ retm_if(ad == NULL, "Input parameter is NULL");
+ retm_if(ad->set_value_layout.genlist == NULL, "No genlist provided");
+
+ __confirm_removing_switches_create_popup(ad);
+
+ SETTING_TRACE_END;
+}
+
void setting_accessibility_universal_switch_remove_switch_page_create(SettingAccessibility *ad)
{
SETTING_TRACE_BEGIN;
retm_if(ad == NULL, "Input parameter is NULL");
- setting_accessibility_universal_switch_settings_set_value_page_create(ad, VT_RADIOS, "");
+ ad->switches_to_remove_counter = 0;
+
+ setting_accessibility_universal_switch_settings_set_value_page_create(ad, VT_SWITCHES, _(DEVOPTION_STR_ACCESSIBILITY_SELECT_ITEMS));
+
+ ad->all_checkbox = elm_check_add(ad->md.naviframe);
+ evas_object_smart_callback_add(ad->all_checkbox, "changed", __all_button_clicked_cb, ad);
+ elm_layout_content_set(ad->md.naviframe, "prev_btn", ad->all_checkbox);
+
+ Evas_Object *delete_btn = setting_create_button(ad->md.naviframe, _(DEVOPTION_STR_ACCESSIBILITY_DELETE_CAPS), "naviframe/title_right", __delete_button_clicked_cb, ad);
+ elm_layout_content_set(ad->md.naviframe, "title_right_btn", delete_btn);
Eina_Array_Iterator iterator;
UniversalSwitchConfigurationItem *config_item;
int i;
EINA_ARRAY_ITER_NEXT(ad->config.configuration_items, i, config_item, iterator) {
- setting_accessibility_universal_switch_settings_set_value_radio_item_add(ad, config_item->user_name, i, /*_action[i].id == ...*/false);
+ const char *activity_name = setting_accessibility_universal_switch_dbus_config_get_activity_name(&ad->config, config_item->activity_type);
+ setting_accessibility_universal_switch_settings_set_value_switch_item_with_subtext_add(ad, config_item->user_name, activity_name, i, false);
}
- setting_accessibility_universal_switch_settings_set_value_add_radio_item_change_cb(ad, __action_remove_cb);
- elm_radio_value_set(ad->set_value_layout.radio_group, -1);
-
SETTING_TRACE_END;
}
#include <efl_extension.h>
#include "setting-accessibility-universal-switch-settings-set-value.h"
+#include "setting-accessibility-universal-switch-remove-switch.h"
+#include "setting-accessibility-universal-switch-action.h"
+#include "setting-accessibility-universal-switch-settings.h"
#define EDJ_SET_VALUE "edje/accessibility-settings-set-value.edj"
#define GRP_SET_VALUE_NUMERIC "set-value-numeric"
#define GRP_SET_VALUE_RADIOS "set-value-radios"
#define GRP_SET_VALUE_SWITCHES "set-value-switches"
#define GRP_SET_VALUE_LIST_SWITCH "set-value-list-switch"
+#define GRP_SET_VALUE_UPDATE_ACCESSORIES_SWITCH "set-value-update-accessories-switch"
#define PRT_SET_VALUE_LIST "set-value-list"
#define PRT_SET_VALUE_SWITCH_LABEL "set-value-switch-label"
#define PRT_SET_VALUE_SWITCH "set-value-switch"
#define PRT_SET_VALUE_RANGE "set-value-range"
#define PRT_SET_VALUE_DESC "set-value-desc"
#define PRT_SET_VALUE_LIST "set-value-list"
+#define PRT_SET_VALUE_ENTRY "set-value-entry"
typedef struct _options_item {
SettingAccessibility *ad;
retm_if(data == NULL, "Data argument is NULL");
SettingAccessibility *ad = (SettingAccessibility *)data;
+ elm_naviframe_item_pop(ad->md.naviframe);
+
+ SETTING_TRACE_END;
+}
+
+static Eina_Bool __naviframe_pop_cb(void *data, Elm_Object_Item *it)
+{
+ SETTING_TRACE_BEGIN;
+ retv_if(data == NULL, EINA_TRUE);
+ SettingAccessibility *ad = data;
+
+ vconf_ignore_key_changed(VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_VOICE_STATE, setting_accessibility_universal_switch_settings_synchronize_page_with_vconf);
+ vconf_ignore_key_changed(VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_SOUND_STATE, setting_accessibility_universal_switch_settings_synchronize_page_with_vconf);
+
if (ad->set_value_layout.value_change_cb) {
int page_num = 0;
elm_scroller_current_page_get(ad->set_value_layout.scroller, NULL, &page_num);
ad->set_value_layout.value_change_cb(ad, (double)page_num * ad->set_value_layout.step + ad->set_value_layout.min_val);
}
- if (ad->set_value_layout.radio_item_change_cb) {
- int radio_id = elm_radio_value_get(ad->set_value_layout.radio_group);
- ad->set_value_layout.radio_item_change_cb(ad, radio_id);
- ad->set_value_layout.radio_item_change_cb = NULL;
- }
-
if (ad->set_value_layout.options_data) {
options_item_t *opt_item = NULL;
EINA_LIST_FREE(ad->set_value_layout.options_data, opt_item)
ad->set_value_layout.options_data = NULL;
}
- elm_naviframe_item_pop(ad->md.naviframe);
-
- SETTING_TRACE_END;
-}
-
-static void __list_back_cb(void *data, Evas_Object *obj, void *event_info)
-{
- SETTING_TRACE_BEGIN;
- retm_if(data == NULL, "Data argument is NULL");
- SettingAccessibility *ad = (SettingAccessibility *)data;
-
- if (ad->set_value_layout.radio_item_change_cb) {
- int radio_id = elm_radio_value_get(ad->set_value_layout.radio_group);
- ad->set_value_layout.radio_item_change_cb(ad, radio_id);
- ad->set_value_layout.radio_item_change_cb = NULL;
- }
-
- elm_naviframe_item_pop(ad->md.naviframe);
-
SETTING_TRACE_END;
+ return EINA_TRUE;
}
static void __check_state_changed_cb(void *data, Evas_Object *obj, void *event_info)
SETTING_TRACE_END;
}
+void setting_accessibility_universal_switch_settings_synchronize_page_with_vconf(keynode_t *node, void *user_data)
+{
+ SETTING_TRACE_BEGIN;
+ retm_if(user_data == NULL, "Data parameter is NULL");
+ retm_if(node == NULL, "Data parameter is NULL");
+ SettingAccessibility *ad = user_data;
+ int ret = vconf_keynode_get_bool(node);
+ retm_if(ret < 0, "FAIL: vconf_keynode_get_bool");
+ if (elm_check_state_get(ad->set_value_layout.check) != ret) {
+ elm_check_state_set(ad->set_value_layout.check, ret);
+
+ __check_state_changed_cb(ad, ad->set_value_layout.check, NULL);
+ }
+ SETTING_TRACE_END;
+}
+
static void __scroller_scroll_cb(void *data, Evas_Object *obj, void *event_info)
{
SETTING_TRACE_BEGIN;
static void __list_item_click_cb(void *data, Evas_Object *obj, void *event_info)
{
SETTING_TRACE_BEGIN;
- const char *page_title = NULL;
elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
retm_if(data == NULL, "Input parameter is NULL");
options_item_t *opt_item = (options_item_t *)data;
+ retm_if(opt_item->ad->set_value_layout.list_item_options_request_cb == NULL, "Function not provided");
- opt_item->ad->set_value_layout.radio_group = NULL;
- opt_item->ad->set_value_layout.layout = __create_layout(opt_item->ad->md.naviframe, GRP_SET_VALUE_RADIOS);
- opt_item->ad->set_value_layout.scroller = __create_scroller(opt_item->ad->set_value_layout.layout);
- opt_item->ad->set_value_layout.box = __create_box(opt_item->ad->set_value_layout.scroller);
- evas_object_smart_callback_add(opt_item->ad->set_value_layout.scroller, "scroll,page,changed", __scroller_scroll_cb, (void *)opt_item->ad);
-
- if (opt_item->ad->set_value_layout.list_item_options_request_cb)
- opt_item->ad->set_value_layout.list_item_options_request_cb(opt_item->ad, opt_item->option_id, &page_title);
+ opt_item->ad->set_value_layout.list_item_options_request_cb(opt_item->ad, opt_item->option_id, NULL);
- Elm_Object_Item *navi_it = elm_naviframe_item_push(opt_item->ad->md.naviframe, page_title, NULL, NULL, opt_item->ad->set_value_layout.layout, NULL);
- elm_object_item_domain_text_translatable_set(navi_it, SETTING_PACKAGE, EINA_TRUE);
-
- Evas_Object *back_btn = setting_create_button(opt_item->ad->md.naviframe, NULL, NAVI_BACK_ARROW_BUTTON_STYLE, __list_back_cb, opt_item->ad);
- elm_layout_content_set(opt_item->ad->md.naviframe, "prev_btn", back_btn);
SETTING_TRACE_END;
}
return check;
}
-static Evas_Object *__create_radio(SettingAccessibility *ad, Evas_Object *parent_box, const char *caption, int radio_id, bool selected)
-{
- SETTING_TRACE_BEGIN;
- retvm_if(ad == NULL || parent_box == NULL, NULL, "Input parameter is NULL");
-
- Evas_Object *radio = elm_radio_add(parent_box);
- if (!ad->set_value_layout.radio_group)
- ad->set_value_layout.radio_group = radio;
-
- elm_radio_group_add(radio, ad->set_value_layout.radio_group);
- elm_radio_state_value_set(radio, radio_id);
- elm_object_text_set(radio, caption);
-
- evas_object_size_hint_align_set(radio, 0.0, 0.0);
- evas_object_size_hint_weight_set(radio, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_padding_set(radio, 50, 0, 10, 10);
- evas_object_show(radio);
-
- elm_box_pack_end(parent_box, radio);
-
- if (selected)
- elm_radio_value_set(radio, radio_id);
-
- SETTING_TRACE_END;
- return radio;
-}
-
-static Evas_Object *__create_separator(Evas_Object *parent_box)
-{
- SETTING_TRACE_BEGIN;
- retvm_if(parent_box == NULL, NULL, "Input parameter is NULL");
-
- Evas_Object *sep = evas_object_rectangle_add(evas_object_evas_get(parent_box));
- evas_object_size_hint_min_set(sep, 720, 2);
- evas_object_size_hint_max_set(sep, 720, 2);
- evas_object_move(sep, 0, 0);
- evas_object_resize(sep, 720, 2);
- evas_object_color_set(sep, 192, 192, 192, 255);
- evas_object_show(sep);
-
- elm_box_pack_end(parent_box, sep);
- SETTING_TRACE_END;
- return sep;
-}
-
static Evas_Object *__create_genlist(Evas_Object *parent, const char *title)
{
SETTING_TRACE_BEGIN;
switch (type) {
case VT_NUMERIC: layout_grp = GRP_SET_VALUE_NUMERIC; break;
case VT_NUMERIC_SWITCH: layout_grp = GRP_SET_VALUE_NUMERIC_SWITCH; break;
- case VT_RADIOS: layout_grp = GRP_SET_VALUE_RADIOS; break;
+ case VT_RADIOS:
case VT_SWITCHES: layout_grp = GRP_SET_VALUE_SWITCHES; break;
case VT_LIST_SWITCH: layout_grp = GRP_SET_VALUE_LIST_SWITCH; break;
default:
ad->set_value_layout.layout = __create_layout(ad->md.naviframe, layout_grp);
- if (type == VT_NUMERIC) {
+ switch (type) {
+ case VT_NUMERIC:
ad->set_value_layout.scroller = __create_scroller(ad->set_value_layout.layout);
ad->set_value_layout.box = __create_box(ad->set_value_layout.scroller);
evas_object_smart_callback_add(ad->set_value_layout.scroller, "scroll,page,changed", __scroller_scroll_cb, (void *)ad);
- } else if (type == VT_NUMERIC_SWITCH) {
+ break;
+ case VT_NUMERIC_SWITCH:
ad->set_value_layout.scroller = __create_scroller(ad->set_value_layout.layout);
ad->set_value_layout.box = __create_box(ad->set_value_layout.scroller);
ad->set_value_layout.check = __create_check(ad->set_value_layout.layout, EINA_FALSE);
evas_object_smart_callback_add(ad->set_value_layout.scroller, "scroll,page,changed", __scroller_scroll_cb, (void *)ad);
evas_object_smart_callback_add(ad->set_value_layout.check, "changed", __check_state_changed_cb, (void *)ad);
- } else if (type == VT_RADIOS) {
- ad->set_value_layout.radio_group = NULL;
- ad->set_value_layout.scroller = __create_scroller(ad->set_value_layout.layout);
- ad->set_value_layout.box = __create_box(ad->set_value_layout.scroller);
- evas_object_smart_callback_add(ad->set_value_layout.scroller, "scroll,page,changed", __scroller_scroll_cb, (void *)ad);
- } else if (type == VT_SWITCHES) {
+ break;
+ case VT_RADIOS:
+ ad->set_value_layout.radio_item_change_cb = NULL;
+ ad->set_value_layout.genlist = __create_genlist(ad->set_value_layout.layout, NULL);
+ break;
+ case VT_SWITCHES:
ad->set_value_layout.genlist = __create_genlist(ad->set_value_layout.layout, NULL);
- } else if (type == VT_LIST_SWITCH) {
+ break;
+ case VT_LIST_SWITCH:
ad->set_value_layout.check = __create_check(ad->set_value_layout.layout, EINA_FALSE);
ad->set_value_layout.genlist = __create_genlist(ad->set_value_layout.layout, _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_GROUP_FEEDBACK_OPTIONS));
evas_object_smart_callback_add(ad->set_value_layout.check, "changed", __check_state_changed_cb, (void *)ad);
- }
+ break;
+ default:
+ LOGE("Wrong value type");
+}
Elm_Object_Item *navi_it = elm_naviframe_item_push(ad->md.naviframe, title, NULL, NULL, ad->set_value_layout.layout, NULL);
+ elm_naviframe_item_pop_cb_set(navi_it, __naviframe_pop_cb, ad);
elm_object_item_domain_text_translatable_set(navi_it, SETTING_PACKAGE, EINA_TRUE);
Evas_Object *back_btn = setting_create_button(ad->md.naviframe, NULL, NAVI_BACK_ARROW_BUTTON_STYLE, __back_cb, ad);
SETTING_TRACE_END;
}
-void setting_accessibility_universal_switch_settings_set_value_radio_item_add(SettingAccessibility *ad, const char *caption, int id, bool selected)
+static void __switch_item_checkbox_cb(void *data, Evas_Object *obj, void *event_info)
{
SETTING_TRACE_BEGIN;
- retm_if(ad == NULL, "Input parameter is NULL");
+ retm_if(data == NULL, "Input parameter is NULL");
+ Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)data;
+ SettingAccessibility *ad = (SettingAccessibility *)list_item->userdata;
- Evas_Object *box = __create_box(ad->set_value_layout.box);
- __create_radio(ad, box, caption, id, selected);
- __create_separator(box);
- elm_box_pack_end(ad->set_value_layout.box, box);
+ if (ad->set_value_layout.switch_item_change_cb) {
+ bool state = elm_check_state_get(list_item->eo_check);
+ ad->set_value_layout.switch_item_change_cb(ad, list_item->chk_id, state);
+ }
SETTING_TRACE_END;
}
-static void __switch_item_checkbox_cb(void *data, Evas_Object *obj, void *event_info)
+static void __gendial_remove_item_checkbox_cb(void *data, Evas_Object *obj, void *event_info)
{
SETTING_TRACE_BEGIN;
retm_if(data == NULL, "Input parameter is NULL");
Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)data;
SettingAccessibility *ad = (SettingAccessibility *)list_item->userdata;
+ if (elm_check_state_get(list_item->eo_check))
+ ad->switches_to_remove_counter++;
+ else
+ ad->switches_to_remove_counter--;
- if (ad->set_value_layout.switch_item_change_cb) {
- bool state = elm_check_state_get(list_item->eo_check);
- ad->set_value_layout.switch_item_change_cb(ad, list_item->chk_id, state);
- }
+ setting_accessibility_universal_switch_use_naviframe_title_as_counter(ad);
+
+ SETTING_TRACE_END;
+}
+
+static void __gendial_remove_item_selected_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ SETTING_TRACE_BEGIN;
+ retm_if(event_info == NULL, "Invalid argument: event_info is NULL");
+ Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+
+ elm_genlist_item_selected_set(item, 0);
+
+ Setting_GenGroupItem_Data *list_item = elm_object_item_data_get(item);
+ setting_update_gl_item_chk_status(list_item,
+ list_item->chk_status ? 0 : 1);
+
+ SettingAccessibility *ad = (SettingAccessibility *)list_item->userdata;
+
+ if (elm_check_state_get(list_item->eo_check))
+ ad->switches_to_remove_counter++;
+ else
+ ad->switches_to_remove_counter--;
+
+ setting_accessibility_universal_switch_use_naviframe_title_as_counter(ad);
SETTING_TRACE_END;
}
caption, NULL,
__switch_item_checkbox_cb);
+ if (item) {
+ item->userdata = (void *)ad;
+ item->chk_id = id;
+ }
+ SETTING_TRACE_END;
+}
+
+static void __gendial_radio_item_selected_cb(
+ void *data, Evas_Object *obj, void *event_info)
+{
+ SETTING_TRACE_BEGIN;
+ retm_if(event_info == NULL, "Invalid argument: event_info is NULL");
+ Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+
+ elm_genlist_item_selected_set(item, 0);
+
+ Setting_GenGroupItem_Data *list_item =
+ (Setting_GenGroupItem_Data *)elm_object_item_data_get(item);
+ if (list_item->chk_status)
+ setting_update_gl_item_chk_status(list_item, 0);
+
+ SettingAccessibility *ad = (SettingAccessibility *)list_item->userdata;
+
+ if (ad->set_value_layout.radio_item_change_cb)
+ ad->set_value_layout.radio_item_change_cb(ad, list_item->chk_id);
+
+ if (ad->md.naviframe_it) {
+ elm_naviframe_item_pop_cb_set(elm_naviframe_top_item_get(ad->md.naviframe), NULL, NULL);
+ elm_naviframe_item_pop_to(ad->md.naviframe_it);
+ } else {
+ elm_naviframe_item_pop(ad->md.naviframe);
+ }
+
+ SETTING_TRACE_END;
+}
+
+void setting_accessibility_universal_switch_settings_set_value_radio_item_add(SettingAccessibility *ad, const char *caption, int id, bool selected)
+{
+ SETTING_TRACE_BEGIN;
+ retm_if(ad == NULL, "Input parameter is NULL");
+
+ Setting_GenGroupItem_Data *item = setting_create_Gendial_field_def(ad->set_value_layout.genlist, &itc_1text_1icon_3,
+ __gendial_radio_item_selected_cb, NULL,
+ SWALLOW_Type_1RADIO, NULL, NULL, selected ? 0 : -1,
+ caption, NULL,
+ NULL);
+
+ if (item) {
+ item->userdata = ad;
+ item->chk_id = id;
+ }
+
+ SETTING_TRACE_END;
+}
+
+void setting_accessibility_universal_switch_settings_set_value_switch_item_with_subtext_add(SettingAccessibility *ad, const char *caption,
+ const char *subtext, int id, bool state)
+{
+ SETTING_TRACE_BEGIN;
+ retm_if(ad == NULL, "Input parameter is NULL");
+
+ Setting_GenGroupItem_Data *item = setting_create_Gendial_field_def(ad->set_value_layout.genlist, &itc_1text_1icon_3,
+ __gendial_remove_item_selected_cb, NULL,
+ SWALLOW_Type_1CHECK, NULL, NULL, (int)state,
+ caption, subtext,
+ __gendial_remove_item_checkbox_cb);
+
if (item) {
item->userdata = (void *)ad;
item->chk_id = id;
SETTING_TRACE_END;
}
+
+static void __update_accessories_switch_save_changes(SettingAccessibility *ad)
+{
+ SETTING_TRACE_BEGIN;
+ if (ad->switch_updated_cb) {
+ ad->switch_updated_cb(ad, ad->config_item_to_update.switch_id, ad->config_item_to_update.activity_type, elm_entry_entry_get(ad->entry));
+ }
+ SETTING_TRACE_END;
+}
+
+static void __close_update_accessories_switch_page(void *data, Evas_Object *obj, void *event_info)
+{
+ SETTING_TRACE_BEGIN;
+ SettingAccessibility *ad = data;
+ retm_if(ad == NULL, "Data argument is NULL");
+
+ if (event_info == ad->save_object_item)
+ __update_accessories_switch_save_changes(ad);
+
+ if (ad->config_item_to_update.switch_id) {
+ free(ad->config_item_to_update.switch_id);
+ ad->config_item_to_update.switch_id = NULL;
+ }
+
+ if (ad->config_item_to_update.activity_type) {
+ free(ad->config_item_to_update.activity_type);
+ ad->config_item_to_update.activity_type = NULL;
+ }
+
+ if (ad->config_item_to_update.user_name) {
+ free(ad->config_item_to_update.user_name);
+ ad->config_item_to_update.user_name = NULL;
+ }
+
+ elm_naviframe_item_pop(ad->md.naviframe);
+ SETTING_TRACE_END;
+}
+
+static void __add_action_gendial_field(SettingAccessibility *ad);
+
+static void __update_action_gendial_field(SettingAccessibility *ad)
+{
+ SETTING_TRACE_BEGIN;
+ retm_if(ad == NULL, "Input argument is NULL");
+
+ elm_genlist_clear(ad->update_accessories_action_genlist);
+ __add_action_gendial_field(ad);
+ SETTING_TRACE_END;
+}
+
+static void __update_accessible_switch_choose_action(SettingAccessibility *ad, switch_action_t action, void *user_data)
+{
+ SETTING_TRACE_BEGIN;
+ free(ad->config_item_to_update.activity_type);
+ ad->config_item_to_update.activity_type = strdup(action);
+ __update_action_gendial_field(ad);
+ elm_naviframe_item_pop(ad->md.naviframe);
+ SETTING_TRACE_END;
+}
+
+static void __update_accessible_switch_action(void *data, Evas_Object *obj, void *event_info)
+{
+ SETTING_TRACE_BEGIN;
+ elm_genlist_item_selected_set(event_info, 0);
+ SettingAccessibility *ad = data;
+ retm_if(ad == NULL, "Data argument is NULL");
+
+ setting_accessibility_universal_switch_action_page_create(ad);
+ setting_accessibility_universal_switch_action_callback_attach(ad, __update_accessible_switch_choose_action, ad);
+ SETTING_TRACE_END;
+}
+
+static void __add_action_gendial_field(SettingAccessibility *ad)
+{
+ SETTING_TRACE_BEGIN;
+ setting_create_Gendial_field_def(ad->update_accessories_action_genlist, &itc_1text,
+ __update_accessible_switch_action, ad,
+ SWALLOW_Type_INVALID, NULL, NULL, 0,
+ _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_ACTION),
+ setting_accessibility_universal_switch_dbus_config_get_activity_name(&ad->config, ad->config_item_to_update.activity_type),
+ NULL);
+ SETTING_TRACE_END;
+}
+
+void setting_accessibility_universal_switch_settings_create_update_accesories_switch_page(SettingAccessibility *ad)
+{
+ SETTING_TRACE_BEGIN;
+ Evas_Object *tb;
+ Elm_Object_Item *nf_it;
+ tb = elm_toolbar_add(ad->md.naviframe);
+ elm_toolbar_select_mode_set(tb, ELM_OBJECT_SELECT_MODE_NONE);
+ evas_object_smart_callback_add(tb, "clicked", __close_update_accessories_switch_page, ad);
+ evas_object_show(tb);
+
+ elm_toolbar_shrink_mode_set(tb, ELM_TOOLBAR_SHRINK_EXPAND);
+ elm_toolbar_transverse_expanded_set(tb, EINA_TRUE);
+
+ elm_toolbar_item_append(tb, NULL, _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_CANCEL), NULL, NULL);
+ ad->save_object_item = elm_toolbar_item_append(tb, NULL, _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SAVE), NULL, NULL);
+
+ ad->set_value_layout.layout = __create_layout(ad->md.naviframe, GRP_SET_VALUE_UPDATE_ACCESSORIES_SWITCH);
+ ad->entry = elm_entry_add(ad->set_value_layout.layout);
+ elm_entry_entry_set(ad->entry, ad->config_item_to_update.user_name);
+ elm_entry_cursor_end_set(ad->entry);
+ evas_object_show(ad->entry);
+ elm_object_part_content_set(ad->set_value_layout.layout, PRT_SET_VALUE_ENTRY, ad->entry);
+
+ elm_object_part_text_set(ad->set_value_layout.layout, PRT_SET_VALUE_DESC, _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_NAME));
+
+ ad->update_accessories_action_genlist = __create_genlist(ad->set_value_layout.layout, NULL);
+ __add_action_gendial_field(ad);
+
+ nf_it = elm_naviframe_item_push(ad->md.naviframe, "", NULL, NULL, ad->set_value_layout.layout, "tabbar/notitle");
+ elm_object_item_domain_text_translatable_set(nf_it, SETTING_PACKAGE, EINA_TRUE);
+ elm_object_item_part_content_set(nf_it, "tabbar", tb);
+ SETTING_TRACE_END;
+}
#define DEFAULT_MANAGE_KEYS true
#define DEFAULT_MANAGE_EDITTEXT true
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_SCAN "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_SCAN"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_SCAN_INT "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_SCAN_INT"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_NUM_OF_SCANS "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_NUM_OF_SCANS"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_SCAN_METHOD "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_SCAN_METHOD"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_SCAN_DIR "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_SCAN_DIR"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_SCAN_PT_SPEED "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_SCAN_PT_SPEED"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_PAUSE_ON_FIRST_STATE "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_PAUSE_ON_FIRST_STATE"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_PAUSE_ON_FIRST_VALUE "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_PAUSE_ON_FIRST_VALUE"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_TAP_DURATION_STATE "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_TAP_DURATION_STATE"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_TAP_DURATION_VALUE "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_TAP_DURATION_VALUE"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_SGL_IACTION_INT_STATE "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_SGL_IACTION_INT_STATE"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_SGL_IACTION_INT_VALUE "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_SGL_IACTION_INT_VALUE"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_TAP_STATE "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_TAP_STATE"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_TAP_VALUE "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_TAP_VALUE"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_MOVE_INT_STATE "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_MOVE_INT_STATE"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_MOVE_INT_VALUE "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_MOVE_INT_VALUE"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_TAP_KBD_STATE "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_TAP_KBD_STATE"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_CURSOR_COLOR "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_CURSOR_COLOR"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_SOUND_STATE "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_SOUND_STATE"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_SOUND_VOLUME "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_SOUND_VOLUME"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_VOICE_STATE "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_VOICE_STATE"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_VOICE_SPEECH_RATE "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_VOICE_SPEECH_RATE"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_VOICE_SPEECH_VOLUME "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_VOICE_SPEECH_VOLUME"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_ACTIONS "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_ACTIONS"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_SETTINGS "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_SETTINGS"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_HOMESCREEN "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_HOMESCREEN"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_KEYS "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_KEYS"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_EDITTEXT "__KEY_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_MANAGE_EDITTEXT"
typedef enum {VOICE_FEEDBACK_SPEECH_RATE, VOICE_FEEDBACK_VOLUME} voice_feedback_type_t;
static const char *__get_scan_direction_text(scan_dir_t direction);
static Evas_Object *__create_ctxpopup(SettingAccessibility *ad);
static void __set_ctxpopup_position(SettingAccessibility *ad, Evas_Object *ctxpopup);
+static void __auto_scan_checkbox_cb(void *data, Evas_Object *obj, void *event_info);
+static void __feedback_sound_checkbox_cb(void *data, Evas_Object *obj, void *event_info);
+static void __feedback_voice_checkbox_cb(void *data, Evas_Object *obj, void *event_info);
+static void __synchronize_checkbox_with_vconf(keynode_t *node, void *user_data, setting_call_back_func cb_func)
+{
+ SETTING_TRACE_BEGIN;
+ retm_if(user_data == NULL, "Data parameter is NULL");
+ retm_if(node == NULL, "Data parameter is NULL");
+ Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)user_data;
+ int ret = vconf_keynode_get_bool(node);
+ retm_if(ret < 0, "FAIL: vconf_keynode_get_bool");
+ if (list_item->chk_status != ret) {
+ setting_update_gl_item_chk_status(list_item, ret);
+ cb_func(list_item, list_item->eo_check, NULL);
+ }
+ SETTING_TRACE_END;
+}
+
+static void __synchronize_auto_scan_with_vconf(keynode_t *node, void *user_data)
+{
+ SETTING_TRACE_BEGIN;
+ __synchronize_checkbox_with_vconf(node, user_data, __auto_scan_checkbox_cb);
+ SETTING_TRACE_END;
+}
+
+static void __synchronize_sound_feedback_with_vconf(keynode_t *node, void *user_data)
+{
+ SETTING_TRACE_BEGIN;
+ __synchronize_checkbox_with_vconf(node, user_data, __feedback_sound_checkbox_cb);
+ SETTING_TRACE_END;
+}
+
+static void __synchronize_voice_feedback_with_vconf(keynode_t *node, void *user_data)
+{
+ SETTING_TRACE_BEGIN;
+ __synchronize_checkbox_with_vconf(node, user_data, __feedback_voice_checkbox_cb);
+ SETTING_TRACE_END;
+}
static void __back_cb(void *data, Evas_Object *obj, void *event_info)
{
SETTING_TRACE_END;
}
+static Eina_Bool __naviframe_pop_cb(void *data, Elm_Object_Item *it)
+{
+ SETTING_TRACE_BEGIN;
+ retv_if(data == NULL, EINA_TRUE);
+
+ vconf_ignore_key_changed(VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_SCAN_ENABLED, __synchronize_auto_scan_with_vconf);
+ vconf_ignore_key_changed(VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_SOUND_STATE, __synchronize_sound_feedback_with_vconf);
+ vconf_ignore_key_changed(VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_VOICE_STATE, __synchronize_voice_feedback_with_vconf);
+
+ SETTING_TRACE_END;
+ return EINA_TRUE;
+}
+
static void __ctxpopup_del_cb(void *data, Evas_Object *obj, void *event_info)
{
SETTING_TRACE_BEGIN;
elm_object_item_disabled_set(ad->universal_switch_pause_on_first->item, (Eina_Bool)!ad->auto_scan);
elm_object_item_disabled_set(ad->universal_switch_auto_move_int->item, (Eina_Bool)ad->auto_scan);
- __update_vconf_value(VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_SCAN, (bool *)&list_item->chk_status, NULL, NULL);
+ __update_vconf_value(VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_SCAN_ENABLED, (bool *)&list_item->chk_status, NULL, NULL);
SETTING_TRACE_END;
}
retm_if(ad == NULL, "Data argument is NULL");
setting_accessibility_universal_switch_settings_set_value_page_create(ad, VT_RADIOS, _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_GROUP_FEEDBACK_CURSOR_CL));
+ setting_accessibility_universal_switch_settings_set_value_add_radio_item_change_cb(ad, __cursor_color_list_item_changed_cb);
+ elm_naviframe_item_pop_cb_set(elm_naviframe_top_item_get(ad->md.naviframe), NULL, NULL);
+
for (i = 0; i < CURSOR_COLORS_COUNT; i++)
setting_accessibility_universal_switch_settings_set_value_radio_item_add(ad, _cursor_color[i].key, i, _cursor_color[i].id == ad->cursor_color);
- setting_accessibility_universal_switch_settings_set_value_add_radio_item_change_cb(ad, __cursor_color_list_item_changed_cb);
-
SETTING_TRACE_END;
}
static void __feedback_sound_item_options_request_cb(SettingAccessibility *ad, int option_id, const char **title)
{
SETTING_TRACE_BEGIN;
- int i;
- *title = _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_GROUP_FEEDBACK_SOUND_VOLUME);
+ setting_accessibility_universal_switch_settings_set_value_page_create(ad, VT_RADIOS, _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_GROUP_FEEDBACK_SOUND_VOLUME));
+ setting_accessibility_universal_switch_settings_set_value_add_radio_item_change_cb(ad, __feedback_sound_volume_changed_cb);
+ elm_naviframe_item_pop_cb_set(elm_naviframe_top_item_get(ad->md.naviframe), NULL, NULL);
+ int i;
for (i = 0; i < MEDIA_LEVEL_COUNT; i++)
setting_accessibility_universal_switch_settings_set_value_radio_item_add(ad, _media_level[i].key, i, _media_level[i].id == ad->feedback_sound_volume);
- setting_accessibility_universal_switch_settings_set_value_add_radio_item_change_cb(ad, __feedback_sound_volume_changed_cb);
-
SETTING_TRACE_END;
}
ad->universal_switch_feedback_sound_volume = setting_accessibility_universal_switch_settings_set_value_radio_list_item_add(ad,
_(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_GROUP_FEEDBACK_SOUND_VOLUME), str, 0);
setting_accessibility_universal_switch_settings_set_value_add_list_item_options_request_cb(ad, __feedback_sound_item_options_request_cb);
+ int vconf_ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_SOUND_STATE, setting_accessibility_universal_switch_settings_synchronize_page_with_vconf, ad);
+ if (vconf_ret)
+ SETTING_TRACE_ERROR("FAIL: vconf_notify_key_changed(VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_SOUND_STATE)");
SETTING_TRACE_END;
}
SETTING_TRACE_END;
}
-static void __feedback_voice_item_options_request_cb(SettingAccessibility *ad, int option_id, const char **title)
+static void __feedback_voice_item_options_request_cb(SettingAccessibility *ad, int option_id, const char **title /*remove last arg*/)
{
SETTING_TRACE_BEGIN;
- int i;
- int sel_value = 0;
+ char *page_title = NULL;
+ int sel_value = 0;
+ change_radio_item_cb cb = NULL;
if (option_id == VOICE_FEEDBACK_SPEECH_RATE) {
- *title = _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_GROUP_FEEDBACK_VOICE_SPEECH_RATE);
+ page_title = _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_GROUP_FEEDBACK_VOICE_SPEECH_RATE);
sel_value = ad->feedback_voice_speech_rate;
- setting_accessibility_universal_switch_settings_set_value_add_radio_item_change_cb(ad, __feedback_voice_speech_rate_changed_cb);
+ cb = __feedback_voice_speech_rate_changed_cb;
} else if (option_id == VOICE_FEEDBACK_VOLUME) {
- *title = _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_GROUP_FEEDBACK_VOICE_SPEECH_VOLUME);
+ page_title = _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_GROUP_FEEDBACK_VOICE_SPEECH_VOLUME);
sel_value = ad->feedback_voice_speech_volume;
- setting_accessibility_universal_switch_settings_set_value_add_radio_item_change_cb(ad, __feedback_voice_speech_volume_changed_cb);
- } else
- *title = "Undefined";
+ cb = __feedback_voice_speech_volume_changed_cb;
+ } else {
+ SETTING_TRACE_END;
+ return;
+ }
+
+ setting_accessibility_universal_switch_settings_set_value_page_create(ad, VT_RADIOS, page_title);
+ setting_accessibility_universal_switch_settings_set_value_add_radio_item_change_cb(ad, cb);
+ elm_naviframe_item_pop_cb_set(elm_naviframe_top_item_get(ad->md.naviframe), NULL, NULL);
+ int i;
for (i = 0; i < MEDIA_LEVEL_COUNT; i++)
setting_accessibility_universal_switch_settings_set_value_radio_item_add(ad, _media_level[i].key, i, _media_level[i].id == sel_value);
setting_accessibility_universal_switch_settings_set_value_switch_set(ad, ad->feedback_voice_state);
setting_accessibility_universal_switch_settings_set_value_description_set(ad, _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_SET_VALUE_DESC_FEEDBACK_VOICE));
setting_accessibility_universal_switch_settings_set_value_add_switch_change_cb(ad, __feedback_voice_switch_changed_cb);
+ int vconf_ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_VOICE_STATE, setting_accessibility_universal_switch_settings_synchronize_page_with_vconf, ad);
+ if (vconf_ret)
+ SETTING_TRACE_ERROR("FAIL: vconf_notify_key_changed(VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_VOICE_STATE)");
snprintf(str, sizeof(str), "%d%%", ad->feedback_voice_speech_rate);
ad->universal_switch_feedback_voice_speech_rate = setting_accessibility_universal_switch_settings_set_value_radio_list_item_add(ad,
retvm_if(key == NULL, false, "Key input argument is NULL");
if (bvalue) {
+ bool b;
+ __get_vconf_value(key, &b, NULL, NULL);
+ retvm_if(b == *bvalue, false, "Value already set");
ret = preference_set_boolean(key, *bvalue);
warn_if(ret != PREFERENCE_ERROR_NONE, "Failed to update %s value.", key);
} else if (ivalue) {
+ int i;
+ __get_vconf_value(key, NULL, &i, NULL);
+ retvm_if(i == *ivalue, false, "Value already set");
ret = preference_set_int(key, *ivalue);
warn_if(ret != PREFERENCE_ERROR_NONE, "Failed to update %s value.", key);
} else if (dvalue) {
+ double d;
+ __get_vconf_value(key, NULL, NULL, &d);
+ retvm_if(d == *dvalue, false, "Value already set");
ret = preference_set_double(key, *dvalue);
warn_if(ret != PREFERENCE_ERROR_NONE, "Failed to update %s value.", key);
} else {
ad->manage_options_state[MANAGE_OPT_KEYS] = DEFAULT_MANAGE_KEYS;
ad->manage_options_state[MANAGE_OPT_EDITTEXT] = DEFAULT_MANAGE_EDITTEXT;
- __get_vconf_value(VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_SCAN, &ad->auto_scan, NULL, NULL);
+ __get_vconf_value(VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_SCAN_ENABLED, &ad->auto_scan, NULL, NULL);
__get_vconf_value(VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_SCAN_INT, NULL, NULL, &ad->auto_scan_interval);
__get_vconf_value(VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_NUM_OF_SCANS, NULL, &ad->auto_scan_num, NULL);
__get_vconf_value(VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_SCAN_METHOD, NULL, (int *)&ad->scan_method, NULL);
SETTING_TRACE_END;
}
+static void __auto_scan_menu_item_selected(void *data, Evas_Object *obj, void *event_info)
+{
+ SETTING_TRACE_BEGIN;
+ retm_if(event_info == NULL, "Invalid argument: event_info is NULL");
+ Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+
+ Setting_GenGroupItem_Data *list_item = elm_object_item_data_get(item);
+ setting_retm_if(list_item == NULL, "Data parameter is NULL");
+ setting_update_gl_item_chk_status(list_item, list_item->chk_status ? 0 : 1);
+
+ SettingAccessibility *ad = (SettingAccessibility *)list_item->userdata;
+ ad->auto_scan = list_item->chk_status;
+ elm_object_item_disabled_set(ad->universal_switch_auto_scan_int->item, (Eina_Bool)!ad->auto_scan);
+ elm_object_item_disabled_set(ad->universal_switch_scans_num->item, (Eina_Bool)!ad->auto_scan);
+ elm_object_item_disabled_set(ad->universal_switch_pause_on_first->item, (Eina_Bool)!ad->auto_scan);
+ elm_object_item_disabled_set(ad->universal_switch_auto_move_int->item, (Eina_Bool)ad->auto_scan);
+
+ __update_vconf_value(VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_SCAN_ENABLED, (bool *)&list_item->chk_status, NULL, NULL);
+ SETTING_TRACE_END;
+}
+
static void __create_scanning_group(SettingAccessibility *ad, Evas_Object *genlist)
{
SETTING_TRACE_BEGIN;
setting_create_Gendial_field_titleItem(genlist, &itc_group_item, DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_GROUP_SCANNING, NULL);
- __add_menu_item(ad, genlist, _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_GROUP_SCANNING_AUTO_SCAN), NULL, NULL, true, ad->auto_scan, __auto_scan_checkbox_cb);
+ Setting_GenGroupItem_Data *item = __add_menu_item(ad, genlist, _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_GROUP_SCANNING_AUTO_SCAN), NULL, __auto_scan_menu_item_selected, true, ad->auto_scan, __auto_scan_checkbox_cb);
+ int vconf_ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_SCAN_ENABLED, __synchronize_auto_scan_with_vconf, item);
+ if (vconf_ret)
+ SETTING_TRACE_ERROR("FAIL: vconf_notify_key_changed(VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_AUTO_SCAN_ENABLED)");
str = __get_value_unit_text(NULL, &ad->auto_scan_interval, _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_SECONDS), false, NULL);
ad->universal_switch_auto_scan_int = __add_menu_item(ad, genlist, _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_GROUP_SCANNING_AUTO_SCAN_INT), str, __auto_scan_interval_cb, false, false, NULL);
if (ad->universal_switch_auto_move_int)
elm_object_item_disabled_set(ad->universal_switch_auto_move_int->item, (Eina_Bool)ad->auto_scan);
- Setting_GenGroupItem_Data *item = __add_menu_item(ad, genlist, _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_GROUP_ADD_SETTINGS_AUTO_TAP_KBD),
+ __add_menu_item(ad, genlist, _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_GROUP_ADD_SETTINGS_AUTO_TAP_KBD),
_(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_GROUP_ADD_SETTINGS_AUTO_TAP_KBD_SUB), NULL, true, ad->auto_tap_kbd_state, __auto_tap_kbd_checkbox_cb);
-
- if (item)
- elm_object_item_disabled_set(item->item, EINA_TRUE);
}
static void __create_feedback_group(SettingAccessibility *ad, Evas_Object *genlist)
_(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_OFF));
ad->universal_switch_feedback_sound = __add_menu_item(ad, genlist, _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_GROUP_FEEDBACK_SOUND),
str, __feedback_sound_cb, true, ad->feedback_sound_state, __feedback_sound_checkbox_cb);
+ int vconf_ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_SOUND_STATE, __synchronize_sound_feedback_with_vconf, ad->universal_switch_feedback_sound);
+ if (vconf_ret)
+ SETTING_TRACE_ERROR("FAIL: vconf_notify_key_changed(VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_SOUND_STATE)");
str = __get_boolean_text(ad->feedback_voice_state, _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_ON),
_(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_OFF));
ad->universal_switch_feedback_voice = __add_menu_item(ad, genlist, _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_GROUP_FEEDBACK_VOICE),
str, __feedback_voice_cb, true, ad->feedback_voice_state, __feedback_voice_checkbox_cb);
+ vconf_ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_VOICE_STATE, __synchronize_voice_feedback_with_vconf, ad->universal_switch_feedback_voice);
+ if (vconf_ret)
+ SETTING_TRACE_ERROR("FAIL: vconf_notify_key_changed(VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_FEEDBACK_VOICE_STATE)");
}
static void __create_manage_group(SettingAccessibility *ad, Evas_Object *genlist)
_(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_GROUP_MANAGE_SUB), __manage_options_cb, false, false, NULL);
}
-void setting_accessibility_universal_switch_settings_page_create(SettingAccessibility *ad)
+void setting_accessibility_universal_switch_settings_page_create(SettingAccessibility *data)
{
SETTING_TRACE_BEGIN;
+ SettingAccessibility *ad = data;
retm_if(ad == NULL, "Input parameter is NULL");
+ ad->md.naviframe_it = NULL;
Evas_Object *genlist = elm_genlist_add(ad->md.naviframe);
retm_if(genlist == NULL, "Cannot set genlist object as content of layout");
__create_manage_group(ad, genlist);
Elm_Object_Item *navi_it = elm_naviframe_item_push(ad->md.naviframe, _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS), NULL, NULL, genlist, NULL);
+ elm_naviframe_item_pop_cb_set(navi_it, __naviframe_pop_cb, ad);
elm_object_item_domain_text_translatable_set(navi_it, SETTING_PACKAGE, EINA_TRUE);
Evas_Object *back_btn = setting_create_button(ad->md.naviframe, NULL, NAVI_BACK_ARROW_BUTTON_STYLE, __back_cb, ad);
#include "setting-accessibility-universal-switch-settings.h"
#include "setting-accessibility-universal-switch-add-switch.h"
#include "setting-accessibility-universal-switch-remove-switch.h"
+#include "setting-accessibility-universal-switch-update-switch.h"
-static void __update_genlist(SettingAccessibility *ad, Evas_Object *genlist);
+static void __update_switches_list(SettingAccessibility *ad, Evas_Object *genlist);
static void __back_cb(void *data, Evas_Object *obj, void *event_info)
{
SETTING_TRACE_BEGIN;
retm_if(data == NULL, "Data argument is NULL");
- SettingAccessibility *ad = (SettingAccessibility *)data;
+ SettingAccessibility *ad = data;
+
+ elm_naviframe_item_pop(ad->md.naviframe);
+
+ SETTING_TRACE_END;
+}
+
+static Eina_Bool __naviframe_pop_cb(void *data, Elm_Object_Item *it)
+{
+ SETTING_TRACE_BEGIN;
+ retv_if(data == NULL, EINA_TRUE);
+ SettingAccessibility *ad = data;
if (ad->universal_switch_switches_back)
ad->universal_switch_switches_back(ad);
ad->universal_switch_switches_back = NULL;
ad->universal_switch_switches = NULL;
- elm_naviframe_item_pop(ad->md.naviframe);
+ ad->md.naviframe_it = NULL;
SETTING_TRACE_END;
+ return EINA_TRUE;
}
-static Setting_GenGroupItem_Data *__add_menu_item(SettingAccessibility *ad, Evas_Object *genlist, const char *main_text, const char *sub_text,
- setting_call_back_func item_cb, bool chk, bool chk_state, setting_call_back_func chk_cb)
+static Setting_GenGroupItem_Data *__add_mapped_switch_menu_item(SettingAccessibility *ad, Evas_Object *genlist, const char *main_text,
+ const char *sub_text, setting_call_back_func item_cb, void *user_data)
{
SETTING_TRACE_BEGIN;
retvm_if(ad == NULL, NULL, "Input argument is NULL");
retvm_if(genlist == NULL, NULL, "Input genlist argument is NULL");
- int item_type = SWALLOW_Type_INVALID;
Setting_GenGroupItem_Data *item;
- if (chk)
- item_type = SWALLOW_Type_1ICON_1RADIO;
-
item = setting_create_Gendial_field_def(genlist, &itc_2text_1icon_3,
item_cb, ad,
- item_type, NULL, NULL, (int)chk_state,
+ SWALLOW_Type_INVALID, NULL, NULL, 0,
main_text, sub_text,
- chk_cb);
+ NULL);
if (item)
- item->userdata = ad;
+ item->userdata = user_data;
SETTING_TRACE_END;
return item;
}
-static void __switch_click_cb(void *data, Evas_Object *obj, void *event_info)
+void setting_accessibility_universal_switch_add_switch_cb(SettingAccessibility *ad, const char *switch_id, switch_action_t switch_action, const char *switch_name)
{
SETTING_TRACE_BEGIN;
- elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
- retm_if(data == NULL, "Data argument is NULL");
+ retm_if(ad == NULL, "Input parameter is NULL");
- //TODO: add functionality
+ SETTING_TRACE_DEBUG("Add switch, id: %s, name: %s, action: %s.", switch_id, switch_name, switch_action);
+ setting_accessibility_universal_switch_dbus_config_addSwitchConfigurationItem(&ad->config, switch_id, switch_name, switch_action);
+ __update_switches_list(ad, ad->universal_switch_switches);
SETTING_TRACE_END;
}
-static void __new_switch_added_cb(SettingAccessibility *ad, const char *switch_id, switch_action_t switch_action, const char *switch_name)
+
+static void __switch_removed_cb(SettingAccessibility *ad, const char *switch_id, switch_action_t switch_action, const char *switch_name)
{
SETTING_TRACE_BEGIN;
retm_if(ad == NULL, "Input parameter is NULL");
- SETTING_TRACE_DEBUG("New switch added, id: %s, name: %s, action: %s.", switch_id, switch_name, switch_action);
- setting_accessibility_universal_switch_dbus_config_addSwitchConfigurationItem(&ad->config, switch_id, switch_name, switch_action);
- __update_genlist(ad, ad->universal_switch_switches);
+ SETTING_TRACE_DEBUG("Switch removed, name: %s, id: %s, action: %s.", switch_name, switch_id, switch_action);
+ setting_accessibility_universal_switch_dbus_config_removeSwitchConfigurationItem(&ad->config, switch_id);
+ __update_switches_list(ad, ad->universal_switch_switches);
SETTING_TRACE_END;
}
-
-static void __switch_removed_cb(SettingAccessibility *ad, const char *switch_id, switch_action_t switch_action, const char *switch_name)
+static void __switch_updated_cb(SettingAccessibility *ad, const char *switch_id, switch_action_t switch_action, const char *switch_name)
{
SETTING_TRACE_BEGIN;
retm_if(ad == NULL, "Input parameter is NULL");
- SETTING_TRACE_DEBUG("Switch removed, name: %s, id: %s, action: %s.", switch_name, switch_id, switch_action);
- setting_accessibility_universal_switch_dbus_config_removeSwitchConfigurationItem(&ad->config, switch_id);
- __update_genlist(ad, ad->universal_switch_switches);
+ SETTING_TRACE_DEBUG("Switch updated, id: %s, name: %s, action: %s.", switch_id, switch_name, switch_action);
+ setting_accessibility_universal_switch_dbus_config_updateSwitchConfigurationItem(&ad->config, switch_id, switch_name, switch_action);
+ __update_switches_list(ad, ad->universal_switch_switches);
+
+ SETTING_TRACE_END;
+}
+
+static void __switch_click_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ SETTING_TRACE_BEGIN;
+ Elm_Object_Item *item = event_info;
+
+ elm_genlist_item_selected_set(item, EINA_FALSE);
+ retm_if(data == NULL, "Data argument is NULL");
+
+ Setting_GenGroupItem_Data *list_item = elm_object_item_data_get(item);
+ UniversalSwitchConfigurationItem *config_item = list_item->userdata;
+
+ SettingAccessibility *ad = data;
+ setting_accessibility_universal_switch_update_switch_callback_attach(ad, __switch_updated_cb);
+ setting_accessibility_universal_switch_update_switch_page_create(ad, config_item);
SETTING_TRACE_END;
}
SETTING_TRACE_BEGIN;
elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
retm_if(data == NULL, "Data argument is NULL");
- SettingAccessibility *ad = (SettingAccessibility *)data;
+ SettingAccessibility *ad = data;
- setting_accessibility_universal_switch_add_switch_new_switch_callback_attach(ad, __new_switch_added_cb);
+ setting_accessibility_universal_switch_add_switch_new_switch_callback_attach(ad, setting_accessibility_universal_switch_add_switch_cb);
setting_accessibility_universal_switch_add_switch_page_create(ad);
SETTING_TRACE_END;
}
-static void __delete_click_cb(void *data, Evas_Object *obj, void *event_info)
+static void __create_remove_page_cb(void *data, Evas_Object *obj, void *event_info)
{
SETTING_TRACE_BEGIN;
retm_if(data == NULL, "Data argument is NULL");
- SettingAccessibility *ad = (SettingAccessibility *)data;
+ SettingAccessibility *ad = data;
setting_accessibility_universal_switch_remove_switch_page_create(ad);
setting_accessibility_universal_switch_remove_switch_callback_attach(ad, __switch_removed_cb);
UniversalSwitchConfigurationItem *config_item;
int i;
EINA_ARRAY_ITER_NEXT(ad->config.configuration_items, i, config_item, iterator) {
- SETTING_TRACE_DEBUG("Switch: %d. switch_id: %s, user_name: %s, activity_type: %s.", i, config_item->switch_id, config_item->user_name, config_item->activity_type);
+ SETTING_TRACE_DEBUG("Switch: %d. switch_id: %s, provider_id: %s, user_name: %s, activity_type: %s.", i, config_item->switch_id, config_item->provider_id, config_item->user_name, config_item->activity_type);
const char * activity_name = setting_accessibility_universal_switch_dbus_config_get_activity_name(&ad->config, config_item->activity_type);
- __add_menu_item(ad, genlist, config_item->user_name, activity_name, __switch_click_cb, false, false, NULL);
+ __add_mapped_switch_menu_item(ad, genlist, config_item->user_name, activity_name, __switch_click_cb, config_item);
}
SETTING_TRACE_END;
}
-static void __create_modify_switch_group(SettingAccessibility *ad, Evas_Object *genlist)
+static void __create_add_switch_button_in_genlist(SettingAccessibility *ad, Evas_Object *genlist)
{
SETTING_TRACE_BEGIN;
retm_if(ad == NULL, "Input argument is NULL");
- Setting_GenGroupItem_Data * item = setting_create_Gendial_field_def(genlist, &itc_2text_1icon_3,
+ Setting_GenGroupItem_Data *item = setting_create_Gendial_field_def(genlist, &itc_1text_1icon_3,
__add_switch_click_cb, ad,
SWALLOW_Type_1ICON_1IMAGE, ACCESSIBILITY_UNIVERSAL_SWITCH_PLUS_ICON, NULL, 0,
_(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_GROUP_SWITCHES_ADD_SWITCH), NULL,
SETTING_TRACE_END;
}
-static void __update_genlist(SettingAccessibility *ad, Evas_Object *genlist)
+static void __update_switches_list(SettingAccessibility *ad, Evas_Object *genlist)
{
SETTING_TRACE_BEGIN;
retm_if(ad == NULL, "Input argument is NULL");
elm_genlist_clear(genlist);
__create_switches_group(ad, genlist);
- __create_modify_switch_group(ad, genlist);
+ __create_add_switch_button_in_genlist(ad, genlist);
+ elm_object_disabled_set(ad->remove_switches_page_button, eina_array_count_get(ad->config.configuration_items) == 0);
SETTING_TRACE_END;
}
Evas_Object *genlist = elm_genlist_add(ad->md.naviframe);
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");
-
- __update_genlist(ad, genlist);
- ad->universal_switch_switches = genlist;
-
- Elm_Object_Item *navi_it = elm_naviframe_item_push(ad->md.naviframe, _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_GROUP_SWITCHES), NULL, NULL, genlist, NULL);
- elm_object_item_domain_text_translatable_set(navi_it, SETTING_PACKAGE, EINA_TRUE);
-
+ ad->md.naviframe_it = elm_naviframe_item_push(ad->md.naviframe, _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_GROUP_SWITCHES), NULL, NULL, genlist, NULL);
+ elm_naviframe_item_pop_cb_set(ad->md.naviframe_it, __naviframe_pop_cb, ad);
+ elm_object_item_domain_text_translatable_set(ad->md.naviframe_it, SETTING_PACKAGE, EINA_TRUE);
Evas_Object *back_btn = setting_create_button(ad->md.naviframe, NULL, NAVI_BACK_ARROW_BUTTON_STYLE, __back_cb, ad);
elm_layout_content_set(ad->md.naviframe, "prev_btn", back_btn);
- Evas_Object *delete_btn = setting_create_button(ad->md.naviframe, _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS_GROUP_SWITCHES_DELETE), "naviframe/title_right", __delete_click_cb, ad);
- elm_layout_content_set(ad->md.naviframe, "title_right_btn", delete_btn);
+ ad->remove_switches_page_button = setting_create_button(ad->md.naviframe, _(DEVOPTION_STR_ACCESSIBILITY_DELETE_CAPS), "naviframe/title_right", __create_remove_page_cb, ad);
+ elm_layout_content_set(ad->md.naviframe, "title_right_btn", ad->remove_switches_page_button);
+
+ elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
+ elm_object_style_set(genlist, "dialogue");
+
+ __update_switches_list(ad, genlist);
+ ad->universal_switch_switches = genlist;
SETTING_TRACE_END;
}
--- /dev/null
+/*
+ * accessibility
+ *
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ *
+ * Contact: Pawel Kurowski <p.kurowski2@samsung.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "setting-accessibility-universal-switch-update-switch.h"
+#include "setting-accessibility-universal-switch-action.h"
+#include "setting-accessibility-universal-switch-settings-set-value.h"
+
+static void __update_switch_action_cb(SettingAccessibility *ad, switch_action_t action, void *user_data)
+{
+ SETTING_TRACE_BEGIN;
+
+ if (ad->switch_updated_cb) {
+ UniversalSwitchConfigurationItem *config_item = user_data;
+ ad->switch_updated_cb(ad, config_item->switch_id, action, config_item->user_name);
+ }
+
+ SETTING_TRACE_END;
+}
+
+void setting_accessibility_universal_switch_update_switch_page_create(SettingAccessibility *ad, UniversalSwitchConfigurationItem *config_item)
+{
+ SETTING_TRACE_BEGIN;
+ retm_if(ad == NULL, "Input parameter is NULL");
+
+ if (strlen(config_item->provider_id) == strlen(ACCESSIBILITY_UNIVERSAL_SWITCH_ACCESSORIES_SWITCH_PROVIDER)
+ && !strncmp(config_item->provider_id, ACCESSIBILITY_UNIVERSAL_SWITCH_ACCESSORIES_SWITCH_PROVIDER, strlen(ACCESSIBILITY_UNIVERSAL_SWITCH_ACCESSORIES_SWITCH_PROVIDER)) != 0) {
+
+ ad->config_item_to_update.activity_type = strdup(config_item->activity_type);
+ ad->config_item_to_update.switch_id = strdup(config_item->switch_id);
+ ad->config_item_to_update.user_name = strdup(config_item->user_name);
+ setting_accessibility_universal_switch_settings_create_update_accesories_switch_page(ad);
+ } else {
+ setting_accessibility_universal_switch_action_page_create(ad);
+ setting_accessibility_universal_switch_action_callback_attach(ad, __update_switch_action_cb, config_item);
+ }
+
+ SETTING_TRACE_END;
+}
+
+void setting_accessibility_universal_switch_update_switch_callback_attach(SettingAccessibility *ad, universal_switch_updated_cb cb)
+{
+ SETTING_TRACE_BEGIN;
+ retm_if(ad == NULL, "Input parameter is NULL");
+
+ ad->switch_updated_cb = cb;
+
+ SETTING_TRACE_END;
+}
#include "setting-accessibility-universal-switch-settings.h"
#include "setting-accessibility-universal-switch-add-switch.h"
#include "setting-accessibility-universal-switch-action.h"
+#include "setting-accessibility-universal-switch-switches.h"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_UNIVERSAL_SWITCH_STATE "db/setting/accessibility/universal-switch"
static void __universal_switch_vconf_key_update(int state, void* data);
static bool __universal_switch_state_set(bool state);
SETTING_TRACE_END;
}
-static void __universal_switch_settings_mouse_up_Gendial_list_cb(void *data, Evas_Object *obj, void *event_info)
-{
- SETTING_TRACE_BEGIN;
- retm_if(data == NULL, "Invalid argument: data is NULL");
-
- elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
- setting_accessibility_universal_switch_settings_page_create((SettingAccessibility *)data);
-
- SETTING_TRACE_END;
-}
-
-static Eina_Bool __universal_switch_page_hide_cb(void *data, Elm_Object_Item *it)
+static Eina_Bool __naviframe_pop_cb(void *data, Elm_Object_Item *it)
{
SETTING_TRACE_BEGIN;
return EINA_TRUE;
}
-static void __universal_switch_back_cb(void *data, Evas_Object *obj, void *event_info)
+static void __back_cb(void *data, Evas_Object *obj, void *event_info)
{
SETTING_TRACE_BEGIN;
retm_if(data == NULL, "Data argument is NULL");
break;
}
- if (ad->popup) {
- evas_object_del(ad->popup);
- ad->popup = NULL;
- }
+ evas_object_del(ad->popup);
+ ad->popup = NULL;
SETTING_TRACE_END;
}
{
SETTING_TRACE_BEGIN;
retm_if(ad == NULL, "Input parameter is NULL");
+ setting_accessibility_universal_switch_add_switch_cb(ad, switch_id, switch_action, switch_name);
int switch_count = setting_accessibility_universal_switch_dbus_config_get_switch_count(&ad->config);
if (switch_count == 1)
if (state && switch_count == 0) {
elm_check_state_set(ad->universal_switch_off_checkbox->eo_check, EINA_FALSE);
+ ad->md.naviframe_it = elm_naviframe_top_item_get(ad->md.naviframe);
ad->popup = setting_create_popup(data, ad->md.window,
NULL, "To turn on Universal switch, tap ADD SWITCH and add at least one switch",
__universal_switch_popup_response_cb, 0,
true,
true,
- 2, DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_POPUP_ADD, DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_POPUP_CANCEL);
+ 2, DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_POPUP_ADD, DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_CANCEL);
} else {
__universal_switch_state_set(state);
}
ad->universal_switch_off_checkbox->keyStr = strdup(item_label);
}
- elm_object_item_disabled_set(ad->universal_switch_settings->item, !state);
+ setting_update_gl_item_chk_status(ad->universal_switch_off_checkbox, (int) state);
elm_genlist_item_update(ad->universal_switch_off_checkbox->item);
- elm_genlist_item_update(ad->universal_switch_settings->item);
SETTING_TRACE_END;
}
SETTING_TRACE_END;
}
+static void __create_settings_page(void *data, Evas_Object *obj, void *event_info)
+{
+ SETTING_TRACE_BEGIN;
+ SettingAccessibility *ad = data;
+ retm_if(ad == NULL, "Input parameter is NULL");
+
+ setting_accessibility_universal_switch_settings_page_create(ad);
+
+ SETTING_TRACE_END;
+}
+
void setting_accessibility_universal_switch_page_create(SettingAccessibility *data)
{
+ SETTING_TRACE_BEGIN;
int ret;
int state = false;
SettingAccessibility *ad = (SettingAccessibility *)data;
+ ad->md.naviframe_it = NULL;
Evas_Object *genlist = elm_genlist_add(ad->md.naviframe);
retm_if(genlist == NULL, "Cannot set genlist object as content of layout");
elm_genlist_item_select_mode_set(ad->universal_switch_comment->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
}
- ad->universal_switch_settings = setting_create_Gendial_field_def(
- genlist, &itc_1text,
- __universal_switch_settings_mouse_up_Gendial_list_cb,
- ad, SWALLOW_Type_INVALID, NULL,
- NULL, 0,
- _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH_SETTINGS),
- NULL, NULL);
+ ad->md.naviframe_it = elm_naviframe_item_push(ad->md.naviframe, _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH), NULL, NULL, genlist, NULL);
+ elm_object_item_domain_text_translatable_set(ad->md.naviframe_it, SETTING_PACKAGE, EINA_TRUE);
+ elm_naviframe_item_pop_cb_set(ad->md.naviframe_it, __naviframe_pop_cb, ad);
- if (ad->universal_switch_settings) {
- ad->universal_switch_settings->userdata = ad;
- __universal_switch_state_display(ad, state);
- __BACK_POINTER_SET(ad->universal_switch_settings);
- }
+ char *title_str;
+ char *str1 = "<font_size=30>";
+ char *str2 = _(DEVOPTION_STR_ACCESSIBILITY_SETTINGS_CAPS);
+ char *str3 = "</font_size>";
+ size_t title_size = strlen(str1) + strlen(str2) + strlen(str3) + 1;
+ if ((title_str = malloc(title_size)) != NULL)
+ snprintf(title_str, title_size, "%s%s%s", str1, str2, str3);
- Elm_Object_Item *navi_it = elm_naviframe_item_push(ad->md.naviframe, _(DEVOPTION_STR_ACCESSIBILITY_UNIVERSAL_SWITCH), NULL, NULL, genlist, NULL);
- elm_object_item_domain_text_translatable_set(navi_it, SETTING_PACKAGE, EINA_TRUE);
- elm_naviframe_item_pop_cb_set(navi_it, __universal_switch_page_hide_cb, ad);
+ Evas_Object *settings_button = setting_create_button(ad->md.naviframe, title_str, "naviframe/title_right", __create_settings_page, ad);
+ elm_layout_content_set(ad->md.naviframe, "title_right_btn", settings_button);
+ free(title_str);
- Evas_Object *back_btn = setting_create_button(ad->md.naviframe, NULL, NAVI_BACK_ARROW_BUTTON_STYLE, __universal_switch_back_cb, ad);
+ Evas_Object *back_btn = setting_create_button(ad->md.naviframe, NULL, NAVI_BACK_ARROW_BUTTON_STYLE, __back_cb, ad);
elm_layout_content_set(ad->md.naviframe, "prev_btn", back_btn);
+ SETTING_TRACE_END;
}