Merge #28 into xts_origin from refs/changes/28/head 29/target/1 30/target/1 31/target/1
author罗正 <1732036298@qq.com>
Wed, 17 Apr 2024 06:39:42 +0000 (06:39 +0000)
committersnickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
Wed, 17 Apr 2024 06:39:42 +0000 (06:39 +0000)
Code review from 罗正

* refs/changes/28/head: (5 commits squashed)

  - 实现导航历史栈功能:
    1.当从一个Slice进入另一个Slice时调用NativeAbility::GetInstance().EnterSlice(sliceId)
    2.NativeAbility::GetInstance().Back 处理后退操作
    3.ChangeSlice不压栈

  - Merge branch &#39;xts_origin&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into xts_origin

  - Merge branch &#39;xts_origin&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into xts_origin

  - 1.优化亮屏时长视图,增加30,60,300秒时长
    2.ConfigModel 增加设置亮屏时长函数
    3.优化Ability.h的EnterSlice和Back函数

  - Merge branch &#39;xts_origin&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into xts_origin

Signed-off-by: 罗正 <1732036298@qq.com>
Reviewed-by: snickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
Merged-by: snickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/28
code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModel.h
code/sdk/application/wearable/fd230app/nativeui/config/src/ConfigModel.cpp
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/include/ScreenDurationView.h
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/nativeabilityfwk/include/Ability.h

index f687ee0..ddba642 100644 (file)
@@ -110,6 +110,7 @@ namespace OHOS
 
         unsigned GetScreenBrightnessValue(void);
         
+        void SetScreenDuration(unsigned int value);
         unsigned int GetScreenDuration(void);
 
         bool GetClassicBlueToothState(void);
index 4cc7222..cf734c4 100644 (file)
@@ -498,7 +498,15 @@ namespace OHOS
         return get_configData_int(CONFIGMODEL_ITEM_SCREEN_BRIGHTNESS_VALUE) ;
     }
 
-    /// @brief 获取亮屏时长三个单选框选中状况,0对应5秒熄屏,1对应10秒熄屏,2对应15秒熄屏
+    /* 
+     * @brief 设置亮屏时长单位ms
+     */    
+    void ConfigModel::SetScreenDuration(unsigned int value)
+    {
+        set_condigData_Int(CONFIGMODEL_ITEM_SCREEN_OFF_TIMEOUT_VALUE,value);
+    }
+
+    /// @brief 获取亮屏时长单位ms
     unsigned int ConfigModel::GetScreenDuration(void)
     {
         return get_configData_int(CONFIGMODEL_ITEM_SCREEN_OFF_TIMEOUT_VALUE);
index a9eb810..336a071 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-16 17:05:46\r
+ * @LastEditTime: 2024-04-17 10:33:16\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/displaybrightness/include/DisplayBrightnessModel.h\r
  */\r
 #ifndef DISPLAY_BRIGHTNESS_MODEL_H_\r
@@ -17,8 +17,6 @@ namespace OHOS
         static DisplayBrightnessModel *GetInstance(void);\r
         void SetRaiseToBrightnessCheckBoxButtonStatus(bool value);\r
         bool RaiseToBrightnessCheckBoxButtonStatusInit(void);\r
-        void KeepScreenBrightnessValues(unsigned char value);\r
-        void KeepScreenDurationRadioButtonSlectStatus(unsigned int value);\r
         bool ScreenDurationRadioButtonSlectStatusInit(void);\r
         void SetScreenDurationTime(unsigned int time);\r
         unsigned int GetScreenDurationTime(void);\r
@@ -30,8 +28,6 @@ namespace OHOS
 \r
     private:\r
         bool RaiseToBrightnessCheckBoxButtonState{false};    // 抬腕按钮状态 ,默认补选中\r
-        unsigned char ScreenBrightnessValue{255};            // 亮度值 ,默认最大亮度\r
-        unsigned int ScreenDurationIndex{1}; // 亮屏时长 ,1对应10秒后熄屏\r
         unsigned int ScreenDurationTime{10000};\r
     };\r
 }\r
