205648813cbdfc73d298c62f964cb8076137b095
[apps/core/preloaded/ug-myfile-efl.git] / src / include / mf-ug-util.h
1 /*
2  * Copyright 2012          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_MF_UG_UTIL_H_
22 #define __DEF_MF_UG_UTIL_H_
23
24 #include <Elementary.h>
25 #include <stdbool.h>
26 #include <glib.h>
27
28 #include "mf-ug-main.h"
29
30 #define UG_SAFE_FREE_CHAR(x) do {\
31                                         if ((x) != NULL) {\
32                                                 free(x); \
33                                                 x = NULL;\
34                                         } \
35                              } while (0)
36
37 #define UG_SAFE_FREE_GSTRING(x) do {\
38                                         if ((x) != NULL) {\
39                                                 g_string_free(x, TRUE); \
40                                                 x = NULL;\
41                                         } \
42                                 } while (0)
43
44 #define UG_CHAR_CHECK_NULL_GOTO(arg, dest) do {\
45                                                 if ((arg) == NULL) {\
46                                                         goto dest;\
47                                                 } \
48                                            } while (0)
49
50 #define UG_GSTRING_CHECK_NULL_GOTO(arg, dest) do {\
51                                                 if ((arg) == NULL || (arg->str) == NULL) {\
52                                                         goto dest;\
53                                                 } \
54                                            } while (0)
55
56
57 #define UG_SAFE_DEL_NAVI_ITEM(x) do {\
58                                         if ((x) != NULL) {\
59                                                 elm_object_item_del(x); \
60                                                 x = NULL;\
61                                         } \
62                                   } while (0)
63
64
65 #define UG_SAFE_FREE_OBJ(x) do {\
66                                 if ((x) != NULL) {\
67                                         evas_object_del(x); \
68                                         x = NULL;\
69                                 } \
70                           } while (0)
71
72 #define UG_SAFE_STRCPY(dest, src) \
73                                 do{if(!dest||!src)break;\
74                                         strncpy (dest , src, sizeof(dest)-1);\
75                                         dest[sizeof(dest)-1] = 0;       }while(0)
76
77 #define UG_SAFE_DEL_ECORE_TIMER(timer) do { \
78                                                 if (timer) { \
79                                                         ecore_timer_del(timer);\
80                                                         timer = NULL; \
81                                                 } \
82                                         } while (0)
83
84 #define goto_if(x, dest) do { \
85                                 if (x) {\
86                                         goto dest;\
87                                 }\
88                         } while (0)
89
90 #define ug_ecore_idler_del(idler) do { \
91                                         if(idler) { \
92                                                 ecore_idler_del(idler);\
93                                                 idler = NULL; \
94                                         } \
95                                 } while (0)
96
97 typedef enum _mf_ug_list_play_state mf_ug_list_play_state;
98
99 enum _mf_ug_list_play_state {
100         PLAY_STATE_INIT = 0,
101         PLAY_STATE_READY,
102         PLAY_STATE_PLAYING,
103         PLAY_STATE_PAUSED,
104         PLAY_STATE_STOP,
105         PLAY_STATE_MAX
106 };
107
108
109 typedef enum _mf_ug_select_mode mf_ug_select_mode;
110 enum _mf_ug_select_mode {
111         SELECT_MODE = 0,
112         SINGLE_FILE_MODE,
113         SINGLE_ALL_MODE,
114         MULTI_FILE_MODE,
115         MULTI_ALL_MODE,
116         EXPORT_MODE,
117         IMPORT_MODE,
118         IMPORT_SINGLE,
119         SAVE_MODE,
120         SELECT_MODE_MAX
121 };
122
123 typedef enum _mf_ug_drm_mode mf_ug_drm_mode;
124 enum _mf_ug_drm_mode {
125         DRM_FILTER_NONE = 0,
126         DRM_FILTER_ALL,
127         DRM_FILTER_WITHOUT_FL,
128         DRM_FILTER_IMAGE,
129         DRM_FILTER_RINGTONE,
130         DRM_FILTER_MAX
131 };
132
133 typedef enum _mf_ug_marked_switch mf_ug_marked_switch;
134 enum _mf_ug_marked_switch {
135         MARKED_OFF = 0,
136         MARKED_ON,
137 };
138
139 typedef enum _mf_ug_file_filter_type mf_ug_file_filter_type;
140 enum _mf_ug_file_filter_type {
141         SHOW_ALL_LIST = 0,
142         SHOW_IMAGE_LIST,
143         SHOW_SOUND_LIST,
144         SHOW_VIDEO_LIST,
145         SHOW_FLASH_LIST,
146         SHOW_FOLDER_LIST,
147         SHOW_IMAGE_VIDEO_LIST,
148         SHOW_IMAGE_SOUND_LIST,
149         SHOW_VIDEO_SOUND_LIST,
150         SHOW_BY_EXTENSION
151 };
152
153
154
155 typedef enum _mf_ug_state_mode mf_ug_state_mode;
156 enum _mf_ug_state_mode {
157         STATE_PHONE = 0,
158         STATE_MEMORY,
159         STATE_MODE_MAX
160 };
161
162 typedef enum _mf_ug_mmc_insert_state mf_ug_mmc_insert_state;
163 enum _mf_ug_mmc_insert_state {
164         MMC_OFF = 0,
165         MMC_ON
166 };
167
168 typedef enum _mf_ug_launch_type mf_ug_launch_type;
169 enum _mf_ug_launch_type {
170         LAUNCH_TYPE_FORK = 0,
171         LAUNCH_TYPE_FAIL,
172         LAUNCH_TYPE_DIR,
173         LAUNCH_TYPE_IMAGE,
174         LAUNCH_TYPE_MUSIC,
175         LAUNCH_TYPE_VIDEO,
176         LAUNCH_TYPE_UNSUPPORT,
177         LAUNCH_TYPE_MAX
178 };
179
180 typedef enum _mf_ug_eina_list_node_type mf_ug_eina_list_node_type;
181 enum _mf_ug_eina_list_node_type {
182         NODE_TYPE_NONE = 0,
183         NODE_TYPE_CHAR,
184         NODE_TYPE_PNODE,
185         NODE_TYPE_GSTRING,
186         NODE_TYPE_MAX
187 };
188
189 typedef enum _mf_ug_ctrl_bar_type mf_ug_ctrl_bar_type;
190 enum _mf_ug_ctrl_bar_type {
191         CTRL_BAR_NORMAL = 0,
192         CTRL_BAR_MUSIC,
193         CTRL_BAR_RINGTONE,
194         CTRL_BAR_MULTI,
195         CTR_BAR_MAX
196 };
197
198 typedef enum _mf_ug_view_type mf_ug_view_type;
199 enum _mf_ug_view_type {
200         mf_ug_view_root = 0,
201         mf_ug_view_normal,
202         mf_ug_view_max
203 };
204
205 typedef struct _ugListItemData ugListItemData;
206 struct _ugListItemData {
207         Evas_Object *ug_pCheckBox;
208         Evas_Object *ug_pRadioBox;
209         Evas_Object *ug_pPlaybtn;
210         Elm_Object_Item *ug_pItem;
211         char *ug_pThumbPath;
212         GString *ug_pItemName;
213         ugData *ug_pData;
214         bool ug_bChecked;
215         int ug_iGroupValue;
216         bool ug_bRealThumbFlag;
217 };
218
219 typedef struct _ug_dir_event_t ug_dir_event_t;
220 struct _ug_dir_event_t {
221         int event;
222         char *name;
223 };
224
225 typedef enum _mf_ug_theme_type  mf_ug_theme_type;
226 enum _mf_ug_theme_type {
227         UG_THEME_INVALID = -1,
228         UG_THEME_NBEAT = 0,
229         UG_THEME_NBEAT_BLACK = 1,
230         UG_THEME_ERROR
231 };
232
233 typedef enum _mf_ug_more_type_e mf_ug_more_type_e;
234
235 enum _mf_ug_more_type_e{                        /* softkey / contextual popup */
236         UG_MORE_DEFAULT = 0,
237         UG_MORE_CREATE_FOLDER,
238         UG_MORE_SEARCH,
239         UG_MORE_TYPE_MAX
240 };
241
242 typedef enum _mf_ug_file_name_type_e mf_ug_file_name_type_e;
243 enum _mf_ug_file_name_type_e {
244         FILE_NAME_WITH_BRACKETS,
245         FILE_NAME_WITH_UNDERLINE,
246         FILE_NAME_NONE,
247 };
248
249 typedef enum __mf_ug_thumbnail_type_e mf_ug_thumbnail_type_e;
250 enum __mf_ug_thumbnail_type_e {
251         MF_UG_THUMBNAIL_TYPE_DEFAULT,
252         MF_UG_THUMBNAIL_TYPE_THUMBNAIL,
253         MF_UG_THUMBNAIL_TYPE_MAX
254 };
255
256 bool mf_ug_util_is_mass_storage_on();
257 int mf_ug_util_create_dir_monitor(void *data);
258 int mf_ug_util_set_mmc_state_cb(void *data);
259 int mf_ug_util_get_mmc_state(int *mmc_card);
260 char *mf_ug_util_get_send_result(void *data);
261 bool mf_ug_util_is_genlist_selected(void *data);
262
263 void mf_ug_list_play_play_music_item(ugListItemData *data);
264 void mf_ug_list_play_destory_playing_file(void *data);
265 void mf_ug_list_play_update_item_icon(void *data);
266
267 void mf_ug_util_storage_insert_action(void *data, char *pItemLabel);
268 void mf_ug_util_destory_mmc_state_cb();
269 void mf_ug_util_destory_dir_monitor(void *data);
270 void mf_ug_util_get_params_path(Eina_List **dest_list, const char *path_list);
271 void mf_ug_util_free_eina_list_data(Eina_List **list, mf_ug_eina_list_node_type node_type);
272 void mf_ug_util_set_current_state(void *data, int state);
273 int mf_ug_util_add_dir_watch(const char *path, void *data);
274 mf_ug_launch_type mf_ug_util_get_file_launch_type(char *path);
275
276 void mf_ug_util_destory_mass_storage_callback();
277 mf_ug_theme_type mf_ug_util_get_theme(void);
278 int mf_ug_file_attr_get_parent_path(const char *path, char **parent_path);
279 char *mf_ug_util_upper_folder_name_get(void *data, GString *fullpath);
280 void mf_ug_util_operation_alloc_failed(void *data);
281 int mf_ug_util_remove_dir_watch(void);
282 void mf_ug_util_sort_the_file_list(void *data);
283 int mf_ug_util_check_disk_space(void *data);
284 long mf_ug_util_character_count_get(const char *original);
285
286 #endif /* __DEF_MYFILE_UTIL_H_ */