增加表盘管理状态:勿扰 睡眠 密码锁
authorCaisking <3449750381@qq.com>
Tue, 20 Aug 2024 06:32:08 +0000 (14:32 +0800)
committerCaisking <3449750381@qq.com>
Tue, 20 Aug 2024 06:32:08 +0000 (14:32 +0800)
14 files changed:
code/sdk/application/wearable/fd230app/nativeui/dnotdisturb/src/DnotDisturbModel.cpp
code/sdk/application/wearable/fd230app/nativeui/main/include/MainModel.h
code/sdk/application/wearable/fd230app/nativeui/main/include/MainViewSample.h
code/sdk/application/wearable/fd230app/nativeui/main/src/MainModel.cpp
code/sdk/application/wearable/fd230app/nativeui/main/src/MainPresenterSample.cpp
code/sdk/application/wearable/fd230app/nativeui/main/src/MainViewSample.cpp
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dial_state/disturbicon.bin [moved from code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/users/dial_status/disturbicon.bin with 100% similarity]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dial_state/lock.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dial_state/sleep.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dial_state/unread.bin [moved from code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/users/dial_status/unread.bin with 100% similarity]
tools/image_converter_tool/test/hert/users/dial_status/lock.png [new file with mode: 0644]
tools/image_converter_tool/test/hert/users/dial_status/lock.png:Zone.Identifier [new file with mode: 0644]
tools/image_converter_tool/test/hert/users/dial_status/sleep.png [new file with mode: 0644]
tools/image_converter_tool/test/hert/users/dial_status/sleep.png:Zone.Identifier [new file with mode: 0644]

index b37b1e4..38e8a38 100644 (file)
@@ -1,6 +1,19 @@
+/***
+ * @Date: 2024-08-12 10:11:33
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-08-20 14:05:51
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/dnotdisturb/src/DnotDisturbModel.cpp
+ */
+/***
+ * @Date: 2024-08-12 10:11:33
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-08-20 12:09:12
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/dnotdisturb/src/DnotDisturbModel.cpp
+ */
 #include "dnotdisturb/include/DnotDisturbModel.h"
 #include "main/include/PullUpDownView.h"
 #include "main/include/MainViewSample.h"
+#include "MainModel.h"
 #include "ConfigModel.h"
 namespace OHOS
 {
@@ -17,13 +30,13 @@ namespace OHOS
 
     void DnotDisturbModel::SetDoNotDisturbModeEnabled(bool enabled)
     {
-        // isDoNotDisturbModeEnabled = enabled;
         ConfigModel::GetInstance()->SetDnotdisturb(enabled);
+        /*更新主界面配置*/
+        MainModel::GetInstance().setDialState(DialState::DO_NOT_DISTURB, enabled);
     }
 
     bool DnotDisturbModel::GetDoNotDisturbModeEnabled() const
     {
-        // return isDoNotDisturbModeEnabled;
         return ConfigModel::GetInstance()->GetDnotdisturb();
     }
 
@@ -35,7 +48,8 @@ namespace OHOS
             /*更新主界面下拉界面配置*/
             PullUpDownView::GetInstance()->UpdateDnotDisturbStatus(GetDoNotDisturbModeEnabled());
             /*更新主界面配置*/
-            MainViewSample::GetInstance()->DisturbIcon()->SetVisible(GetDoNotDisturbModeEnabled());
+            MainModel::GetInstance().setDialState(DialState::DO_NOT_DISTURB, GetDoNotDisturbModeEnabled());
+            MainViewSample::GetInstance()->UpdateStateShow();
         }
         return;
     }
index f2ac1ac..9a96317 100644 (file)
@@ -1,4 +1,9 @@
-\r
+/***\r
+ * @Date: 2024-06-21 09:56:18\r
+ * @LastEditors: Caisking 3449750381@qq.com\r
+ * @LastEditTime: 2024-08-20 10:44:15\r
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/main/include/MainModel.h\r
+ */\r
 \r
 #ifndef MAIN_MODEL_H\r
 #define MAIN_MODEL_H\r
@@ -35,6 +40,21 @@ namespace OHOS
         std::string dialFullName;\r
     } DialSetting;\r
 \r
