add ui-gadget and fix them
[apps/home/settings.git] / setting-common / include / setting-common-data-type.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 /**
23  *@defgroup common-data-type
24  *common data type
25  */
26
27 #ifndef __SETTING_COMMON_DATA_TYPE_H__
28 #define __SETTING_COMMON_DATA_TYPE_H__
29
30 #include <Elementary.h>         /* including Elementary lib */
31 #include <setting-debug.h>      /*  including debuging type */
32 #include <setting-common-resource.h>    /* including one class of data type */
33 #include <setting-common-data-error.h>  /* including another class of data type */
34 #ifndef PREFIX
35 #define PREFIX "/opt"
36 #endif
37
38 #ifndef bool
39 #define bool Eina_Bool
40 #endif
41 #define PWD_FILE "/opt/usr/data/setting/set_info"
42 /*#define PLUGIN_CFG_DIR "/opt/usr/data/setting/plugin-cfg" */
43 #define PLUGIN_CFG_DIR "/opt/usr/data/setting/plugin-xml"
44
45 #define SETTING_POSTINST_FILE "/var/lib/dpkg/info/org.tizen.setting.postinst"
46 #define SETTING_PACKAGE                 "setting"
47 #define SYSTEM_PACKAGE                  "sys_string"
48 #define SETTING_LOCALEDIR               "/usr/apps/org.tizen.setting/res/locale"
49
50 #define MODE_SYSPOPUP_PACKAGE                  "mode-syspopup"
51 #define MODE_SYSPOPUP_LOCALEDIR                "/usr/apps/org.tizen.mode-syspopup/res/locale"
52
53 #define SYSTEM_ICON_PATH                "/usr/apps/org.tizen.setting/res/icons"
54 #define SETTING_ICON_PATH               "/usr/apps/org.tizen.setting/res/icons"
55 #define SETTING_UG_ICON_PATH    "/usr/ug/res/icon/org.tizen.setting"
56
57 #define SETTING_UG_PATH                 "/usr/ug/lib"
58 #define SETTING_UG_PATH_USR             "/usr/ug/lib"
59
60 /*#define SETTING_UG_PATH_OPT                   "/opt/ug/lib" */
61 /*#define SETTING_UG_PATH_USR_OPT               "/opt/ug/lib" */
62
63 #define SETTING_PATH_MEMORY_OPT                 "/opt/usr"
64 #define SETTING_PATH_SDCARD_OPT                 "/opt/storage/sdcard"
65 #define SETTING_PATH_PARENT_SDCARD_OPT  "/opt/storage/sdcard/.."
66
67
68 #define SETTING_KILOBYTE_VALUE          1024
69 #define SETTING_MEGABYTE_VALUE          1048576
70 #define SETTING_GIGABYTE_VALUE          1073741824
71
72 #define SETTING_MAX_STR_LEN                     30
73
74
75 #define SETTING_EDJ_PATH                EDJDIR
76 #define SETTING_MEMORY_EDJ_NAME         SETTING_EDJ_PATH"/setting-memory.edj"
77 #define SETTING_THEME_EDJ_NAME          SETTING_EDJ_PATH"/setting-theme.edj"
78 #define SETTING_5STEP_SLIDER_EDJ_NAME           SETTING_EDJ_PATH"/font-slider.edj"
79 #define SETTING_NEWUX_EDJ_NAME          SETTING_EDJ_PATH"/setting-newux.edj"
80 #define SETTING_SOUND_EDJ_NAME          SETTING_EDJ_PATH"/setting-sound.edj"
81 #define SETTING_GENLIST_EDJ_NAME        SETTING_EDJ_PATH"/setting-genlist.edj"
82 #define SETTING_NEW_GENLIST_EDJ_NAME    SETTING_EDJ_PATH"/setting-new-genlist.edj"
83 #define SETTING_PROC_EDJ_NAME                   SETTING_EDJ_PATH"/setting-proc.edj"
84 #define SETTING_SPINNER_EDJ_NAME        SETTING_EDJ_PATH"/setting-spinner.edj"
85 #define SETTING_SLIDER_EDJ_NAME SETTING_EDJ_PATH"/setting-slider.edj"
86 #define SETTING_EFF_EDJ_NAME                    SETTING_EDJ_PATH"/setting-eff.edj"
87 #define SETTING_POWER_EDJ_NAME                  SETTING_EDJ_PATH"/setting-power.edj"
88 #define SETTING_BATT_EDJ_NAME                   SETTING_EDJ_PATH"/setting-batt.edj"
89
90 #define SETTING_THEME_COLOR_THEME_EDJ_NAME              SETTING_EDJ_PATH"/setting-color-theme.edj"
91
92
93 #define RCS_CHECHING_FILE "/opt/share/ims/.RCS_ENABLED"
94
95 /* inoti (broadcasting without data */
96 #define SETTING_TIME_CHANGED    "setting_time_changed"
97
98 /* anci c color type */
99 #define SETTING_FONT_RED "\033[31m"
100 #define SETTING_FONT_BLACK "\033[0m"
101 #define SETTING_FONT_BGREEN "\033[36m"
102
103 #define THEME_STYLE "beat"
104
105 #define IMG_EC_ARROW_OPEN  SETTING_ICON_PATH"org.tizen.setting.png"
106 #define IMG_EC_ARROW_CLOSE SETTING_ICON_PATH"org.tizen.setting.png"
107
108 #define SETTING_IDLE_IMAGE_PATH "/etc/idle_image/"
109
110 #define NAVI_DEF_BUTTON_STYLE  "naviframe/toolbar/default"/*"naviframe_control/default" */
111 #define NAVI_BACK_BUTTON_STYLE "naviframe/back_btn/default"
112 #define NAVI_MORE_BUTTON_STYLE "naviframe/more/default"/*"naviframe_control/default" */
113
114
115 #define NAVI_CONTROLBAR_PART "controlbar"
116
117 #define BTN_STYLE_DEF "naviframe/title/default"
118 #define NAVI_BTN_STYLE_LEFT "title_left_btn"
119 #define NAVI_BTN_STYLE_RIGHT "title_right_btn"
120 #define NAVI_BTN_STYLE_MORE "title_more_btn"
121 #define NAVI_BTN_STYLE_PREV "prev_btn"
122
123 /*#define PROGRESSBAR_STYLE "Process_Large" */
124 #define PROGRESSBAR_STYLE "process_large"
125 #define SETTING_FONT_CONF_FILE "/opt/etc/fonts/conf.avail/99-slp.conf"
126 #define SETTING_DEFAULT_FONT_CONF_FILE "/usr/opt/etc/fonts/conf.avail/99-slp.conf"
127
128
129
130 /*#define GENLIST_LIST_SUB_TEXT_SETTINGS_COLOR_STYLE          "#3B73B6FF" */
131 #define BLUE_COLOR          "#3B73B6"  /*3B73B6FF <== 59 115 182 255 */
132 #define GRAY_COLOR "#7B7B7B"
133 #define RED_COLOR "#FF0000"
134 #define WHITE_COLOR "#FFFFFF"
135
136 /**
137 * @brief slider, button, and etc.
138 *
139 * @param data application context
140 * @param obj Evas Object
141 * @param event_info even type
142 *
143 * @return vo return
144 */
145 typedef void (*setting_call_back_func)(void *data, Evas_Object *obj, void *event_info);
146
147 #define WIDGET_SCALE_FACTOR                             (get_widgets_factor())
148 #define SETTING_PADDING_WIDTH                   (8 * WIDGET_SCALE_FACTOR)
149 #define SETTING_PADDING_HEIGHT                  (8 * WIDGET_SCALE_FACTOR)
150 #define SETTING_HALF_SCREEN_WIDTH \
151         (SETTING_PADDING_WIDTH * 22 * WIDGET_SCALE_FACTOR)
152
153 #define SYS_NOTI_NAME_LEN                                       128
154 #define MAX_DISPLAY_NAME_LEN_ON_UI                      128
155 #define MAX_COMMON_BUFFER_LEN                           1024
156 #define BUF_SIZE                                        512
157
158 #define MAX_SEARCH_STR_LEN 40
159
160 #define HELP_MSG_BUFF_SIZE                              1000
161 #define MAX_SPECIALIZITION_LEN                          1000
162 #define SPECIALIZITION_FONT                                     25
163 #define HELP_TITLE_SIZE                                         30
164 #define HELP_CONTENT_SIZE                                       28
165
166 #define PHONE_LOCK_ATTEMPS_MAX                          5
167 #define SIM_LOCK_ATTEMPS_MAX                            5
168 #define PHONE_LOCK_BLOCK_SECONDS                        30
169 #define SIM_LOCK_BLOCK_SECONDS                          30
170 #define LOCK_TIMESTAMP_LEN                                      64
171 #define MAX_DATETIME_FORMAT_LEN                         64
172 #define MAX_DATE_FORMAT_LEN                             10
173
174 #define SMALL_FONT_DPI                                          (-80)
175 #define MIDDLE_FONT_DPI                                         (-100)
176 #define LARGE_FONT_DPI                                          (-144)
177 #define HUGE_FONT_DPI                                           (-184)
178 #define GIANT_FONT_DPI                                          (-240)
179
180 #define LABEL_FONT_SIZE_SMALL                                   24
181 #define LABEL_FONT_SIZE_NORMAL                                  35
182 #define LABEL_FONT_SIZE_LARGE                                   55
183 #define LABEL_FONT_SIZE_HUGE                                    75
184 #define LABEL_FONT_SIZE_GIANT                                   92
185
186 #define __STR_EMUL                                                      "emul"
187 #define __LEN_STR_EMUL                                          4
188
189 #define MAX_SYSTEM_SERVICE_NUM                          30
190 #define SYSTEM_SERVICE_LIST_PATH "/opt/osp/system/configuration/system-services.list"
191 #define MAX_PKG_NAME_LEN                        128
192
193 #define MIN_MOVE_DISTANCE 30
194
195 enum {
196     SETTING_ON_OFF_BTN_OFF = 0,
197     SETTING_ON_OFF_BTN_ON,
198     SETTING_ON_OFF_BTN_MAX
199 };
200
201
202 typedef struct {
203         char *locale;                           /* ex) "en_US.UTF" */
204         char *title;                            /* "United Kingdom" */
205         char *mcc;
206         /*int number;                           // no -  UI */
207 } setting_lang_entry;
208
209 typedef enum _Theme_Type {
210     Theme_Invalid = -1,
211     Theme_Tizen = 0,
212     Theme_Tizen_Black = 1,
213     Theme_Tizen_Blue,
214     Theme_ERROR
215 } Theme_Type;
216
217 typedef enum _GENDIAL_Type {
218     GENDIAL_Type_1text_1icon_2 = 0,
219     GENDIAL_Type_1text_2icon = 1,
220     GENDIAL_Type_1icon_2text = 2,
221     GENDIAL_Type_2text_2icon_4 = 3,
222     GENDIAL_Type_1text_2icon_2 = 4,
223     GENDIAL_Type_2text_2icon_3 = 5,
224     GENDIAL_Type_sel_all,
225
226     GENDIAL_Type_1text_2icon_divider,
227     GENDIAL_Type_group_item,
228     GENDIAL_Type_mygroup_item,
229     GENDIAL_Type_2text_3,
230     GENDIAL_Type_1gengrid,
231     GENDIAL_Type_1gengrid_proc,
232
233     GENDIAL_Type_expandable_proc,
234     GENDIAL_Type_MAX
235 } GENDIAL_Type;
236
237 typedef enum _SWALLOW_Type {
238     SWALLOW_Type_INVALID = -1,
239     SWALLOW_Type_2ICON = 0,
240     SWALLOW_Type_1ICON_1CHECK = 1,
241     SWALLOW_Type_1ICON_1RADIO = 2,
242     SWALLOW_Type_1CHECK = 3,
243     SWALLOW_Type_1CHECK_RIGHT = 4,
244     SWALLOW_Type_1CHECKICON = 5,
245     SWALLOW_Type_1RADIO = 6,
246     SWALLOW_Type_1TOGGLE =  7,
247     SWALLOW_Type_1ICON_1PROCESS,
248     SWALLOW_Type_MULTILINE_1TOGGLE,
249     SWALLOW_Type_1ICON_1DOTTOOGLE,
250
251     SWALLOW_Type_1ICON_1IMAGE,
252     SWALLOW_Type_1GIF,
253     SWALLOW_Type_1IMAGE,
254     SWALLOW_Type_1TEXT_1IMAGE,
255     SWALLOW_Type_1BUTTON,
256     SWALLOW_Type_1PROCESS,
257     SWALLOW_Type_1ICON_WITHOUT_CIRCLE_BG,
258
259     SWALLOW_Type_1RADIO_SUB,
260     SWALLOW_Type_1RADIO_RIGHT,
261     SWALLOW_Type_1RADIO_1PROCESS,
262     SWALLOW_Type_1RADIO_1SEARCH,
263     SWALLOW_Type_1RADIO_1LABLE,
264     SWALLOW_Type_1RADIO_1BTN,
265     SWALLOW_Type_1RADIO_1TEXT,
266     SWALLOW_Type_1SEARCH,
267
268     SWALLOW_Type_1LINE_LAYOUT,
269     SWALLOW_Type_1LINE_LAYOUT_1RADIO,
270     SWALLOW_Type_1LINE_LAYOUT_1TOGGLE,
271     SWALLOW_Type_1LINE_LAYOUT_1CHECK,
272     SWALLOW_Type_LOAD_LAYOUT, /*load an app or UG */
273     SWALLOW_Type_LAYOUT_ENTRY,
274     SWALLOW_Type_LAYOUT_EDITFIELD,
275     SWALLOW_Type_LAYOUT_SIMPLE_PASSWORD, /* for simple password */
276     SWALLOW_Type_LAYOUT_DATEFIELD,
277     SWALLOW_Type_LAYOUT_SLIDER,
278     SWALLOW_Type_LAYOUT_5STEP_SLIDER,
279     SWALLOW_Type_LAYOUT_SPECIALIZTION,
280     SWALLOW_Type_LAYOUT_SPECIALIZTION_X,/*extension */
281
282     SWALLOW_Type_MAX
283 } SWALLOW_Type;
284
285 typedef enum {
286     UNDEFINED_LIB_SYMBOL = -2,/*  undefined symbol : -2 */
287     LOAD_LIB_FAILED = -1,/*  load failed : -1 */
288     OPERATE_LIB_SUCESS = 0,
289 } OPERATE_LIB_ERROR;
290
291 typedef enum _POPUP_BTN_RESPONSE_TYPE {
292     POPUP_RESPONSE_INVALID = -1,
293     POPUP_RESPONSE_OK = 0,
294     POPUP_RESPONSE_CANCEL = 1,
295 } POPUP_BTN_RESPONSE_TYPE;
296
297 typedef enum {
298     SETTING_GROUP_STYLE_NONE = 0,
299     SETTING_GROUP_STYLE_TOP,
300     SETTING_GROUP_STYLE_CENTER,
301     SETTING_GROUP_STYLE_BOTTOM
302 } setting_group_style;
303
304
305 /**
306  * an item node in genlist
307  * @todo begings_to is requried?
308  * @todo isItemDisableFlag is required?
309  * @todo isSinglelineFlag is requred?
310  */
311 typedef struct _Setting_GenGroupItem_Data {
312
313         void **pBack;
314
315         Evas_Object *win_main;
316
317         Elm_Object_Item *item;
318
319         SWALLOW_Type swallow_type;
320
321         const char *l_swallow_path;
322         const char *r_swallow_path;
323
324         /* for shortcut item */
325         const char *exec_path;
326
327         Evas *evas;
328
329         /* radio button */
330         Evas_Object *rgd;                                               /**< radio button */
331
332         /* output */
333         Evas_Object *eo_check;                                  /**< slider, button, check, editfield, datefield */
334         setting_call_back_func chk_change_cb;
335
336         int chk_status;                                                 /**< represent check value, slider value, datefield value etc.. */
337         char *keyStr;                                                   /**< title */
338         char *keyStr2;                          /**< title for font name expanlist item*/
339         char *sub_desc;                                                 /**< sub text */
340         char *guide_text;                                               /**< guide text for editfield */
341
342         /* to swallow a whole layout (genlist item is 1line-layout or 2line-layout) */
343         char *item_style;                                               /**< itc style name */
344
345         /*  for slider control */
346         bool isIndicatorVisible;                                /**< indicator option (displaying number) */
347         double slider_min;                                              /**< to swallow a slider */
348         double slider_max;                                              /**< to swallow a slider */
349         setting_call_back_func start_change_cb;
350         setting_call_back_func stop_change_cb;
351         setting_call_back_func maxlength_reached_cb;
352         setting_call_back_func focus_cb;           /**< for entry */
353         setting_call_back_func activated_cb;            /**< for entry */
354
355         setting_call_back_func mouse_up_cb;
356
357         void *x_callback_cb;
358
359         /* sound/vibration */
360         int belongs_to;                                                 /**< 1: slider belongs to sound group. 0: slider belongs to vibration group */
361
362         /*  input panel  */
363         Elm_Input_Panel_Layout input_type;              /**< input panel type */
364         bool input_panel_disable_flag;          /** do not show the input panel automatically when the widget is clicked or has focus*/
365         Elm_Input_Panel_Return_Key_Type return_key_type;        /** the return key type in input method panel*/
366         int disable_auto_cap; /** do not autocapital the first char in edit field*/
367
368         void *userdata;                                                 /**< just a reference, do not need release. */
369
370         bool isPasswordFlag;
371         bool isFocusFlag;
372         bool isItemDisableFlag;                                 /**< date/time UG only */
373         bool isSinglelineFlag;
374         bool maxLengthReachFlag;
375         bool enterKeyPressFlag;                 /**< for about UG, enter or space key are not allowed, if they are pressed, it is true */
376         bool spaceKeyPressFlag;                 /**<for about UG,if space key is pressed, need to popup a notification>*/
377
378         int int_slp_setting_binded;                     /**< its relative vconf value must increase from 0, and step is 1. eg, 0, 1, 2, 3.. */
379         bool entry_auto_focus;                  /*for enty, if this is true, then entry will be focus state when the entry is created*/
380
381         /* popup */
382         Evas_Object *notify;                                    /**< act as any popup to show user any message */
383
384         Elm_Entry_Filter_Accept_Set *digits_filter_data;
385         Elm_Entry_Filter_Limit_Size *limit_filter_data;
386
387         Eina_List *childs;              /**< child nodes if this has child nodes for handling radio buttons */
388
389         setting_group_style group_style;
390         setting_group_style exp_style;
391         setting_group_style con_style;
392         bool isGroupStyleTOP; /*fix aboutUG device name display style issue. */
393         bool focus_unallowed;
394         /*for data usage*/
395         char *app_id;
396
397         /* Edit control : min length filter */
398         int minlength;          /* min length -- characters */
399
400         /*for incoming call*/
401         Eina_Bool isPlaying;
402
403         /* for disable item*/
404         Eina_Bool disableflag;
405         Eina_Bool toggleDisableFlag;
406
407         bool isDisableClick;
408
409         /*record itc style for all genlist item with check/radio/toggle */
410         char *itc;
411
412         /* storage item style */
413         int color; /* 2: app, 3: pic,video, 4: audio, 5: Misc files, 6: Avail space */
414
415         /* Sound, ringtone ug, fullpath */
416         char *filepath;
417
418         /* elm_datetime new */
419         Evas_Object *btn_left;
420         Evas_Object *btn_right;
421
422         Evas_Object *nf;
423
424 } Setting_GenGroupItem_Data;
425
426 typedef enum {
427     SETTING_VCONF_INT_TYPE = 0,
428     SETTING_VCONF_BOOL_TYPE,
429     SETTING_VCONF_STR_TYPE
430 } setting_vconf_type;
431
432 #define MAX_RESET_MENU_NUM 100
433
434 typedef struct _item_table {
435         char *item_name;        /* pointer to the key string */
436         char *ug_args;
437         Setting_GenGroupItem_Data *data_GenItem;
438 } Item_Table;
439
440 typedef struct _AllowListItem AllowListItem;
441
442 struct _AllowListItem {
443         char *person_id;
444         char *name;
445         char *thumb_path;
446 };
447 /**
448  * @todo is 50 sufficient value?
449  */
450 typedef struct _Setting_Done_List_Data {
451         /* external input arguements */
452         Evas_Object *win_main;
453         void *UG_data;
454         Evas_Object *ly_parent;
455         Evas_Object *controllbar;
456         Elm_Object_Item *navi_it;
457         const char navi_title[MAX_DISPLAY_NAME_LEN_ON_UI];
458
459         /* internal output%input arguements */
460         Item_Table chk_items[MAX_RESET_MENU_NUM];
461         int cur_item_selnum;
462         int cur_item_num;
463         Evas_Object *selInfoPop;
464         Evas_Object *selInfoPop_layout;
465         Elm_Genlist_Item_Class itc_1text_1icon;
466         Elm_Genlist_Item_Class itc_1text_2icon;
467         Elm_Genlist_Item_Class itc_seperator;
468         Elm_Genlist_Item_Class itc_sel_all;
469         Evas_Object *select_all_checkbox;
470         Eina_Bool select_all_checked;
471         Eina_List *list;
472
473         AllowListItem allow_items[MAX_RESET_MENU_NUM];
474 } Setting_Done_List_Data;
475
476
477 #define MAX_BUTTON_TEXT_LEN 20
478 #define MAX_BUTTON_NUM 20
479 typedef struct _setting_btn_data {
480         Evas_Object *parent;
481         const char  *btn_text[MAX_BUTTON_NUM];
482         const char  *btn_icon[MAX_BUTTON_NUM];
483         setting_call_back_func btn_click_cb;
484         void *btn_cb_data;
485         Evas_Object *ctxpopup;
486         Elm_Object_Item *item[MAX_BUTTON_NUM];
487 } Setting_Btn_Data;
488
489 #define USEC_PER_SEC  1000000UL
490 typedef struct {
491         const char *key_font_name;
492         int font_size;
493 } settings_font_size_table;
494
495 #endif                          /* __SETTING_COMMON_DATA_TYPE_H__ */