添加连接状态视图,通过在点击连接状态按钮进入
authorluozheng <1732036298@qq.com>
Sat, 27 Apr 2024 06:35:16 +0000 (14:35 +0800)
committerluozheng <1732036298@qq.com>
Sat, 27 Apr 2024 06:35:16 +0000 (14:35 +0800)
code/sdk/application/wearable/fd230app/CMakeLists.txt
code/sdk/application/wearable/fd230app/nativeui/main/include/ConnectedStatusView.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/include/MainPresenterSample.h
code/sdk/application/wearable/fd230app/nativeui/main/include/PullUpDownView.h
code/sdk/application/wearable/fd230app/nativeui/main/src/ConnectedStatusView.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/src/MainPresenterSample.cpp
code/sdk/application/wearable/fd230app/nativeui/main/src/MainViewSample.cpp
code/sdk/application/wearable/fd230app/nativeui/main/src/PullUpDownView.cpp

index 2ba6f54..1823754 100644 (file)
@@ -139,6 +139,7 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/PresenterTask.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/HealthModel.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/PullUpDownView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/ConnectedStatusView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/applist/src/AppItemView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/applist/src/ApplistAdapter.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/applist/src/ApplistModel.cpp
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/ConnectedStatusView.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/ConnectedStatusView.h
new file mode 100644 (file)
index 0000000..933924a
--- /dev/null
@@ -0,0 +1,75 @@
+#ifndef CONNECTED_STATUS_VIEW_H
+#define CONNECTED_STATUS_VIEW_H
+
+#include "components/ui_view_group.h"
+#include "components/ui_image_view.h"
+#include "components/ui_scroll_view.h"
+#include "components/ui_label_ext.h"
+#include "components/ui_button.h"
+namespace OHOS
+{
+    typedef enum : uint8_t
+    {
+        PHONECONNECTEDSTATUS_ID = 0,
+        EARPHONECONNECTESTATUS_ID,
+        BLUETOOTHCONNECTEDSTATUS,
+        MAX_CONNECTEDSTATUS_ID,
+    } CONNECTEDSTATUS_ID;
+
+    class ConnectedStatusView
+    {
+
+    public:
+        ConnectedStatusView();
+        ~ConnectedStatusView();
+        static ConnectedStatusView *GetInstance(void);
+        UIViewGroup *ConnectedStatusViewInit(void);
+        UIButton *GetCloseButton();
+
+        struct LabelConfig
+        {
+            int x;
+            int y;
+            int width;
+            int height;
+            int fontSize;
+            int lineHeight;
+            const char *text;
+        };
+
+        typedef struct
+        {
+            int x;
+            int y;
+            int width;
+            int height;
+            uint32_t connectedImage;
+            uint32_t disconnectedImage;
+            bool isConnected;
+        } StatusImageParams;
+
+    private:
+        UILabelExt *InitLabel(const LabelConfig &config);
+        UILabelExt *InitConnectedStatusLabel(const LabelConfig &config);
+
+        UIImageView *InitStatusImage(StatusImageParams params);
+        void ClearAll(void);
+        UIViewGroup *group{nullptr};
+        UILabelExt *Title{nullptr};
+        UIImageView *background[MAX_CONNECTEDSTATUS_ID]{nullptr};
+
+        UIImageView *PhoneConnectedStatusImage{nullptr};     // 显示手机连接状态
+        UIImageView *EarPhoneConnectedStatusImage{nullptr};  // 显示耳机连接状态
+        UIImageView *BluetoothConnectedStatusImage{nullptr}; // 显示蓝牙连接状态
+
+        UILabelExt *PhoneAndEarAndBluetooth[MAX_CONNECTEDSTATUS_ID]{nullptr};
+
+        UILabelExt *ConnectedStatusLabel[MAX_CONNECTEDSTATUS_ID]{nullptr};
+
+        UIButton *CloseButton{nullptr}; // 关闭按钮
+        UILabel *CloseLabel{nullptr};   // 关闭标签
+    };
+
+}
+
+#endif
\ No newline at end of file
index caf82a2..99d0d61 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-03-01 15:10:34
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-04-26 11:45:11
+ * @LastEditTime: 2024-04-27 10:00:11
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/main/include/MainPresenterSample.h
  */
 
@@ -43,6 +43,7 @@ namespace OHOS
     static constexpr const char *DROPDOWN_CLICK_FINDMYPHONE = "dropdownclickfindmyphone"; // 找手机
 
     static constexpr const char *CONNECTEDSTATUSBACKGROUNDBUTTON = "connectedstatusbackgroundbutton"; // 连接状态按钮
+    static constexpr const char *CONNECTEDSTATUSVIEWCLOSEBUTTON = "connectedstatusviewclosebutton"; // 连接状态视图的关闭按钮
 
 
     constexpr uint16_t VERTICAL_STATUS = 1;