+    /*表盘状态*/\r
+    enum class DialState\r
+    {\r
+        DO_NOT_DISTURB, // 勿扰\r
+        SLEEP,          // 睡眠\r
+        LOCK,           // 锁\r
+        INVALID         // 无效状态\r
+    };\r
+    const int STATE_COUNT = 3; // 确保这里的数量与 DialState 状态数相同\r
+\r
+    struct DialStateInfo\r
+    {\r
+        DialState state;\r
+        bool active; // 是否激活\r
+    };\r
     class MainModel\r
     {\r
     public:\r
@@ -57,6 +77,11 @@ namespace OHOS
         const char *getCardNameFromMap(uint8_t cardId) const;\r
         const bool GetCardInfoSet(uint8_t index) const;\r
 \r
+        void setDialState(DialState state, bool value);\r
+        DialState getHighestPriorityActiveState();\r
+        bool getMessageActiveState();\r
+        void printDialStates();\r
+\r
     private:\r
         void InitDialSettingDefault(int Id);\r
         MainModel();\r
index e1bcd3d..d223ae7 100644 (file)
@@ -75,21 +75,14 @@ namespace OHOS
         PullUpDownView *GetPullUpView();
         void SetDisturbState(bool state); /*控制勿扰状态图标*/
         // UICrossView::VPage GetVerCurrentCard() const;
-
         UIView *GetMainViewGroup(void) const
         {
             return mainSwipeGroup;
         }
-
         UICardPage *GetViewById(int16_t id) const
         {
             return recordCard[id];
         }
-        /*获取勿扰图标image*/
-        UIImageView *DisturbIcon() const
-        {
-            return disturbanceicon_;
-        }
         void SwitchToClockPage(void)
         {
             if (mainClockView != nullptr)
@@ -103,6 +96,7 @@ namespace OHOS
         void SetDragFg(bool continFg);
         bool GetDragFg(void);
         void SetPage(int16_t page);
+        void UpdateStateShow();
 
     private:
         PullUpDownView *dropDownView{nullptr};
@@ -123,7 +117,8 @@ namespace OHOS
         goalControlView *GoalControlView{nullptr};
         // ApplistCardView *applistCardView{nullptr};
         UIButton *changebut{nullptr};
-        UIImageView *disturbanceicon_{nullptr}; // 勿扰图标
+
+        UIImageView *dialstateicon_{nullptr}; // 勿扰图标
         UIImageView *messageicon_{nullptr};     // 未读图标
         /* -------------------------------------------------------------------------- */
         UICardPage *recordCard[MAX_CARD]{nullptr};
index 3cf0ea2..d284566 100644 (file)
@@ -10,7 +10,9 @@
 #include "kv_store.h"\r
 #include "securec.h"\r
 #include "wearable_log.h"\r
-\r
+#include "ConfigModel.h"\r
+#include <array>\r
+#include <stdexcept>\r
 namespace OHOS\r
 {\r
     static const int CARD_SETTING_VALUE_LEN = 32;\r
@@ -28,16 +30,15 @@ namespace OHOS
         {MUSIC_PLAYER, PNG_SET_CARD_PLAYER, false},\r
     };\r
     /*维护卡片*/\r
-    CardInfoSet cardInfoSet[] =\r
-        {\r
-            {HEART_RATE, true},\r
-            {TRAINING, false},\r
-            {COMPASS, true},\r
-            {SLEEP, false},\r
-            {BLOODOXGEN, false},\r
-            {GOAL, false},\r
-            {WEATHER, false},\r
-            {MUSIC_PLAYER, true},\r
+    CardInfoSet cardInfoSet[] = {\r
+        {HEART_RATE, true},\r
+        {TRAINING, false},\r
+        {COMPASS, true},\r
+        {SLEEP, false},\r
+        {BLOODOXGEN, false},\r
+        {GOAL, false},\r
+        {WEATHER, false},\r
+        {MUSIC_PLAYER, true},\r
     };\r
     /*自定义map配置*/\r
     const DialInfo dialInfoMap[] = {\r
@@ -52,7 +53,6 @@ namespace OHOS
 \r
 #endif\r
     };\r
-\r
     const CardInfo printfMap[] = {\r
         {HEART_RATE, "心率卡片"},\r
         {COMPASS, "指南针"},\r
@@ -63,10 +63,14 @@ namespace OHOS
         {GOAL, "每日目标"},\r
         {SLEEP, "睡眠"},\r
     };\r
+    /*表盘显示状态map*/\r
+    std::array<DialStateInfo, STATE_COUNT> dialstateInfo = {{\r
+        {DialState::DO_NOT_DISTURB, false},\r
+        {DialState::SLEEP, false},\r
+        {DialState::LOCK, false},\r
+    }};\r
     MainModel::MainModel() {}\r
-\r
     MainModel::~MainModel() {}\r
-\r
     MainModel &MainModel::GetInstance()\r
     {\r
         static MainModel instance;\r
@@ -455,6 +459,64 @@ namespace OHOS
     {\r
         return dialSetting;\r
     }\r
+\r
+    /*\r
+        ###表盘状态###\r
+\r
+        接口 1 设置某个项的属性为ture or false\r
+        接口 2 获取最高优先级为ture的状态为哪一个 并且返回\r
+        接口 3 打印状态\r
+\r
+        管理状态:勿扰 睡眠 密码锁\r
+    */\r
+\r
+    // 接口 1: 设置某个状态的属性\r
+    void MainModel::setDialState(DialState state, bool value)\r
+    {\r
+        // 将 state 转换为整数以进行比较\r
+        int stateIndex = static_cast<int>(state);\r
+        if (stateIndex >= 0 && stateIndex < STATE_COUNT)\r
+        {                                             // 确保 index 在有效范围\r
+            dialstateInfo[stateIndex].active = value; // 使用转换后的索引\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Set dialstateInfo[%d].active = %d", stateIndex, value);\r
+        }\r
+        else\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "state %d is error", stateIndex);\r
+        }\r
+    }\r
+\r
+    // 接口 2: 获取最高优先级为 true 的状态\r
+    DialState MainModel::getHighestPriorityActiveState()\r
+    {\r
+        for (int i = STATE_COUNT - 1; i >= 0; i--)\r
+        {\r
+            if (dialstateInfo[i].active)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "high dialstateInfo[%d].active", i);\r
+                return dialstateInfo[i].state; // 返回活跃状态中优先级最高的\r
+            }\r
+        }\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "no have high dialstateInfo.active");\r
+        return DialState::INVALID; // 如果没有找到活跃状态,返回无效状态\r
+    }\r
+\r
+    // 接口 3: 打印所有状态及其是否激活\r
+    void MainModel::printDialStates()\r
+    {\r
+        for (int i = 0; i < STATE_COUNT; ++i)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dialstateInfo[%d].active = %d", i, dialstateInfo[i].active);\r
+        }\r
+    }\r
+\r
+    // 未读状态判断\r
+    bool MainModel::getMessageActiveState()\r
+    {\r
+        bool unread_state = ConfigModel::GetInstance()->get_configData_bool(ConfigModel::CONFIGMODEL_ITEM_MESSAGE_UNREAD);\r
+        return unread_state;\r
+    }\r
+\r
 }\r
 #if 0\r
     void MainModel::DeleteCardSetting(uint8_t index)\r