index d1f38af..6d4d545 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-16 17:08:18\r
+ * @LastEditTime: 2024-04-17 10:21:03\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/displaybrightness/include/DisplayBrightnessPresenter.h\r
  */\r
 #ifndef _DISPLAY_BRIGHTNESS_PRESENTER_H\r
@@ -33,9 +33,12 @@ namespace OHOS
     /// @brief 亮屏时长\r
     typedef enum : uint32_t\r
     {\r
-        SCREENDURATIONFIVE = 1000 * 5,       // 5秒后熄屏\r
-        SCREENDURATIONTEN = 1000 * 10,       // 10秒后熄屏\r
-        SCREENDURATIONFIFTEENTH = 1000 * 15, // 15秒后熄屏\r
+        SCREENDURATION_FIVE = 1000 * 5,            // 5秒后熄屏\r
+        SCREENDURATION_TEN = 1000 * 10,            // 10秒后熄屏\r
+        SCREENDURATION_FIFTEENTH = 1000 * 15,      // 15秒后熄屏\r
+        SCREENDURATION_THIRTY = 1000 * 30,         // 30秒后熄屏\r
+        SCREENDURATION_SIXTY = 1000 * 60,          // 60秒后熄屏\r
+        SCREENDURATION_THREE_HUNDRED = 1000 * 300, // 300秒后熄屏\r
     } ScreenDurationTime;\r
 \r
     typedef enum\r
@@ -43,17 +46,16 @@ namespace OHOS
         ScreenDurationRadioButton1 = 0,\r
         ScreenDurationRadioButton2,\r
         ScreenDurationRadioButton3,\r
+        ScreenDurationRadioButton4,\r
+        ScreenDurationRadioButton5,\r
+        ScreenDurationRadioButton6,\r
+        Max_ScreenDurationRadioButton,\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
 \r
