1.优化亮度调节的ChangeBrightness函数
authorluozheng <1732036298@qq.com>
Thu, 18 Apr 2024 07:00:52 +0000 (15:00 +0800)
committerluozheng <1732036298@qq.com>
Thu, 18 Apr 2024 07:00:52 +0000 (15:00 +0800)
2.同步选择的亮屏时长在屏幕与亮度显示
3.修改设置视图的OnDrag函数

code/sdk/application/wearable/fd230app/nativeui/brightnesslevel/src/BrightnessLevelView.cpp
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/DisplayBrightnessView.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/settings/src/SettingPresenter.cpp

index c592d61..cdbc424 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-04-16 14:36:13
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-04-16 16:18:00
+ * @LastEditTime: 2024-04-18 14:38:37
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/brightnesslevel/src/BrightnessLevelView.cpp
  */
 #include "brightnesslevel/include/BrightnessLevelView.h"
@@ -22,7 +22,7 @@ namespace OHOS
 
     BrightnessLevelView::~BrightnessLevelView()
     {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "~BrightnessLevelView::BrightnessLevelView");
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BrightnessLevelView::~BrightnessLevelView");
         ClearAll();
         g_pBrightnessLevelView = nullptr;
     }
index 1b087f3..f03208a 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com\r
  * @Date: 2024-01-29 15:37:44\r
  * @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-04-16 16:51:33\r
+ * @LastEditTime: 2024-04-18 14:52:47\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/displaybrightness/include/BrightnessControlView.h\r
  */\r
 #ifndef BRIGHTNESS_CONTROL_VIEW_H\r
 #include "components/ui_slider.h"\r
 #include "components/ui_image_view.h"\r
 #include <memory>\r
+#include "map"\r
 namespace OHOS\r
 {\r
 #define BRIGHTNESS_MIN 51\r
 #define BRIGHTNESS_MAX 0xff\r
 #define BRIGHTNESS_PROGRESS "progress"\r
 \r
+    // 步骤 1: 定义策略接口.定义一个策略接口,所有的亮度调整策略都需要实现这个接口\r
+    class BrightnessControlView;\r
+    class BrightnessChangeStrategy\r
+    {\r
+    public:\r
+        virtual void ApplyChange(BrightnessControlView *view, UISlider *slider, uint8_t value) = 0;\r
+        virtual ~BrightnessChangeStrategy() = default;\r
+    };\r
+\r
     static const char *BRIGHTNESS_CONTROL_SLIDER = "BrightnessControlViewSlider";\r
     class BrightnessSliderEventListener : public UISlider::UISliderEventListener,\r
                                           public UIView::OnClickListener,\r
@@ -28,7 +38,7 @@ namespace OHOS
     public:\r
         BrightnessSliderEventListener();\r
         ~BrightnessSliderEventListener();\r
-        static std::shared_ptr<BrightnessSliderEventListener> GetInstance();\r
+        static BrightnessSliderEventListener *GetInstance();\r
         void ChangeBrightness(uint8_t status, uint8_t value);\r
         void OnChange(int32_t value) override;\r
         void OnRelease(int32_t value) override;\r
@@ -36,7 +46,7 @@ namespace OHOS
         bool OnDrag(UIView &view, const DragEvent &event) override;\r
 \r
     private:\r
-        int32_t BrightnessValue; // 亮度值\r
+        std::map<uint8_t, std::shared_ptr<BrightnessChangeStrategy>> strategyMap;\r
     };\r
     class BrightnessControlView\r
     {\r
@@ -47,12 +57,12 @@ namespace OHOS
         UIScrollView *BrightnessControlViewInit(void);\r
         void ClearAll(void);\r
         UISlider *GetBrightnessControlViewSlider(void);\r
-        int16_t CurrentBrightnessValue{0}; // 当前亮度值\r
-        void SetScreenBrightnessValue(unsigned char value);\r
+\r
     private:\r
         bool SetUpScrollView(void);\r
         bool SetUpSlider(void);\r
         bool SetUpImageView(void);\r
+        BrightnessSliderEventListener *rawPointer{nullptr};\r
         UIScrollView *BrightnessControlScrollView{nullptr};\r
         UISlider *BrightnessControlViewSlider = nullptr;\r
         UIImageView *BrightnessControlViewImageIcon = nullptr;\r
index 336a071..015ef9d 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com\r
  * @Date: 2024-04-12 20:11:04\r
  * @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-04-17 10:33:16\r
+ * @LastEditTime: 2024-04-18 10:23:37\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/displaybrightness/include/DisplayBrightnessModel.h\r
  */\r
 #ifndef DISPLAY_BRIGHTNESS_MODEL_H_\r
@@ -18,6 +18,7 @@ namespace OHOS
         void SetRaiseToBrightnessCheckBoxButtonStatus(bool value);\r
         bool RaiseToBrightnessCheckBoxButtonStatusInit(void);\r
         bool ScreenDurationRadioButtonSlectStatusInit(void);\r
+        bool SelectScreenDurationLabelInit(void);\r
         void SetScreenDurationTime(unsigned int time);\r
         unsigned int GetScreenDurationTime(void);\r
     private:\r
index 6d4d545..bf3a59f 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com\r
  * @Date: 2024-02-18 09:10:05\r
  * @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-04-17 10:21:03\r
+ * @LastEditTime: 2024-04-18 10:59:11\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/displaybrightness/include/DisplayBrightnessPresenter.h\r
  */\r
 #ifndef _DISPLAY_BRIGHTNESS_PRESENTER_H\r
@@ -88,7 +88,8 @@ namespace OHOS
 \r
         static DisplayBrightnessPresenter *GetInstance();\r
         void SetRaiseToBrightnessState(bool value);\r
-        void SetScreenDurationRadioButtonSlectStatus(uint32_t value);\r
+        void SetScreenDurationRadioButtonSelectStatus(uint32_t value);\r
+        void SetSelectScreenDurationLabel(uint32_t value);\r
 \r
     private:\r
         // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;\r
index cfdb2a6..ad4f44e 100644 (file)
@@ -35,7 +35,7 @@ namespace OHOS
             int16_t w;\r
             int16_t h;\r
             const char *ViewId;\r
-            const char *ImageSrc;\r
+            //const char *ImageSrc;\r
         };\r
         struct LabelConfig\r
         {\r
@@ -45,7 +45,7 @@ namespace OHOS
             int16_t height;\r
             int16_t fontSize;      // 字体大小\r
             int16_t lineHeigh;     // 行高\r
-            const char *text;      // 文本\r
+            std::string text;      // 文本\r
             uint8_t lineBreakMode; // 断行模式。\r
         };\r
         struct CheckBoxConfig\r
