Tizen 2.0 Release
[apps/core/preloaded/myfiles.git] / src / include / mf-util.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
20
21 #ifndef __DEF_MYFILE_UTIL_H_
22 #define __DEF_MYFILE_UTIL_H_
23
24 #include <sys/time.h>
25 #include <stdbool.h>
26
27 #include <assert.h>
28 #include <stdlib.h>
29 #include <app.h>
30 #include <Elementary.h>
31 #include "mf-fo-common.h"
32 #include "mf-fs-util.h"
33
34
35 #define SAFE_FREE_CHAR(x) do {\
36                                         if ((x) != NULL) {\
37                                                 free(x); \
38                                                 x = NULL;\
39                                         } \
40                              } while (0)
41
42 #define SAFE_FREE_GSTRING(x) do {\
43                                         if ((x) != NULL) {\
44                                                 g_string_free(x, TRUE); \
45                                                 x = NULL;\
46                                         } \
47                                 } while (0)
48
49 #define CHAR_CHECK_NULL_GOTO(arg, dest) do {\
50                                                 if ((arg) == NULL) {\
51                                                         goto dest;\
52                                                 } \
53                                            } while (0)
54
55 #define GSTRING_CHECK_NULL_GOTO(arg, dest) do {\
56                                                 if ((arg) == NULL || (arg->str) == NULL) {\
57                                                         goto dest;\
58                                                 } \
59                                            } while (0)
60
61 #define SAFE_TIMER_DEL(x) do {\
62                                 if ((x) != NULL) {\
63                                         ecore_timer_del(x); \
64                                         x = NULL;\
65                                 } \
66                           } while (0)
67
68 #define SAFE_DEL_NAVI_ITEM(x) do {\
69                                         if ((x) != NULL) {\
70                                                 elm_object_item_del(x); \
71                                                 x = NULL;\
72                                         } \
73                                   } while (0)
74
75 #define SAFE_DEL_ECORE_TIMER(timer) do { \
76                                                 if (timer) { \
77                                                         ecore_timer_del(timer);\
78                                                         timer = NULL; \
79                                                 } \
80                                         } while (0)
81
82 #define SAFE_FREE_OBJ(x) do {\
83                                         if ((x) != NULL) {\
84                                                 evas_object_del(x); \
85                                                 x = NULL;\
86                                         } \
87                              } while (0)
88
89 #define SAFE_STRCPY(dest, src) \
90                         do{if(!dest||!src)break;\
91                                 strncpy (dest , src, sizeof(dest)-1);\
92                                 dest[sizeof(dest)-1] = 0;       }while(0)
93
94 #define mf_ecore_idler_del(idler) do { \
95                                 if(idler) { \
96                                         ecore_idler_del(idler);\
97                                         idler = NULL; \
98                                 } \
99                         } while (0)
100
101 #define SAFE_FREE_ECORE_EVENT(event) do { \
102                                                 if (event) { \
103                                                         ecore_event_handler_del(event);\
104                                                         event = NULL; \
105                                                 } \
106                                         } while (0)
107
108 typedef enum _MF_INTERNAL_NAME_ERR MF_INTERNAL_NAME_ERR;
109 enum _MF_INTERNAL_NAME_ERR {
110         MF_INTERNAL_FILE_NAME_NULL = 1,
111         MF_INTERNAL_FILE_NAME_EMPTY,
112         MF_INTERNAL_FILE_NAME_IGNORE,
113         MF_INTERNAL_FILE_NAME_CHUG,
114         MF_INTERNAL_FILE_NAME_MAX_LENGTH,
115         MF_INTERNAL_FILE_NAME_INVALID_CHAR,
116 };
117
118 typedef enum _MF_THEME_TYPE     MF_THEME_TYPE;
119 enum _MF_THEME_TYPE {
120         THEME_INVALID = -1,
121         THEME_NBEAT = 0,
122         THEME_NBEAT_BLACK = 1,
123         THEME_ERROR
124 };
125
126 typedef enum __mf_thumbnail_type mf_thumbnail_type;
127 enum __mf_thumbnail_type {
128         MF_THUMBNAIL_TYPE_DEFAULT,
129         MF_THUMBNAIL_TYPE_THUMBNAIL,
130         MF_THUMBNAIL_TYPE_MAX
131 };
132
133 #define MYFILE_MAGIC_MAIN_CONTEXT           (0x1983cdaf)
134 #define MYFILE_MAGIC_DETAIL_LIST_ITEM       (0x1977abcd)
135 #define MYFILE_MAGIC_PIPE_DATA                           (0x0716ffcc)
136
137 #define MYFILE_FINISH_MMC_INIT_DATA      "db/Apps/FileManager/FinishMmcInitData"
138
139 #define MYFILE_MAGIC                 unsigned int  __magic
140 #define MYFILE_MAGIC_SET(d, m)       (d)->__magic = (m)
141 #define MYFILE_MAGIC_CHECK(d, m)     ((d) && ((d)->__magic == (m)))
142
143 #define MYFILE_DBUS_SIGNAL_INTERFACE    "app.fexplorer.dbus.Signal"
144 #define MYFILE_DBUS_SIGNAL_PATH         "/app/fexplorer/dbus"
145 #define MAX_LEN_VIB_DURATION            0.5
146
147 typedef enum _MORE_TYPE MORE_TYPE;
148 enum _MORE_TYPE {                       /* softkey / contextual popup */
149         MORE_DEFAULT = 0,
150         MORE_EDIT,
151         MORE_CREATE_FOLDER,
152         MORE_DELETE,
153         MORE_IDLE_DELETE,
154         MORE_DATA_COPYING,
155         MORE_DATA_MOVING,
156         MORE_INTERNAL_COPY_MOVE,
157         MORE_INTERNAL_COPY,
158         MORE_INTERNAL_MOVE,
159         MORE_THUMBNAIL_RENAME,
160         MORE_RENAME,
161         MORE_SEARCH,
162         MORE_SENDVIABLUETOOTH,
163         MORE_SENDVIAEMAIL,
164         MORE_SENDVIAMESSAGE,
165         MORE_TYPE_MAX
166 };
167
168 typedef enum __mf_view_type_e mf_view_type_e;
169 enum __mf_view_type_e {
170         mf_view_root = 0,
171         mf_view_root_category,
172         mf_view_normal,
173 };
174
175 typedef enum _LAUNCH_TYPE LAUNCH_TYPE;
176 enum _LAUNCH_TYPE {
177         LAUNCH_TYPE_FORK = 0,
178         LAUNCH_TYPE_FAKE,
179         LAUNCH_TYPE_FAIL,
180         LAUNCH_TYPE_DIR,
181         LAUNCH_TYPE_UNSUPPORT,
182         LAUNCH_TYPE_MAX
183 };
184
185
186 typedef enum _REPORT_TYPE REPORT_TYPE;
187 enum _REPORT_TYPE {
188         MYFILE_REPORT_NONE = 1,
189         MYFILE_REPORT_RECURSION_DETECT,
190         MYFILE_REPORT_BOTH_ARE_SAME_FILE,
191         MYFILE_REPORT_MAX,
192 };
193
194 typedef enum _MYFILE_FILE_NAME_TYPE MYFILE_FILE_NAME_TYPE;
195 enum _MYFILE_FILE_NAME_TYPE {
196         FILE_NAME_WITH_BRACKETS,
197         FILE_NAME_WITH_UNDERLINE,
198         FILE_NAME_NONE,
199 };
200
201 typedef enum _MYFILE_CONTENT_TYPE MYFILE_CONTENT_TYPE;
202 enum _MYFILE_CONTENT_TYPE {
203         MYFILE_TYPE_MIN,
204         MYFILE_TYPE_GSTRING,
205         MYFILE_TYPE_CHAR,
206         MYFILE_TYPE_FSNODE,
207         MYFILE_TYPE_MAX
208 };
209
210 struct _mtd {
211         char *category;
212         char *key;
213         char *icon_path;
214         char *exe_path;
215         char *param;
216         int is_direct_launch;
217         int need_sort_param;
218         int having_a_thumbnail;
219 };
220
221
222 typedef enum _MYFILE_VCONF_TYPE MYFILE_VCONF_TYPE;
223 enum _MYFILE_VCONF_TYPE {
224         VCONF_TYPE_SORT_TYPE = 0,
225         VCONF_TYPE_TIME_FORMAT,
226         VCONF_TYPE_DATE_FORMAT,
227         VCONF_TYPE_MASS_STORAGE,
228         VCONF_TYPE_VIEW_STYLE,
229         VCONF_TYPE_NFC_ENABLE,
230         VCONF_TYPE_EXTENSION_STATE,
231         VCONF_TYPE_MAX
232 };
233
234 void mf_callback_warning_popup_cb(void *data, Evas_Object *obj, void *event_info);
235 int keydown_cb(void *data, int type, void *event);
236
237 void ime_mkdir_callback_cb(void *data);
238 void ime_rename_callback_cb(void *data);
239 void add_panel_to_softkey(Evas_Object *obj, int mode);
240 void create_popup(void *data, char *header, Evas_Smart_Cb func);
241 void softkey_cb(void *data, Evas_Object *obj, void *event_info);
242 void tab_cb(void *data, Evas_Object *obj, void *event_info);
243 int keydown_cb(void *data, int type, void *event);
244 int copy_files(char *src, char *dst);
245
246 void file_selection_popup_cb(void *data, Evas_Object *obj, void *event_info);
247 int set_default_state_as(int state);
248
249 bool mf_util_check_forbidden_operation(void *data);
250 int mf_util_check_disk_space(void *data);
251
252 void operation_abort(void *data);
253 void myfile_recovery_after_cancel();
254 void myfile_mmc_in_out_cb(void *data);
255
256 int mf_util_refresh_screen(void *data);
257 int mfScreenReset(void *data);
258 int mf_util_is_mmc_on(int *mmc_card);
259 int mf_util_is_otg_on(int *otg);
260 int mf_util_get_eina_list_len(const Eina_List *list);
261 void mf_util_free_eina_list_with_data(Eina_List **list, MYFILE_CONTENT_TYPE type);
262 void mf_util_operation_alloc_failed(void *data);
263 void mf_util_action_storage_insert(void *data, char *pItemLabel);
264 int mf_util_get_vconf_value(MYFILE_VCONF_TYPE type, int *value);
265 void mf_util_set_sort_type(int value);
266 void mf_util_merge_eina_list_to_glist(const Eina_List *eSource, GList **gSource);
267 void mf_util_exception_func(void *data);
268 int mf_util_is_valid_name_check(const char *name);
269 void mf_util_ex_disk_list_update(void *data);
270 long mf_util_character_count_get(const char *original);
271 /**ecore_*** handler related**/
272 void mf_util_add_to_handler_list(void *data, Ecore_Job *handler, char *label);
273 void mf_util_delete_from_handler_list(void *data, char *label, bool flag_del);
274 void mf_util_clear_handler_list(void *data);
275 char *mf_util_upper_folder_name_get(void *data, GString *fullpath);
276 /**icu related**/
277 char *mf_util_get_icu_date(fsNodeInfo *pNode);
278 int mf_util_icu_init(void *data);
279 void mf_util_icu_finalize(void *data);
280 char *mf_util_icu_translate(void *data, UDate date);
281 void mf_util_set_pm_lock(void *data, Eina_Bool isLock);
282 Eina_List *mf_util_get_all_selected(void *data);
283 gboolean mf_util_is_file_selected(Eina_List **source, GString *path);
284 MF_THEME_TYPE mf_util_get_theme(void);
285 void mf_util_sort_the_file_list(void *data);
286 int mf_util_generate_file_list(void *data);
287 char *mf_util_get_text(const char *ID);
288 void mf_util_set_view_style(int value);
289 void mf_util_rotate_state_set(void *data, app_device_orientation_e  rotate_mode);
290 int mf_util_generate_root_view_file_list(Eina_List **list, int storage_state);
291 void mf_util_set_extension_state(int value);
292 const char *mf_util_search_markup_keyword(const char *string, char *searchword, bool *result);
293 void mf_util_set_recent_file(char *path);
294 Eina_List *mf_util_get_all_selected_items(void *data);
295 void mf_util_remove_item_from_list_by_location(Eina_List **list, int location);
296 void mf_util_generate_list(Eina_List **list, const char *path, int file_type);
297 bool mf_util_is_rotation_lock(void);
298
299 #endif /* __DEF_MYFILE_UTIL_H_ */