Add TOUCH_SOUND setter function
[platform/core/api/system-settings.git] / src / system_settings.c
1 /*
2  * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0
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 <stdio.h>
18 #include <stdlib.h>
19 #include <vconf.h>
20 #include <dlog.h>
21
22 #include <system_settings.h>
23 #include <system_settings_private.h>
24
25 #include <glib.h>
26
27 #ifdef LOG_TAG
28 #undef LOG_TAG
29 #endif
30
31 #define LOG_TAG "TIZEN_N_SYSTEM_SETTINGS"
32
33 #define SYSTEM_SETTINGS_MAX -1
34
35 system_setting_s system_setting_table[] = {
36
37         {
38                 SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE,
39                 SYSTEM_SETTING_DATA_TYPE_STRING,
40                 system_setting_get_incoming_call_ringtone,
41                 system_setting_set_incoming_call_ringtone,
42                 system_setting_set_changed_callback_incoming_call_ringtone,
43                 system_setting_unset_changed_callback_incoming_call_ringtone,
44                 NULL,
45                 system_setting_add_incoming_call_ringtone,      /* ADD */
46                 system_setting_del_incoming_call_ringtone,      /* DEL */
47                 system_setting_list_incoming_call_ringtone,     /* LIST */
48                 system_setting_feature_check_incoming_call,             /* feature check */
49                 { NULL, 0 }, /* changed callabck list */
50                 NULL,           /* user data */
51         },
52
53         {
54                 SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN,
55                 SYSTEM_SETTING_DATA_TYPE_STRING,
56                 system_setting_get_wallpaper_home_screen,
57                 system_setting_set_wallpaper_home_screen,
58                 system_setting_set_changed_callback_wallpaper_home_screen,
59                 system_setting_unset_changed_callback_wallpaper_home_screen,
60                 NULL,
61                 NULL,           /* ADD */
62                 NULL,           /* DEL */
63                 NULL,           /* LIST */
64                 system_setting_feature_check_home_screen,               /* feature check */
65                 { NULL, 0 }, /* changed callabck list */
66                 NULL,           /* user data */
67         },
68
69         {
70                 SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN,
71                 SYSTEM_SETTING_DATA_TYPE_STRING,
72                 system_setting_get_wallpaper_lock_screen,
73                 system_setting_set_wallpaper_lock_screen,
74                 system_setting_set_changed_callback_wallpaper_lock_screen,
75                 system_setting_unset_changed_callback_wallpaper_lock_screen,
76                 NULL,
77                 NULL,           /* ADD */
78                 NULL,           /* DEL */
79                 NULL,           /* LIST */
80                 system_setting_feature_check_lock_screen,               /* feature check */
81                 { NULL, 0 }, /* changed callabck list */
82                 NULL,           /* user data */
83         },
84
85         {
86                 SYSTEM_SETTINGS_KEY_FONT_SIZE,
87                 SYSTEM_SETTING_DATA_TYPE_INT,
88                 system_setting_get_font_size,
89                 system_setting_set_font_size,
90                 system_setting_set_changed_callback_font_size,
91                 system_setting_unset_changed_callback_font_size,
92                 NULL,
93                 NULL,           /* ADD */
94                 NULL,           /* DEL */
95                 NULL,           /* LIST */
96                 system_setting_feature_check_font,              /* feature check */
97                 { NULL, 0 }, /* changed callabck list */
98                 NULL,           /* user data */
99         },
100
101         {
102                 SYSTEM_SETTINGS_KEY_FONT_TYPE,
103                 SYSTEM_SETTING_DATA_TYPE_STRING,
104                 system_setting_get_font_type,
105                 system_setting_set_font_type,
106                 system_setting_set_changed_callback_font_type,
107                 system_setting_unset_changed_callback_font_type,
108                 NULL,
109                 NULL,           /* ADD */
110                 NULL,           /* DEL */
111                 NULL,           /* LIST */
112                 system_setting_feature_check_font,              /* feature check */
113                 { NULL, 0 }, /* changed callabck list */
114                 NULL,           /* user data */
115         },
116
117         {
118                 SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION,
119                 SYSTEM_SETTING_DATA_TYPE_BOOL,
120                 system_setting_get_motion_activation,
121                 system_setting_set_motion_activation,
122                 system_setting_set_changed_callback_motion_activation,
123                 system_setting_unset_changed_callback_motion_activation,
124                 NULL,
125                 NULL,           /* ADD */
126                 NULL,           /* DEL */
127                 NULL,           /* LIST */
128                 NULL,           /* feature check */
129                 { NULL, 0 }, /* changed callabck list */
130                 NULL,           /* user data */
131         },
132
133         {
134                 SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE,
135                 SYSTEM_SETTING_DATA_TYPE_STRING,
136                 system_setting_get_email_alert_ringtone,
137                 system_setting_set_email_alert_ringtone,
138                 system_setting_set_changed_callback_email_alert_ringtone,
139                 system_setting_unset_changed_callback_email_alert_ringtone,
140                 NULL,
141                 NULL,           /* ADD */
142                 NULL,           /* DEL */
143                 NULL,           /* LIST */
144                 system_setting_feature_check_notification_email,                /* feature check */
145                 { NULL, 0 }, /* changed callabck list */
146                 NULL,           /* user data */
147         },
148         {
149                 SYSTEM_SETTINGS_KEY_USB_DEBUGGING_ENABLED,
150                 SYSTEM_SETTING_DATA_TYPE_BOOL,
151                 system_setting_get_usb_debugging_option,
152                 system_setting_set_usb_debugging_option,
153                 system_setting_set_changed_callback_usb_debugging_option,
154                 system_setting_unset_changed_callback_usb_debugging_option,
155                 NULL,
156                 NULL,           /* ADD */
157                 NULL,           /* DEL */
158                 NULL,           /* LIST */
159                 NULL,           /* feature check */
160                 { NULL, 0 }, /* changed callabck list */
161                 NULL,           /* user data */
162         },
163         {
164                 SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED,
165                 SYSTEM_SETTING_DATA_TYPE_BOOL,
166                 system_setting_get_3g_data_network,
167                 system_setting_set_3g_data_network,
168                 system_setting_set_changed_callback_3g_data_network,
169                 system_setting_unset_changed_callback_3g_data_network,
170                 NULL,
171                 NULL,           /* ADD */
172                 NULL,           /* DEL */
173                 NULL,           /* LIST */
174                 NULL,           /* feature check */
175                 { NULL, 0 }, /* changed callabck list */
176                 NULL,           /* user data */
177         },
178         {
179                 SYSTEM_SETTINGS_KEY_LOCKSCREEN_APP,
180                 SYSTEM_SETTING_DATA_TYPE_STRING,
181                 system_setting_get_lockscreen_app,
182                 system_setting_set_lockscreen_app,
183                 system_setting_set_changed_callback_lockscreen_app,
184                 system_setting_unset_changed_callback_lockscreen_app,
185                 NULL,
186                 NULL,           /* ADD */
187                 NULL,           /* DEL */
188                 NULL,           /* LIST */
189                 system_setting_feature_check_lock_screen,               /* feature check */
190                 { NULL, 0 }, /* changed callabck list */
191                 NULL,           /* user data */
192         },
193         {
194                 SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE,
195                 SYSTEM_SETTING_DATA_TYPE_STRING,
196                 system_setting_get_default_font_type,
197                 NULL,
198                 NULL,
199                 NULL,
200                 NULL,
201                 NULL,           /* ADD */
202                 NULL,           /* DEL */
203                 NULL,           /* LIST */
204                 system_setting_feature_check_font,              /* feature check */
205                 { NULL, 0 }, /* changed callabck list */
206                 NULL,           /* user data */
207         },
208         {
209                 SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY,
210                 SYSTEM_SETTING_DATA_TYPE_STRING,
211                 system_setting_get_locale_country,
212                 system_setting_set_locale_country,
213                 system_setting_set_changed_callback_locale_country,
214                 system_setting_unset_changed_callback_locale_country,
215                 NULL,
216                 NULL,           /* ADD */
217                 NULL,           /* DEL */
218                 NULL,           /* LIST */
219                 NULL,           /* feature check */
220                 { NULL, 0 }, /* changed callabck list */
221                 NULL,           /* user data */
222         },
223         {
224                 SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE,
225                 SYSTEM_SETTING_DATA_TYPE_STRING,
226                 system_setting_get_locale_language,
227                 system_setting_set_locale_language,
228                 system_setting_set_changed_callback_locale_language,
229                 system_setting_unset_changed_callback_locale_language,
230                 NULL,
231                 NULL,           /* ADD */
232                 NULL,           /* DEL */
233                 NULL,           /* LIST */
234                 NULL,           /* feature check */
235                 { NULL, 0 }, /* changed callabck list */
236                 NULL,           /* user data */
237         },
238         {
239                 SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR,
240                 SYSTEM_SETTING_DATA_TYPE_BOOL,
241                 system_setting_get_locale_timeformat_24hour,
242                 system_setting_set_locale_timeformat_24hour,
243                 system_setting_set_changed_callback_locale_timeformat_24hour,
244                 system_setting_unset_changed_callback_locale_timeformat_24hour,
245                 NULL,
246                 NULL,           /* ADD */
247                 NULL,           /* DEL */
248                 NULL,           /* LIST */
249                 NULL,           /* feature check */
250                 { NULL, 0 }, /* changed callabck list */
251                 NULL,           /* user data */
252         },
253         {
254                 SYSTEM_SETTINGS_KEY_LOCALE_TIMEZONE,
255                 SYSTEM_SETTING_DATA_TYPE_STRING,
256                 system_setting_get_locale_timezone,
257                 system_setting_set_locale_timezone,
258                 system_setting_set_changed_callback_locale_timezone,
259                 system_setting_unset_changed_callback_locale_timezone,
260                 NULL,
261                 NULL,           /* ADD */
262                 NULL,           /* DEL */
263                 NULL,           /* LIST */
264                 NULL,           /* feature check */
265                 { NULL, 0 }, /* changed callabck list */
266                 NULL,           /* user data */
267         },
268         {
269                 SYSTEM_SETTINGS_KEY_TIME_CHANGED,
270                 SYSTEM_SETTING_DATA_TYPE_INT,
271                 system_setting_get_time_changed,
272                 NULL,
273                 system_setting_set_changed_callback_time_changed,
274                 system_setting_unset_changed_callback_time_changed,
275                 NULL,
276                 NULL,           /* ADD */
277                 NULL,           /* DEL */
278                 NULL,           /* LIST */
279                 NULL,           /* feature check */
280                 { NULL, 0 }, /* changed callabck list */
281                 NULL,           /* user data */
282         },
283         {
284                 SYSTEM_SETTINGS_KEY_SOUND_LOCK,
285                 SYSTEM_SETTING_DATA_TYPE_BOOL,
286                 system_setting_get_sound_lock,
287                 NULL,
288                 system_setting_set_changed_callback_sound_lock,
289                 system_setting_unset_changed_callback_sound_lock,
290                 NULL,
291                 NULL,           /* ADD */
292                 NULL,           /* DEL */
293                 NULL,           /* LIST */
294                 NULL,           /* feature check */
295                 { NULL, 0 }, /* changed callabck list */
296                 NULL,           /* user data */
297         },
298         {
299                 SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE,
300                 SYSTEM_SETTING_DATA_TYPE_BOOL,
301                 system_setting_get_sound_silent_mode,
302                 system_setting_set_sound_silent_mode,
303                 system_setting_set_changed_callback_sound_silent_mode,
304                 system_setting_unset_changed_callback_sound_silent_mode,
305                 NULL,
306                 NULL,           /* ADD */
307                 NULL,           /* DEL */
308                 NULL,           /* LIST */
309                 NULL,           /* feature check */
310                 { NULL, 0 }, /* changed callabck list */
311                 NULL,           /* user data */
312         },
313         {
314                 SYSTEM_SETTINGS_KEY_SOUND_TOUCH,
315                 SYSTEM_SETTING_DATA_TYPE_BOOL,
316                 system_setting_get_sound_touch,
317                 system_setting_set_sound_touch,
318                 system_setting_set_changed_callback_sound_touch,
319                 system_setting_unset_changed_callback_sound_touch,
320                 NULL,
321                 NULL,           /* ADD */
322                 NULL,           /* DEL */
323                 NULL,           /* LIST */
324                 NULL,           /* feature check */
325                 { NULL, 0 }, /* changed callabck list */
326                 NULL,           /* user data */
327         },
328         {
329                 SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO,
330                 SYSTEM_SETTING_DATA_TYPE_BOOL,
331                 system_setting_get_auto_rotation_mode,
332                 system_setting_set_auto_rotation_mode,
333                 system_setting_set_changed_callback_auto_rotation_mode,
334                 system_setting_unset_changed_callback_auto_rotation_mode,
335                 NULL,
336                 NULL,           /* ADD */
337                 NULL,           /* DEL */
338                 NULL,           /* LIST */
339                 NULL,           /* feature check */
340                 { NULL, 0 }, /* changed callabck list */
341                 NULL,           /* user data */
342         },
343         {
344                 SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME,
345                 SYSTEM_SETTING_DATA_TYPE_INT,
346                 system_setting_get_screen_backlight_time,
347                 system_setting_set_screen_backlight_time,
348                 system_setting_set_changed_callback_screen_backlight_time,
349                 system_setting_unset_changed_callback_screen_backlight_time,
350                 NULL,
351                 NULL,           /* ADD */
352                 NULL,           /* DEL */
353                 NULL,           /* LIST */
354                 NULL,           /* feature check */
355                 { NULL, 0 }, /* changed callabck list */
356                 NULL,           /* user data */
357         },
358         {
359                 SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION,
360                 SYSTEM_SETTING_DATA_TYPE_STRING,
361                 system_setting_get_sound_notification,
362                 system_setting_set_sound_notification,
363                 system_setting_set_changed_callback_sound_notification,
364                 system_setting_unset_changed_callback_sound_notification,
365                 NULL,
366                 NULL,           /* ADD */
367                 NULL,           /* DEL */
368                 NULL,           /* LIST */
369                 system_setting_feature_check_incoming_call,             /* feature check */
370                 { NULL, 0 }, /* changed callabck list */
371                 NULL,           /* user data */
372         },
373         {
374                 SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION_REPETITION_PERIOD,
375                 SYSTEM_SETTING_DATA_TYPE_INT,
376                 system_setting_get_notification_repetition_period,
377                 system_setting_set_notification_repetition_period,
378                 system_setting_set_changed_callback_notification_repetition_period,
379                 system_setting_unset_changed_callback_notification_repetition_period,
380                 NULL,
381                 NULL,           /* ADD */
382                 NULL,           /* DEL */
383                 NULL,           /* LIST */
384                 NULL,           /* feature check */
385                 { NULL, 0 }, /* changed callabck list */
386                 NULL,           /* user data */
387         },
388         {
389                 SYSTEM_SETTINGS_KEY_DEVICE_NAME,
390                 SYSTEM_SETTING_DATA_TYPE_STRING,
391                 system_setting_get_device_name,
392                 NULL,
393                 system_setting_set_changed_callback_device_name,
394                 system_setting_unset_changed_callback_device_name,
395                 NULL,
396                 NULL,           /* ADD */
397                 NULL,           /* DEL */
398                 NULL,           /* LIST */
399                 NULL,           /* feature check */
400                 { NULL, 0 }, /* changed callabck list */
401                 NULL,           /* user data */
402         },
403         {
404                 SYSTEM_SETTINGS_KEY_MOTION_ENABLED,
405                 SYSTEM_SETTING_DATA_TYPE_BOOL,
406                 system_setting_get_motion_activation,
407                 NULL,
408                 system_setting_set_changed_callback_motion_activation,
409                 system_setting_unset_changed_callback_motion_activation,
410                 NULL,
411                 NULL,           /* ADD */
412                 NULL,           /* DEL */
413                 NULL,           /* LIST */
414                 NULL,           /* feature check */
415                 { NULL, 0 }, /* changed callabck list */
416                 NULL,           /* user data */
417         },
418         {
419                 SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE,
420                 SYSTEM_SETTING_DATA_TYPE_BOOL,
421                 system_setting_get_network_flight_mode,
422                 NULL,
423                 system_setting_set_changed_callback_network_flight_mode,
424                 system_setting_unset_changed_callback_network_flight_mode,
425                 NULL,
426                 NULL,           /* ADD */
427                 NULL,           /* DEL */
428                 NULL,           /* LIST */
429                 NULL,           /* feature check */
430                 { NULL, 0 }, /* changed callabck list */
431                 NULL,           /* user data */
432         },
433         {
434                 SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION,
435                 SYSTEM_SETTING_DATA_TYPE_BOOL,
436                 system_setting_get_network_wifi_notification,
437                 NULL,
438                 system_setting_set_changed_callback_network_wifi_notification,
439                 system_setting_unset_changed_callback_network_wifi_notification,
440                 NULL,
441                 NULL,           /* ADD */
442                 NULL,           /* DEL */
443                 NULL,           /* LIST */
444                 system_setting_feature_check_wifi,              /* feature check */
445                 { NULL, 0 }, /* changed callabck list */
446                 NULL,           /* user data */
447         },
448         {
449                 SYSTEM_SETTINGS_KEY_LOCK_STATE,
450                 SYSTEM_SETTING_DATA_TYPE_INT,
451                 system_setting_get_lock_state,
452                 system_setting_set_lock_state,
453                 system_setting_set_changed_callback_lock_state,
454                 system_setting_unset_changed_callback_lock_state,
455                 NULL,
456                 NULL,           /* add */
457                 NULL,           /* del */
458                 NULL,           /* list */
459                 NULL,           /* feature check */
460                 { NULL, 0 }, /* changed callabck list */
461                 NULL,           /* user data */
462         },
463         {
464                 SYSTEM_SETTINGS_KEY_ADS_ID,
465                 SYSTEM_SETTING_DATA_TYPE_STRING,
466                 system_setting_get_ads_id,
467                 system_setting_set_ads_id,
468                 system_setting_set_changed_callback_ads_id,
469                 system_setting_unset_changed_callback_ads_id,
470                 NULL,
471                 NULL,           /* add */
472                 NULL,           /* del */
473                 NULL,           /* list */
474                 NULL,           /* feature check */
475                 { NULL, 0 }, /* changed callabck list */
476                 NULL,           /* user data */
477         },
478
479         {
480                 SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE,
481                 SYSTEM_SETTING_DATA_TYPE_INT,
482                 system_setting_get_uds_state,
483                 NULL,
484                 system_setting_set_changed_callback_uds_state,
485                 system_setting_unset_changed_callback_uds_state,
486                 NULL,
487                 NULL,           /* add */
488                 NULL,           /* del */
489                 NULL,           /* list */
490                 system_setting_feature_check_telephony,         /* feature check */
491                 { NULL, 0 }, /* changed callabck list */
492                 NULL,           /* user data */
493         },
494         {
495                 SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE_PKG_LIST,
496                 SYSTEM_SETTING_DATA_TYPE_STRING,
497                 NULL,
498                 NULL,
499                 system_setting_set_changed_callback_uds_pkg_list,
500                 system_setting_unset_changed_callback_uds_pkg_list,
501                 NULL,
502                 NULL,           /* add */
503                 NULL,           /* del */
504                 NULL,           /* list */
505                 system_setting_feature_check_telephony,         /* feature check */
506                 { NULL, 0 }, /* changed callabck list */
507                 NULL,           /* user data */
508         },
509         {
510                 SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS,
511                 SYSTEM_SETTING_DATA_TYPE_BOOL,
512                 system_setting_get_accessibility_tts,
513                 system_setting_set_accessibility_tts,
514                 system_setting_set_changed_callback_accessibility_tts,
515                 system_setting_unset_changed_callback_accessibility_tts,
516                 NULL,
517                 NULL,           /* ADD */
518                 NULL,           /* DEL */
519                 NULL,           /* LIST */
520                 NULL,           /* feature check */
521                 { NULL, 0 }, /* changed callabck list */
522                 NULL,           /* user data */
523         },
524         {
525                 SYSTEM_SETTINGS_KEY_VIBRATION,
526                 SYSTEM_SETTING_DATA_TYPE_BOOL,
527                 system_setting_get_vibration,
528                 system_setting_set_vibration,
529                 system_setting_set_changed_callback_vibration,
530                 system_setting_unset_changed_callback_vibration,
531                 NULL,
532                 NULL,           /* ADD */
533                 NULL,           /* DEL */
534                 NULL,           /* LIST */
535                 NULL,           /* feature check */
536                 { NULL, 0 }, /* changed callabck list */
537                 NULL,           /* user data */
538         },
539         {
540                 SYSTEM_SETTINGS_KEY_AUTOMATIC_TIME_UPDATE,
541                 SYSTEM_SETTING_DATA_TYPE_BOOL,
542                 system_setting_get_automatic_time_update,
543                 system_setting_set_automatic_time_update,
544                 system_setting_set_changed_callback_automatic_time_update,
545                 system_setting_unset_changed_callback_automatic_time_update,
546                 NULL,
547                 NULL,           /* ADD */
548                 NULL,           /* DEL */
549                 NULL,           /* LIST */
550                 system_setting_feature_check_telephony,         /* feature check */
551                 { NULL, 0 }, /* changed callabck list */
552                 NULL,           /* user data */
553         },
554         {
555                 SYSTEM_SETTINGS_KEY_DEVELOPER_OPTION_STATE,
556                 SYSTEM_SETTING_DATA_TYPE_BOOL,
557                 system_setting_get_developer_option_state,
558                 system_setting_set_developer_option_state,
559                 system_setting_set_changed_callback_developer_option_state,
560                 system_setting_unset_changed_callback_developer_option_state,
561                 NULL,
562                 NULL,           /* ADD */
563                 NULL,           /* DEL */
564                 NULL,           /* LIST */
565                 NULL,           /* feature check */
566                 { NULL, 0 }, /* changed callabck list */
567                 NULL,           /* user data */
568         },
569         {
570                 SYSTEM_SETTINGS_KEY_ACCESSIBILITY_GRAYSCALE,
571                 SYSTEM_SETTING_DATA_TYPE_BOOL,
572                 system_setting_get_accessibility_grayscale,
573                 system_setting_set_accessibility_grayscale,
574                 system_setting_set_changed_callback_accessibility_grayscale,
575                 system_setting_unset_changed_callback_accessibility_grayscale,
576                 NULL,
577                 NULL,           /* ADD */
578                 NULL,           /* DEL */
579                 NULL,           /* LIST */
580                 system_setting_feature_check_accessibility_grayscale,           /* feature check */
581                 { NULL, 0 }, /* changed callabck list */
582                 NULL,           /* user data */
583         },
584         {
585                 SYSTEM_SETTINGS_KEY_ACCESSIBILITY_NEGATIVE_COLOR,
586                 SYSTEM_SETTING_DATA_TYPE_BOOL,
587                 system_setting_get_accessibility_negative_color,
588                 system_setting_set_accessibility_negative_color,
589                 system_setting_set_changed_callback_accessibility_negative_color,
590                 system_setting_unset_changed_callback_accessibility_negative_color,
591                 NULL,
592                 NULL,           /* ADD */
593                 NULL,           /* DEL */
594                 NULL,           /* LIST */
595                 system_setting_feature_check_accessibility_negative,            /* feature check */
596                 { NULL, 0 }, /* changed callabck list */
597                 NULL,           /* user data */
598         },
599         {
600                 SYSTEM_SETTINGS_KEY_ROTARY_EVENT_ENABLED,
601                 SYSTEM_SETTING_DATA_TYPE_BOOL,
602                 system_setting_get_rotary_event_enabled,
603                 system_setting_set_rotary_event_enabled,
604                 system_setting_set_changed_callback_rotary_event_enabled,
605                 system_setting_unset_changed_callback_rotary_event_enabled,
606                 NULL,
607                 NULL,           /* ADD */
608                 NULL,           /* DEL */
609                 NULL,           /* LIST */
610                 system_setting_feature_check_wearable_profile,          /* feature check */
611                 { NULL, 0 }, /* changed callabck list */
612                 NULL,           /* user data */
613         },
614         {
615                 SYSTEM_SETTINGS_MAX, -1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, { NULL, 0 }, NULL
616         }
617 };
618
619 #if 0
620 static void _dump_context()
621 {
622         int i;
623         /*int max = SYSTEM_SETTINGS_MAX; */
624         int max = sizeof(system_setting_table) / sizeof(system_setting_s) - 1 ;
625
626         for (i = 0; i < max; i++) {
627                 LOGE("[%s] system_setting_table[i].key = %d", __FUNCTION__, system_setting_table[i].key);
628                 LOGE("[%s] system_setting_table[i].data_type = %d", __FUNCTION__, system_setting_table[i].data_type);
629                 LOGE("[%s] system_setting_table[i].get_value_cb = %x", __FUNCTION__, system_setting_table[i].get_value_cb);
630                 LOGE("[%s] system_setting_table[i].set_value_cb = %x", __FUNCTION__, system_setting_table[i].set_value_cb);
631
632                 LOGE("[%s] system_setting_table[i].set_changed_cb = %x <---", __FUNCTION__, system_setting_table[i].set_changed_cb);
633                 LOGE("[%s] system_setting_table[i].unset_changed_cb = %x", __FUNCTION__, system_setting_table[i].unset_changed_cb);
634                 LOGE("[%s] system_setting_table[i].changed_cb = %x", __FUNCTION__, system_setting_table[i].changed_cb);
635         }
636 }
637 #endif
638
639 /*  LCOV_EXCL_START */
640 static int _dump_context_node(int key)
641 {
642         int index = 0;
643
644         if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
645                 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
646         }
647
648         while (system_setting_table[index].key != SYSTEM_SETTINGS_MAX) {
649                 if (system_setting_table[index].key == key) {
650                         int i = index;
651                         LOGE("[%s] system_setting_table[i].key = %d", __FUNCTION__, system_setting_table[i].key);
652                         LOGE("[%s] system_setting_table[i].data_type = %d", __FUNCTION__, system_setting_table[i].data_type);
653                         LOGE("[%s] system_setting_table[i].get_value_cb = %p", __FUNCTION__, system_setting_table[i].get_value_cb);
654                         LOGE("[%s] system_setting_table[i].set_value_cb = %p", __FUNCTION__, system_setting_table[i].set_value_cb);
655                         LOGE("[%s] system_setting_table[i].set_changed_cb = %p <---", __FUNCTION__, system_setting_table[i].set_changed_cb);
656                         LOGE("[%s] system_setting_table[i].unset_changed_cb = %p", __FUNCTION__, system_setting_table[i].unset_changed_cb);
657                         LOGE("[%s] system_setting_table[i].changed_cb = %p", __FUNCTION__, system_setting_table[i].changed_cb);
658                         return 0;
659                 }
660                 index++;
661         }
662
663         return -1;
664 }
665 /*  LCOV_EXCL_STOP */
666
667 int system_settings_get_item(system_settings_key_e key, system_setting_h *item)
668 {
669         LOGE("Enter [%s], key=%d", __FUNCTION__, key);
670
671         if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
672                 LOGE("Enter [%s] catch invalid parameter error (%d) ", __FUNCTION__, key);
673                 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
674         }
675 #if 0
676         _dump_context();
677 #endif
678         int index = 0;
679         while (system_setting_table[index].key != SYSTEM_SETTINGS_MAX) {
680                 if (system_setting_table[index].key == key) {
681                         *item = &system_setting_table[index];
682                         LOGE("Enter [%s], index = %d, key = %d, type = %d", __FUNCTION__, index, key, (*item)->data_type);
683                         if (system_setting_table[index].feature_check_cb != NULL) {
684                                 int ret = system_setting_table[index].feature_check_cb(item);
685                                 if (ret == SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED) {
686                                         LOGE("Not supported API, because there is no feature!");
687                                 }
688                                 return ret;
689                         } else {
690                                 return SYSTEM_SETTINGS_ERROR_NONE;
691                         }
692                 }
693
694                 index++;
695         }
696
697         return TIZEN_ERROR_INVALID_PARAMETER;
698 }
699
700 int system_settings_get_value(system_settings_key_e key, system_setting_data_type_e data_type, void **value)
701 {
702         LOGE("Enter [%s]", __FUNCTION__);
703         if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
704                 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
705         }
706
707         system_setting_h system_setting_item;
708         system_setting_get_value_cb     system_setting_getter;
709
710         int ret = system_settings_get_item(key, &system_setting_item);
711         if (ret != 0) {
712                 if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER) {
713                         _dump_context_node(key);
714                         LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
715                 }
716                 return ret;
717         }
718
719         if (system_setting_item->data_type != data_type) {
720                 _dump_context_node(key);
721                 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid data type --- key:(%d), datatype:(%d)", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, key, data_type);
722                 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
723         }
724
725         system_setting_getter = system_setting_item->get_value_cb;
726
727         if (system_setting_getter == NULL) {
728                 LOGE("[%s] IO_ERROR(0x%08x) : failed to call getter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_IO_ERROR);
729                 return SYSTEM_SETTINGS_ERROR_IO_ERROR;
730         }
731
732         return system_setting_getter(key, value);
733 }
734
735 /*  LCOV_EXCL_START */
736 int system_settings_set_value(system_settings_key_e key, system_setting_data_type_e data_type, void *value)
737 {
738         LOGE("Enter [%s]", __FUNCTION__);
739         if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key) || value == NULL) {
740                 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
741         }
742
743
744         system_setting_h system_setting_item;
745         system_setting_set_value_cb     system_setting_setter;
746
747         int ret = system_settings_get_item(key, &system_setting_item);
748
749         if (ret != 0) {
750                 if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER)
751                         LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
752                 return ret;
753         }
754
755         /* type check */
756         if (system_setting_item->data_type != data_type) {
757                 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid data type", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
758                 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
759         }
760
761         system_setting_setter = system_setting_item->set_value_cb;
762
763         if (system_setting_setter == NULL) {
764                 LOGE("[%s] IO_ERROR(0x%08x) : failed to call setter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED);
765                 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
766         }
767
768         return system_setting_setter(key, value);
769 }
770 /*  LCOV_EXCL_STOP */
771
772
773
774 int system_settings_add_value(system_settings_key_e key, system_setting_data_type_e data_type, void *value)
775 {
776         LOGE("Enter [%s]", __FUNCTION__);
777         if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key) || value == NULL) {
778                 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
779         }
780
781
782         system_setting_h system_setting_item;
783         system_setting_add_value_cb     system_setting_adder;
784
785         int ret = system_settings_get_item(key, &system_setting_item);
786
787         if (ret != 0) {
788                 if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER)
789                         LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
790                 return ret;
791         }
792
793         /* type check */
794         if (system_setting_item->data_type != data_type) {
795                 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid data type", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
796                 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
797         }
798
799         system_setting_adder = system_setting_item->add_value_cb;
800
801         if (system_setting_adder == NULL) {
802                 LOGE("[%s] IO_ERROR(0x%08x) : failed to call setter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED);
803                 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
804         }
805
806         return system_setting_adder(key, value);
807 }
808
809
810 int system_settings_del_value(system_settings_key_e key, system_setting_data_type_e data_type, void *value)
811 {
812         LOGE("Enter [%s]", __FUNCTION__);
813         if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key) || value == NULL) {
814                 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
815         }
816
817
818         system_setting_h system_setting_item;
819         system_setting_del_value_cb     system_setting_deler;
820
821         int ret = system_settings_get_item(key, &system_setting_item);
822
823         if (0 != ret) {
824                 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
825                 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
826         }
827
828         /* type check */
829         if (system_setting_item->data_type != data_type) {
830                 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid data type", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
831                 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
832         }
833
834         system_setting_deler = system_setting_item->del_value_cb;
835
836         if (system_setting_deler == NULL) {
837                 LOGE("[%s] IO_ERROR(0x%08x) : failed to call setter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED);
838                 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
839         }
840
841         return system_setting_deler(key, value);
842 }
843
844
845
846
847
848 int system_settings_list_value(system_settings_key_e key, system_setting_data_type_e data_type, bool (*system_setting_data_iterator)(int, const char* , void *), void *user_data)
849 {
850         LOGE("Enter [%s]", __FUNCTION__);
851         if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
852                 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
853         }
854
855
856         system_setting_h system_setting_item;
857         system_setting_list_value_cb    system_setting_lister;
858
859         int ret = system_settings_get_item(key, &system_setting_item);
860
861         if (ret != 0) {
862                 if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER)
863                         LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
864                 return ret;
865         }
866
867         /* type check */
868         if (system_setting_item->data_type != data_type) {
869                 LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid data type", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
870                 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
871         }
872
873         //system_setting_list_value_cb list_changed_cb;
874         system_setting_lister = system_setting_item->list_value_cb;
875
876         if (system_setting_lister == NULL) {
877                 LOGE("[%s] IO_ERROR(0x%08x) : failed to call setter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED);
878                 return SYSTEM_SETTINGS_ERROR_NOT_SUPPORTED;
879         }
880
881         return system_setting_lister(key, system_setting_data_iterator, user_data);
882 }
883
884
885
886
887
888
889 /*  LCOV_EXCL_START */
890 int system_settings_set_value_int(system_settings_key_e key, int value)
891 {
892         LOGE("Enter [%s]", __FUNCTION__);
893         if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
894                 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
895         }
896
897         int *ptr = &value;
898         int **p_ptr = &ptr;
899         return system_settings_set_value(key, SYSTEM_SETTING_DATA_TYPE_INT, (void *)p_ptr);
900 }
901 /*  LCOV_EXCL_STOP */
902
903 int system_settings_get_value_int(system_settings_key_e key, int *value)
904 {
905         LOGE("Enter [%s]", __FUNCTION__);
906         if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
907                 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
908         }
909         int value_int = 0;
910         int *ptr = &value_int;
911         int **p_ptr = &ptr;
912         int ret = 0;
913         ret = system_settings_get_value(key, SYSTEM_SETTING_DATA_TYPE_INT, (void **)p_ptr);
914         *value = value_int;
915         return ret;
916 }
917
918 /*  LCOV_EXCL_START */
919 int system_settings_set_value_bool(system_settings_key_e key, bool value)
920 {
921         LOGE("Enter [%s]", __FUNCTION__);
922         if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
923                 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
924         }
925
926         bool *ptr = &value;
927         return system_settings_set_value(key, SYSTEM_SETTING_DATA_TYPE_BOOL, (void *)ptr);
928 }
929 /*  LCOV_EXCL_STOP */
930
931 int system_settings_get_value_bool(system_settings_key_e key, bool *value)
932 {
933         LOGE("Enter [%s]", __FUNCTION__);
934         SETTING_TRACE(" SIGNED LONG here ******************* log here *************** ");
935         signed long flag = 0;
936
937         int ret;
938
939         if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
940                 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
941         }
942
943         ret = system_settings_get_value(key, SYSTEM_SETTING_DATA_TYPE_BOOL, (void **)&flag);
944         SETTING_TRACE(" inf (flag) value : %ld ", flag);
945         if (flag == 0) {
946                 *value = false;
947                 SETTING_TRACE(" flag == 0 ");
948         } else if (flag == 1) {
949                 *value = true;
950                 SETTING_TRACE(" flag == 1 ");
951         } else {
952                 *value = false;
953                 SETTING_TRACE(" exception here!!! ");
954         }
955
956         return ret;
957 }
958
959 /*  LCOV_EXCL_START */
960 int system_settings_set_value_string(system_settings_key_e key, const char *value)
961 {
962         LOGE("Enter [%s]", __FUNCTION__);
963         if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key))
964                 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
965
966         if (key == SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE)
967                 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
968
969         return system_settings_set_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, (void *)value);
970 }
971 /*  LCOV_EXCL_STOP */
972
973 int system_settings_get_value_string(system_settings_key_e key, char **value)
974 {
975         LOGE("Enter [%s]", __FUNCTION__);
976         if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
977                 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
978         }
979
980         return system_settings_get_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, (void **)value);
981 }
982
983
984 /*PUBLIC*/
985 int system_settings_set_changed_cb(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
986 {
987         LOGE("Enter [%s]", __FUNCTION__);
988         system_setting_h system_setting_item;
989         system_setting_set_changed_callback_cb system_setting_set_changed_cb;
990
991         if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
992                 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
993         }
994
995         if (key == SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE)
996                 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
997
998         int ret = system_settings_get_item(key, &system_setting_item);
999         if (ret != 0) {
1000                 if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER)
1001                         LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
1002                 return ret;
1003         }
1004
1005         system_setting_set_changed_cb = system_setting_item->set_changed_cb;
1006
1007
1008         /* Store the callback function from application side */
1009         if (callback)
1010                 system_setting_item->changed_cb = callback;
1011
1012         if (user_data)
1013                 system_setting_item->user_data = user_data;
1014
1015         if (system_setting_set_changed_cb == NULL) {
1016                 LOGE("[%s] IO_ERROR(0x%08x) : failed to call getter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_IO_ERROR);
1017                 return SYSTEM_SETTINGS_ERROR_IO_ERROR;
1018         }
1019
1020         return system_setting_set_changed_cb(key, callback, user_data);
1021 }
1022
1023
1024 int system_settings_unset_changed_cb(system_settings_key_e key)
1025 {
1026         LOGE("Enter [%s]", __FUNCTION__);
1027         system_setting_h system_setting_item;
1028         system_setting_unset_changed_callback_cb system_setting_unset_changed_cb;
1029
1030         if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
1031                 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
1032         }
1033
1034         if (key == SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE)
1035                 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
1036
1037         int ret = system_settings_get_item(key, &system_setting_item);
1038         if (ret != 0) {
1039                 if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER)
1040                         LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
1041                 return ret;
1042         }
1043
1044         system_setting_unset_changed_cb = system_setting_item->unset_changed_cb;
1045
1046         /* free the callback function from application side */
1047         if (system_setting_item->changed_cb)
1048                 system_setting_item->changed_cb = NULL;
1049         /*----------------------------------------------------- */
1050
1051         if (system_setting_unset_changed_cb == NULL) {
1052                 LOGE("[%s] IO_ERROR(0x%08x) : failed to call getter for the system settings", __FUNCTION__, SYSTEM_SETTINGS_ERROR_IO_ERROR);
1053                 return SYSTEM_SETTINGS_ERROR_IO_ERROR;
1054         }
1055
1056         return system_setting_unset_changed_cb(key);
1057 }
1058
1059 int system_settings_add_changed_cb(system_settings_key_e key, system_settings_changed_cb callback, void *user_data)
1060 {
1061         LOGE("Enter [%s]", __FUNCTION__);
1062         char *vconf_string = NULL;
1063         system_setting_h system_setting_item;
1064
1065         if (callback == NULL)
1066                 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
1067
1068         if (key == SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE)
1069                 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
1070
1071         int ret = system_settings_get_item(key, &system_setting_item);
1072         if (ret != 0) {
1073                 if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER)
1074                         LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
1075                 return ret;
1076         }
1077
1078         system_settings_vconf_get_key_string(key, &vconf_string);
1079         LOGE("[%s] key = %d %s", __FUNCTION__, key, vconf_string ? vconf_string : "NULL");
1080
1081         /* Store the callback function from application side */
1082         ret = add_multi_callback(&system_setting_item->changed_cb_list, callback, user_data);
1083         if (ret != SYSTEM_SETTINGS_ERROR_NONE) {
1084                 LOGE("[%s] IO_ERROR(0x%08x) : failed to add muti-callback for the system settings", __FUNCTION__, ret);
1085                 return ret;
1086         }
1087
1088         if (!system_setting_item->changed_cb_list.is_registered) {
1089                 int ret = system_setting_vconf_set_changed_multi_cb(vconf_string, key);
1090                 if (ret == SYSTEM_SETTINGS_ERROR_NONE)
1091                         system_setting_item->changed_cb_list.is_registered = 1;
1092                 LOGE("Leave [%s]", __FUNCTION__);
1093                 return ret;
1094         }
1095
1096         LOGE("Leave [%s]", __FUNCTION__);
1097         return SYSTEM_SETTINGS_ERROR_NONE;
1098 }
1099
1100 int system_settings_remove_changed_cb(system_settings_key_e key, system_settings_changed_cb callback)
1101 {
1102         LOGE("Enter [%s]", __FUNCTION__);
1103         char *vconf_string = NULL;
1104         system_setting_h system_setting_item;
1105
1106         if (callback == NULL) {
1107                 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
1108         }
1109
1110         if (key == SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE) {
1111                 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
1112         }
1113
1114         int ret = system_settings_get_item(key, &system_setting_item);
1115         if (ret != 0) {
1116                 if (ret == SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER)
1117                         LOGE("[%s] INVALID_PARAMETER(0x%08x) : invalid key", __FUNCTION__, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
1118                 return ret;
1119         }
1120
1121         delete_multi_callback(&system_setting_item->changed_cb_list, callback);
1122
1123         if (system_setting_item->changed_cb_list.list == NULL) {
1124                 int ret = 0;
1125                 system_settings_vconf_get_key_string(key, &vconf_string);
1126                 if (vconf_string == NULL)
1127                         return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
1128                 ret = system_setting_vconf_unset_changed_multi_cb(vconf_string, key);
1129                 if (ret == SYSTEM_SETTINGS_ERROR_NONE)
1130                         system_setting_item->changed_cb_list.is_registered = 0;
1131                 LOGE("Leave [%s]", __FUNCTION__);
1132                 return ret;
1133         }
1134
1135         LOGE("Leave [%s]", __FUNCTION__);
1136         return SYSTEM_SETTINGS_ERROR_NONE;
1137 }
1138
1139 //////////////////////////////////////////////////////////////////////////////////////////////////
1140 // list
1141 //////////////////////////////////////////////////////////////////////////////////////////////////
1142
1143 int system_settings_foreach_value_string(system_settings_key_e key, system_settings_iter_cb callback, void *value)
1144 {
1145         LOGE("Enter [%s]", __FUNCTION__);
1146         if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
1147                 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
1148         }
1149
1150         return system_settings_list_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, callback, (void *)value);
1151 }
1152
1153 //////////////////////////////////////////////////////////////////////////////////////////////////
1154 // add
1155 //////////////////////////////////////////////////////////////////////////////////////////////////
1156
1157 int system_settings_add_value_string(system_settings_key_e key, const char* value)
1158 {
1159         LOGE("Enter [%s]", __FUNCTION__);
1160         if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
1161                 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
1162         }
1163
1164         return system_settings_add_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, (void *)value);
1165 }
1166
1167 //////////////////////////////////////////////////////////////////////////////////////////////////
1168 // del
1169 //////////////////////////////////////////////////////////////////////////////////////////////////
1170
1171 int system_settings_delete_value_string(system_settings_key_e key, const char* value)
1172 {
1173         LOGE("Enter [%s]", __FUNCTION__);
1174         if (!(key >= 0 && SYSTEM_SETTINGS_KEY_MAX > key)) {
1175                 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
1176         }
1177
1178         return system_settings_del_value(key, SYSTEM_SETTING_DATA_TYPE_STRING, (void *)value);
1179 }
1180