@@ -70,7 +70,8 @@ namespace OHOS
         UIScrollView *GetDisplayBrightnessScrollView(int16_t i);\r
         UICheckBox::UICheckBoxState GetRaiseToBrightnessCheckBoxButtonState(void);\r
         void SetRaiseToBrightnessCheckBoxButtonState(UICheckBox::UICheckBoxState state);\r
-        ScreenDurationView * GetScreenDurationView(void);\r
+        ScreenDurationView *GetScreenDurationView(void);\r
+        UILabelExt * GetSelectScreenDurationLabel(void);\r
     public:\r
         void OnStart() override;\r
         void OnSetUpView() override;\r
@@ -78,26 +79,28 @@ namespace OHOS
         void OnStop() override;\r
 \r
     private:\r
-        //ScreenDurationView *p_ScreenDurationView{nullptr};       // 亮屏时长视图\r
+        // ScreenDurationView *p_ScreenDurationView{nullptr};       // 亮屏时长视图\r
         std::shared_ptr<ScreenDurationView> p_ScreenDurationView;\r
+\r
     private:\r
         bool SetUpScrollView(void);\r
         bool SetTheTitle(void);\r
         UIButton *SetTheButton(ButtonConfig &buttonconfig, UIView::OnClickListener *clickListener);\r
         bool InitDisplayBrightnessViewButton(void);\r
-        UILabel *SetUpLabel(LabelConfig &labelconfig); // 设置标签\r
+        UILabelExt *SetUpLabel(LabelConfig &labelconfig); // 设置标签\r
         bool InitDisplayBrightnessViewLabel(void);\r
         UIImageView *SetUpImageView(ImageConfig &imageconfig); // 设置图片\r
         bool InitDisplayBrightnessViewImage(void);\r
         UICheckBox *SetUpCheckBox(CheckBoxConfig &checkboxconfig); // 设置复选框\r
         bool InitDisplayBrightnessViewCheckBox(void);\r
         UIScrollView *DisplayBrightnessScrollView[2]{nullptr};\r
-        UILabel *DisplayBrightnessTitleLabel = nullptr;        // 显示与亮度标题\r
-        UIButton *BringhtnessControlButton = nullptr;          // 亮度调节按钮\r
-        UIButton *ScreenDurationButton = nullptr;              // 亮屏时长按钮\r
-        UILabel *BringhtnessControlLabel = nullptr;            // 亮度调节标签\r
-        UILabel *ScreenDurationLabel = nullptr;                // 亮屏时长标签\r
-        UILabel *RaiseToBrightnessLabel = nullptr;             // 抬腕亮屏标签\r
+        UILabelExt *DisplayBrightnessTitleLabel = nullptr; // 显示与亮度标题\r
+        UIButton *BringhtnessControlButton = nullptr;      // 亮度调节按钮\r
+        UIButton *ScreenDurationButton = nullptr;          // 亮屏时长按钮\r
+        UILabelExt *BringhtnessControlLabel = nullptr;     // 亮度调节标签\r
+        UILabelExt *ScreenDurationLabel = nullptr;         // 亮屏时长标签\r
+        UILabelExt *selectScreenDurationLabel = nullptr;   // 选择的亮屏时间\r
+        UILabelExt *RaiseToBrightnessLabel = nullptr;      // 抬腕亮屏标签\r
         UIImageView *NextImage[2]{nullptr};\r
         UIImageView *RaiseToBrightnessImage = nullptr;         // 抬腕亮屏图片\r
         UICheckBox *RaiseToBrightnessCheckBoxButton = nullptr; // 抬腕亮屏按钮\r
index 750aeb0..0ec2308 100644 (file)
@@ -4,6 +4,8 @@
 #include <custom_utils.h>\r
 #include "power_display_service.h"\r
 #include "config/include/ConfigModel.h"\r
+#include "map"\r
+#include "iostream"\r
 namespace OHOS\r
 {\r
     static BrightnessControlView *g_pBrightnessControlView{nullptr};\r
@@ -40,6 +42,9 @@ namespace OHOS
             delete BrightnessControlViewImageIcon;\r
             BrightnessControlViewImageIcon = nullptr;\r
 \r
+            delete rawPointer;\r
+            rawPointer = nullptr;\r
+\r
             delete BrightnessControlScrollView;\r
             BrightnessControlScrollView = nullptr;\r
         }\r
