apply FSL(Flora Software License)
[apps/home/gallery.git] / ug / ug-gallery-efl / include / gallery-efl.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://www.tizenopensource.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 #ifndef __GALLERY_EFL_H__
18 #define __GALLERY_EFL_H__
19
20
21 #include <glib.h>
22 #include <Elementary.h>
23 #include <stdio.h>
24 #include <ui-gadget-module.h>
25 #include <Eina.h>
26 #include <Ecore_X.h>
27 #include <Ethumb.h>
28 #include <app.h>
29 #include "ge-data-type.h"
30
31 #ifdef __cplusplus
32 extern "C" {
33 #endif /* __cplusplus */
34
35 #define GE_UG_RES_DIR "/opt/ug/res/"
36 #define GE_IMAGES_DIR GE_UG_RES_DIR"images/gallery-efl/images/"
37 #define GE_EDJ_DIR GE_UG_RES_DIR"edje/gallery-efl/"
38 #define GE_EDJ_FILE GE_EDJ_DIR"gallery-efl.edj"
39
40 #define GE_GRP_GRIDVIEW "gallery_efl/gridview"
41 #define GE_GRP_ALBUMVIEW "gallery_efl/albumview"
42
43 #define GE_CBAR_STYLE_DEFAULT "gallery_efl/default"
44 #define GE_NAVIFRAME_STYLE_DEFAULT "gallery_efl/default"
45 #define GE_CHECKBOX_STYLE_GRID "gallery_efl/grid"
46
47 #define GE_LOCK_ICON GE_IMAGES_DIR"T01_icon_lock.png"
48 #define GE_THUMB_FAVOR_ICON GE_IMAGES_DIR"T01_icon_thumbnail_favorite.png"
49 #define GE_THUMB_BOOKMARK GE_IMAGES_DIR"T01_icon_thumbnail_bookmark.png"
50 #define GE_DEFAULT_THUMB_ICON GE_IMAGES_DIR"T01_Nocontents_broken.png"
51 #define GE_CBAR_ICON_DONE GE_IMAGES_DIR"T01_controlbar_icon_done.png"
52 #define GE_SNS_ICON_PICASA GE_IMAGES_DIR"T01_Picasa.png"
53 #define GE_SNS_ICON_FACEBOOK GE_IMAGES_DIR"T01_Facebook.png"
54 #define GE_DB_DEFAULT_THUMB "/opt/data/file-manager-service/.thumb/thumb_default.png"
55
56 #define GE_ROOT_PATH_PHONE      "/opt/media"
57 #define GE_ROOT_PATH_MMC        "/opt/storage/sdcard"
58
59 #define GE_ALBUM_ALL_ID "GALLERY_ALBUM_ALL_ALBUMS_ID"
60 /* String length of mtye item id */
61 #define GE_MTYPE_ITEN_ID_LEN_MAX 37
62
63 #define GE_BASE_WIN_WIDTH       720
64 #define GE_BASE_WIN_HEIGHT      1280
65
66 #define GE_GRID_ITEM_SIZE_W 178
67 #define GE_GRID_ITEM_SIZE_H 182
68
69 #define GE_GRID_ITEM_ZOOM_LEVEL_01 4
70 #define GE_GRID_ITEM_ZOOM_LEVEL_02 2
71 #define GE_GRID_ITEM_ZOOM_LEVEL_01_CNT 1
72 #define GE_GRID_ITEM_ZOOM_LEVEL_02_CNT 6
73
74 #define GE_LIST_ICON_WIDTH 133
75 #define GE_LIST_ICON_HEIGHT 100
76
77 #define GE_ALBUM_COVER_THUMB_NUM 7 /* There are 7 thumbnails of 'Camera shots' and 'All' cover*/
78 #define GE_ALBUM_COVER_THUMB_NUM_SEC 4 /* Other albums cover have maximum 4 thumbnails */
79 #define GE_ALBUM_ITEM_WIDTH 358
80 #define GE_ALBUM_ITEM_HEIGHT 360
81 #define GE_COVER_SIZE 318
82 #define GE_COVER_PAD 3
83 #define GE_COVER_ICON_S (GE_COVER_SIZE - 2 * GE_COVER_PAD) //196
84 #define GE_COVER_GRID_S 102
85 #define GE_COVER_2X_GRID_S (GE_COVER_ICON_S - GE_COVER_GRID_S - GE_COVER_PAD) //130
86
87 #define GE_SELINFO_TEXT_LEN_MAX 64
88 #define GE_ALBUM_DATE_LEN_MAX 256
89 #define GE_MAX_BYTES_FOR_CHAR 3
90 #define GE_ALBUM_NAME_LEN_MAX (255 * GE_MAX_BYTES_FOR_CHAR + 1)
91 #define GE_VIDEO_DURATION_MAX 256
92 #define GE_NOCONTENTS_LABEL_LEN_MAX 512
93 #define GE_FILE_PATH_LEN_MAX (4095 * GE_MAX_BYTES_FOR_CHAR + 1)
94 #define GE_DIR_PATH_LEN_MAX GE_FILE_PATH_LEN_MAX
95
96 #define GE_TIME_SECOND_MILLISECOND 1000 // 1s=1000ms
97 #define GE_TIME_USEC_PER_SEC 1000000L
98 #define GE_TIME_MINUTE_SECOND 60 // 1min=60s
99 #define GE_TIME_HOUR_MINUTE 60 // 1h=60min
100 #define GE_TIME_HOUR_SECOND (GE_TIME_HOUR_MINUTE * GE_TIME_MINUTE_SECOND) // 1h=(60x60)s
101
102 #define GE_FIRST_VIEW_START_POS 0
103 #define GE_FIRST_VIEW_END_POS 47
104 #define GE_GET_UNTIL_LAST_RECORD 65536  /* Fixme: Do not use 65536. */
105 #define GE_GET_ALL_RECORDS -1
106
107 #define GE_BUNDLE_LAUNCH_TYPE                           "launch-type"
108 #define GE_BUNDLE_FILE_TYPE                             "file-type"
109 #define GE_BUNDLE_SETAS_TYPE                            "setas-type"
110 #define GE_BUNDLE_CALLERID_SIZE                         "callerid-size"
111 #define GE_BUNDLE_CALLERID_PATH                         "callerid-path"
112 #define GE_BUNDLE_HOMESCREEN_PATH                       "homescreen-path"
113 #define GE_BUNDLE_LOCKSCREEN_PATH                       "lockscreen-path"
114
115 #define GE_ALBUM_SELECT_ONE                             "select-album"
116 #define GE_ALBUM_SELECT_RETURN_ID                       "album-id"
117 #define GE_ALBUM_SELECT_RETURN_PATH                     "folder-path"
118
119 #define GE_FILE_SELECT_ONE                              "select-one"
120 #define GE_FILE_SELECT_MULTIPLE                         "select-multiple"
121 #define GE_FILE_SELECT_SETAS                            "select-setas"
122 #define GE_FILE_SELECT_IMFT                             "select-imft"
123
124 #define GE_FILE_SELECT_TYPE_IMAGE                       "image"
125 #define GE_FILE_SELECT_TYPE_VIDEO                       "video"
126 #define GE_FILE_SELECT_TYPE_ALL                         "all"
127
128 #define GE_FILE_SELECT_SETAS_WALLPALER          "wallpaper"
129 #define GE_FILE_SELECT_SETAS_CROP_WALLPALER     "crop-wallpaper"
130 #define GE_FILE_SELECT_SETAS_CALLERID           "callerid"
131
132 #define GE_FILE_SELECT_RETURN_COUNT             "count"
133 #define GE_FILE_SELECT_RETURN_PATH                      "path"
134
135 #define GE_FILE_SELECT_RETURN_QUIT                      "ug-quit"
136 #define GE_FILE_SELECT_QUIT_STATE                       "normal"
137
138 #define GE_SETAS_CALLERID_CROP_IMAGE_PATH       "crop-image-path"
139 #define GE_SETAS_IMAGE_PATH                                     "image-path"
140
141 /*Image viewer UG service parameters*/
142 #define GE_IMAGEVIEWER_CALLERID_SIZE            "Area size"
143 #define GE_IMAGEVIEWER_CALLERID_PATH            "CallerID path"
144
145 #define GE_IMAGEVIEWER_CROP_IMAGE_PATH          "crop_image_path"
146 #define GE_IMAGEVIEWER_IMAGE_PATH                       "image_path"
147
148 #define GE_IMAGEVIEWER_HOMESCREEN_PATH          "Wallpaper path"
149 #define GE_IMAGEVIEWER_LOCKSCREEN_PATH          "Lockscreen path"
150 #define GE_IMAGEVIEWER_RETURN_ERROR             "Error"
151 /*Image viewer UG service parameters-End*/
152
153 typedef enum {
154         GE_Album_Select_None,
155         GE_Album_Select_One,
156 } ge_album_select;
157
158 typedef enum {
159         GE_File_Select_None,
160         GE_File_Select_One,
161         GE_File_Select_Multiple,
162         GE_File_Select_Setas,
163 } ge_file_select;
164
165 typedef enum {
166         GE_File_Select_Setas_None,
167         GE_File_Select_Setas_Wallpaper,
168         GE_FILE_SELECT_SETAS_MODE_CROP_WALLPAPER,
169         GE_File_Select_Setas_CallerID,
170 } ge_file_select_setas;
171
172 typedef enum {
173         GE_File_Select_Type_None,
174         GE_File_Select_Type_Image,
175         GE_File_Select_Type_Video,
176         GE_File_Select_Type_All,
177 } ge_file_type;
178
179 typedef enum view_by_mode_e
180 {
181         GE_AlbumsView_Mode,
182         GE_ThumbnailView_Mode,
183         GE_ThumbnailEdit_Mode,
184 } ge_view_mode;
185
186 typedef enum {
187         GE_ROTATE_NONE,
188         GE_ROTATE_PORTRAIT,
189         GE_ROTATE_PORTRAIT_UPSIDEDOWN,
190         GE_ROTATE_LANDSCAPE,
191         GE_ROTATE_LANDSCAPE_UPSIDEDOWN,
192 }ge_rotate_mode;
193
194 typedef enum {
195         GE_UPDATE_NONE,
196         GE_UPDATE_NORMAL,
197         GE_UPDATE_MMC_REMOVED,
198         GE_UPDATE_MMC_ADDED,
199 }ge_update_mode;
200
201 typedef enum
202 {
203         GE_ALBUM_SNS_NONE,
204         GE_ALBUM_SNS_PICASA,
205         GE_ALBUM_SNS_FACEBOOK,
206 }ge_album_sns_type;
207
208 typedef struct _ge_ugdata ge_ugdata;
209
210 typedef struct {
211         ge_album_s *cluster;
212         ge_ugdata *ugd;
213         int index;
214
215         time_t item_mtime;
216         Elm_Object_Item *griditem;
217         void *_reserved;
218 }ge_cluster;
219
220 typedef struct {
221         Eina_List* clist;
222 }ge_cluster_list;
223
224 typedef struct _ge_item {
225         ge_media_s* item;
226         ge_ugdata* ugd;
227         Elm_Object_Item *elm_item;
228         Evas_Object* check_obj;
229         bool checked;
230
231         void* _reserved;
232 }ge_item;
233
234 struct _ge_ugdata {
235         Evas_Object *win;
236         double win_scale;
237         Evas_Object *ly_main;
238         Evas_Object *bg;
239         Elm_Theme *th;
240         /* add more variables here */
241         Evas_Object *navi_bar;
242
243         Evas_Object *albums_view;
244         Evas_Object *albums_view_ly;
245         Evas_Object *thumbs_view;
246         Evas_Object *thumbs_view_ly;
247         Elm_Object_Item *thumbs_nf_it;
248         Evas_Object *thumbs_nocontents;
249         Ecore_Idler* grid_append_idler;
250         Evas_Object *nocontents;
251         Ecore_Event_Handler* event_handler;
252         Evas_Object *popup;
253         Ecore_Timer *del_timer;
254         int popup_mode;
255
256         ge_cluster_list* cluster_list;
257         ui_gadget_h ug_called_by_me;
258         ui_gadget_h ug;
259         service_h service;              /*added for "ug_send_result"*/
260         /* It's thumbnails icon size, not grid item size */
261         int icon_size;
262         Ecore_Timer *thumbs_clicked_timer;
263
264         int album_select_mode;
265         int file_select_mode;
266         int file_type_mode;
267         int file_select_setas_mode;
268         char* file_setas_callid_size;
269         char* file_setas_callid_path;
270         char* file_setas_image_path;
271         char* file_setas_crop_image_path;
272         char albums_view_title[GE_ALBUM_NAME_LEN_MAX];
273         char* file_setas_homescreen_path;
274         char* file_setas_lockscreen_path;
275
276         Evas_Object *selectioninfo_ly;
277         Evas_Object *selectioninfo;
278
279         bool b_inited_view;             /* true: show albums view; false: show popup */
280 };
281
282
283 #define GE_IF_DEL_TIMER(timer) if(timer){ecore_timer_del(timer); timer = NULL;}
284 #define GE_IF_DEL_IDLER(idler) if(idler){ecore_idler_del(idler); idler = NULL;}
285 #define GE_IF_DEL_OBJ(obj) if(obj){evas_object_del(obj); obj = NULL;}
286 #define GE_IF_FREE_MEM(mem) if(mem){free(mem); mem = NULL;}
287 #define GE_FREE_MEM(mem) if(mem){free(mem); mem = NULL;}
288
289
290 ge_view_mode _ge_get_view_mode(void);
291 void _ge_set_view_mode(ge_view_mode mode);
292
293
294 #ifdef __cplusplus
295 }
296 #endif /* __cplusplus */
297
298
299 #endif /* __GALLERY_EFL_H__ */
300