Refactoring the code to append genlist item 95/94595/1
authorJihoon Kim <jihoon48.kim@samsung.com>
Tue, 1 Nov 2016 00:39:58 +0000 (09:39 +0900)
committerJihoon Kim <jihoon48.kim@samsung.com>
Tue, 1 Nov 2016 00:40:02 +0000 (09:40 +0900)
Change-Id: I9b4eac4c6fe0ba183539b2d4a609bd16086d4b43
Signed-off-by: Jihoon Kim <jihoon48.kim@samsung.com>
src/option.cpp

index af533fa..13ec31e 100644 (file)
@@ -810,13 +810,32 @@ static void add_padding_area(Evas_Object *genlist)
 }
 #endif
 
+static Elm_Object_Item * append_item(Evas_Object *genlist, enum SETTING_ITEM_ID id, const char *main_text, const char *sub_text, void *cb_data, Elm_Genlist_Item_Class *itc, Eina_Bool display_only)
+{
+    Elm_Object_Item *item = NULL;
+
+    if (main_text)
+        strncpy(main_itemdata[id].main_text, main_text, ITEM_DATA_STRING_LEN - 1);
+
+    if (sub_text)
+        strncpy(main_itemdata[id].sub_text, sub_text, ITEM_DATA_STRING_LEN - 1);
+
+    main_itemdata[id].mode = id;
+    item = elm_genlist_item_append(genlist, itc, &main_itemdata[id],
+            NULL, ELM_GENLIST_ITEM_NONE, _main_gl_sel, cb_data);
+
+    if (display_only)
+        elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+    return item;
+}
+
 Evas_Object* create_option_main_view(Evas_Object *parent, Evas_Object *naviframe, SCLOptionWindowType type)
 {
     Evas_Object *genlist = NULL;
     if (CHECK_ARRAY_INDEX(type, OPTION_WINDOW_TYPE_MAX)) {
         create_genlist_item_classes(type);
 
-        Elm_Object_Item *item = NULL;
         genlist = elm_genlist_add(naviframe);
         evas_object_paragraph_direction_set(genlist, EVAS_BIDI_DIRECTION_NEUTRAL);
         option_elements[type].genlist = genlist;
@@ -840,11 +859,7 @@ Evas_Object* create_option_main_view(Evas_Object *parent, Evas_Object *naviframe
 #endif
 
         /* Input languages */
-        strncpy(main_itemdata[SETTING_ITEM_ID_INPUT_LANGUAGE_TITLE].main_text, INPUT_LANGUAGE, ITEM_DATA_STRING_LEN - 1);
-        main_itemdata[SETTING_ITEM_ID_INPUT_LANGUAGE_TITLE].mode = SETTING_ITEM_ID_INPUT_LANGUAGE_TITLE;
-        item = elm_genlist_item_append(genlist, option_elements[type].itc_group_title, &main_itemdata[SETTING_ITEM_ID_INPUT_LANGUAGE_TITLE],
-            NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
-        elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+        append_item(genlist, SETTING_ITEM_ID_INPUT_LANGUAGE_TITLE, INPUT_LANGUAGE, NULL, NULL, option_elements[type].itc_group_title, EINA_TRUE);
 
         for (unsigned int loop = 0; loop < OPTION_MAX_LANGUAGES && loop < _language_manager.get_languages_num(); loop++)
         {
@@ -870,88 +885,51 @@ Evas_Object* create_option_main_view(Evas_Object *parent, Evas_Object *naviframe
 
         if (_language_manager.get_languages_num() > 1) {
             /* Select input languages */
-            strncpy(main_itemdata[SETTING_ITEM_ID_SELECT_INPUT_LANGUAGE].main_text, SELECT_LANGUAGES, ITEM_DATA_STRING_LEN - 1);
-            main_itemdata[SETTING_ITEM_ID_SELECT_INPUT_LANGUAGE].mode = SETTING_ITEM_ID_SELECT_INPUT_LANGUAGE;
-            option_elements[type].languages_item =
-                elm_genlist_item_append(genlist, option_elements[type].itc_1text_main_item, &main_itemdata[SETTING_ITEM_ID_SELECT_INPUT_LANGUAGE],
-                    NULL, ELM_GENLIST_ITEM_NONE, _main_gl_sel, (void*)(main_itemdata[SETTING_ITEM_ID_SELECT_INPUT_LANGUAGE].mode));
+            option_elements[type].languages_item = append_item(genlist, SETTING_ITEM_ID_SELECT_INPUT_LANGUAGE, SELECT_LANGUAGES, NULL, (void *)SETTING_ITEM_ID_SELECT_INPUT_LANGUAGE, option_elements[type].itc_1text_main_item, EINA_FALSE);
         }
 
 #ifndef _WEARABLE
         /* Smart input functions */
-        strncpy(main_itemdata[SETTING_ITEM_ID_SMART_INPUT_TITLE].main_text, SMART_FUNCTIONS, ITEM_DATA_STRING_LEN - 1);
-        main_itemdata[SETTING_ITEM_ID_SMART_INPUT_TITLE].mode = SETTING_ITEM_ID_SMART_INPUT_TITLE;
-        item = elm_genlist_item_append(genlist, option_elements[type].itc_group_title, &main_itemdata[SETTING_ITEM_ID_SMART_INPUT_TITLE],
-            NULL, ELM_GENLIST_ITEM_NONE, _main_gl_sel, NULL);
-        elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+        append_item(genlist, SETTING_ITEM_ID_SMART_INPUT_TITLE, SMART_FUNCTIONS, NULL, NULL, option_elements[type].itc_group_title, EINA_TRUE);
 
         /* Auto capitalize */
-        strncpy(main_itemdata[SETTING_ITEM_ID_AUTO_CAPITALISE].main_text, AUTO_CAPITALISE, ITEM_DATA_STRING_LEN - 1);
-        strncpy(main_itemdata[SETTING_ITEM_ID_AUTO_CAPITALISE].sub_text, CAPITALISE_DESC, ITEM_DATA_STRING_LEN - 1);
-        main_itemdata[SETTING_ITEM_ID_AUTO_CAPITALISE].mode = SETTING_ITEM_ID_AUTO_CAPITALISE;
-        elm_genlist_item_append(genlist, option_elements[type].itc_multi_item, &main_itemdata[SETTING_ITEM_ID_AUTO_CAPITALISE],
-            NULL, ELM_GENLIST_ITEM_NONE, _main_gl_sel, (void *)(main_itemdata[SETTING_ITEM_ID_AUTO_CAPITALISE].mode));
+        append_item(genlist, SETTING_ITEM_ID_AUTO_CAPITALISE, AUTO_CAPITALISE, CAPITALISE_DESC, (void *)SETTING_ITEM_ID_AUTO_CAPITALISE, option_elements[type].itc_multi_item, EINA_FALSE);
 
         /* Auto punctuate */
-        strncpy(main_itemdata[SETTING_ITEM_ID_AUTO_PUNCTUATE].main_text, AUTO_PUNCTUATE, ITEM_DATA_STRING_LEN - 1);
-        strncpy(main_itemdata[SETTING_ITEM_ID_AUTO_PUNCTUATE].sub_text, PUNCTUATE_DESC, ITEM_DATA_STRING_LEN - 1);
-        main_itemdata[SETTING_ITEM_ID_AUTO_PUNCTUATE].mode = SETTING_ITEM_ID_AUTO_PUNCTUATE;
-        elm_genlist_item_append(genlist, option_elements[type].itc_multi_item, &main_itemdata[SETTING_ITEM_ID_AUTO_PUNCTUATE],
-            NULL, ELM_GENLIST_ITEM_NONE, _main_gl_sel, (void *)(main_itemdata[SETTING_ITEM_ID_AUTO_PUNCTUATE].mode));
+        append_item(genlist, SETTING_ITEM_ID_AUTO_PUNCTUATE, AUTO_PUNCTUATE, PUNCTUATE_DESC, (void *)SETTING_ITEM_ID_AUTO_PUNCTUATE, option_elements[type].itc_multi_item, EINA_FALSE);
 
         /* Key-tap feedback */
-        strncpy(main_itemdata[SETTING_ITEM_ID_KEY_TAP_TITLE].main_text, KEY_FEEDBACK, ITEM_DATA_STRING_LEN - 1);
-        main_itemdata[SETTING_ITEM_ID_KEY_TAP_TITLE].mode = SETTING_ITEM_ID_KEY_TAP_TITLE;
-        item = elm_genlist_item_append(genlist, option_elements[type].itc_group_title, &main_itemdata[SETTING_ITEM_ID_KEY_TAP_TITLE],
-            NULL, ELM_GENLIST_ITEM_NONE, _main_gl_sel, NULL);
-        elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+        append_item(genlist, SETTING_ITEM_ID_KEY_TAP_TITLE, KEY_FEEDBACK, NULL, NULL, option_elements[type].itc_group_title, EINA_TRUE);
 
         /* Sound */
-        strncpy(main_itemdata[SETTING_ITEM_ID_SOUND].main_text, SOUND, ITEM_DATA_STRING_LEN - 1);
-        main_itemdata[SETTING_ITEM_ID_SOUND].mode = SETTING_ITEM_ID_SOUND;
-        elm_genlist_item_append(genlist, option_elements[type].itc_main_item, &main_itemdata[SETTING_ITEM_ID_SOUND],
-            NULL, ELM_GENLIST_ITEM_NONE, _main_gl_sel, (void *)(main_itemdata[SETTING_ITEM_ID_SOUND].mode));
+        append_item(genlist, SETTING_ITEM_ID_SOUND, SOUND, NULL, (void *)SETTING_ITEM_ID_SOUND, option_elements[type].itc_main_item, EINA_FALSE);
 
         /* Character preview */
-        strncpy(main_itemdata[SETTING_ITEM_ID_CHARACTER_PRE].main_text, CHARACTER_PREVIEW, ITEM_DATA_STRING_LEN - 1);
-        strncpy(main_itemdata[SETTING_ITEM_ID_CHARACTER_PRE].sub_text, PREVIEW_DESC, ITEM_DATA_STRING_LEN - 1);
-        main_itemdata[SETTING_ITEM_ID_CHARACTER_PRE].mode = SETTING_ITEM_ID_CHARACTER_PRE;
-        elm_genlist_item_append(genlist, option_elements[type].itc_multi_item, &main_itemdata[SETTING_ITEM_ID_CHARACTER_PRE],
-            NULL, ELM_GENLIST_ITEM_NONE, _main_gl_sel, (void *)(main_itemdata[SETTING_ITEM_ID_CHARACTER_PRE].mode));
+        append_item(genlist, SETTING_ITEM_ID_CHARACTER_PRE, CHARACTER_PREVIEW, PREVIEW_DESC, (void *)SETTING_ITEM_ID_CHARACTER_PRE, option_elements[type].itc_multi_item, EINA_FALSE);
 #endif
 
+        const char *more_setting_text = NULL;
+
 #ifdef _WEARABLE
         /* More settings */
-        strncpy(main_itemdata[SETTING_ITEM_ID_MORE_SETTINGS_TITLE].main_text, MORE_SETTINGS, ITEM_DATA_STRING_LEN - 1);
+        more_setting_text = MORE_SETTINGS;
 #else
         /* Other settings */
-        strncpy(main_itemdata[SETTING_ITEM_ID_MORE_SETTINGS_TITLE].main_text, OTHER_SETTINGS, ITEM_DATA_STRING_LEN - 1);
+        more_setting_text = OTHER_SETTINGS;
 #endif
 
-        main_itemdata[SETTING_ITEM_ID_MORE_SETTINGS_TITLE].mode = SETTING_ITEM_ID_MORE_SETTINGS_TITLE;
-        item = elm_genlist_item_append(genlist, option_elements[type].itc_group_title, &main_itemdata[SETTING_ITEM_ID_MORE_SETTINGS_TITLE],
-            NULL, ELM_GENLIST_ITEM_NONE, _main_gl_sel, NULL);
-        elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+        append_item(genlist, SETTING_ITEM_ID_MORE_SETTINGS_TITLE, more_setting_text, NULL, NULL, option_elements[type].itc_group_title, EINA_TRUE);
 
 #ifdef _WEARABLE
         /* Smart typing */
-        strncpy(main_itemdata[SETTING_ITEM_ID_SMART_INPUT_TITLE].main_text, SMART_TYPING, ITEM_DATA_STRING_LEN - 1);
-        main_itemdata[SETTING_ITEM_ID_SMART_INPUT_TITLE].mode = SETTING_ITEM_ID_SMART_INPUT_TITLE;
-        item = elm_genlist_item_append(genlist, option_elements[type].itc_1text_main_item, &main_itemdata[SETTING_ITEM_ID_SMART_INPUT_TITLE],
-            NULL, ELM_GENLIST_ITEM_NONE, _main_gl_sel, (void *)(main_itemdata[SETTING_ITEM_ID_SMART_INPUT_TITLE].mode));
+        append_item(genlist, SETTING_ITEM_ID_SMART_INPUT_TITLE, SMART_TYPING, NULL, (void *)SETTING_ITEM_ID_SMART_INPUT_TITLE, option_elements[type].itc_1text_main_item, EINA_FALSE);
 
         /* Key-tap feedback */
-        strncpy(main_itemdata[SETTING_ITEM_ID_KEY_TAP_TITLE].main_text, KEY_FEEDBACK, ITEM_DATA_STRING_LEN - 1);
-        main_itemdata[SETTING_ITEM_ID_KEY_TAP_TITLE].mode = SETTING_ITEM_ID_KEY_TAP_TITLE;
-        item = elm_genlist_item_append(genlist, option_elements[type].itc_1text_main_item, &main_itemdata[SETTING_ITEM_ID_KEY_TAP_TITLE],
-            NULL, ELM_GENLIST_ITEM_NONE, _main_gl_sel, (void *)(main_itemdata[SETTING_ITEM_ID_KEY_TAP_TITLE].mode));
+        append_item(genlist, SETTING_ITEM_ID_KEY_TAP_TITLE, KEY_FEEDBACK, NULL, (void *)SETTING_ITEM_ID_KEY_TAP_TITLE, option_elements[type].itc_1text_main_item, EINA_FALSE);
 #endif
 
         /* Reset */
-        strncpy(main_itemdata[SETTING_ITEM_ID_RESET].main_text, RESET, ITEM_DATA_STRING_LEN - 1);
-        main_itemdata[SETTING_ITEM_ID_RESET].mode = SETTING_ITEM_ID_RESET;
-        elm_genlist_item_append(genlist, option_elements[type].itc_1text_main_item, &main_itemdata[SETTING_ITEM_ID_RESET],
-            NULL, ELM_GENLIST_ITEM_NONE, _main_gl_sel, (void *)(main_itemdata[SETTING_ITEM_ID_RESET].mode));
+        append_item(genlist, SETTING_ITEM_ID_RESET, RESET, NULL, (void *)SETTING_ITEM_ID_RESET, option_elements[type].itc_1text_main_item, EINA_FALSE);
 
         evas_object_smart_callback_add(genlist, "contracted", _main_gl_con, genlist);
 
@@ -1052,16 +1030,10 @@ static Evas_Object* create_smart_typing_view(Evas_Object *naviframe)
 #endif
 
         /* Auto capitalize */
-        strncpy(main_itemdata[SETTING_ITEM_ID_AUTO_CAPITALISE].main_text, AUTO_CAPITALISE, ITEM_DATA_STRING_LEN - 1);
-        main_itemdata[SETTING_ITEM_ID_AUTO_CAPITALISE].mode = SETTING_ITEM_ID_AUTO_CAPITALISE;
-        elm_genlist_item_append(genlist, option_elements[type].itc_1text_main_item, &main_itemdata[SETTING_ITEM_ID_AUTO_CAPITALISE],
-            NULL, ELM_GENLIST_ITEM_NONE, _main_gl_sel, (void *)(main_itemdata[SETTING_ITEM_ID_AUTO_CAPITALISE].mode));
+        append_item(genlist, SETTING_ITEM_ID_AUTO_CAPITALISE, AUTO_CAPITALISE, NULL, (void *)SETTING_ITEM_ID_AUTO_CAPITALISE, option_elements[type].itc_1text_main_item, EINA_FALSE);
 
         /* Auto punctuate */
-        strncpy(main_itemdata[SETTING_ITEM_ID_AUTO_PUNCTUATE].main_text, AUTO_PUNCTUATE, ITEM_DATA_STRING_LEN - 1);
-        main_itemdata[SETTING_ITEM_ID_AUTO_PUNCTUATE].mode = SETTING_ITEM_ID_AUTO_PUNCTUATE;
-        elm_genlist_item_append(genlist, option_elements[type].itc_1text_main_item, &main_itemdata[SETTING_ITEM_ID_AUTO_PUNCTUATE],
-            NULL, ELM_GENLIST_ITEM_NONE, _main_gl_sel, (void *)(main_itemdata[SETTING_ITEM_ID_AUTO_PUNCTUATE].mode));
+        append_item(genlist, SETTING_ITEM_ID_AUTO_PUNCTUATE, AUTO_PUNCTUATE, NULL, (void *)SETTING_ITEM_ID_AUTO_PUNCTUATE, option_elements[type].itc_1text_main_item, EINA_FALSE);
 
 #ifdef _CIRCLE
         add_padding_area(genlist);
@@ -1105,16 +1077,10 @@ static Evas_Object* create_feedback_view(Evas_Object *naviframe)
 #endif
 
         /* Sound */
-        strncpy(main_itemdata[SETTING_ITEM_ID_SOUND].main_text, SOUND, ITEM_DATA_STRING_LEN - 1);
-        main_itemdata[SETTING_ITEM_ID_SOUND].mode = SETTING_ITEM_ID_SOUND;
-        elm_genlist_item_append(genlist, option_elements[type].itc_1text_main_item, &main_itemdata[SETTING_ITEM_ID_SOUND],
-            NULL, ELM_GENLIST_ITEM_NONE, _main_gl_sel, (void *)(main_itemdata[SETTING_ITEM_ID_SOUND].mode));
+        append_item(genlist, SETTING_ITEM_ID_SOUND, SOUND, NULL, (void *)SETTING_ITEM_ID_SOUND, option_elements[type].itc_1text_main_item, EINA_FALSE);
 
         /* Vibration */
-        strncpy(main_itemdata[SETTING_ITEM_ID_VIBRATION].main_text, VIBRATION, ITEM_DATA_STRING_LEN - 1);
-        main_itemdata[SETTING_ITEM_ID_VIBRATION].mode = SETTING_ITEM_ID_VIBRATION;
-        elm_genlist_item_append(genlist, option_elements[type].itc_1text_main_item, &main_itemdata[SETTING_ITEM_ID_VIBRATION],
-            NULL, ELM_GENLIST_ITEM_NONE, _main_gl_sel, (void *)(main_itemdata[SETTING_ITEM_ID_VIBRATION].mode));
+        append_item(genlist, SETTING_ITEM_ID_VIBRATION, VIBRATION, NULL, (void *)SETTING_ITEM_ID_VIBRATION, option_elements[type].itc_1text_main_item, EINA_FALSE);
 
 #ifdef _CIRCLE
         add_padding_area(genlist);