@@ -83,13 +88,18 @@ namespace OHOS
         BrightnessControlViewSlider->SetValue(ConfigModel::GetInstance()->GetBrightness());\r
         BrightnessControlViewSlider->SetIntercept(true);\r
 \r
-        /*\r
-            注意,使用get方法获取的原生指针不应被用来管理对象的生命周期(不要用它去调用delete),因为智能指针会自动处理对象的销毁。\r
-        */\r
-        BrightnessSliderEventListener *rawPointer  = BrightnessSliderEventListener::GetInstance().get();\r
-        BrightnessControlViewSlider->SetSliderEventListener(rawPointer );\r
-        BrightnessControlViewSlider->SetOnClickListener(rawPointer );\r
-        BrightnessControlViewSlider->SetOnDragListener(rawPointer );\r
+        if (rawPointer == nullptr)\r
+        {\r
+            rawPointer = new BrightnessSliderEventListener();\r
+            if (rawPointer == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "rawPointer new fail");\r
+                return false;\r
+            }\r
+        }\r
+        BrightnessControlViewSlider->SetSliderEventListener(rawPointer);\r
+        BrightnessControlViewSlider->SetOnClickListener(rawPointer);\r
+        BrightnessControlViewSlider->SetOnDragListener(rawPointer);\r
         BrightnessControlViewSlider->SetKnobStyle(StyleDefault::GetSliderKnobStyle());\r
         return true;\r
     }\r
@@ -113,10 +123,6 @@ namespace OHOS
         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
@@ -149,12 +155,82 @@ namespace OHOS
     }\r
 \r
     /* -------------------------------------------------------------------------- */\r
-    static BrightnessSliderEventListener *g_pBrightnessSliderEventListener{nullptr};\r
-    constexpr int16_t BRIGHTNESS_CHANGE = 10;\r
 \r
+    static constexpr int16_t BRIGHTNESS_CHANGE = 10;\r
+    // 步骤 2: 实现具体的策略\r
+    class LowerBrightnessStrategy : public BrightnessChangeStrategy\r
+    {\r
+    public:\r
+        void ApplyChange(BrightnessControlView *view, UISlider *slider, uint8_t value) override\r
+        {\r
+            // Implement the logic similar to the BRIGHTNESSLOWERS case\r
+            uint8_t newBrightnessValue = slider->GetValue() - BRIGHTNESS_CHANGE;\r
+            if (newBrightnessValue < BRIGHTNESS_MIN)\r
+            {\r
+                newBrightnessValue = BRIGHTNESS_MIN;\r
+            }\r
+\r
+            const power_display_svr_api_t *display_api = power_display_svr_get_api();\r
+            if (display_api->set_brightness(newBrightnessValue) != ERRCODE_SUCC)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LowerBrightness: set_brightness fail!");\r
+            }\r
+            else\r
+            {\r
+                slider->SetValue(newBrightnessValue);\r
+            }\r
+        }\r
+    };\r
+\r
+    class ElevateBrightnessStrategy : public BrightnessChangeStrategy\r
+    {\r
+    public:\r
+        void ApplyChange(BrightnessControlView *view, UISlider *slider, uint8_t value) override\r
+        {\r
+            // Implement the logic similar to the BRIGHTNESSEVATED case\r
+            uint8_t newBrightnessValue = slider->GetValue() + BRIGHTNESS_CHANGE;\r
+            if (newBrightnessValue > BRIGHTNESS_MAX)\r
+            {\r
+                newBrightnessValue = BRIGHTNESS_MAX;\r
+            }\r
+\r
+            const power_display_svr_api_t *display_api = power_display_svr_get_api();\r
+            if (display_api->set_brightness(newBrightnessValue) != ERRCODE_SUCC)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ElevateBrightness: set_brightness fail!");\r
+            }\r
+            else\r
+            {\r
+                slider->SetValue(newBrightnessValue);\r
+            }\r
+        }\r
+    };\r
+\r
+    class DragBrightnessStrategy : public BrightnessChangeStrategy\r
+    {\r
+    public:\r
+        void ApplyChange(BrightnessControlView *view, UISlider *slider, uint8_t value) override\r
+        {\r
+            // Implement the logic similar to the BRIGHTNESSDRAG case\r
+            const power_display_svr_api_t *display_api = power_display_svr_get_api();\r
+            // 更新进度条的显示:\r
+            slider->SetValue(value);\r
+            if (display_api->set_brightness(value) != ERRCODE_SUCC)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ChangeBrightness: set_brightness  fail!");\r
+                return;\r
+            }\r
+        }\r
+    };\r
+    /* -------------------------------------------------------------------------- */\r
+    static BrightnessSliderEventListener *g_pBrightnessSliderEventListener{nullptr};\r
     BrightnessSliderEventListener::BrightnessSliderEventListener()\r
     {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BrightnessSliderEventListener::BrightnessSliderEventListener");\r
+        // 步骤 3: 创建一个映射表将状态映射到策略\r
+        strategyMap[BRIGHTNESSLOWERS] = std::make_shared<LowerBrightnessStrategy>();\r
+        strategyMap[BRIGHTNESSEVATED] = std::make_shared<ElevateBrightnessStrategy>();\r
+        strategyMap[BRIGHTNESSDRAG] = std::make_shared<DragBrightnessStrategy>();\r
         g_pBrightnessSliderEventListener = this;\r
     }\r
 \r