index 65644f5..d6290dd 100644 (file)
@@ -31,6 +31,7 @@
 #include "dnotdisturb/include/DnotDisturbModel.h"
 #include "weather/include/WeatherModel.h"
 #include "heart_blood/health_service/health_service.h"
+#include "MainModel.h"
 
 #if USE_OFFLINE_DIAL
 #include "DialViewGroup.h"
@@ -183,11 +184,11 @@ namespace OHOS
         {
             PullUpDownView::GetInstance()->UpdateDnotDisturbStatus(false);
             DnotDisturbModel::GetInstance().SetDoNotDisturbModeEnabled(false);
-            /*更新表盘勿扰图标显示*/
-            MainViewSample::GetInstance()->DisturbIcon()->SetVisible(false);
+            /*更新主界面配置*/
+            MainModel::GetInstance().setDialState(DialState::DO_NOT_DISTURB,false);
+            MainViewSample::GetInstance()->UpdateStateShow();
             return true;
         }
-
         if (g_jumpView.count(curViewId) != 0)
         {
             NativeAbility::GetInstance().EnterSlice(g_jumpView[curViewId]);
index 2b89e1b..5375ceb 100644 (file)
 extern DialInfo_1 dialInfo_1[MAX_DIALNUM_1];
 namespace OHOS
 {
-    static constexpr const char *DISTURBICON = "user/res/users/dial_status/disturbicon.bin";
-    static constexpr const char *MESSAGEICON = "user/res/users/dial_status/unread.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";
 
     static MainViewSample *g_pMainView = nullptr;
     static constexpr uint16_t MESLABLE_X_TMP = 177;
@@ -110,11 +112,11 @@ namespace OHOS
             delete MessageLable;
             MessageLable = nullptr;
         }
-        if (disturbanceicon_ != nullptr)
+        if (dialstateicon_ != nullptr)
         {
-            mainClockView->Remove(disturbanceicon_);
-            delete disturbanceicon_;
-            disturbanceicon_ = nullptr;
+            mainClockView->Remove(dialstateicon_);
+            delete dialstateicon_;
+            dialstateicon_ = nullptr;
         }
         if (messageicon_ != nullptr)
         {
@@ -185,7 +187,30 @@ 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");
@@ -241,21 +266,17 @@ namespace OHOS
             SwitchToClockPage();
         }
 #if DIALSTATE
+
         /*增加勿扰图标*/
-        InitImageView(disturbanceicon_, 213, 0, 40, 40, "disturbIcon", DISTURBICON);
+        InitImageView(dialstateicon_, 213, 0, 40, 40, "disturbicon", DISTURBICON);
+        // dialstateicon_->SetVisible(false);
+
         /*增加未读图标*/
         InitImageView(messageicon_, 223, 446, 40, 40, "messageicon_", MESSAGEICON);
 
-        /*获取勿扰状态*/
-        bool disturb_state = ConfigModel::GetInstance()->get_configData_bool(ConfigModel::CONFIGMODEL_ITEM_DNOTDISTURB);
-        disturbanceicon_->SetVisible(disturb_state);
-        /*获取未读状态*/
-        bool unread_state = ConfigModel::GetInstance()->get_configData_bool(ConfigModel::CONFIGMODEL_ITEM_MESSAGE_UNREAD);
-        messageicon_->SetVisible(unread_state);
-
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[disturb_state:%d unread_state:%d]\r\n", disturb_state, unread_state);
+        UpdateStateShow();
 
-        mainClockView->Add(disturbanceicon_);
+        mainClockView->Add(dialstateicon_);
         mainClockView->Add(messageicon_);
 #endif
         SetContainerView(mainSwipeGroup);
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dial_state/lock.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dial_state/lock.bin
new file mode 100644 (file)
index 0000000..6f52123
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2025b6ac45f5e90be559b61e6c1c2e646fd51b272c9022de680ea44721f95aa3
+size 920
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dial_state/sleep.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/dial_state/sleep.bin
new file mode 100644 (file)
index 0000000..d401e1e
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:64e2f2f67dcd02842ae67cc94022adc8c26ee8f253054c2450bc799e29298a5f
+size 1144
diff --git a/tools/image_converter_tool/test/hert/users/dial_status/lock.png b/tools/image_converter_tool/test/hert/users/dial_status/lock.png
new file mode 100644 (file)
index 0000000..3cd0653
Binary files /dev/null and b/tools/image_converter_tool/test/hert/users/dial_status/lock.png differ
diff --git a/tools/image_converter_tool/test/hert/users/dial_status/lock.png:Zone.Identifier b/tools/image_converter_tool/test/hert/users/dial_status/lock.png:Zone.Identifier
new file mode 100644 (file)
index 0000000..053d112
--- /dev/null
@@ -0,0 +1,3 @@
+[ZoneTransfer]\r
+ZoneId=3\r
+HostUrl=about:internet\r
diff --git a/tools/image_converter_tool/test/hert/users/dial_status/sleep.png b/tools/image_converter_tool/test/hert/users/dial_status/sleep.png
new file mode 100644 (file)
index 0000000..81b29e2
Binary files /dev/null and b/tools/image_converter_tool/test/hert/users/dial_status/sleep.png differ
diff --git a/tools/image_converter_tool/test/hert/users/dial_status/sleep.png:Zone.Identifier b/tools/image_converter_tool/test/hert/users/dial_status/sleep.png:Zone.Identifier
new file mode 100644 (file)
index 0000000..053d112
--- /dev/null
@@ -0,0 +1,3 @@
+[ZoneTransfer]\r
+ZoneId=3\r
+HostUrl=about:internet\r