Tizen 2.1 base
[apps/home/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         SELECT_MODE_MAX
120 };
121
122 typedef enum _mf_ug_drm_mode mf_ug_drm_mode;
123 enum _mf_ug_drm_mode {
124         DRM_FILTER_NONE = 0,
125         DRM_FILTER_ALL,
126         DRM_FILTER_WITHOUT_FL,
127         DRM_FILTER_IMAGE,
128         DRM_FILTER_RINGTONE,
129         DRM_FILTER_MAX
130 };
131
132 typedef enum _mf_ug_marked_switch mf_ug_marked_switch;
133 enum _mf_ug_marked_switch {
134         MARKED_OFF = 0,
135         MARKED_ON,
136 };
137
138 typedef enum _mf_ug_file_filter_type mf_ug_file_filter_type;
139 enum _mf_ug_file_filter_type {
140         SHOW_ALL_LIST = 0,
141         SHOW_IMAGE_LIST,
142         SHOW_SOUND_LIST,
143         SHOW_VIDEO_LIST,
144         SHOW_FLASH_LIST,
145         SHOW_FOLDER_LIST,
146         SHOW_IMAGE_VIDEO_LIST,
147         SHOW_IMAGE_SOUND_LIST,
148         SHOW_VIDEO_SOUND_LIST,
149         SHOW_BY_EXTENSION
150 };
151
152
153
154 typedef enum _mf_ug_state_mode mf_ug_state_mode;
155 enum _mf_ug_state_mode {
156         STATE_PHONE = 0,
157         STATE_MEMORY,
158         STATE_MODE_MAX
159 };
160
161 typedef enum _mf_ug_mmc_insert_state mf_ug_mmc_insert_state;
162 enum _mf_ug_mmc_insert_state {
163         MMC_OFF = 0,
164         MMC_ON
165 };
166
167 typedef enum _mf_ug_launch_type mf_ug_launch_type;
168 enum _mf_ug_launch_type {
169         LAUNCH_TYPE_FORK = 0,
170         LAUNCH_TYPE_FAIL,
171         LAUNCH_TYPE_DIR,
172         LAUNCH_TYPE_IMAGE,
173         LAUNCH_TYPE_MUSIC,
174         LAUNCH_TYPE_VIDEO,
175         LAUNCH_TYPE_UNSUPPORT,
176         LAUNCH_TYPE_MAX
177 };
178
179 typedef enum _mf_ug_eina_list_node_type mf_ug_eina_list_node_type;
180 enum _mf_ug_eina_list_node_type {
181         NODE_TYPE_NONE = 0,
182         NODE_TYPE_CHAR,
183         NODE_TYPE_PNODE,
184         NODE_TYPE_GSTRING,
185         NODE_TYPE_MAX
186 };
187
188 typedef enum _mf_ug_ctrl_bar_type mf_ug_ctrl_bar_type;
189 enum _mf_ug_ctrl_bar_type {
190         CTRL_BAR_NORMAL = 0,
191         CTRL_BAR_MUSIC,
192         CTRL_BAR_RINGTONE,
193         CTRL_BAR_MULTI,
194         CTR_BAR_MAX
195 };
196
197 typedef enum _mf_ug_view_type mf_ug_view_type;
198 enum _mf_ug_view_type {
199         mf_ug_view_root = 0,
200         mf_ug_view_normal,
201         mf_ug_view_max
202 };
203
204 typedef struct _ugListItemData ugListItemData;
205 struct _ugListItemData {
206         Evas_Object *ug_pCheckBox;
207         Evas_Object *ug_pRadioBox;
208         Evas_Object *ug_pPlaybtn;
209         Elm_Object_Item *ug_pItem;
210         char *ug_pThumbPath;
211         GString *ug_pItemName;
212         ugData *ug_pData;
213         bool ug_bChecked;
214         int ug_iGroupValue;
215         bool ug_bRealThumbFlag;
216 };
217
218 typedef struct _ug_dir_event_t ug_dir_event_t;
219 struct _ug_dir_event_t {
220         int event;
221         char *name;
222 };
223
224 typedef enum _mf_ug_theme_type  mf_ug_theme_type;
225 enum _mf_ug_theme_type {
226         UG_THEME_INVALID = -1,
227         UG_THEME_NBEAT = 0,
228         UG_THEME_NBEAT_BLACK = 1,
229         UG_THEME_ERROR
230 };
231
232 typedef enum _mf_ug_more_type_e mf_ug_more_type_e;
233
234 enum _mf_ug_more_type_e{                        /* softkey / contextual popup */
235         UG_MORE_DEFAULT = 0,
236         UG_MORE_CREATE_FOLDER,
237         UG_MORE_SEARCH,
238         UG_MORE_TYPE_MAX
239 };
240
241 typedef enum _mf_ug_file_name_type_e mf_ug_file_name_type_e;
242 enum _mf_ug_file_name_type_e {
243         FILE_NAME_WITH_BRACKETS,
244         FILE_NAME_WITH_UNDERLINE,
245         FILE_NAME_NONE,
246 };
247
248 typedef enum __mf_ug_thumbnail_type_e mf_ug_thumbnail_type_e;
249 enum __mf_ug_thumbnail_type_e {
250         MF_UG_THUMBNAIL_TYPE_DEFAULT,
251         MF_UG_THUMBNAIL_TYPE_THUMBNAIL,
252         MF_UG_THUMBNAIL_TYPE_MAX
253 };
254
255 bool mf_ug_util_is_mass_storage_on();
256 int mf_ug_util_create_dir_monitor(void *data);
257 int mf_ug_util_set_mmc_state_cb(void *data);
258 int mf_ug_util_get_mmc_state(int *mmc_card);
259 char *mf_ug_util_get_send_result(void *data);
260 bool mf_ug_util_is_genlist_selected(void *data);
261
262 void mf_ug_list_play_play_music_item(ugListItemData *data);
263 void mf_ug_list_play_destory_playing_file(void *data);
264 void mf_ug_list_play_update_item_icon(void *data);
265
266 void mf_ug_util_storage_insert_action(void *data, char *pItemLabel);
267 void mf_ug_util_destory_mmc_state_cb();
268 void mf_ug_util_destory_dir_monitor(void *data);
269 void mf_ug_util_get_params_path(Eina_List **dest_list, const char *path_list);
270 void mf_ug_util_free_eina_list_data(Eina_List **list, mf_ug_eina_list_node_type node_type);
271 void mf_ug_util_set_current_state(void *data, int state);
272 int mf_ug_util_add_dir_watch(const char *path, void *data);
273 mf_ug_launch_type mf_ug_util_get_file_launch_type(char *path);
274
275 void mf_ug_util_destory_mass_storage_callback();
276 mf_ug_theme_type mf_ug_util_get_theme(void);
277 int mf_ug_file_attr_get_parent_path(const char *path, char **parent_path);
278 char *mf_ug_util_upper_folder_name_get(void *data, GString *fullpath);
279 void mf_ug_util_operation_alloc_failed(void *data);
280 int mf_ug_util_remove_dir_watch(void);
281 void mf_ug_util_sort_the_file_list(void *data);
282 int mf_ug_util_check_disk_space(void *data);
283 long mf_ug_util_character_count_get(const char *original);
284
285 #endif /* __DEF_MYFILE_UTIL_H_ */