-    static const char *SCREENDURATION_FIVESECONDS_VIEWID = "SCREENDURATION_FIVESECONDS";       // 5秒时长\r
-    static const char *SCREENDURATION_TENSECONDS_VIEWID = "SCREENDURATION_TENSECONDS";         // 10秒时长\r
-    static const char *SCREENDURATION_FIFTEENSECONDS_VIEWID = "SCREENDURATION_FIFTEENSECONDS"; // 15秒时长\r
-\r
-\r
     class ScreenDurationRadiobuttonOnChangeListener : public UICheckBox::OnChangeListener\r
     {\r
     public:\r
index 7942656..cfdb2a6 100644 (file)
 #include "components/ui_radio_button.h"\r
 #include "DisplayBrightnessPresenter.h"\r
 #include "displaybrightness/include/ScreenDurationView.h"\r
+#include "memory"\r
 namespace OHOS\r
 {\r
-\r
+    static constexpr const char *DISPLAY_BRIGHTNESS_VIEW = "DisplayBrightnessView";\r
     class DisplayBrightnessPresenter;\r
     class DisplayBrightnessView : public View<DisplayBrightnessPresenter>\r
     {\r
@@ -77,7 +78,8 @@ 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
     private:\r
         bool SetUpScrollView(void);\r
         bool SetTheTitle(void);\r
index 7e8876f..a5ba75b 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-17 11:45:54\r
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/displaybrightness/include/ScreenDurationView.h\r
+ */\r
 #ifndef SCREEN_DUATION_VIEW_H\r
 #define SCREEN_DUATION_VIEW_H\r
 // 屏幕时长\r
 #include "View.h"\r
 #include "components/ui_scroll_view.h"\r
 #include "components/ui_image_view.h"\r
-#include "components/ui_label.h"\r
 #include "components/ui_label_ext.h"\r
 #include "components/ui_radio_button.h"\r
 namespace OHOS\r
 {\r
+#define DURATIONS 6\r
+    static constexpr const char *SCREENDURATIONSCROLLVIEW = "ScreenDurationView";\r
     class ScreenDurationView\r
     {\r
     public:\r
@@ -19,7 +27,6 @@ namespace OHOS
             int16_t y;\r
             int16_t w;\r
             int16_t h;\r
-            const char *ImageSrc;\r
         };\r
         struct LabelConfig\r
         {\r
@@ -38,7 +45,7 @@ namespace OHOS
             int16_t y;\r
             int16_t w;\r
             int16_t h;\r
-            const char *viewId;\r
+            // const char *viewId;\r
             const char *select;\r
             const char *unselect;\r
         };\r
@@ -49,20 +56,21 @@ namespace OHOS
         void ClearAll(void);\r
         UIRadioButton *GetRadioButton(int16_t i);\r
         void SetRadioButtonSelectStatus(int16_t i);\r
+\r
     private:\r
         UIImageView *SetUpImageView(ImageConfig &imageconfig);                 // 设置图片\r
-        UILabel *SetUpLabel(LabelConfig &labelconfig);                         // 设置标签\r
+        UILabelExt *SetUpLabel(LabelConfig &labelconfig);                      // 设置标签\r
         UIRadioButton *SetUpRadioButton(RadioButtonConfig &radiobuttonconfig); // 设置单选框\r
         bool SetUpScrollView(void);\r
         bool SetUpScreenDurationViewLabel(void);\r
         bool SetUpScreenDurationViewImageView(void);\r
         bool SetUpScreenDurationViewRadioButton(void);\r
         UIScrollView *ScreenDurationScrollView = nullptr;\r
-        UILabel *ScreenDurationTitleLabel = nullptr;          // 标题\r
-        UILabel *ScreenDurationLabel[3]{nullptr};             // 亮屏时长标签\r
-        UIImageView *BackGroundImage[3]{nullptr};             // 放置组件的背景\r
-        UIRadioButton *ScreenDurationRadioButton[3]{nullptr}; // 三个单选框\r
-        UICheckBox::OnChangeListener *SimplifiedChineseRadioButtonChange[3]{nullptr};\r
+        UILabelExt *ScreenDurationTitleLabel = nullptr;               // 标题\r
+        UILabelExt *ScreenDurationLabel[DURATIONS]{nullptr};          // 亮屏时长标签\r
+        UIImageView *BackGroundImage[DURATIONS]{nullptr};             // 放置组件的背景\r
+        UIRadioButton *ScreenDurationRadioButton[DURATIONS]{nullptr}; // 单选框\r
+        UICheckBox::OnChangeListener *SimplifiedChineseRadioButtonChange[DURATIONS]{nullptr};\r
         bool initViewStatus{false};\r
     };\r
 } // namespace OHOS\r
index 99cd15e..3f357fc 100644 (file)
@@ -1,3 +1,10 @@
+/*
+ * @Author: luozheng 1732036298@qq.com
+ * @Date: 2024-04-12 20:11:04
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-04-17 10:33:29
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/displaybrightness/src/DisplayBrightnessModel.cpp
+ */
 #include "displaybrightness/include/DisplayBrightnessModel.h"
 #include "displaybrightness/include/DisplayBrightnessPresenter.h"
 #include "wearable_log.h"
@@ -10,8 +17,6 @@ namespace OHOS
     {
         ConfigModel *p_ConfigModel = ConfigModel::GetInstance();
         RaiseToBrightnessCheckBoxButtonState = p_ConfigModel->GetRaiseToWake();
-        ScreenBrightnessValue = p_ConfigModel->GetScreenBrightnessValue();
-        ScreenDurationIndex =p_ConfigModel->GetScreenDuration();
     }
 
     DisplayBrightnessModel::~DisplayBrightnessModel() {}
@@ -44,21 +49,6 @@ namespace OHOS
         return true;
     }
 
-    /// @brief 亮度值
-    /// @param value
-    void DisplayBrightnessModel::KeepScreenBrightnessValues(unsigned char value)
-    {
-        ScreenBrightnessValue = value;
-    }
-
-
-    /// @brief 保存哪个亮屏时长按钮被选中
-    /// @param value 0 5秒后熄屏 1 10秒后熄屏 2 15秒后熄屏
-    void DisplayBrightnessModel::KeepScreenDurationRadioButtonSlectStatus(unsigned int value)
-    {
-        ScreenDurationIndex = value*5000+5000;
-    }
-
     /// @brief 亮屏时长按钮选中状态初始化
     /// @param
     /// @return
@@ -70,7 +60,7 @@ namespace OHOS
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessViewAndSubViewComponentsStatusInit DisplayBrightnessPresenter GetInstance fail");
             return false;
         }
