修改屏幕与亮度视图:亮度调节更改为“屏幕与亮度”的子视图
authorluozheng <1732036298@qq.com>
Sun, 18 Feb 2024 03:32:05 +0000 (11:32 +0800)
committerluozheng <1732036298@qq.com>
Sun, 18 Feb 2024 03:32:05 +0000 (11:32 +0800)
14 files changed:
code/sdk/application/wearable/fd230app/CMakeLists.txt
code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h
code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h
code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.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/DisplayBrightnessPresent.cpp
code/sdk/application/wearable/fd230app/nativeui/displaybrightness/src/DisplayBrightnessView.cpp
code/sdk/application/wearable/fd230app/nativeui/system/include/SystemPresenter.h
code/sdk/application/wearable/fd230app/nativeui/system/src/SystemPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/system/src/SystemView.cpp

index 492b2bf..ca08340 100644 (file)
@@ -260,7 +260,6 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/displaybrightness/src/DisplayBrightnessModel.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/displaybrightness/src/DisplayBrightnessPresent.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/displaybrightness/src/DisplayBrightnessView.cpp
-    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/displaybrightness/src/BrightnessControlPresenter.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/displaybrightness/src/BrightnessControlView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/displaybrightness/src/ScreenDurationPresenter.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/displaybrightness/src/ScreenDurationView.cpp
index 48657d9..1ac9929 100644 (file)
@@ -50,7 +50,6 @@ typedef enum : uint16_t
     VIEW_CALL_VOLUME,             // 通话音量
     VIEW_MEDIA_VOLUME,            // 媒体音量
     VIEW_DISPLAY_BRIGHTNESS,      // 屏幕与亮度
-    VIEW_BRIGHTNESS_CONTROL,      // 亮度调节
     VIEW_SCREEN_DURATION,         // 亮屏时长
     VIEW_SECONDARY_FUNCTION,      // 辅助功能
     VIEW_QUICK_ACCESS,            // 快速访问
index e7d0021..67c76d3 100644 (file)
@@ -57,7 +57,6 @@ namespace OHOS
         void InitMessageSlice(void);
         /* -------------------------------------------------------------------------- */
         void InitUIDisplayBrightnessSlice(void);
-        void InitBrightnessControlSlice(void);
         void InitScreenDurationSlice(void);
         /* --------------------------------测试界面------------------------------------ */
         void InitDialSlice(void);
index ff31e00..81cb8d6 100644 (file)
@@ -80,8 +80,6 @@
 
 #include "displaybrightness/include/DisplayBrightnessPresenter.h"
 #include "displaybrightness/include/DisplayBrightnessView.h"
-#include "displaybrightness/include/BrightnessControlPresenter.h"
-#include "displaybrightness/include/BrightnessControlView.h"
 #include "displaybrightness/include/ScreenDurationPresenter.h"
 #include "displaybrightness/include/ScreenDurationView.h"
 
@@ -149,7 +147,6 @@ namespace OHOS
         {VIEW_SYSTEM_VOLUME, &NativeLauncher::InitSystemVolumeSlice},                 // 系统音量
 
         {VIEW_DISPLAY_BRIGHTNESS, &NativeLauncher::InitUIDisplayBrightnessSlice}, // 显示与亮度的实例化地址
-        {VIEW_BRIGHTNESS_CONTROL, &NativeLauncher::InitBrightnessControlSlice},   // 调节亮度的实例化地址
         {VIEW_SCREEN_DURATION, &NativeLauncher::InitScreenDurationSlice},         // 亮屏时长实例化地址
 
         {VIEW_SECONDARY_FUNCTION, &NativeLauncher::InitSecondaryFunction},
@@ -563,16 +560,6 @@ namespace OHOS
         NativeAbility::GetInstance().AddSliceProxy(VIEW_DISPLAY_BRIGHTNESS, uidisplaybrightnessView);
     }
 
