Disable brightness, screen timeout and font conditionally 93/216893/4
authorLukasz Stanislawski <l.stanislaws@samsung.com>
Mon, 4 Nov 2019 12:27:40 +0000 (13:27 +0100)
committerLukasz Stanislawski <l.stanislaws@samsung.com>
Tue, 5 Nov 2019 13:52:03 +0000 (14:52 +0100)
Change-Id: I4542e3af2fd89b79b5658b4386ffdda976a7255d

setting-display/CMakeLists.txt
setting-display/src/setting-display-brightness.c
setting-display/src/setting-display-main.c

index a67e5922fe5262c587194354d8d24aa01b7b0139..ca56b436d8c0a18cf3f9aab3c20b33376fa76807 100755 (executable)
@@ -12,6 +12,7 @@ pkg_check_modules(pkgs_display REQUIRED elementary
                                capi-system-device
                                efl-extension
                                capi-system-system-settings
+                               capi-system-info
                                libtzplatform-config
                                dpm
                                vconf
index e907209042b678e0e9df0bf4b5c79712b60d871b..88daba0bcb08c2d50f1e07795eee2ab6b6c5fc0c 100755 (executable)
@@ -41,6 +41,8 @@ void setting_display_update_slider_icon(Setting_GenGroupItem_Data *item_data,
 static void setting_display_set_slider_value(void *data, Evas_Object *obj,
                double value);
 
+static bool setting_display_brightness_change_is_supported();
+
 /* ***************************************************
  *
  *basic func
@@ -722,7 +724,8 @@ void construct_brightness(void *data, Evas_Object *genlist)
                                        display_get_max_brightness();
                }
                ad->data_br_sli->userdata = ad;
-
+               if (!setting_display_brightness_change_is_supported())
+                       elm_object_item_disabled_set(ad->data_br_sli->item, EINA_TRUE);
                __BACK_POINTER_SET(ad->data_br_sli);
        } else {
                SETTING_TRACE_ERROR("ad->data_br_sli is NULL");
@@ -854,3 +857,22 @@ setting_display_birghtness_bright_slider_value_change_cb(
                }
        }
 }
+
+/**
+ * @brief Indicate if changing brightness feature is supported on platform.
+ *
+ * @note Currently there is no decent API to check if changing brightness is
+ * supported. For now we workaround this by checking for hdmi connection.
+ * If hdmi is connected we assume the brightness cannot be changed using Tizen API,
+ * in other cases we assume it is possible.
+ */
+static bool setting_display_brightness_change_is_supported()
+{
+       int hdmi_connected;
+       int err = vconf_get_int(VCONFKEY_SYSMAN_HDMI, &hdmi_connected);
+       if (err != 0) {
+               SETTING_TRACE_ERROR("vconf_get_int failed for VCONFKEY_SYSMAN_HDMI");
+               return false;
+       }
+       return hdmi_connected == VCONFKEY_SYSMAN_HDMI_DISCONNECTED;
+}
index 64ac16b3b5e1061aebe9e72ff17e8bb33b086f62..18239277348a61ae799860f469be73ffab177236 100755 (executable)
@@ -22,6 +22,7 @@
 #include <device/battery.h>
 #include <system_settings.h>
 #include <dpm/password.h>
+#include <system_info.h>
 
 #include "setting-display-main.h"
 #include "setting-common-draw-widget.h"
@@ -47,6 +48,8 @@ static bool _get_battery_lvl_less_than_low(void);
 static int setting_display_main_create(void *cb);
 static int setting_display_main_destroy(void *cb);
 static int setting_display_main_update(void *cb);
+static bool setting_display_screen_timeout_change_is_supported();
+static bool setting_display_font_change_is_supported();
 
 setting_view setting_view_display_main = {
        .create = setting_display_main_create,
@@ -360,7 +363,10 @@ static int setting_display_main_create(void *cb)
        construct_brightness(ad, ad->md.genlist);
 
        /* FONT */
-       _get_font_name_string(font_name_string, NAME_MAX);
+       if (setting_display_font_change_is_supported())
+               _get_font_name_string(font_name_string, NAME_MAX);
+       else
+               snprintf(font_name_string, NAME_MAX, "%s", _("IDS_MSGF_POP_UNSUPPORTED"));
        ad->data_font = setting_create_Gendial_field_def(
                        ad->md.genlist, &(ad->itc_1text),
                        setting_display_main_mouse_up_Gendial_list_cb,
@@ -368,6 +374,8 @@ static int setting_display_main_create(void *cb)
                        NULL, 0, KeyStr_Font,
                        font_name_string, NULL);
        if (ad->data_font) {
+               if (!setting_display_font_change_is_supported())
+                       elm_object_item_disabled_set(ad->data_font->item, EINA_TRUE);
                ad->data_font->userdata = ad;
                __BACK_POINTER_SET(ad->data_font);
        } else {
@@ -375,7 +383,10 @@ static int setting_display_main_create(void *cb)
        }
 
        /* BACKLIGHTTIME */
-       pa_backlight_time = get_pa_backlight_time_str();
+       if (setting_display_screen_timeout_change_is_supported())
+               pa_backlight_time = get_pa_backlight_time_str();
+       else
+               pa_backlight_time = g_strdup(_("IDS_MSGF_POP_UNSUPPORTED"));
        ad->data_back =
                setting_create_Gendial_field_def(
                                ad->md.genlist,
@@ -390,6 +401,8 @@ static int setting_display_main_create(void *cb)
        if (ad->data_back) {
                ad->data_back->int_slp_setting_binded =
                                INT_SLP_SETTING_LCD_TIMEOUT_NORMAL;
+               if (!setting_display_screen_timeout_change_is_supported())
+                       elm_object_item_disabled_set(ad->data_back->item, EINA_TRUE);
                __BACK_POINTER_SET(ad->data_back);
        } else {
                SETTING_TRACE_ERROR("ad->data_back is NULL");
@@ -574,3 +587,34 @@ static void setting_display_main_click_softkey_back_cb(
 {
        ui_app_exit();
 }
+
+/**
+ * @brief Indicate if changing screen timeout feature is supported on platform.
+ *
+ * @note Currently there is no decent API to check if changing screen timeout is
+ * supported. For now we workaround this by checking for hdmi connection.
+ * If hdmi is connected we assume the timeout cannot be changed using Tizen API,
+ * in other cases we assume it is possible.
+ */
+static bool setting_display_screen_timeout_change_is_supported()
+{
+       int hdmi_connected;
+       int err = vconf_get_int(VCONFKEY_SYSMAN_HDMI, &hdmi_connected);
+       if (err != 0) {
+               SETTING_TRACE_ERROR("vconf_get_int failed for VCONFKEY_SYSMAN_HDMI");
+               return false;
+       }
+       return hdmi_connected == VCONFKEY_SYSMAN_HDMI_DISCONNECTED;
+}
+
+static bool setting_display_font_change_is_supported()
+{
+       bool value;
+       int err = system_info_get_platform_bool("http://tizen.org/feature/systemsetting.font", &value);
+       if (err != TIZEN_ERROR_NONE) {
+               SETTING_TRACE_ERROR("system_info_get_platform_bool failed for http://tizen.org/feature/systemsetting.font: %s", get_error_message(err));
+               return false;
+       }
+       SETTING_TRACE_ERROR("http://tizen.org/feature/systemsetting.font: %d", value);
+       return value;
+}