4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
6 * Contact: MyoungJune Park <mj2004.park@samsung.com>
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
12 * http://www.apache.org/licenses/LICENSE-2.0
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.
22 *@defgroup setting-cfg
23 *configuration file management.
24 *Setting app is based on JSON scripting for configuration management.
27 #ifndef __SETTING_CFG_H__
28 #define __SETTING_CFG_H__
31 #include <json-glib/json-glib.h>
32 #include <setting-common-resource.h>
35 #define EXPORT_PUBLIC __attribute__ ((visibility ("default")))
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,
45 typedef enum _Cfg_Item_State {
47 Cfg_Item_Off = 0, /* same order - vconf 0 (boolean) */
48 Cfg_Item_On = 1 /* same order - vconf 1 (boolean) */
53 typedef enum _Cfg_Item_Reset_Type {
54 Cfg_Item_unResetable = 0,
55 Cfg_Item_Resetable = 1,
56 } Cfg_Item_Reset_Type;
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,
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"
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
85 * 1, 4, 5, 6 - ug mode
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 */
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 */
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);
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 */
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;
135 Setting_Cfg_Node_T *get_cfg_node_first();
136 int get_cfg_array_size();
140 int setting_cfg_create(bool check_ug_exist);
141 int setting_cfg_migrate(void);
142 void setting_cfg_print(void);
144 char *setting_cfg_get_path();
146 int setting_cfg_init(void);
148 void setting_cfg_exit(void);
150 int setting_cfg_file_update(void);
152 int setting_cfg_get_category_length(void);
154 char *setting_cfg_get_category_name(int category_index);
156 char *setting_cfg_get_category_display_name(int category_index);
158 void setting_cfg_set_category_display_name(int category_index, char *newstring);
160 int setting_cfg_get_menu_length(int category_index);
162 char *setting_cfg_get_string_field_idx(int category_index, int menu_index, char *field_name);
164 int setting_cfg_get_int_field_idx(int category_index, int menu_index, char *field_name);
166 char *setting_cfg_get_icon_path_idx(int category_index, int menu_index);
168 char *setting_cfg_get_shortcut_appid_idx(int category_index, int menu_index);
170 char *setting_cfg_get_icon_path(char *keyname);
172 char *setting_cfg_get_ug_args_idx(int category_index, int menu_index);
174 char *setting_cfg_get_ug_args(char *keyname);
176 char *setting_cfg_get_keyname_idx(int category_index, int menu_index);
178 int setting_cfg_get_itemtype_idx(int category_index, int menu_index);
180 char *setting_cfg_get_ugpath_idx(int category_index, int menu_index);
182 char *setting_cfg_get_ugpath(char *keyname);
184 int setting_cfg_get_pos_idx(int category_index, int menu_index);
186 int setting_cfg_get_pos(char *keyname);
188 void setting_cfg_set_pos_idx(int category_index, int menu_index, int pos);
190 void setting_cfg_set_pos(char *keyname, int pos);
192 int setting_cfg_get_click_times_idx(int category_index, int menu_index);
194 int setting_cfg_get_click_times(char *keyname);
196 void setting_cfg_set_click_times_idx(int category_index, int menu_index, int click_times);
198 void setting_cfg_set_click_times(char *keyname, int click_times);
200 int setting_cfg_get_resetable_flag_idx(int category_index, int menu_index);
202 void setting_cfg_add_downloaded_app(char *keyname, char *icon_path, char *ug_args, int pos);
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);
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);
215 extern int get_index_by_keystr(const char *keystr);
217 extern Setting_Cfg_Node_T *get_cfg_node_by_keystr(const char *keystr);
219 extern char *get_iconpath_by_keystr(const char *keystr);
221 extern void setting_cfg_dump_basic_info();
223 extern int set_node_pointer(char *name, void *ptr);
224 extern void *get_node_pointer(char *name);
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));
231 #endif /* __cplusplus */
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);
240 #endif /* __cplusplus */