-    void NativeLauncher::InitBrightnessControlSlice(void)
-    {
-        SliceProxy *brightnesscontrol = new AbilitySliceProxy<BrightnessControlView, BrightnessControlPresenter>;
-        if (brightnesscontrol == nullptr)
-        {
-            return;
-        }
-        NativeAbility::GetInstance().AddSliceProxy(VIEW_BRIGHTNESS_CONTROL, brightnesscontrol);
-    }
-
     void NativeLauncher::InitScreenDurationSlice(void)
     {
         SliceProxy *ScreenDuration = new AbilitySliceProxy<ScreenDurationView, ScreenDurationPresenter>;
index fd14916..e2458cd 100644 (file)
@@ -3,41 +3,35 @@
 \r
 #include "BaseView.h"\r
 #include "View.h"\r
-\r
-#include "components/ui_view_group.h"\r
+#include "components/ui_scroll_view.h"\r
 #include "components/ui_slider.h"\r
 #include "components/ui_image_view.h"\r
 namespace OHOS\r
 {\r
-   static const char *BRIGHTNESS_CONTROL_SLIDER = "BCslider";\r
+#define BRIGHTNESS_MIN 0\r
+#define BRIGHTNESS_MAX 100\r
+#define BRIGHTNESS_PROGRESS "progress"\r
+\r
+    static const char *BRIGHTNESS_CONTROL_SLIDER = "BrightnessControlViewSlider";\r
 \r
-    class BrightnessControlPresenter;\r
-    class BrightnessControlView : public View<BrightnessControlPresenter>{ \r
- \r
+    class BrightnessControlView\r
+    {\r
     public:\r
-        BrightnessControlView();                         \r
-        virtual ~BrightnessControlView();                 \r
-        static BrightnessControlView *GetInstance(void);  \r
- \r
-        void OnStart() override;        \r
-        void OnSetUpView() override;    \r
-        void OnTearDownView() override; \r
-        void OnStop() override;         \r
-    \r
-    private:\r
-        UIView::OnDragListener *draglistener{nullptr}; \r
-        UIView::OnClickListener *sliderClick{nullptr};\r
-        UIView::OnDragListener *sliderDrag{nullptr};\r
-        void InitView(void);\r
+        BrightnessControlView();\r
+        virtual ~BrightnessControlView();\r
+        static BrightnessControlView *GetInstance(void);\r
+        UIScrollView *BrightnessControlViewInit(void);\r
+        void ClearAll(void);\r
 \r
-        UIViewGroup* container_ = nullptr;\r
-        UISlider* BCslider = nullptr;\r
-        UIImageView* BCimageicon = nullptr;\r
+    private:\r
+        bool SetUpScrollView(void);\r
+        bool SetUpSlider(void);\r
+        bool SetUpImageView(void);\r
+        UIScrollView *BrightnessControlScrollView{nullptr};\r
+        UISlider *BrightnessControlViewSlider = nullptr;\r
+        UIImageView *BrightnessControlViewImageIcon = nullptr;\r
+        bool initViewStatus{false};\r
     };\r
-} //namespace OHOS\r
-\r
-\r
-\r
-\r
+} // namespace OHOS\r
 \r
 #endif
\ No newline at end of file
index 62ff1bb..fb924aa 100644 (file)
@@ -7,6 +7,14 @@
 \r
 namespace OHOS\r
 {\r
+    typedef enum\r
+    {\r
+        DISPLAYBRIGHTNESSVIEW = 0, // 屏幕与亮度视图(slice)\r
+        BRIGHTNESSCONTROLVIEW,     // 亮度调节视图(subView)\r
+        SCREENDURATIONVIEW,        // 亮屏时长视图(subView)\r
+        MAX_DISPLAYBRIGHTNESSVIEWID,\r
+    } DISPLAYBRIGHTNESSVIEWID;\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
index 3f71763..0f5160c 100644 (file)
@@ -9,6 +9,7 @@
 #include "components/ui_scroll_view.h"\r
 #include "components/ui_checkbox.h"\r
 #include "DisplayBrightnessPresenter.h"\r
+#include "displaybrightness/include/BrightnessControlView.h"\r
 namespace OHOS\r
 {\r
 \r
@@ -59,13 +60,20 @@ namespace OHOS
         static DisplayBrightnessView *GetInstance(void);\r
         void DisplayAndBrightnessViewInit(void);\r
         void ClearAll(void);\r
-\r
+        bool ChangeDisplayBrightnessView(int16_t thisView); // 切换到“屏幕与亮度”视图\r
+        bool ChangeBrightnessControlView(int16_t thisView); // 切换到“亮度调节”视图\r
+        bool ChangeScreenDurationView(int16_t thisView);    // 切换到亮屏时长视图\r
+        bool ClickFunc(int16_t interface);\r
+        void ChangeView(int16_t hideView, int16_t showView);\r
+        UIScrollView *GetDisplayBrightnessScrollView(int16_t i);\r
     public:\r
         void OnStart() override;\r
         void OnSetUpView() override;\r
         void OnTearDownView() override;\r
         void OnStop() override;\r
 \r
+    private:\r
+        BrightnessControlView *p_BrightnessControlView{nullptr}; // 亮度调节视图\r
     private:\r
         bool SetUpScrollView(void);\r
         bool SetTheTitle(void);\r
@@ -77,13 +85,13 @@ namespace OHOS
         bool InitDisplayBrightnessViewImage(void);\r
         UICheckBox *SetUpCheckBox(CheckBoxConfig &checkboxconfig); // 设置复选框\r
         bool InitDisplayBrightnessViewCheckBox(void);\r
-        UIScrollView *scrollView = 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
+        UIScrollView *DisplayBrightnessScrollView[3]{nullptr}; // “3”表示有三个界面\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
         UIImageView *NextImage[2]{nullptr};\r
         UIImageView *RaiseToBrightnessImage = nullptr; // 抬腕亮屏图片\r
         UICheckBox *RaiseToBrightnessCheckBoxButton = nullptr;\r
index 62af870..94aaa7f 100644 (file)
 #include "displaybrightness/include/BrightnessControlView.h"\r
-#include "displaybrightness/include/BrightnessControlPresenter.h"\r
-#include "UiConfig.h"\r
+#include "displaybrightness/include/DisplayBrightnessPresenter.h"\r
+#include "wearable_log.h"\r
 namespace OHOS\r
 {\r
-\r
     static BrightnessControlView *g_pBrightnessControlView{nullptr};\r
-\r
     BrightnessControlView::BrightnessControlView()\r
     {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BrightnessControlView::BrightnessControlView");\r
         g_pBrightnessControlView = this;\r
     }\r
 \r
     BrightnessControlView::~BrightnessControlView()\r
     {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BrightnessControlView::~BrightnessControlView");\r
+        ClearAll();\r
         g_pBrightnessControlView = nullptr;\r
-        if (container_ != nullptr)\r
-        {\r
-            delete container_;\r
-            container_ = nullptr;\r
-        }\r
-        if (BCslider != nullptr)\r
-        {\r
-            delete BCslider;\r
-            BCslider = nullptr;\r
-        }\r
-        if (BCimageicon != nullptr)\r
-        {\r
-            delete BCimageicon;\r
-            BCimageicon = nullptr;\r
-        }\r
     }\r
 \r
     BrightnessControlView *BrightnessControlView::GetInstance()\r
     {\r
-\r
         return g_pBrightnessControlView;\r
     }\r
-    void BrightnessControlView::InitView(void)\r
+\r
+    void BrightnessControlView::ClearAll(void)\r
     {\r
-        if (container_ == nullptr)\r
+        if (initViewStatus == true)\r
         {\r
-            container_ = new UIViewGroup();\r
-            container_->SetPosition(0, 0, 466, 466);\r
-            container_->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
-            container_->SetStyle(STYLE_BACKGROUND_COLOR, 0x000000);\r
+            BrightnessControlScrollView->RemoveAll();\r
+\r
+            delete BrightnessControlViewSlider;\r
+            BrightnessControlViewSlider = nullptr;\r
+\r
+            delete BrightnessControlViewImageIcon;\r
+            BrightnessControlViewImageIcon = nullptr;\r
+\r
+            delete BrightnessControlScrollView;\r
+            BrightnessControlScrollView = nullptr;\r
         }\r
-        draglistener = static_cast<UIView::OnDragListener *>(BrightnessControlPresenter::GetInstance());\r
-        container_->SetOnDragListener(draglistener);\r
-        container_->SetTouchable(true);\r
-        container_->SetDraggable(true);\r
-        /********************************************************************************************************/\r
-        if (BCslider == nullptr)\r
+    }\r
+\r
+    // 显示与亮度视图scrollView初始化\r
+    bool BrightnessControlView::SetUpScrollView(void)\r
+    {\r
+        BrightnessControlScrollView = new UIScrollView();\r
+        if (BrightnessControlScrollView == nullptr)\r
         {\r
-            BCslider = new UISlider();\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BrightnessControlView::BrightnessControlScrollView new fail!");\r
+            return false;\r
         }\r
-        BCslider->SetPosition(167, 77);\r
-        BCslider->Resize(130, 310);\r
-        BCslider->SetViewId(BRIGHTNESS_CONTROL_SLIDER);\r
-        BCslider->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
-        BCslider->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
-        BCslider->SetStyle(STYLE_BORDER_OPA, 0x19);\r
-        BCslider->SetStyle(STYLE_BORDER_RADIUS, 100);\r
-        BCslider->SetDirection(UISlider::Direction::DIR_BOTTOM_TO_TOP);\r
-        BCslider->SetValue(20);\r
-        BCslider->SetSliderColor(Color::GetColorFromRGBA(0x19, 0x19, 0x19, 0xff), Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0xff));\r
-        BCslider->SetKnobStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
-        BCslider->SetForegroundStyle(STYLE_BACKGROUND_OPA, 0xff);\r
-        BCslider->SetBackgroundStyle(STYLE_LINE_CAP, CapType::CAP_ROUND);                                // 圆帽式\r
-        BCslider->SetForegroundStyle(STYLE_LINE_CAP, CapType::CAP_ROUND);                                // 设置进度条的前景样式。圆帽式\r
-        BCslider->SetStyle(STYLE_BORDER_COLOR, 0xff000000);\r
-        sliderClick = static_cast<UIView::OnClickListener *>(BrightnessControlPresenter::GetInstance()); // 用来处理之后点击slider的点击事件\r
-        BCslider->SetOnClickListener(sliderClick);\r
-        sliderDrag = static_cast<UIView::OnDragListener *>(BrightnessControlPresenter::GetInstance()); // 用来处理之后拖动slider的拖动事件\r
-        BCslider->SetOnDragListener(sliderDrag);\r
-        container_->Add(BCslider);\r
-        BCslider->SetVisible(true);\r
-        /********************************************************************************************************/\r
-        if (BCimageicon == nullptr)\r
+        BrightnessControlScrollView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
+        UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(DisplayBrightnessPresenter::GetInstance());\r
+        if (draglistener == nullptr)\r
         {\r
-            BCimageicon = new UIImageView();\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BrightnessControlView::draglistener can not be nullptr!");\r
+            return false;\r
         }\r
-        BCimageicon->SetPosition(213, 213);    // widget's left position and top position\r
-        BCimageicon->Resize(100, 100);         // widget's width and height\r
-        BCimageicon->SetViewId("BCimageicon"); // Set style\r
-        BCimageicon->SetStyle(STYLE_BORDER_COLOR, 0xffAAAAAA);\r
-        BCimageicon->SetSrc(PNG_BRIGHTNESS_CONTROL_VECTOR);\r
-\r
-        container_->Add(BCimageicon);\r
-        BCimageicon->SetVisible(true);\r
+        BrightnessControlScrollView->SetOnDragListener(draglistener);\r
+        BrightnessControlScrollView->SetTouchable(true);\r
+        BrightnessControlScrollView->SetDraggable(true);\r
+        return true;\r
     }\r
 \r
-    void BrightnessControlView::OnStart()\r
+    // 亮度滑动条设置\r
+    bool BrightnessControlView::SetUpSlider(void)\r
     {\r
-        View<BrightnessControlPresenter>::OnStart();\r
-        InitView();\r
-        RootView::GetInstance()->Add(container_);\r
-    }\r
+        BrightnessControlViewSlider = new UISlider();\r
+        if (BrightnessControlViewSlider == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BrightnessControlViewSlider new fail");\r
+            return false;\r
+        }\r
+        BrightnessControlViewSlider->SetSliderColor(Color::Gray(), Color::Silver());\r
+        BrightnessControlViewSlider->SetPosition(167, 77, 130, 310);\r
+        BrightnessControlViewSlider->SetDirection(UISlider::Direction::DIR_BOTTOM_TO_TOP);\r
+        BrightnessControlViewSlider->SetViewId(BRIGHTNESS_PROGRESS);\r
+        BrightnessControlViewSlider->SetRange(BRIGHTNESS_MAX, BRIGHTNESS_MIN);\r
 \r
-    void BrightnessControlView::OnSetUpView()\r
-    {\r
-        View<BrightnessControlPresenter>::OnSetUpView();\r
-        Draw();\r
+        BrightnessControlViewSlider->SetStyle(STYLE_BORDER_RADIUS, 100);\r
+        BrightnessControlViewSlider->SetBackgroundStyle(STYLE_LINE_CAP, CapType::CAP_ROUND);\r
+        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
+        BrightnessControlViewSlider->SetKnobStyle(StyleDefault::GetSliderKnobStyle());\r
+        return true;\r
     }\r
 \r
-    void BrightnessControlView::OnTearDownView()\r
+    bool BrightnessControlView::SetUpImageView(void)\r
     {\r
-        View<BrightnessControlPresenter>::OnTearDownView();\r
-        return;\r
+        BrightnessControlViewImageIcon = new UIImageView();\r
+        if (BrightnessControlViewImageIcon == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BrightnessControlViewImageIcon new fail");\r
+            return false;\r
+        }\r
+        BrightnessControlViewImageIcon->SetPosition(213, 213, 40, 40);\r
+        const char *image = "/user/res/VolumeControlVector.bin";\r
+        BrightnessControlViewImageIcon->SetSrc(image);\r
+        return true;\r
     }\r
 \r
-    void BrightnessControlView::OnStop()\r
+    // 亮度调节视图初始化\r
+    UIScrollView *BrightnessControlView::BrightnessControlViewInit(void)\r
     {\r
-        View<BrightnessControlPresenter>::OnStop();\r
-        RootView::GetInstance()->RemoveAll();\r
-        return;\r
+        /* ----------------------- BrightnessControlScrollView ---------------------- */\r
+        if (!SetUpScrollView())\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BrightnessControlView::BrightnessControlScrollView is nullptr!");\r
+            return nullptr;\r
+        }\r
+\r
+        /* ----------------------- BrightnessControlViewSlider ---------------------- */\r
+        if (!SetUpSlider())\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BrightnessControlView::BrightnessControlViewSlider is nullptr!");\r
+            return nullptr;\r
+        }\r
+\r
+        /* ------------------------------- BrightnessControlViewImageIcon ------------------------------ */\r
+        if (!SetUpImageView())\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BrightnessControlView::BrightnessControlViewImageIcon is nullptr!");\r
+            return nullptr;\r
+        }\r
+\r
+        /* ----------------------------------- Add ---------------------------------- */\r
+        BrightnessControlScrollView->Add(BrightnessControlViewSlider);\r
+        BrightnessControlScrollView->Add(BrightnessControlViewImageIcon);\r
+        initViewStatus = true;\r
+        return BrightnessControlScrollView;\r
     }\r
