Tizen 2.0 Release
[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                         it = elm_genlist_item_append(parent, &userfolderitc, m_TempItem, NULL, ELM_GENLIST_ITEM_NONE, mf_genlist_gl_sel, m_TempItem);
343                 }
344         } else {
345                 it = elm_gengrid_item_append(parent, &gic, m_TempItem, NULL, NULL);
346         }
347
348         m_TempItem->item = it;
349         free(real_name);
350         return it;
351 }
352
353 Evas_Object *mf_widget_get_part_content(Evas_Object *parent, const char *part)
354 {
355         mf_retvm_if(parent == NULL, NULL, "parent is NULL");
356         mf_retvm_if(part == NULL, NULL, "part is NULL");
357
358         Evas_Object *content = NULL;
359         content = elm_object_part_content_get(parent, part);
360         return content;
361 }
362
363 Evas_Object *mf_widget_unset_part_content(Evas_Object *parent, const char *part)
364 {
365         mf_retvm_if(parent == NULL, NULL, "parent is NULL");
366         mf_retvm_if(part == NULL, NULL, "part is NULL");
367
368         Evas_Object *content = NULL;
369         content = elm_object_part_content_unset(parent, part);
370         return content;
371 }
372
373 Evas_Object *mf_widget_util_create_button(Evas_Object *parent, char *style,
374                                    char *caption, Evas_Object *icon,
375                                    void (*func) (void *, Evas_Object *, void *),
376                                    void *data)
377 {
378         if (!parent)
379                 return NULL;
380
381         Evas_Object *btn;
382
383         btn = elm_button_add(parent);
384
385         if (style) {
386                 elm_object_style_set(btn, style);
387         }
388
389         if (caption) {
390                 elm_object_text_set(btn, mf_util_get_text(caption));
391                 mf_language_mgr_register_object(btn, OBJ_TYPE_ELM_OBJECT, NULL, caption);
392         }
393
394         if (icon)
395                 elm_object_content_set(btn, icon);
396
397         elm_object_focus_allow_set(btn, EINA_FALSE);
398         evas_object_propagate_events_set(btn, EINA_FALSE);
399
400         evas_object_smart_callback_add(btn, "clicked", func, (void *)data);
401
402         return btn;
403 }
404
405 static Eina_Bool __mf_widget_notify_popup_timer_cb(void *data)
406 {
407         struct appdata *ap = (struct appdata *)data;
408         mf_retvm_if(ap == NULL, EINA_FALSE, "ap is null");
409
410         mf_widget_unset_part_content(ap->mf_MainWindow.pNaviLayout,
411                                             "sel_contents");
412
413         SAFE_FREE_OBJ(ap->mf_MainWindow.pLabelLayout);
414         ap->mf_MainWindow.pPopupTimer = NULL;
415         return false;
416 }
417
418 Evas_Object *mf_widget_create_notify_popup(void *data,
419                                     Evas_Object *parent,
420                                     char *label,
421                                     mf_notify_popup_type type,
422                                     bool time_out,
423                                     void func(void *data, Evas_Object *obj, void *event_info))
424 {
425         MF_TRACE_BEGIN;
426         mf_retvm_if(data == NULL, NULL, "data is NULL");
427         mf_retvm_if(parent == NULL, NULL, "parent is NULL");
428         mf_retvm_if(label == NULL, NULL, "label is NULL");
429
430         struct appdata *ap = (struct appdata *)data;
431         mf_retvm_if(ap == NULL, NULL, "ap is NULL");
432
433         Evas_Object *countlabel = NULL;
434         if (ap->mf_MainWindow.pLabelLayout && ap->mf_MainWindow.pPopupTimer) {
435                 elm_object_part_text_set(ap->mf_MainWindow.pLabelLayout, "elm.text", label);
436                 countlabel = ap->mf_MainWindow.pLabelLayout;
437         } else {
438                 mf_widget_unset_part_content(ap->mf_MainWindow.pNaviLayout,
439                                                     "sel_contents");
440                 SAFE_FREE_OBJ(ap->mf_MainWindow.pLabelLayout);
441                 countlabel = elm_layout_add(parent);
442                 evas_object_size_hint_weight_set(countlabel,
443                                                  EVAS_HINT_EXPAND,
444                                                  EVAS_HINT_EXPAND);
445                 evas_object_size_hint_align_set(countlabel,
446                                                 EVAS_HINT_FILL,
447                                                 EVAS_HINT_FILL);
448                 elm_layout_theme_set(countlabel, "standard", "selectioninfo", "center_text");
449                 elm_object_part_text_set(countlabel, "elm.text", label);
450                 elm_object_part_content_set(parent,
451                                             "sel_contents",
452                                             countlabel);
453                 elm_object_signal_emit(countlabel, "show,selection,info", "elm");
454         }
455
456         SAFE_DEL_ECORE_TIMER(ap->mf_MainWindow.pPopupTimer);
457         if (time_out) {
458                 ap->mf_MainWindow.pPopupTimer = ecore_timer_add(3, __mf_widget_notify_popup_timer_cb, ap);
459         }
460
461         evas_object_show(countlabel);
462         MF_TRACE_END;
463         return countlabel;
464
465
466 }
467
468 void mf_widget_create_entryfield(void *data,
469                            Evas_Object *parent,
470                            void (*changed_cb)(void *data, Evas_Object *obj, void *event_info),
471                            void (*click_cb)(void *data, Evas_Object *obj, void *event_info))
472 {
473         struct appdata *ap = (struct appdata *)data;
474         mf_retm_if(ap == NULL, "ap is NULL");
475         Evas_Object *entry = NULL;
476
477         Evas_Object *edit_field = mf_widget_create_editfield(parent, &entry);
478
479         elm_entry_single_line_set(entry, EINA_TRUE);
480         elm_entry_scrollable_set(entry, EINA_TRUE);
481
482         elm_object_signal_emit(edit_field, "elm,state,eraser,show", "elm");
483
484         evas_object_size_hint_weight_set(edit_field, 1, 1);
485         evas_object_size_hint_align_set(edit_field, 1, 0.5);
486         //evas_object_show(edit_field);
487         ap->mf_MainWindow.pEditField = edit_field;
488
489         ap->mf_MainWindow.pEntry = entry;
490
491         evas_object_smart_callback_add(entry, "changed", changed_cb, ap);
492         elm_object_signal_callback_add(edit_field, "elm,eraser,clicked", "elm", mf_callback_eraser_clicked_cb, entry);
493
494         evas_object_show(entry);
495 }
496
497 Evas_Object *mf_widget_button_create(Evas_Object *parent, const char *label)
498 {
499         Evas_Object *btn = NULL;
500         btn = elm_button_add(parent);
501         if (label) {
502                 elm_object_text_set(btn, label);
503                 mf_language_mgr_register_object(btn, OBJ_TYPE_ELM_OBJECT, NULL, label);
504         }
505         return btn;
506
507 }
508 void mf_widget_panes_right_set(Evas_Object *panes, Evas_Object *content)
509 {
510         mf_retm_if(panes == NULL, "panes is NULL");
511         mf_retm_if(content == NULL, "content is NULL");
512         elm_object_part_content_set(panes, "right", content);
513 }
514
515 void mf_widget_panes_left_set(Evas_Object *panes, Evas_Object *content)
516 {
517         mf_retm_if(panes == NULL, "panes is NULL");
518         mf_retm_if(content == NULL, "content is NULL");
519         elm_object_part_content_set(panes, "left", content);
520 }
521
522
523 #ifdef MYFILE_SPLIT_VIEW
524 void mf_widget_unset_main_layout_content(Evas_Object *layout)
525 {
526         Evas_Object *unSet = NULL;
527         unSet = mf_widget_unset_part_content(layout, "elm.swallow.content");
528         evas_object_hide(unSet);
529
530 }
531
532 void mf_widget_unset_tabbar_layout_content(Evas_Object *layout)
533 {
534         mf_widget_unset_part_content(layout, "elm.swallow.content");
535         mf_widget_unset_part_content(layout, "elm.swallow.tabbar");
536
537 }
538 #endif
539
540 void mf_widget_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
541 {
542         if (obj) {
543                 evas_object_size_hint_min_set(obj, w, h);
544                 evas_object_size_hint_max_set(obj, w, h);
545         }
546 }
547
548 myfileNaviBar *mf_widget_phone_storage_init(void *data)
549 {
550         MF_TRACE_BEGIN;
551         mf_retvm_if(data == NULL, NULL, "data is NULL");
552         struct appdata *ap = (struct appdata*)data;
553
554         Evas_Object *parent = ap->mf_MainWindow.pWindow;
555
556         MF_TA_ACUM_ITEM_BEGIN("      mf_navi_bar_create_navi_bar", 0);
557         ap->mf_MainWindow.pNaviBar = mf_navi_bar_create_navi_bar(parent);
558
559         evas_object_smart_callback_add(ap->mf_MainWindow.pNaviBar, "title,clicked", mf_callback_naviframe_title_clicked_cb, NULL);
560
561         MF_TA_ACUM_ITEM_END("      mf_navi_bar_create_navi_bar", 0);
562
563         if (ap->mf_MainWindow.pNaviBar == NULL) {
564                 return NULL;
565         }
566         MF_TA_ACUM_ITEM_BEGIN("      make phone navi struct", 0);
567         myfileNaviBar *pNavi_phone = malloc(sizeof(myfileNaviBar));
568         mf_retvm_if(pNavi_phone == NULL, NULL, "pNavi_phone is NULL");
569         memset(pNavi_phone, 0, sizeof(myfileNaviBar));
570         pNavi_phone->naviFlagInUse = TRUE;
571         pNavi_phone->pCurrentPath = g_strdup(ap->mf_Status.path->str);
572         pNavi_phone->pre_more = MORE_DEFAULT;
573         pNavi_phone->pNaviLabel = strdup(GET_SYS_STR(MF_LABEL_PHONE));
574         /*insert phone navi into the navi_list */
575         /**    Todo:   if we need to check ap->mf_MainWindow.plistNaviBar?*/
576         ap->mf_MainWindow.plistNaviBar = eina_list_append(ap->mf_MainWindow.plistNaviBar, pNavi_phone);
577         MF_TA_ACUM_ITEM_END("      make phone navi struct", 0);
578         MF_TRACE_END;
579         return pNavi_phone;
580 }
581
582
583 void mf_widget_create(void *data)
584 {
585         MF_TRACE_BEGIN;
586         mf_retm_if(data == NULL, "data is NULL");
587
588 #ifdef MYFILE_SPLIT_VIEW
589         struct appdata *ap = (struct appdata*)data;
590         if (ap->mf_Status.rotation_type == MF_ROTATE_LANDSCAPE) {
591                 if (ap->mf_MainWindow.sSplitData.bFlagSplitViewCreate == FALSE) {
592                         mf_split_view_init(ap);
593                 }
594         }
595 #endif
596         MF_TRACE_END;
597
598 }
599
600
601 #ifdef MYFILE_SPLIT_VIEW
602 void mf_widget_set_main_layout_content(void *data)
603 {
604
605         MF_TRACE_BEGIN;
606         mf_retm_if(data == NULL, "data is NULL");
607
608         struct appdata *ap = (struct appdata*)data;
609         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)) {
610                 return;
611         }
612
613         if (ap->mf_Status.view_type == mf_view_root_category || ap->mf_Status.view_type == mf_view_root) {
614                 return;
615         }
616
617         if (ap->mf_Status.rotation_type == MF_ROTATE_LANDSCAPE) {
618
619                 mf_widget_unset_main_layout_content(ap->mf_MainWindow.pMainLayout);
620                 elm_object_part_content_set(ap->mf_MainWindow.sSplitData.pMainLayout, "elm.swallow.content", ap->mf_MainWindow.pNaviBar);
621                 mf_widget_panes_right_set(ap->mf_MainWindow.sSplitData.pPanes, ap->mf_MainWindow.sSplitData.pMainLayout);
622                 mf_split_view_show(ap);
623                 elm_object_part_content_set(ap->mf_MainWindow.pMainLayout, "elm.swallow.content", ap->mf_MainWindow.sSplitData.pPanes);
624
625         } else {
626                 mf_split_view_unset_right_content(ap);
627                 mf_widget_unset_main_layout_content(ap->mf_MainWindow.pMainLayout);
628                 mf_split_view_hide(ap);
629                 evas_object_show(ap->mf_MainWindow.pMainLayout);
630                 elm_object_part_content_set(ap->mf_MainWindow.pMainLayout, "elm.swallow.content", ap->mf_MainWindow.pNaviBar);
631         }
632
633         MF_TRACE_END;
634
635 }
636 #endif
637 void mf_widget_refresh_view(void *data)
638 {
639         MF_TRACE_BEGIN;
640         mf_retm_if(data == NULL, "data is NULL");
641
642         struct appdata *ap = (struct appdata*)data;
643
644         if (ap->mf_Status.more == MORE_DEFAULT) {
645                 mf_navi_bar_create_default_view(ap);
646         } else if (ap->mf_Status.more == MORE_INTERNAL_COPY_MOVE || ap->mf_Status.more == MORE_INTERNAL_COPY || ap->mf_Status.more == MORE_INTERNAL_MOVE
647                    || ap->mf_Status.more == MORE_DATA_COPYING || ap->mf_Status.more == MORE_DATA_MOVING) {
648                 mf_navi_bar_create_path_select_view(ap);
649         } else if (ap->mf_Status.more == MORE_EDIT) {
650                 mf_callback_edit_cb(ap, NULL, NULL);
651         }
652
653 #ifdef MYFILE_SPLIT_VIEW
654         if (ap->mf_Status.rotation_type == MF_ROTATE_LANDSCAPE) {
655                 mf_split_view_refresh(ap);
656         }
657 #endif
658         mf_navi_bar_remove_previous_contents(ap, ap->mf_MainWindow.pNaviBar);
659         MF_TRACE_END;
660 }
661
662 void mf_widget_set_navi_blocking(void * data,Eina_Bool is_locked)
663 {
664         MF_TRACE_BEGIN;
665         mf_retm_if(data == NULL, "data is NULL");
666
667         struct appdata *ap = (struct appdata*)data;
668         ap->mf_Status.flagNaviPush = is_locked;
669 }
670
671
672 #ifdef MYFILE_MOTION_FEATURE
673 void mf_widget_first_item_bring_in(void *data)
674 {
675         MF_TRACE_BEGIN;
676         mf_retm_if(data == NULL, "data is NULL");
677         struct appdata *ap = (struct appdata*)data;
678
679         Evas_Object *genlist = NULL;
680         genlist = ap->mf_MainWindow.pNaviGenlist;
681         if (ap->mf_Status.doubletab_event_handler) {
682                 ap->mf_Status.doubletab_event_handler(genlist);
683         }
684 }
685 #endif
686 void mf_widget_imf_hide_callback_register(Evas_Object *pConformant, void *data)
687 {
688         evas_object_smart_callback_add(pConformant, "virtualkeypad,state,off",
689                                mf_callback_imf_hide_cb, data);
690 }
691
692 void mf_widget_imf_hide_callback_del(Evas_Object *pConformant)
693 {
694         evas_object_smart_callback_del(pConformant, "virtualkeypad,state,off",
695                                        mf_callback_imf_hide_cb);
696 }
697
698