@@ -164,78 +240,25 @@ namespace OHOS
         g_pBrightnessSliderEventListener = nullptr;\r
     }\r
 \r
-    std::shared_ptr<BrightnessSliderEventListener> BrightnessSliderEventListener::GetInstance(void)\r
+    BrightnessSliderEventListener *BrightnessSliderEventListener::GetInstance(void)\r
     {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BrightnessSliderEventListener::GetInstance");\r
-        static std::shared_ptr<BrightnessSliderEventListener> instance(new BrightnessSliderEventListener());\r
-        return instance;\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BrightnessSliderEventListener::GetInstance");\r
+        return g_pBrightnessSliderEventListener;\r
     }\r
 \r
-    /// @brief 改变屏幕状态\r
-    /// @param status\r
+    // 步骤 4: 使用映射表简化 ChangeBrightness\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
+        auto it = strategyMap.find(status);\r
+        if (it != strategyMap.end())\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
+            // 确保 BrightnessControlView 和 UISlider 都不为 nullptr\r
+            BrightnessControlView *view = BrightnessControlView::GetInstance();\r
+            UISlider *slider = view ? view->GetBrightnessControlViewSlider() : nullptr;\r
+            if (view && slider)\r
             {\r
-                p_BrightnessControlView->CurrentBrightnessValue = BRIGHTNESS_MAX;\r
+                it->second->ApplyChange(view, slider, value);\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
index 3f357fc..f58cbca 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-04-12 20:11:04
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-04-17 10:33:29
+ * @LastEditTime: 2024-04-18 10:55:38
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/displaybrightness/src/DisplayBrightnessModel.cpp
  */
 #include "displaybrightness/include/DisplayBrightnessModel.h"
@@ -60,7 +60,19 @@ namespace OHOS
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessViewAndSubViewComponentsStatusInit DisplayBrightnessPresenter GetInstance fail");
             return false;
         }
-        displayBrightnessPresent->SetScreenDurationRadioButtonSlectStatus(GetScreenDurationTime());
+        displayBrightnessPresent->SetScreenDurationRadioButtonSelectStatus(GetScreenDurationTime());
+        return true;
+    }
+
+    bool DisplayBrightnessModel::SelectScreenDurationLabelInit(void)
+    {
+        DisplayBrightnessPresenter *displayBrightnessPresent = DisplayBrightnessPresenter::GetInstance();
+        if (displayBrightnessPresent == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessViewAndSubViewComponentsStatusInit DisplayBrightnessPresenter GetInstance fail");
+            return false;
+        }
+        displayBrightnessPresent->SetSelectScreenDurationLabel(GetScreenDurationTime());
         return true;
     }
 
index f2657c9..442efe7 100644 (file)
@@ -1,3 +1,10 @@
+/*\r
+ * @Author: luozheng 1732036298@qq.com\r
+ * @Date: 2024-03-30 09:14:38\r
+ * @LastEditors: luozheng 1732036298@qq.com\r
+ * @LastEditTime: 2024-04-18 11:16:04\r
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/displaybrightness/src/DisplayBrightnessPresent.cpp\r
+ */\r
 #include "AppViewIDs.h"\r
 #include "components/ui_label_ext.h"\r
 #include "language/font/ui_resource_string.h"\r
@@ -10,6 +17,8 @@
 #include "power_display_service.h"\r
 #include "common/key_code.h"\r
 #include <custom_utils.h>\r
