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.
21 #include <setting-common-data-slp-setting.h>
22 #include <Elementary.h>
25 #include <openssl/sha.h>
27 #include <sys/types.h>
32 #include <libxml/xmlmemory.h>
33 #include <libxml/parser.h>
50 typedef struct VconfNode VconfNode;
53 int key; /** vconf id definded in Setting app */
54 const char* vconf_key; /** vconf string defined in libslp-setting */
55 vconftype type; /** BOOL, INT, STRING */
56 vconfval value; /** variable by union */
57 void (*export)(VconfNode* pnode); /** method for exporting current state */
61 // export function for each vconf key
62 void export_default(VconfNode* node)
64 SETTING_TRACE("key : %s ",node->vconf_key);
68 /** bool vconf table */
69 static VconfNode g_btable[] = {
71 {BOOL_SLP_SETTING_POWER_ON_LOCK, VCONFKEY_SETAPPL_STATE_POWER_ON_LOCK_BOOL, eBOOL, {0}, export_default}, // node[0]
72 {BOOL_SLP_SETTING_SIMPLE_PASSWORD, VCONFKEY_SETAPPL_STATE_SIMPLE_PASSWORD_BOOL, eBOOL, {0}, export_default}, // node[0]
74 {BOOL_SLP_SETTING_AUTOMATIC_TIME_UPDATE, VCONFKEY_SETAPPL_STATE_AUTOMATIC_TIME_UPDATE_BOOL, eBOOL,{0}, export_default},
76 {BOOL_SLP_SETTING_TICKER_NOTI_MESSAGES, VCONFKEY_SETAPPL_STATE_TICKER_NOTI_MESSAGES_BOOL, eBOOL,{0}, export_default},
77 {BOOL_SLP_SETTING_TICKER_NOTI_EMAIL, VCONFKEY_SETAPPL_STATE_TICKER_NOTI_EMAIL_BOOL, eBOOL,{0}, export_default},
78 {BOOL_SLP_SETTING_TICKER_NOTI_IM, VCONFKEY_SETAPPL_STATE_TICKER_NOTI_IM_BOOL, eBOOL,{0}, export_default},
79 {BOOL_SLP_SETTING_TICKER_NOTI_FACEBOOK, VCONFKEY_SETAPPL_STATE_TICKER_NOTI_FACEBOOK_BOOL, eBOOL,{0}, export_default},
80 {BOOL_SLP_SETTING_TICKER_NOTI_TWITTER, VCONFKEY_SETAPPL_STATE_TICKER_NOTI_TWITTER_BOOL, eBOOL,{0}, export_default},
82 {BOOL_SLP_SETTING_TRANSACTION_TRACKING, VCONFKEY_SETAPPL_STATE_TRANSACTION_TRACKING_BOOL, eBOOL,{0}, export_default},
84 {BOOL_SLP_SETTING_NOTI_DISPLAY_CONTENT_MESSASGES, VCONFKEY_TICKER_NOTI_DISPLAY_CONTENT_MESSASGES, eBOOL, {0}, export_default},
85 {BOOL_SLP_SETTING_NOTI_DISPLAY_CONTENT_EMAIL, VCONFKEY_TICKER_NOTI_DISPLAY_CONTENT_EMAIL, eBOOL, {0}, export_default},
86 {BOOL_SLP_SETTING_NOTI_DISPLAY_CONTENT_IM, VCONFKEY_TICKER_NOTI_DISPLAY_CONTENT_IM, eBOOL, {0}, export_default},
87 {BOOL_SLP_SETTING_NOTI_DISPLAY_CONTENT_FACEBOOK, VCONFKEY_TICKER_NOTI_DISPLAY_CONTENT_FACEBOOK, eBOOL, {0}, export_default},
88 {BOOL_SLP_SETTING_NOTI_DISPLAY_CONTENT_TWITTER, VCONFKEY_TICKER_NOTI_DISPLAY_CONTENT_TWITTER, eBOOL, {0}, export_default},
90 {BOOL_SLP_SETTING_EXPIRY_REMINDER, VCONFKEY_SETAPPL_STATE_EXPIRY_REMINDER_BOOL, eBOOL,{0}, export_default},
92 {BOOL_SLP_SETTING_FLIGHT_MODE, VCONFKEY_SETAPPL_FLIGHT_MODE_BOOL, eBOOL,{0}, export_default},
93 {BOOL_SLP_SETTING_DATA_ROAMING, VCONFKEY_SETAPPL_STATE_DATA_ROAMING_BOOL, eBOOL,{0}, export_default},
94 {BOOL_SLP_SETTING_NFC_STATUS,VCONFKEY_NFC_STATE, eBOOL, {0}, export_default},
96 {BOOL_SLP_SETTING_USE_PACKET_DATA, VCONFKEY_3G_ENABLE, eBOOL,{0}, export_default},
97 {BOOL_SLP_SETTING_ACCESSIBILITY_ACCESSIBILITY, VCONFKEY_SETAPPL_ACCESSIBILITY_ACCESSIBILITY, eBOOL,{0}, export_default},
98 {BOOL_SLP_SETTING_ACCESSIBILITY_HIGH_CONTRAST, VCONFKEY_SETAPPL_ACCESSIBILITY_HIGH_CONTRAST, eBOOL,{0}, export_default},
99 {BOOL_SLP_SETTING_ACCESSIBILITY_SCREEN_ZOOM, VCONFKEY_SETAPPL_ACCESSIBILITY_SCREEN_ZOOM, eBOOL,{0}, export_default},
100 {BOOL_SLP_SETTING_ACCESSIBILITY_ASSISTIVE_LIGHT, VCONFKEY_SETAPPL_ACCESSIBILITY_TORCH_LIGHT, eBOOL,{0}, export_default},
101 {BOOL_SLP_SETTING_ACCESSIBILITY_MONO_AUDIO, VCONFKEY_SETAPPL_ACCESSIBILITY_MONO_AUDIO, eBOOL,{0}, export_default},
102 {BOOL_SLP_SETTING_ACCESSIBILITY_LED_NOTIFY, VCONFKEY_SETAPPL_ACCESSIBILITY_LED_NOTIFY, eBOOL,{0}, export_default},
103 {BOOL_SLP_SETTING_ACCESSIBILITY_ACCEPT_CALL, VCONFKEY_CISSAPPL_ANSWERING_KEY_BOOL, eBOOL,{0}, export_default},
104 {BOOL_SLP_SETTING_ACCESSIBILITY_POWERKEY_END_CALLS, VCONFKEY_CISSAPPL_POWER_KEY_ENDS_CALL_BOOL, eBOOL,{0}, export_default},
107 {BOOL_SLP_SETTING_DATAUSAGE_MOBILE_DATA_BOOL, VCONFKEY_SETAPPL_MOBILE_DATA_BOOL, eBOOL, {0}, export_default},
108 {BOOL_SLP_SETTING_DATAUSAGE_DISABLE_MOBILE_DATA_AT_LIMIT_BOOL, VCONFKEY_SETAPPL_DISABLE_MOBILE_DATA_AT_LIMIT_BOOL, eBOOL, {0}, export_default},
109 {BOOL_SLP_SETTING_DATAUSAGE_RESTRICT_BG_DATA_BOOL, VCONFKEY_SETAPPL_RESTRICT_BG_DATA_BOOL, eBOOL, {0}, export_default},
110 {BOOL_SLP_SETTING_DATAUSAGE_SHOW_WIFI_USAGE_BOOL, VCONFKEY_SETAPPL_SHOW_WIFI_USAGE_BOOL, eBOOL, {0}, export_default},
111 //------------------------------------------------------------------------------------------------
112 {SETTING_BOOL_SLP_LIST_MAX, NULL, eBOOL, {0}, export_default},
116 /** int vconf table */
117 static VconfNode g_itable[] = {
118 {INT_SLP_SETTING_LCD_BRIGHTNESS, VCONFKEY_SETAPPL_LCD_BRIGHTNESS, eINT, {0}, export_default},
119 {INT_SLP_SETTING_LCD_TIMEOUT_NORMAL,VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL, eINT, {0}, export_default},
120 {INT_SLP_SETTING_LCD_TIMEOUT_NORMAL_BACKUP,VCONFKEY_LCD_TIMEOUT_NORMAL_BACKUP, eINT, {0}, export_default},
122 {INT_SLP_SETTING_AUTOMATIC_BRIGHTNESS, VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_INT, eINT,{0}, export_default},
124 {INT_SLP_SETTING_SELECT_NETWORK,VCONFKEY_SETAPPL_SELECT_NETWORK_INT, eINT, {0}, export_default},
125 {INT_SLP_SETTING_NETWORK_MODE,VCONFKEY_SETAPPL_NETWORK_MODE_INT, eINT, {0}, export_default},
126 {INT_SLP_SETTING_REGIONFORMAT_TIME1224,VCONFKEY_REGIONFORMAT_TIME1224, eINT, {0}, export_default},
127 {INT_SLP_SETTING_DATE_FORMAT,VCONFKEY_SETAPPL_DATE_FORMAT_INT, eINT, {0}, export_default},
128 {INT_SLP_SETTING_WEEK_FORMAT,VCONFKEY_SETAPPL_WEEKOFDAY_FORMAT_INT, eINT, {0}, export_default},
129 /* CALL_ALERT_TYPE */
130 {INT_SLP_SETTING_CALL_ALERT_TYPE, NULL, eINT, {0}, export_default},
131 {INT_SLP_SETTING_NORMAL_CALL_ALERT_TYPE, NULL, eINT, {0}, export_default},
132 {INT_SLP_SETTING_SILENT_CALL_ALERT_TYPE, NULL, eINT, {0}, export_default},
133 {INT_SLP_SETTING_DRIVING_CALL_ALERT_TYPE, NULL, eINT, {0}, export_default},
134 {INT_SLP_SETTING_MEETING_CALL_ALERT_TYPE, NULL, eINT, {0}, export_default},
135 {INT_SLP_SETTING_OUTDOOR_CALL_ALERT_TYPE, NULL, eINT, {0}, export_default},
137 {INT_SLP_SETTING_CALL_ALERT_VIB, VCONFKEY_SETAPPL_CALL_VIBRATION_PATTERN_INT, eINT, {0}, export_default},
138 {INT_SLP_SETTING_NORMAL_CALL_ALERT_VIB, NULL, eINT, {0}, export_default},
139 {INT_SLP_SETTING_SILENT_CALL_ALERT_VIB, NULL, eINT, {0}, export_default},
140 {INT_SLP_SETTING_DRIVING_CALL_ALERT_VIB, NULL, eINT, {0}, export_default},
141 {INT_SLP_SETTING_MEETING_CALL_ALERT_VIB, NULL, eINT, {0}, export_default},
142 {INT_SLP_SETTING_OUTDOOR_CALL_ALERT_VIB, NULL, eINT, {0}, export_default},
145 {INT_SLP_SETTING_CALL_ALERT_VOLUME, NULL, eINT, {0}, export_default},
147 {INT_SLP_SETTING_MSG_ALERT_TYPE, NULL, eINT, {0}, export_default},
148 {INT_SLP_SETTING_NORMAL_MSG_ALERT_TYPE, NULL, eINT, {0}, export_default},
149 {INT_SLP_SETTING_SILENT_MSG_ALERT_TYPE, NULL, eINT, {0}, export_default},
150 {INT_SLP_SETTING_DRIVING_MSG_ALERT_TYPE, NULL, eINT, {0}, export_default},
151 {INT_SLP_SETTING_MEETING_MSG_ALERT_TYPE, NULL, eINT, {0}, export_default},
152 {INT_SLP_SETTING_OUTDOOR_MSG_ALERT_TYPE, NULL, eINT, {0}, export_default},
154 {INT_SLP_SETTING_MSG_ALERT_VIB, NULL, eINT, {0}, export_default},
155 {INT_SLP_SETTING_NORMAL_MSG_ALERT_VIB, NULL, eINT, {0}, export_default},
156 {INT_SLP_SETTING_SILENT_MSG_ALERT_VIB, NULL, eINT, {0}, export_default},
157 {INT_SLP_SETTING_DRIVING_MSG_ALERT_VIB, NULL, eINT, {0}, export_default},
158 {INT_SLP_SETTING_MEETING_MSG_ALERT_VIB, NULL, eINT, {0}, export_default},
159 {INT_SLP_SETTING_OUTDOOR_MSG_ALERT_VIB, NULL, eINT, {0}, export_default},
162 {INT_SLP_SETTING_MSG_ALERT_REPEAT,VCONFKEY_SETAPPL_NOTI_MSG_ALERT_REP_TYPE_INT, eINT, {0}, export_default},
163 {INT_SLP_SETTING_EMAIL_ALERT_REPEAT,VCONFKEY_SETAPPL_NOTI_EMAIL_ALERT_REP_TYPE_INT, eINT, {0}, export_default},
166 {INT_SLP_SETTING_MSG_ALERT_VOLUME, NULL, eINT, {0}, export_default},
167 {INT_SLP_SETTING_SYS_TOUCH_SOUND, NULL, eINT, {0}, export_default},
168 {INT_SLP_SETTING_SYS_TOUCH_SOUND_VOLUME, NULL, eINT, {0}, export_default},
169 {INT_SLP_SETTING_FONT_SIZE,VCONFKEY_SETAPPL_FONT_SIZE_INT, eINT, {0}, export_default},
170 {INT_SLP_SETTING_FONT_TYPE,VCONFKEY_SETAPPL_FONT_TYPE_INT, eINT, {0}, export_default},
171 {INT_SLP_SETTING_LANG,VCONFKEY_SETAPPL_LANG_INT, eINT, {0}, export_default},
172 {INT_SLP_SETTING_BT_STATUS,VCONFKEY_BT_STATUS, eINT, {0}, export_default},
173 {INT_SLP_SETTING_WIFI_STATUS,VCONFKEY_WIFI_STATE, eINT, {0}, export_default},
174 {INT_SLP_SETTING_MOBILE_AP_STATUS,VCONFKEY_MOBILE_HOTSPOT_MODE, eINT, {0}, export_default},
175 {INT_SLP_SETTING_ROAMING_NETWORK,VCONFKEY_SETAPPL_ROAMING_NETWORK_INT, eINT, {0}, export_default},
176 {INT_SLP_SETTING_USB_MODE,VCONFKEY_SETAPPL_USB_MODE_INT, eINT, {0}, export_default},
177 #ifdef UNUSED_VCONFKEY
178 {INT_SLP_SETTING_TASKSWITCHER_VIEWTYPE,VCONFKEY_TASKSWITCHER_VIEWTYPE, eINT, {0}, export_default},
181 {INT_SLP_SETTING_DEFAULT_MEM_WAP,VCONFKEY_SETAPPL_DEFAULT_MEM_WAP_INT, eINT, {0}, export_default},
182 {INT_SLP_SETTING_DEFAULT_MEM_BLUETOOTH,VCONFKEY_SETAPPL_DEFAULT_MEM_BLUETOOTH_INT, eINT, {0}, export_default},
183 {INT_SLP_SETTING_DEFAULT_MEM_CAMERA,VCONFKEY_SETAPPL_DEFAULT_MEM_CAMERA_INT, eINT, {0}, export_default},
184 {INT_SLP_SETTING_DEFAULT_MEM_VOICE_RECORDER,VCONFKEY_SETAPPL_DEFAULT_MEM_VOICE_RECORDER_INT, eINT, {0}, export_default},
185 {INT_SLP_SETTING_DEFAULT_MEM_FM_RADIO,VCONFKEY_SETAPPL_DEFAULT_MEM_FM_RADIO_INT, eINT, {0}, export_default},
186 {INT_SLP_SETTING_DEFAULT_MEM_ALL_SHARE,VCONFKEY_SETAPPL_DEFAULT_MEM_ALL_SHARE_INT, eINT, {0}, export_default},
187 {INT_SLP_SETTING_DEFAULT_MEM_ADOBE_AIR,VCONFKEY_SETAPPL_DEFAULT_MEM_ADOBE_AIR_INT, eINT, {0}, export_default},
188 {INT_SLP_SETTING_DEFAULT_MEM_DVB_H,VCONFKEY_SETAPPL_DEFAULT_MEM_DVB_H_INT, eINT, {0}, export_default},
191 {INT_SLP_SETTING_SIM_SLOT,VCONFKEY_TELEPHONY_SIM_SLOT, eINT, {0}, export_default},
192 {INT_SLP_SETTING_PHONE_LOCK_ATTEMPTS_LEFT,VCONFKEY_SETAPPL_PHONE_LOCK_ATTEMPTS_LEFT_INT, eINT, {0}, export_default},
193 {INT_SLP_SETTING_SIM_LOCK_ATTEMPTS_LEFT,VCONFKEY_SETAPPL_SIM_LOCK_ATTEMPTS_LEFT_INT, eINT, {0}, export_default},
195 // accessibility setting
196 {INT_SLP_SETTING_ACCESSIBILITY_ENABLE_AUTO_ANSWER, VCONFKEY_CISSAPPL_ANSWERING_MODE_INT, eINT,{0}, export_default},
197 {INT_SLP_SETTING_ACCESSIBILITY_FONT_SIZE, VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE, eINT, {0}, export_default},
198 #if SUPPORT_FONT_STYLE
199 {INT_SLP_SETTING_ACCESSIBILITY_FONT_STYLE,VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_STYLE, eINT, {0}, export_default},
201 {INT_SLP_SETTING_ACCESSIBILITY_AUTO_ANSWER, VCONFKEY_CISSAPPL_ANSWERING_MODE_TIME_INT, eINT, {0}, export_default},
202 {INT_SLP_SETTING_ACCESSIBILITY_POWER_KEY_HOLD, VCONFKEY_SETAPPL_ACCESSIBILITY_POWER_KEY_HOLD, eINT, {0}, export_default},
205 {INT_SLP_SETTING_POWERSAVING_AT, VCONFKEY_SETAPPL_PWRSV_CUSTMODE_AT, eINT, {0}, export_default},
206 {INT_SLP_SETTING_POWERSAVING_SCREEN_TIMEOUT, VCONFKEY_SETAPPL_PWRSV_CUSTMODE_BLTIME, eINT, {0}, export_default},
207 {INT_SLP_SETTING_DEVOPTION_BGPROCESS, VCONFKEY_SETAPPL_DEVOPTION_BGPROCESS, eINT, {0}, export_default},
209 {INT_SLP_SETTING_DATAUSAGE_DATA_EACH_MONTH_INT, VCONFKEY_SETAPPL_DATA_EACH_MONTH_INT, eINT, {0}, export_default},
210 {SETTING_INT_SLP_LIST_MAX, NULL, eINT, {0}, export_default},
214 /** string vconf table */
215 static VconfNode g_stable[] = {
216 /* password code - special processing */
217 { STR_SLP_LIST_PHONE_PASSWORD, NULL, eSTRING,{0}, export_default },
218 { STR_SLP_SETTING_PHONE_LOCK_TIMESTAMP,VCONFKEY_SETAPPL_PHONE_LOCK_TIMESTAMP_STR, eSTRING,{0}, export_default },
219 { STR_SLP_SETTING_SIM_LOCK_TIMESTAMP,VCONFKEY_SETAPPL_SIM_LOCK_TIMESTAMP_STR, eSTRING,{0}, export_default },
220 { STR_SLP_LIST_MAX, NULL, eSTRING, {0}, export_default},
223 void setting_export()
227 for (i=0;i<SETTING_BOOL_SLP_LIST_MAX;i++) {
228 SETTING_TRACE("exporting bool keys : %s ", g_btable[i].vconf_key );
229 // run export function --> store data into XML
230 g_btable[i].export(&g_btable[i]);
233 for (i=0;i<SETTING_INT_SLP_LIST_MAX;i++) {
234 SETTING_TRACE("exporting int keys : %s ", g_itable[i].vconf_key );
235 // run export function --> store data into XML
236 g_itable[i].export(&g_itable[i]);
239 for (i=0;i<STR_SLP_LIST_MAX;i++) {
240 SETTING_TRACE("exporting string keys : %s ", g_stable[i].vconf_key );
241 // run export function --> store data into XML
242 g_stable[i].export(&g_stable[i]);
246 int set_vconf(VconfNode node,VconfNode *result)
256 SETTING_TRACE("begin case eINT[%s=\"%d\"]", node.vconf_key, node.value.b);
257 ret = vconf_set_bool(node.vconf_key, node.value.b);
258 result->type = eBOOL;
259 result->value.b = node.value.b;
262 SETTING_TRACE("begin case eINT[%s=\"%d\"]", node.vconf_key, node.value.i);
263 ret = vconf_set_int(node.vconf_key, node.value.i);
265 result->value.i = node.value.i;
268 if (node.key == STR_SLP_LIST_PHONE_PASSWORD) {
269 ret = setting_store_init_password(node.value.c);
271 SETTING_TRACE("begin case eINT[%s=\"%s\"]", node.vconf_key, node.value.c);
272 ret = vconf_set_str(node.vconf_key, node.value.c);
274 result->type = eSTRING;
275 result->value.c = node.value.c;
278 SETTING_TRACE_ERROR(">>>>>>>>>> node.type is NOT DEFINED");
284 SETTING_TRACE_ERROR(">>>>>>>>>> Failed to set vconf");
286 //SETTING_TRACE("KEY:%d VCONF_KEY=%s TYPE=%d VALUE=%d ", result->key, result->vconf_key, result->type, result->value.i);
291 int get_vconf(VconfNode node, VconfNode* result)
295 char md_result[SHA256_DIGEST_LENGTH];
296 memset(md_result, 0x0, SHA256_DIGEST_LENGTH);
304 ret = vconf_get_bool(node.vconf_key, (int *)(&(node.value.b)));
305 result->type = eBOOL;
306 result->value.b = node.value.b;
309 ret = vconf_get_int(node.vconf_key, &(node.value.i));
311 result->value.i = node.value.i;
314 if (node.key == STR_SLP_LIST_PHONE_PASSWORD)
316 node.value.c = (char*)malloc(sizeof(char) * SHA256_DIGEST_LENGTH);
318 memset(node.value.c, 0x0, SHA256_DIGEST_LENGTH);
320 SETTING_TRACE_ERROR(" malloc filed : eSTRING, node.value.c ");
321 ret = SETTING_RETURN_FAIL;
325 if (setting_read_password(md_result) == 0) {
326 memcpy(node.value.c, md_result, SHA256_DIGEST_LENGTH); /* un-safe */
328 result->type = eSTRING;
329 result->value.c = node.value.c;
330 ret = SETTING_RETURN_SUCCESS;
333 ret = SETTING_RETURN_FAIL;
337 node.value.c = vconf_get_str(node.vconf_key);
338 SETTING_TRACE("string type ---> %s ", node.value.c);
339 result->type = eSTRING;
340 result->value.c = node.value.c;
341 ret = SETTING_RETURN_SUCCESS;
345 SETTING_TRACE_ERROR(">>>>>>>>>>>>>>>>>>>>>>> get vconf ERROR : %s ", node.vconf_key );
351 int setting_set_bool_slp_key(setting_bool_slp_list key, int value, int *err)
354 int ret = SETTING_RETURN_FAIL;
357 if (key < 0 || key >= SETTING_BOOL_SLP_LIST_MAX) {
358 *err = SETTING_GENERAL_ERR_WRONG_PARAMETER;
363 g_btable[key].value.b = value;
364 ret = set_vconf(g_btable[key],&result);
366 SETTING_TRACE("setting_set_bool ::: KEY:%d VCONF_KEY=%s TYPE=%d VALUE=%d ", result.key, result.vconf_key, result.type, result.value.b);
371 int setting_get_bool_slp_key(setting_bool_slp_list key, int *value, int *err)
374 int ret = SETTING_RETURN_FAIL;
377 if (key < 0 || key >= SETTING_BOOL_SLP_LIST_MAX) {
378 *err = SETTING_GENERAL_ERR_WRONG_PARAMETER;
379 SETTING_TRACE_ERROR(" <<<<<<<< key is invalid >>>>>>>>>>>>> ");
383 ret = get_vconf(g_btable[key], &result);
384 //*value = g_btable[key].value.b;
385 *value = result.value.b;
390 int setting_set_int_slp_key(setting_int_slp_list key, int value, int *err)
393 int ret = SETTING_RETURN_FAIL;
396 if (key < 0 || key >= SETTING_INT_SLP_LIST_MAX) {
397 *err = SETTING_GENERAL_ERR_WRONG_PARAMETER;
398 SETTING_TRACE(">>> key is invalid ");
403 g_itable[key].value.i = value;
404 ret = set_vconf(g_itable[key],&result);
406 SETTING_TRACE("setting_set_int ::: KEY:%d VCONF_KEY=%s TYPE=%d VALUE=%d ", result.key, result.vconf_key, result.type, result.value.i);
411 /* return -1: fail cannot use err to check the result, return value instead*/
412 int setting_get_int_slp_key(setting_int_slp_list key, int *value, int *err)
415 int ret = SETTING_RETURN_FAIL;
418 if (key < 0 || key >= SETTING_INT_SLP_LIST_MAX) {
419 *err = SETTING_GENERAL_ERR_WRONG_PARAMETER;
424 ret = get_vconf(g_itable[key], &result);
425 //*value = g_itable[key].value.i;
426 *value = result.value.i;
433 int setting_get_string_slp_key(setting_str_slp_list key, char *value, int *err)
436 int ret = SETTING_RETURN_FAIL;
439 if (key < 0 || key >= STR_SLP_LIST_MAX || NULL == value) {
440 *err = SETTING_GENERAL_ERR_WRONG_PARAMETER;
444 /** @todo check memory leack when passwork checking */
446 ret = get_vconf(g_stable[key], &result);
450 safeCopyStr(value, result.value.c, strlen(result.value.c));
451 SETTING_TRACE(">>>>>>>> %s <<<<<<<<", value);
452 FREE(result.value.c);
454 SETTING_TRACE("get_vconf is failed");
461 int setting_set_string_slp_key(setting_str_slp_list key, char *value, int *err)
463 int ret = SETTING_RETURN_FAIL;
466 if (key < 0 || key >= STR_SLP_LIST_MAX) {
467 *err = SETTING_GENERAL_ERR_WRONG_PARAMETER;
472 g_stable[key].value.c = value;
473 ret = set_vconf(g_stable[key], &result);
474 g_stable[key].value.c = "";
476 SETTING_TRACE("setting_set_str ::: KEY:%d VCONF_KEY=%s TYPE=%d VALUE=%d ", result.key, result.vconf_key, result.type, result.value.c);
481 /** @todo don't use i18n string directly. */
482 static const setting_lang_entry lang_table[] = {
483 { "auto", "Automatic"},
484 { "ko_KR.UTF-8", "한국어"},
485 { "en_US.UTF-8", "English"},
486 { "zh_CN.UTF-8", "简体中文"},
487 { "zh_HK.UTF-8", "繁體中文(香港)"},
488 { "zh_TW.UTF-8", "繁體中文(台灣)"},
489 { "de_DE.UTF-8", "Deutsch"},
490 { "nl_NL.UTF-8", "Nederlands"},
491 { "es_ES.UTF-8", "Español"},
492 { "pt_PT.UTF-8", "Português"},
493 { "el_GR.UTF-8", "Eλληνικά"},
494 { "it_IT.UTF-8", "Italiano"},
495 { "fr_FR.UTF-8", "Français"},
496 { "tr_TR.UTF-8", "Türkçe"},
497 { "ja_JP.UTF-8", "にほんご"},
498 { "ru_RU.UTF-8", "Россию"},
501 setting_lang_entry* setting_get_language_table()
503 return (setting_lang_entry*)lang_table;
507 #define LANGLIST_FILE_DIR_PATH "/opt/data/setting/"
508 #define LANGLIST_FILE_PATH LANGLIST_FILE_DIR_PATH"langlist.xml"
510 static void _parseLangListXML(char* docname); // internal
511 static void __tree_walk_langlist(xmlNodePtr cur); // internal
513 static Eina_List* s_langlist; // internal
522 _parseLangListXML(LANGLIST_FILE_PATH);
529 Eina_List* setting_get_language_list()
531 if (NULL == s_langlist)
539 int _langlist_destroy()
542 Eina_List *li = s_langlist;
543 setting_lang_entry* node;
545 node = (setting_lang_entry*) eina_list_data_get(li);
548 SETTING_TRACE("destroy nodes : locale : %s title : %s", node->locale, node->title);
549 G_FREE(node->locale);
553 li = eina_list_next(li);
555 s_langlist = eina_list_free(s_langlist); // returns NULL
560 void setting_get_language_list_destroy()
565 static void _parseLangListXML(char* docname)
571 doc = xmlParseFile(docname);
574 fprintf(stderr,"Document not parsed successfully. \n");
578 cur = xmlDocGetRootElement(doc);
580 fprintf(stderr,"empty document\n");
585 printf("ROOT NODE : %s \n", cur->name);
586 // make sure root node is "settings"
587 if (xmlStrcmp(cur->name, (const xmlChar *) "langlist")) {
588 SETTING_TRACE("document of the wrong type, root node != settings");
593 cur = cur->xmlChildrenNode;
594 __tree_walk_langlist(cur);
596 /* save tree to file */
598 //xmlSaveFormatFile (docname, doc, 1);
605 static void __tree_walk_langlist(xmlNodePtr cur)
608 xmlNode *cur_node = NULL;
613 for (cur_node = cur; cur_node;cur_node = cur_node->next) {
614 if (cur_node->type == XML_ELEMENT_NODE) {
616 SETTING_TRACE(" name=%s title=%s number=%s \n", xmlGetProp(cur_node, (const xmlChar *)"id"), xmlGetProp(cur_node, (const xmlChar *)"string"), xmlGetProp(cur_node, (const xmlChar *)"no"));
617 id = (char *)g_strdup((char*)xmlGetProp(cur_node, (const xmlChar *)"id"));
618 string = (char *)g_strdup((char*) xmlGetProp(cur_node, (const xmlChar *)"string"));
619 number = atoi((char*) xmlGetProp(cur_node, (const xmlChar *)"no"));
620 SETTING_TRACE(">>>> locale: %s title: %s", (char*)id, (char*)string);
622 setting_lang_entry* pitem = (setting_lang_entry*)calloc(1, sizeof(setting_lang_entry));
624 pitem->title = string;
625 pitem->number = number;
627 s_langlist = eina_list_append(s_langlist, pitem);
631 //-----------------------------------------------------------------------------------------------
632 //-----------------------------------------------------------------------------------------------
634 //setting_lang_entry*
636 //////////////////////////////////////////////////////////////////////////////////////////
637 int setting_store_init_password(char *in)
641 char md[SHA256_DIGEST_LENGTH] = {0,};
643 int ret = SETTING_RETURN_FAIL;
645 SHA256_Init(&context);
646 SHA256_Update(&context, (char *)in, strlen(in));
647 SHA256_Final((unsigned char *)md, &context);
650 SETTING_TRACE("input: [%s]\n", in);
651 SETTING_TRACE("output: [");
652 for (i = 0; i < SHA256_DIGEST_LENGTH; i++)
653 SETTING_TRACE("%02x", md[i]);
654 SETTING_TRACE("]\n");
657 /* create a file or store a data */
661 fp = fopen(PWD_FILE, "w+");
663 ret_fw = fwrite(md, 1, SHA256_DIGEST_LENGTH, fp);
664 SETTING_TRACE_DEBUG("fwrite() wrote %d chars.", ret_fw);
665 if(ret_fw == SHA256_DIGEST_LENGTH)
669 ret = SETTING_RETURN_SUCCESS;
673 SETTING_TRACE("ERR: pwd file is not exist \n");
679 int setting_read_password(char *md_result)
684 fp = fopen(PWD_FILE, "r");
686 int size = fread(md_result, sizeof(char), SHA256_DIGEST_LENGTH, fp);
687 if (size != SHA256_DIGEST_LENGTH) {
688 SETTING_TRACE_ERROR("fread failed");
692 SETTING_TRACE("ERR: pwd file is not exist \n");
693 return SETTING_RETURN_FAIL;
697 SETTING_TRACE("output from file: [");
698 for (i = 0; i < SHA256_DIGEST_LENGTH; i++)
699 SETTING_TRACE("%02x", md_result[i]);
700 SETTING_TRACE("]\n");
706 int setting_compare_password(char *md_result, const char *in_later)
709 SHA256_CTX context_later;
710 char md_later[SHA256_DIGEST_LENGTH];
711 int ret = SETTING_RETURN_FAIL;
713 SHA256_Init(&context_later);
714 SHA256_Update(&context_later, (char *)in_later, strlen(in_later));
715 SHA256_Final((unsigned char *)md_later, &context_later);
717 SETTING_TRACE(" :[ %25s ]", in_later);
719 if (0 == memcmp(md_later, md_result, SHA256_DIGEST_LENGTH)) {
720 SETTING_TRACE("two passwords are same \n");
723 SETTING_TRACE("two passwords are different \n");
728 void setting_destory_listen_list(Eina_List **listened_list)
730 if (listened_list && *listened_list)
732 Vconf_Change_Node *node = NULL;
733 Eina_List *li = *listened_list;
735 node = (Vconf_Change_Node *) eina_list_data_get(li);
738 SETTING_TRACE("Deregister callback[%p] of %s", node->cb, node->in_key);
739 if (node->in_key && node->cb) {
740 (void)vconf_ignore_key_changed(node->in_key, node->cb);
744 li = eina_list_next(li);
746 *listened_list = eina_list_free(*listened_list);
750 bool setting_add_listen_node(Eina_List **listened_list,const char *vconf, vconf_callback_fn cb, void *data)
752 Vconf_Change_Node *node = calloc(1, sizeof(Vconf_Change_Node));
754 if (node && vconf && cb)
756 node->in_key = vconf;
758 node->cb_data = data;
760 if(0 == vconf_notify_key_changed(vconf, cb, data))
762 SETTING_TRACE("Register callback[%p] of %s", node->cb, node->in_key);
763 *listened_list = eina_list_append(*listened_list, node);
767 SETTING_TRACE_ERROR("Failed to register callback[%p] of %s", node->cb, node->in_key);