屏幕与亮度功能完成,还差开机读取保存的配置的信息,需要实现全局的config类
authorluozheng <1732036298@qq.com>
Mon, 26 Feb 2024 11:49:01 +0000 (19:49 +0800)
committerluozheng <1732036298@qq.com>
Mon, 26 Feb 2024 11:49:01 +0000 (19:49 +0800)
code/sdk/application/wearable/fd230app/nativeui/displaybrightness/include/BrightnessControlView.h
code/sdk/application/wearable/fd230app/nativeui/displaybrightness/include/DisplayBrightnessModel.h
code/sdk/application/wearable/fd230app/nativeui/displaybrightness/include/DisplayBrightnessPresenter.h
code/sdk/application/wearable/fd230app/nativeui/displaybrightness/include/ScreenDurationView.h
code/sdk/application/wearable/fd230app/nativeui/displaybrightness/src/BrightnessControlView.cpp
code/sdk/application/wearable/fd230app/nativeui/displaybrightness/src/DisplayBrightnessModel.cpp
code/sdk/application/wearable/fd230app/nativeui/displaybrightness/src/DisplayBrightnessPresent.cpp
code/sdk/application/wearable/fd230app/nativeui/displaybrightness/src/DisplayBrightnessView.cpp
code/sdk/application/wearable/fd230app/nativeui/displaybrightness/src/ScreenDurationView.cpp
code/sdk/application/wearable/service/power_manager/src/power_display_service.c

index e2458cd..f69f88b 100644 (file)
@@ -8,8 +8,8 @@
 #include "components/ui_image_view.h"\r
 namespace OHOS\r
 {\r
-#define BRIGHTNESS_MIN 0\r
-#define BRIGHTNESS_MAX 100\r
+#define BRIGHTNESS_MIN 51\r
+#define BRIGHTNESS_MAX 0xff\r
 #define BRIGHTNESS_PROGRESS "progress"\r
 \r
     static const char *BRIGHTNESS_CONTROL_SLIDER = "BrightnessControlViewSlider";\r
@@ -22,7 +22,9 @@ namespace OHOS
         static BrightnessControlView *GetInstance(void);\r
         UIScrollView *BrightnessControlViewInit(void);\r
         void ClearAll(void);\r
-\r
+        UISlider *GetBrightnessControlViewSlider(void);\r
+        int16_t CurrentBrightnessValue{0}; // 当前亮度值\r
+        void SetScreenBrightnessValue(unsigned char value);\r
     private:\r
         bool SetUpScrollView(void);\r
         bool SetUpSlider(void);\r
index 89fd6f7..a06e95e 100644 (file)
@@ -8,7 +8,12 @@ namespace OHOS
     public:\r
         static DisplayBrightnessModel *GetInstance(void);\r
         void SetRaiseToBrightnessCheckBoxButtonStatus(bool value);\r
-        bool DisplayBrightnessViewAndSubViewComponentsStatusInit();\r
+        bool RaiseToBrightnessCheckBoxButtonStatusInit(void);\r
+        void KeepScreenBrightnessValues(unsigned char value);\r
+        bool BrightnessControlViewSliderValuesInit(void);\r
+        void KeepScreenDurationRadioButtonSlectStatus(unsigned int value);\r
+        bool ScreenDurationRadioButtonSlectStatusInit(void);\r
+\r
     private:\r
         DisplayBrightnessModel();\r
         DisplayBrightnessModel(const DisplayBrightnessModel &);\r
@@ -16,7 +21,9 @@ namespace OHOS
         virtual ~DisplayBrightnessModel();\r
 \r
     private:\r
-        bool RaiseToBrightnessCheckBoxButtonState{false}; //抬腕按钮状态\r
+        bool RaiseToBrightnessCheckBoxButtonState{false};    // 抬腕按钮状态 ,默认补选中\r
+        unsigned char ScreenBrightnessValue{255};            // 亮度值 ,默认最大亮度\r
+        unsigned int ScreenDurationRadioButtonSlectValue{1}; // 亮屏时长 ,1对应10秒后熄屏\r
     };\r
 }\r
 \r