+#include "map"\r
+#include "iostream"\r
 namespace OHOS\r
 {\r
     // 当前Presenter属性实例化的内存指针\r
@@ -52,38 +61,69 @@ namespace OHOS
 \r
     /// @brief 根据value值设置哪个按钮被选中\r
     /// @param value\r
-    void DisplayBrightnessPresenter::SetScreenDurationRadioButtonSlectStatus(uint32_t value)\r
+    void DisplayBrightnessPresenter::SetScreenDurationRadioButtonSelectStatus(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
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScreenDurationView GetInstance fail");\r
             return;\r
         }\r
-        switch (value)\r
+\r
+        // 映射表将value映射到特定的单选按钮\r
+        const std::map<uint32_t, ScreenDurationRadioButton> radioButtonMap = {\r
+            {SCREENDURATION_FIVE, ScreenDurationRadioButton1},\r
+            {SCREENDURATION_TEN, ScreenDurationRadioButton2},\r
+            {SCREENDURATION_FIFTEENTH, ScreenDurationRadioButton3},\r
+            {SCREENDURATION_THIRTY, ScreenDurationRadioButton4},\r
+            {SCREENDURATION_SIXTY, ScreenDurationRadioButton5},\r
+            {SCREENDURATION_THREE_HUNDRED, ScreenDurationRadioButton6},\r
+        };\r
+\r
+        auto iter = radioButtonMap.find(value);\r
+        if (iter != radioButtonMap.end())\r
         {\r
-        case SCREENDURATION_FIVE:\r
-            p_ScreenDurationView->SetRadioButtonSelectStatus(ScreenDurationRadioButton1);\r
-            break;\r
-        case SCREENDURATION_TEN:\r
-            p_ScreenDurationView->SetRadioButtonSelectStatus(ScreenDurationRadioButton2);\r
-            break;\r
-        case SCREENDURATION_FIFTEENTH:\r
-            p_ScreenDurationView->SetRadioButtonSelectStatus(ScreenDurationRadioButton3);\r
-            break;\r
-        case SCREENDURATION_THIRTY:\r
-            p_ScreenDurationView->SetRadioButtonSelectStatus(ScreenDurationRadioButton4);\r
-            break;\r
-        case SCREENDURATION_SIXTY:\r
-            p_ScreenDurationView->SetRadioButtonSelectStatus(ScreenDurationRadioButton5);\r
-            break;\r
-        case SCREENDURATION_THREE_HUNDRED:\r
-            p_ScreenDurationView->SetRadioButtonSelectStatus(ScreenDurationRadioButton6);\r
-            break;\r
-        default:\r
-            // Optionally handle any other unexpected value\r
-            break;\r
+            p_ScreenDurationView->SetRadioButtonSelectStatus(iter->second);\r
         }\r
+        else\r
+        {\r
+            // 处理未知值\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Unexpected duration value");\r
+        }\r
+    }\r
+\r
+    /*\r
+     * @brief 根据value值出设置选择的亮屏时长内容\r
+     */\r
+    void DisplayBrightnessPresenter::SetSelectScreenDurationLabel(uint32_t value)\r
+    {\r
+        DisplayBrightnessView *p_DisplayBrightnessView = DisplayBrightnessView::GetInstance();\r
+        if (p_DisplayBrightnessView == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessView GetInstance fail");\r
+            return;\r
+        }\r
+\r
+        const std::map<uint32_t, std::string> durationMap = {\r
+            {SCREENDURATION_FIVE, "5秒"},\r
+            {SCREENDURATION_TEN, "10秒"},\r
+            {SCREENDURATION_FIFTEENTH, "15秒"},\r
+            {SCREENDURATION_THIRTY, "30秒"},\r
+            {SCREENDURATION_SIXTY, "60秒"},\r
+            {SCREENDURATION_THREE_HUNDRED, "300秒"}};\r
+\r
+        auto iter = durationMap.find(value);\r
+        if (iter != durationMap.end())\r
+        {\r
+            p_DisplayBrightnessView->GetSelectScreenDurationLabel()->SetText(iter->second.c_str());\r
+        }\r
+        else\r
+        {\r
+            // Handle unexpected value\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Unexpected duration value");\r
+        }\r
+\r
+        p_DisplayBrightnessView->GetSelectScreenDurationLabel()->Invalidate();\r
         return;\r
     }\r
 \r
@@ -146,7 +186,7 @@ namespace OHOS
             }\r
             else if (strcmp(view.GetViewId(), DISPLAY_BRIGHTNESS_VIEW) == 0)\r
             {\r
-                //NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);\r
+                // NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);\r
                 NativeAbility::GetInstance().Back();\r
                 return true;\r
             }\r
@@ -185,70 +225,52 @@ namespace OHOS
         return true;\r
     }\r
 \r
