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_screen.h"
19 #include <pkgmgr-info.h>
22 #include "sst_vconf.h"
23 #include "sst_exclusive.h"
24 #include "sst_utils_wrapper.h"
26 int sst_screen_set_backlight_time(sst_interface *iface, void *value)
28 int *vconf_value = *(int **)value;
30 if (*vconf_value <= 0 || 600 < *vconf_value) {
31 ERR("Invalid Value(%d)", *vconf_value);
32 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
35 if (vconf_set_int(iface->vconf_key, *vconf_value)) {
36 ERR("vconf_set_int(%s, %d) Fail", iface->vconf_key, *vconf_value);
37 return SYSTEM_SETTINGS_ERROR_IO_ERROR;
40 return SYSTEM_SETTINGS_ERROR_NONE;
43 int sst_screen_set_home_wallpaper(sst_interface *iface, void *value)
45 char *vconf_value = value;
47 bool valid = sstu_is_valid_image(vconf_value);
49 ERR("Invalid image file(%s)", vconf_value);
50 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
53 return sst_excl_set_wallpaper(iface->vconf_key, vconf_value);
56 int sst_screen_set_lock_wallpaper(sst_interface *iface, void *value)
58 char *vconf_value = value;
60 bool valid = sstu_is_valid_image(vconf_value);
62 ERR("Invalid image file(%s)", vconf_value);
63 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
66 if (vconf_set_str(iface->vconf_key, vconf_value)) {
67 ERR("vconf_set_str(%s, %s) Fail", iface->vconf_key, vconf_value);
68 return SYSTEM_SETTINGS_ERROR_IO_ERROR;
71 return SYSTEM_SETTINGS_ERROR_NONE;
74 static int _category_func(const char *name, void *user_data)
76 const char *category = "lock-screen";
77 bool *found = user_data;
79 RETV_IF(NULL == name, PMINFO_R_OK);
81 if (SST_EQUAL == strcmp(name, category)) {
83 return PMINFO_R_ERROR; //not Error. It stops iteration.
85 DBG("Unexpeced category(%s)", name);
94 * set 'swipe type' if current lockscreen app is 'com.samsung.lockscreen'
97 int sst_screen_set_lockscreen(sst_interface *iface, void *value)
100 char *app_id = value; //ex) com.samsung.lockscreen
102 RETV_IF(NULL == value, SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER);
104 pkgmgrinfo_appinfo_h handle = NULL;
105 ret = pkgmgrinfo_appinfo_get_appinfo(app_id, &handle);
106 if (PMINFO_R_OK != ret) {
107 ERR("pkgmgrinfo_appinfo_get_appinfo(%s) Fail(%d)", app_id, ret);
108 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
111 bool is_lock_screen = false;
112 ret = pkgmgrinfo_appinfo_foreach_category(handle, _category_func, &is_lock_screen);
113 if (ret != PMINFO_R_OK) {
114 ERR("pkgmgrinfo_appinfo_foreach_category() Fail(%d)", ret);
115 pkgmgrinfo_appinfo_destroy_appinfo(handle);
116 return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
118 pkgmgrinfo_appinfo_destroy_appinfo(handle);
120 if (false == is_lock_screen) {
121 ERR("Invalid Application(%s)", app_id);
122 //Todo: It should be enable.
123 //return SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER;
127 if (vconf_get_int(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, &locktype)) {
128 ERR("vconf_get_int(lock_type) Fail");
129 return SYSTEM_SETTINGS_ERROR_IO_ERROR;
132 if (locktype == SETTING_SCREEN_LOCK_TYPE_PASSWORD) {
133 ERR("Unsupported lock type");
134 return SYSTEM_SETTINGS_ERROR_LOCKSCREEN_APP_PASSWORD_MODE;
137 if (vconf_set_str(VCONFKEY_SETAPPL_3RD_LOCK_PKG_NAME_STR, app_id)) {
138 ERR("vconf_set_str(3rd lock pkg) Fail");
139 return SYSTEM_SETTINGS_ERROR_IO_ERROR;
142 if (SST_EQUAL == strcmp(app_id, "com.samsung.lockscreen")) {
143 const char *lock_type_key = VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT;
144 if (vconf_set_int(lock_type_key, SETTING_SCREEN_LOCK_TYPE_SWIPE)) {
145 ERR("vconf_set_int(%s) Fail", lock_type_key);
146 return SYSTEM_SETTINGS_ERROR_IO_ERROR;
149 return SYSTEM_SETTINGS_ERROR_NONE;
152 int sst_screen_get_lockscreen(sst_interface *iface, void **value)
154 char *pkg_name = NULL;
157 if (vconf_get_int(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, &locktype)) {
158 ERR("vconf_get_int(lock_type) Fail");
159 return SYSTEM_SETTINGS_ERROR_IO_ERROR;
162 if (sst_vconf_get_string(iface->vconf_key, &pkg_name)) {
163 ERR("sst_vconf_get_string(%s) Fail", iface->vconf_key);
164 return SYSTEM_SETTINGS_ERROR_IO_ERROR;
167 if (SST_EQUAL == strcmp(pkg_name, "com.samsung.lockscreen")
168 && locktype == SETTING_SCREEN_LOCK_TYPE_PASSWORD) {
169 //if current lock type is 'password', return SYSTEM_SETTINGS_ERROR_LOCKSCREEN_APP_PASSWORD_MODE
171 return SYSTEM_SETTINGS_ERROR_LOCKSCREEN_APP_PASSWORD_MODE;
175 return SYSTEM_SETTINGS_ERROR_NONE;