-        displayBrightnessPresent->SetScreenDurationRadioButtonSlectStatus( (ScreenDurationIndex - 5000)/5000);
+        displayBrightnessPresent->SetScreenDurationRadioButtonSlectStatus(GetScreenDurationTime());
         return true;
     }
 
@@ -78,12 +68,12 @@ namespace OHOS
     /// @param time
     void DisplayBrightnessModel::SetScreenDurationTime(unsigned int time)
     {
-        ScreenDurationTime = time;
+        ConfigModel::GetInstance()->SetScreenDuration(time);
     }
 
     // 获取亮屏时长,单位ms
     unsigned int DisplayBrightnessModel::GetScreenDurationTime(void)
     {
-        return ScreenDurationTime;
+        return ConfigModel::GetInstance()->GetScreenDuration();
     }
 }
index 050cbee..f2657c9 100644 (file)
@@ -60,19 +60,31 @@ namespace OHOS
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetScreenDurationRadioButtonSlectStatus ScreenDurationView GetInstance fail");\r
             return;\r
         }\r
-        if (value == ScreenDurationRadioButton1)\r
+        switch (value)\r
         {\r
+        case SCREENDURATION_FIVE:\r
             p_ScreenDurationView->SetRadioButtonSelectStatus(ScreenDurationRadioButton1);\r
-        }\r
-        else if (value == ScreenDurationRadioButton2)\r
-        {\r
+            break;\r
+        case SCREENDURATION_TEN:\r
             p_ScreenDurationView->SetRadioButtonSelectStatus(ScreenDurationRadioButton2);\r
-        }\r
-        else\r
-        {\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
         }\r
-        DisplayBrightnessModel::GetInstance()->KeepScreenDurationRadioButtonSlectStatus(ScreenDurationRadioButton1); // 将Model层保存的状态清除\r
+        return;\r
     }\r
 \r
     void DisplayBrightnessPresenter::OnStart()\r
@@ -104,7 +116,7 @@ namespace OHOS
         // 根据控件id查找是哪个控件触发了点击回调\r
         if (strcmp(view.GetViewId(), BRINGHTNESSCONTROLBUTTON_VIEW) == 0)\r
         {\r
-            //NativeAbility::GetInstance().ChangeSlice(VIEW_BRIGHTNESSLEVEL);\r
+            // NativeAbility::GetInstance().ChangeSlice(VIEW_BRIGHTNESSLEVEL);\r
             NativeAbility::GetInstance().EnterSlice(VIEW_BRIGHTNESSLEVEL);\r
             return true;\r
         }\r
@@ -128,26 +140,21 @@ namespace OHOS
         DisplayBrightnessView *p_DisplayBrightnessView = DisplayBrightnessView::GetInstance();\r
         if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)\r
         {\r
-            for (int i = 0; i < MAX_DISPLAYBRIGHTNESSVIEWID; i++)\r
+            if (strcmp(view.GetViewId(), SCREENDURATIONSCROLLVIEW) == 0)\r
             {\r
-                if (p_DisplayBrightnessView->GetDisplayBrightnessScrollView(i) != nullptr &&\r
-                    p_DisplayBrightnessView->GetDisplayBrightnessScrollView(i)->IsVisible() == true)\r
-                {\r
-                    if (i == DISPLAYBRIGHTNESSVIEW)\r
-                    {\r
-                        NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);\r
-                    }\r
-                    else\r
-                    {\r
-                        p_DisplayBrightnessView->ChangeView(i, DISPLAYBRIGHTNESSVIEW);\r
-                    }\r
-                    break;\r
-                }\r
+                p_DisplayBrightnessView->ChangeView(SCREENDURATIONVIEW, DISPLAYBRIGHTNESSVIEW);\r
+            }\r
+            else if (strcmp(view.GetViewId(), DISPLAY_BRIGHTNESS_VIEW) == 0)\r
+            {\r
+                //NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);\r
+                NativeAbility::GetInstance().Back();\r
+                return true;\r
             }\r
         }\r
         return true;\r
     }\r
 \r