+\r
 }\r
index 276e067..a372edc 100644 (file)
@@ -52,10 +52,11 @@ namespace OHOS
 \r
     bool DisplayBrightnessPresenter::OnClick(UIView &view, const ClickEvent &event)\r
     {\r
+        DisplayBrightnessView *p_DisplayBrightnessView = DisplayBrightnessView::GetInstance();\r
         // 根据控件id查找是哪个控件触发了点击回调\r
         if (strcmp(view.GetViewId(), BRINGHTNESSCONTROLBUTTON_VIEW) == 0)\r
         {\r
-            NativeAbility::GetInstance().ChangeSlice(VIEW_BRIGHTNESS_CONTROL); // 亮度调节\r
+            p_DisplayBrightnessView->ChangeView(DISPLAYBRIGHTNESSVIEW, BRIGHTNESSCONTROLVIEW); // 切换到亮度调节视图\r
             return true;\r
         }\r
         if (strcmp(view.GetViewId(), SCREENDURATIONBUTTON_VIEWID) == 0)\r
@@ -73,11 +74,27 @@ namespace OHOS
 \r
     bool DisplayBrightnessPresenter::OnDragEnd(UIView &view, const DragEvent &event)\r
     {\r
+        DisplayBrightnessView *p_DisplayBrightnessView = DisplayBrightnessView::GetInstance();\r
         if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)\r
         {\r
-            NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);\r
+            for (int i = 0; i < MAX_DISPLAYBRIGHTNESSVIEWID; i++)\r
+            {\r
+                if (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
+            }\r
+            return true;\r
         }\r
-        return true;\r
+        return false;\r
     }\r
 \r
     bool DisplayBrightnessPresenter::OnChange(UICheckBox::UICheckBoxState state)\r
