fixed N_SE_12778
[apps/core/preloaded/settings.git] / src / setting-plugin.c
index a2537c6..5784285 100755 (executable)
@@ -197,6 +197,7 @@ void setting_drawer_list_fini()
 
 static char* s_pkg_name;
 
+#if 0
 static char* substring(const char* str, size_t begin, size_t len)
 {
   if (str == 0 || strlen(str) == 0 || strlen(str) < begin || strlen(str) < (begin+len))
@@ -204,6 +205,7 @@ static char* substring(const char* str, size_t begin, size_t len)
 
   return strndup(str + begin, len);
 }
+#endif
 
 /**
  * package ID
@@ -960,17 +962,44 @@ static void* editbox_func(void *data, xmlNode *xmlObj)
        const char *title = (char*)xmlGetProp(xmlObj, "title");
        const char *key_str= (char*)xmlGetProp(xmlObj, "value");
 
-       //const char *minlength= (char*)xmlGetProp(xmlObj, "minlength");
-       //const char *maxlength= (char*)xmlGetProp(xmlObj, "maxlength");
+       const char *minlength= (char*)xmlGetProp(xmlObj, "minlength");
+       const char *maxlength= (char*)xmlGetProp(xmlObj, "maxlength");
 
-       // TODO: minlength
-       // TODO: maxlength
-       Setting_GenGroupItem_Data *list_item =
-           setting_create_Gendial_field_def(pd->scroller, &(itc_1icon),
-                                            __editbox_list_cb,
-                                            pd, SWALLOW_Type_LAYOUT_ENTRY,
-                                            NULL, NULL, 0, title, key_str,
-                                            __editbox_changed_cb);
+       int max_len = -1;
+       if (maxlength)
+       {
+               max_len = atoi(maxlength);
+               SETTING_TRACE(" >> MAXLENGTH FILTER IS AVAILABLE !!!! maxlength = %d", max_len);
+       }
+
+       Setting_GenGroupItem_Data *list_item = NULL;
+
+       if (max_len == -1)
+       {
+               // without maxlength filter
+               list_item = setting_create_Gendial_field_def(pd->scroller, &(itc_1icon),
+                                                                __editbox_list_cb,
+                                                        pd, SWALLOW_Type_LAYOUT_ENTRY,
+                                                        NULL, NULL, 0, title, key_str,
+                                                        __editbox_changed_cb);
+
+       } else {
+               // add max length filter
+               list_item = setting_create_Gendial_field_entry(
+                                                                       pd->scroller,
+                                                                       &(itc_1icon),
+                                                                       __editbox_list_cb,
+                                                                       pd,
+                                                                       SWALLOW_Type_LAYOUT_ENTRY,
+                                                                       NULL, NULL, 0, title, key_str, __editbox_changed_cb,
+                                                                       ELM_INPUT_PANEL_LAYOUT_NORMAL,
+                                                                       false,
+                                                                       false,
+                                                                       max_len,
+                                                                       0,
+                                                                       NULL, NULL);
+
+       }
        if (list_item) {
                list_item->userdata = xmlObj;
                list_item->stop_change_cb = __entry_unfocus_cb;
@@ -1100,6 +1129,51 @@ static void* settings_func(void *data, xmlNode *xmlObj)
        return NULL;
 }
 
+
+static Evas_Object *setting_create_win_layout2(Evas_Object *win_layout, Evas_Object *win_obj)
+{
+
+    Evas_Object *layout = NULL;
+    Evas_Object *conform = elm_conformant_add(win_obj);
+    //setting_main_appdata *ad = (setting_main_appdata *) data;
+
+    /*  Base Layout */
+    layout = elm_layout_add(conform);
+    evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+    setting_retvm_if(layout == NULL, FALSE, "layout == NULL");
+
+    elm_layout_theme_set(layout, "layout", "application", "default");
+    evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+    evas_object_size_hint_align_set(conform, EVAS_HINT_FILL, EVAS_HINT_FILL);
+    elm_win_resize_object_add(win_obj, conform);
+    elm_object_content_set(conform, layout);
+
+    Evas_Object *bg = setting_create_bg(layout, win_obj, "group_list");
+    elm_object_part_content_set(layout, "elm.swallow.bg", bg);
+    evas_object_show(layout);
+    evas_object_show(conform);
+
+    //ad->conformant = conform;
+    return layout;
+}
+
+
+Evas_Object *setting_create_layout_navi_bar2(Evas_Object *win_layout, Evas_Object *win_obj, char *title_str, char *lbutton_str, char *rbutton_str, char *mbutton_str, setting_call_back_func lbutton_click_cb, setting_call_back_func rbutton_click_cb, setting_call_back_func mbutton_click_cb, void *cb_data, Evas_Object *eo_view,  /*any container obj constructed on any evas obj */
+                                           Evas_Object **navi_bar,
+                                           Evas_Object **titleobj)
+{
+
+       Evas_Object *layout = setting_create_win_layout2(win_layout, win_obj);
+       *navi_bar = setting_create_navi_bar(layout);
+
+       setting_create_navi_bar_buttons(title_str,
+                                       lbutton_str, rbutton_str, mbutton_str,
+                                       lbutton_click_cb, rbutton_click_cb,
+                                       mbutton_click_cb, cb_data, eo_view /*content */ ,
+                                       *navi_bar, NULL);
+       return layout;
+}
+
 // <setting>
 static void* setting_func(void *data, xmlNode *xmlObj)
 {
@@ -1123,21 +1197,14 @@ static void* setting_func(void *data, xmlNode *xmlObj)
        elm_object_style_set(pd->scroller, "dialogue");
        elm_genlist_clear(pd->scroller);        /* first to clear list */
 
-       /*  Enabling illume notification property for window */
-       elm_win_conformant_set(pd->win_get, 1);
-       Evas_Object *conformant = elm_conformant_add(pd->win_get);
-       elm_object_style_set(conformant, "internal_layout");
-       evas_object_show(conformant);
-       elm_object_content_set(conformant, pd->scroller);
 
        SETTING_TRACE("_(title):%s", _(title));
-       pd->ly_main =
-           setting_create_layout_navi_bar(pd->win_get, pd->win_get,
+       pd->ly_main = setting_create_layout_navi_bar2(pd->win_get, pd->win_get,
                                           _(title),
                                           _("IDS_COM_BODY_BACK"), NULL, NULL,
                                           ___click_softkey_back_cb,
                                           NULL, NULL,
-                                          data, conformant,
+                                          data, pd->scroller,
                                           &(pd->navi_bar), NULL);
        SETTING_TRACE("after setting_create_layout_navi_bar_genlist");
 
@@ -1190,8 +1257,7 @@ static int __node_walker(PluginNode* context, xmlNode* cur)
        xmlNode *cur_node = NULL;
        for (cur_node = cur; cur_node;cur_node = cur_node->next) {
                if (cur_node->type == XML_ELEMENT_NODE) {
-                       SETTING_TRACE("node type : %s id= %s", cur_node->name,xmlGetProp(cur_node, "id"));
-
+                       // SETTING_TRACE("node type : %s id= %s", cur_node->name,xmlGetProp(cur_node, "id"));
                        drawer_fp  fp = __drawer_find(cur_node->name);
                        if (fp)
                        {