+    /*处理抬腕亮屏开关*/\r
     bool DisplayBrightnessPresenter::OnChange(UICheckBox::UICheckBoxState state)\r
     {\r
         switch (state)\r
@@ -173,21 +180,12 @@ namespace OHOS
         // 如果是power键,且是亮屏状态,按键释放就返回上一级\r
         if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0)\r
         {\r
-            // uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();\r
-            // if (preSlice == VIEW_BRIGHTNESSLEVEL)\r
-            // {\r
-            //     NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);\r
-            // }\r
-            // else\r
-            // {\r
-                \r
-            //     NativeAbility::GetInstance().ChangeSlice(preSlice);\r
-            // }\r
             NativeAbility::GetInstance().Back();\r
         }\r
         return true;\r
     }\r
 \r
+    /*处理亮屏时长*/\r
     bool ScreenDurationRadiobuttonOnChangeListener::OnChange(UICheckBox::UICheckBoxState state)\r
     {\r
         DisplayBrightnessView *p_DisplayBrightnessView = DisplayBrightnessView::GetInstance();\r
@@ -196,7 +194,6 @@ 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
@@ -205,22 +202,43 @@ namespace OHOS
                 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
-                    DisplayBrightnessModel::GetInstance()->SetScreenDurationTime(SCREENDURATIONFIVE);\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
-                    display_api->set_screen_auto_off_timeout(SCREENDURATIONTEN);\r
-                    DisplayBrightnessModel::GetInstance()->SetScreenDurationTime(SCREENDURATIONTEN);\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
-                    display_api->set_screen_auto_off_timeout(SCREENDURATIONFIFTEENTH);\r
-                    DisplayBrightnessModel::GetInstance()->SetScreenDurationTime(SCREENDURATIONFIFTEENTH);\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
@@ -233,5 +251,4 @@ namespace OHOS
         }\r
         return false;\r
     }\r
-\r
 }
\ No newline at end of file
index d0f053b..eada01a 100644 (file)
@@ -75,9 +75,6 @@ namespace OHOS
             delete RaiseToBrightnessCheckBoxButton;\r
             RaiseToBrightnessCheckBoxButton = nullptr;\r
 \r
-            delete p_ScreenDurationView;\r
-            p_ScreenDurationView = nullptr;\r
-\r
             delete DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW];\r
             DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW] = nullptr;\r
         }\r
@@ -93,6 +90,7 @@ namespace OHOS
             return false;\r
         }\r
         DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
+        DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->SetViewId(DISPLAY_BRIGHTNESS_VIEW);\r
         DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->SetScrollBlankSize(35);\r
         DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->SetReboundSize(50);\r
         DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->SetDirection(1);\r
@@ -413,7 +411,7 @@ namespace OHOS
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessView::GetScreenDurationView p_ScreenDurationView is nullptr!");\r
             return nullptr;\r
         }\r
-        return p_ScreenDurationView;\r
+        return p_ScreenDurationView.get();\r
     }\r
 \r
     // 1.切换到“屏幕与亮度”视图\r