index 8f2c468..858b97e 100644 (file)
@@ -4,6 +4,7 @@
 /*显示与亮度*/\r
 #include "Presenter.h"\r
 #include "DisplayBrightnessView.h"\r
+#include "components/ui_slider.h"\r
 \r
 namespace OHOS\r
 {\r
@@ -15,6 +16,29 @@ namespace OHOS
         MAX_DISPLAYBRIGHTNESSVIEWID,\r
     } DISPLAYBRIGHTNESSVIEWID;\r
 \r
+    /// @brief 亮度状态改变\r
+    typedef enum : uint8_t\r
+    {\r
+        BRIGHTNESSLOWERS = 0, // 亮度降低\r
+        BRIGHTNESSEVATED = 1, // 亮度增加\r
+        BRIGHTNESSDRAG = 2,   // 亮度拖动状态\r
+    } BrightnessChangeStatus;\r
+\r
+    /// @brief 亮屏时长\r
+    typedef enum : uint32_t\r
+    {\r
+        SCREENDURATIONFIVE = 1000 * 5,       // 5秒后熄屏\r
+        SCREENDURATIONTEN = 1000 * 10,       // 10秒后熄屏\r
+        SCREENDURATIONFIFTEENTH = 1000 * 15, // 15秒后熄屏\r
+    } ScreenDurationTime;\r
+\r
+    typedef enum\r
+    {\r
+        ScreenDurationRadioButton1 = 0,\r
+        ScreenDurationRadioButton2,\r
+        ScreenDurationRadioButton3,\r
+    } ScreenDurationRadioButton;\r
+\r
     static const char *BRINGHTNESSCONTROLBUTTON_VIEW = "BRINGHTNESSCONTROLBUTTON";                 // 亮度调节按钮视图id\r
     static const char *SCREENDURATIONBUTTON_VIEWID = "SCREENDURATIONBUTTON";                       // 亮屏时长按钮视图id\r
     static const char *RAISETOBRIGHTNESSCHECKBOXBUTTON_VIEWID = "RAISETOBRIGHTNESSCHECKBOXBUTTON"; // 抬腕亮屏checkbox按钮视图id\r
@@ -23,6 +47,24 @@ namespace OHOS
     static const char *SCREENDURATION_TENSECONDS_VIEWID = "SCREENDURATION_TENSECONDS";         // 10秒时长\r
     static const char *SCREENDURATION_FIFTEENSECONDS_VIEWID = "SCREENDURATION_FIFTEENSECONDS"; // 15秒时长\r
 \r
