Add sst_font_get_type()
[platform/core/api/system-settings.git] / src / sst_interface.c
1 /*
2  * Copyright (c) 2020 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 #include "sst_interface.h"
17
18 #include <vconf.h>
19 #include "sst.h"
20 #include "sst_font.h"
21 #include "sst_misc.h"
22 #include "sst_vconf.h"
23 #include "sst_sound.h"
24 #include "sst_screen.h"
25 #include "sst_feature.h"
26 #include "sst_time_N_locale.h"
27
28 static sst_interface sst_iface_table[] = {
29         [SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE] = {
30                 SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE,
31                 VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR,
32                 SYSTEM_SETTING_DATA_TYPE_STRING,
33                 .feature_checker = sst_feature_check_incoming_call,
34                 .getter.s = sst_sound_get_call_ringtone,
35                 .setter.s = sst_sound_set_call_ringtone
36         },
37         [SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN] = {
38                 SYSTEM_SETTINGS_KEY_WALLPAPER_HOME_SCREEN,
39                 VCONFKEY_BGSET,
40                 SYSTEM_SETTING_DATA_TYPE_STRING,
41                 .feature_checker = sst_feature_check_home_screen,
42                 .getter.s = sst_vconf_get_str,
43                 .setter.s = sst_screen_set_home_wallpaper
44         },
45         [SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN] = {
46                 SYSTEM_SETTINGS_KEY_WALLPAPER_LOCK_SCREEN,
47                 VCONFKEY_IDLE_LOCK_BGSET,
48                 SYSTEM_SETTING_DATA_TYPE_STRING,
49                 .feature_checker = sst_feature_check_lock_screen,
50                 .getter.s = sst_vconf_get_str,
51                 .setter.s = sst_screen_set_lock_wallpaper
52         },
53         [SYSTEM_SETTINGS_KEY_FONT_SIZE] = {
54                 SYSTEM_SETTINGS_KEY_FONT_SIZE,
55                 VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE,
56                 SYSTEM_SETTING_DATA_TYPE_INT,
57                 .feature_checker = sst_feature_check_font,
58                 .getter.i = sst_vconf_get_int,
59                 .setter.i = sst_font_set_size
60         },
61         [SYSTEM_SETTINGS_KEY_FONT_TYPE] = {
62                 SYSTEM_SETTINGS_KEY_FONT_TYPE,
63                 VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_NAME,
64                 SYSTEM_SETTING_DATA_TYPE_STRING,
65                 .feature_checker = sst_feature_check_font,
66                 .getter.s = sst_font_get_type,
67                 .setter.s = sst_font_set_type
68         },
69         [SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION] = {
70                 SYSTEM_SETTINGS_KEY_MOTION_ACTIVATION,
71                 VCONFKEY_SETAPPL_MOTION_ACTIVATION,
72                 SYSTEM_SETTING_DATA_TYPE_BOOL,
73                 .feature_checker = NULL,
74                 .getter.b = sst_vconf_get_bool,
75                 .setter.b = sst_vconf_set_bool
76         },
77         [SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE] = {
78                 SYSTEM_SETTINGS_KEY_EMAIL_ALERT_RINGTONE,
79                 VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR,
80                 SYSTEM_SETTING_DATA_TYPE_STRING,
81                 .feature_checker = sst_feature_check_notification_email,
82                 .getter.s = sst_sound_get_email_alert,
83                 .setter.s = sst_sound_set_email_alert
84         },
85         [SYSTEM_SETTINGS_KEY_USB_DEBUGGING_ENABLED] = {
86                 SYSTEM_SETTINGS_KEY_USB_DEBUGGING_ENABLED,
87                 VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL,
88                 SYSTEM_SETTING_DATA_TYPE_BOOL,
89                 .feature_checker = NULL,
90                 .getter.b = sst_vconf_get_bool,
91                 .setter.b = sst_vconf_set_bool
92         },
93         [SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED] = {
94                 SYSTEM_SETTINGS_KEY_3G_DATA_NETWORK_ENABLED,
95                 VCONFKEY_3G_ENABLE,
96                 SYSTEM_SETTING_DATA_TYPE_BOOL,
97                 .feature_checker = NULL,
98                 .getter.b = sst_vconf_get_bool,
99                 .setter.b = sst_vconf_set_bool
100         },
101         [SYSTEM_SETTINGS_KEY_LOCKSCREEN_APP] = {
102                 SYSTEM_SETTINGS_KEY_LOCKSCREEN_APP,
103                 VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR,
104                 SYSTEM_SETTING_DATA_TYPE_STRING,
105                 .feature_checker = sst_feature_check_lock_screen,
106                 .getter.s = sst_screen_get_lockscreen,
107                 .setter.s = sst_screen_set_lockscreen
108         },
109         [SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE] = {
110                 SYSTEM_SETTINGS_KEY_DEFAULT_FONT_TYPE,
111                 NULL,
112                 SYSTEM_SETTING_DATA_TYPE_STRING,
113                 .feature_checker = sst_feature_check_font,
114                 .getter.s = sst_font_get_default_type,
115                 .setter.s = NULL
116         },
117         [SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY] = {
118                 SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY,
119                 VCONFKEY_REGIONFORMAT,
120                 SYSTEM_SETTING_DATA_TYPE_STRING,
121                 .feature_checker = NULL,
122                 .getter.s = sst_locale_get_country,
123                 .setter.s = sst_locale_set_country
124         },
125         [SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE] = {
126                 SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE,
127                 VCONFKEY_LANGSET,
128                 SYSTEM_SETTING_DATA_TYPE_STRING,
129                 .feature_checker = NULL,
130                 .getter.s = sst_locale_get_language,
131                 .setter.s = sst_locale_set_language
132         },
133         [SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR] = {
134                 SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR,
135                 VCONFKEY_REGIONFORMAT_TIME1224,
136                 SYSTEM_SETTING_DATA_TYPE_BOOL,
137                 .feature_checker = NULL,
138                 .getter.b = sst_locale_get_timeformat_24hour,
139                 .setter.b = sst_locale_set_timeformat_24hour
140         },
141         [SYSTEM_SETTINGS_KEY_LOCALE_TIMEZONE] = {
142                 SYSTEM_SETTINGS_KEY_LOCALE_TIMEZONE,
143                 VCONFKEY_SETAPPL_TIMEZONE_ID,
144                 SYSTEM_SETTING_DATA_TYPE_STRING,
145                 .feature_checker = NULL,
146                 .getter.s = sst_locale_get_timezone,
147                 .setter.s = sst_locale_set_timezone
148         },
149         [SYSTEM_SETTINGS_KEY_TIME_CHANGED] = {
150                 SYSTEM_SETTINGS_KEY_TIME_CHANGED,
151                 VCONFKEY_SYSTEM_TIME_CHANGED,
152                 SYSTEM_SETTING_DATA_TYPE_INT,
153                 .feature_checker = NULL,
154                 .getter.i = sst_time_get_changed,
155                 .setter.i = NULL
156         },
157         [SYSTEM_SETTINGS_KEY_SOUND_LOCK] = {
158                 SYSTEM_SETTINGS_KEY_SOUND_LOCK,
159                 VCONFKEY_SETAPPL_SOUND_LOCK_BOOL,
160                 SYSTEM_SETTING_DATA_TYPE_BOOL,
161                 .feature_checker = NULL,
162                 .getter.b = sst_vconf_get_bool,
163                 .setter.b = NULL
164         },
165         [SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE] = {
166                 SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE,
167                 VCONFKEY_SETAPPL_SOUND_STATUS_BOOL,
168                 SYSTEM_SETTING_DATA_TYPE_BOOL,
169                 .feature_checker = NULL,
170                 .getter.b = sst_sound_get_silent_mode,
171                 .setter.b = sst_sound_set_silent_mode
172         },
173         [SYSTEM_SETTINGS_KEY_SOUND_TOUCH] = {
174                 SYSTEM_SETTINGS_KEY_SOUND_TOUCH,
175                 VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL,
176                 SYSTEM_SETTING_DATA_TYPE_BOOL,
177                 .feature_checker = NULL,
178                 .getter.b = sst_vconf_get_bool,
179                 .setter.b = sst_vconf_set_bool
180         },
181         [SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO] = {
182                 SYSTEM_SETTINGS_KEY_DISPLAY_SCREEN_ROTATION_AUTO,
183                 VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL,
184                 SYSTEM_SETTING_DATA_TYPE_BOOL,
185                 .feature_checker = NULL,
186                 .getter.b = sst_vconf_get_bool,
187                 .setter.b = sst_vconf_set_bool
188         },
189         [SYSTEM_SETTINGS_KEY_DEVICE_NAME] = {
190                 SYSTEM_SETTINGS_KEY_DEVICE_NAME,
191                 VCONFKEY_SETAPPL_DEVICE_NAME_STR,
192                 SYSTEM_SETTING_DATA_TYPE_STRING,
193                 .feature_checker = NULL,
194                 .getter.s = sst_vconf_get_str,
195                 .setter.s = NULL
196         },
197         [SYSTEM_SETTINGS_KEY_MOTION_ENABLED] = {
198                 SYSTEM_SETTINGS_KEY_MOTION_ENABLED,
199                 VCONFKEY_SETAPPL_MOTION_ACTIVATION,
200                 SYSTEM_SETTING_DATA_TYPE_BOOL,
201                 .feature_checker = NULL,
202                 .getter.b = sst_vconf_get_bool,
203                 .setter.b = NULL
204         },
205         [SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION] = {
206                 SYSTEM_SETTINGS_KEY_NETWORK_WIFI_NOTIFICATION,
207                 VCONFKEY_WIFI_ENABLE_QS,
208                 SYSTEM_SETTING_DATA_TYPE_BOOL,
209                 .feature_checker = sst_feature_check_wifi,
210                 .getter.b = sst_misc_get_wifi_QS_noti,
211                 .setter.b = NULL
212         },
213         [SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE] = {
214                 SYSTEM_SETTINGS_KEY_NETWORK_FLIGHT_MODE,
215                 VCONFKEY_TELEPHONY_FLIGHT_MODE,
216                 SYSTEM_SETTING_DATA_TYPE_BOOL,
217                 .feature_checker = NULL,
218                 .getter.b = sst_vconf_get_bool,
219                 .setter.b = NULL
220         },
221         [SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME] = {
222                 SYSTEM_SETTINGS_KEY_SCREEN_BACKLIGHT_TIME,
223                 VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL,
224                 SYSTEM_SETTING_DATA_TYPE_INT,
225                 .feature_checker = NULL,
226                 .getter.i = sst_vconf_get_int,
227                 .setter.i = sst_screen_set_backlight_time
228         },
229         [SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION] = {
230                 SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION,
231                 VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR,
232                 SYSTEM_SETTING_DATA_TYPE_STRING,
233                 .feature_checker = sst_feature_check_incoming_call,
234                 .getter.s = sst_vconf_get_str,
235                 .setter.s = sst_sound_set_notification
236         },
237         [SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION_REPETITION_PERIOD] = {
238                 SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION_REPETITION_PERIOD,
239                 VCONFKEY_SETAPPL_NOTI_MSG_ALERT_REP_TYPE_INT,
240                 SYSTEM_SETTING_DATA_TYPE_INT,
241                 .feature_checker = NULL,
242                 .getter.i = sst_vconf_get_int,
243                 .setter.i = sst_vconf_set_int
244         },
245         [SYSTEM_SETTINGS_KEY_LOCK_STATE] = {
246                 SYSTEM_SETTINGS_KEY_LOCK_STATE,
247                 VCONFKEY_IDLE_LOCK_STATE_READ_ONLY,
248                 SYSTEM_SETTING_DATA_TYPE_INT,
249                 .feature_checker = NULL,
250                 .getter.i = sst_vconf_get_int,
251                 .setter.i = sst_vconf_set_int
252         },
253         [SYSTEM_SETTINGS_KEY_ADS_ID] = {
254                 SYSTEM_SETTINGS_KEY_ADS_ID,
255                 VCONFKEY_SETAPPL_AD_ID,
256                 SYSTEM_SETTING_DATA_TYPE_STRING,
257                 .feature_checker = NULL,
258                 .getter.s = sst_misc_get_ads_id,
259                 .setter.s = sst_misc_set_ads_id
260         },
261         [SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE] = {
262                 SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE,
263                 VCONFKEY_SETAPPL_UDSM,
264                 SYSTEM_SETTING_DATA_TYPE_INT,
265                 .feature_checker = sst_feature_check_telephony,
266                 .getter.i = sst_misc_get_uds_state,
267                 .setter.i = NULL
268         },
269         [SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE_PKG_LIST] = {
270                 SYSTEM_SETTINGS_KEY_ULTRA_DATA_SAVE_PKG_LIST,
271                 VCONFKEY_SETAPPL_UDSM_PKGID_LIST,
272                 SYSTEM_SETTING_DATA_TYPE_STRING,
273                 .feature_checker = sst_feature_check_telephony,
274                 .getter.s = NULL,
275                 .setter.s = NULL
276         },
277         [SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS] = {
278                 SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS,
279                 VCONFKEY_SETAPPL_ACCESSIBILITY_TTS,
280                 SYSTEM_SETTING_DATA_TYPE_BOOL,
281                 .feature_checker = NULL,
282                 .getter.b = sst_vconf_get_bool,
283                 .setter.b = sst_vconf_set_bool
284         },
285         [SYSTEM_SETTINGS_KEY_VIBRATION] = {
286                 SYSTEM_SETTINGS_KEY_VIBRATION,
287                 VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL,
288                 SYSTEM_SETTING_DATA_TYPE_BOOL,
289                 .feature_checker = NULL,
290                 .getter.b = sst_vconf_get_bool,
291                 .setter.b = sst_vconf_set_bool
292         },
293         [SYSTEM_SETTINGS_KEY_AUTOMATIC_TIME_UPDATE] = {
294                 SYSTEM_SETTINGS_KEY_AUTOMATIC_TIME_UPDATE,
295                 VCONFKEY_SETAPPL_STATE_AUTOMATIC_TIME_UPDATE_BOOL,
296                 SYSTEM_SETTING_DATA_TYPE_BOOL,
297                 .feature_checker = sst_feature_check_telephony,
298                 .getter.b = sst_vconf_get_bool,
299                 .setter.b = sst_vconf_set_bool
300         },
301         [SYSTEM_SETTINGS_KEY_DEVELOPER_OPTION_STATE] = {
302                 SYSTEM_SETTINGS_KEY_DEVELOPER_OPTION_STATE,
303                 VCONFKEY_SETAPPL_DEVELOPER_OPTION_STATE,
304                 SYSTEM_SETTING_DATA_TYPE_BOOL,
305                 .feature_checker = NULL,
306                 .getter.b = sst_vconf_get_bool,
307                 .setter.b = sst_vconf_set_bool
308         },
309         [SYSTEM_SETTINGS_KEY_ACCESSIBILITY_GRAYSCALE] = {
310                 SYSTEM_SETTINGS_KEY_ACCESSIBILITY_GRAYSCALE,
311                 VCONFKEY_SETAPPL_ACCESSIBILITY_GREYSCALE,
312                 SYSTEM_SETTING_DATA_TYPE_BOOL,
313                 .feature_checker = sst_feature_check_accessibility_grayscale,
314                 .getter.b = sst_vconf_get_bool,
315                 .setter.b = sst_vconf_set_bool
316         },
317         [SYSTEM_SETTINGS_KEY_ACCESSIBILITY_NEGATIVE_COLOR] = {
318                 SYSTEM_SETTINGS_KEY_ACCESSIBILITY_NEGATIVE_COLOR,
319                 VCONFKEY_SETAPPL_ACCESSIBILITY_HIGH_CONTRAST,
320                 SYSTEM_SETTING_DATA_TYPE_BOOL,
321                 .feature_checker = sst_feature_check_accessibility_negative,
322                 .getter.b = sst_vconf_get_bool,
323                 .setter.b = sst_vconf_set_bool
324         },
325         [SYSTEM_SETTINGS_KEY_ROTARY_EVENT_ENABLED] = {
326                 SYSTEM_SETTINGS_KEY_ROTARY_EVENT_ENABLED,
327                 VCONFKEY_SETAPPL_ROTARY_EVENT_ENABLED_BOOL,
328                 SYSTEM_SETTING_DATA_TYPE_BOOL,
329                 .feature_checker = sst_feature_check_rotary,
330                 .getter.b = sst_vconf_get_bool,
331                 .setter.b = sst_vconf_set_bool
332         }
333 };
334
335 int sst_get_interface(system_settings_key_e key, sst_interface **iface)
336 {
337         RETVM_IF(key < 0 || SYSTEM_SETTINGS_KEY_MAX <= key,
338                 SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, "Invalid Key(%d)", key);
339
340         if (sst_iface_table[key].key != key) {
341                 ERR("Invalid interface for key(%d)", key);
342                 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
343         }
344
345         if (sst_iface_table[key].feature_checker) {
346                 int ret = sst_iface_table[key].feature_checker(iface);
347                 if (SYSTEM_SETTINGS_ERROR_NONE != ret) {
348                         ERR("feature_checker(%d) Fail(%d)", key, ret);
349                         return ret;
350                 }
351         }
352
353         *iface = &sst_iface_table[key];
354         INFO("key = %d, type = %d", key, (*iface)->data_type);
355
356         return SYSTEM_SETTINGS_ERROR_NONE;
357 }