tizen 2.3 release
[apps/home/settings.git] / include / setting.h
1 /*
2  * setting
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
5  *
6  * Contact: MyoungJune Park <mj2004.park@samsung.com>
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  *
20  */
21 /**
22  *@defgroup setting-app
23  *entry point of Setting application
24  */
25 #ifndef __SETTING_H__
26 #define __SETTING_H__
27
28 #include <setting-common-view.h>
29 #include <setting-common-search.h>
30
31 #define EXPORT_PUBLIC __attribute__ ((visibility ("default")))
32
33 /*  TAPI*/
34 #include <tapi_common.h>
35 #include <ITapiModem.h>
36
37 #include <sensor.h>
38 #include <notification.h>
39 #include <account.h>
40 #include <app_manager.h>
41 #include <efl_assist.h>
42 #include <dd-display.h>
43 //#include <tethering.h>
44
45 #define NETCONFIG_SERVICE                       "net.netconfig"
46 #define NETCONFIG_WIFI_INTERFACE                NETCONFIG_SERVICE ".wifi"
47 #define NETCONFIG_WIFI_PATH                     "/net/netconfig/wifi"
48
49 #define FEATURE_UNAVALIABLE_WHILE_TTS_ON "IDS_SCR_POP_SCREEN_READER_IS_NOT_SUPPORTED_BY_PS_PRESS_THE_BACK_KEY_TO_RETURN_TO_THE_PREVIOUS_SCREEN"
50
51 #define NO_UG_FOUND_MSG                         "IDS_MSGF_POP_UNSUPPORTED"
52 #define USB_NEED_OFF "Please turn USB tethering off first in Mobile hotspot"
53
54 #define Kies_Caring_Str "IDS_KW_POP_BE_CAREFUL_WHEN_TRANSMITTING_INFORMATION_ON_AN_UNSECURED_WI_FI_NETWORK_MSG"
55 #define Kies_Warrning_Str "IDS_USB_POP_UNABLE_TO_CONNECT_TO_KIES_VIA_WI_FI_WHEN_CONNECTED_TO_KIES_VIA_USB"
56
57 #define _2_TAB_STR              Keystr_Connection
58 #define _3_TAB_STR              KeyStr_Device
59 #define _4_TAB_STR              KeyStr_MotionControl /**/
60 #define _5_TAB_STR              "IDS_ST_BODY_GENERAL"
61 #define _6_TAB_STR              KeyStr_DownloadedAPPs
62
63 #define LIST_VIEW "IDS_CLD_BUTTON_LIST_VIEW"
64 #define GRID_VIEW "IDS_ST_BODY_GRID_VIEW"
65 #define TAB_VIEW "IDS_ST_OPT_TAB_VIEW"
66 #define EDIT_VIEW "IDS_ST_OPT_EDIT_QUICK_SETTINGS"
67
68
69 #define Keystr_Apps                     "IDS_ST_BODY_APPLICATION_SETTINGS"
70 #define Keystr_All                      "IDS_ST_OPT_ALL"
71 #define Keystr_MostUsed         "IDS_ST_TZTAB4_MOST_USED_M_APP"
72 #define Keystr_Connection       "IDS_ST_BODY_CONNECTION"
73 #define Keystr_Device           "IDS_ST_BODY_DEVICE"
74 #define Keystr_General          "IDS_ST_BODY_GENERAL"
75
76
77 #define USER_DEFINED_SETTING_STR "IDS_ST_HEADER_USER_SETTINGS_ABB"
78 #define FREQUENTLY_SETTING_STR "IDS_ST_BODY_FREQUENTLY_USED"
79 #define EMPTY_STR "IDS_ST_BODY_EMPTY"
80
81 #define ENABLE_FLIGHT_MODE_MSG "IDS_ST_BODY_FLIGHT_MODE_MSG"
82
83 /**
84  * @brief
85  */
86 typedef enum _Setting_Tab_View_Type {
87         SETTING_TAB_VIEW_INVALID = -1,
88         SETTING_TAB_VIEW_QUICK_SETTINGS = 0,
89         SETTING_TAB_VIEW_CONNECTION = 1,
90         SETTING_TAB_VIEW_DEVICE = 2,
91         SETTING_TAB_VIEW_CONTROL = 3,
92         SETTING_TAB_VIEW_GENERAL = 4,
93         SETTING_TAB_VIEW_APPS = 5,
94         SETTING_TAB_VIEW_MAX,
95 } Setting_Tab_View_Type;
96
97 typedef enum _setting_view_type {
98         SETTING_INVALID_VIEW = -1,
99         SETTING_LIST_VIEW = 0,
100         SETTING_GRID_VIEW = 1,
101         SETTING_TAB_VIEW = 2,
102         SETTING_EDIT_VIEW = 3,
103         SETTING_MAX,
104 } setting_view_type;
105
106
107 typedef void (*menu_list_load_fn) (void *data);
108 typedef void (*menu_list_load_fn2) (void *, Cfg_Item_Position, Evas_Object *);
109
110 #define MAX_GROUP_NUM_IN_VIEW 10
111
112 #if 1
113 /* 2 - order of Connection Tab list */
114 typedef enum _List_Load_Connection_Func_Type {
115         Func_Type_Connectivity = 0,
116         Func_Type_ShareAndTransfer,
117         Func_Type_Connection_MAX
118 } List_Load_Connection_Func_Type;
119
120 typedef enum _List_Load_Display_Func_Type {
121         Func_Type_Screen,
122         Func_Type_Others,
123         Func_Type_Display_MAX
124 } List_Load_Display_Func_Type;
125
126 typedef enum _List_Load_Device_Func_Type {
127         Func_Type_SoundDisplay,
128         Func_Type_Personal,
129         Func_Type_MotionControl,
130         Func_Type_Device_MAX
131 } List_Load_Device_Func_Type;
132
133 typedef enum _List_Load_General_Func_Type {
134         Func_Type_BackupOption,
135         Func_Type_System,
136         Func_Type_DownloadedApp,
137         Func_Type_General_MAX
138 } List_Load_General_Func_Type;
139
140 typedef enum _Top_Grid_Item_Type {
141         GRID_ITEM_WIFI = 0,
142         GRID_ITEM_DATAUSAGE,
143         GRID_ITEM_STORAGE,
144         GRID_ITEM_DISPLAY,
145         GRID_ITEM_SOUND,
146         GRID_ITEM_POWERSAVING,
147         GRID_ITEM_MAX
148 } Top_Grid_Item_Type;
149 #endif
150
151 /**
152  * enum for genlist item to be updated
153  * @see setting_update_gl_item
154  */
155 typedef enum _Update_GL_Item_Type {
156         GL_ITEM_WIFI = 0,
157         GL_ITEM_BT,
158         GL_ITEM_NFC,
159         GL_ITEM_SBEAM,
160         GL_ITEM_MAP,
161         GL_ITEM_USB,
162
163         GL_ITEM_ROTATION,
164         GL_ITEM_FLIGHT,
165         GL_ITEM_NETRESTRICTIONMODE,
166         GL_ITEM_DRIVING,
167         GL_ITEM_PWRSAVING,
168 #if SUPPORT_BLOCKINGMODE
169         GL_ITEM_BLOCKING,
170 #endif
171 #if SUPPORT_GUESTMODE
172         GL_ITEM_GUEST,
173 #endif
174         GL_ITEM_MAX
175 } Update_GL_Item_Type;
176
177 typedef enum _FLIGHT_MODE_OPEARTION{
178         FM_INVALID = 0, /*< There is no request waiting for processing */
179         FM_ENTER = 1,   /*< Some "flightmode enter" request is waiting for processing */
180         FM_LEAVE,               /*< Some "flightmode leave" request is waiting for processing */
181 } FLIGHT_MODE_OPEARTION;
182
183 #define IMG_CTRL_ICON_TOP                               SETTING_ICON_PATH_CFG"tap/A01-1_tap_icon_popular.png"
184 #define IMG_CTRL_ICON_CONNECTION                SETTING_ICON_PATH_CFG"tap/A01-1_tap_icon_connection.png"
185 #define IMG_CTRL_ICON_DISPLAY                   SETTING_ICON_PATH_CFG"tap/A01-1_tap_icon_device.png"
186 #define IMG_CTRL_ICON_GENERAL                   SETTING_ICON_PATH_CFG"tap/A01-1_tap_icon_general.png"
187
188
189 struct _GridItem
190 {
191         const char* name;                               /**< name below the icon image  */
192         const char* icon_path;          /**< icon path (full path)              */
193         const char* ug_name;                    /**< UG name                                    */
194         void* data;                             /* app context pointer                  */
195         Elm_Object_Item *item;  /**< gengrid object item */
196 };
197 typedef struct _GridItem GridItem;
198
199 #define MAX_GENGRID_TEXT_LEN 13
200 #define MAX_GRID_NUM 12
201
202 #define GRID_W_P 240
203 #define GRID_H_P 208
204 #define GRID_W_L 214
205 #define GRID_H_L 195
206
207 #define GRID_GROUP_H_P 81
208 #define GRID_GROUP_H_L 56
209
210 #define MAX_MORE_MENU_NUM       6
211 extern const char *fixed_grid_pref_key[];
212 #define WIFI_LAST_ON_OFF_STATE "PREFKEY_WIFI_ON_OFF"
213 #define PREFKEY_VIEW_TYPE "PREFKEY_VIEW_TYPE"
214 #define PREFKEY_TAB_VIEW_TAB "PREFKEY_TAB_VIEW_TAB"
215
216 enum {
217         OP_WIFI_TURNING_INVALID = 0x00,
218         OP_WIFI_TURNING_OFF,
219         OP_WIFI_TURNING_ON,
220 };
221
222 //driving mode
223 #define PREFKEY_SETTING_MAIN_DRIVING_MODE_ON_POPUP_REMINDER             "setting/main/driving_mode/on/popup_reminder"
224
225 enum
226 {
227         SC_All_List,
228         SC_All_Grid,
229         SC_Edit_List,
230         SC_Edit_Grid,
231
232         //to delete
233                 SC_All,
234                 SC_Top,
235         SC_Max
236 }; //genlist or gengrid
237
238 enum
239 {
240         VIEW_All_List,
241         VIEW_All_List_Quick,
242         VIEW_All_Grid,//not used to access menus,just for groups(from GL_Group_QuickSettings to GL_Group_Apps)
243         VIEW_Common,
244         VIEW_Common_Quick,
245         VIEW_Max
246 };
247
248
249 enum
250 {
251         GL_Joyn = 0,
252         GL_WiFi,
253         GL_BT,
254         GL_FlightMode,
255         GL_NetRestriction,
256         GL_MobileApp,
257         GL_Network,
258         GL_NearByDev,
259         GL_NFC,
260         GL_SBeam,
261         GL_Motion,
262         GL_PalmMotion,
263         GL_GuestMode,
264         GL_Bright,
265         GL_Backlight,
266         GL_Battery,
267         GL_MultiWin,
268         GL_BM,
269         GL_DM,
270         GL_PM,
271         GL_PersonalPage,
272         GL_TouchSens,
273         GL_TouchkeyLight,
274         GL_Landscape,
275         GL_BlockingMode,
276         GL_Screentone,
277         GL_Screenmode,
278
279         GL_Group_QuickSettings,
280         GL_Group_Connection,
281         //GL_Group_Share,
282         GL_Group_SoundDisplay,
283         GL_Group_Personal,
284         //GL_Group_MotionControl,
285         GL_Group_UserBackup,
286         GL_Group_System,
287         GL_Group_Apps,
288         GL_Max
289 };
290
291 /**
292  * @brief main view context
293  */
294 typedef struct _setting_main_appdata {
295
296         ui_gadget_h ug;                                         /**< ug */
297
298         TapiHandle *handle;
299         Evas_Object *popup;
300
301         Evas_Object* ly_editview;                       /**< Edit mode */
302
303         Evas_Object *popup_kies_via_wifi;
304         Evas_Object *popup_wifi_mode;
305         Evas_Object *popup_flight_mode;
306         Evas_Object *popup_blocking_mode;
307         Evas_Object *popup_net_restriction_mode;
308         Evas_Object *popup_palmmotion_tts;
309         Evas_Object *popup_palmmotion_enable;
310
311         Evas *evas;
312         Evas_Object *win_main;
313
314         menu_list_load_fn load_fns[SETTING_TAB_VIEW_MAX][MAX_GROUP_NUM_IN_VIEW]; /**< */
315
316         Evas_Object *navibar_main;
317         Elm_Object_Item *main_navi_it;
318
319         Evas_Object *ly_main;                   /**< seting view main */
320         Evas_Object *gengrid;
321         Evas_Object *sc_gl[SC_Max];             /**< genlist array */
322         Evas_Object *sc_gg[SC_Max];             /**< gengrid array */
323
324         Setting_GenGroupItem_Data *gl_data_item[VIEW_Max][GL_Max];
325         Setting_GenGroupItem_Data *edit_group_item[GL_Max-GL_Group_QuickSettings];
326
327         bool isInUGMode;                                /**< set TRUE when UG is running */
328
329         /**
330          * vars for flightmode
331          */
332         bool b_fm_requesting; /**< whether some request is processing. 1:yes, 0:no */
333         FLIGHT_MODE_OPEARTION fm_waiting_op;
334
335         /* special layout */
336         Setting_GenGroupItem_Data *data_joyn;
337         Setting_GenGroupItem_Data *data_flight;
338         Setting_GenGroupItem_Data *data_multi_window;
339         Setting_GenGroupItem_Data *data_netrestrictionmode;
340         Setting_GenGroupItem_Data *data_wifi;
341         Setting_GenGroupItem_Data *data_bt;
342         Setting_GenGroupItem_Data *data_mobileApp;
343
344         Setting_GenGroupItem_Data *data_bright;
345         Setting_GenGroupItem_Data *data_backlight;
346         Setting_GenGroupItem_Data *data_battery;
347         Setting_GenGroupItem_Data *data_landscape;
348         Setting_GenGroupItem_Data *data_screentone;
349         Setting_GenGroupItem_Data *data_screenmode;
350         Setting_GenGroupItem_Data *data_touchkey_light_duration;
351         Setting_GenGroupItem_Data *data_powersaving;
352         Setting_GenGroupItem_Data *data_driving;
353         Setting_GenGroupItem_Data *data_blocking;
354         Setting_GenGroupItem_Data *data_personalpage;
355         Setting_GenGroupItem_Data *data_guest;
356         Setting_GenGroupItem_Data *data_high_touch_sensitivity;
357
358         Setting_GenGroupItem_Data *data_moreSystem;
359         Setting_GenGroupItem_Data *data_moreConnect;
360         Setting_GenGroupItem_Data *data_nfc;
361         Setting_GenGroupItem_Data *data_sbeam;
362         Setting_GenGroupItem_Data *data_motion;
363         Setting_GenGroupItem_Data *data_palmmotion;
364         Setting_GenGroupItem_Data *data_nearby_devices;
365         //following are not for update..
366         Setting_GenGroupItem_Data *data_network;
367
368         //top
369         Setting_GenGroupItem_Data *data_fixed_gengrid_portrait;
370
371         Setting_GenGroupItem_Data *data_fixed_gengrid_landscape;
372
373         Setting_GenGroupItem_Data *data_frequently_portrait;            // genlist item
374         Setting_GenGroupItem_Data *data_frequently_landscape;           // genlist item
375
376         Setting_GenGroupItem_Data *data_frequently_used_portrait;       // title
377         Setting_GenGroupItem_Data *data_frequently_used_landscape;      // title
378
379         Setting_GenGroupItem_Data *data_recently_portrait;
380         Setting_GenGroupItem_Data *data_recently_landscape;
381         Setting_GenGroupItem_Data *data_recently_used_portrait;
382         Setting_GenGroupItem_Data *data_recently_used_landscape;
383
384         ListItemObject *data_no_result;
385
386         //---------------------------------------------------------------
387
388         Setting_Tab_View_Type view_type;
389         Setting_Tab_View_Type select_tab_type;
390         setting_view_type list_type;
391         Evas_Object* ly_select_tab;
392         Evas_Object *select_sub_view[SETTING_TAB_VIEW_MAX];
393         GridItem* select_edit_mode_item;
394         Evas_Object* edit_genlist;
395         Evas_Object* edit_gengrid;
396         Eina_List *edit_sel_list;
397         Elm_Object_Item *edit_navi_it;
398         Elm_Object_Item *select_ctrl_item[3];
399
400         Evas_Object *main_genlist;                              /**< 'Setting main' in main page */
401
402         Elm_Genlist_Item_Class itc[GENDIAL_Type_MAX];
403         Elm_Genlist_Item_Class itc_no_reult;
404
405         Setting_GenGroupItem_Data *check_all_item; /**< genlist node for "Select all" */
406
407         Evas_Object *data_roaming_popup;
408
409         //driving mode
410         Evas_Object *driving_mode_popup;
411         Evas_Object *driving_mode_popup_chk;
412
413         // Personal page
414         char *personal_data;
415
416         // listen / unlisten code
417         Eina_List *listened_list;
418         sensor_h sf_handle;
419
420         const char *more_connective_menus[MAX_MORE_MENU_NUM];
421         const char *more_system_menus[MAX_MORE_MENU_NUM];
422
423         Evas_Object *webkit;
424         Evas_Object *conform;
425
426         // NEW UX ---------------------------------------------------
427         Elm_Object_Item *ctrl_item[SETTING_TAB_VIEW_MAX];  // 0:Grid, 1:General 2:Applications
428         Evas_Object *sub_view[SETTING_TAB_VIEW_MAX];       // 0:Grid, 1:General 2:Applications
429         Evas_Object* view_layout;       // view layout
430         Evas_Object *ctrl_bar;
431
432         Eina_Bool click_flag;
433         Elm_Gengrid_Item_Class *gic;
434         Elm_Gengrid_Item_Class groupic;
435         Elm_Gengrid_Item_Class editGic;
436         Ecore_Timer *save_idler;
437
438         Ecore_Timer *update_idler;
439
440         Ecore_Timer *bt_timer;
441         Ecore_Timer *nfc_timer;
442         Ecore_Timer *wifi_timer;
443         Ecore_Idler *update_font_idler;
444         Ecore_Timer *dashboard_timer;
445         int current_rotation;
446         int noti_id;
447         int driving_noti_id;
448         int flight_noti_id;
449         // ----------------------------------------------------------
450
451         Ecore_Timer *event_freeze_timer;
452
453         // FEATURE : setting search
454         // ly_topview
455         // search app
456         Evas_Object* ly_topview;
457         Evas_Object *search_genlist;
458         int search_count;
459         int cur_count;
460         ListItemObject *search_selected_item_data;
461
462         account_subscribe_h account_subscribe_handle;
463         Evas_Object *search_bar;
464         char search_text[512 + 1];
465         char current_search_text[512+1];
466         Ecore_Idler *search_idler;
467         Eina_Bool nfc_try_activate_running;
468
469         Elm_Object_Item *grid_item[6];
470
471         bundle* b;
472         int wifi_op;
473
474         Cfg_Item_Type is_searchmode;
475
476         Setting_GenGroupItem_Data *data_temp;
477
478         //cis-panel
479         Evas_Object *cis_left_panel;
480         Evas_Object *cis_left_panel_list;
481
482         bool    cis_style_gengrid;
483         Evas_Object *current_gengrid;
484
485         Elm_Genlist_Item_Class itc_expand_grid;
486         int scrl_type;
487
488     Ea_Theme_Color_Table *theme_table;
489
490         Eina_Hash *main_list_hash;
491
492 } setting_main_appdata;
493 extern setting_main_appdata *g_main_ad;
494 extern const char *menu_group[];
495
496 /* launch view */
497 extern setting_view setting_view_main;
498 extern setting_view setting_view_edit_mode;
499
500 extern void __gl_realized(void *data, Evas_Object *obj, void *event_info);
501 extern void setting_main_refresh_topview_list(void *data);
502
503 extern Evas_Object *__get_top_list(void *data);
504 extern void setting_main_click_list_ex_ug_cb(void *data, Evas_Object *obj, void *event_info);
505 extern GridItem *__main_grid_item_append(Evas_Object *gengrid, const Elm_Genlist_Item_Class *itc,
506                                         setting_call_back_func gl_sel, const char *key_name,
507                                         const char *icon_path, const char *ug_name,
508                                         void *data);
509 extern Eina_Bool __save_timer(void *data);
510
511 typedef Setting_GenGroupItem_Data* (*UI_HANDLER)(void* data, char* title, char* iconpath, char* ugname, Evas_Object *genlist, Elm_Object_Item *parent);
512
513
514 typedef enum
515 {
516         ERROR_STATE =-1,
517         DEFAULT_UI=0,
518         UI_PROC,
519         UG_HANDLE,
520 } mainlist_entry_action_type;
521
522 typedef struct _mainlist_entry {
523         char* title;
524         UI_HANDLER ui_handler;
525         mainlist_entry_action_type type;
526         //--------------------------------------------------
527         void* item_data;
528 } mainlist_entry;
529
530 #endif                          /* __SETTING_H__ */