@@ -433,7 +431,7 @@ namespace OHOS
         if (DisplayBrightnessScrollView[thisView] == nullptr)\r
         {\r
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessView::ChangeScreenDurationView");\r
-            p_ScreenDurationView = new ScreenDurationView();\r
+            p_ScreenDurationView = std::make_shared<ScreenDurationView>();\r
             if (p_ScreenDurationView == nullptr)\r
             {\r
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessView:: new scrollView[%d] fail", thisView);\r
index 8233580..c043c8a 100644 (file)
@@ -30,23 +30,11 @@ namespace OHOS
         if (initViewStatus == true)\r
         {\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
-            /** 0 5000ms, 1 10000ms, 2 15000ms */\r
-            ConfigModel::GetInstance()->set_condigData_Int(ConfigModel::ConfigItem::CONFIGMODEL_ITEM_SCREEN_OFF_TIMEOUT_VALUE,i*5000+5000);\r
-\r
+            \r
             delete ScreenDurationTitleLabel;\r
             ScreenDurationTitleLabel = nullptr;\r
 \r
-            for (int i = 0; i < 3; i++)\r
+            for (int i = 0; i < DURATIONS; i++)\r
             {\r
                 delete ScreenDurationLabel[i];\r
                 ScreenDurationLabel[i] = nullptr;\r
@@ -65,16 +53,6 @@ namespace OHOS
         }\r
     }\r
 \r
-    UIRadioButton *ScreenDurationView::GetRadioButton(int16_t i)\r
-    {\r
-        if (ScreenDurationRadioButton[i] == nullptr)\r
-        {\r
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScreenDurationView::ScreenDurationRadioButton[%d] is nullptr!", i);\r
-            return nullptr;\r
-        }\r
-        return ScreenDurationRadioButton[i];\r
-    }\r
-\r
     // 设置图片\r
     UIImageView *ScreenDurationView::SetUpImageView(ImageConfig &imageconfig)\r
     {\r
@@ -84,14 +62,16 @@ namespace OHOS
             return nullptr;\r
         }\r
         Image->SetPosition(imageconfig.x, imageconfig.y, imageconfig.w, imageconfig.h);\r
-        Image->SetSrc(imageconfig.ImageSrc);\r
+        Image->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);\r
+        Image->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+        Image->SetStyle(STYLE_BORDER_RADIUS, 100);\r
         return Image;\r
     }\r
 \r
     // 设置标签\r
-    UILabel *ScreenDurationView::SetUpLabel(LabelConfig &labelconfig)\r
+    UILabelExt *ScreenDurationView::SetUpLabel(LabelConfig &labelconfig)\r
     {\r
-        UILabel *label = new UILabel();\r
+        UILabelExt *label = new UILabelExt();\r
         if (label == nullptr)\r
         {\r
             return nullptr;\r
@@ -130,6 +110,7 @@ namespace OHOS
             return false;\r
         }\r
         ScreenDurationScrollView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
+        ScreenDurationScrollView->SetViewId(SCREENDURATIONSCROLLVIEW);\r
         ScreenDurationScrollView->SetScrollBlankSize(35);\r
         ScreenDurationScrollView->SetReboundSize(50);\r
         ScreenDurationScrollView->SetDirection(1);\r
@@ -153,10 +134,9 @@ namespace OHOS
             .y = 120,\r
             .w = 380,\r
             .h = 100,\r
-            .ImageSrc = "/user/res/SETTING_BACKGROUND.bin",\r
         };\r
 \r
