优化密码锁界面回退主界面功能
authorCaisking <3449750381@qq.com>
Thu, 22 Aug 2024 10:27:56 +0000 (18:27 +0800)
committerCaisking <3449750381@qq.com>
Thu, 22 Aug 2024 10:27:56 +0000 (18:27 +0800)
code/sdk/application/wearable/fd230app/nativeui/codedlock/src/CodedLockPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/main/src/MainModel.cpp
code/sdk/application/wearable/fd230app/nativeui/screennotify/src/ui_screennotify.cpp

index 616ebd1..ed91c90 100644 (file)
@@ -62,10 +62,6 @@ namespace OHOS
 
     void CodedLockPresenter::OnStop(void)
     {
-        /*关锁*/
-        uapi_dev_runtime_set_lock_status(0);
-        /*设置表盘状态*/
-        MainModel::GetInstance().setDialState(DialState::LOCK, false);
         Presenter<CodedLockView>::OnStop();
     }
     void CodedLockPresenter::JudgeMatch()
@@ -81,8 +77,12 @@ namespace OHOS
         /*每次点击完成判断 是否 完成密码匹配*/
         if (CodedLockModel::GetInstance()->IsLockState())
         {
-            NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "回到主界面");
+            /*关锁*/
+            uapi_dev_runtime_set_lock_status(0);
+            NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);
+            /*设置表盘状态*/
+            MainModel::GetInstance().setDialState(DialState::LOCK, false);
         }
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "JudgeMatch is Ok");
     }
index 674e135..0cd4521 100644 (file)
@@ -47,7 +47,7 @@ namespace OHOS
 #ifdef CUSTOM_Z1\r
         {DIAL_CLOCK, "Z1", DEFAULT_DIALPER_PATH, DEFAULT_TASK_PERIOD},\r
 #else\r
-        {DIAL_CLOCK, "KUMI", DEFAULT_DIALPER_PATH, DEFAULT_TASK_PERIOD},             // 默认表盘 Id 0\r
+        {DIAL_CLOCK, "KUMI", DEFAULT_DIALPER_PATH, DEFAULT_TASK_PERIOD}, // 默认表盘 Id 0\r
 #endif\r
         {DIAL_CLOCK_1, "Custom_1", CUSTOM_CLOCK1_DIALPER_PATH, DEFAULT_TASK_PERIOD}, // 表盘 Id 1\r
         {DIAL_CLOCK_2, "Custom_2", CUSTOM_CLOCK2_DIALPER_PATH, DEFAULT_TASK_PERIOD}, // 表盘 Id 2\r
@@ -492,17 +492,24 @@ namespace OHOS
     {\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
+        if (stateIndex >= 0 && stateIndex < STATE_COUNT) // 确保 index 在有效范围\r
+        {\r
+            // 检查当前状态是否与要设置的状态一致\r
+            if (dialstateInfo[stateIndex].active != value)\r
+            {\r
+                dialstateInfo[stateIndex].active = value; // 使用转换后的索引\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Set dialstateInfo[%d].active = %d", stateIndex, value);\r
+                SendMsgToUIService(UI_UPDATE_DIALSTATE_DATA, 0, nullptr, 0); // 发送更新消息\r
+            }\r
+            else\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "State %d is unchanged, no update needed.", stateIndex);\r
+            }\r
         }\r
         else\r
         {\r
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "state %d is error", stateIndex);\r
         }\r
-\r
-        SendMsgToUIService(UI_UPDATE_DIALSTATE_DATA, 0, nullptr, 0);\r
     }\r
 \r
     // 接口 2: 获取最高优先级为 true 的状态\r
index 138b98b..deac436 100644 (file)
@@ -34,6 +34,7 @@ extern "C"
     {
         screen_context_t *sc = power_display_get_screen_context();
         uint16_t current_slice_id = OHOS::NativeAbility::GetInstance().GetCurSliceId();
+
         for (uint16_t i = 0; i < sizeof(ignore_slice_ids) / sizeof(uint16_t); i++)
         {
             if (ignore_slice_ids[i] == current_slice_id)
@@ -79,6 +80,11 @@ extern "C"
                         /*设置表盘状态*/
                         OHOS::MainModel::GetInstance().setDialState(OHOS::DialState::LOCK, true);
                     }
+                    if (uapi_dev_runtime_get_lock_status() == 1 && (current_slice_id == VIEW_CODED_LOCK))
+                    {
+                        /*重新进入一次主界面*/
+                        OHOS::NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);
+                    }
                 }
             }
         }