-    /*处理亮屏时长*/\r
+    /*\r
+     * @brief 用于处理亮屏时长单选按钮的状态改变.根据用户选择的单选按钮,更新屏幕持续显示时间\r
+     */\r
     bool ScreenDurationRadiobuttonOnChangeListener::OnChange(UICheckBox::UICheckBoxState state)\r
     {\r
+        if (state != UICheckBox::SELECTED)\r
+        {\r
+            return true; // 如果不是选中状态,无需处理\r
+        }\r
+\r
         DisplayBrightnessView *p_DisplayBrightnessView = DisplayBrightnessView::GetInstance();\r
         if (p_DisplayBrightnessView == nullptr)\r
         {\r
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessView::GetInstance fail!");\r
             return false;\r
         }\r
-        switch (state)\r
+\r
+        ScreenDurationView *p_ScreenDurationView = p_DisplayBrightnessView->GetScreenDurationView();\r
+        if (p_ScreenDurationView == nullptr)\r
         {\r
-        case UICheckBox::SELECTED:\r
-            if (p_DisplayBrightnessView->GetScreenDurationView() != nullptr)\r
-            {\r
-                if (p_DisplayBrightnessView->GetScreenDurationView()->GetRadioButton(ScreenDurationRadioButton1) == (UIView *)m_view)\r
-                {\r
-                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Switched to 5 seconds");\r
-                    uapi_setScreenDuration(SCREENDURATION_FIVE);\r
-                    DisplayBrightnessModel::GetInstance()->SetScreenDurationTime(SCREENDURATION_FIVE);\r
-                    return true;\r
-                }\r
-                else if (p_DisplayBrightnessView->GetScreenDurationView()->GetRadioButton(ScreenDurationRadioButton2) == (UIView *)m_view)\r
-                {\r
-                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Switched to 10 seconds");\r
-                    uapi_setScreenDuration(SCREENDURATION_TEN);\r
-                    DisplayBrightnessModel::GetInstance()->SetScreenDurationTime(SCREENDURATION_TEN);\r
-                    return true;\r
-                }\r
-                else if (p_DisplayBrightnessView->GetScreenDurationView()->GetRadioButton(ScreenDurationRadioButton3) == (UIView *)m_view)\r
-                {\r
-                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Switched to 15 seconds");\r
-                    uapi_setScreenDuration(SCREENDURATION_FIFTEENTH);\r
-                    DisplayBrightnessModel::GetInstance()->SetScreenDurationTime(SCREENDURATION_FIFTEENTH);\r
-                    return true;\r
-                }\r
-                else if (p_DisplayBrightnessView->GetScreenDurationView()->GetRadioButton(ScreenDurationRadioButton4) == (UIView *)m_view)\r
-                {\r
-                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Switched to 30 seconds");\r
-                    uapi_setScreenDuration(SCREENDURATION_THIRTY);\r
-                    DisplayBrightnessModel::GetInstance()->SetScreenDurationTime(SCREENDURATION_THIRTY);\r
-                    return true;\r
-                }\r
-                else if (p_DisplayBrightnessView->GetScreenDurationView()->GetRadioButton(ScreenDurationRadioButton5) == (UIView *)m_view)\r
-                {\r
-                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Switched to 60 seconds");\r
-                    uapi_setScreenDuration(SCREENDURATION_SIXTY);\r
-                    DisplayBrightnessModel::GetInstance()->SetScreenDurationTime(SCREENDURATION_SIXTY);\r
-                    return true;\r
-                }\r
-                else if (p_DisplayBrightnessView->GetScreenDurationView()->GetRadioButton(ScreenDurationRadioButton6) == (UIView *)m_view)\r
-                {\r
-                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Switched to 300 seconds");\r
-                    uapi_setScreenDuration(SCREENDURATION_THREE_HUNDRED);\r
-                    DisplayBrightnessModel::GetInstance()->SetScreenDurationTime(SCREENDURATION_THREE_HUNDRED);\r
-                    return true;\r
-                }\r
-            }\r
+            return false; // 相关视图不存在,直接返回\r
+        }\r
 \r
-            break;\r
-        case UICheckBox::UNSELECTED:\r
-            break;\r
-        default:\r
-            break;\r
+        // 关联单选按钮视图和对应的持续时间\r
+        std::map<UIView *, uint32_t> durationMap = {\r
+            {p_ScreenDurationView->GetRadioButton(ScreenDurationRadioButton1), SCREENDURATION_FIVE},\r
+            {p_ScreenDurationView->GetRadioButton(ScreenDurationRadioButton2), SCREENDURATION_TEN},\r
+            {p_ScreenDurationView->GetRadioButton(ScreenDurationRadioButton3), SCREENDURATION_FIFTEENTH},\r
+            {p_ScreenDurationView->GetRadioButton(ScreenDurationRadioButton4), SCREENDURATION_THIRTY},\r
+            {p_ScreenDurationView->GetRadioButton(ScreenDurationRadioButton5), SCREENDURATION_SIXTY},\r
+            {p_ScreenDurationView->GetRadioButton(ScreenDurationRadioButton6), SCREENDURATION_THREE_HUNDRED}};\r
+\r
+        auto it = durationMap.find((UIView *)m_view);\r
+        if (it != durationMap.end())\r
+        {\r
+            uapi_setScreenDuration(it->second);\r
+            DisplayBrightnessModel::GetInstance()->SetScreenDurationTime(it->second);\r
+            // 此处可以根据需要,添加对 WEARABLE_LOGE 的调用,打印日志\r
+            DisplayBrightnessPresenter::GetInstance()->SetSelectScreenDurationLabel(it->second);\r
         }\r
-        return false;\r
+        else\r
+        {\r
+            // 如果没有找到对应的映射项,可能是逻辑错误或数据不一致\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "No matching screen duration found for selected radiobutton.");\r
+        }\r
+\r
+        return true;\r
     }\r
 }
\ No newline at end of file
index eada01a..56872bf 100644 (file)
@@ -15,10 +15,7 @@ namespace OHOS
     DisplayBrightnessView::~DisplayBrightnessView()\r
     {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessView::~DisplayBrightnessView");\r
-        if (initViewStatus == true)\r
-        {\r
-            ClearAll();\r
-        }\r
+        ClearAll();\r
         g_pDisplayBrightnessView = nullptr;\r
     }\r
 \r
@@ -48,6 +45,9 @@ namespace OHOS
             delete ScreenDurationLabel;\r
             ScreenDurationLabel = nullptr;\r
 \r
+            delete selectScreenDurationLabel;\r
+            selectScreenDurationLabel = nullptr;\r
+\r
             delete RaiseToBrightnessLabel;\r
             RaiseToBrightnessLabel = nullptr;\r
 \r
@@ -64,12 +64,12 @@ namespace OHOS
             if (state == UICheckBox::UICheckBoxState::SELECTED)\r
             {\r
                 DisplayBrightnessModel::GetInstance()->SetRaiseToBrightnessCheckBoxButtonStatus(true);\r
-                ConfigModel::GetInstance()->set_condigData_Bool(ConfigModel::ConfigItem::CONFIGMODEL_ITEM_RAISE_TO_WAKE,true);\r
+                ConfigModel::GetInstance()->set_condigData_Bool(ConfigModel::ConfigItem::CONFIGMODEL_ITEM_RAISE_TO_WAKE, true);\r
             }\r
             else\r
             {\r
                 DisplayBrightnessModel::GetInstance()->SetRaiseToBrightnessCheckBoxButtonStatus(false);\r
-                ConfigModel::GetInstance()->set_condigData_Bool(ConfigModel::ConfigItem::CONFIGMODEL_ITEM_RAISE_TO_WAKE,false);\r
+                ConfigModel::GetInstance()->set_condigData_Bool(ConfigModel::ConfigItem::CONFIGMODEL_ITEM_RAISE_TO_WAKE, false);\r
             }\r
 \r
             delete RaiseToBrightnessCheckBoxButton;\r