-        for (int i = 0; i < 3; i++)\r
+        for (int i = 0; i < DURATIONS; i++)\r
         {\r
             imageconfig.y = 120 + (i * 120);\r
             BackGroundImage[i] = SetUpImageView(imageconfig);\r
@@ -174,14 +154,14 @@ namespace OHOS
     {\r
         // 创建ScreenDurationTitleLabel\r
         LabelConfig labelconfig = {\r
-            .left = 173,\r
+            .left = 93,\r
             .top = 52,\r
-            .width = 120,\r
-            .height = 35,\r
+            .width = 280,\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
 \r
         ScreenDurationTitleLabel = SetUpLabel(labelconfig);\r
@@ -199,9 +179,9 @@ namespace OHOS
             .lineBreakMode = UILabel::LINE_BREAK_ADAPT,\r
         };\r
 \r
-        const char *durations[] = {"5秒", "10秒", "15秒"};\r
+        const char *durations[DURATIONS] = {"5秒", "10秒", "15秒", "30秒", "60秒", "300秒"};\r
 \r
-        for (int i = 0; i < 3; i++)\r
+        for (int i = 0; i < DURATIONS; i++)\r
         {\r
             labelconfig.top = 153 + (i * 120);\r
             labelconfig.text = durations[i];\r
@@ -227,12 +207,10 @@ namespace OHOS
             .unselect = "/user/res/CHECKBOX_OFF.bin",\r
         };\r
 \r
-        int y_positions[] = {130, 250, 370};\r
-        const char *viewID[] = {SCREENDURATION_FIVESECONDS_VIEWID, SCREENDURATION_TENSECONDS_VIEWID, SCREENDURATION_FIFTEENSECONDS_VIEWID};\r
-        for (int i = 0; i < 3; i++)\r
+        int y_positions = 130;\r
+        for (int i = 0; i < DURATIONS; i++)\r
         {\r
-            radiobuttonconfig.y = y_positions[i];\r
-            radiobuttonconfig.viewId = viewID[i];\r
+            radiobuttonconfig.y = y_positions + 120 * i;\r
             ScreenDurationRadioButton[i] = SetUpRadioButton(radiobuttonconfig);\r
             if (ScreenDurationRadioButton[i] == nullptr)\r
             {\r
@@ -246,9 +224,27 @@ namespace OHOS
         return true;\r
     }\r
 \r
+    // 设置哪个单选按钮被选中\r
     void ScreenDurationView::SetRadioButtonSelectStatus(int16_t i)\r
     {\r
-        GetRadioButton(i)->SetState(UICheckBox::SELECTED);\r
+        if (GetRadioButton(i) != nullptr)\r
+        {\r
+            GetRadioButton(i)->SetState(UICheckBox::SELECTED);\r
+        }\r
+        else\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScreenDurationView::GetRadioButton(%d) is nullptr!", i);\r
+        }\r
+    }\r
+\r
+    UIRadioButton *ScreenDurationView::GetRadioButton(int16_t i)\r
+    {\r
+        if (ScreenDurationRadioButton[i] == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScreenDurationView::ScreenDurationRadioButton[%d] is nullptr!", i);\r
+            return nullptr;\r
+        }\r
+        return ScreenDurationRadioButton[i];\r
     }\r
 \r
     // 亮屏时长视图初始化\r
@@ -283,7 +279,7 @@ namespace OHOS
 \r
         /* ----------------------------------- Add ---------------------------------- */\r
         ScreenDurationScrollView->Add(ScreenDurationTitleLabel);\r
-        for (int i = 0; i < 3; i++)\r
+        for (int i = 0; i < DURATIONS; i++)\r
         {\r
             ScreenDurationScrollView->Add(BackGroundImage[i]);\r
             ScreenDurationScrollView->Add(ScreenDurationLabel[i]);\r
index 77dc388..7f7e851 100755 (executable)
@@ -70,21 +70,23 @@ public:
     }
 
     // 当从一个Slice进入另一个Slice时调用
-    void EnterSlice(uint16_t sliceId) {
+    void EnterSlice(uint16_t sliceId,const uint16_t transitionId = TRANSITION_INVALID,
+        const uint16_t priority = gSliceDefaultPriority) {
         // 获取当前SliceID
         uint16_t curSliceId = GetCurSliceId();
         if (curSliceId != defaultSliceId_) { // 假定defaultSliceId_是“主页”或启动Slice的ID
             backStack_.push(curSliceId);
         }
-        ChangeSlice(sliceId); // 切换到新的Slice
+        ChangeSlice(sliceId,transitionId,priority); // 切换到新的Slice
     }
 
     // 处理后退操作
-    bool Back() {
+    bool Back(const uint16_t transitionId = TRANSITION_INVALID,
+        const uint16_t priority = gSliceDefaultPriority) {
         if (!backStack_.empty()) {
             uint16_t preSlice = backStack_.top();
             backStack_.pop();
-            ChangeSlice(preSlice);
+            ChangeSlice(preSlice,transitionId,priority);
             return true;
         }
         return false; // 没有更多的Slice可以后退