index 1c8e26d..a2f6d53 100644 (file)
@@ -29,7 +29,7 @@ namespace OHOS
     {\r
         if (initViewStatus == true)\r
         {\r
-            scrollView->RemoveAll();\r
+            DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->RemoveAll();\r
 \r
             delete DisplayBrightnessTitleLabel;\r
             DisplayBrightnessTitleLabel = nullptr;\r
@@ -61,33 +61,36 @@ namespace OHOS
             delete RaiseToBrightnessCheckBoxButton;\r
             RaiseToBrightnessCheckBoxButton = nullptr;\r
 \r
-            delete scrollView;\r
-            scrollView = nullptr;\r
+            delete p_BrightnessControlView;\r
+            p_BrightnessControlView = nullptr;\r
+\r
+            delete DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW];\r
+            DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW] = nullptr;\r
         }\r
     }\r
 \r
     // 显示与亮度视图scrollView初始化\r
     bool DisplayBrightnessView::SetUpScrollView(void)\r
     {\r
-        scrollView = new UIScrollView();\r
-        if (scrollView == nullptr)\r
+        DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW] = new UIScrollView();\r
+        if (DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW] == nullptr)\r
         {\r
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessView::scrollView new fail!");\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessView::DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW] new fail!");\r
             return false;\r
         }\r
