Tizen 2.0 Release
[apps/core/preloaded/myfiles.git] / src / include / mf-widget.h
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 #ifndef __DEF_MYFILE_WINSET_H_
20 #define __DEF_MYFILE_WENSET_H_
21
22 #include <stdio.h>
23 #include <assert.h>
24 #include <glib.h>
25
26
27 #include "mf-conf.h"
28 #include "mf-fs-util.h"
29 #include "mf-callback.h"
30 #include "mf-split-view.h"
31 #include "mf-gengrid.h"
32 #include "mf-dlog.h"
33 #include "mf-resource.h"
34
35
36 #define NAVI_MORE_BUTTON_PART           "toolbar_more_btn"
37 #define NAVI_BOTTOM_BUTTON_1_PART       "toolbar_button1"
38 #define NAVI_BOTTOM_BUTTON_2_PART       "toolbar_button2"
39 #define NAVI_BUTTON_STYLE               "naviframe/toolbar/default"
40 #define NAVI_BUTTON_EDIT                "naviframe/more/default"
41
42 #define CTRL_STYLE_TYPE         "controlbar"
43 #define TITLE_LEFT_BTN          "title_left_btn"
44 #define TITLE_RIGHT_BTN         "title_right_btn"
45 #define TITLE_BTN_STYLE "elm/button/base/naviframe/title_icon"
46
47 /***********    Layout APIs     ***********/
48 Evas_Object *mfCreateLayout(Evas_Object *parent, char *label, void(*_back_cb)(void *, Evas_Object *, void *), void *data);
49 void mfDeleteLayout(Evas_Object *pLayout);
50
51 /***********    TabBar APIs     ***********/
52 Evas_Object *mf_tab_bar_create_tab_bar(Evas_Object *parent);
53 Elm_Object_Item *mf_tab_bar_append_item(Evas_Object *pTabBar, char *pTabIconPath, char *pTabBarLabel, void *user_data);
54 void mf_tab_bar_set_selected_item(Elm_Object_Item *pItem);
55 void mf_tab_bar_set_item_view(Evas_Object *parent, Evas_Object *tab_layout, Evas_Object *view);
56 void mf_tab_bar_set_item_disabled(Evas_Object *pTabBar, Eina_Bool disable);
57 Elm_Object_Item *mf_tab_bar_get_item_by_label(Evas_Object *pTabBar, char *pTabLabel);
58 int mf_tab_bar_items_count_get(Evas_Object *pTabBar);
59 void mf_tab_bar_items_del(Evas_Object *pTabBar);
60 void mf_tab_bar_generate(void *data);
61
62 /***********    Control Bar Definitions ***********/
63 #define EDIT_SEG_COUNT  3
64 #define OPER_SEG_COUNT  5
65
66 #define MF_CTRL_ICON_NEW_FOLDER_CREATE                          ICON_PATH"/myfile_icon_create_folder.png"
67 #define MF_CTRL_ICON_LIST_BY                                    ICON_PATH"/myfile_icon_list_by.png"
68 #define MF_CTRL_ICON_EDIT                                       ICON_PATH"/myfile_icon_edit.png"
69 #define MF_CTRL_ICON_COPY                                       ICON_PATH"/myfile_icon_copy.png"
70 #define MF_CTRL_ICON_MOVE                                       ICON_PATH"/myfile_icon_move.png"
71 #define MF_CTRL_ICON_PASTE_HERE                                 ICON_PATH"/myfile_icon_paste_here.png"
72 #define MF_CTRL_ICON_MOVE_HERE                                  ICON_PATH"/myfile_icon_move_here.png"
73 #define MF_CTRL_ICON_DELETE                                     ICON_PATH"/myfile_icon_delete.png"
74 #define MF_CTRL_ICON_SEND                                       ICON_PATH"/myfile_icon_share.png"
75 #define MF_CTRL_ICON_STORE_HERE                                 ICON_PATH"/myfile_icon_store_here.png"
76 #define MF_CTRL_ICON_CANCEL                                     ICON_PATH"/myfile_icon_cancel.png"
77 #define MF_CTRL_ICON_SAVE                                       ICON_PATH"/myfile_icon_done.png"
78 #define MF_CTRL_ICON_SEARCH                                     ICON_PATH"/myfile_icon_search.png"
79 #define MF_TITLE_ICON_HOME                                      ICON_PATH"/Controlbar/U01_controlbar_cion_home.png"
80 #define MF_TITLE_ICON_HOME_PRESS                                ICON_PATH"/Controlbar/U01_controlbar_cion_home_press.png"
81 #define MF_TITLE_ICON_UPPER                                     ICON_PATH"/Controlbar/U01_controlbar_cion_up_folder.png"
82 #define MF_TITLE_ICON_UPPER_PRESS                               ICON_PATH"/Controlbar/U01_controlbar_cion_up_folder_press.png"
83 #define MF_TITLE_ICON_SELECT_ALL                                ICON_PATH"/00_icon_select_all_web.png"
84 #define MF_TITLE_ICON_SELECT_ALL_PRESS                          ICON_PATH"/00_icon_select_all_press_web.png"
85 #define MF_TITLE_ICON_SELECT_ALL_DIM                            ICON_PATH"/00_icon_select_all_dim_web.png"
86
87 typedef enum _eCtrlBarButtonType eCtrlBarButtonType;
88 enum _eCtrlBarButtonType {
89         CTRL_BUTTON_NEW_FOLDER_CREATE = 0,
90         CTRL_BUTTON_LIST_BY,
91         CTRL_BUTTON_EDIT,
92         CTRL_BUTTON_COPY,
93         CTRL_BUTTON_MOVE,
94         CTRL_BUTTON_DELETE,
95         CTRL_BUTTON_SEND,
96         CTRL_BUTTON_PASTE_HERE,
97         CTRL_BUTTON_MOVE_HERE,
98         CTRL_BUTTON_CANCEL,
99         CTRL_BUTTON_SAVE,
100         CTRL_BUTTON_COPY_MOVE,
101         CTRL_BUTTON_SEARCH,
102         CTRL_BUTTON_MAX
103 };
104
105 /***********    Control Bar APIs        ***********/
106 Evas_Object *mf_ctrl_bar_create(void *data, Evas_Object *parent);
107 void mf_ctrl_bar_item_set_disable(Evas_Object *ctrl_bar, int disable_item, bool disable);
108 void mf_ctrl_bar_reset(void *data);
109 int mf_ctrl_bar_item_get_disable(Evas_Object *ctrl_bar);
110
111
112 /***********    Navigation Bar Definition       ************/
113 #define MF_POPUP_TIMEOUT_NORMAL         3
114 #define MF_POPUP_TIMEOUT_SHORT          2
115
116 typedef enum {
117         NAVI_BAR_MIN = 0,
118         NAVI_BAR_DEFAULT,       /*when MMC is on, show All/Phone/Memory Card together OR when copy/move show phone and mmc*/
119         NAVI_BAR_TITLE,         /*when MMC is off, show "myfile" only*/
120         NAVI_BAR_PATH_WITH_ONE_ACTION,
121         NAVI_BAR_PATH_WITH_TWO_ACTION,
122         NAVI_BAR_MAX
123 } eNaviBarStyle;
124
125
126 /***********    Navigation Bar API              ************/
127 #define MF_NAVI_STYLE_ENABLE    "basic"
128 #define MF_NAVI_STYLE_DISABLE   "basic/instant"
129
130 typedef enum _MF_NAVIFRAME_ITEM_DEL_TYPE {
131         MF_NAVIFRAME_ITEM_DEL_DIRECTLY,
132         MF_NAVIFRAME_ITEM_DEL_BY_NAVI
133 }MF_NAVIFRAME_ITEM_DEL_TYPE;
134
135 typedef enum __mf_notify_popup_type {
136         mf_notify_popup_normal,
137         mf_notify_popup_layout
138 }mf_notify_popup_type;
139
140 typedef enum __mf_navi_btn_type mf_navi_btn_typ;
141 enum __mf_navi_btn_type {
142         MF_NAVI_BTN_MORE = 0,
143         MF_NAVI_BTN_SHARE,
144         MF_NAVI_MORE_MAX
145 };
146
147
148 Evas_Object *mf_navi_bar_create_navi_bar(Evas_Object *parent);
149 Evas_Object *mfNaviBarConformGet(void *data);
150 void mf_navi_bar_set_ctrl_bar(struct appdata *data);
151 Evas_Object *mf_navi_bar_get_content(Evas_Object *pConform);
152 void mf_navi_bar_set_style(void *data, eNaviBarStyle navi_style, Evas_Object *NaviContent);
153 void mf_navi_bar_set_selected_count_label(void *data, int dir_count, int file_count);
154 void mf_navi_bar_create_default_view(void *data);
155 void mf_navi_bar_create_edit_view(void *data);
156 void mf_navi_bar_create_path_select_view(void *data);
157 void mf_navi_bar_create_path_select_view_otg_root(void *data);
158 void mf_navi_bar_create_search_view(void *data);
159 myfileNaviBar *mf_navi_bar_get_in_use(void *data);
160 void mf_navi_bar_object_reset(myfileNaviBar *pNavi_s);
161 bool mf_navi_bar_remove_list_item_by_label(void *data, const char *pNaviLabel);
162 myfileNaviBar *mf_navi_bar_get_struct_by_label(void *data, const char *pNaviLabel);
163 void mf_navi_bar_refresh_recovered_view(void *data, myfileNaviBar * pNaviStruct);
164 myfileNaviBar *mf_navi_bar_recover_list(void *data);
165 myfileNaviBar *mf_navi_bar_get_edit_start(void *data);
166 bool mf_navi_bar_is_navi_empty(void *data, char *label);
167 Evas_Object *mf_navi_bar_get_box_end(Evas_Object * pBox);
168 void mf_navi_bar_set_upper_item_disable(void *data, bool bFlag);
169 void mf_navi_bar_recover_info_box(void *data, myfileNaviBar *pNavi_s);
170 void mf_navi_bottom_item_del(Elm_Object_Item **pPreNaviItem);
171 Evas_Object *mf_navi_bar_get_edit_genlist(void *data);
172 Evas_Object *mf_navi_bar_upper_create(Evas_Object *parent);
173 void mf_navi_bar_remove_back_button(Elm_Object_Item *pNaviItem);
174 Evas_Object *mf_navi_bar_pathinfo_label_create(Evas_Object *parent, char *pathinfo);
175 void mfNaviBarSetContent(void *data, Evas_Object *pLayout, Evas_Object *NaviContent);
176 myfileNaviBar *mf_navi_bar_get_navi_from_navilist(Eina_List *navilist, const char *label);
177 void mf_navi_bar_transition_finished_cb(void *data, Evas_Object *obj, void *event_info);
178 void mf_navi_bar_remove_previous_contents(void *data, Evas_Object *pNaviBar);
179 void mf_navi_add_back_button(void *data);
180 void mf_navi_bar_del_item_directly(void *data);
181 Evas_Object *mf_navi_bar_content_create(void *data);
182 void mf_navi_bar_edit_list_update(void *data);
183 void mf_navi_bar_reset_panes_main(void *data);
184 void mf_navi_bar_create_rename_view(void *data);
185 void mf_navi_bar_title_set(void *data);
186 Evas_Object *mf_navi_bar_create_header_box(void *data);
187 void mf_navi_bar_reset_ctrl_button(void *data);
188 void mf_navi_bar_button_set_disable(Elm_Object_Item *navi_it, int disable_item, bool disable);
189 int mf_navi_bar_button_get_disable(Elm_Object_Item *navi_it);
190 void mf_navi_bar_set_toolbar_visible(Elm_Object_Item *navi_item, bool visible);
191 void mf_navi_bar_set_panes_navi_to_main(void *data);
192
193 /***********    Content Definition              ************/
194 #define INTERVAL_THUMB_UPDATE   0.5
195
196 typedef struct {
197         GString *m_ItemName;
198         char *size;
199         char *create_date;
200         char *thumb_path;
201         Eina_Bool m_checked;
202         bool real_thumb_flag;
203         int flagExpand;
204         Evas_Object *pCheckBox;
205         Elm_Object_Item *item;
206         bool unregister_lang_mgr;
207         media_info_h media;
208         struct appdata *ap;
209 } mfItemData_s;
210
211 typedef enum __eMfViewStyle {
212         MF_VIEW_STYLE_LIST,
213         MF_VIEW_SYTLE_LIST_DETAIL,
214         MF_VIEW_STYLE_THUMBNAIL,
215 }eMfViewStyle;
216
217 /***********    Content API                     ************/
218 void mf_genlist_get_list_selected_files(Evas_Object * pGenlist, Eina_List **list);
219 Evas_Object *mf_genlist_create_list(void *data, Evas_Object *parent);
220 Evas_Object *mfSearchResultListView(void *data);
221 Evas_Object *mf_genlist_create_list_new_folder_style(void *data);
222 void mf_genlist_sweep_item_recover(Evas_Object *obj);
223 void mf_genlist_create_list_default_style(Evas_Object *pGenlist, void *data, Eina_List *dir_list,
224                                           Eina_List *file_list);
225 int mf_util_generate_list_data(const char *path, Eina_List ** default_dir_list, Eina_List ** user_dir_list, Eina_List ** file_list);
226
227 void mf_genlist_update_default_view_item_style(void *data);
228 void mf_genlist_update_edit_view_item_style(void *data);
229 void mf_genlist_clear(Evas_Object *genlist);
230 void mf_genlist_rename_done(void *data, Evas_Object *obj, void *event_info);
231 #ifdef MYFILE_SPLIT_VIEW
232 Elm_Object_Item *mf_genlist_split_root_item_append(void *data, Evas_Object *pGenlist, const char *name);
233 void mf_genlist_split_left_genlist_style(void *data);
234 void mf_genlist_split_root_items_append(Evas_Object *pGenlist, void *data);
235 Elm_Object_Item *mf_genlist_split_left_items_append( void *data, Evas_Object *pGenlist, Elm_Object_Item *parent_item, Eina_List *dir_list);
236 #endif
237 Evas_Object *mf_genlist_create_list_rename_style(void *data);
238 void mf_genlist_create_search_itc();
239 void mf_genlist_get_list_selected_items(Evas_Object * pGenlist, Eina_List **list);
240 void mf_genlist_gl_sel(void *data, Evas_Object * obj, void *event_info);
241 void mf_genlist_create_data(mfItemData_s **m_TempItem, const char *name, void *data);
242
243
244 /***********    Popup Definition        ************/
245 typedef struct _StorageData_s StorageData_s;
246
247 struct _StorageData_s{
248         char *label;
249         int index;
250         bool unregister_lang_mgr;
251         Elm_Object_Item *item;
252         struct appdata *ap;
253 } ;
254
255 typedef enum {
256         POPMODE_MIN = 0,
257         POPMODE_TEXT,
258         POPMODE_TITLE_TEXT,
259         POPMODE_TEXT_NOT_DISABLED,
260         POPMODE_TEXT_BTN_SEARCH,
261         POPMODE_TEXT_TWO_BTN,
262         POPMODE_TITLE_TEXT_TWO_BTN,
263         POPMODE_TEXT_BTN,
264         POPMODE_TITLE_TEXT_BTN,
265         POPMODE_TITLE_TEXT_THREE_BTN,
266         POPMODE_PROGRESSBAR,
267         POPMODE_TITLE_LIST_BTN,
268         POPMODE_STORAGE_BTN,
269         POPMODE_VIEW_AS_LIST,
270         POPMPDE_MAX
271 } ePopMode;
272
273 typedef enum {
274         ELM_POPUP_NONE,
275         ELM_POPUP_YES,
276         ELM_POPUP_NO,
277         ELM_POPUP_OK,
278         ELM_POPUP_CANCLE,
279         ELM_POPUP_AUTO_RENAME,
280         ELM_POPUP_REPLACE,
281         ELM_POPUP_PHONE,
282         ELM_POPUP_MEMORY,
283         ELM_POPUP_MOVE,
284         ELM_POPUP_DELETE,
285         ELM_POPUP_MAX
286 } ePopInfo;
287
288 typedef struct _myfilePopupListData {
289         int index;
290         bool unregister_lang_mgr;
291         Elm_Object_Item *item;
292         struct appdata *ap;
293 } myfilePopupListData;
294
295
296 /***********    Popup API               ************/
297 Evas_Object *mf_popup_create_popup(void *data, ePopMode popupMode, char *title, const char *context, const char *first_btn_text, const char *second_btn_text,
298                                    const char *third_btn_text, Evas_Smart_Cb func, void *param);
299 Evas_Object *mf_popup_create_pb_popup(void *data, char *context, int file_count, void *func, void *param);
300 void mf_popup_indicator_popup(void *data, const char *text);
301
302 /***********    Search Bar API  ************/
303 Evas_Object *mfSearchBarCreate(void *data);
304
305 /***********RenameView API***********/
306 void rename_item_add(mfItemData_s *data);
307 void mfTitleStyleSet(void *data, int titleStyle, char *title, char *leftbtn, char *rightbtn);
308 void mfTitleSet(void *data, char *title);
309 void mfTitleCallBackSet(void *data, int titleCbStyle);
310
311
312 /****Create New Folder API ***********/
313 void mf_navi_bar_create_new_folder_view(void *data);
314 void mfNewFolderNaviBarSetStyle(myfileNaviBar *pNavi_s, Evas_Object *NaviContent);
315
316
317 /****Search Related API ********/
318 void mf_search_bar_enter_search_routine(void *data, Evas_Object *obj, void *event_info);
319 void mf_search_bar_search_started_callback(void *data, Evas_Object *obj, void *event_info);
320 void mf_search_bar_category_search(void *data, int category);
321
322
323
324 void __mf_genlist_select_all_layout_mouse_down_cb(void *data, Evas * evas, Evas_Object * obj, void *event_info);
325 void __mf_genlist_select_all_check_changed_cb(void *data, Evas_Object * obj, void *event_info);
326 Evas_Object *mf_widget_create_select_all_layout(Evas_Object *parent);
327
328 void mf_genlist_gl_edit_item_selected(void *data);
329 void mf_genlist_gl_selected(void *data, Evas_Object * obj, void *event_info);
330 void mf_genlist_gl_mode_sweep_set(void *data, Evas_Object *obj, void *event_info);
331 void mf_genlist_gl_mode_sweep_unset(void *data, Evas_Object *obj, void *event_info);
332 void mf_genlist_gl_mode_cancel(void *data, Evas_Object * obj, void *event_info);
333 void mf_genlist_set_category_list_style();
334
335 /************* widget API   **************/
336
337 typedef enum __MF_ROTATE_TYPE {
338         MF_ROTATE_PORTRAIT,
339         MF_ROTATE_LANDSCAPE
340 }MF_ROTATE_TYPE;
341
342 typedef enum __MF_RM_NAVI_ITEM_TYPE {
343         MF_RM_NAVI_ITEM_DIRECTLY,
344         MF_RM_NAVI_ITEM_BY_EFFECT
345 }MF_RM_NAVI_ITEM_TYPE;
346
347 /*****************  Context POP  *************/
348 void mf_context_popup_create_more(void *data, Evas_Object *parent);
349 int mousedown_cb( void *data, int type, void *event );
350 void mf_context_popup_get_more_position(Evas_Object *obj, int *x, int *y);
351 void mf_context_popup_create_share(void *data, int share_mode, Evas_Object *parent);
352 void mf_context_popup_create_gengrid(void *data);
353
354 myfileNaviBar *mf_widget_phone_storage_init(void *data);
355 void mf_widget_refresh_view(void *data);
356 void mf_widget_set_main_layout_content(void *data);
357 void mf_widget_create(void *data);
358 void mf_widget_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h);
359 Evas_Object *mf_widget_create_select_all_layout(Evas_Object *parent);
360 Evas_Object *mf_widget_create_no_content(Evas_Object *parent);
361 Evas_Object *mf_widget_create_check_box(Evas_Object *parent);
362 Evas_Object *mf_widget_create_conform(Evas_Object * parent);
363 Evas_Object *mf_widget_create_layout(Evas_Object *parent, const char *edj, const char *grp_name);
364 Evas_Object *mf_widget_create_box(Evas_Object * parent);
365 Evas_Object *mf_widget_create_genlist(Evas_Object *parent);
366 Evas_Object *mf_widget_util_create_button(Evas_Object *parent, char *style,
367                                    char *caption, Evas_Object *icon,
368                                    void (*func) (void *, Evas_Object *, void *),
369                                    void *data);
370
371 void mf_widget_set_navi_blocking(void * data,Eina_Bool is_locked);
372 void mf_widget_unset_main_layout_content(Evas_Object *layout);
373 void mf_widget_panes_right_set(Evas_Object *panes, Evas_Object *content);
374 Evas_Object *mf_widget_create_editfield(Evas_Object *parent, Evas_Object **pEntry);
375 Evas_Object *mf_widget_button_create(Evas_Object *parent, const char *label);
376 Evas_Object *mf_widget_create_notify_popup(void *data,
377                                     Evas_Object *parent,
378                                     char *label,
379                                     mf_notify_popup_type type,
380                                     bool time_out,
381                                     void func(void *data, Evas_Object *obj, void *event_info));
382 void mf_widget_items_remove(Evas_Object *parent, int storage, int type);
383 Evas_Object *mf_widget_unset_part_content(Evas_Object *parent, const char *part);
384
385
386 /*************** Widget *********************/
387 #ifdef MYFILE_MOTION_FEATURE
388 void mf_widget_first_item_bring_in(void *data);
389 #endif
390
391 void mf_widget_create_entryfield(void *data,
392                            Evas_Object *parent,
393                            void (*changed_cb)(void *data, Evas_Object *obj, void *event_info),
394                            void (*click_cb)(void *data, Evas_Object *obj, void *event_info));
395 Evas_Object *mf_widget_create_layout_main(Evas_Object * parent);
396 Evas_Object *mf_widget_create_panes(Evas_Object *parent);
397 Elm_Object_Item *mf_widget_item_append(Evas_Object *parent, fsNodeInfo *pNode, void *data);
398 Evas_Object *mf_widget_get_part_content(Evas_Object *parent, const char *part);
399 void mf_widget_item_remove(Evas_Object *parent, const char *path, int type);
400 void mf_widget_imf_hide_callback_register(Evas_Object *pConformant, void *data);
401 void mf_widget_imf_hide_callback_del(Evas_Object *pConformant);
402
403 #endif