+    class BrightnessSliderEventListener : public UISlider::UISliderEventListener,\r
+                                          public UIView::OnClickListener,\r
+                                          public UIView::OnDragListener\r
+    {\r
+    public:\r
+        BrightnessSliderEventListener();\r
+        ~BrightnessSliderEventListener();\r
+        static BrightnessSliderEventListener *GetInstance(void);\r
+        void ChangeBrightness(uint8_t status, uint8_t value);\r
+        void OnChange(int32_t value) override;\r
+        void OnRelease(int32_t value) override;\r
+        bool OnClick(UIView &view, const ClickEvent &event) override;\r
+        bool OnDrag(UIView &view, const DragEvent &event) override;\r
+\r
+    private:\r
+        int32_t BrightnessValue; // 亮度值\r
+    };\r
+\r
     class ScreenDurationRadiobuttonOnChangeListener : public UICheckBox::OnChangeListener\r
     {\r
     public:\r
@@ -54,6 +96,8 @@ namespace OHOS
 \r
         static DisplayBrightnessPresenter *GetInstance();\r
         void SetRaiseToBrightnessState(bool value);\r
+        void SetScreenBrightnessValues(unsigned char value);\r
+        void SetScreenDurationRadioButtonSlectStatus(uint32_t value);\r
 \r
     private:\r
         // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;\r
index e26e899..786d559 100644 (file)
@@ -47,7 +47,7 @@ namespace OHOS
         UIScrollView *ScreenDurationViewInit(void);\r
         void ClearAll(void);\r
         UIRadioButton *GetRadioButton(int16_t i);\r
-\r
+        void SetRadioButtonSelectStatus(int16_t i);\r
     private:\r
         UIImageView *SetUpImageView(ImageConfig &imageconfig);                 // 设置图片\r
         UILabel *SetUpLabel(LabelConfig &labelconfig);                         // 设置标签\r
@@ -61,6 +61,7 @@ namespace OHOS
         UILabel *ScreenDurationLabel[3]{nullptr};             // 亮屏时长标签\r
         UIImageView *BackGroundImage[3]{nullptr};             // 放置组件的背景\r
         UIRadioButton *ScreenDurationRadioButton[3]{nullptr}; // 三个单选框\r
+        UICheckBox::OnChangeListener *SimplifiedChineseRadioButtonChange[3]{nullptr};\r
         bool initViewStatus{false};\r
     };\r
 } // namespace OHOS\r
index 1ef39dc..d400d0b 100644 (file)
@@ -1,5 +1,6 @@
 #include "displaybrightness/include/BrightnessControlView.h"\r
 #include "displaybrightness/include/DisplayBrightnessPresenter.h"\r
+#include "displaybrightness/include/DisplayBrightnessModel.h"\r
 #include "wearable_log.h"\r
 namespace OHOS\r
 {\r
@@ -28,6 +29,9 @@ namespace OHOS
         {\r
             BrightnessControlScrollView->RemoveAll();\r
 \r
+            unsigned char value = BrightnessControlViewSlider->GetValue();\r
+            DisplayBrightnessModel::GetInstance()->KeepScreenBrightnessValues(value);\r
+\r
             delete BrightnessControlViewSlider;\r
             BrightnessControlViewSlider = nullptr;\r
 \r
@@ -81,6 +85,20 @@ namespace OHOS
         BrightnessControlViewSlider->SetForegroundStyle(STYLE_LINE_CAP, CapType::CAP_ROUND);\r
         BrightnessControlViewSlider->SetSliderColor(Color::GetColorFromRGBA(0x19, 0x19, 0x19, 0xff), Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0xff));\r
         BrightnessControlViewSlider->SetForegroundStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+\r
+        BrightnessSliderEventListener *listener = nullptr;\r
+        if (listener == nullptr)\r
+        {\r
+            listener = new BrightnessSliderEventListener();\r
+            if (listener == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Listener new fail!");\r
+                return false;\r
+            }\r
+        }\r
+        BrightnessControlViewSlider->SetSliderEventListener(listener);\r
+        BrightnessControlViewSlider->SetOnClickListener(listener);\r
+        BrightnessControlViewSlider->SetOnDragListener(listener);\r
         BrightnessControlViewSlider->SetKnobStyle(StyleDefault::GetSliderKnobStyle());\r
         return true;\r
     }\r
@@ -99,6 +117,16 @@ namespace OHOS
         return true;\r
     }\r
 \r
+    UISlider *BrightnessControlView::GetBrightnessControlViewSlider(void)\r
+    {\r
+        return BrightnessControlViewSlider;\r
+    }\r
+\r
+    void BrightnessControlView::SetScreenBrightnessValue(unsigned char value)\r
+    {\r
+        BrightnessControlViewSlider->SetValue(value);\r
+    }\r
+\r
     // 亮度调节视图初始化\r
     UIScrollView *BrightnessControlView::BrightnessControlViewInit(void)\r
     {\r
@@ -123,6 +151,11 @@ namespace OHOS
             return nullptr;\r
         }\r
 \r
