#1000 手表,开启睡眠模式后,在开室内走路运动,之后关闭掉回主表盘,顶部的睡眠模式图标消失,进出菜单后恢复 1377/3 1377/head
authorCaisking <3449750381@qq.com>
Sat, 9 Nov 2024 08:45:29 +0000 (16:45 +0800)
committerCaisking <3449750381@qq.com>
Sat, 9 Nov 2024 08:45:29 +0000 (16:45 +0800)
code/sdk/application/wearable/fd230app/nativeui/clock/include/MainClockView.h
code/sdk/application/wearable/fd230app/nativeui/clock/src/MainClockView.cpp
code/sdk/application/wearable/fd230app/nativeui/main/include/MainViewSample.h
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialViewGroup.h
code/sdk/application/wearable/fd230app/nativeui/main/src/MainModel.cpp
code/sdk/application/wearable/fd230app/nativeui/main/src/MainViewSample.cpp
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialViewGroup.cpp

index 7c83d81..068b647 100644 (file)
@@ -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};
 
index 72edf73..a3cbbf3 100644 (file)
@@ -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;
         }
 
index 219dbad..9a98930 100644 (file)
@@ -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};
index 49a94cc..ee1a8ad 100644 (file)
@@ -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;
index 9532268..093ac62 100644 (file)
@@ -18,6 +18,7 @@
 #include "SetDialModel.h"\r
 #include "dnotdisturb/include/DnotDisturbModel.h"\r
 #include "custom_utils.h"\r
+#include "DialViewGroup.h"\r
 \r
 extern "C" void uapi_dev_runtime_set_lock_status(uint8_t status);\r
 \r
index 17acaad..6bdd96b 100644 (file)
@@ -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<DialViewGroup *>(mainClockView)->UpdateStateShow();
+            }
+        }
+        //在线表盘
+        else {
+          if (mainClockView != nullptr) {
+                dynamic_cast<MainClockView *>(mainClockView)->UpdateStateShow();
+            }
+          
+        }
+    }
+    
     bool MainViewSample::HorizontalViewInit(void)
     {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::HorizontalViewInit");
index 3c163ff..201cda5 100644 (file)
 #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)
     {