index 0fe9145..38fa1e9 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-04-17 15:26:49
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-04-26 15:17:25
+ * @LastEditTime: 2024-04-27 11:48:15
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/main/include/PullUpDownView.h
  */
 /*
@@ -26,6 +26,7 @@
 #include "components/ui_box_progress.h"
 #include "components/ui_image_animator.h"
 #include "battery_hal.h"
+#include "main/include/ConnectedStatusView.h"
 
 extern uint8_t battery_get_voltage(float *voltage);
 
@@ -37,7 +38,14 @@ namespace OHOS
     static constexpr int16_t SAVEPOWER_INDEX = 3;
     static constexpr int16_t FINDPHONE_INDEX = 4;
     static constexpr int16_t MAX_INDEX = 5;
-    
+
+    typedef enum : uint8_t
+    {
+        DROPDOWNVIEW = 0,
+        CONNECTEDSTATUSVIEW,
+        MAX_DROPDOWNVIEWID,
+    } DROPDOWNVIEWID;
+
     class PullUpDownView : public UICardPage
     {
     public:
@@ -67,24 +75,32 @@ namespace OHOS
         bool GetEarPhoneConnectedStatus(void);
         bool GetBluetoothConnectedStatus(void);
 
+        bool ChangeDropDownView(int16_t thisView);        // 切换到"下拉控制中心"视图
+        bool ChangeConnectedStatusView(int16_t thisView); // 切换到"连接状态"视图
+        bool ClickFunc(int16_t interface);
+        void ChangeView(int16_t hideView, int16_t showView);
+        ConnectedStatusView *GetConnectedStatusView(void);
+    private:
+        ConnectedStatusView *connectedStatusView{nullptr};
     private:
-        UIImageView *dropSetting{nullptr};                                    // 设置
-        UIImageView *dropLighting{nullptr};                                   // 蓝牙
-        UIImageView *dropDnotDisturb{nullptr};                                // 勿扰模式
-        UIImageView *dropSavePower{nullptr};                                  // 省电
-        UIImageView *drofindPhone{nullptr};                                   // 找手机
-        UIImageView *dropIconBackground[MAX_INDEX]{nullptr};                  // 放置各个icon的背景
-        UIButton *connectedStatusBackgroundButton{nullptr};                   // 放置连接状态icon的背景按钮
-        UIImageView *showPhoneConnectedStatus{nullptr};                       // 显示手机连接状态
-        UIImageView *showEarPhoneConnectedStatus{nullptr};                    // 显示耳机连接状态
-        UIImageView *showBluetoothConnectedStatus{nullptr};                   // 显示蓝牙连接状态
-        UIImageView *dropLine{nullptr};                                       // 线
-        UILabel *showTimeLabel{nullptr};                                      // 显示时间
-        UILabel *showDateLabel{nullptr};                                      // 显示日期
-        UILabel *showWeekLabel{nullptr};                                      // 显示星期
-        UIImageView *showSignalStrength[4]{nullptr};                          // 信号强度
-        UILabel *Singal_4{nullptr};                                           // 4G图标
-        UIImageView *NoSignal{nullptr};                                       // 无信号
+        UIViewGroup *group[MAX_DROPDOWNVIEWID]{nullptr};
+        UIImageView *dropSetting{nullptr};                   // 设置
+        UIImageView *dropLighting{nullptr};                  // 蓝牙
+        UIImageView *dropDnotDisturb{nullptr};               // 勿扰模式
+        UIImageView *dropSavePower{nullptr};                 // 省电
+        UIImageView *drofindPhone{nullptr};                  // 找手机
+        UIImageView *dropIconBackground[MAX_INDEX]{nullptr}; // 放置各个icon的背景
+        UIButton *connectedStatusBackgroundButton{nullptr};  // 放置连接状态icon的背景按钮
+        UIImageView *showPhoneConnectedStatus{nullptr};      // 显示手机连接状态
+        UIImageView *showEarPhoneConnectedStatus{nullptr};   // 显示耳机连接状态
+        UIImageView *showBluetoothConnectedStatus{nullptr};  // 显示蓝牙连接状态
+        UIImageView *dropLine{nullptr};                      // 线
+        UILabel *showTimeLabel{nullptr};                     // 显示时间
+        UILabel *showDateLabel{nullptr};                     // 显示日期
+        UILabel *showWeekLabel{nullptr};                     // 显示星期
+        UIImageView *showSignalStrength[4]{nullptr};         // 信号强度
+        UILabel *Singal_4{nullptr};                          // 4G图标
+        UIImageView *NoSignal{nullptr};                      // 无信号
 
         UIImageView *batteryimage = nullptr;
         UIBoxProgress *progress = nullptr;
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/ConnectedStatusView.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/ConnectedStatusView.cpp
new file mode 100644 (file)
index 0000000..96f4403
--- /dev/null
@@ -0,0 +1,309 @@
+#include "main/include/ConnectedStatusView.h"
+#include "main/include/PullUpDownView.h"
+#include "wearable_log.h"
+#include "SettingModel.h"
+#include <ui_resource_image.h>
+#include "screensetting/include/ScreenModels.h"
+#include "main/include/MainPresenterSample.h"
+namespace OHOS
+{
+    static ConnectedStatusView *g_pConnectedStatusView = nullptr;
+    ConnectedStatusView::ConnectedStatusView()
+    {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectedStatusView::ConnectedStatusView");
+        g_pConnectedStatusView = this;
+    }
+
+    ConnectedStatusView::~ConnectedStatusView()
+    {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectedStatusView::~ConnectedStatusView");
+        ClearAll();
+        g_pConnectedStatusView = nullptr;
+    }
+
+    ConnectedStatusView *ConnectedStatusView::GetInstance()
+    {
+        return g_pConnectedStatusView;
+    }
+
+    void ConnectedStatusView::ClearAll(void)
+    {
+        if (group != nullptr)
+        {
+            group->RemoveAll();
+
+            delete Title;
+            Title = nullptr;
+
+            for (int i = 0; i < MAX_CONNECTEDSTATUS_ID; i++)
+            {
+                delete background[i];
+                background[i];
+
+                delete PhoneAndEarAndBluetooth[i];
+                PhoneAndEarAndBluetooth[i];
+
+                delete ConnectedStatusLabel[i];
+                ConnectedStatusLabel[i];
+            }
+
+            delete PhoneConnectedStatusImage;
+            PhoneConnectedStatusImage = nullptr;
+
+            delete EarPhoneConnectedStatusImage;
+            EarPhoneConnectedStatusImage = nullptr;
+
+            delete BluetoothConnectedStatusImage;
+            BluetoothConnectedStatusImage = nullptr;
+
+            delete CloseButton;
+            CloseButton = nullptr;
+
+            delete CloseLabel;
+            CloseLabel = nullptr;
+
+            delete group;
+            group = nullptr;
+        }
+    }
+
+    UILabelExt *ConnectedStatusView::InitLabel(const LabelConfig &config)
+    {
+        UILabelExt *titleLabel = new UILabelExt();
+        if (titleLabel == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "titleLabel new fail!!");
+            return nullptr;
+        }
+
+        titleLabel->SetPosition(config.x, config.y, config.width, config.height);
+        titleLabel->SetStyle(STYLE_TEXT_FONT, config.fontSize);
+        titleLabel->SetStyle(STYLE_LINE_HEIGHT, config.lineHeight);
+        titleLabel->SetText(config.text);
+        titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);
+        titleLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+        // titleLabel->SetRollSpeed(40);系统默认为35
+        titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, config.fontSize);
+
+        return titleLabel;
+    }
+
+    UILabelExt *ConnectedStatusView::InitConnectedStatusLabel(const LabelConfig &config)
+    {
+        UILabelExt *titleLabel = new UILabelExt();
+        if (titleLabel == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "titleLabel new fail!!");
+            return nullptr;
+        }
+
+        titleLabel->SetPosition(config.x, config.y, config.width, config.height);
+        titleLabel->SetStyle(STYLE_TEXT_FONT, config.fontSize);
+        titleLabel->SetStyle(STYLE_LINE_HEIGHT, config.lineHeight);
+        titleLabel->SetText(config.text);
+        titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);
+        titleLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+        titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, config.fontSize);
+
+        return titleLabel;
+    }
+
+    UIImageView *ConnectedStatusView::InitStatusImage(StatusImageParams params)
+    {
+        UIImageView *statusImage = new UIImageView();
+        if (statusImage == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%s new fail");
+            return nullptr;
+        }
+        statusImage->SetPosition(params.x, params.y, params.width, params.height);
+        statusImage->SetAutoEnable(false);
+        statusImage->SetResizeMode(UIImageView::CENTER);
+        statusImage->SetStyle(STYLE_BORDER_RADIUS, 30);
+
+        if (params.isConnected)
+        {
+            ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, statusImage, params.connectedImage);
+        }
+        else
+        {
+            ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, statusImage, params.disconnectedImage);
+        }
+
+        return statusImage;
+    }
+
+    UIViewGroup *ConnectedStatusView::ConnectedStatusViewInit(void)
+    {
+        if (group == nullptr)
+        {
+            group = new UIViewGroup();
+            if (group == nullptr)
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail!!");
+                return nullptr;
+            }
+            group->SetPosition(0, 0, 466, 466);
+            group->SetViewIndex(1);
+            /* -------------------------------------------------------------------------- */
+            LabelConfig titleConfig = {93, 53, 280, 35, 30, 35, "连接状态"};
+            Title = InitLabel(titleConfig);
+            /* -------------------------------------------------------------------------- */
+            int background_position_x = 33;
+            for (int i = 0; i < 3; i++)
+            {
+                background[i] = new UIImageView();
+                if (background[i] == nullptr)
+                {
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "background[%d] new fail!!", i);
+                    return nullptr;
+                }
+                background[i]->SetPosition(background_position_x + i * 140, 113, 120, 200);
+                background[i]->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);
+                background[i]->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
+                background[i]->SetStyle(STYLE_BORDER_RADIUS, 40);
+            }
+            /* -------------------------------------------------------------------------- */
+            PullUpDownView *pullUpDownView = PullUpDownView::GetInstance();
+            if (pullUpDownView == nullptr)
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpDownView::GetInstance() fail");
+                return nullptr;
+            }
+            StatusImageParams params = {
+                .x = 63,
+                .y = 135,
+                .width = 60,
+                .height = 60,
+                .connectedImage = DROPDOWN_PHONECONNECTED,
+                .disconnectedImage = DROPDOWN_PHONEDISCONNECTED,
+                .isConnected = pullUpDownView->GetPhoneConnectedStatus(),
+            };
+            PhoneConnectedStatusImage = InitStatusImage(params);
+            /* -------------------------------------------------------------------------- */
+            params = {
+                .x = 203,
+                .y = 135,
+                .width = 60,
+                .height = 60,
+                .connectedImage = DROPDOWN_EARPHONESCONNECTED,
+                .disconnectedImage = DROPDOWN_EARPHONESDISCONNECTED,
+                .isConnected = pullUpDownView->GetEarPhoneConnectedStatus(),
+            };
+            EarPhoneConnectedStatusImage = InitStatusImage(params);
+            /* -------------------------------------------------------------------------- */
+            params = {
+                .x = 343,
+                .y = 135,
+                .width = 60,
+                .height = 60,
+                .connectedImage = DROPDOWN_BLUETOOTHCONNECTED,
+                .disconnectedImage = DROPDOWN_BLUETOOTHDISCONNECTED,
+                .isConnected = pullUpDownView->GetBluetoothConnectedStatus(),
+            };
+            BluetoothConnectedStatusImage = InitStatusImage(params);
+            /* -------------------------------------------------------------------------- */
+            const char *connectedText[MAX_CONNECTEDSTATUS_ID] = {
+                "已连接",
+                "已连接",
+                "已连接",
+            }; // 初始化连接状态文字数组
+            const char *disconnectedText[MAX_CONNECTEDSTATUS_ID] = {
+                "未连接",
+                "未连接",
+                "未连接",
+            }; // 初始化未连接状态文字数组
+            const char *deviceName[MAX_CONNECTEDSTATUS_ID] = {
+                "手机",
+                "耳机",
+                "蓝牙",
+            }; // 初始化设备名称数组
+            OHOS::ColorType connectedColor[MAX_CONNECTEDSTATUS_ID] = {
+                Color::GetColorFromRGBA(0xff, 0x8f, 0x00, 0xff),
+                Color::GetColorFromRGBA(0x4f, 0xc3, 0x4c, 0xff),
+                Color::GetColorFromRGBA(0x01, 0x76, 0xff, 0xff),
+            };                                                                                   // 初始化连接状态颜色数组
+            OHOS::ColorType disconnectedColor = Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff); // 初始化未连接状态颜色
+            int PhoneAndEarAndBluetooth_position_x = 53;
+            int ConnectedStatusLabel_position_x = 59;
+
+            for (int i = 0; i < MAX_CONNECTEDSTATUS_ID; i++)
+            {
+                titleConfig = {PhoneAndEarAndBluetooth_position_x + i * 140, 220, 80, 35, 30, 35, deviceName[i]};
+                PhoneAndEarAndBluetooth[i] = InitLabel(titleConfig);
+                /* -------------------------------------------------------------------------- */
+                ConnectedStatusLabel[i] = new UILabelExt();
+                if (ConnectedStatusLabel[i] == nullptr)
+                {
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectedStatusLabel[%d] new fail!!", i);
+                    return nullptr;
+                }
+                ConnectedStatusLabel[i]->SetPosition(ConnectedStatusLabel_position_x + i * 140, 258, 70, 27);
+                ConnectedStatusLabel[i]->SetStyle(STYLE_TEXT_FONT, 23);
+                ConnectedStatusLabel[i]->SetStyle(STYLE_LINE_HEIGHT, 27);
+                ConnectedStatusLabel[i]->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);
+                ConnectedStatusLabel[i]->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+                ConnectedStatusLabel[i]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 23);
+
+                if (i == PHONECONNECTEDSTATUS_ID && pullUpDownView->GetPhoneConnectedStatus())
+                {
+                    ConnectedStatusLabel[i]->SetText(connectedText[i]);
+                    ConnectedStatusLabel[i]->SetTextColor(connectedColor[i]);
+                }
+                else if (i == EARPHONECONNECTESTATUS_ID && pullUpDownView->GetEarPhoneConnectedStatus())
+                {
+                    ConnectedStatusLabel[i]->SetText(connectedText[i]);
+                    ConnectedStatusLabel[i]->SetTextColor(connectedColor[i]);
+                }
+                else if (i == BLUETOOTHCONNECTEDSTATUS && pullUpDownView->GetBluetoothConnectedStatus())
+                {
+                    ConnectedStatusLabel[i]->SetText(connectedText[i]);
+                    ConnectedStatusLabel[i]->SetTextColor(connectedColor[i]);
+                }
+                else
+                {
+                    ConnectedStatusLabel[i]->SetText(disconnectedText[i]);
+                    ConnectedStatusLabel[i]->SetTextColor(disconnectedColor);
+                }
+            }
+
+            /* -------------------------------------------------------------------------- */
+            CloseButton = new UIButton();
+            if (CloseButton == nullptr)
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CloseButton new fail!");
+                return nullptr;
+            }
+            CloseButton->SetPosition(118, 340, 230, 80);
+            CloseButton->SetViewId(CONNECTEDSTATUSVIEWCLOSEBUTTON);
+            CloseButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);
+            UIView::OnClickListener *listener = static_cast<UIView::OnClickListener *>(MainPresenterSample::GetInstance());
+            CloseButton->SetOnClickListener(listener);
+            /* -------------------------------------------------------------------------- */
+            titleConfig = {143, 363, 180, 35, 26, 35, "关闭"};
+            CloseLabel = InitLabel(titleConfig);
+
+            /* ----------------------------------- Add ---------------------------------- */
+            group->Add(Title);
+            for (int i = 0; i < MAX_CONNECTEDSTATUS_ID; i++)
+            {
+                group->Add(background[i]);
+                group->Add(PhoneAndEarAndBluetooth[i]);
+                group->Add(ConnectedStatusLabel[i]);
+            }
+            group->Add(PhoneConnectedStatusImage);
+            group->Add(EarPhoneConnectedStatusImage);
+            group->Add(BluetoothConnectedStatusImage);
+
+            group->Add(CloseButton);
+            group->Add(CloseLabel);
+        }
+
+        return group;
+    }
+
+    UIButton *ConnectedStatusView::GetCloseButton()
+    {
+        return CloseButton;
+    }
+}
\ No newline at end of file
index b8b0c2d..fd2cb8c 100644 (file)
@@ -61,6 +61,7 @@ namespace OHOS
     MainPresenterSample::~MainPresenterSample()
     {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "~MainPresenterSample");
