2 * Copyright 2013 Samsung Electronics Co., Ltd
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
8 * http://floralicense.org/license/
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.
19 #ifndef __DEF_MYFILE_WINSET_H_
20 #define __DEF_MYFILE_WENSET_H_
28 #include "mf-fs-util.h"
29 #include "mf-callback.h"
30 #include "mf-split-view.h"
31 #include "mf-gengrid.h"
33 #include "mf-resource.h"
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"
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"
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);
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);
62 /*********** Control Bar Definitions ***********/
63 #define EDIT_SEG_COUNT 3
64 #define OPER_SEG_COUNT 5
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"
87 typedef enum _eCtrlBarButtonType eCtrlBarButtonType;
88 enum _eCtrlBarButtonType {
89 CTRL_BUTTON_NEW_FOLDER_CREATE = 0,
96 CTRL_BUTTON_PASTE_HERE,
97 CTRL_BUTTON_MOVE_HERE,
100 CTRL_BUTTON_COPY_MOVE,
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);
112 /*********** Navigation Bar Definition ************/
113 #define MF_POPUP_TIMEOUT_NORMAL 3
114 #define MF_POPUP_TIMEOUT_SHORT 2
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,
126 /*********** Navigation Bar API ************/
127 #define MF_NAVI_STYLE_ENABLE "basic"
128 #define MF_NAVI_STYLE_DISABLE "basic/instant"
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;
135 typedef enum __mf_notify_popup_type {
136 mf_notify_popup_normal,
137 mf_notify_popup_layout
138 }mf_notify_popup_type;
140 typedef enum __mf_navi_btn_type mf_navi_btn_typ;
141 enum __mf_navi_btn_type {
142 MF_NAVI_BTN_MORE = 0,
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);
193 /*********** Content Definition ************/
194 #define INTERVAL_THUMB_UPDATE 0.5
202 bool real_thumb_flag;
204 Evas_Object *pCheckBox;
205 Elm_Object_Item *item;
206 bool unregister_lang_mgr;
211 typedef enum __eMfViewStyle {
213 MF_VIEW_SYTLE_LIST_DETAIL,
214 MF_VIEW_STYLE_THUMBNAIL,
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);
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);
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);
244 /*********** Popup Definition ************/
245 typedef struct _StorageData_s StorageData_s;
247 struct _StorageData_s{
250 bool unregister_lang_mgr;
251 Elm_Object_Item *item;
259 POPMODE_TEXT_NOT_DISABLED,
260 POPMODE_TEXT_BTN_SEARCH,
261 POPMODE_TEXT_TWO_BTN,
262 POPMODE_TITLE_TEXT_TWO_BTN,
264 POPMODE_TITLE_TEXT_BTN,
265 POPMODE_TITLE_TEXT_THREE_BTN,
267 POPMODE_TITLE_LIST_BTN,
269 POPMODE_VIEW_AS_LIST,
279 ELM_POPUP_AUTO_RENAME,
288 typedef struct _myfilePopupListData {
290 bool unregister_lang_mgr;
291 Elm_Object_Item *item;
293 } myfilePopupListData;
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);
302 /*********** Search Bar API ************/
303 Evas_Object *mfSearchBarCreate(void *data);
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);
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);
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);
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);
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();
335 /************* widget API **************/
337 typedef enum __MF_ROTATE_TYPE {
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;
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);
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 *),
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,
379 mf_notify_popup_type type,
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);
386 /*************** Widget *********************/
387 #ifdef MYFILE_MOTION_FEATURE
388 void mf_widget_first_item_bring_in(void *data);
391 void mf_widget_create_entryfield(void *data,
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);