[SR][Nabi-se][Nabi_SEN_SE-32480] Unable to select more then one file for attachment...
[apps/core/preloaded/ug-myfile-efl.git] / src / widget / mf-ug-popup.c
1 /*\r
2  * Copyright 2012          Samsung Electronics Co., Ltd\r
3  *\r
4  * Licensed under the Flora License, Version 1.0 (the "License");\r
5  * you may not use this file except in compliance with the License.\r
6  * You may obtain a copy of the License at\r
7  *\r
8  *  http://floralicense.org/license/\r
9  *\r
10  * Unless required by applicable law or agreed to in writing, software\r
11  * distributed under the License is distributed on an "AS IS" BASIS,\r
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  * See the License for the specific language governing permissions and\r
14  * limitations under the License.\r
15  */\r
16 \r
17 \r
18 \r
19 #include <notification.h>\r
20 \r
21 #include "mf-ug-util.h"\r
22 #include "mf-ug-winset.h"\r
23 #include "mf-ug-fs-util.h"\r
24 #include "mf-ug-cb.h"\r
25 #include "mf-ug-resource.h"\r
26 \r
27 #define MF_UG_POPUP_STYLE_MIN_MENUSTYLE "min_menustyle"\r
28 #define MF_UG_POPUP_MENUSTYLE_WIDTH (614*elm_config_scale_get())\r
29 #define MF_UG_POPUP_MENUSTYLE_HEIGHT(x) ((113*x-1)*elm_config_scale_get())\r
30 #define MF_UG_POPUP_MENUSTYLE_HEIGHT_MAX (408*elm_config_scale_get())\r
31 Elm_Genlist_Item_Class ug_listby_itc;\r
32 #define MF_UG_ITEM_COUNT        4\r
33 \r
34 typedef struct {\r
35         int index;\r
36         ugData* ugd;\r
37 } ugListByData_s;\r
38 \r
39 static int __mf_ug_popup_get_list_by_selected_item(void *data)\r
40 {\r
41         ug_mf_retvm_if(data == NULL, 0, "data is NULL");\r
42         ugData *ugd = (ugData *)data;\r
43 \r
44         int iSortTypeValue = ugd->ug_Status.ug_iSortType;\r
45 \r
46         int ret = -1;\r
47         switch (iSortTypeValue) {\r
48         case    MF_UG_SORT_BY_DATE_O2R:\r
49         case    MF_UG_SORT_BY_DATE_R2O:\r
50                 ret = 1;\r
51                 break;\r
52         case    MF_UG_SORT_BY_TYPE_A2Z:\r
53         case    MF_UG_SORT_BY_TYPE_Z2A:\r
54                 ret = 3;\r
55                 break;\r
56         case    MF_UG_SORT_BY_NAME_A2Z:\r
57         case    MF_UG_SORT_BY_NAME_Z2A:\r
58                 ret = 0;\r
59                 break;\r
60         case    MF_UG_SORT_BY_SIZE_S2L:\r
61         case    MF_UG_SORT_BY_SIZE_L2S:\r
62                 ret = 2;\r
63                 break;\r
64         default:\r
65                 ret = 0;\r
66                 break;\r
67         }\r
68         return ret;\r
69 }\r
70 \r
71 \r
72 static char *__mf_ug_popup_get_genlist_label(void *data, Evas_Object * obj, const char *part)\r
73 {\r
74         ugListByData_s *params = (ugListByData_s *) data;\r
75         assert(params);\r
76         ugData *ugd = params->ugd;\r
77         assert(ugd);\r
78         assert(part);\r
79 \r
80         char *ret = NULL;\r
81         if (!strcmp(part, "elm.text")) {\r
82                 switch (params->index) {\r
83                 case 0:                       /**< Sort by file name ascending */\r
84                         ret = g_strdup(MF_UG_LABEL_NAME);\r
85                         break;\r
86                 case 1:                       /**< Sort by file size ascending */\r
87                         ret = g_strdup(MF_UG_LABEL_DATE);\r
88                         break;\r
89                 case 2:                       /**< Sort by file date ascending */\r
90                         ret = g_strdup(MF_UG_LABEL_SIZE);\r
91                         break;\r
92                 case 3:                 /**< Sort by file type ascending */\r
93                         ret = g_strdup(MF_UG_LABEL_TYPE);\r
94                         break;\r
95                 default:\r
96                         break;\r
97                 }\r
98                 return ret;\r
99         }\r
100         return NULL;\r
101 }\r
102 \r
103 static Evas_Object* __mf_ug_popup_get_genlist_icon(void *data, Evas_Object * obj, const char *part)\r
104 {\r
105         ugListByData_s *params = (ugListByData_s *) data;\r
106         assert(params);\r
107         ugData *ugd = params->ugd;\r
108         assert(ugd);\r
109         assert(part);\r
110 \r
111         if (!strcmp(part, "elm.icon")) {\r
112                 Evas_Object *radio = NULL;\r
113                 radio = elm_radio_add(obj);\r
114                 elm_object_focus_set(radio, EINA_FALSE);\r
115                 elm_radio_state_value_set(radio, params->index);\r
116                 elm_radio_group_add(radio, ugd->ug_Status.ug_pRadioGroup);\r
117                 elm_radio_value_set(radio, ugd->ug_Status.ug_iRadioValue);\r
118                 evas_object_show(radio);\r
119                 return radio;\r
120         }\r
121         return NULL;\r
122 }\r
123 \r
124 static void __mf_ug_popup_genlist_select(void *data, Evas_Object * obj, void *event_info)\r
125 {\r
126         assert(data);\r
127         assert(event_info);\r
128         ugListByData_s *params = NULL;\r
129         Elm_Object_Item *item = (Elm_Object_Item *) event_info;\r
130         if (item != NULL) {\r
131                 params = (ugListByData_s *) elm_object_item_data_get(item);\r
132                 if (params != NULL && params->ugd != NULL) {\r
133                         params->ugd->ug_Status.ug_iSelectedSortType = params->index;\r
134                         elm_radio_value_set(params->ugd->ug_Status.ug_pRadioGroup, params->index);\r
135                 }\r
136         }\r
137 }\r
138 \r
139 /******************************\r
140 ** Prototype    : mfPopupCreate\r
141 ** Description  :\r
142 ** Input        : void *data\r
143 **                ePopMode popupMode\r
144 **                char *title\r
145 **                char *context\r
146 **                char *first_btn_text\r
147 **                char *second_btn_text\r
148 **                char *third_btn_text\r
149 **                Evas_Smart_Cb func\r
150 **                void* param\r
151 ** Output       : None\r
152 ** Return Value :\r
153 ** Calls        :\r
154 ** Called By    :\r
155 **\r
156 **  History        :\r
157 **  1.Date         : 2010/12/10\r
158 **    Author       : Samsung\r
159 **    Modification : Created function\r
160 **\r
161 ******************************/\r
162 static Evas_Object *__ug_mf_popup_button_create(Evas_Object *parent, const char *label)\r
163 {\r
164         Evas_Object *btn = NULL;\r
165         btn = elm_button_add(parent);\r
166         if (label) {\r
167                 elm_object_text_set(btn, label);\r
168         }\r
169         return btn;\r
170 \r
171 }\r
172 \r
173 static Evas_Object *__mf_ug_popup_box_set(Evas_Object *parent, Evas_Object *content, int item_cnt)\r
174 {\r
175         ug_mf_retvm_if(parent == NULL, NULL, "parent is NULL");\r
176         ug_mf_retvm_if(content == NULL, NULL, "content is NULL");\r
177         ug_mf_retvm_if(item_cnt < 0, NULL, "content is NULL");\r
178 \r
179         Evas_Object *box = elm_box_add(parent);\r
180         if (item_cnt > MF_UG_ITEM_COUNT) {\r
181                 evas_object_size_hint_min_set(box, MF_UG_POPUP_MENUSTYLE_WIDTH,\r
182                                               MF_UG_POPUP_MENUSTYLE_HEIGHT(item_cnt));\r
183         } else {\r
184                 evas_object_size_hint_min_set(box, MF_UG_POPUP_MENUSTYLE_WIDTH,\r
185                                               MF_UG_POPUP_MENUSTYLE_HEIGHT(item_cnt));\r
186         }\r
187 \r
188         evas_object_show(content);\r
189         elm_box_pack_end(box, content);\r
190         return box;\r
191 }\r
192 \r
193 Evas_Object *mf_ug_popup_create_search(void *data, Evas_Smart_Cb func, void *param)\r
194 {\r
195         UG_TRACE_BEGIN;\r
196         ugData *ugd = (ugData *)data;\r
197         ug_mf_retvm_if(ugd == NULL, NULL, "ugd is NULL");\r
198         Evas_Object *popup = NULL;\r
199         Evas_Object *btn1 = NULL;\r
200         Evas_Object *box = NULL;\r
201         Evas_Object *content = NULL;\r
202         Evas_Object *label = NULL;\r
203 \r
204         popup = elm_popup_add(ugd->ug_MainWindow.ug_pMainLayout);\r
205         elm_object_style_set(popup,"min_menustyle");\r
206         evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
207         ugd->ug_MainWindow.ug_pNormalPopup = popup;\r
208 \r
209 \r
210 \r
211         btn1 = elm_button_add(popup);\r
212         elm_object_text_set(btn1, MF_UG_LABEL_CANCEL);\r
213         elm_object_part_content_set(popup, "button1", btn1);\r
214         evas_object_smart_callback_add(btn1, "clicked", func, param);\r
215 \r
216         box = elm_box_add(popup);\r
217         evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
218 \r
219         content = elm_layout_add(popup);\r
220         elm_layout_file_set(content, UG_EDJ_NAVIGATIONBAR, "search_path");\r
221 \r
222         evas_object_size_hint_weight_set(content, EVAS_HINT_EXPAND,\r
223                         EVAS_HINT_EXPAND);\r
224         evas_object_size_hint_align_set(content, EVAS_HINT_FILL, EVAS_HINT_FILL);\r
225 \r
226         label = elm_label_add(content);\r
227         ugd->ug_MainWindow.ug_pSearchLabel = label;\r
228         elm_object_style_set(label, "popup/default");\r
229         elm_label_wrap_width_set(label, 720);\r
230         elm_label_ellipsis_set(label, EINA_TRUE);\r
231         evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
232         evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL);\r
233         elm_object_text_set(label, "Test");\r
234 \r
235 \r
236         elm_object_part_content_set(content, "path", label);\r
237         evas_object_show(label);\r
238         elm_box_pack_end(box, content);\r
239 \r
240         evas_object_size_hint_min_set(box, 720, 300);\r
241         evas_object_size_hint_max_set(box, 720, 300);\r
242 \r
243         evas_object_show(btn1);\r
244         evas_object_show(content);\r
245         evas_object_show(box);\r
246 \r
247         elm_object_content_set(popup, box);\r
248 \r
249         evas_object_show(popup);\r
250         return popup;\r
251 }\r
252 \r
253 Evas_Object *mf_ug_popup_create(void *data, mf_ug_popup_mode popupMode, char *title, const char *context, const char *first_btn_text, const char *second_btn_text,\r
254                         const char *third_btn_text, Evas_Smart_Cb func, void *param)\r
255 {\r
256         Evas_Object *popup;\r
257         ugData *ugd = (ugData *)data;\r
258         ug_mf_retvm_if(ugd == NULL, NULL, "ugd is NULL");\r
259 \r
260         Evas_Object *genlist;\r
261         Evas_Object *radio_group = NULL;\r
262         Evas_Object *box = NULL;\r
263         Evas_Object *btn1 = NULL;\r
264         Evas_Object *btn2 = NULL;\r
265         int index = 0;\r
266         int listby_selected= 0;\r
267 \r
268         popup = elm_popup_add(ugd->ug_MainWindow.ug_pMainLayout);\r
269         ugd->ug_MainWindow.ug_pNormalPopup = popup;\r
270         evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
271         if (title) {\r
272                 elm_object_part_text_set(popup, "title,text", title);\r
273         }\r
274         if (context && popupMode != UG_POPMODE_PROGRESSBAR) {\r
275                 elm_object_text_set(popup, context);\r
276         }\r
277         switch (popupMode) {\r
278         case UG_POPMODE_TEXT:\r
279         case UG_POPMODE_TITLE_TEXT:\r
280                 elm_popup_timeout_set(popup, 3);\r
281                 if (func) {\r
282                         evas_object_smart_callback_add(popup, "timeout", (Evas_Smart_Cb) func, param);\r
283                 }\r
284                 break;\r
285         case UG_POPMODE_TEXT_TWO_BTN:\r
286         case UG_POPMODE_TITLE_TEXT_TWO_BTN:\r
287                 btn1 = __ug_mf_popup_button_create(popup, first_btn_text);\r
288                 btn2 = __ug_mf_popup_button_create(popup, second_btn_text);\r
289 \r
290                 evas_object_smart_callback_add(btn1, "clicked", func, param);\r
291                 evas_object_smart_callback_add(btn2, "clicked", func, param);\r
292                 elm_object_part_content_set(popup, "button1", btn1);\r
293                 elm_object_part_content_set(popup, "button2", btn2);\r
294                 break;\r
295         case UG_POPMODE_TEXT_BTN:\r
296         case UG_POPMODE_TITLE_TEXT_BTN:\r
297                 btn1 = __ug_mf_popup_button_create(popup, MF_UG_LABEL_OK);\r
298                 evas_object_smart_callback_add(btn1, "clicked", func, param);\r
299                 elm_object_part_content_set(popup, "button1", btn1);\r
300                 break;\r
301         case UG_POPMODE_SEARCH:\r
302                 btn1 = __ug_mf_popup_button_create(popup, MF_UG_LABEL_CANCEL);\r
303                 evas_object_smart_callback_add(btn1, "clicked", func, param);\r
304                 elm_object_part_content_set(popup, "button1", btn1);\r
305                 break;\r
306         case UG_POPMODE_LIST_BY:\r
307                 elm_object_style_set(popup, MF_UG_POPUP_STYLE_MIN_MENUSTYLE);\r
308 \r
309                 btn1 = __ug_mf_popup_button_create(popup, MF_UG_LABEL_ASCENDING);\r
310                 evas_object_smart_callback_add(btn1, "clicked", func, param);\r
311                 elm_object_part_content_set(popup, "button1", btn1);\r
312 \r
313                 btn2 = __ug_mf_popup_button_create(popup, MF_UG_LABEL_DESCENDING);\r
314                 evas_object_smart_callback_add(btn2, "clicked", func, param);\r
315                 elm_object_part_content_set(popup, "button2", btn2);\r
316 \r
317                 if (ugd->ug_Status.ug_pRadioGroup) {\r
318                         evas_object_del(ugd->ug_Status.ug_pRadioGroup);\r
319                         ugd->ug_Status.ug_pRadioGroup = NULL;\r
320                 }\r
321 \r
322                 radio_group = elm_radio_add(ugd->ug_MainWindow.ug_pWindow);\r
323                 elm_object_focus_set(radio_group, EINA_FALSE);\r
324                 elm_radio_value_set(radio_group, 0);\r
325                 evas_object_hide(radio_group);\r
326                 ugd->ug_Status.ug_pRadioGroup = radio_group;\r
327 \r
328                 listby_selected = __mf_ug_popup_get_list_by_selected_item(ugd);\r
329                 ugd->ug_Status.ug_iRadioValue = listby_selected;\r
330 \r
331                 ug_listby_itc.item_style = "1text.1icon.2";\r
332                 ug_listby_itc.func.text_get = __mf_ug_popup_get_genlist_label;\r
333                 ug_listby_itc.func.content_get = __mf_ug_popup_get_genlist_icon;\r
334                 ug_listby_itc.func.state_get = NULL;\r
335                 ug_listby_itc.func.del = NULL;\r
336                 genlist = elm_genlist_add(popup);\r
337                 elm_object_focus_set(genlist, EINA_FALSE);\r
338                 evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
339                 evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);\r
340                 for (index = 0; index < MF_UG_ITEM_COUNT; index++) {\r
341                         ugListByData_s *item_data = malloc(sizeof(ugListByData_s));\r
342                         if (item_data == NULL)\r
343                                 continue;\r
344 \r
345                         item_data->index = index;\r
346                         item_data->ugd = ugd;\r
347                         elm_genlist_item_append(genlist, &ug_listby_itc, (void *)item_data, NULL,\r
348                                                      ELM_GENLIST_ITEM_NONE, __mf_ug_popup_genlist_select, popup);\r
349                 }\r
350 \r
351                 box = __mf_ug_popup_box_set(popup, genlist, MF_UG_ITEM_COUNT);\r
352                 elm_object_content_set(popup, box);\r
353                 evas_object_smart_callback_add(popup, "response", func, param);\r
354 \r
355                 break;\r
356         default:\r
357                 evas_object_del(popup);\r
358                 return NULL;\r
359         }\r
360         evas_object_show(popup);\r
361         return popup;\r
362 }\r
363 \r
364 void mf_ug_popup_indicator_popup(const char *text)\r
365 {\r
366         ug_mf_retm_if(text == NULL, "text is NULL");\r
367         int ret = notification_status_message_post(text);\r
368         ug_debug("status_message_post()... [0x%x]!", ret);\r
369         if (ret != 0) {\r
370                 ug_debug("status_message_post()... [0x%x]!", ret);\r
371         }\r
372         return ;\r
373 }\r
374 \r
375 static void _move_ctxpopup(void *data, Evas_Object *parent, Evas_Object *ctxpopup )\r
376 {\r
377         elm_ctxpopup_direction_priority_set(ctxpopup, ELM_CTXPOPUP_DIRECTION_UP,\r
378                                             ELM_CTXPOPUP_DIRECTION_LEFT,\r
379                                             ELM_CTXPOPUP_DIRECTION_RIGHT,\r
380                                             ELM_CTXPOPUP_DIRECTION_DOWN);\r
381 \r
382         if (parent) {\r
383                 int x = 0;\r
384                 int y = 0;\r
385                 int w = 0;\r
386                 int h = 0;\r
387 \r
388                 evas_object_geometry_get(parent, &x, &y, &w, &h);\r
389                 evas_object_move(ctxpopup, x+w/2,\r
390                                          y + h/2);\r
391         }\r
392 }\r
393 static void _ctxpopup_hide_cb(void *data, Evas_Object *obj, void *event_info)\r
394 {\r
395         UG_TRACE_BEGIN;\r
396         ug_mf_retm_if(obj == NULL, "obj is NULL");\r
397         evas_object_del(obj);\r
398         obj = NULL;\r
399         UG_TRACE_END;\r
400 }\r
401 \r
402 \r
403 void mf_ug_context_popup_create_more(void *data, Evas_Object *parent)\r
404 {\r
405         UG_TRACE_BEGIN;\r
406         ug_mf_retm_if(data == NULL, "data is NULL");\r
407         ugData *ugd = (ugData *)data;\r
408 \r
409         UG_SAFE_FREE_OBJ(ugd->ug_MainWindow.ug_pContextPopup);\r
410 \r
411         Evas_Object *ctxpopup = elm_ctxpopup_add(ugd->ug_MainWindow.ug_pNaviBar);\r
412         ugd->ug_MainWindow.ug_pContextPopup = ctxpopup;\r
413         Elm_Object_Item *it = NULL;\r
414 \r
415         if (ugd->ug_UiGadget.ug_iSelectMode == EXPORT_MODE || ugd->ug_UiGadget.ug_iSelectMode == SAVE_MODE) {\r
416                 /*Search*/\r
417                 it = elm_ctxpopup_item_append(ctxpopup, MF_UG_LABEL_CREATE, NULL, mf_ug_cb_create_new_folder, ugd);\r
418         }\r
419         _move_ctxpopup(ugd, parent, ctxpopup);\r
420         evas_object_show(ctxpopup);\r
421 \r
422         if(ctxpopup)\r
423         {\r
424                 evas_object_smart_callback_add(ctxpopup,"dismissed", _ctxpopup_hide_cb, ugd);\r
425         }\r
426         UG_TRACE_END;\r
427 }\r
428 \r
429 static Evas_Object *__mf_ug_popup_entry_create(Evas_Object *parent)\r
430 {\r
431         Evas_Object *en = NULL;\r
432 \r
433         en = elm_entry_add(parent);\r
434         elm_entry_scrollable_set(en, EINA_TRUE);\r
435         elm_entry_select_all(en);\r
436         elm_scroller_policy_set(en, ELM_SCROLLER_POLICY_OFF,\r
437                                                 ELM_SCROLLER_POLICY_AUTO);\r
438 \r
439         Ecore_IMF_Context *imf_context = elm_entry_imf_context_get(en);\r
440 \r
441         elm_entry_single_line_set(en, EINA_TRUE);\r
442         evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND,\r
443                                          EVAS_HINT_EXPAND);\r
444         evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);\r
445         evas_object_show(en);\r
446 \r
447         return en;\r
448 \r
449 }\r
450 \r
451 static char *__new_folder_text_get(void *data)\r
452 {\r
453         UG_TRACE_BEGIN;\r
454         ugData *ugd = (ugData *)data;\r
455         ug_mf_retvm_if(ugd == NULL, NULL, "ugd is NULL");\r
456 \r
457                 int error_code = 0;\r
458                 char *fileName = NULL;\r
459                 char *fullpath = (char *)malloc(sizeof(char) * MYFILE_FILE_PATH_LEN_MAX);\r
460                 if (fullpath == NULL) {\r
461                         return NULL;\r
462                 }\r
463                 GString *dest_fullpath = NULL;\r
464 \r
465                 memset(fullpath, 0, MYFILE_FILE_PATH_LEN_MAX);\r
466                 fileName = elm_entry_markup_to_utf8(MF_UG_LABEL_FOLDER);\r
467                 snprintf(fullpath, (MYFILE_FILE_PATH_LEN_MAX), "%s/%s", (char *)ugd->ug_Status.ug_pPath->str, fileName);\r
468 \r
469                 dest_fullpath = g_string_new(fullpath);\r
470 \r
471 \r
472                 if (mf_ug_fm_svc_wrapper_detect_duplication(dest_fullpath)) {\r
473                         ug_debug("dectetion result is TRUE\ndest_fullpath is %s\n", dest_fullpath->str);\r
474                         error_code = mf_ug_fm_svc_wrapper_file_auto_rename(ugd, dest_fullpath, FILE_NAME_WITH_BRACKETS, &dest_fullpath);\r
475                         ug_debug("rename result is %s\n", dest_fullpath->str);\r
476                         memset(fullpath, 0, strlen(fullpath));\r
477                         int len = strlen(ugd->ug_Status.ug_pPath->str) + 1;\r
478                         strncpy(fullpath, dest_fullpath->str + len, MYFILE_FILE_PATH_LEN_MAX);\r
479                         /*memset(fileName,0,strlen(fileName));*/\r
480 \r
481                         UG_SAFE_FREE_CHAR(fileName);\r
482                         fileName = elm_entry_markup_to_utf8(fullpath);\r
483                 }\r
484 \r
485                 /*elm_entry_entry_set(entry, ecore_file_file_get(params->m_ItemName->str));*/\r
486 \r
487 \r
488                 UG_SAFE_FREE_CHAR(fullpath);\r
489                 UG_SAFE_FREE_GSTRING(dest_fullpath);\r
490                 return fileName;\r
491 }\r
492 static void __mf_ug_popup_show_vk_cb(void *data, Evas_Object *obj, void *event_info)\r
493 {\r
494         UG_TRACE_BEGIN;\r
495         ug_mf_retm_if(data == NULL, "data is NULL");\r
496         ugData *ugd = (ugData *)data;\r
497 \r
498         Evas_Object *pEntry = NULL;\r
499 \r
500         evas_object_del(ugd->ug_MainWindow.ug_pNormalPopup);\r
501 \r
502         ugd->ug_MainWindow.ug_pNormalPopup = NULL;\r
503 \r
504         pEntry = ugd->ug_MainWindow.ug_pEntry;\r
505         elm_entry_cursor_end_set(ugd->ug_MainWindow.ug_pEntry);\r
506 \r
507         elm_object_focus_set(ugd->ug_MainWindow.ug_pEntry, EINA_TRUE);\r
508 \r
509         UG_TRACE_END;\r
510 \r
511 }\r
512 \r
513 \r
514 static void __mf_ug_popup_create_folder_imf_changed_cb(void *data, Evas_Object *obj, void *event_info)\r
515 {\r
516         UG_TRACE_BEGIN;\r
517         ug_mf_retm_if(data == NULL, "data is NULL");\r
518         ugData *ugd = (ugData *)data;\r
519 \r
520         const char *entry_data = NULL;\r
521         char *name = NULL;\r
522         char new_str[MYFILE_FILE_NAME_LEN_MAX] = { '\0', };\r
523 \r
524         entry_data = elm_entry_entry_get(ugd->ug_MainWindow.ug_pEntry);\r
525         ug_mf_retm_if(entry_data == NULL, "entry_data is null");\r
526         name = elm_entry_markup_to_utf8(entry_data);\r
527         ug_mf_retm_if(name == NULL, "name is null");\r
528 \r
529         ug_error("name is [%s]", name);\r
530         if (mf_ug_file_attr_is_valid_name(name) != MYFILE_ERR_NONE) {\r
531                 strncpy(new_str, name, MYFILE_FILE_NAME_LEN_MAX - 1);\r
532                 if (strlen(name) > 0)\r
533                         new_str[strlen(name) - 1] = '\0';\r
534                 elm_entry_entry_set(ugd->ug_MainWindow.ug_pEntry, new_str);\r
535                 elm_entry_cursor_end_set(ugd->ug_MainWindow.ug_pEntry);\r
536                 elm_object_focus_set(ugd->ug_MainWindow.ug_pEntry, EINA_FALSE);\r
537 \r
538                 UG_SAFE_FREE_OBJ(ugd->ug_MainWindow.ug_pNormalPopup);\r
539                 ugd->ug_MainWindow.ug_pNormalPopup = mf_ug_popup_create(ugd, UG_POPMODE_TEXT, NULL, MF_UG_LABEL_ILLEGAL_CHAR, NULL, NULL,\r
540                                                                        NULL, __mf_ug_popup_show_vk_cb, ugd);\r
541         }\r
542         UG_SAFE_FREE_CHAR(name);\r
543         UG_TRACE_END;\r
544 }\r
545 \r
546 Evas_Object *mf_ug_popup_create_new_folder_popup(void *data, char *context)\r
547 {\r
548 \r
549         UG_TRACE_BEGIN;\r
550         ug_mf_retvm_if(data == NULL, NULL, "data is NULL");\r
551         ugData *ugd = (ugData *)data;\r
552 \r
553         Evas_Object *popup;\r
554         Evas_Object *layout;\r
555         char *text = NULL;\r
556         static Elm_Entry_Filter_Limit_Size limit_filter_data;\r
557 \r
558         popup = elm_popup_add(ugd->ug_MainWindow.ug_pMainLayout);\r
559         elm_object_focus_set(popup, EINA_FALSE);\r
560 \r
561         layout = elm_layout_add(popup);\r
562         elm_object_focus_set(layout, EINA_FALSE);\r
563         elm_layout_file_set(layout, UG_EDJ_NAVIGATIONBAR, "popup_new_folder");\r
564         evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
565 \r
566         Evas_Object *en = NULL;\r
567         en = __mf_ug_popup_entry_create(layout);\r
568 \r
569         text = __new_folder_text_get(ugd);\r
570         limit_filter_data.max_char_count = MYFILE_FILE_NAME_LEN_MAX;\r
571         elm_entry_entry_set(en, text);\r
572         elm_entry_cursor_end_set(en);\r
573         UG_SAFE_FREE_CHAR(text);\r
574 \r
575         elm_entry_markup_filter_append(en, elm_entry_filter_limit_size,\r
576                                               &limit_filter_data);\r
577         elm_object_part_content_set(layout, "elm.swallow.content", en);\r
578 \r
579         edje_object_part_text_set(elm_layout_edje_get(layout), "title.text", context);\r
580         evas_object_smart_callback_add(en, "maxlength,reached", mf_ug_cb_reach_max_len_cb, ugd);\r
581         evas_object_smart_callback_add(en, "changed", __mf_ug_popup_create_folder_imf_changed_cb, ugd);\r
582         ugd->ug_MainWindow.ug_pEntry = en;\r
583 \r
584         elm_object_content_set(popup, layout);\r
585 \r
586 \r
587         Evas_Object *btn1 = __ug_mf_popup_button_create(popup, MF_UG_LABEL_OK);\r
588         elm_object_style_set(btn1, "popup_button/default");\r
589         Evas_Object *btn2 = __ug_mf_popup_button_create(popup, MF_UG_LABEL_CANCEL);\r
590         elm_object_style_set(btn2, "popup_button/default");\r
591 \r
592         evas_object_smart_callback_add(btn1, "clicked", mf_ug_cb_save_cb, ugd);\r
593         evas_object_smart_callback_add(btn2, "clicked", mf_ug_cb_cancel_new_folder_cb, ugd);\r
594         elm_object_part_content_set(popup, "button1", btn1);\r
595         elm_object_part_content_set(popup, "button2", btn2);\r
596 \r
597         evas_object_show(popup);\r
598 \r
599         return popup;\r
600 }\r
601 \r