From: luozheng <1732036298@qq.com> Date: Sat, 27 Apr 2024 06:35:16 +0000 (+0800) Subject: 添加连接状态视图,通过在点击连接状态按钮进入 X-Git-Tag: release_V1.2.70_20241020_135402~1025^2~66 X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=064ce4bf2559940629703f34d1db5e446cd8bce3;p=mirrors%2FFD230.git 添加连接状态视图,通过在点击连接状态按钮进入 --- diff --git a/code/sdk/application/wearable/fd230app/CMakeLists.txt b/code/sdk/application/wearable/fd230app/CMakeLists.txt index 2ba6f5478..1823754d7 100644 --- a/code/sdk/application/wearable/fd230app/CMakeLists.txt +++ b/code/sdk/application/wearable/fd230app/CMakeLists.txt @@ -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 index 000000000..933924a54 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/main/include/ConnectedStatusView.h @@ -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 diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/MainPresenterSample.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/MainPresenterSample.h index caf82a29b..99d0d6127 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/main/include/MainPresenterSample.h +++ b/code/sdk/application/wearable/fd230app/nativeui/main/include/MainPresenterSample.h @@ -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; diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/PullUpDownView.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/PullUpDownView.h index 0fe914566..38fa1e990 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/main/include/PullUpDownView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/main/include/PullUpDownView.h @@ -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 index 000000000..96f44035d --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/main/src/ConnectedStatusView.cpp @@ -0,0 +1,309 @@ +#include "main/include/ConnectedStatusView.h" +#include "main/include/PullUpDownView.h" +#include "wearable_log.h" +#include "SettingModel.h" +#include +#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(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 diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/MainPresenterSample.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/MainPresenterSample.cpp index b8b0c2d80..fd2cb8c45 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/main/src/MainPresenterSample.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/main/src/MainPresenterSample.cpp @@ -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) { diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/MainViewSample.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/MainViewSample.cpp index 3827a4ec2..1d503e35b 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/main/src/MainViewSample.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/main/src/MainViewSample.cpp @@ -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) { diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/PullUpDownView.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/PullUpDownView.cpp index 48f673674..62ec2c94c 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/main/src/PullUpDownView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/main/src/PullUpDownView.cpp @@ -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; + } }