From 3b8396bee37c6c992e908764e73f0a54a9f0a285 Mon Sep 17 00:00:00 2001 From: Caisking <3449750381@qq.com> Date: Sat, 9 Nov 2024 16:45:29 +0800 Subject: [PATCH] =?utf8?q?#1000=20=E6=89=8B=E8=A1=A8=EF=BC=8C=E5=BC=80?= =?utf8?q?=E5=90=AF=E7=9D=A1=E7=9C=A0=E6=A8=A1=E5=BC=8F=E5=90=8E=EF=BC=8C?= =?utf8?q?=E5=9C=A8=E5=BC=80=E5=AE=A4=E5=86=85=E8=B5=B0=E8=B7=AF=E8=BF=90?= =?utf8?q?=E5=8A=A8=EF=BC=8C=E4=B9=8B=E5=90=8E=E5=85=B3=E9=97=AD=E6=8E=89?= =?utf8?q?=E5=9B=9E=E4=B8=BB=E8=A1=A8=E7=9B=98=EF=BC=8C=E9=A1=B6=E9=83=A8?= =?utf8?q?=E7=9A=84=E7=9D=A1=E7=9C=A0=E6=A8=A1=E5=BC=8F=E5=9B=BE=E6=A0=87?= =?utf8?q?=E6=B6=88=E5=A4=B1=EF=BC=8C=E8=BF=9B=E5=87=BA=E8=8F=9C=E5=8D=95?= =?utf8?q?=E5=90=8E=E6=81=A2=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../nativeui/clock/include/MainClockView.h | 5 ++ .../nativeui/clock/src/MainClockView.cpp | 54 ++++++++++++ .../nativeui/main/include/MainViewSample.h | 7 +- .../main/include/dial/DialViewGroup.h | 7 +- .../fd230app/nativeui/main/src/MainModel.cpp | 1 + .../nativeui/main/src/MainViewSample.cpp | 83 +++++++------------ .../nativeui/main/src/dial/DialViewGroup.cpp | 60 +++++++++++++- 7 files changed, 157 insertions(+), 60 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativeui/clock/include/MainClockView.h b/code/sdk/application/wearable/fd230app/nativeui/clock/include/MainClockView.h index 7c83d8154..068b647ea 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/clock/include/MainClockView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/clock/include/MainClockView.h @@ -100,6 +100,8 @@ namespace OHOS bool InitBatteryView(BatteryDisplayType type); // 电量 bool InitColor(ColorTypeSet type); // 颜色 + void UpdateStateShow(void); + private: void InitStepValue(); bool InitLabelView(void); @@ -141,6 +143,9 @@ namespace OHOS Image *medCircle{nullptr}; Image *smallCircle{nullptr}; + UIImageView *dialstateicon_{nullptr}; // 勿扰 + UIImageView *messageicon_{nullptr}; // 未读图标 + bool viewiInitStatus{false}; bool resLoadStatus{false}; diff --git a/code/sdk/application/wearable/fd230app/nativeui/clock/src/MainClockView.cpp b/code/sdk/application/wearable/fd230app/nativeui/clock/src/MainClockView.cpp index 72edf7314..a3cbbf34e 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/clock/src/MainClockView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/clock/src/MainClockView.cpp @@ -12,6 +12,7 @@ */ #include "MainClockView.h" +#include "MainModel.h" #include "MainPresenterSample.h" #include "SetDialModel.h" #include "battery_hal.h" @@ -44,6 +45,11 @@ static constexpr const char *CHAGE_BATTERY = "/user/res/Battery/Icon.bin"; static constexpr const char *WHITE_BATTERY = "/user/res/Battery/Battery_White.bin"; static constexpr const char *BLACK_BATTERY = "/user/res/Battery/Battery_Black.bin"; +static constexpr const char *DISTURBICON = "user/res/dial_state/disturbicon.bin"; +static constexpr const char *MESSAGEICON = "user/res/dial_state/unread.bin"; +static constexpr const char *SLEEPICON = "user/res/dial_state/sleep.bin"; +static constexpr const char *LOCKICON = "user/res/dial_state/lock.bin"; + // 定义一些常量 constexpr int HOURS_IN_DAY = 24; constexpr int MINUTES_IN_HOUR = 60; @@ -124,6 +130,15 @@ namespace OHOS stepLabel = nullptr; delete heartlabel; // 心率 heartlabel = nullptr; + if (dialstateicon_ != nullptr) { + delete dialstateicon_; + dialstateicon_ = nullptr; + } + + if (messageicon_ != nullptr) { + delete messageicon_; + messageicon_ = nullptr; + } g_pMainClockView = nullptr; } @@ -413,12 +428,51 @@ namespace OHOS return true; } + void MainClockView::UpdateStateShow() + { + if (messageicon_ == nullptr || dialstateicon_ == nullptr) + return; + + /*配置未读状态*/ + messageicon_->SetVisible(MainModel::GetInstance().getMessageActiveState()); + /*配置表盘状态*/ + dialstateicon_->SetVisible(true); + switch (MainModel::GetInstance().getHighestPriorityActiveState()) + { + case DialState::DO_NOT_DISTURB: + dialstateicon_->SetSrc(DISTURBICON); + break; + case DialState::SLEEP: + dialstateicon_->SetSrc(SLEEPICON); + break; + case DialState::LOCK: + dialstateicon_->SetSrc(LOCKICON); + break; + default: + dialstateicon_->SetVisible(false); + break; + } + } + void MainClockView::PreLoad(void) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainClockView::PreLoad"); if (!viewiInitStatus) { InitView(); + + /*增加手表状态图标*/ + InitImageView(dialstateicon_, 213, 2, 40, 40, "disturbicon", DISTURBICON); + // dialstateicon_->SetVisible(false); + + /*增加未读图标*/ + InitImageView(messageicon_, 223, 444, 20, 20, "messageicon_", MESSAGEICON); + + UpdateStateShow(); + + Add(dialstateicon_); + Add(messageicon_); + viewiInitStatus = true; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/MainViewSample.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/MainViewSample.h index 219dbad15..9a9893001 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/main/include/MainViewSample.h +++ b/code/sdk/application/wearable/fd230app/nativeui/main/include/MainViewSample.h @@ -97,8 +97,9 @@ namespace OHOS void SetDragFg(bool continFg); bool GetDragFg(void); void SetPage(int16_t page); - void UpdateStateShow(); + void UpdateStateShow(UIImageView *&messageicon,UIImageView *&dialstateicon); void HandOnKeyEventSwitchMainPullDownView(void); + void UpdateStateShow(void); private: PullUpDownView *dropDownView{nullptr}; @@ -120,8 +121,8 @@ namespace OHOS // ApplistCardView *applistCardView{nullptr}; UIButton *changebut{nullptr}; - UIImageView *dialstateicon_{nullptr}; // 勿扰图标 - UIImageView *messageicon_{nullptr}; // 未读图标 + // UIImageView *dialstateicon_{nullptr}; // 勿扰图标 + // UIImageView *messageicon_{nullptr}; // 未读图标 /* -------------------------------------------------------------------------- */ UICardPage *recordCard[MAX_CARD]{nullptr}; bool pageStatus[MAX_CARD]{false}; diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialViewGroup.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialViewGroup.h index 49a94cc40..ee1a8ad4d 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialViewGroup.h +++ b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialViewGroup.h @@ -119,6 +119,9 @@ public: void StopDial(); void StartDial(); + /*外部接口更新表盘状态*/ + void UpdateStateShow(); + MediaVideoPlay* GetVideoPlay(); private: @@ -137,7 +140,9 @@ private: std::string filePath_; FILE* fp_ = nullptr; DialVideoView* video_ = nullptr; - UIKaleidoscopeView* kaleidoscope_ = nullptr; + UIKaleidoscopeView *kaleidoscope_ = nullptr; + UIImageView *dialstateicon_{nullptr}; // 勿扰图标 + UIImageView *messageicon_{nullptr}; // 未读图标 typedef struct { Rect area; diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/MainModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/MainModel.cpp index 9532268f6..093ac6221 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/main/src/MainModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/main/src/MainModel.cpp @@ -18,6 +18,7 @@ #include "SetDialModel.h" #include "dnotdisturb/include/DnotDisturbModel.h" #include "custom_utils.h" +#include "DialViewGroup.h" extern "C" void uapi_dev_runtime_set_lock_status(uint8_t status); 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 17acaad16..6bdd96b23 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/main/src/MainViewSample.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/main/src/MainViewSample.cpp @@ -16,10 +16,6 @@ extern "C" uint8_t uapi_dev_runtime_get_lock_status(void); namespace OHOS { - static constexpr const char *DISTURBICON = "user/res/dial_state/disturbicon.bin"; - static constexpr const char *MESSAGEICON = "user/res/dial_state/unread.bin"; - static constexpr const char *SLEEPICON = "user/res/dial_state/sleep.bin"; - static constexpr const char *LOCKICON = "user/res/dial_state/lock.bin"; static MainViewSample *g_pMainView = nullptr; static constexpr uint16_t MESLABLE_X_TMP = 177; @@ -114,18 +110,18 @@ namespace OHOS delete MessageLable; MessageLable = nullptr; } - if (dialstateicon_ != nullptr) - { - mainClockView->Remove(dialstateicon_); - delete dialstateicon_; - dialstateicon_ = nullptr; - } - if (messageicon_ != nullptr) - { - mainClockView->Remove(messageicon_); - delete messageicon_; - messageicon_ = nullptr; - } + // if (dialstateicon != nullptr) + // { + // mainClockView->Remove(dialstateicon); + // delete dialstateicon; + // dialstateicon = nullptr; + // } + // if (messageicon != nullptr) + // { + // mainClockView->Remove(messageicon); + // delete messageicon; + // messageicon = nullptr; + // } if (compassControlView != nullptr) { compassControlView->RemoveAll(); @@ -194,31 +190,7 @@ namespace OHOS { return g_pMainView; } - void MainViewSample::UpdateStateShow() - { - if (messageicon_ == nullptr || dialstateicon_ == nullptr) - return; - /*配置未读状态*/ - messageicon_->SetVisible(MainModel::GetInstance().getMessageActiveState()); - /*配置表盘状态*/ - dialstateicon_->SetVisible(true); - switch (MainModel::GetInstance().getHighestPriorityActiveState()) - { - case DialState::DO_NOT_DISTURB: - dialstateicon_->SetSrc(DISTURBICON); - break; - case DialState::SLEEP: - dialstateicon_->SetSrc(SLEEPICON); - break; - case DialState::LOCK: - dialstateicon_->SetSrc(LOCKICON); - break; - default: - dialstateicon_->SetVisible(false); - break; - } - } void MainViewSample::OnStart() { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::OnStart"); @@ -292,23 +264,26 @@ namespace OHOS } } -#if DIALSTATE - - /*增加手表状态图标*/ - InitImageView(dialstateicon_, 213, 2, 40, 40, "disturbicon", DISTURBICON); - // dialstateicon_->SetVisible(false); - - /*增加未读图标*/ - InitImageView(messageicon_, 223, 444, 20, 20, "messageicon_", MESSAGEICON); - - UpdateStateShow(); - - mainClockView->Add(dialstateicon_); - mainClockView->Add(messageicon_); -#endif SetContainerView(mainSwipeGroup); } + void MainViewSample::UpdateStateShow() { + DialSetting &setting = presenter_->GetDialSetting(); + //离线表盘 + if (setting.dialFlag) { + if (mainClockView != nullptr) { + dynamic_cast(mainClockView)->UpdateStateShow(); + } + } + //在线表盘 + else { + if (mainClockView != nullptr) { + dynamic_cast(mainClockView)->UpdateStateShow(); + } + + } + } + bool MainViewSample::HorizontalViewInit(void) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::HorizontalViewInit"); diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialViewGroup.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialViewGroup.cpp index 3c163fffb..201cda53b 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialViewGroup.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialViewGroup.cpp @@ -13,13 +13,19 @@ #include "message/include/MessageControlView.h" #include "hal_tick.h" #include "common/image_cache_manager.h" +#include "MainViewSample.h" #include "alipay_feature.h" #ifdef SUPPORT_AT_OHOSFWK #include "ui_screennotify.h" #endif namespace OHOS { - static DialVideoView *g_video = nullptr; +static DialVideoView *g_video = nullptr; + + static constexpr const char *DISTURBICON = "user/res/dial_state/disturbicon.bin"; + static constexpr const char *MESSAGEICON = "user/res/dial_state/unread.bin"; + static constexpr const char *SLEEPICON = "user/res/dial_state/sleep.bin"; + static constexpr const char *LOCKICON = "user/res/dial_state/lock.bin"; #ifdef SUPPORT_AT_OHOSFWK static void ScreenStatusNotify(ScreenStatus status) @@ -111,6 +117,16 @@ namespace OHOS video_ = nullptr; + if (dialstateicon_ != nullptr) { + delete dialstateicon_; + dialstateicon_ = nullptr; + } + + if (messageicon_ != nullptr) { + delete messageicon_; + messageicon_ = nullptr; + } + if (fp_ != nullptr) { fclose(fp_); @@ -125,6 +141,31 @@ namespace OHOS filePath_ = filePath; } + void DialViewGroup::UpdateStateShow() + { + if (messageicon_ == nullptr || dialstateicon_ == nullptr) + return; + + /*配置未读状态*/ + messageicon_->SetVisible(MainModel::GetInstance().getMessageActiveState()); + /*配置表盘状态*/ + dialstateicon_->SetVisible(true); + switch (MainModel::GetInstance().getHighestPriorityActiveState()) + { + case DialState::DO_NOT_DISTURB: + dialstateicon_->SetSrc(DISTURBICON); + break; + case DialState::SLEEP: + dialstateicon_->SetSrc(SLEEPICON); + break; + case DialState::LOCK: + dialstateicon_->SetSrc(LOCKICON); + break; + default: + dialstateicon_->SetVisible(false); + break; + } + } void DialViewGroup::PreLoad(void) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "DialViewGroup::PreLoad"); @@ -137,7 +178,21 @@ namespace OHOS GRAPHIC_LOGE("cannot open file: %s\n", filePath_.c_str()); return; } - DialBinParser::GetInstance()->UpdateDial(filePath_, fp_, this); + DialBinParser::GetInstance()->UpdateDial(filePath_, fp_, this); // 添加主表盘卡片内容 + // 添加自定义logo,例如勿扰模式 + + /*增加手表状态图标*/ + InitImageView(dialstateicon_, 213, 2, 40, 40, "disturbicon", DISTURBICON); + // dialstateicon_->SetVisible(false); + + /*增加未读图标*/ + InitImageView(messageicon_, 223, 444, 20, 20, "messageicon_", MESSAGEICON); + + UpdateStateShow(); + + Add(dialstateicon_); + Add(messageicon_); + resPreloaded_ = true; } @@ -159,6 +214,7 @@ namespace OHOS resLoadStatus = false; } } + void DialViewGroup::ProcessData(DialDataType type, DialView *view) { -- 2.17.1