Initialize Tizen 2.3
[apps/home/settings.git] / setting-storage / include / setting-storage.h
1 /*
2  * setting
3  * Copyright (c) 2012 Samsung Electronics Co., Ltd.
4  *
5  * Licensed under the Flora License, Version 1.1 (the License);
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *     http://floralicense.org/license/
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an AS IS BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 #ifndef __SETTING_STORAGE_H__
18 #define __SETTING_STORAGE_H__
19
20 #include <stdio.h>
21 #include <Elementary.h>
22
23 #include <glib-object.h>
24
25 #include <setting-common-draw-widget.h>
26 #include <setting-common-view.h>
27
28 #include <sys/statvfs.h>
29 #include <sys/stat.h>
30 #include <sys/mount.h>
31 #include <dirent.h>
32 #include <glib.h>
33 #include <glib/gprintf.h>
34 #include <sysman.h>
35 #include <pthread.h>
36 #include <media_content.h>
37 #include <media_content_type.h>
38
39 #define SUPPORT_SD_CARD_FORMAT 1
40
41 #define SETTING_STORAGE_PROGRESSBAR_TIMEOUT 10
42 #define SETTING_STORAGE_POPUP_TIMER     2
43
44 #define SETTING_STORAGE_MAX_STR_LEN                     30
45
46 #define SETTING_STORAGE_DIR_PATH_LEN_MAX                4096
47 #define SETTING_STORAGE_FILE_NAME_LEN_MAX               256
48 #define SETTING_STORAGE_CHILDPATH_LEN                   512
49
50 #define SETTING_STORAGE_KILOBYTE_VALUE                  1024
51 #define SETTING_STORAGE_MEGABYTE_VALUE                  1048576
52 #define SETTING_STORAGE_GIGABYTE_VALUE                  1073741824
53
54 #define SETTING_STORAGE_FORMAT_ASK_MSG "This action will erase the external storage in the phone. You will lose ALL data on the card! Format?"
55
56 #define SETTING_STORAGE_SD_CARD_MOUNT_ALREADY_DESC "Already mount"
57
58 #define SETTING_STORAGE_DEFAULT_STORAGE_STR "IDS_ST_BODY_DEFAULT_STORAGE"
59 #define SETTING_STORAGE_INTERNAL_STORAGE_STR "IDS_ST_BODY_DEVICE_MEMORY"
60
61 #define SETTING_STORAGE_AUDIO_STR "IDS_COM_BODY_AUDIO"
62
63 #define SETTING_STORAGE_PICS_STR "IDS_ST_BODY_PICTURES_VIDEOS"
64 #define SETTING_STORAGE_MISCES_STR "IDS_ST_BODY_MISCELLANEOUS_FILES"
65 #define SETTING_STORAGE_AVAIL_STR "IDS_ST_BODY_AVAILABLE"
66 #define SETTING_STORAGE_FORMAT_STR "IDS_ST_BODY_FORMAT_USB_STORAGE"
67 #define SETTING_STORAGE_FORMAT_DESC_STR "Erases all data on the internal USB storage, such as music and photos"
68 #define SETTING_STORAGE_MOUNT_STR "IDS_ST_BODY_MOUNT_SD_CARD"
69 #define SETTING_STORAGE_INSERT_STR "IDS_ST_BODY_INSERT_SD_CARD"
70
71 #define SETTING_STORAGE_APPS_ICON_PATH SETTING_ICON_PATH"/A01-1_icon_color_applications.png"
72 #define SETTING_STORAGE_PICS_ICON_PATH SETTING_ICON_PATH"/A01-1_icon_color_pictures.png"
73 #define SETTING_STORAGE_AUDIO_ICON_PATH SETTING_ICON_PATH"/A01-1_icon_color_Audio.png"
74 #define SETTING_STORAGE_MISCES_ICON_PATH SETTING_ICON_PATH"/A01-1_icon_color_miscellaneous_files.png"
75 #define SETTING_STORAGE_AVAIL_ICON_PATH SETTING_ICON_PATH"/A01-1_icon_color_available.png"
76
77 #define SETTING_STORAGE_ICON_LANDSCAPE_WIDTH ((int)1200 * WIDGET_SCALE_FACTOR)
78 #define SETTING_STORAGE_ICON_WIDTH ((int)640 * WIDGET_SCALE_FACTOR)
79 #define SETTING_STORAGE_ICON_HEIGHT ((int)16 * WIDGET_SCALE_FACTOR)
80
81 #define SETTING_STORAGE_OPT_USR_PATH            "/opt/usr"
82 #define SETTING_STORAGE_MMC_PATH                "/opt/storage/sdcard"
83 #define SETTING_STORAGE_MMC_PARENT_PATH         "/opt/storage/sdcard/.."
84
85 #define PATH1 "/opt/usr/media/.tmp_download"
86 #define PATH2 "/opt/usr/media/.video-hub"
87 #define PATH3 "/opt/usr/media/Camera"
88 #define PATH4 "/opt/usr/media/Downloads"
89 #define PATH5 "/opt/usr/media/Images"
90 #define PATH6 "/opt/usr/media/Others"
91 #define PATH7 "/opt/usr/media/Sounds"
92 #define PATH8 "/opt/usr/media/Videos"
93 #define PATH9 "/opt/usr/media/lost+found"
94
95 enum {
96         SETTING_STORAGE_SYSMAN_REQUEST_MOUNT_ALREADY = -2,
97         SETTING_STORAGE_SYSMAN_REQUEST_SUCCESS = 0
98 };
99
100 typedef enum {
101         SETTING_STORAGE_SLEEP = -1,
102         SETTING_STORAGE_REUPDATE = 0,
103         SETTING_STORAGE_PICTURES_VIDEO = 1,
104         SETTING_STORAGE_AUDIO,
105         SETTING_STORAGE_MISCELLANEOUS,
106         SETTING_STORAGE_APPLICATIONS,
107         SETTING_STORAGE_MAX,
108 } update_type;
109
110 typedef void (*setting_storage_mmc_cb) (int val, void *data);
111
112 typedef struct _Setting_Storage_Status {
113         double  dTotal;
114         double  dAvail;
115 } Setting_Storage_Status;
116
117 typedef struct _Node_Info Node_Info;
118 struct _Node_Info {
119         char *path;
120         char *name;
121         void *data;
122 };
123
124 typedef struct _app_info_t {
125         char    *pkg_name;
126         char    *pkg_type;
127         int     total_size;
128 } App_Info;
129
130 typedef struct _update_info_t {
131         double total_size;
132         update_type type;
133 } Update_Info;
134
135 typedef struct _SettingStorageUG SettingStorageUG;
136
137 /**
138  * Setting Storage UG context
139  * all UG function has void* as an agument. this is casted back to SettingStorageUG 
140  * and the functions access app context.
141  */
142 struct _SettingStorageUG {
143         ui_gadget_h ug;
144
145         /* add more variables here (move your appdata to here) */
146         Evas *evas;
147         Evas_Object *win_main_layout;
148         Evas_Object *win_get;
149
150         Evas_Object *ly_main;
151
152         Evas_Object *genlist;
153         Evas_Object *navibar;
154
155         /* storage setting */
156         Evas_Object *popup;
157         Elm_Genlist_Item_Class itc_2text_3_parent;
158         Elm_Genlist_Item_Class itc_1icon_1text_sub;
159         Elm_Genlist_Item_Class itc_1text_1icon_2;
160         Elm_Genlist_Item_Class itc_2text_2;
161         Elm_Genlist_Item_Class itc_group_item;
162         Elm_Genlist_Item_Class itc_bg_1icon;
163         Elm_Genlist_Item_Class itc_seperator;
164         Elm_Genlist_Item_Class itc_2text_1icon_3;
165         Elm_Genlist_Item_Class itc_1text;
166         Elm_Genlist_Item_Class itc_2text_1icon_4;
167         Elm_Genlist_Item_Class itc_1text_1icon;
168
169         Setting_Storage_Status internal_status;
170         Setting_Storage_Status apps_status;
171         Setting_Storage_Status pics_videos_status;
172         Setting_Storage_Status audio_status;
173         Setting_Storage_Status others_status;
174
175         Setting_GenGroupItem_Data *internal;
176         Setting_GenGroupItem_Data *apps;
177         Setting_GenGroupItem_Data *pics_videos;
178         Setting_GenGroupItem_Data *audio;
179         Setting_GenGroupItem_Data *others;
180         Setting_GenGroupItem_Data *avail;
181
182         Setting_GenGroupItem_Data *sd_mount;
183         Setting_GenGroupItem_Data *sd_total;
184         Setting_GenGroupItem_Data *sd_available;
185 #if SUPPORT_SD_CARD_FORMAT
186         Setting_GenGroupItem_Data *sd_format;
187 #endif
188         struct mmc_contents *mmc_content;
189
190         /* default storage */
191 #if DISABLED_CODE
192         Setting_GenGroupItem_Data *data_wap;
193 #endif
194         Setting_GenGroupItem_Data *data_bt;
195         Setting_GenGroupItem_Data *data_cmr;
196         Setting_GenGroupItem_Data *data_vrec;
197 #if DISABLED_CODE
198         Setting_GenGroupItem_Data *data_rdo;
199         Setting_GenGroupItem_Data *data_dvb_h;
200 #endif
201         Setting_Done_List_Data miscellaneous_list;  /* miscellaneous files list */
202         Eina_Bool back_from_misc;   /* if true, means back from  miscellaneous view*/
203
204         Ecore_Pipe *pipe;
205         Eina_Bool exit_flag;
206         update_type type;
207         pthread_t tid;
208         double total_size;
209
210         pthread_mutex_t exit_mutex;
211         pthread_mutex_t update_mutex;
212         pthread_cond_t wait_cond;
213
214         Eina_List *files_list;
215         Evas_Object *popup_progressbar;
216         Ecore_Timer *timer;
217 };
218
219 extern setting_view setting_view_storage_main;
220 extern setting_view setting_view_storage_default_storage;
221 extern setting_view setting_view_storage_miscellaneous_files;
222
223 #endif                          /* __SETTING_STORAGE_H__ */