+        if(!DisplayBrightnessModel::GetInstance()->BrightnessControlViewSliderValuesInit())\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BrightnessControlView::BrightnessControlViewSliderValuesInit fail!");\r
+            return nullptr;\r
+        }\r
         /* ----------------------------------- Add ---------------------------------- */\r
         BrightnessControlScrollView->Add(BrightnessControlViewSlider);\r
         BrightnessControlScrollView->Add(BrightnessControlViewImageIcon);\r
index 15f1df8..461fe63 100644 (file)
@@ -24,20 +24,57 @@ namespace OHOS
     /// @brief 显示与亮度及其子视图中的组件状态初始化
     /// @param value true 开启 false 关闭
     /// @return true 初始化成功 false 初始化失败
-    bool DisplayBrightnessModel::DisplayBrightnessViewAndSubViewComponentsStatusInit()
+    bool DisplayBrightnessModel::RaiseToBrightnessCheckBoxButtonStatusInit(void)
     {
-        /* ---------------------------------- 1.亮屏值大小 --------------------------------- */
+        DisplayBrightnessPresenter *displayBrightnessPresent = DisplayBrightnessPresenter::GetInstance();
+        if (displayBrightnessPresent == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessViewAndSubViewComponentsStatusInit DisplayBrightnessPresenter GetInstance fail");
+            return false;
+        }
+        displayBrightnessPresent->SetRaiseToBrightnessState(RaiseToBrightnessCheckBoxButtonState); // 抬腕按钮的状态
+        return true;
+    }
 
-        /* --------------------------------- 2.亮屏时长 --------------------------------- */
+    /// @brief 亮度值
+    /// @param value
+    void DisplayBrightnessModel::KeepScreenBrightnessValues(unsigned char value)
+    {
+        ScreenBrightnessValue = value;
+    }
 
-        /* -------------------------------- 3.抬腕亮屏按钮的状态 ------------------------------- */
+    // 亮度控制视图亮度Slider值初始化
+    bool DisplayBrightnessModel::BrightnessControlViewSliderValuesInit(void)
+    {
         DisplayBrightnessPresenter *displayBrightnessPresent = DisplayBrightnessPresenter::GetInstance();
         if (displayBrightnessPresent == nullptr)
         {
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessViewAndSubViewComponentsStatusInit DisplayBrightnessPresenter GetInstance fail");
             return false;
         }
-        displayBrightnessPresent->SetRaiseToBrightnessState(RaiseToBrightnessCheckBoxButtonState); // 抬腕按钮的状态
+        displayBrightnessPresent->SetScreenBrightnessValues(ScreenBrightnessValue);
+        return true;
+    }
+
+    /// @brief 保存哪个亮屏时长按钮被选中
+    /// @param value 0x001 5秒后熄屏 0x010 10秒后熄屏 0x100 15秒后熄屏
+    void DisplayBrightnessModel::KeepScreenDurationRadioButtonSlectStatus(unsigned int value)
+    {
+        ScreenDurationRadioButtonSlectValue = value;
+    }
+
+    /// @brief 亮屏时长按钮选中状态初始化
+    /// @param
+    /// @return
+    bool DisplayBrightnessModel::ScreenDurationRadioButtonSlectStatusInit(void)
+    {
+        DisplayBrightnessPresenter *displayBrightnessPresent = DisplayBrightnessPresenter::GetInstance();
+        if (displayBrightnessPresent == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessViewAndSubViewComponentsStatusInit DisplayBrightnessPresenter GetInstance fail");
+            return false;
+        }
+        displayBrightnessPresent->SetScreenDurationRadioButtonSlectStatus(ScreenDurationRadioButtonSlectValue);
         return true;
     }
 
index 78b2a18..5917208 100644 (file)
@@ -5,6 +5,7 @@
 #include "displaybrightness/include/DisplayBrightnessPresenter.h"\r
 #include "cat1_ctl.h"\r
 #include "displaybrightness/include/DisplayBrightnessModel.h"\r
