tizen 2.4 release
[apps/home/settings.git] / setting-common / include / setting-cfg.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-cfg
23  *configuration file management.
24  *Setting app is based on JSON scripting for configuration management.
25  */
26
27 #ifndef __SETTING_CFG_H__
28 #define __SETTING_CFG_H__
29
30 #include <glib.h>
31 #include <json-glib/json-glib.h>
32 #include <setting-common-resource.h>
33 #include <app.h>
34
35 #define EXPORT_PUBLIC __attribute__ ((visibility ("default")))
36
37 /*****/
38 typedef enum _Cfg_Item_Position_Type {
39     Cfg_Item_Pos_Uninstall = -1,
40     Cfg_Item_Pos_Level0 = 0,
41     Cfg_Item_Pos_Level1 = 1,
42     Cfg_Item_Pos_Level_All = 2,
43 } Cfg_Item_Position;
44
45 typedef enum _Cfg_Item_State {
46     Cfg_Item_Error = -1,
47     Cfg_Item_Off = 0,           /* same order - vconf 0 (boolean) */
48     Cfg_Item_On = 1                     /* same order - vconf 1 (boolean) */
49 } Cfg_Item_State;
50
51
52
53 typedef enum _Cfg_Item_Reset_Type {
54     Cfg_Item_unResetable = 0,
55     Cfg_Item_Resetable = 1,
56 } Cfg_Item_Reset_Type;
57
58 typedef enum _cfg_error_type {
59     Cfg_Error_Type_Sucess = 0,
60     Cfg_Error_Type_CreateCfg_Failed = -1,
61     Cfg_Error_Type_Mkdir_Failed = -2,
62     Cfg_Error_Type_RemoveCfg_Failed = -3,
63     Cfg_Error_Type_ReadCfg_Failed = -4,
64     Cfg_Error_Type_DirPermissionDenied = -5,
65     Cfg_Error_Type_FilePermissionDenied = -6,
66 } Cfg_Error_Type;
67
68
69 #define SEARCH_TYPE_ERROR "0"
70 #define SEARCH_TYPE_UG_NODE "1"
71 #define SEARCH_TYPE_UI_NODE "2"
72 #define SEARCH_TYPE_TITLE_NODE "3"
73 #define SEARCH_TYPE_APP_NODE "4"
74 #define SEARCH_TYPE_VIEW_NODE "5"
75 #define SEARCH_TYPE_APPLAUNCHER_NODE "6"
76 #define SEARCH_TYPE_APPLAUNCHER_VIEW_NODE "7"
77
78 #define SEARCH_TYPE_UG_NODE_TOGGLE "1"SEARCH_TYPE_UG_NODE
79 #define SEARCH_TYPE_UI_NODE_TOGGLE "1"SEARCH_TYPE_UI_NODE
80 #define SEARCH_TYPE_VIEW_NODE_TOGGLE "1"SEARCH_TYPE_VIEW_NODE
81 #define SEARCH_TYPE_APPLAUNCHER_NODE_TOGGLE "1"SEARCH_TYPE_APPLAUNCHER_NODE
82
83
84 /**
85  * 1, 4, 5, 6 - ug mode
86  * 2, 3,
87  */
88 typedef enum _Cfg_Item_Type {
89     Cfg_Item_Node_Error = 0,            /** Error                                     - no action */
90     Cfg_Item_Ug_Node = 1,                       /** general UG                                - don't create Grid */
91     Cfg_Item_Ui_Node = 2,                       /** no UG, no app launching, just menu name   - create Grid */
92     Cfg_Item_Title_Node = 3,            /** view name                                 - create Grid */
93     Cfg_Item_App_Node = 4,                      /** app type - by launcher - read doc '4' */
94     Cfg_Item_View_Node = 5,                     /** view name - 2depth search */
95     Cfg_Item_AppLauncher_Node = 6,      /** app launcher (NOT Ug)                     - don't create Grid */
96     Cfg_Item_AppLauncher_View_Node = 7, /** view name - 2depth search by app-launcher */
97
98     /*------------------------------------------------------------------------------- */
99     /* (Cfg_Item_Ug_Node_Toggle/10 > 0 ) --> toggle style */
100     Cfg_Item_Ug_Node_Toggle = Cfg_Item_Ug_Node + 10,                    /** general UG                                - don't create Grid */
101     Cfg_Item_Ui_Node_Toggle = Cfg_Item_Ui_Node + 10,                    /** no UG, no app launching, just menu name   - create Grid */
102     Cfg_Item_View_Node_Toggle =  Cfg_Item_View_Node + 10,               /** view name - 2depth search with toggle button */
103     Cfg_Item_AppLauncher_Node_Toggle = Cfg_Item_AppLauncher_Node + 10,  /** app launcher (NOT Ug)                     - don't create Grid */
104
105 } Cfg_Item_Type;
106
107 typedef struct {
108         int (*get_item_state)(Cfg_Item_State *stat, void *data);
109         int (*set_item_state)(Cfg_Item_State stat, void *item, void *data);
110         int (*set_item_update_ui)(Cfg_Item_State stat, void *data);
111 } cfg_func_table;
112
113
114 /**
115  *  List item
116  */
117 typedef struct {
118         char *key_name;                                 /** key name */
119         char *icon_path;                                /** icon path */
120         char *ug_args;                                  /** UG path or hyperlink */
121         int pos;                                                /** position : 1st, 2st -- deprecated */
122         Cfg_Item_Reset_Type reset_type; /** if ug supports Reset function */
123         int click_times;                                /** UG menu need to check */
124         Cfg_Item_Type item_type;                /** 0:item      1:header title */
125
126         /* app code */
127         void *data;                                             /** Setting_GenGroupItem_Data type ptr */
128         char *sub_index;                                /** sub_index */
129         cfg_func_table *tfunc;
130         char *uuid;                                             /** primary key */
131         int last_clicked;                               /** the time of last clicked*/
132         char *shortcut_appid;                   /** appid to add shortcut */
133 } Setting_Cfg_Node_T;
134
135 Setting_Cfg_Node_T *get_cfg_node_first();
136 int get_cfg_array_size();
137
138
139
140 int setting_cfg_create(bool check_ug_exist);
141 int setting_cfg_migrate(void);
142 void setting_cfg_print(void);
143
144 char *setting_cfg_get_path();
145
146 int setting_cfg_init(void);
147
148 void setting_cfg_exit(void);
149
150 int setting_cfg_file_update(void);
151
152 int setting_cfg_get_category_length(void);
153
154 char *setting_cfg_get_category_name(int category_index);
155
156 char *setting_cfg_get_category_display_name(int category_index);
157
158 void setting_cfg_set_category_display_name(int category_index, char *newstring);
159
160 int setting_cfg_get_menu_length(int category_index);
161
162 char *setting_cfg_get_string_field_idx(int category_index, int menu_index, char *field_name);
163
164 int setting_cfg_get_int_field_idx(int category_index, int menu_index, char *field_name);
165
166 char *setting_cfg_get_icon_path_idx(int category_index, int menu_index);
167
168 char *setting_cfg_get_shortcut_appid_idx(int category_index, int menu_index);
169
170 char *setting_cfg_get_icon_path(char *keyname);
171
172 char *setting_cfg_get_ug_args_idx(int category_index, int menu_index);
173
174 char *setting_cfg_get_ug_args(char *keyname);
175
176 char *setting_cfg_get_keyname_idx(int category_index, int menu_index);
177
178 int setting_cfg_get_itemtype_idx(int category_index, int menu_index);
179
180 char *setting_cfg_get_ugpath_idx(int category_index, int menu_index);
181
182 char *setting_cfg_get_ugpath(char *keyname);
183
184 int setting_cfg_get_pos_idx(int category_index, int menu_index);
185
186 int setting_cfg_get_pos(char *keyname);
187
188 void setting_cfg_set_pos_idx(int category_index, int menu_index, int pos);
189
190 void setting_cfg_set_pos(char *keyname, int pos);
191
192 int setting_cfg_get_click_times_idx(int category_index, int menu_index);
193
194 int setting_cfg_get_click_times(char *keyname);
195
196 void setting_cfg_set_click_times_idx(int category_index, int menu_index, int click_times);
197
198 void setting_cfg_set_click_times(char *keyname, int click_times);
199
200 int setting_cfg_get_resetable_flag_idx(int category_index, int menu_index);
201
202 void setting_cfg_add_downloaded_app(char *keyname, char *icon_path, char *ug_args, int pos);
203
204 void setting_cfg_remove_downloaded_app(char *keyname);
205 int setting_cfg_get_last_clicked_idx(int category_index, int menu_index);
206 int setting_cfg_get_last_clicked(char *keyname);
207 void setting_cfg_set_last_clicked_idx(int category_index, int menu_index, int last_clicked);
208 void setting_cfg_set_last_clicked(char *keyname, int last_clicked);
209
210
211 extern char *get_ug_path_from_ug_args(void *data);
212 extern app_control_h get_bundle_from_ug_args(void *data);
213 extern bool is_ug_installed_by_ug_args(void *data);
214
215 extern int get_index_by_keystr(const char *keystr);
216
217 extern Setting_Cfg_Node_T *get_cfg_node_by_keystr(const char *keystr);
218
219 extern char *get_iconpath_by_keystr(const char *keystr);
220
221 extern void setting_cfg_dump_basic_info();
222
223 extern int set_node_pointer(char *name, void *ptr);
224 extern void *get_node_pointer(char *name);
225
226 extern int set_cfg_node_tfunc(char *name, void *ptr);
227 extern int set_cfg_node_tfunc_set_ptr(char *name, int (*set_item_state)(Cfg_Item_State stat, void *item, void *data));
228
229 #ifdef __cplusplus
230 extern "C" {
231 #endif /* __cplusplus */
232
233 /* search */
234 extern Setting_Cfg_Node_T *setting_plugin_search_item_add(char *key_name, char *url, char *icon_path, int item_type, void *data);
235 extern Setting_Cfg_Node_T *setting_plugin_search_item_subindex_add(char *key_name, char *url, char *icon_path, int item_type, void *data, char *sub_index);
236 extern Cfg_Item_Type setting_search_type(char *type);
237
238 #ifdef __cplusplus
239 }
240 #endif /* __cplusplus */
241 #endif