-        scrollView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
-        scrollView->SetScrollBlankSize(35);\r
-        scrollView->SetReboundSize(50);\r
-        scrollView->SetDirection(1);\r
+        DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
+        DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->SetScrollBlankSize(35);\r
+        DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->SetReboundSize(50);\r
+        DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->SetDirection(1);\r
         UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(DisplayBrightnessPresenter::GetInstance());\r
         if (draglistener == nullptr)\r
         {\r
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessView::draglistener can not be nullptr!");\r
             return false;\r
         }\r
-        scrollView->SetOnDragListener(draglistener);\r
-        scrollView->SetTouchable(true);\r
-        scrollView->SetDraggable(true);\r
+        DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->SetOnDragListener(draglistener);\r
+        DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->SetTouchable(true);\r
+        DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->SetDraggable(true);\r
         return true;\r
     }\r
 \r
@@ -121,7 +124,7 @@ namespace OHOS
         UIButton *button = new UIButton();\r
         if (button == nullptr)\r
         {\r
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " SystemView::SetTheButton: button new  fail!");\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " DisplayBrightnessView::SetTheButton: button new  fail!");\r
             return nullptr;\r
         }\r
         button->SetPosition(buttonconfig.x, buttonconfig.y, buttonconfig.w, buttonconfig.h);\r