+#include "power_display_service.h"\r
 namespace OHOS\r
 {\r
     // 当前Presenter属性实例化的内存指针\r
@@ -45,6 +46,48 @@ namespace OHOS
         }\r
     }\r
 \r
+    /// @brief 设置亮度值\r
+    /// @param value\r
+    void DisplayBrightnessPresenter::SetScreenBrightnessValues(unsigned char value)\r
+    {\r
+        BrightnessControlView *p_BrightnessControlView = BrightnessControlView::GetInstance();\r
+        if (p_BrightnessControlView == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetScreenBrightnessValues BrightnessControlView GetInstance fail");\r
+            return;\r
+        }\r
+        if (value >= BRIGHTNESS_MIN && value <= BRIGHTNESS_MAX)\r
+        {\r
+            p_BrightnessControlView->SetScreenBrightnessValue(value);\r
+            DisplayBrightnessModel::GetInstance()->KeepScreenBrightnessValues(0xff);// 将Model层保存的状态清除\r
+        }\r
+    }\r
+\r
+    /// @brief 根据value值设置哪个按钮被选中\r
+    /// @param value\r
+    void DisplayBrightnessPresenter::SetScreenDurationRadioButtonSlectStatus(uint32_t value)\r
+    {\r
+        ScreenDurationView *p_ScreenDurationView = ScreenDurationView::GetInstance();\r
+        if (p_ScreenDurationView == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetScreenDurationRadioButtonSlectStatus ScreenDurationView GetInstance fail");\r
+            return;\r
+        }\r
+        if (value == ScreenDurationRadioButton1)\r
+        {\r
+            p_ScreenDurationView->SetRadioButtonSelectStatus(ScreenDurationRadioButton1);\r
+        }\r
+        else if (value == ScreenDurationRadioButton2)\r
+        {\r
+            p_ScreenDurationView->SetRadioButtonSelectStatus(ScreenDurationRadioButton2);\r
+        }\r
+        else\r
+        {\r
+            p_ScreenDurationView->SetRadioButtonSelectStatus(ScreenDurationRadioButton3);\r
+        }\r
+        DisplayBrightnessModel::GetInstance()->KeepScreenDurationRadioButtonSlectStatus(ScreenDurationRadioButton1);// 将Model层保存的状态清除\r
+    }\r
+\r
     void DisplayBrightnessPresenter::OnStart()\r
     {\r
 \r
@@ -174,24 +217,28 @@ namespace OHOS
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessView::GetInstance fail!");\r
             return false;\r
         }\r
+        const power_display_svr_api_t *display_api = power_display_svr_get_api();\r
         switch (state)\r
         {\r
         case UICheckBox::SELECTED:\r
             if (p_DisplayBrightnessView->GetScreenDurationView() != nullptr)\r
             {\r
-                if (p_DisplayBrightnessView->GetScreenDurationView()->GetRadioButton(0) == (UIView *)m_view)\r
+                if (p_DisplayBrightnessView->GetScreenDurationView()->GetRadioButton(ScreenDurationRadioButton1) == (UIView *)m_view)\r
                 {\r
                     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Switched to 5 seconds");\r
+                    display_api->set_screen_auto_off_timeout(SCREENDURATIONFIVE);\r
                     return true;\r
                 }\r
-                else if (p_DisplayBrightnessView->GetScreenDurationView()->GetRadioButton(1) == (UIView *)m_view)\r
+                else if (p_DisplayBrightnessView->GetScreenDurationView()->GetRadioButton(ScreenDurationRadioButton2) == (UIView *)m_view)\r
                 {\r
                     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Switched to 10 seconds");\r
+                    display_api->set_screen_auto_off_timeout(SCREENDURATIONTEN);\r
                     return true;\r
                 }\r
-                else if (p_DisplayBrightnessView->GetScreenDurationView()->GetRadioButton(2) == (UIView *)m_view)\r
+                else if (p_DisplayBrightnessView->GetScreenDurationView()->GetRadioButton(ScreenDurationRadioButton3) == (UIView *)m_view)\r
                 {\r
                     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Switched to 15 seconds");\r
+                    display_api->set_screen_auto_off_timeout(SCREENDURATIONFIFTEENTH);\r
                     return true;\r
                 }\r
             }\r
@@ -204,4 +251,123 @@ namespace OHOS
         }\r
         return false;\r
     }\r