@@ -111,18 +111,19 @@ namespace OHOS
     /// @return true 设置成功,false 失败\r
     bool DisplayBrightnessView::SetTheTitle(void)\r
     {\r
-        DisplayBrightnessTitleLabel = new UILabel();\r
+        DisplayBrightnessTitleLabel = new UILabelExt();\r
         if (DisplayBrightnessTitleLabel == nullptr)\r
         {\r
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessView::DisplayBrightnessTitleLabel new fail!");\r
             return false;\r
         }\r
-        DisplayBrightnessTitleLabel->SetPosition(158, 52);\r
+        DisplayBrightnessTitleLabel->SetPosition(93, 52, 280, 40);\r
         DisplayBrightnessTitleLabel->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
         DisplayBrightnessTitleLabel->SetStyle(STYLE_TEXT_FONT, 30);\r
         DisplayBrightnessTitleLabel->SetStyle(STYLE_LINE_HEIGHT, 35);\r
         DisplayBrightnessTitleLabel->SetText("屏幕与亮度");\r
-        DisplayBrightnessTitleLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        DisplayBrightnessTitleLabel->SetRollSpeed(40);\r
+        DisplayBrightnessTitleLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
         DisplayBrightnessTitleLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
         DisplayBrightnessTitleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
         return true;\r
@@ -141,10 +142,11 @@ namespace OHOS
         }\r
         button->SetPosition(buttonconfig.x, buttonconfig.y, buttonconfig.w, buttonconfig.h);\r
         button->SetViewId(buttonconfig.ViewId);\r
-        button->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
-        button->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
-        button->SetImageSrc(buttonconfig.ImageSrc, buttonconfig.ImageSrc);\r
-        button->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
+        button->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);\r
+        button->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+        // button->SetImageSrc(buttonconfig.ImageSrc, buttonconfig.ImageSrc);\r
+        button->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xffffffff, UIButton::PRESSED);\r
+        button->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);\r
         button->SetOnClickListener(clickListener);\r
         return button;\r
     }\r
@@ -163,7 +165,7 @@ namespace OHOS
         buttonconfig.w = 380;\r
         buttonconfig.h = 100;\r
         buttonconfig.ViewId = BRINGHTNESSCONTROLBUTTON_VIEW;\r
-        buttonconfig.ImageSrc = "/user/res/SETTING_BACKGROUND.bin";\r
+        // buttonconfig.ImageSrc = "/user/res/SETTING_BACKGROUND.bin";\r
         BringhtnessControlButton = SetTheButton(buttonconfig, clickListener);\r
         if (nullptr == BringhtnessControlButton)\r
         {\r
@@ -183,9 +185,9 @@ namespace OHOS
     }\r
 \r
     // 设置标签LabelConfig &labelconfig\r
-    UILabel *DisplayBrightnessView::SetUpLabel(LabelConfig &labelconfig)\r
+    UILabelExt *DisplayBrightnessView::SetUpLabel(LabelConfig &labelconfig)\r
     {\r
-        UILabel *label = new UILabel();\r
+        UILabelExt *label = new UILabelExt();\r
         if (label == nullptr)\r
         {\r
             return nullptr;\r
@@ -193,9 +195,10 @@ namespace OHOS
         label->SetPosition(labelconfig.left, labelconfig.top, labelconfig.width, labelconfig.height); // 位置大小\r
         label->SetStyle(STYLE_TEXT_FONT, labelconfig.fontSize);                                       // 字体大小\r
         label->SetStyle(STYLE_LINE_HEIGHT, labelconfig.lineHeigh);                                    // 字体行高\r
-        label->SetText(labelconfig.text);                                                             // 内容\r
+        label->SetText(labelconfig.text.c_str());                                                     // 内容\r
         label->SetLineBreakMode(labelconfig.lineBreakMode);                                           // 断行模式。\r
-        label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        label->SetRollSpeed(40);\r
+        // label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
         label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, labelconfig.fontSize);\r
         return label;\r
     }\r
@@ -208,12 +211,12 @@ namespace OHOS
         LabelConfig labelconfig = {\r
             .left = 90,\r
             .top = 153,\r
-            .width = 200,\r
-            .height = 60,\r
+            .width = 250,\r
+            .height = 40,\r
             .fontSize = 30,\r
             .lineHeigh = 35,\r
             .text = "亮度调节",\r
-            .lineBreakMode = UILabel::LINE_BREAK_ADAPT,\r
+            .lineBreakMode = UILabel::LINE_BREAK_MARQUEE,\r
         };\r
         BringhtnessControlLabel = SetUpLabel(labelconfig);\r
         if (BringhtnessControlLabel == nullptr)\r
@@ -223,6 +226,7 @@ namespace OHOS
         }\r
         /* -------------------------------------------------------------------------- */\r
         labelconfig.top = 273;\r
+        labelconfig.width = 180;\r
         labelconfig.text = "亮屏时长";\r
         ScreenDurationLabel = SetUpLabel(labelconfig);\r
         if (ScreenDurationLabel == nullptr)\r
@@ -233,13 +237,31 @@ namespace OHOS
         /* -------------------------------------------------------------------------- */\r
         labelconfig.top = 393;\r
         labelconfig.text = "抬腕亮屏";\r
-        //labelconfig.text = "4G能力开关";\r
         RaiseToBrightnessLabel = SetUpLabel(labelconfig);\r
         if (RaiseToBrightnessLabel == nullptr)\r
         {\r
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessView::RaiseToBrightnessLabel new fail!");\r
             return false;\r
         }\r
