2 * Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
16 #include "sst_interface.h"
23 #include "sst_vconf.h"
24 #include "sst_screen.h"
25 #include "sst_feature.h"
26 #include "sst_ringtones.h"
27 #include "sst_time_N_locale.h"
29 #define SYSTEM_SETTINGS_MAX -1
31 struct _system_setting_s system_setting_table[] = {
33 SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE,
34 VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR,
35 SYSTEM_SETTING_DATA_TYPE_STRING,
36 sst_ringtone_get_incoming_call,
37 sst_ringtone_set_incoming_call,
38 sst_ringtone_add_incoming_call, /* ADD */
39 sst_ringtone_del_incoming_call, /* DEL */
40 sst_ringtone_list_incoming_call, /* LIST */
41 sst_feature_check_incoming_call, /* feature check */
45 SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN,
47 SYSTEM_SETTING_DATA_TYPE_STRING,
49 sst_screen_set_home_wallpaper,
53 sst_feature_check_home_screen, /* feature check */
57 SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN,
58 VCONFKEY_IDLE_LOCK_BGSET,
59 SYSTEM_SETTING_DATA_TYPE_STRING,
61 sst_screen_set_lock_wallpaper,
65 sst_feature_check_lock_screen, /* feature check */
69 SYSTEM_SETTINGS_KEY_FONT_SIZE,
70 VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE,
71 SYSTEM_SETTING_DATA_TYPE_INT,
77 sst_feature_check_font, /* feature check */
81 SYSTEM_SETTINGS_KEY_FONT_TYPE,
82 VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_NAME,
83 SYSTEM_SETTING_DATA_TYPE_STRING,
89 sst_feature_check_font, /* feature check */
93 SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION,
94 VCONFKEY_SETAPPL_MOTION_ACTIVATION,
95 SYSTEM_SETTING_DATA_TYPE_BOOL,
101 NULL, /* feature check */
105 SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE,
106 VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR,
107 SYSTEM_SETTING_DATA_TYPE_STRING,
108 sst_ringtone_get_email_alert,
109 sst_ringtone_set_email_alert,
113 sst_feature_check_notification_email, /* feature check */
116 SYSTEM_SETTINGS_KEY_USB_DEBUGGING_ENABLED,
117 VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL,
118 SYSTEM_SETTING_DATA_TYPE_BOOL,
124 NULL, /* feature check */
127 SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED,
129 SYSTEM_SETTING_DATA_TYPE_BOOL,
135 NULL, /* feature check */
138 // -5, NULL, -1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, { NULL, 0 }, NULL
141 SYSTEM_SETTINGS_KEY_LOCKSCREEN_APP,
142 VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR,
143 SYSTEM_SETTING_DATA_TYPE_STRING,
144 sst_screen_get_lockscreen,
145 sst_screen_set_lockscreen,
149 sst_feature_check_lock_screen, /* feature check */
152 SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE,
154 SYSTEM_SETTING_DATA_TYPE_STRING,
155 sst_font_get_default_type,
160 sst_feature_check_font, /* feature check */
163 SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY,
164 VCONFKEY_REGIONFORMAT,
165 SYSTEM_SETTING_DATA_TYPE_STRING,
166 sst_locale_get_country,
167 sst_locale_set_country,
171 NULL, /* feature check */
174 SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE,
176 SYSTEM_SETTING_DATA_TYPE_STRING,
177 sst_locale_get_language,
178 sst_locale_set_language,
182 NULL, /* feature check */
185 SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR,
186 VCONFKEY_REGIONFORMAT_TIME1224,
187 SYSTEM_SETTING_DATA_TYPE_BOOL,
188 sst_locale_get_timeformat_24hour,
189 sst_locale_set_timeformat_24hour,
193 NULL, /* feature check */
196 SYSTEM_SETTINGS_KEY_LOCALE_TIMEZONE,
197 VCONFKEY_SETAPPL_TIMEZONE_ID,
198 SYSTEM_SETTING_DATA_TYPE_STRING,
199 sst_locale_get_timezone,
200 sst_locale_set_timezone,
204 NULL, /* feature check */
207 SYSTEM_SETTINGS_KEY_TIME_CHANGED,
208 VCONFKEY_SYSTEM_TIME_CHANGED,
209 SYSTEM_SETTING_DATA_TYPE_INT,
210 sst_time_get_changed,
215 NULL, /* feature check */
218 SYSTEM_SETTINGS_KEY_SOUND_LOCK,
219 VCONFKEY_SETAPPL_SOUND_LOCK_BOOL,
220 SYSTEM_SETTING_DATA_TYPE_BOOL,
226 NULL, /* feature check */
229 SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE,
230 VCONFKEY_SETAPPL_SOUND_STATUS_BOOL,
231 SYSTEM_SETTING_DATA_TYPE_BOOL,
232 sst_get_sound_silent_mode,
233 sst_set_sound_silent_mode,
237 NULL, /* feature check */
240 SYSTEM_SETTINGS_KEY_SOUND_TOUCH,
241 VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL,
242 SYSTEM_SETTING_DATA_TYPE_BOOL,
248 NULL, /* feature check */
251 SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO,
252 VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL,
253 SYSTEM_SETTING_DATA_TYPE_BOOL,
259 NULL, /* feature check */
262 SYSTEM_SETTINGS_KEY_DEVICE_NAME,
263 VCONFKEY_SETAPPL_DEVICE_NAME_STR,
264 SYSTEM_SETTING_DATA_TYPE_STRING,
270 NULL, /* feature check */
273 SYSTEM_SETTINGS_KEY_MOTION_ENABLED,
274 VCONFKEY_SETAPPL_MOTION_ACTIVATION,
275 SYSTEM_SETTING_DATA_TYPE_BOOL,
281 NULL, /* feature check */
284 SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION,
285 VCONFKEY_WIFI_ENABLE_QS,
286 SYSTEM_SETTING_DATA_TYPE_BOOL,
287 sst_get_network_wifi_notification,
292 sst_feature_check_wifi, /* feature check */
295 SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE,
296 VCONFKEY_TELEPHONY_FLIGHT_MODE,
297 SYSTEM_SETTING_DATA_TYPE_BOOL,
303 NULL, /* feature check */
306 SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME,
307 VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL,
308 SYSTEM_SETTING_DATA_TYPE_INT,
310 sst_screen_set_backlight_time,
314 NULL, /* feature check */
317 SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION,
318 VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR,
319 SYSTEM_SETTING_DATA_TYPE_STRING,
321 sst_set_sound_notification,
325 sst_feature_check_incoming_call, /* feature check */
328 SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION_REPETITION_PERIOD,
329 VCONFKEY_SETAPPL_NOTI_MSG_ALERT_REP_TYPE_INT,
330 SYSTEM_SETTING_DATA_TYPE_INT,
336 NULL, /* feature check */
339 SYSTEM_SETTINGS_KEY_LOCK_STATE,
340 VCONFKEY_IDLE_LOCK_STATE_READ_ONLY,
341 SYSTEM_SETTING_DATA_TYPE_INT,
347 NULL, /* feature check */
350 SYSTEM_SETTINGS_KEY_ADS_ID,
351 VCONFKEY_SETAPPL_AD_ID,
352 SYSTEM_SETTING_DATA_TYPE_STRING,
358 NULL, /* feature check */
362 SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE,
363 VCONFKEY_SETAPPL_UDSM,
364 SYSTEM_SETTING_DATA_TYPE_INT,
370 sst_feature_check_telephony, /* feature check */
373 SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE_PKG_LIST,
374 VCONFKEY_SETAPPL_UDSM_PKGID_LIST,
375 SYSTEM_SETTING_DATA_TYPE_STRING,
381 sst_feature_check_telephony, /* feature check */
384 SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS,
385 VCONFKEY_SETAPPL_ACCESSIBILITY_TTS,
386 SYSTEM_SETTING_DATA_TYPE_BOOL,
392 NULL, /* feature check */
395 SYSTEM_SETTINGS_KEY_VIBRATION,
396 VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL,
397 SYSTEM_SETTING_DATA_TYPE_BOOL,
403 NULL, /* feature check */
406 SYSTEM_SETTINGS_KEY_AUTOMATIC_TIME_UPDATE,
407 VCONFKEY_SETAPPL_STATE_AUTOMATIC_TIME_UPDATE_BOOL,
408 SYSTEM_SETTING_DATA_TYPE_BOOL,
414 sst_feature_check_telephony, /* feature check */
417 SYSTEM_SETTINGS_KEY_DEVELOPER_OPTION_STATE,
418 VCONFKEY_SETAPPL_DEVELOPER_OPTION_STATE,
419 SYSTEM_SETTING_DATA_TYPE_BOOL,
425 NULL, /* feature check */
428 SYSTEM_SETTINGS_KEY_ACCESSIBILITY_GRAYSCALE,
429 VCONFKEY_SETAPPL_ACCESSIBILITY_GREYSCALE,
430 SYSTEM_SETTING_DATA_TYPE_BOOL,
436 sst_feature_check_accessibility_grayscale, /* feature check */
439 SYSTEM_SETTINGS_KEY_ACCESSIBILITY_NEGATIVE_COLOR,
440 VCONFKEY_SETAPPL_ACCESSIBILITY_HIGH_CONTRAST,
441 SYSTEM_SETTING_DATA_TYPE_BOOL,
447 sst_feature_check_accessibility_negative, /* feature check */
450 SYSTEM_SETTINGS_KEY_ROTARY_EVENT_ENABLED,
451 VCONFKEY_SETAPPL_ROTARY_EVENT_ENABLED_BOOL,
452 SYSTEM_SETTING_DATA_TYPE_BOOL,
458 sst_feature_check_rotary, /* feature check */
461 SYSTEM_SETTINGS_MAX, NULL, -1, NULL, NULL, NULL, NULL, NULL, NULL
465 static int _search_item(system_settings_key_e key)
468 int end = SYSTEM_SETTINGS_KEY_MAX;
470 while (start <= end) {
471 int mid = (start + end) / 2;
472 if (system_setting_table[mid].key == key)
474 else if (system_setting_table[mid].key < key)
480 ERR("key=%d, Can NOT find the key", key);
484 int sst_get_interface(system_settings_key_e key, sst_interface **iface)
487 RETVM_IF(key < 0 || SYSTEM_SETTINGS_KEY_MAX <= key,
488 SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, "Invalid Key(%d)", key);
490 int idx = _search_item(key);
492 ERR("Unknown key(%d)", key);
493 return TIZEN_ERROR_INVALID_PARAMETER;
496 if (system_setting_table[idx].feature_check_cb != NULL) {
497 int ret = system_setting_table[idx].feature_check_cb(iface);
498 if (SYSTEM_SETTINGS_ERROR_NONE != ret) {
499 ERR("feature_check_cb(%d) Fail(%d)", key, ret);
504 *iface = &system_setting_table[idx];
505 INFO("key = %d, type = %d", key, (*iface)->data_type);
507 return SYSTEM_SETTINGS_ERROR_NONE;