+\r
+    static BrightnessSliderEventListener *g_pBrightnessSliderEventListener{nullptr};\r
+\r
+    constexpr int16_t BRIGHTNESS_CHANGE = 10;\r
+\r
+    BrightnessSliderEventListener::BrightnessSliderEventListener()\r
+    {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BrightnessSliderEventListener::BrightnessSliderEventListener");\r
+        g_pBrightnessSliderEventListener = this;\r
+    }\r
+\r
+    BrightnessSliderEventListener::~BrightnessSliderEventListener()\r
+    {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BrightnessSliderEventListener::~BrightnessSliderEventListener");\r
+        g_pBrightnessSliderEventListener = nullptr;\r
+    }\r
+\r
+    BrightnessSliderEventListener *BrightnessSliderEventListener::GetInstance(void)\r
+    {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BrightnessSliderEventListener::GetInstance");\r
+        return g_pBrightnessSliderEventListener;\r
+    }\r
+\r
+    /// @brief 改变屏幕状态\r
+    /// @param status\r
+    void BrightnessSliderEventListener::ChangeBrightness(uint8_t status, uint8_t value)\r
+    {\r
+        // 1.获取 BrightnessControlView 的实例:\r
+        BrightnessControlView *p_BrightnessControlView = BrightnessControlView::GetInstance();\r
+        // 2.检查 BrightnessControlView 指针是否为 nullptr,并在为 nullptr 时打印错误日志并返回\r
+        if (p_BrightnessControlView == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BrightnessControlView::GetInstance fail!");\r
+            return;\r
+        }\r
+        // 3.获取 p_BrightnessControlView 的进度条 UISlider 实例的指针:\r
+        UISlider *progress = p_BrightnessControlView->GetBrightnessControlViewSlider();\r
+        // 4.检查 progress 指针是否为 nullptr,并在为 nullptr 时打印错误日志并返回:\r
+        if (progress == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ChangeBrightness:progress is nullptr!");\r
+            return;\r
+        }\r
+        // 5.保存当前亮度到变量 BrightnessValue\r
+        BrightnessValue = p_BrightnessControlView->CurrentBrightnessValue;\r
+\r
+        // 6.获取显示功耗管理服务API接口.\r
+        const power_display_svr_api_t *display_api = power_display_svr_get_api();\r
+        // 7.根据传入的 status 值进行亮度变化操作\r
+        switch (status)\r
+        {\r
+        case BRIGHTNESSLOWERS:\r
+            /* code */\r
+            p_BrightnessControlView->CurrentBrightnessValue = progress->GetValue() - BRIGHTNESS_CHANGE;\r
+            if (p_BrightnessControlView->CurrentBrightnessValue < BRIGHTNESS_MIN)\r
+            {\r
+                p_BrightnessControlView->CurrentBrightnessValue = BRIGHTNESS_MIN;\r
+            }\r
+            break;\r
+        case BRIGHTNESSEVATED:\r
+            p_BrightnessControlView->CurrentBrightnessValue = progress->GetValue() + BRIGHTNESS_CHANGE;\r
+            if (p_BrightnessControlView->CurrentBrightnessValue > BRIGHTNESS_MAX)\r
+            {\r
+                p_BrightnessControlView->CurrentBrightnessValue = BRIGHTNESS_MAX;\r
+            }\r
+            break;\r
+        case BRIGHTNESSDRAG:\r
+            p_BrightnessControlView->CurrentBrightnessValue = value;\r
+            if (p_BrightnessControlView->CurrentBrightnessValue < BRIGHTNESS_MIN)\r
+            {\r
+                p_BrightnessControlView->CurrentBrightnessValue = BRIGHTNESS_MIN;\r
+            }\r
+            else if (p_BrightnessControlView->CurrentBrightnessValue > BRIGHTNESS_MAX)\r
+            {\r
+                p_BrightnessControlView->CurrentBrightnessValue = BRIGHTNESS_MAX;\r
+            }\r
+            break;\r
+        default:\r
+            break;\r
+        }\r
+        // 8.将 p_BrightnessControlView->CurrentBrightnessValue 的值赋给 progress 的值,更新进度条的显示:\r
+        progress->SetValue(p_BrightnessControlView->CurrentBrightnessValue);\r
+\r
+        // 9.设置当前亮度值并检查是否设置成功\r
+        if (display_api->set_brightness(p_BrightnessControlView->CurrentBrightnessValue) != ERRCODE_SUCC)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ChangeBrightness: set_brightness  fail!");\r
+            return;\r
+        }\r
+    }\r
+\r
+    /// @brief 当滑动条被拖动或点击时调用\r
+    /// @param value 滑块的当前值。\r
+    void BrightnessSliderEventListener::OnChange(int32_t value)\r
+    {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnChange %d", value);\r
+        ChangeBrightness(BRIGHTNESSDRAG, value);\r
+    }\r
+\r
+    /// @brief 当滑动条被释放时调用\r
+    /// @param value 滑块的当前值。\r
+    void BrightnessSliderEventListener::OnRelease(int32_t value)\r
+    {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnRelease %d", value);\r
+        ChangeBrightness(BRIGHTNESSDRAG, value);\r
+    }\r
+\r
+    bool BrightnessSliderEventListener::OnClick(UIView &view, const ClickEvent &event)\r
+    {\r
+        UNUSED(event);\r
+        UNUSED(view);\r
+        return true;\r
+    }\r
+    bool BrightnessSliderEventListener::OnDrag(UIView &view, const DragEvent &event)\r
+    {\r
+        UNUSED(event);\r
+        UNUSED(view);\r
+        return true;\r
+    }\r
 }