+        /* -------------------------------------------------------------------------- */\r
+        labelconfig = {\r
+            .left = 291,\r
+            .top = 273,\r
+            .width = 65,\r
+            .height = 40,\r
+            .fontSize = 30,\r
+            .lineHeigh = 35,\r
+            .text = "",\r
+            .lineBreakMode = UILabel::LINE_BREAK_MARQUEE,\r
+        };\r
+        selectScreenDurationLabel = SetUpLabel(labelconfig);\r
+        if (selectScreenDurationLabel == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessView::selectScreenDurationLabel new fail!");\r
+            return false;\r
+        }\r
+        selectScreenDurationLabel->SetTextColor(Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff));\r
+        /* -------------------------------------------------------------------------- */\r
         return true;\r
     }\r
 \r
@@ -284,18 +306,19 @@ namespace OHOS
             return false;\r
         }\r
         /* -------------------------------------------------------------------------- */\r
-        imageconfig.x = 43;\r
-        imageconfig.y = 360;\r
-        imageconfig.w = 380;\r
-        imageconfig.h = 100;\r
-        imageconfig.ImageSrc = "/user/res/SETTING_BACKGROUND.bin";\r
+        imageconfig = {\r
+            .x = 43,\r
+            .y = 360,\r
+            .w = 380,\r
+            .h = 100,\r
+            .ImageSrc = "/user/res/SETTING_BACKGROUND.bin",\r
+        };\r
         RaiseToBrightnessImage = SetUpImageView(imageconfig);\r
-        if (nullptr == NextImage[1])\r
+        if (nullptr == RaiseToBrightnessImage)\r
         {\r
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessView::RaiseToBrightnessImage is nullptr!");\r
             return false;\r
         }\r
-\r
         return true;\r
     }\r
 \r
@@ -369,6 +392,10 @@ namespace OHOS
         {\r
             return;\r
         }\r
+        if (!DisplayBrightnessModel::GetInstance()->SelectScreenDurationLabelInit())\r
+        {\r
+            return;\r
+        }\r
         initViewStatus = true;\r
     }\r
 \r
@@ -414,6 +441,16 @@ namespace OHOS
         return p_ScreenDurationView.get();\r
     }\r
 \r
+    UILabelExt *DisplayBrightnessView::GetSelectScreenDurationLabel(void)\r
+    {\r
+        if (selectScreenDurationLabel == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessView::GetSelectScreenDurationLabel selectScreenDurationLabel is nullptr!");\r
+            return nullptr;\r
+        }\r
+        return selectScreenDurationLabel;\r
+    }\r
+\r
     // 1.切换到“屏幕与亮度”视图\r
     bool DisplayBrightnessView::ChangeDisplayBrightnessView(int16_t thisView)\r
     {\r
@@ -515,6 +552,7 @@ namespace OHOS
         DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->Add(ScreenDurationButton);\r
         DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->Add(BringhtnessControlLabel);\r
         DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->Add(ScreenDurationLabel);\r
+        DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->Add(selectScreenDurationLabel);\r
         DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->Add(NextImage[0]);\r
         DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->Add(NextImage[1]);\r
         DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->Add(RaiseToBrightnessImage);\r
index bebac1a..9aac7ce 100644 (file)
@@ -62,28 +62,29 @@ namespace OHOS
         if ((event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) &&
             (event.GetDeltaX() > X_DRAG_OFFSET) && (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY()))))
         {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SettingPresenter::OnDrag ChangeSlice(VIEW_APPLIST)");
-            /*
-               GetPreSliceId作用:是从已存储的切片中获取上一个切片的ID,并且在切片数小于2的情况下返回一个无效的切片ID。
-            */
-            uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
-            if (preSlice == VIEW_APPLIST)
-            {
-                NativeAbility::GetInstance().ChangeSlice(preSlice);
-                return true;
-            }
-            else
-            {
-                NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);
-                return true;
-            }
+            // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SettingPresenter::OnDrag ChangeSlice(VIEW_APPLIST)");
+            // /*
+            //    GetPreSliceId作用:是从已存储的切片中获取上一个切片的ID,并且在切片数小于2的情况下返回一个无效的切片ID。
+            // */
+            // uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
+            // if (preSlice == VIEW_APPLIST)
+            // {
+            //     NativeAbility::GetInstance().ChangeSlice(preSlice);
+            //     return true;
+            // }
+            // else
+            // {
+            //     NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);
+            //     return true;
+            // }
+            NativeAbility::GetInstance().Back();
         }
-        return false;
+        return true;
     }
     // 增加按键事件
     bool SettingPresenter::OnKeyAct(UIView &view, const KeyEvent &event)
     {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SettingPresenter::OnKeyAct");
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SettingPresenter::OnKeyAct");
         uint16 keyID = event.GetKeyId();
         uint16 keyState = event.GetState();
         // 如果是power键就返回上一级
@@ -116,7 +117,7 @@ namespace OHOS
         else
         {
             NativeAbility::GetInstance().EnterSlice(SettingModel::GetInstance().GetSettingIdToViewId().at(index));
-            //NativeAbility::GetInstance().ChangeSlice(SettingModel::GetInstance().GetSettingIdToViewId().at(index));
+            // NativeAbility::GetInstance().ChangeSlice(SettingModel::GetInstance().GetSettingIdToViewId().at(index));
 /* -------------------------------------------------------------------------- */
 #if 0
             if (index == SETTING_ITEM_TWO)