721daeda54a878f53a737e7e13280246c0a9100f
[apps/core/preloaded/myfiles.git] / src / widget / mf-widget.c
1 /*
2  * Copyright 2013         Samsung Electronics Co., Ltd
3  *
4  * Licensed under the Flora License, Version 1.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *  http://floralicense.org/license/
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17
18
19
20 #include "mf-main.h"
21 #include "mf-callback.h"
22 #include "mf-search.h"
23 #include "mf-split-view.h"
24 #include "mf-widget.h"
25 #include "mf-fm-svc-wrapper.h"
26 #include "mf-resource.h"
27 #include "mf-ta.h"
28 #include "mf-language-mgr.h"
29
30 extern Elm_Genlist_Item_Class itc;
31 extern Elm_Genlist_Item_Class userfolderitc;
32 extern Elm_Genlist_Item_Class categoryitc;
33 extern Elm_Gengrid_Item_Class gic;
34
35
36
37 Evas_Object *mf_widget_create_genlist(Evas_Object *parent)
38 {
39         Evas_Object *genlist = NULL;
40         genlist = elm_genlist_add(parent);
41         //elm_genlist_homogeneous_set(genlist, EINA_TRUE);
42         //elm_object_focus_set(genlist, EINA_FALSE);
43         evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
44         evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
45         return genlist;
46 }
47
48 Evas_Object *mf_widget_create_box(Evas_Object * parent)
49 {
50         mf_retvm_if(parent == NULL, NULL, "parent is NULL");
51
52         Evas_Object *box = NULL;
53         box = elm_box_add(parent);
54         mf_retvm_if(box == NULL, NULL, "box is NULL");
55         elm_object_focus_set(box, EINA_FALSE);
56         evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
57         evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
58         elm_box_clear(box);
59         evas_object_show(box);
60         return box;
61
62 }
63
64 Evas_Object *mf_widget_create_layout(Evas_Object *parent, const char *edj, const char *grp_name)
65 {
66         MF_TRACE_BEGIN;
67         mf_retvm_if(parent == NULL, NULL, "parent is NULL");
68         mf_retvm_if(edj == NULL, NULL, "edj is NULL");
69         mf_retvm_if(grp_name == NULL, NULL, "grp_name is NULL");
70
71         Evas_Object *layout = NULL;
72         layout = elm_layout_add(parent);
73         mf_retvm_if(layout == NULL, NULL, "layout is NULL");
74         elm_object_focus_set(layout, EINA_FALSE);
75         elm_layout_file_set(layout, edj, grp_name);
76         evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
77         evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
78         evas_object_show(layout);
79         MF_TRACE_END;
80         return layout;
81
82 }
83
84 Evas_Object *mf_widget_create_conform(Evas_Object * parent)
85 {
86         mf_retv_if(parent == NULL, NULL);
87
88         Evas_Object *conform;
89
90         conform = elm_conformant_add(parent);
91         evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
92         evas_object_show(conform);
93
94         return conform;
95 }
96
97 Evas_Object *mf_widget_create_check_box(Evas_Object *parent)
98 {
99         mf_retvm_if(parent == NULL, NULL, "parent is NULL");
100
101         Evas_Object *checkbox = NULL;
102         checkbox = elm_check_add(parent);
103         elm_object_focus_set(checkbox, EINA_FALSE);
104         evas_object_propagate_events_set(checkbox, EINA_FALSE);
105         evas_object_show(checkbox);
106         return checkbox;
107 }
108
109 Evas_Object *mf_widget_create_no_content(Evas_Object *parent)
110 {
111         Evas_Object *nocontent = elm_layout_add(parent);
112         elm_layout_theme_set(nocontent, "layout", "nocontents", "text");
113         elm_object_focus_set(nocontent, EINA_FALSE);
114         elm_object_part_text_set(nocontent, "elm.text", GET_SYS_STR(MF_LABEL_NO_FILES));
115         mf_language_mgr_register_object(nocontent, OBJ_TYPE_EDJE_OBJECT, "elm.text", MF_LABEL_NO_FILES);
116         return nocontent;
117 }
118
119 Evas_Object *mf_widget_create_select_all_layout(Evas_Object *parent)
120 {
121
122         mf_retvm_if(parent == NULL, NULL, "parent is NULL");
123
124         Evas_Object *pSelectedAllLayout = NULL;
125         pSelectedAllLayout = elm_layout_add(parent);
126         elm_object_focus_set(pSelectedAllLayout, EINA_FALSE);
127         elm_layout_theme_set(pSelectedAllLayout, "genlist", "item", "select_all/default");
128         evas_object_size_hint_weight_set(pSelectedAllLayout, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
129         evas_object_size_hint_align_set(pSelectedAllLayout, EVAS_HINT_FILL, EVAS_HINT_FILL);
130         elm_object_part_text_set(pSelectedAllLayout, "elm.text", GET_SYS_STR(MF_LABEL_SELECT_ALL));
131         mf_language_mgr_register_object(pSelectedAllLayout, OBJ_TYPE_EDJE_OBJECT, "elm.text", MF_LABEL_SELECT_ALL);
132         evas_object_show(pSelectedAllLayout);
133         return pSelectedAllLayout;
134 }
135
136 Evas_Object *mf_widget_create_editfield(Evas_Object *parent, Evas_Object **pEntry)
137 {
138
139         mf_retvm_if(parent == NULL, NULL, "parent is NULL");
140         Evas_Object *layout = elm_layout_add(parent);
141         elm_layout_theme_set(layout, "layout", "editfield", "default");
142         Evas_Object *entry = elm_entry_add(parent);
143         elm_object_style_set(entry, "default");
144         elm_entry_cnp_mode_set(entry, ELM_CNP_MODE_PLAINTEXT);
145         elm_object_part_content_set(layout, "elm.swallow.content", entry);
146         *pEntry = entry;
147         return layout;
148 }
149
150 Evas_Object *mf_widget_create_search_bar(Evas_Object *parent, Evas_Object **pEntry)
151 {
152         Evas_Object *searchbar_layout = elm_layout_add(parent);
153         elm_layout_theme_set(searchbar_layout, "layout", "searchbar", "default");
154         Evas_Object *entry = elm_entry_add(searchbar_layout);
155         elm_entry_scrollable_set(entry, EINA_TRUE);
156         elm_entry_single_line_set(entry, EINA_TRUE);
157         elm_entry_cnp_mode_set(entry, ELM_CNP_MODE_PLAINTEXT);
158         elm_object_part_content_set(searchbar_layout, "elm.swallow.content", entry);
159         *pEntry = entry;
160         return searchbar_layout;
161 }
162
163 Evas_Object *mf_widget_create_panes(Evas_Object *parent)
164 {
165         MF_TRACE_BEGIN;
166         mf_retvm_if(parent == NULL, NULL, "parent is NULL");
167
168         Evas_Object *panes = NULL;
169         panes = elm_panes_add(parent);
170         mf_retvm_if(panes == NULL, NULL, "panes is NULL");
171         elm_object_focus_set(panes, EINA_FALSE);
172         evas_object_size_hint_weight_set(panes, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
173         evas_object_size_hint_align_set(panes, EVAS_HINT_FILL, EVAS_HINT_FILL);
174         elm_panes_fixed_set(panes, EINA_FALSE);
175         evas_object_show(panes);
176         MF_TRACE_END;
177         return panes;
178 }
179
180 Evas_Object *mf_widget_create_layout_main(Evas_Object * parent)
181 {
182         Evas_Object *layout;
183
184         mf_retv_if(parent == NULL, NULL);
185
186         layout = elm_layout_add(parent);
187         mf_retvm_if(layout == NULL, NULL, "Failed elm_layout_add.\n");
188         elm_object_focus_set(layout, EINA_FALSE);
189
190         MF_TA_ACUM_ITEM_BEGIN("      elm_layout_theme_set", 0);
191         elm_layout_theme_set(layout, "layout", "application", "default");
192         MF_TA_ACUM_ITEM_END("      elm_layout_theme_set", 0);
193
194         evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
195         evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
196         //elm_win_resize_object_add(parent, layout);
197
198         evas_object_show(layout);
199
200         return layout;
201 }
202
203
204 Evas_Object *mf_widget_create_cancel_button_on_search(Evas_Object *parent)
205 {
206         Evas_Object *cancel_btn = elm_button_add(parent);
207         elm_object_part_content_set(parent, "button_cancel", cancel_btn);
208         elm_object_style_set(cancel_btn, "searchbar/default");
209         elm_object_text_set(cancel_btn, GET_SYS_STR(LABEL_CANCEL));
210         mf_language_mgr_register_object(cancel_btn, OBJ_TYPE_ELM_OBJECT, NULL, LABEL_CANCEL);
211         return cancel_btn;
212 }
213
214 void mf_widget_item_remove(Evas_Object *parent, const char *path, int type)
215 {
216         mf_debug("path is [%s]", path);
217         mf_retm_if(parent == NULL, "parent is NULL");
218         mf_retm_if(path == NULL, "path is NULL");
219
220         mfItemData_s *itemData = NULL;
221         Elm_Object_Item *it = NULL;
222
223         if (type == MF_VIEW_STYLE_THUMBNAIL) {
224                 it = elm_gengrid_first_item_get(parent);
225         } else {
226                 it = elm_genlist_first_item_get(parent);
227         }
228         while (it) {
229                 itemData = elm_object_item_data_get(it);
230                 if (itemData->m_ItemName == NULL || itemData->m_ItemName->str == NULL) {
231                         continue;
232                 }
233                 mf_debug("itemData->m_ItemName->str is [%s]", itemData->m_ItemName->str);
234                 if (g_strcmp0(path, itemData->m_ItemName->str) == 0) {
235                         elm_object_item_del(it);
236                         break;
237                 }
238
239                 if (type == MF_VIEW_STYLE_THUMBNAIL) {
240                         it = elm_gengrid_item_next_get(it);
241                 } else {
242                         it = elm_genlist_item_next_get(it);
243                 }
244         }
245
246 }
247
248 void mf_widget_items_remove(Evas_Object *parent, int storage, int type)
249 {
250         mf_retm_if(parent == NULL, "parent is NULL");
251
252         mfItemData_s *itemData = NULL;
253         Elm_Object_Item *it = NULL;
254         Elm_Object_Item *next_it = NULL;
255
256         if (type == MF_VIEW_STYLE_THUMBNAIL) {
257                 it = elm_gengrid_first_item_get(parent);
258         } else {
259                 it = elm_genlist_first_item_get(parent);
260         }
261         while (it) {
262                 itemData = elm_object_item_data_get(it);
263                 if (itemData->m_ItemName == NULL || itemData->m_ItemName->str == NULL) {
264                         continue;
265                 }
266                 if (mf_fm_svc_wrapper_get_location(itemData->m_ItemName->str) == storage){
267                         if (type == MF_VIEW_STYLE_THUMBNAIL) {
268                                 next_it = elm_gengrid_item_next_get(it);
269                         } else {
270                                 next_it = elm_genlist_item_next_get(it);
271                         }
272                         elm_object_item_del(it);
273                         it = next_it;
274                 } else {
275                         if (type == MF_VIEW_STYLE_THUMBNAIL) {
276                                 it = elm_gengrid_item_next_get(it);
277                         } else {
278                                 it = elm_genlist_item_next_get(it);
279                         }
280                 }
281         }
282
283 }
284
285 Elm_Object_Item *mf_widget_item_append(Evas_Object *parent, fsNodeInfo *pNode, void *data)
286 {
287         mf_retvm_if(parent == NULL, NULL, "pGenlist is NULL");
288         mf_retvm_if(pNode == NULL, NULL, "pNode is NULL");
289         mf_retvm_if(pNode->path == NULL, NULL, "pNode->path is NULL");
290         mf_retvm_if(pNode->name == NULL, NULL, "pNode->name is NULL");
291         mf_retvm_if(data == NULL, NULL, "data is NULL");
292
293         char *real_name = NULL;
294         mfItemData_s *m_TempItem = NULL;
295         struct appdata *ap = (struct appdata *)data;
296
297         real_name = g_strconcat(pNode->path, "/", pNode->name, NULL);
298         if (real_name == NULL) {
299                 return NULL;
300         }
301
302         mf_genlist_create_data(&m_TempItem, real_name, data);
303
304         if (m_TempItem == NULL) {
305                 free(real_name);
306                 real_name = NULL;
307                 return NULL;
308         }
309
310         if (ap->mf_Status.view_type == mf_view_root) {
311                 if(g_strcmp0(real_name, PHONE_FOLDER) == 0) {
312                         m_TempItem->thumb_path = strdup(MF_ICON_ITEM_PHONE);
313                         m_TempItem->real_thumb_flag = true;
314                 } else if(g_strcmp0(real_name, MEMORY_FOLDER) == 0) {
315                         m_TempItem->thumb_path = strdup(MF_ICON_ITEM_MMC);
316                         m_TempItem->real_thumb_flag = true;
317                 } else if(g_strcmp0(real_name, OTG_FOLDER) == 0) {
318                         m_TempItem->thumb_path = strdup(MF_ICON_ITEM_MMC);
319                         m_TempItem->real_thumb_flag = true;
320                 }
321                 /*else if(g_strcmp0(real_name, DROP_BOX_FOLDER) == 0) {
322                         m_TempItem->thumb_path = strdup(MF_ICON_ITEM_DB);
323                 }*/
324         }
325
326         Elm_Object_Item *it = NULL;
327
328         if (ap->mf_Status.flagViewType == MF_VIEW_SYTLE_LIST_DETAIL) {
329                 char *tempdate = mf_util_icu_translate(ap, pNode->date);
330                 if (tempdate == NULL)
331                         m_TempItem->create_date = g_strdup("N/A");
332                 else {
333                         m_TempItem->create_date = g_strdup(tempdate);
334                         free(tempdate);
335                 }
336                 mf_file_attr_get_file_size_info(&(m_TempItem->size), pNode);
337         }
338         if (ap->mf_Status.flagViewType == MF_VIEW_STYLE_LIST || ap->mf_Status.flagViewType == MF_VIEW_SYTLE_LIST_DETAIL) {
339                 if (ap->mf_Status.view_type == mf_view_root_category) {
340                         it = elm_genlist_item_append(parent, &categoryitc, m_TempItem, NULL, ELM_GENLIST_ITEM_NONE, mf_genlist_gl_sel, m_TempItem);
341                 } else {
342                         if (mf_file_attr_is_dir(m_TempItem->m_ItemName->str)) {
343                                 it = elm_genlist_item_append(parent, &userfolderitc, m_TempItem, NULL, ELM_GENLIST_ITEM_NONE, mf_genlist_gl_sel, m_TempItem);
344                         } else {
345                                 it = elm_genlist_item_append(parent, &itc, m_TempItem, NULL, ELM_GENLIST_ITEM_NONE, mf_genlist_gl_sel, m_TempItem);
346                         }
347                 }
348         } else {
349                 it = elm_gengrid_item_append(parent, &gic, m_TempItem, NULL, NULL);
350         }
351
352         m_TempItem->item = it;
353         free(real_name);
354         return it;
355 }
356
357 Evas_Object *mf_widget_get_part_content(Evas_Object *parent, const char *part)
358 {
359         mf_retvm_if(parent == NULL, NULL, "parent is NULL");
360         mf_retvm_if(part == NULL, NULL, "part is NULL");
361
362         Evas_Object *content = NULL;
363         content = elm_object_part_content_get(parent, part);
364         return content;
365 }
366
367 Evas_Object *mf_widget_unset_part_content(Evas_Object *parent, const char *part)
368 {
369         mf_retvm_if(parent == NULL, NULL, "parent is NULL");
370         mf_retvm_if(part == NULL, NULL, "part is NULL");
371
372         Evas_Object *content = NULL;
373         content = elm_object_part_content_unset(parent, part);
374         return content;
375 }
376
377 Evas_Object *mf_widget_util_create_button(Evas_Object *parent, char *style,
378                                    char *caption, Evas_Object *icon,
379                                    void (*func) (void *, Evas_Object *, void *),
380                                    void *data)
381 {
382         if (!parent)
383                 return NULL;
384
385         Evas_Object *btn;
386
387         btn = elm_button_add(parent);
388
389         if (style) {
390                 elm_object_style_set(btn, style);
391         }
392
393         if (caption) {
394                 elm_object_text_set(btn, mf_util_get_text(caption));
395                 mf_language_mgr_register_object(btn, OBJ_TYPE_ELM_OBJECT, NULL, caption);
396         }
397
398         if (icon)
399                 elm_object_content_set(btn, icon);
400
401         elm_object_focus_allow_set(btn, EINA_FALSE);
402         evas_object_propagate_events_set(btn, EINA_FALSE);
403
404         evas_object_smart_callback_add(btn, "clicked", func, (void *)data);
405
406         return btn;
407 }
408
409 static Eina_Bool __mf_widget_notify_popup_timer_cb(void *data)
410 {
411         struct appdata *ap = (struct appdata *)data;
412         mf_retvm_if(ap == NULL, EINA_FALSE, "ap is null");
413
414         mf_widget_unset_part_content(ap->mf_MainWindow.pNaviLayout,
415                                             "sel_contents");
416
417         SAFE_FREE_OBJ(ap->mf_MainWindow.pLabelLayout);
418         ap->mf_MainWindow.pPopupTimer = NULL;
419         return false;
420 }
421
422 Evas_Object *mf_widget_create_notify_popup(void *data,
423                                     Evas_Object *parent,
424                                     char *label,
425                                     mf_notify_popup_type type,
426                                     bool time_out,
427                                     void func(void *data, Evas_Object *obj, void *event_info))
428 {
429         MF_TRACE_BEGIN;
430         mf_retvm_if(data == NULL, NULL, "data is NULL");
431         mf_retvm_if(parent == NULL, NULL, "parent is NULL");
432         mf_retvm_if(label == NULL, NULL, "label is NULL");
433
434         struct appdata *ap = (struct appdata *)data;
435         mf_retvm_if(ap == NULL, NULL, "ap is NULL");
436
437         Evas_Object *countlabel = NULL;
438         if (ap->mf_MainWindow.pLabelLayout && ap->mf_MainWindow.pPopupTimer) {
439                 elm_object_part_text_set(ap->mf_MainWindow.pLabelLayout, "elm.text", label);
440                 countlabel = ap->mf_MainWindow.pLabelLayout;
441         } else {
442                 mf_widget_unset_part_content(ap->mf_MainWindow.pNaviLayout,
443                                                     "sel_contents");
444                 SAFE_FREE_OBJ(ap->mf_MainWindow.pLabelLayout);
445                 countlabel = elm_layout_add(parent);
446                 evas_object_size_hint_weight_set(countlabel,
447                                                  EVAS_HINT_EXPAND,
448                                                  EVAS_HINT_EXPAND);
449                 evas_object_size_hint_align_set(countlabel,
450                                                 EVAS_HINT_FILL,
451                                                 EVAS_HINT_FILL);
452                 elm_layout_theme_set(countlabel, "standard", "selectioninfo", "center_text");
453                 elm_object_part_text_set(countlabel, "elm.text", label);
454                 elm_object_part_content_set(parent,
455                                             "sel_contents",
456                                             countlabel);
457                 elm_object_signal_emit(countlabel, "show,selection,info", "elm");
458         }
459
460         SAFE_DEL_ECORE_TIMER(ap->mf_MainWindow.pPopupTimer);
461         if (time_out) {
462                 ap->mf_MainWindow.pPopupTimer = ecore_timer_add(3, __mf_widget_notify_popup_timer_cb, ap);
463         }
464
465         evas_object_show(countlabel);
466         MF_TRACE_END;
467         return countlabel;
468
469
470 }
471
472 void mf_widget_create_entryfield(void *data,
473                            Evas_Object *parent,
474                            void (*changed_cb)(void *data, Evas_Object *obj, void *event_info),
475                            void (*click_cb)(void *data, Evas_Object *obj, void *event_info))
476 {
477         struct appdata *ap = (struct appdata *)data;
478         mf_retm_if(ap == NULL, "ap is NULL");
479         Evas_Object *entry = NULL;
480
481         Evas_Object *edit_field = mf_widget_create_editfield(parent, &entry);
482
483         elm_entry_single_line_set(entry, EINA_TRUE);
484         elm_entry_scrollable_set(entry, EINA_TRUE);
485
486         elm_object_signal_emit(edit_field, "elm,state,eraser,show", "elm");
487
488         evas_object_size_hint_weight_set(edit_field, 1, 1);
489         evas_object_size_hint_align_set(edit_field, 1, 0.5);
490         //evas_object_show(edit_field);
491         ap->mf_MainWindow.pEditField = edit_field;
492
493         ap->mf_MainWindow.pEntry = entry;
494
495         evas_object_smart_callback_add(entry, "changed", changed_cb, ap);
496         elm_object_signal_callback_add(edit_field, "elm,eraser,clicked", "elm", mf_callback_eraser_clicked_cb, entry);
497
498         evas_object_show(entry);
499 }
500
501 Evas_Object *mf_widget_button_create(Evas_Object *parent, const char *label)
502 {
503         Evas_Object *btn = NULL;
504         btn = elm_button_add(parent);
505         if (label) {
506                 elm_object_text_set(btn, label);
507                 mf_language_mgr_register_object(btn, OBJ_TYPE_ELM_OBJECT, NULL, label);
508         }
509         return btn;
510
511 }
512 void mf_widget_panes_right_set(Evas_Object *panes, Evas_Object *content)
513 {
514         mf_retm_if(panes == NULL, "panes is NULL");
515         mf_retm_if(content == NULL, "content is NULL");
516         elm_object_part_content_set(panes, "right", content);
517 }
518
519 void mf_widget_panes_left_set(Evas_Object *panes, Evas_Object *content)
520 {
521         mf_retm_if(panes == NULL, "panes is NULL");
522         mf_retm_if(content == NULL, "content is NULL");
523         elm_object_part_content_set(panes, "left", content);
524 }
525
526
527 #ifdef MYFILE_SPLIT_VIEW
528 void mf_widget_unset_main_layout_content(Evas_Object *layout)
529 {
530         Evas_Object *unSet = NULL;
531         unSet = mf_widget_unset_part_content(layout, "elm.swallow.content");
532         evas_object_hide(unSet);
533
534 }
535
536 void mf_widget_unset_tabbar_layout_content(Evas_Object *layout)
537 {
538         mf_widget_unset_part_content(layout, "elm.swallow.content");
539         mf_widget_unset_part_content(layout, "elm.swallow.tabbar");
540
541 }
542 #endif
543
544 void mf_widget_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
545 {
546         if (obj) {
547                 evas_object_size_hint_min_set(obj, w, h);
548                 evas_object_size_hint_max_set(obj, w, h);
549         }
550 }
551
552 myfileNaviBar *mf_widget_phone_storage_init(void *data)
553 {
554         MF_TRACE_BEGIN;
555         mf_retvm_if(data == NULL, NULL, "data is NULL");
556         struct appdata *ap = (struct appdata*)data;
557
558         Evas_Object *parent = ap->mf_MainWindow.pWindow;
559
560         MF_TA_ACUM_ITEM_BEGIN("      mf_navi_bar_create_navi_bar", 0);
561         ap->mf_MainWindow.pNaviBar = mf_navi_bar_create_navi_bar(parent);
562
563         evas_object_smart_callback_add(ap->mf_MainWindow.pNaviBar, "title,clicked", mf_callback_naviframe_title_clicked_cb, NULL);
564
565         MF_TA_ACUM_ITEM_END("      mf_navi_bar_create_navi_bar", 0);
566
567         if (ap->mf_MainWindow.pNaviBar == NULL) {
568                 return NULL;
569         }
570         MF_TA_ACUM_ITEM_BEGIN("      make phone navi struct", 0);
571         myfileNaviBar *pNavi_phone = malloc(sizeof(myfileNaviBar));
572         mf_retvm_if(pNavi_phone == NULL, NULL, "pNavi_phone is NULL");
573         memset(pNavi_phone, 0, sizeof(myfileNaviBar));
574         pNavi_phone->naviFlagInUse = TRUE;
575         pNavi_phone->pCurrentPath = g_strdup(ap->mf_Status.path->str);
576         pNavi_phone->pre_more = MORE_DEFAULT;
577         pNavi_phone->pNaviLabel = strdup(GET_SYS_STR(MF_LABEL_PHONE));
578         /*insert phone navi into the navi_list */
579         /**    Todo:   if we need to check ap->mf_MainWindow.plistNaviBar?*/
580         ap->mf_MainWindow.plistNaviBar = eina_list_append(ap->mf_MainWindow.plistNaviBar, pNavi_phone);
581         MF_TA_ACUM_ITEM_END("      make phone navi struct", 0);
582         MF_TRACE_END;
583         return pNavi_phone;
584 }
585
586
587 void mf_widget_create(void *data)
588 {
589         MF_TRACE_BEGIN;
590         mf_retm_if(data == NULL, "data is NULL");
591
592 #ifdef MYFILE_SPLIT_VIEW
593         struct appdata *ap = (struct appdata*)data;
594         if (ap->mf_Status.rotation_type == MF_ROTATE_LANDSCAPE) {
595                 if (ap->mf_MainWindow.sSplitData.bFlagSplitViewCreate == FALSE) {
596                         mf_split_view_init(ap);
597                 }
598         }
599 #endif
600         MF_TRACE_END;
601
602 }
603
604
605 #ifdef MYFILE_SPLIT_VIEW
606 void mf_widget_set_main_layout_content(void *data)
607 {
608
609         MF_TRACE_BEGIN;
610         mf_retm_if(data == NULL, "data is NULL");
611
612         struct appdata *ap = (struct appdata*)data;
613         if (ap->mf_Status.more == MORE_SEARCH || ap->mf_Status.more == MORE_CREATE_FOLDER || (ap->mf_Status.more == MORE_RENAME && ap->mf_Status.preMore == MORE_SEARCH)) {
614                 return;
615         }
616
617         if (ap->mf_Status.view_type == mf_view_root_category || ap->mf_Status.view_type == mf_view_root) {
618                 return;
619         }
620
621         if (ap->mf_Status.rotation_type == MF_ROTATE_LANDSCAPE) {
622
623                 mf_widget_unset_main_layout_content(ap->mf_MainWindow.pMainLayout);
624                 elm_object_part_content_set(ap->mf_MainWindow.sSplitData.pMainLayout, "elm.swallow.content", ap->mf_MainWindow.pNaviBar);
625                 mf_widget_panes_right_set(ap->mf_MainWindow.sSplitData.pPanes, ap->mf_MainWindow.sSplitData.pMainLayout);
626                 mf_split_view_show(ap);
627                 elm_object_part_content_set(ap->mf_MainWindow.pMainLayout, "elm.swallow.content", ap->mf_MainWindow.sSplitData.pPanes);
628
629         } else {
630                 mf_split_view_unset_right_content(ap);
631                 mf_widget_unset_main_layout_content(ap->mf_MainWindow.pMainLayout);
632                 mf_split_view_hide(ap);
633                 evas_object_show(ap->mf_MainWindow.pMainLayout);
634                 elm_object_part_content_set(ap->mf_MainWindow.pMainLayout, "elm.swallow.content", ap->mf_MainWindow.pNaviBar);
635         }
636
637         MF_TRACE_END;
638
639 }
640 #endif
641 void mf_widget_refresh_view(void *data)
642 {
643         MF_TRACE_BEGIN;
644         mf_retm_if(data == NULL, "data is NULL");
645
646         struct appdata *ap = (struct appdata*)data;
647
648         if (ap->mf_Status.more == MORE_DEFAULT) {
649                 mf_navi_bar_create_default_view(ap);
650         } else if (ap->mf_Status.more == MORE_INTERNAL_COPY_MOVE || ap->mf_Status.more == MORE_INTERNAL_COPY || ap->mf_Status.more == MORE_INTERNAL_MOVE
651                    || ap->mf_Status.more == MORE_DATA_COPYING || ap->mf_Status.more == MORE_DATA_MOVING) {
652                 mf_navi_bar_create_path_select_view(ap);
653         } else if (ap->mf_Status.more == MORE_EDIT || ap->mf_Status.more == MORE_SHARE_EDIT) {
654                 mf_callback_edit_cb(ap, NULL, NULL);
655         }
656
657 #ifdef MYFILE_SPLIT_VIEW
658         if (ap->mf_Status.rotation_type == MF_ROTATE_LANDSCAPE) {
659                 mf_split_view_refresh(ap);
660         }
661 #endif
662         mf_navi_bar_remove_previous_contents(ap, ap->mf_MainWindow.pNaviBar);
663         MF_TRACE_END;
664 }
665
666 void mf_widget_set_navi_blocking(void * data,Eina_Bool is_locked)
667 {
668         MF_TRACE_BEGIN;
669         mf_retm_if(data == NULL, "data is NULL");
670
671         struct appdata *ap = (struct appdata*)data;
672         ap->mf_Status.flagNaviPush = is_locked;
673 }
674
675
676 #ifdef MYFILE_MOTION_FEATURE
677 void mf_widget_first_item_bring_in(void *data)
678 {
679         MF_TRACE_BEGIN;
680         mf_retm_if(data == NULL, "data is NULL");
681         struct appdata *ap = (struct appdata*)data;
682
683         Evas_Object *genlist = NULL;
684         genlist = ap->mf_MainWindow.pNaviGenlist;
685         if (ap->mf_Status.doubletab_event_handler) {
686                 ap->mf_Status.doubletab_event_handler(genlist);
687         }
688 }
689 #endif
690 void mf_widget_imf_hide_callback_register(Evas_Object *pConformant, void *data)
691 {
692         evas_object_smart_callback_add(pConformant, "virtualkeypad,state,off",
693                                mf_callback_imf_hide_cb, data);
694 }
695
696 void mf_widget_imf_hide_callback_del(Evas_Object *pConformant)
697 {
698         evas_object_smart_callback_del(pConformant, "virtualkeypad,state,off",
699                                        mf_callback_imf_hide_cb);
700 }
701
702