\ No newline at end of file
index 866f6c6..5671128 100644 (file)
@@ -363,7 +363,10 @@ namespace OHOS
         {\r
             return;\r
         }\r
-        DisplayBrightnessModel::GetInstance()->DisplayBrightnessViewAndSubViewComponentsStatusInit();\r
+        if (!DisplayBrightnessModel::GetInstance()->RaiseToBrightnessCheckBoxButtonStatusInit())\r
+        {\r
+            return;\r
+        }\r
         initViewStatus = true;\r
     }\r
 \r
@@ -399,14 +402,14 @@ namespace OHOS
         return DisplayBrightnessScrollView[i];\r
     }\r
 \r
-    ScreenDurationView * DisplayBrightnessView::GetScreenDurationView(void)\r
+    ScreenDurationView *DisplayBrightnessView::GetScreenDurationView(void)\r
     {\r
-        if(p_ScreenDurationView == nullptr)\r
+        if (p_ScreenDurationView == nullptr)\r
         {\r
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessView::GetScreenDurationView p_ScreenDurationView is nullptr!");\r
             return nullptr;\r
         }\r
-        return  p_ScreenDurationView;\r
+        return p_ScreenDurationView;\r
     }\r
 \r
     // 1.切换到“屏幕与亮度”视图\r
index 83ede9b..845a5e5 100644 (file)
@@ -1,5 +1,6 @@
 #include "displaybrightness/include/ScreenDurationView.h"\r
 #include "displaybrightness/include/DisplayBrightnessPresenter.h"\r