@@ -293,7 +296,7 @@ namespace OHOS
         checkbox->SetPosition(checkboxconfig.x, checkboxconfig.y, checkboxconfig.w, checkboxconfig.h);\r
         checkbox->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
         checkbox->SetViewId(checkboxconfig.ViewId);\r
-        checkbox->SetImages(checkboxconfig.select,checkboxconfig.unselect);\r
+        checkbox->SetImages(checkboxconfig.select, checkboxconfig.unselect);\r
         return checkbox;\r
     }\r
 \r
@@ -352,6 +355,99 @@ namespace OHOS
         initViewStatus = true;\r
     }\r
 \r
+    UIScrollView *DisplayBrightnessView::GetDisplayBrightnessScrollView(int16_t i)\r
+    {\r
+        if (DisplayBrightnessScrollView[i] == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessView::DisplayBrightnessScrollView[%d] is nullptr!",i);\r
+            return nullptr;\r
+        }\r
+        return DisplayBrightnessScrollView[i];\r
+    }\r
+\r
+    // 1.切换到“屏幕与亮度”视图\r
+    bool DisplayBrightnessView::ChangeDisplayBrightnessView(int16_t thisView)\r
+    {\r
+        if (DisplayBrightnessScrollView[thisView] == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessView::ChangeDisplayBrightnessView");\r
+            RootView::GetInstance()->Add(DisplayBrightnessScrollView[thisView]);\r
+        }\r
+        return true;\r
+    }\r
+\r
+    // 2.切换到“亮度调节”视图\r
+    bool DisplayBrightnessView::ChangeBrightnessControlView(int16_t thisView)\r
+    {\r
+        if (DisplayBrightnessScrollView[thisView] == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessView::ChangeBrightnessControlView");\r
+            p_BrightnessControlView = new BrightnessControlView();\r
+            if (p_BrightnessControlView == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessView:: new scrollView[%d] fail", thisView);\r
+                return false;\r
+            }\r
+            DisplayBrightnessScrollView[thisView] = p_BrightnessControlView->BrightnessControlViewInit();\r
+            RootView::GetInstance()->Add(DisplayBrightnessScrollView[thisView]);\r
+        }\r
+        return true;\r
+    }\r
+\r
+    // 3.切换到“亮屏时长”视图\r
+    bool DisplayBrightnessView::ChangeScreenDurationView(int16_t thisView)\r
+    {\r
+    }\r
+\r
+    /* -------------------------------------------------------------------------- */\r
+    // 1.DisplayBrightnessViewMapper:结构体定义了一个将视图ID映射到特定成员函数指针的映射表。\r
+    struct DisplayBrightnessViewMapper\r
+    {\r
+        const int16_t viewId;\r
+        bool (DisplayBrightnessView::*func)(int16_t thisView);\r
+    };\r
+\r
+    // 2.ViewMapper[] 是一个静态的视图映射数组,将视图ID与DisplayBrightnessViewMapper类中的特定成员函数指针进行了绑定。\r
+    static const DisplayBrightnessViewMapper ViewMapper[] = {\r
+        {DISPLAYBRIGHTNESSVIEW, &DisplayBrightnessView::ChangeDisplayBrightnessView},\r
+        {BRIGHTNESSCONTROLVIEW, &DisplayBrightnessView::ChangeBrightnessControlView},\r
+        {SCREENDURATIONVIEW, &DisplayBrightnessView::ChangeScreenDurationView},\r
+    };\r
+\r
+    // 3.根据传入的interface参数执行相应视图ID关联的成员函数。\r
+    bool DisplayBrightnessView::ClickFunc(int16_t interface)\r
+    {\r
+        int funcSize = sizeof(ViewMapper) / sizeof(ViewMapper[0]);\r
+        for (int i = 0; i < funcSize; i++)\r
+        {\r
+            if (interface == ViewMapper[i].viewId)\r
+            {\r
+                bool jug = (this->*(ViewMapper[i].func))(interface);\r
+                if (jug == false)\r
+                {\r
+                    return false;\r
+                }\r
+                return true;\r
+            }\r
+        }\r
+        return false;\r
+    }\r
+\r
+    // 4.切换视图\r
+    void DisplayBrightnessView::ChangeView(int16_t hideView, int16_t showView)\r
+    {\r
+        if (hideView > MAX_DISPLAYBRIGHTNESSVIEWID)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessView:: SystemViewId Overstep ones bounds");\r
+            return;\r
+        }\r
+        DisplayBrightnessScrollView[hideView]->SetVisible(false);\r
+        ClickFunc(showView);\r
+        DisplayBrightnessScrollView[showView]->SetVisible(true);\r
+        Draw();\r
+    }\r
+    /* -------------------------------------------------------------------------- */\r
+\r
     void DisplayBrightnessView::OnStart()\r
     {\r
         View<DisplayBrightnessPresenter>::OnStart();\r
@@ -364,22 +460,22 @@ namespace OHOS
     void DisplayBrightnessView::OnSetUpView()\r
     {\r
         View<DisplayBrightnessPresenter>::OnSetUpView();\r
-        if (scrollView == nullptr)\r
+        if (DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW] == nullptr)\r
         {\r
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessView:: OnSetUpView  has nullptr");\r
             return;\r
         }\r
-        scrollView->Add(DisplayBrightnessTitleLabel);\r
-        scrollView->Add(BringhtnessControlButton);\r
-        scrollView->Add(ScreenDurationButton);\r
-        scrollView->Add(BringhtnessControlLabel);\r
-        scrollView->Add(ScreenDurationLabel);\r
-        scrollView->Add(NextImage[0]);\r
-        scrollView->Add(NextImage[1]);\r
-        scrollView->Add(RaiseToBrightnessImage);\r
-        scrollView->Add(RaiseToBrightnessLabel);\r
-        scrollView->Add(RaiseToBrightnessCheckBoxButton);\r
-        RootView::GetInstance()->Add(scrollView);\r
+        DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->Add(DisplayBrightnessTitleLabel);\r
+        DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->Add(BringhtnessControlButton);\r
+        DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->Add(ScreenDurationButton);\r
+        DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->Add(BringhtnessControlLabel);\r
+        DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->Add(ScreenDurationLabel);\r
+        DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->Add(NextImage[0]);\r
+        DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->Add(NextImage[1]);\r
+        DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->Add(RaiseToBrightnessImage);\r
+        DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->Add(RaiseToBrightnessLabel);\r
+        DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->Add(RaiseToBrightnessCheckBoxButton);\r
+        RootView::GetInstance()->Add(DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]);\r
         Draw();\r
     }\r
 \r
