apply FSL license
[apps/home/settings.git] / setting-common / src / setting-common-data-slp-setting.c
1 /*
2   * Copyright 2012  Samsung Electronics Co., Ltd
3   *
4   * Licensed under the Flora License, Version 1.0 (the "License");
5   * you may not use this file except in compliance with the License.
6   * You may obtain a copy of the License at
7   *
8   *     http://www.tizenopensource.org/license
9   *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16
17 #include <setting-common-data-slp-setting.h>
18 #include <Elementary.h>
19 #include <setting-common-data-error.h>
20 #include <setting-debug.h>
21 #include <stdio.h>
22 #include <string.h>
23 #include <openssl/sha.h>
24
25 typedef enum
26 {
27         eBOOL,
28         eINT,
29         eSTRING,
30 }vconftype;
31
32 typedef union {
33         int i;
34         int b;
35         char* c;
36 } vconfval;
37
38 typedef struct vconf_node
39 {
40         int key;                                /** vconf id definded in Setting app */
41         const char* vconf_key;  /** vconf string defined in libslp-setting */
42         vconftype type;                 /** BOOL, INT, STRING */
43         vconfval value;                 /** variable by union */
44
45 }VconfNode;
46
47 /** bool vconf table */
48 static VconfNode g_btable[] = {
49
50                 {BOOL_SLP_SETTING_POWER_ON_LOCK, VCONFKEY_SETAPPL_STATE_POWER_ON_LOCK_BOOL, eBOOL, {0}}, // node[0]
51                 {BOOL_SLP_SETTING_SIMPLE_PASSWORD, VCONFKEY_SETAPPL_STATE_SIMPLE_PASSWORD_BOOL, eBOOL, {0}}, // node[0]
52                 {BOOL_SLP_SETTING_PRIVACY_LOCK, VCONFKEY_SETAPPL_STATE_PRIVACY_LOCK_BOOL, eBOOL, {0}}, // node[0]
53                 {BOOL_SLP_SETTING_MOBILE_TRACKER,VCONFKEY_SETAPPL_FIND_MY_MOBILE_SIM_CHANGE_ALERT_BOOL, eBOOL, {0}},
54                 {BOOL_SLP_SETTING_SIM_LOCK, VCONFKEY_SETAPPL_STATE_SIM_LOCK_BOOL, eBOOL, {0}},
55                 {BOOL_SLP_SETTING_PIN_LOCK, VCONFKEY_SETAPPL_STATE_PIN_LOCK_BOOL, eBOOL, {0}},
56                 {BOOL_SLP_SETTING_FIXED_DIALING_MODE, NULL, eBOOL,{0}},
57                 {BOOL_SLP_SETTING_PRIVACY_LOCK_SELECT_ALL, VCONFKEY_SETAPPL_STATE_PRIVACY_LOCK_SELECT_ALL_BOOL, eBOOL,{0}},
58                 {BOOL_SLP_SETTING_PRIVACY_LOCK_MESSAGE, VCONFKEY_SETAPPL_STATE_PRIVACY_LOCK_MESSAGE_BOOL, eBOOL,{0}},
59
60                 {BOOL_SLP_SETTING_PRIVACY_LOCK_MY_FILES, VCONFKEY_SETAPPL_STATE_PRIVACY_LOCK_MY_FILES_BOOL, eBOOL,{0}},
61                 {BOOL_SLP_SETTING_PRIVACY_LOCK_CALLLOG, VCONFKEY_SETAPPL_STATE_PRIVACY_LOCK_CALL_LOG_BOOL, eBOOL,{0}},
62                 {BOOL_SLP_SETTING_PRIVACY_LOCK_CONTACT, VCONFKEY_SETAPPL_STATE_PRIVACY_LOCK_CONTACT_BOOL, eBOOL,{0}},
63                 {BOOL_SLP_SETTING_PRIVACY_LOCK_CALENDAR, VCONFKEY_SETAPPL_STATE_PRIVACY_LOCK_CALENDAR_BOOL, eBOOL,{0}},
64                 {BOOL_SLP_SETTING_PRIVACY_LOCK_MEMO, VCONFKEY_SETAPPL_STATE_PRIVACY_LOCK_MEMO_BOOL, eBOOL,{0}},
65                 {BOOL_SLP_SETTING_PRIVACY_LOCK_EMAIL, VCONFKEY_SETAPPL_STATE_PRIVACY_LOCK_EMAIL_BOOL, eBOOL,{0}},
66                 {BOOL_SLP_SETTING_AUTOMATIC_TIME_UPDATE, VCONFKEY_SETAPPL_STATE_AUTOMATIC_TIME_UPDATE_BOOL, eBOOL,{0}},
67                 {BOOL_SLP_SETTING_DST, VCONFKEY_SETAPPL_STATE_DST_BOOL, eBOOL,{0}},
68                 {BOOL_SLP_SETTING_TICKER_NOTI_DISPLAY_CONTENT, VCONFKEY_SETAPPL_STATE_TICKER_NOTI_DISPLAY_CONTENT_BOOL, eBOOL,{0}},
69                 {BOOL_SLP_SETTING_TICKER_NOTI_RECV_SMS, VCONFKEY_SETAPPL_STATE_TICKER_NOTI_RECV_SMS_BOOL, eBOOL,{0}},
70
71                 {BOOL_SLP_SETTING_TICKER_NOTI_RECV_MMS_NOTI, VCONFKEY_SETAPPL_STATE_TICKER_NOTI_RECV_MMS_NOTI_BOOL, eBOOL,{0}},
72                 {BOOL_SLP_SETTING_TICKER_NOTI_RECV_MMS, VCONFKEY_SETAPPL_STATE_TICKER_NOTI_RECV_MMS_BOOL, eBOOL,{0}},
73                 {BOOL_SLP_SETTING_TICKER_NOTI_RECV_VOICEMAIL, VCONFKEY_SETAPPL_STATE_TICKER_NOTI_RECV_VOICEMAIL_BOOL, eBOOL,{0}},
74                 {BOOL_SLP_SETTING_TICKER_NOTI_RECV_EMAIL, VCONFKEY_SETAPPL_STATE_TICKER_NOTI_RECV_EMAIL_BOOL, eBOOL,{0}},
75                 {BOOL_SLP_SETTING_TICKER_NOTI_MSG_DELIVERY_REPORT, VCONFKEY_SETAPPL_STATE_TICKER_NOTI_MSG_DELIVERY_REPORT_BOOL, eBOOL,{0}},
76                 {BOOL_SLP_SETTING_TICKER_NOTI_MSG_READ_REPORT, VCONFKEY_SETAPPL_STATE_TICKER_NOTI_MSG_READ_REPORT_BOOL, eBOOL,{0}},
77                 {BOOL_SLP_SETTING_TICKER_NOTI_APP_DOWNLOADED, VCONFKEY_SETAPPL_STATE_TICKER_NOTI_APP_DOWNLOADED_BOOL, eBOOL,{0}},
78                 {BOOL_SLP_SETTING_TICKER_NOTI_FILE_DOWNLOADED, VCONFKEY_SETAPPL_STATE_TICKER_NOTI_FILE_DOWNLOADED_BOOL, eBOOL,{0}},
79                 {BOOL_SLP_SETTING_TICKER_NOTI_IM, VCONFKEY_SETAPPL_STATE_TICKER_NOTI_IM_BOOL, eBOOL,{0}},
80                 {BOOL_SLP_SETTING_TICKER_NOTI_FACE_BOOK, VCONFKEY_SETAPPL_STATE_TICKER_NOTI_FACE_BOOK_BOOL, eBOOL,{0}},
81
82                 {BOOL_SLP_SETTING_TICKER_NOTI_MY_SPACE, VCONFKEY_SETAPPL_STATE_TICKER_NOTI_MY_SPACE_BOOL, eBOOL,{0}},
83                 {BOOL_SLP_SETTING_TICKER_NOTI_TWITTER, VCONFKEY_SETAPPL_STATE_TICKER_NOTI_TWITTER_BOOL, eBOOL,{0}},
84                 {BOOL_SLP_SETTING_TICKER_NOTI_MESSAGES, VCONFKEY_SETAPPL_STATE_TICKER_NOTI_MESSAGES_BOOL, eBOOL,{0}},
85                 {BOOL_SLP_SETTING_TICKER_NOTI_VMAIL, VCONFKEY_SETAPPL_STATE_TICKER_NOTI_VMAIL_BOOL, eBOOL,{0}},
86                 {BOOL_SLP_SETTING_TICKER_NOTI_EMAIL, VCONFKEY_SETAPPL_STATE_TICKER_NOTI_EMAIL_BOOL, eBOOL,{0}},
87                 {BOOL_SLP_SETTING_TICKER_NOTI_SEVENEMAIL, VCONFKEY_SETAPPL_STATE_TICKER_NOTI_RECV_SEVEN_EMAIL_BOOL, eBOOL,{0}},
88                 {BOOL_SLP_SETTING_TICKER_NOTI_SNS, VCONFKEY_SETAPPL_STATE_TICKER_NOTI_SNS_BOOL, eBOOL,{0}},
89                 {BOOL_SLP_SETTING_TICKER_NOTI_FILE_TRAN, VCONFKEY_SETAPPL_STATE_TICKER_NOTI_FILE_TRAN_BOOL, eBOOL,{0}},
90                 {BOOL_SLP_SETTING_TICKER_NOTI_OSP, VCONFKEY_SETAPPL_STATE_TICKER_NOTI_OSP_BOOL, eBOOL,{0}},
91                 {BOOL_SLP_SETTING_TRANSACTION_TRACKING, VCONFKEY_SETAPPL_STATE_TRANSACTION_TRACKING_BOOL, eBOOL,{0}},
92
93                 {BOOL_SLP_SETTING_EXPIRY_REMINDER, VCONFKEY_SETAPPL_STATE_EXPIRY_REMINDER_BOOL, eBOOL,{0}},
94                 {BOOL_SLP_SETTING_TVOUT_AUTOFULL_SCREEN, VCONFKEY_SETAPPL_TVOUT_AUTOFULL_SCREEN_BOOL, eBOOL,{0}},
95                 {BOOL_SLP_SETTING_ADAPTIVE_MENU_ORDER, VCONFKEY_SETAPPL_STATE_ADAPTIVE_MENU_ORDER_BOOL, eBOOL,{0}},
96                 {BOOL_SLP_SETTING_DATA_ROAMING, VCONFKEY_SETAPPL_STATE_DATA_ROAMING_BOOL, eBOOL,{0}},
97                 {BOOL_SLP_SETTING_TOUCH_PANEL_AUTOLOCK, VCONFKEY_SETAPPL_STATE_TOUCH_PANEL_AUTOLOCK_BOOL, eBOOL,{0}},
98                 {BOOL_SLP_SETTING_USE_NETWORK_BY_WIDGETS, VCONFKEY_SETAPPL_STATE_USE_NETWORK_BY_WIDGETS_BOOL, eBOOL,{0}},
99                 {BOOL_SLP_SETTING_AUTOMATIC_BRIGHTNESS, VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_BOOL, eBOOL,{0}}, /* set by manul or not. 0:manul, 1:not */
100                 {BOOL_SLP_SETTING_ASK_ON_CONNECTION, NULL, eBOOL,{0}},  /* nothing */
101                 {BOOL_SLP_SETTING_USB_DEBUG_MODE, VCONFKEY_SETAPPL_USB_DEBUG_MODE, eBOOL,{0}},
102
103                 {BOOL_SLP_SETTING_USE_PACKET_DATA, VCONFKEY_3G_ENABLE, eBOOL,{0}},
104                 {BOOL_SLP_SETTING_LAUNCH_IMAGE,VCONFKEY_LAUNCH_EFFECT, eBOOL,{0}},
105                 {BOOL_SLP_SETTING_ACCESSIBILITY_ACCESSIBILITY, VCONFKEY_SETAPPL_ACCESSIBILITY_ACCESSIBILITY, eBOOL,{0}},
106                 {BOOL_SLP_SETTING_ACCESSIBILITY_HIGH_CONTRAST, VCONFKEY_SETAPPL_ACCESSIBILITY_HIGH_CONTRAST, eBOOL,{0}},
107                 {BOOL_SLP_SETTING_ACCESSIBILITY_SCREEN_ZOOM, VCONFKEY_SETAPPL_ACCESSIBILITY_SCREEN_ZOOM, eBOOL,{0}},
108                 {BOOL_SLP_SETTING_ACCESSIBILITY_ASSISTIVE_LIGHT, VCONFKEY_SETAPPL_ACCESSIBILITY_TORCH_LIGHT, eBOOL,{0}},
109                 {BOOL_SLP_SETTING_ACCESSIBILITY_MONO_AUDIO, VCONFKEY_SETAPPL_ACCESSIBILITY_MONO_AUDIO, eBOOL,{0}},
110                 {BOOL_SLP_SETTING_ACCESSIBILITY_ACCEPT_CALL, VCONFKEY_CISSAPPL_ANSWERING_KEY_BOOL, eBOOL,{0}},
111                 {BOOL_SLP_SETTING_ACCESSIBILITY_POWERKEY_END_CALLS, VCONFKEY_CISSAPPL_POWER_KEY_ENDS_CALL_BOOL, eBOOL,{0}},
112         };
113
114 /** int vconf table */
115 static VconfNode g_itable[] = {
116                 {INT_SLP_SETTING_LCD_BRIGHTNESS, VCONFKEY_SETAPPL_LCD_BRIGHTNESS, eINT, {0}},
117                 {INT_SLP_SETTING_LCD_TIMEOUT_NORMAL,VCONFKEY_SYSMAN_LCD_TIMEOUT_NORMAL, eINT, {0}},
118                 {INT_SLP_SETTING_LCD_TIMEOUT_NORMAL_BACKUP,VCONFKEY_LCD_TIMEOUT_NORMA_BACKUP, eINT, {0}},
119                 {INT_SLP_SETTING_SELECT_NETWORK,VCONFKEY_SETAPPL_SELECT_NETWORK_INT, eINT, {0}},
120
121                 {INT_SLP_SETTING_NETWORK_MODE,VCONFKEY_SETAPPL_NETWORK_MODE_INT, eINT, {0}},
122                 {INT_SLP_SETTING_REGIONFORMAT_TIME1224,VCONFKEY_REGIONFORMAT_TIME1224, eINT, {0}},
123                 {INT_SLP_SETTING_DATE_FORMAT,VCONFKEY_SETAPPL_DATE_FORMAT_INT, eINT, {0}},
124                 {INT_SLP_SETTING_WEEK_FORMAT,VCONFKEY_SETAPPL_WEEKOFDAY_FORMAT_INT, eINT, {0}},
125                 /* CALL_ALERT_TYPE */
126                 {INT_SLP_SETTING_CALL_ALERT_TYPE, NULL, eINT, {0}},
127                 {INT_SLP_SETTING_NORMAL_CALL_ALERT_TYPE, NULL, eINT, {0}},
128                 {INT_SLP_SETTING_SILENT_CALL_ALERT_TYPE, NULL, eINT, {0}},
129                 {INT_SLP_SETTING_DRIVING_CALL_ALERT_TYPE, NULL, eINT, {0}},
130                 {INT_SLP_SETTING_MEETING_CALL_ALERT_TYPE, NULL, eINT, {0}},
131                 {INT_SLP_SETTING_OUTDOOR_CALL_ALERT_TYPE, NULL, eINT, {0}},
132                 /* CALL_ALERT_VIB */
133                 {INT_SLP_SETTING_CALL_ALERT_VIB, VCONFKEY_SETAPPL_CALL_VIBRATION_PATTERN_INT, eINT, {0}},
134                 {INT_SLP_SETTING_NORMAL_CALL_ALERT_VIB, NULL, eINT, {0}},
135                 {INT_SLP_SETTING_SILENT_CALL_ALERT_VIB, NULL, eINT, {0}},
136                 {INT_SLP_SETTING_DRIVING_CALL_ALERT_VIB, NULL, eINT, {0}},
137                 {INT_SLP_SETTING_MEETING_CALL_ALERT_VIB, NULL, eINT, {0}},
138                 {INT_SLP_SETTING_OUTDOOR_CALL_ALERT_VIB, NULL, eINT, {0}},
139
140                 /*****/
141                 {INT_SLP_SETTING_CALL_ALERT_VOLUME, NULL, eINT, {0}},
142                 /* MSG_ALERT_TYPE */
143                 {INT_SLP_SETTING_MSG_ALERT_TYPE, NULL, eINT, {0}},
144                 {INT_SLP_SETTING_NORMAL_MSG_ALERT_TYPE, NULL, eINT, {0}},
145                 {INT_SLP_SETTING_SILENT_MSG_ALERT_TYPE, NULL, eINT, {0}},
146                 {INT_SLP_SETTING_DRIVING_MSG_ALERT_TYPE, NULL, eINT, {0}},
147                 {INT_SLP_SETTING_MEETING_MSG_ALERT_TYPE, NULL, eINT, {0}},
148                 {INT_SLP_SETTING_OUTDOOR_MSG_ALERT_TYPE, NULL, eINT, {0}},
149                 /* MSG_ALERT_VIB */
150                 {INT_SLP_SETTING_MSG_ALERT_VIB, NULL, eINT, {0}},
151                 {INT_SLP_SETTING_NORMAL_MSG_ALERT_VIB, NULL, eINT, {0}},
152                 {INT_SLP_SETTING_SILENT_MSG_ALERT_VIB, NULL, eINT, {0}},
153                 {INT_SLP_SETTING_DRIVING_MSG_ALERT_VIB, NULL, eINT, {0}},
154                 {INT_SLP_SETTING_MEETING_MSG_ALERT_VIB, NULL, eINT, {0}},
155                 {INT_SLP_SETTING_OUTDOOR_MSG_ALERT_VIB, NULL, eINT, {0}},
156
157                 /*****/
158                 {INT_SLP_SETTING_MSG_ALERT_REPEAT,VCONFKEY_SETAPPL_NOTI_MSG_ALERT_REP_TYPE_INT, eINT, {0}},
159                 {INT_SLP_SETTING_EMAIL_ALERT_REPEAT,VCONFKEY_SETAPPL_NOTI_EMAIL_ALERT_REP_TYPE_INT, eINT, {0}},
160                 {INT_SLP_SETTING_CALENDAR_ALERT_REPEAT,VCONFKEY_SETAPPL_NOTI_CALENDAR_ALERT_REP_TYPE_INT, eINT, {0}},
161
162                 /*****/
163                 {INT_SLP_SETTING_MSG_ALERT_VOLUME, NULL, eINT, {0}},
164                 {INT_SLP_SETTING_SYS_TOUCH_SOUND, NULL, eINT, {0}},
165                 {INT_SLP_SETTING_SYS_TOUCH_SOUND_VOLUME, NULL, eINT, {0}},
166                 {INT_SLP_SETTING_FONT_SIZE,VCONFKEY_SETAPPL_FONT_SIZE_INT, eINT, {0}},
167                 {INT_SLP_SETTING_FONT_TYPE,VCONFKEY_SETAPPL_FONT_TYPE_INT, eINT, {0}},
168                 {INT_SLP_SETTING_TVOUT_TVSYSTEM,VCONFKEY_SETAPPL_TVOUT_TVSYSTEM_INT, eINT, {0}},
169                 {INT_SLP_SETTING_TVOUT_RESOLUTION,VCONFKEY_SETAPPL_TVOUT_RESOLUTION_INT, eINT, {0}},
170                 {INT_SLP_SETTING_TVOUT_SCREENSIZE,VCONFKEY_SETAPPL_TVOUT_SCREENSIZE_INT, eINT, {0}},
171                 {INT_SLP_SETTING_TVOUT_ROTATION,VCONFKEY_SETAPPL_TVOUT_ROTATION_INT, eINT, {0}},
172                 {INT_SLP_SETTING_LANG,VCONFKEY_SETAPPL_LANG_INT, eINT, {0}},
173                 {INT_SLP_SETTING_BT_STATUS,VCONFKEY_BT_STATUS, eINT, {0}},
174                 {INT_SLP_SETTING_WIFI_STATUS,VCONFKEY_WIFI_STATE, eINT, {0}},
175                 {INT_SLP_SETTING_MOBILE_AP_STATUS,VCONFKEY_MOBILE_HOTSPOT_MODE, eINT, {0}},
176                 {INT_SLP_SETTING_VIB_FEEDBACK,VCONFKEY_SETAPPL_VIB_FEEDBACK_INT, eINT, {0}},
177                 {INT_SLP_SETTING_ROAMING_NETWORK,VCONFKEY_SETAPPL_ROAMING_NETWORK_INT, eINT, {0}},
178                 {INT_SLP_SETTING_USB_MODE,VCONFKEY_SETAPPL_USB_MODE_INT, eINT, {0}},
179
180                 {INT_SLP_SETTING_MENUSCREEN_VIEWTYPE, NULL, eINT, {0}},
181                 {INT_SLP_SETTING_TASKSWITCHER_VIEWTYPE,VCONFKEY_TASKSWITCHER_VIEWTYPE, eINT, {0}},
182
183                 /* memory */
184                 {INT_SLP_SETTING_DEFAULT_MEM_WAP,VCONFKEY_SETAPPL_DEFAULT_MEM_WAP_INT, eINT, {0}},
185                 {INT_SLP_SETTING_DEFAULT_MEM_BLUETOOTH,VCONFKEY_SETAPPL_DEFAULT_MEM_BLUETOOTH_INT, eINT, {0}},
186                 {INT_SLP_SETTING_DEFAULT_MEM_CAMERA,VCONFKEY_SETAPPL_DEFAULT_MEM_CAMERA_INT, eINT, {0}},
187                 {INT_SLP_SETTING_DEFAULT_MEM_VOICE_RECORDER,VCONFKEY_SETAPPL_DEFAULT_MEM_VOICE_RECORDER_INT, eINT, {0}},
188                 {INT_SLP_SETTING_DEFAULT_MEM_FM_RADIO,VCONFKEY_SETAPPL_DEFAULT_MEM_FM_RADIO_INT, eINT, {0}},
189                 {INT_SLP_SETTING_DEFAULT_MEM_ALL_SHARE,VCONFKEY_SETAPPL_DEFAULT_MEM_ALL_SHARE_INT, eINT, {0}},
190                 {INT_SLP_SETTING_DEFAULT_MEM_ADOBE_AIR,VCONFKEY_SETAPPL_DEFAULT_MEM_ADOBE_AIR_INT, eINT, {0}},
191
192                 /* mobile_tracker */
193                 {INT_SLP_SETTING_MOBILE_TRACKER_RECIPIENT_ONE_INDEX,NULL, eINT, {0}},
194                 {INT_SLP_SETTING_MOBILE_TRACKER_RECIPIENT_TWO_INDEX,NULL, eINT, {0}},
195                 {INT_SLP_SETTING_MOBILE_TRACKER_RECIPIENT_THREE_INDEX,NULL, eINT, {0}},
196                 {INT_SLP_SETTING_MOBILE_TRACKER_RECIPIENT_FOUR_INDEX,NULL, eINT, {0}},
197                 {INT_SLP_SETTING_MOBILE_TRACKER_RECIPIENT_FIVE_INDEX,NULL, eINT, {0}},
198
199                 /* special type. this type check multi slp key. */
200                 {INT_SLP_SETTING_SPECIAL_FONT, NULL, eINT, {0}},
201                 {INT_SLP_SETTING_SPECIAL_BRIGHTNESS, NULL, eINT, {0}},
202
203                 /* other module */
204                 {INT_SLP_SETTING_SIM_SLOT,VCONFKEY_TELEPHONY_SIM_SLOT, eINT, {0}},
205                 {INT_SLP_SETTING_PHONE_LOCK_ATTEMPTS_LEFT,VCONFKEY_SETAPPL_PHONE_LOCK_ATTEMPTS_LEFT_INT, eINT, {0}},
206                 {INT_SLP_SETTING_SIM_LOCK_ATTEMPTS_LEFT,VCONFKEY_SETAPPL_SIM_LOCK_ATTEMPTS_LEFT_INT, eINT, {0}},
207
208                 // accessibility setting
209                 {INT_SLP_SETTING_ACCESSIBILITY_ENABLE_AUTO_ANSWER, VCONFKEY_CISSAPPL_ANSWERING_MODE_INT, eINT,{0}},
210                 {INT_SLP_SETTING_ACCESSIBILITY_FONT_SIZE, VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE, eINT, {0}},
211                 {INT_SLP_SETTING_ACCESSIBILITY_FONT_STYLE,VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_STYLE, eINT, {0}},
212                 {INT_SLP_SETTING_ACCESSIBILITY_AUTO_ANSWER,     VCONFKEY_CISSAPPL_ANSWERING_MODE_TIME_INT, eINT, {0}},
213                 {INT_SLP_SETTING_ACCESSIBILITY_POWER_KEY_HOLD, VCONFKEY_SETAPPL_ACCESSIBILITY_POWER_KEY_HOLD, eINT, {0}}, 
214
215         {INT_SLP_SETTING_POWERSAVING_AT, VCONFKEY_SETAPPL_POWERSAVING_AT, eINT, {0}},
216         {INT_SLP_SETTING_POWERSAVING_SCREEN_TIMEOUT, VCONFKEY_SETAPPL_POWERSAVING_SCREEN_TIMEOUT, eINT, {0}},
217 };
218
219
220 /** string vconf table */
221 static VconfNode g_ctable[] = {
222                 {       STR_SLP_LIST_PHONE_PASSWORD, NULL, eSTRING,/* union*/ },
223                 {       STR_SLP_LIST_PRIVACY_PASSWORD, VCONFKEY_SETAPPL_PRIVACY_PASSWD_STR, eSTRING, },
224                 {       STR_SLP_SETTING_CALL_RINGTONE_PATH, NULL, eSTRING, },
225                 {       STR_SLP_SETTING_MSG_RINGTONE_PATH, NULL, eSTRING, },
226                 {       STR_SLP_SETTING_SYS_RINGTONE_PATH, NULL, eSTRING, },
227                 {       STR_SLP_LIST_MOBILE_CONTACT_ONE,NULL, eSTRING, },
228                 {       STR_SLP_LIST_MOBILE_CONTACT_TWO,NULL, eSTRING, },
229                 {       STR_SLP_LIST_MOBILE_CONTACT_THREE,NULL, eSTRING, },
230                 {       STR_SLP_LIST_MOBILE_CONTACT_FOUR,NULL, eSTRING, },
231                 {       STR_SLP_LIST_MOBILE_CONTACT_FIVE,NULL, eSTRING, },
232                 {       STR_SLP_LIST_MOBILE_CONTACT_SENDER,VCONFKEY_SETAPPL_FIND_MY_MOBILE_SENDER_STR, eSTRING, },
233                 {       STR_SLP_LIST_MOBILE_CONTACT_MESSAGE,VCONFKEY_SETAPPL_FIND_MY_MOBILE_MESSAGE_STR, eSTRING, },
234                 {       STR_SLP_LIST_MOBILE_SIM_ICCID,NULL, eSTRING, },
235                 {       STR_SLP_SETTING_WALLPAPER_PATH,VCONFKEY_BGSET, eSTRING, },
236                 {       STR_SLP_SETTING_LOCK_WALLPAPER_PATH,VCONFKEY_IDLE_LOCK_BGSET, eSTRING, },
237                 {       STR_SLP_SETTING_THEME_NAME, "db/setting/selected_theme", eSTRING, },
238                 {       STR_SLP_SETTING_PHONE_LOCK_TIMESTAMP,VCONFKEY_SETAPPL_PHONE_LOCK_TIMESTAMP_STR, eSTRING, },
239                 {       STR_SLP_SETTING_SIM_LOCK_TIMESTAMP,VCONFKEY_SETAPPL_SIM_LOCK_TIMESTAMP_STR, eSTRING, },
240 };
241
242
243 int set_vconf(VconfNode node,VconfNode *result)
244 {
245         SETTING_TRACE_BEGIN;
246         int ret = -1 ;
247         //node.key
248         //node.vconf_key
249         *result = node;
250         switch(node.type)
251         {
252         case eBOOL:
253                 ret = vconf_set_bool(node.vconf_key, node.value.b);
254                 result->type = eBOOL;
255                 result->value.b = node.value.b;
256                 SETTING_TRACE("KEY:%d VCONF_KEY=%s TYPE=%d VALUE=%d ", result->key, result->vconf_key, result->type, result->value.b);
257                 break;
258         case eINT:
259                 SETTING_TRACE("begin case eINT");
260                 ret = vconf_set_int(node.vconf_key, node.value.i);
261                 result->type = eINT;
262                 result->value.i = node.value.i;
263                 SETTING_TRACE("KEY:%d VCONF_KEY=%s TYPE=%d VALUE=%d ", result->key, result->vconf_key, result->type, result->value.i);
264                 SETTING_TRACE("end case eINT");
265                 break;
266         case eSTRING:
267                 if (node.key == STR_SLP_LIST_PHONE_PASSWORD) {
268                         ret = setting_store_init_password(node.value.c);
269                 } else {
270                         ret = vconf_set_str(node.vconf_key, node.value.c);
271                 }
272                 result->type = eSTRING;
273                 result->value.c = node.value.c;
274                 SETTING_TRACE("KEY:%d VCONF_KEY=%s TYPE=%d VALUE=%d ", result->key, result->vconf_key, result->type, result->value.c);
275                 break;
276         default:
277                 SETTING_TRACE(">>>>>>>>>> node.type is NOT DEFINED");
278                 break;
279         }
280
281         //SETTING_TRACE("KEY:%d VCONF_KEY=%s TYPE=%d VALUE=%d ", result->key, result->vconf_key, result->type, result->value.i);
282         return ret;
283 }
284
285
286 int get_vconf(VconfNode node, VconfNode* result)
287 {
288         int ret = -1 ;
289
290         char md_result[SHA256_DIGEST_LENGTH];
291         memset(md_result, 0x0, SHA256_DIGEST_LENGTH);
292
293
294         *result = node;
295
296         switch(node.type)
297         {
298         case eBOOL:
299                 ret = vconf_get_bool(node.vconf_key, &(node.value.b));
300                 result->type = eBOOL;
301                 result->value.b = node.value.b;
302                 break;
303         case eINT:
304                 ret = vconf_get_int(node.vconf_key, &(node.value.i));
305                 result->type = eINT;
306                 result->value.i = node.value.i;
307                 break;
308         case eSTRING:
309                 if (node.key == STR_SLP_LIST_PHONE_PASSWORD)
310                 {
311                         node.value.c = (char*)malloc(sizeof(char) * SHA256_DIGEST_LENGTH);
312                         if (node.value.c) {
313                                 memset(node.value.c, 0x0, SHA256_DIGEST_LENGTH);
314                         } else {
315                                 SETTING_TRACE_ERROR(" malloc filed : eSTRING, node.value.c ");
316                                 ret = SETTING_RETURN_FAIL;
317                                 goto endtag;
318                         }
319
320                         if (setting_read_password(md_result) == 0) {
321                                 memcpy(node.value.c, md_result, SHA256_DIGEST_LENGTH); /*  un-safe */
322
323                                 result->type = eSTRING;
324                                 result->value.c = node.value.c;
325                                 ret = SETTING_RETURN_SUCCESS;
326                         } else {
327                                 /*do nothing */
328                                 ret = SETTING_RETURN_FAIL;
329                                 goto endtag;
330                         }
331                 } else {
332                         node.value.c = vconf_get_str(node.vconf_key);
333                         SETTING_TRACE("string type ---> %s ", node.value.c);
334                         result->type = eSTRING;
335                         result->value.c = node.value.c;
336                         ret = SETTING_RETURN_SUCCESS;
337                 }
338                 break;
339         default:
340                 SETTING_TRACE_ERROR(">>>>>>>>>>>>>>>>>>>>>>> get vconf ERROR : %s ", node.vconf_key );
341         }
342 endtag:
343         return ret;
344 }
345
346 int setting_set_bool_slp_key(setting_bool_slp_list key, int value, int *err)
347 {
348         SETTING_TRACE_BEGIN;
349         int ret = SETTING_RETURN_FAIL;
350
351         /* error check */
352         if (key < 0 || key >= SETTING_BOOL_SLP_LIST_MAX) {
353                 *err = SETTING_GENERAL_ERR_WRONG_PARAMETER;
354                 return ret;
355         }
356
357         VconfNode result;
358         g_btable[key].value.b = value;
359         ret = set_vconf(g_btable[key],&result);
360
361         SETTING_TRACE("setting_set_bool ::: KEY:%d VCONF_KEY=%s TYPE=%d VALUE=%d ", result.key, result.vconf_key, result.type, result.value.b);
362         SETTING_TRACE_END;
363         return ret;
364 }
365
366 int setting_get_bool_slp_key(setting_bool_slp_list key, int *value, int *err)
367 {
368         SETTING_TRACE_BEGIN;
369         int ret = SETTING_RETURN_FAIL;
370
371         /* error check */
372         if (key < 0 || key >= SETTING_BOOL_SLP_LIST_MAX) {
373                 *err = SETTING_GENERAL_ERR_WRONG_PARAMETER;
374                 SETTING_TRACE_ERROR(" <<<<<<<< key is invalid >>>>>>>>>>>>> ");
375                 return ret;
376         }
377         VconfNode result;
378         ret = get_vconf(g_btable[key], &result);
379         //*value = g_btable[key].value.b;
380         *value = result.value.b;
381         SETTING_TRACE_END;
382         return ret;
383 }
384
385 int setting_set_int_slp_key(setting_int_slp_list key, int value, int *err)
386 {
387         SETTING_TRACE_BEGIN;
388         int ret = SETTING_RETURN_FAIL;
389
390         /* error check */
391         if (key < 0 || key >= SETTING_INT_SLP_LIST_MAX) {
392                 *err = SETTING_GENERAL_ERR_WRONG_PARAMETER;
393                 SETTING_TRACE(">>> key is invalid ");
394                 return ret;
395         }
396
397         VconfNode result;
398         g_itable[key].value.i = value;
399         ret = set_vconf(g_itable[key],&result);
400         *err = ret;
401         SETTING_TRACE("setting_set_int ::: KEY:%d VCONF_KEY=%s TYPE=%d VALUE=%d ", result.key, result.vconf_key, result.type, result.value.i);
402         SETTING_TRACE_END;
403         return ret;
404 }
405
406 /* return -1: fail  cannot use err to check the result, return value instead*/
407 int setting_get_int_slp_key(setting_int_slp_list key, int *value, int *err)
408 {
409         SETTING_TRACE_BEGIN;
410         int ret = SETTING_RETURN_FAIL;
411
412         /* error check */
413         if (key < 0 || key >= SETTING_INT_SLP_LIST_MAX) {
414                 *err = SETTING_GENERAL_ERR_WRONG_PARAMETER;
415                 return ret;
416         }
417
418         VconfNode result;
419         ret = get_vconf(g_itable[key], &result);
420         //*value = g_itable[key].value.i;
421         *value = result.value.i;
422
423         *err = ret;
424         SETTING_TRACE_END;
425         return ret;
426 }
427
428 int setting_get_string_slp_key(setting_str_slp_list key, char *value, int *err)
429 {
430         SETTING_TRACE_BEGIN;
431         int ret = SETTING_RETURN_FAIL;
432
433         /* error check */
434         if (key < 0 || key >= STR_SLP_LIST_MAX || NULL == value) {
435                 *err = SETTING_GENERAL_ERR_WRONG_PARAMETER;
436                 return ret;
437         }
438
439         /** @todo check memory leack when passwork checking */
440         VconfNode result;
441         ret = get_vconf(g_ctable[key], &result);
442
443         if (ret >= 0)
444         {
445                 safeCopyStr(value, result.value.c, strlen(result.value.c));
446                 SETTING_TRACE(">>>>>>>> %s <<<<<<<<", value);
447                 FREE(result.value.c);
448         } else {
449                 SETTING_TRACE("get_vconf is failed");
450         }
451         *err = ret;
452         SETTING_TRACE_END;
453         return ret;
454 }
455
456 int setting_set_string_slp_key(setting_str_slp_list key, char *value, int *err)
457 {
458         int ret = SETTING_RETURN_FAIL;
459
460         /* error check */
461         if (key < 0 || key >= STR_SLP_LIST_MAX) {
462                 *err = SETTING_GENERAL_ERR_WRONG_PARAMETER;
463                 return ret;
464         }
465
466         VconfNode result;
467         g_ctable[key].value.c = value;
468         ret = set_vconf(g_ctable[key], &result);
469         g_ctable[key].value.c = "";
470
471         SETTING_TRACE("setting_set_str ::: KEY:%d VCONF_KEY=%s TYPE=%d VALUE=%d ", result.key, result.vconf_key, result.type, result.value.c);
472         *err = ret;
473         return ret;
474 }
475
476 /** @todo don't use i18n string directly. */
477 static const setting_lang_entry lang_table[] = {
478         { SETTING_LANG_AUTOMATIC,       "auto",                 "Automatic"},
479         { SETTING_LANG_KOREA,           "ko_KR.UTF-8",  "한국어"},
480         { SETTING_LANG_ENGLISH,         "en_US.UTF-8",  "English"},
481         { SETTING_LANG_CHINA,           "zh_CN.UTF-8",  "简体中文"},
482         { SETTING_LANG_CANTONESE,       "zh_HK.UTF-8",  "繁體中文(香港)"},
483         { SETTING_LANG_TAIWAN,          "zh_TW.UTF-8",  "繁體中文(台灣)"},
484         { SETTING_LANG_GERMAN,          "de_DE.UTF-8",  "Deutsch"},
485         { SETTING_LANG_DUTCH,           "nl_NL.UTF-8",  "Nederlands"},
486         { SETTING_LANG_SPAINISH,        "es_ES.UTF-8",  "Español"},
487         { SETTING_LANG_PORTUGUESE,      "pt_PT.UTF-8",  "Português"},
488         { SETTING_LANG_GREEK,           "el_GR.UTF-8",  "Eλληνικά"},
489         { SETTING_LANG_ITALIAN,         "it_IT.UTF-8",  "Italiano"},
490         { SETTING_LANG_FRENCH,          "fr_FR.UTF-8",  "Français"},
491         { SETTING_LANG_TURKISH,         "tr_TR.UTF-8",  "Türkçe"},
492         { SETTING_LANG_JAPAN,           "ja_JP.UTF-8",  "にほんご"},
493         { SETTING_LANG_RUSSIAN,         "ru_RU.UTF-8",  "Россию"},
494 };
495
496 setting_lang_entry* setting_get_language_table()
497 {
498         return (setting_lang_entry*)lang_table;
499 }
500
501 //////////////////////////////////////////////////////////////////////////////////////////
502 int setting_store_init_password(char *in)
503 {
504
505         SHA256_CTX context;
506         char md[SHA256_DIGEST_LENGTH];
507         /* int i = 0; */
508         int ret = SETTING_RETURN_FAIL;
509
510         SHA256_Init(&context);
511         SHA256_Update(&context, (char *)in, strlen(in));
512         SHA256_Final((unsigned char *)md, &context);
513
514 #ifdef DEBUG
515         SETTING_TRACE("input: [%s]\n", in);
516         SETTING_TRACE("output: [");
517         for (i = 0; i < SHA256_DIGEST_LENGTH; i++)
518                 SETTING_TRACE("%02x", md[i]);
519         SETTING_TRACE("]\n");
520 #endif
521
522         /*  create a file or store a data */
523         /*  store_password */
524         FILE *fp = NULL;
525         int ret_fw = 0;
526         fp = fopen(PWD_FILE, "w+");
527         if (fp) {
528                 ret_fw = fwrite(md, 1, SHA256_DIGEST_LENGTH, fp);
529                 SETTING_TRACE_DEBUG("fwrite() wrote %d chars.", ret_fw);
530                 if(ret_fw == SHA256_DIGEST_LENGTH)
531                 {
532                         fflush(fp);
533                         fsync(fp->_fileno);
534                         ret = SETTING_RETURN_SUCCESS;
535                 }
536                 fclose(fp);
537         } else {
538                 SETTING_TRACE("ERR: pwd file is not exist \n");
539         }
540         
541         return ret;
542 }
543
544 int setting_read_password(char *md_result)
545 {
546         SETTING_TRACE_BEGIN;
547         /* int i; */
548         FILE *fp = NULL;
549         fp = fopen(PWD_FILE, "r");
550         if (fp) {
551                 fread(md_result, sizeof(char), SHA256_DIGEST_LENGTH, fp);
552                 fclose(fp);
553         } else {
554                 SETTING_TRACE("ERR: pwd file is not exist \n");
555                 return SETTING_RETURN_FAIL;
556         }
557
558 #ifdef DEBUG
559         SETTING_TRACE("output from file: [");
560         for (i = 0; i < SHA256_DIGEST_LENGTH; i++)
561                 SETTING_TRACE("%02x", md_result[i]);
562         SETTING_TRACE("]\n");
563 #endif
564         SETTING_TRACE_END;
565         return 0;
566 }
567
568 int setting_compare_password(char *md_result, const char *in_later)
569 {
570         SETTING_TRACE_BEGIN;
571         SHA256_CTX context_later;
572         char md_later[SHA256_DIGEST_LENGTH];
573         int ret = SETTING_RETURN_FAIL;
574
575         SHA256_Init(&context_later);
576         SHA256_Update(&context_later, (char *)in_later, strlen(in_later));
577         SHA256_Final((unsigned char *)md_later, &context_later);
578
579         SETTING_TRACE(" :[ %25s ]", in_later);
580
581         if (0 == memcmp(md_later, md_result, SHA256_DIGEST_LENGTH)) {
582                 SETTING_TRACE("two passwords are same \n");
583                 ret = 0;
584         } else {
585                 SETTING_TRACE("two passwords are different \n");
586         }
587         return ret;
588 }