+        g_pMainPresenterSample = nullptr;
     }
 
     MainPresenterSample *MainPresenterSample::GetInstance(void)
@@ -138,6 +139,22 @@ namespace OHOS
 #endif
         }
 
+        if(curViewId  == CONNECTEDSTATUSBACKGROUNDBUTTON)
+        {
+            PullUpDownView::GetInstance()->ChangeView(DROPDOWNVIEW,CONNECTEDSTATUSVIEW);
+            return true;
+        }
+        else if(curViewId  == CONNECTEDSTATUSVIEWCLOSEBUTTON)
+        {
+            PullUpDownView::GetInstance()->ChangeView(CONNECTEDSTATUSVIEW,DROPDOWNVIEW);
+            return true;
+        }
+        // if(&view == PullUpDownView::GetInstance()->GetConnectedStatusView()->GetCloseButton())
+        // {
+        //     PullUpDownView::GetInstance()->ChangeView(CONNECTEDSTATUSVIEW,DROPDOWNVIEW);
+        //     return true;
+        // }
+
         // 如果勿扰模式是开启状态,在下拉界面点击勿扰快捷入口会关闭勿扰模式不进入勿扰视图
         if (g_jumpView[curViewId] == VIEW_DNOTDISTURB && DnotDisturbModel::GetInstance().GetDoNotDisturbModeEnabled() == true)
         {
index 3827a4e..1d503e3 100644 (file)
@@ -45,6 +45,7 @@ namespace OHOS
 
     MainViewSample::~MainViewSample()
     {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::~MainViewSample");
         mainSwipeGroup->RemoveAll();
 
         dropDownView->ClearBackgroundBlur();
@@ -226,6 +227,7 @@ namespace OHOS
 
     void MainViewSample::HorViewLoad(void)
     {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::HorViewLoad");
         uint8_t cardSettingNum = presenter_->GetCardSettingCount();
         CardId *cardSettings = presenter_->GetCardSettings();
         for (int16_t i = 0; i < cardSettingNum; i++)
@@ -242,6 +244,7 @@ namespace OHOS
 
     void MainViewSample::VerticalViewInit(void)
     {
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::VerticalViewInit");
 #ifdef FD230
         dropDownView = new PullUpDownView();
         if (dropDownView == nullptr)
@@ -276,11 +279,13 @@ namespace OHOS
 
     PullUpDownView *MainViewSample::GetPullUpView()
     {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::GetPullUpView");
         return dropDownView;
     }
 
     void MainViewSample::VertViewLoad(void)
     {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::VertViewLoad");
         mainSwipeGroup->VerAdd(dropDownView, UICrossView::VPage::UP_PAGE);
         mainSwipeGroup->VerAdd(messageView, UICrossView::VPage::DOWN_PAGE);
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::PullViewLoad::Pull View Load complete");
@@ -311,6 +316,7 @@ namespace OHOS
     }
     UICardPage *MainViewSample::InitWathOffDial(DialSetting &setting)
     {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::InitWathOffDial");
         DialViewGroup *dial = new DialViewGroup();
         dial->SetDial(setting.dialFullName);
         // dial->SetDial(DEFAULT_DIAL_PATH);
@@ -318,6 +324,7 @@ namespace OHOS
     }
     UICardPage *MainViewSample::InitWathDial(DialSetting &setting)
     {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::InitWathDial");
         switch (setting.dialId)
         {
         case DIAL_CLOCK:
@@ -331,6 +338,7 @@ namespace OHOS
     }
     UICardPage *MainViewSample::InitWatchFacePage(void)
     {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::InitWatchFacePage");
         DialSetting &setting = presenter_->GetDialSetting();
         if (setting.dialFlag)
         {
@@ -350,6 +358,7 @@ namespace OHOS
     // 指南针卡片
     UICardPage *MainViewSample::InitCompassPage(void)
     {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::InitCompassPage");
         compassControlView = new CompassControlView();
         if (compassControlView == nullptr)
         {
@@ -361,6 +370,7 @@ namespace OHOS
     // 音乐卡片
     UICardPage *MainViewSample::InitMusicPlayerPage(void)
     {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::InitMusicPlayerPage");
         playersView = new PlayersView();
         if (playersView == nullptr)
         {
@@ -373,6 +383,7 @@ namespace OHOS
     // 主界面血氧卡片
     UICardPage *MainViewSample::InitBloodOxygenPage(void)
     {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::InitBloodOxygenPage");
         bloodView = new BloodCardView();
         if (bloodView == nullptr)
         {
@@ -384,6 +395,7 @@ namespace OHOS
     // 主界面训练卡片
     UICardPage *MainViewSample::InitTrainingPage(void)
     {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::InitTrainingPage");
         traingView = new Training_CardView();
         if (traingView == nullptr)
         {
@@ -395,6 +407,7 @@ namespace OHOS
     // 主界面天气卡片
     UICardPage *MainViewSample::InitWeatherPage(void)
     {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::InitWeatherPage");
         weatherControlView = new WeatherControlView();
         if (weatherControlView == nullptr)
         {
@@ -406,6 +419,7 @@ namespace OHOS
     // 主界面心率卡片
     UICardPage *MainViewSample::InitHeartRatePage(void)
     {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::InitHeartRatePage");
         heartRateView = new HeartRateView();
         if (heartRateView == nullptr)
         {
@@ -417,6 +431,7 @@ namespace OHOS
     // 运动界面
     UICardPage *MainViewSample::InitActivityPage(void)
     {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::InitActivityPage");
         activityWeekView = new ActivityWeekView();
         if (activityWeekView == nullptr)
         {
@@ -428,6 +443,7 @@ namespace OHOS
 
     void MainViewSample::SetPage(int16_t page)
     {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::SetPage");
         if (mainSwipeGroup != nullptr)
         {
             mainSwipeGroup->SetHorCurrentPage(page);
@@ -443,6 +459,7 @@ namespace OHOS
 
     bool MainViewSample::IsMainClockPage(void)
     {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::IsMainClockPage");
         if (mainSwipeGroup->GetCurrentPageId(0) == mainClockView->GetViewIndex() &&
             mainSwipeGroup->GetCurrentPageId(1) == 1)
         { // 0: horizontal; 1: vertical
@@ -455,6 +472,7 @@ namespace OHOS
     }
     bool MainViewSample::IsPullUpViewPage(void)
     {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::IsPullUpViewPage");
         if (mainSwipeGroup->GetCurrentPageId(0) == mainClockView->GetViewIndex() &&
             mainSwipeGroup->GetCurrentPageId(1) == 0)
         {
index 48f6736..62ec2c9 100644 (file)
@@ -91,13 +91,13 @@ namespace OHOS
     static PullUpDownView *g_pPullUpDownView = nullptr;
     PullUpDownView::PullUpDownView()
     {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::PullUpDownView");
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpDownView::PullUpDownView");
         g_pPullUpDownView = this;
     }
 
     PullUpDownView::~PullUpDownView()
     {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::~PullUpDownView");
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpDownView::~PullUpDownView");
         ClearAll();
         g_pPullUpDownView = nullptr;
     }
@@ -109,58 +109,73 @@ namespace OHOS
 
     void PullUpDownView::ClearAll()
     {
-        RemoveAll();
-
-        for (int i = 0; i < MAX_INDEX; i++)
+        if (group[DROPDOWNVIEW] != nullptr)
         {
-            delete dropIconBackground[i];
-            dropIconBackground[i] = nullptr;
-        }
+            group[DROPDOWNVIEW]->RemoveAll();
+            group[DROPDOWNVIEW]->ClearBackgroundBlur();
 
-        delete dropSetting;
-        dropSetting = nullptr;
+            for (int i = 0; i < MAX_INDEX; i++)
+            {
+                delete dropIconBackground[i];
+                dropIconBackground[i] = nullptr;
+            }
 
-        delete dropLighting;
-        dropLighting = nullptr;
+            delete dropSetting;
+            dropSetting = nullptr;
 
-        delete dropDnotDisturb;
-        dropDnotDisturb = nullptr;
+            delete dropLighting;
+            dropLighting = nullptr;
 
-        delete dropLine;
-        dropLine = nullptr;
+            delete dropDnotDisturb;
+            dropDnotDisturb = nullptr;
 
-        delete dropSavePower;
-        dropSavePower = nullptr;
+            delete dropLine;
+            dropLine = nullptr;
 
-        delete drofindPhone;
-        drofindPhone = nullptr;
+            delete dropSavePower;
+            dropSavePower = nullptr;
 
-        delete showTimeLabel;
-        showTimeLabel = nullptr;
+            delete drofindPhone;
+            drofindPhone = nullptr;
 
-        delete showDateLabel;
-        showDateLabel = nullptr;
+            delete showTimeLabel;
+            showTimeLabel = nullptr;
 
-        delete showWeekLabel;
-        showWeekLabel = nullptr;
-        /* -------------------------------------------------------------------------- */
-        ClearAllSingalComponentsView();
-        ClearAllConnectedStatusComponentsView();
-        /* -------------------------------------------------------------------------- */
-        delete progress;
-        progress = nullptr;
+            delete showDateLabel;
+            showDateLabel = nullptr;
 
-        if (progresscallback_ != nullptr)
-        {
-            delete progresscallback_;
-            progresscallback_ = nullptr;
+            delete showWeekLabel;
+            showWeekLabel = nullptr;
+            /* -------------------------------------------------------------------------- */
+            ClearAllSingalComponentsView();
+            ClearAllConnectedStatusComponentsView();
+            /* -------------------------------------------------------------------------- */
+            delete progress;
+            progress = nullptr;
+
+            if (progresscallback_ != nullptr)
+            {
+                delete progresscallback_;
+                progresscallback_ = nullptr;
+            }
+
+            if (progressanimator_ != nullptr)
+            {
+                progressanimator_->Stop();
+                delete progressanimator_;
+                progressanimator_ = nullptr;
+            }
+
+            Remove(group[DROPDOWNVIEW]);
+
+            delete group[DROPDOWNVIEW];
+            group[DROPDOWNVIEW] = nullptr;
         }
 
-        if (progressanimator_ != nullptr)
+        if (connectedStatusView != nullptr)
         {
-            progressanimator_->Stop();
-            delete progressanimator_;
-            progressanimator_ = nullptr;
+            delete connectedStatusView;
+            connectedStatusView = nullptr;
         }
     }
 
@@ -192,7 +207,7 @@ namespace OHOS
             {
                 ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, dropIconBackground[i], DROPDOWN_ICONELLIPSEBLACK);
             }
-            Add(dropIconBackground[i]);
+            group[DROPDOWNVIEW]->Add(dropIconBackground[i]);
         }
     }
 
@@ -283,12 +298,12 @@ namespace OHOS
         dropLine->SetPosition(LINE_IMG_X, LINE_IMG_Y, ICON_IMG_SIZE_W, ICON_IMG_SIZE_H);
         ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, dropLine, DROPDOWN_LINE);
         /* -------------------------------- 添加组件到视图上 -------------------------------- */
-        Add(dropSetting);
-        Add(dropLighting);
-        Add(dropDnotDisturb);
-        Add(dropSavePower);
-        Add(drofindPhone);
-        Add(dropLine);
+        group[DROPDOWNVIEW]->Add(dropSetting);
+        group[DROPDOWNVIEW]->Add(dropLighting);
+        group[DROPDOWNVIEW]->Add(dropDnotDisturb);
+        group[DROPDOWNVIEW]->Add(dropSavePower);
+        group[DROPDOWNVIEW]->Add(drofindPhone);
+        group[DROPDOWNVIEW]->Add(dropLine);
     }
 
     // 获取手机连接状态
@@ -326,8 +341,8 @@ namespace OHOS
         // connectedStatusBackgroundButton->SetStyleForState(STYLE_BORDER_COLOR, 0xffffffff, UIButton::PRESSED);
         // connectedStatusBackgroundButton->SetStyleForState(STYLE_BORDER_OPA, 0x00, UIButton::PRESSED);
         UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::MainPresenterSample::GetInstance();
-        // connectedStatusBackgroundButton->SetOnClickListener(clickListener);
-        Add(connectedStatusBackgroundButton);
+        connectedStatusBackgroundButton->SetOnClickListener(clickListener);
+        group[DROPDOWNVIEW]->Add(connectedStatusBackgroundButton);
         /* -------------------------------- 显示手机连接状态 -------------------------------- */
         showPhoneConnectedStatus = new UIImageView();
         if (showPhoneConnectedStatus == nullptr)
@@ -388,9 +403,9 @@ namespace OHOS
             ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, showBluetoothConnectedStatus, DROPDOWN_BLUETOOTHDISCONNECTED);
         }
         /* -------------------------------------------------------------------------- */
-        Add(showPhoneConnectedStatus);
-        Add(showEarPhoneConnectedStatus);
-        Add(showBluetoothConnectedStatus);
+        group[DROPDOWNVIEW]->Add(showPhoneConnectedStatus);
+        group[DROPDOWNVIEW]->Add(showEarPhoneConnectedStatus);
+        group[DROPDOWNVIEW]->Add(showBluetoothConnectedStatus);
     }
 
     // 清除所有与连接状态相关的视图组件
@@ -476,7 +491,6 @@ namespace OHOS
         }
         std::string batteryimagesPath = "/user/res/Battery/Battery-E.bin";
         batteryimage->SetSrc(batteryimagesPath.c_str());
-        Add(batteryimage);
         /* -------------------------------------------------------------------------- */
         progress = new UIBoxProgress();
         if (progress == nullptr)
@@ -504,10 +518,11 @@ namespace OHOS
         progress->SetForegroundStyle(STYLE_TEXT_COLOR, 0xff000000);
         progress->SetForegroundStyle(STYLE_LINE_COLOR, 0xff45A5FF);
 
-        Add(progress);
-        Add(showTimeLabel);
-        Add(showDateLabel);
-        Add(showWeekLabel);
+        group[DROPDOWNVIEW]->Add(progress);
+        group[DROPDOWNVIEW]->Add(batteryimage);
+        group[DROPDOWNVIEW]->Add(showTimeLabel);
+        group[DROPDOWNVIEW]->Add(showDateLabel);
+        group[DROPDOWNVIEW]->Add(showWeekLabel);
 
         return true;
     }
@@ -528,7 +543,7 @@ namespace OHOS
         NoSignal->SetResizeMode(UIImageView::CENTER);
         ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, NoSignal, DROPDOWN_NOSIGNAL);
         NoSignal->SetVisible(false);
-        Add(NoSignal);
+        group[DROPDOWNVIEW]->Add(NoSignal);
         /* -------------------------------------------------------------------------- */
         // 定义一个结构体,用于存储 ImageView 的信息
         struct ImageViewInfo
@@ -569,7 +584,7 @@ namespace OHOS
             }
             showSignalStrength[i]->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
             showSignalStrength[i]->SetStyle(STYLE_BORDER_RADIUS, 10);
-            Add(showSignalStrength[i]);
+            group[DROPDOWNVIEW]->Add(showSignalStrength[i]);
             showSignalStrength[i]->SetVisible(false);
         }
         /* -------------------------------------------------------------------------- */
@@ -585,7 +600,7 @@ namespace OHOS
         Singal_4->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
         Singal_4->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 34);
         Singal_4->SetVisible(false);
-        Add(Singal_4);
+        group[DROPDOWNVIEW]->Add(Singal_4);
         /* -------------------------------------------------------------------------- */
         SetSingalComponentsVisible(GetSignalStrength());
 
@@ -644,6 +659,17 @@ namespace OHOS
     bool PullUpDownView::InitView()
     {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::InitDropDownView caller:");
+
+        group[DROPDOWNVIEW] = new UIViewGroup();
+        if (group[DROPDOWNVIEW] == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group[DROPDOWNVIEW] new fail!!");
+            return false;
+        }
+        group[DROPDOWNVIEW]->SetPosition(0, 0, 466, 466);
+        group[DROPDOWNVIEW]->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
+        group[DROPDOWNVIEW]->SetViewIndex(0);
+        group[DROPDOWNVIEW]->SetFullScreenBlur(true);
         InitViewImg();
         InitTimeDateWeekLabelAndConnectedStatusImage();
 
@@ -658,6 +684,7 @@ namespace OHOS
         }
         SetTouchable(true);
         SetIntercept(true);
+        Add(group[DROPDOWNVIEW]);
         return true;
     }
 
@@ -805,5 +832,81 @@ namespace OHOS
     {
         return progress;
     }
+    /* -------------------------------------------------------------------------- */
+    // 切换到"下拉控制中心"视图
+    bool PullUpDownView::ChangeDropDownView(int16_t thisView)
+    {
+        if (group[thisView] == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpDownView::ChangeDropDownView");
+            Add(group[thisView]);
+        }
+        return true;
+    }
 
+    // 切换到"连接状态"视图
+    bool PullUpDownView::ChangeConnectedStatusView(int16_t thisView)
+    {
+        if (group[thisView] == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpDownView::ChangeConnectedStatusView");
+            connectedStatusView = new ConnectedStatusView();
+            if (connectedStatusView == nullptr)
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpDownView:: new scrollView[%d] fail", thisView);
+                return false;
+            }
+            group[thisView] = connectedStatusView->ConnectedStatusViewInit();
+            Add(group[thisView]);
+        }
+        return true;
+    }
+
+    struct PullUpDownViewMapper
+    {
+        const int16_t viewId;
+        bool (PullUpDownView::*func)(int16_t thisView);
+    };
+
+    static const PullUpDownViewMapper ViewMapper[] = {
+        {DROPDOWNVIEW, &PullUpDownView::ChangeDropDownView},
+        {CONNECTEDSTATUSVIEW, &PullUpDownView::ChangeConnectedStatusView},
+    };
+
+    bool PullUpDownView::ClickFunc(int16_t interface)
+    {
+        int funcSize = sizeof(ViewMapper) / sizeof(ViewMapper[0]);
+        for (int i = 0; i < funcSize; i++)
+        {
+            if (interface == ViewMapper[i].viewId)
+            {
+                bool jug = (this->*(ViewMapper[i].func))(interface);
+                if (jug == false)
+                {
+                    return false;
+                }
+                return true;
+            }
+        }
+        return false;
+    }
+
+    void PullUpDownView::ChangeView(int16_t hideView, int16_t showView)
+    {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpDownView::ChangeView");
+        if (hideView > MAX_DROPDOWNVIEWID)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpDownView:: SystemViewId Overstep ones bounds");
+            return;
+        }
+        group[hideView]->SetVisible(false);
+        ClickFunc(showView);
+        group[showView]->SetVisible(true);
+        Invalidate();
+    }
+
+    ConnectedStatusView *PullUpDownView::GetConnectedStatusView(void)
+    {
+        return connectedStatusView;
+    }
 }