+#include "displaybrightness/include/DisplayBrightnessModel.h"\r
 #include "wearable_log.h"\r
 namespace OHOS\r
 {\r
@@ -30,6 +31,16 @@ namespace OHOS
         {\r
             ScreenDurationScrollView->RemoveAll();\r
 \r
+            unsigned int i;\r
+            for (i = 0; i < 3; i++)\r
+            {\r
+                if (ScreenDurationRadioButton[i]->GetState() == UICheckBox::SELECTED)\r
+                {\r
+                    break;\r
+                }\r
+            }\r
+            DisplayBrightnessModel::GetInstance()->KeepScreenDurationRadioButtonSlectStatus(i);\r
+\r
             delete ScreenDurationTitleLabel;\r
             ScreenDurationTitleLabel = nullptr;\r
 \r
@@ -41,10 +52,12 @@ namespace OHOS
                 delete BackGroundImage[i];\r
                 BackGroundImage[i] = nullptr;\r
 \r
+                delete SimplifiedChineseRadioButtonChange[i];\r
+                SimplifiedChineseRadioButtonChange[i] = nullptr;\r
+\r
                 delete ScreenDurationRadioButton[i];\r
                 ScreenDurationRadioButton[i] = nullptr;\r
             }\r
-\r
             delete ScreenDurationScrollView;\r
             ScreenDurationScrollView = nullptr;\r
         }\r
@@ -224,13 +237,18 @@ namespace OHOS
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScreenDurationView::ScreenDurationRadioButton[%d] is nullptr!", i);\r
                 return false;\r
             }\r
-            UICheckBox::OnChangeListener *SimplifiedChineseRadioButtonChange = static_cast<UICheckBox::OnChangeListener *>(new ScreenDurationRadiobuttonOnChangeListener(ScreenDurationRadioButton[i]));\r
-            ScreenDurationRadioButton[i]->SetOnChangeListener(SimplifiedChineseRadioButtonChange);\r
+            SimplifiedChineseRadioButtonChange[i] = static_cast<UICheckBox::OnChangeListener *>(new ScreenDurationRadiobuttonOnChangeListener(ScreenDurationRadioButton[i]));\r
+            ScreenDurationRadioButton[i]->SetOnChangeListener(SimplifiedChineseRadioButtonChange[i]);\r
         }\r
 \r
         return true;\r
     }\r
 \r
+    void ScreenDurationView::SetRadioButtonSelectStatus(int16_t i)\r
+    {\r
+        GetRadioButton(i)->SetState(UICheckBox::SELECTED);\r
+    }\r
+\r
     // 亮屏时长视图初始化\r
     UIScrollView *ScreenDurationView::ScreenDurationViewInit(void)\r
     {\r
@@ -255,6 +273,12 @@ namespace OHOS
         {\r
             return nullptr;\r
         }\r
+\r
+        if (!DisplayBrightnessModel::GetInstance()->ScreenDurationRadioButtonSlectStatusInit())\r
+        {\r
+            return nullptr;\r
+        }\r
+\r
         /* ----------------------------------- Add ---------------------------------- */\r
         ScreenDurationScrollView->Add(ScreenDurationTitleLabel);\r
         for (int i = 0; i < 3; i++)\r
index 5f86518..5db3374 100755 (executable)
@@ -20,7 +20,7 @@
 #include "touch_screen_def.h"
 #include "display_state_machine.h"
 
-#define DISPLAY_AUTO_POWER_OFF_PERIOD_MS (1000 * 10)  //10秒
+#define DISPLAY_AUTO_POWER_OFF_PERIOD_MS (1000 * 5)  //5秒
 #define DISPLAY_DEFAULT_BRIGHTNESS 50
 #define POWER_DISPLAY_QUEUE_MAX_SIZE 64
 #define POWER_DISPLAY_MAX_SIZE 0x10