index 37def53..f99d15d 100644 (file)
@@ -24,8 +24,8 @@ namespace OHOS
         SUPERVISEVIEW,      // 监管视图(subView)\r
         SYSTEMLANGUAGEVIEW, // 系统语言视图(subView)\r
         FACTORYRESETVIEW,   // 恢复出厂设置视图(subView)\r
-        MAX_VIEWID,\r
-    } SYSTEMVIEWId;\r
+        MAX_SYSTEMVIEWID,\r
+    } SYSTEMVIEWID;\r
 \r
     /* ---------------------------- 系统语言界面单选按钮VIEWID ---------------------------- */\r
     static const char *SIMPLIFIED_CHINESE_CHECKBOX = "SimplifiedChineseCheckBox"; // 简体中文\r
@@ -61,7 +61,6 @@ namespace OHOS
     };\r
 \r
     class SystemView;\r
-    class UISampleModel;\r
     class SystemPresenter : public Presenter<SystemView>,\r
                             public UIView::OnClickListener,\r
                             public UIView::OnDragListener\r
index b3cb3f8..b118fc1 100644 (file)
@@ -65,7 +65,7 @@ namespace OHOS
         SystemView *p_SystemView = SystemView::GetInstance();\r
         if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)\r
         {\r
-            for (int i = 1; i < MAX_VIEWID; i++)\r
+            for (int i = 1; i < MAX_SYSTEMVIEWID; i++)\r
             {\r
                 if (p_SystemView->GetSystemScrollView(i)->IsVisible() == true)\r
                 {\r
index ac9f3f4..6439fba 100644 (file)
@@ -317,7 +317,7 @@ namespace OHOS
     // 4.切换视图\r
     void SystemView::ChangeView(int16_t hideView, int16_t showView)\r
     {\r
-        if (hideView > MAX_VIEWID)\r
+        if (hideView > MAX_SYSTEMVIEWID)\r
         {\r
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView:: SystemViewId Overstep ones bounds");\r
             return;\r