Merge #876 into sdk602patch0626 from refs/changes/876/head
author程羽飞 <2393524978@qq.com>
Thu, 5 Sep 2024 07:44:41 +0000 (07:44 +0000)
committersnickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
Thu, 5 Sep 2024 07:44:41 +0000 (07:44 +0000)
Code review from 程羽飞

* refs/changes/876/head: (4 commits squashed)

  - 闹钟增加点击时间进入编辑和左滑按钮删除功能

  - Merge branch &#39;sdk602patch0626&#39; of codeup.aliyun.com:64191456b9581d62e8f81ac0/FD230 into sdk602patch0626

  - Merge branch &#39;sdk602patch0626&#39; of codeup.aliyun.com:64191456b9581d62e8f81ac0/FD230 into sdk602patch0626

  - 解决APP同步闹钟异常、移除默认内置闹钟、增加第一个闹钟可删除功能

Signed-off-by: dingtalk_kaxuzp <2393524978@qq.com>
Reviewed-by: snickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
Merged-by: snickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/876
code/sdk/application/wearable/fd230app/nativeui/alarm/include/AlarmClockModel.h
code/sdk/application/wearable/fd230app/nativeui/alarm/include/AlarmPresenter.h
code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmClockModel.cpp
code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/alarm/src/MainAlarmView.cpp
code/sdk/application/wearable/fd230app/nativeui/uiservice/include/ui_service.h
code/sdk/application/wearable/fd230app/nativeui/uiservice/src/ui_service.cpp
code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp

index 9e965a3..3ca0907 100644 (file)
@@ -104,7 +104,7 @@ public:
     void NextDayNotify(void);\r
     void ResetRingClockStatus(void);\r
     void DeactAudioInter(void);\r
-    void PushAlarmClockData(AlarmClockQueueMsg alarmClockMsg);\r
+    // void PushAlarmClockData(AlarmClockQueueMsg alarmClockMsg);\r
     void PopInterCancelMusic(void);\r
     void PopInterPlayMusic(void);\r
     void SetAlarmInfo(uint32_t time_hour, uint32_t time_min, uint8 week, uint16_t alarmListener, uint16_t setListener);\r
@@ -121,15 +121,18 @@ public:
     int testPlayerStart(char *);\r
     int AlarmPlayerStop();\r
     int InitAlarmData(void);\r
+\r
+    void UpdateAlarmInfoByAppSet(void);\r
+\r
 private:\r
     void SetAlarmId(uint8_t id);\r
     void DeleteAlarmId(uint8_t id);\r
-    void NewFirstTime(void);\r
+    // void NewFirstTime(void);\r
     uint8_t GetAlarmId(void);\r
-    int32_t SaveGlobalAlarmToFile(void);\r
-    int32_t GetAlarmGlobalData(uint8 id, AlarmClockInfo *info);\r
-    int32_t InitAlarmClockData(void);\r
-    int32_t FetchedAlarmClockData(AlarmClockQueueMsg *alarmClockMsg);\r
+    // int32_t SaveGlobalAlarmToFile(void);\r
+    // int32_t GetAlarmGlobalData(uint8 id, AlarmClockInfo *info);\r
+    // int32_t InitAlarmClockData(void);\r
+    // int32_t FetchedAlarmClockData(AlarmClockQueueMsg *alarmClockMsg);\r
     int32_t GettManagement(AlarmClockManagement *management);\r
     \r
     bool JudgeClockModel(uint16_t alarmNum);\r
@@ -156,8 +159,8 @@ private:
     List<AlarmClockQueueMsg> listAlarmClock;\r
 };\r
 \r
-extern "C" {\r
-    void PushAlarmClockDataToModel(AlarmClockQueueMsg alarmClockMsg);\r
-}\r
+// extern "C" {\r
+//     void PushAlarmClockDataToModel(AlarmClockQueueMsg alarmClockMsg);\r
+// }\r
 }\r
 #endif // ALARM_CLOCK_MODEL_H\r
index 8d8ce06..d972dfa 100644 (file)
@@ -149,7 +149,7 @@ public:
     void OnTimePickerStoped(UITimePicker &picker) override;\r
     void ClickBlue(UIView &view);\r
     void ClickBlack(UIView &view);\r
-    void GetAlarmNum(uint16_t alarmNum);\r
+    // void GetAlarmNum(uint16_t alarmNum);\r
     void ClickSetTime(uint16_t alarmNum);\r
     void ClickSetWeek(uint16_t alarmNum);\r
     void ClickAlarmClockDelete(uint16_t alarmNum);\r
@@ -164,6 +164,7 @@ public:
     uint8_t alarmWeek[7] = {1, 1, 1, 1, 1, 1, 1}; // 闹钟默认所有的日期都选中,因此初始值为1,7是指一个星期中七天\r
 \r
     void ClickDeleteButtonAlarmClockDelete(uint16_t num);\r
+    void UpdateAlarmInfoByAppSet(void);\r
 \r
 private:\r
     uint32_t timeHour{0};\r
index 9804b3e..3f76fdd 100644 (file)
@@ -72,94 +72,94 @@ AlarmClockModel *AlarmClockModel::GetInstance(void)
     return &alarmClockModel;
 }
 
-int32_t AlarmClockModel::SaveGlobalAlarmToFile(void)
-{
-    std::ofstream fd(ALARM_CLOCK_DATA_PATH);
-    if (!fd.good()) {
-        (void)mkdir(ALARM_CLOCK_DIRECTORY, S_IREAD | S_IWRITE);
-        std::ofstream fd(ALARM_CLOCK_DATA_PATH);
-        if (!fd.good()) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SaveGlobalAlarmToFile open fail");
-            fd.close();
-            return -1;
-        }
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "mkdir success!!");
-    }
-    fd.write((const char *)(&g_alarmClockData), sizeof(g_alarmClockData));
-    fd.close();
-    return 0;
-}
-
-int32_t AlarmClockModel::GetAlarmGlobalData(uint8 id, AlarmClockInfo *info)
-{
-    int32_t ret;
-    if (info == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetAlarmGlobalData info nullptr!!");
-        return -1;
-    }
-    if (g_alarmClockData[id].alarmClockId != id) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "g_alarmClockData id %u error!", id);
-        return -1;
-    }
-    ret = memcpy_s(info, sizeof(AlarmClockInfo), &g_alarmClockData[id], sizeof(AlarmClockInfo));
-    if (ret != EOK) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetAlarmGlobalData fail. ret=%d", ret);
-        return ret;
-    }
-    return 0;
-}
-
-void AlarmClockModel::PushAlarmClockData(AlarmClockQueueMsg alarmClockMsg)
-{
-    if (listAlarmClockNum >= LIST_ALARM_CLOCK_MAX) {
-        return;
-    }
-    MUTEX_Lock(g_alarmClockDataMutex);
-    listAlarmClockNum++;
-    listAlarmClock.PushBack(alarmClockMsg);
-    MUTEX_Unlock(g_alarmClockDataMutex);
-    SaveGlobalAlarmToFile();
-}
-
-int32_t AlarmClockModel::FetchedAlarmClockData(AlarmClockQueueMsg *alarmClockMsg)
-{
-    if (alarmClockMsg == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FetchedAlarmClockData alarmClockMsg nullptr!!");
-        return -1;
-    }
-    if (listAlarmClock.IsEmpty()) {
-        return -1;
-    } else {
-        MUTEX_Lock(g_alarmClockDataMutex);
-        if (listAlarmClockNum >= 1) {
-            listAlarmClockNum--;
-        } else {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FetchedAlarmClockData listAlarmClockNum invalid, num=%u",
-                listAlarmClockNum);
-            return -1;
-        }
-        *alarmClockMsg = listAlarmClock.Front();
-        listAlarmClock.PopFront();
-        MUTEX_Unlock(g_alarmClockDataMutex);
-    }
-    return 0;
-}
-
-int32_t AlarmClockModel::InitAlarmClockData(void)
-{
-    (void)memset_s(&g_alarmClockData, sizeof(g_alarmClockData), 0, sizeof(g_alarmClockData));
-    std::ifstream fd(ALARM_CLOCK_DATA_PATH);
-    if (!fd.good()) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitAlarmClockData open fail");
-        fd.close();
-        return -1;
-    } else {
-        fd.read((char *)(&g_alarmClockData), sizeof(g_alarmClockData));
-        fd.close();
-        return 0;
-    }
-    return 0;
-}
+// int32_t AlarmClockModel::SaveGlobalAlarmToFile(void)
+// {
+//     std::ofstream fd(ALARM_CLOCK_DATA_PATH);
+//     if (!fd.good()) {
+//         (void)mkdir(ALARM_CLOCK_DIRECTORY, S_IREAD | S_IWRITE);
+//         std::ofstream fd(ALARM_CLOCK_DATA_PATH);
+//         if (!fd.good()) {
+//             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SaveGlobalAlarmToFile open fail");
+//             fd.close();
+//             return -1;
+//         }
+//         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mkdir success!!");
+//     }
+//     fd.write((const char *)(&g_alarmClockData), sizeof(g_alarmClockData));
+//     fd.close();
+//     return 0;
+// }
+
+// int32_t AlarmClockModel::GetAlarmGlobalData(uint8 id, AlarmClockInfo *info)
+// {
+//     int32_t ret;
+//     if (info == nullptr) {
+//         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetAlarmGlobalData info nullptr!!");
+//         return -1;
+//     }
+//     if (g_alarmClockData[id].alarmClockId != id) {
+//         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "g_alarmClockData id %u error!", id);
+//         return -1;
+//     }
+//     ret = memcpy_s(info, sizeof(AlarmClockInfo), &g_alarmClockData[id], sizeof(AlarmClockInfo));
+//     if (ret != EOK) {
+//         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetAlarmGlobalData fail. ret=%d", ret);
+//         return ret;
+//     }
+//     return 0;
+// }
+
+// void AlarmClockModel::PushAlarmClockData(AlarmClockQueueMsg alarmClockMsg)
+// {
+//     if (listAlarmClockNum >= LIST_ALARM_CLOCK_MAX) {
+//         return;
+//     }
+//     MUTEX_Lock(g_alarmClockDataMutex);
+//     listAlarmClockNum++;
+//     listAlarmClock.PushBack(alarmClockMsg);
+//     MUTEX_Unlock(g_alarmClockDataMutex);
+//     SaveGlobalAlarmToFile();
+// }
+
+// int32_t AlarmClockModel::FetchedAlarmClockData(AlarmClockQueueMsg *alarmClockMsg)
+// {
+//     if (alarmClockMsg == nullptr) {
+//         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FetchedAlarmClockData alarmClockMsg nullptr!!");
+//         return -1;
+//     }
+//     if (listAlarmClock.IsEmpty()) {
+//         return -1;
+//     } else {
+//         MUTEX_Lock(g_alarmClockDataMutex);
+//         if (listAlarmClockNum >= 1) {
+//             listAlarmClockNum--;
+//         } else {
+//             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FetchedAlarmClockData listAlarmClockNum invalid, num=%u",
+//                 listAlarmClockNum);
+//             return -1;
+//         }
+//         *alarmClockMsg = listAlarmClock.Front();
+//         listAlarmClock.PopFront();
+//         MUTEX_Unlock(g_alarmClockDataMutex);
+//     }
+//     return 0;
+// }
+
+// int32_t AlarmClockModel::InitAlarmClockData(void)
+// {
+//     (void)memset_s(&g_alarmClockData, sizeof(g_alarmClockData), 0, sizeof(g_alarmClockData));
+//     std::ifstream fd(ALARM_CLOCK_DATA_PATH);
+//     if (!fd.good()) {
+//         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitAlarmClockData open fail");
+//         fd.close();
+//         return -1;
+//     } else {
+//         fd.read((char *)(&g_alarmClockData), sizeof(g_alarmClockData));
+//         fd.close();
+//         return 0;
+//     }
+//     return 0;
+// }
 
 int32_t AlarmClockModel::InitAlarmData(void)
 {
@@ -170,21 +170,26 @@ int32_t AlarmClockModel::InitAlarmData(void)
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::InitAlarmData get managementAlarm error!");
         return -1;
     }
-    if (managementAlarm.eventAlarmInfo[0].alarmType == TYPE_INVALID_ALARM_CLOCK) {
-        NewFirstTime();
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::InitAlarmData new first alarm");
+    // if (managementAlarm.eventAlarmInfo[0].alarmType == TYPE_INVALID_ALARM_CLOCK) {
+    //     NewFirstTime();
+    //     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::InitAlarmData new first alarm");
+    // }
+    alarmSerial = 0;
+    for (num = 0; num < CLOCK_MAX; num++) {
+        delete currentAlarm[num];
+        currentAlarm[num] = nullptr;
     }
-    for (uint16_t i = 0; i < ALARM_CLOCK_MAX; i++) {
+    for (uint16_t i = 0, num = 0; i < ALARM_CLOCK_MAX; i++) {
         for (int j = 0; j < ALARM_CLOCK_MAX; j++) {
             if (managementAlarm.eventAlarmInfo[j].index == i && managementAlarm.eventAlarmInfo[j].alarmType == TYPE_EVENT_ALARM_CLOCK) {
                 currentAlarm[num] = &managementAlarm.eventAlarmInfo[j];
                 SetAlarmId(currentAlarm[num]->alarmClockId);
                 num++;
-                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
                     "AlarmClockModel::InitAlarmData get managementAlarm[%u], the unmber of alarm is %u!", j, alarmSerial);
-                if (i > 0) {
+                // if (i > 0) {
                     alarmSerial++;
-                }
+                // }
             }
         }
     }
@@ -356,43 +361,44 @@ void AlarmClockModel::SetAlarmId(uint8_t id)
     return;
 }
 
-void AlarmClockModel::NewFirstTime(void)
-{
-    uint32_t timeTem = FIRST_CLOCK_HOUR;
-    if (currentAlarm[0] == nullptr) {
-        currentAlarm[0] = new AlarmClockInfo();
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::NewFirstTime new alarm_clock!");
-    }
-    currentAlarm[0]->alarmClockId = GetAlarmId();
-    currentAlarm[0]->alarmClockEnable = 0;
-    currentAlarm[0]->alarmType = 1;
-    currentAlarm[0]->nameLen = strlen(alarmName[0]);
-    currentAlarm[0]->index = 0;
-    currentAlarm[0]->delayNum = 0;
-    if (strcpy_s(currentAlarm[0]->alarmClockName, CLOCK_NAME_LENGTH, alarmName[0]) != 0) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::NewFirstTime copy alarmname error!");
-        return;
-    }
-    currentAlarm[0]->alarmTime = (timeTem << 16) | 0x0000; // 第一个闹钟的时间初始化为九点
-    currentAlarm[0]->repeatPeriod = 0x7F;                  // 第一个闹钟的日期设置默认为一周七天全选
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
-        "AlarmClockModel::JudgeClockModel currentAlarm[0]->alarm_time = %u, currentAlarm[0]->repeat_period =%u",
-        currentAlarm[0]->alarmTime, currentAlarm[0]->repeatPeriod);
-
-    int ret = AddAlarmClock(currentAlarm[0]);
-    if (ret != 0) {
-        if (currentAlarm[0] != nullptr) {
-            delete currentAlarm[0];
-            currentAlarm[0] = nullptr;
-        }
-        return;
-    }
-    SetAlarmId(currentAlarm[0]->alarmClockId);
-    return;
-}
+// void AlarmClockModel::NewFirstTime(void)
+// {
+//     uint32_t timeTem = FIRST_CLOCK_HOUR;
+//     if (currentAlarm[0] == nullptr) {
+//         currentAlarm[0] = new AlarmClockInfo();
+//         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::NewFirstTime new alarm_clock!");
+//     }
+//     currentAlarm[0]->alarmClockId = GetAlarmId();
+//     currentAlarm[0]->alarmClockEnable = 0;
+//     currentAlarm[0]->alarmType = 1;
+//     currentAlarm[0]->nameLen = strlen(alarmName[0]);
+//     currentAlarm[0]->index = 0;
+//     currentAlarm[0]->delayNum = 0;
+//     if (strcpy_s(currentAlarm[0]->alarmClockName, CLOCK_NAME_LENGTH, alarmName[0]) != 0) {
+//         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::NewFirstTime copy alarmname error!");
+//         return;
+//     }
+//     currentAlarm[0]->alarmTime = (timeTem << 16) | 0x0000; // 第一个闹钟的时间初始化为九点
+//     currentAlarm[0]->repeatPeriod = 0x7F;                  // 第一个闹钟的日期设置默认为一周七天全选
+//     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+//         "AlarmClockModel::JudgeClockModel currentAlarm[0]->alarm_time = %u, currentAlarm[0]->repeat_period =%u",
+//         currentAlarm[0]->alarmTime, currentAlarm[0]->repeatPeriod);
+
+//     int ret = AddAlarmClock(currentAlarm[0]);
+//     if (ret != 0) {
+//         if (currentAlarm[0] != nullptr) {
+//             delete currentAlarm[0];
+//             currentAlarm[0] = nullptr;
+//         }
+//         return;
+//     }
+//     SetAlarmId(currentAlarm[0]->alarmClockId);
+//     return;
+// }
 
 void AlarmClockModel::DeleteClockModel(uint16_t num)
 {
+    // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteClockModel num=%d", num);
     if (num >= CLOCK_MAX || currentAlarm[num] == nullptr) {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteClockModel delete clock error!");
         return;
@@ -408,25 +414,49 @@ void AlarmClockModel::DeleteClockModel(uint16_t num)
         currentAlarm[num]->alarmClockId);
     DeleteAlarmId(clockId);
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteClockModel alarmSerial = %u!", alarmSerial);
-    for (; num < alarmSerial; num++) {
+    // for (; num < alarmSerial; num++) {
+    //     AlarmClockInfo *tempAlarm = currentAlarm[num];
+    //     tempAlarm->index = currentAlarm[num]->index;
+    //     currentAlarm[num] = currentAlarm[num + 1];
+    //     currentAlarm[num]->index = num;
+    //     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::UpdataAlarmClock index = %u!",
+    //         currentAlarm[num]->index);
+    //     if (currentAlarm[num + 1] == nullptr || currentAlarm[num + 1]->alarmType == TYPE_INVALID_ALARM_CLOCK) {
+    //         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteClockModel fail");
+    //         currentAlarm[num] = tempAlarm;
+    //         return;
+    //     }
+    //     int ret = UpdataAlarmClock(currentAlarm[num]);
+    //     if (ret != 0) {
+    //         currentAlarm[num] = tempAlarm;
+    //         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteClockModel [%d]", __LINE__);
+    //         return;
+    //     }
+    // }
+    // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteClockModel [%d]", __LINE__);
+    // currentAlarm[alarmSerial] = nullptr;
+
+    for (; num < alarmSerial - 1; num++)
+    {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteClockModel. current_index = %u!", currentAlarm[num]->index);
+        if (currentAlarm[num + 1] == nullptr || currentAlarm[num + 1]->alarmType == TYPE_INVALID_ALARM_CLOCK)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteClockModel fail");
+            break;
+        }
         AlarmClockInfo *tempAlarm = currentAlarm[num];
-        tempAlarm->index = currentAlarm[num]->index;
         currentAlarm[num] = currentAlarm[num + 1];
         currentAlarm[num]->index = num;
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::UpdataAlarmClock index = %u!",
-            currentAlarm[num]->index);
-        if (currentAlarm[num + 1] == nullptr || currentAlarm[num + 1]->alarmType == TYPE_INVALID_ALARM_CLOCK) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteClockModel fail");
-            currentAlarm[num] = tempAlarm;
-            return;
-        }
+
         int ret = UpdataAlarmClock(currentAlarm[num]);
-        if (ret != 0) {
+        if (ret != 0)
+        {
             currentAlarm[num] = tempAlarm;
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteClockModel [%d]", __LINE__);
             return;
         }
     }
-    currentAlarm[alarmSerial] = nullptr;
+    currentAlarm[alarmSerial - 1] = nullptr;
 }
 
 bool AlarmClockModel::ButtonStatusRing(int16_t num, bool alarmStatus)
@@ -966,6 +996,15 @@ uint16 AlarmClockModel::GetSmartAlarmCnt(void)
     return AlmmgrGetSmartAlarmCnt();
 }
 
+void AlarmClockModel::UpdateAlarmInfoByAppSet(void)
+{
+    if(nullptr != OHOS::AlarmPresenter::GetInstance())
+    {
+        OHOS::AlarmPresenter::GetInstance()->UpdateAlarmInfoByAppSet();
+    }
+}
+
+
 bool AlarmPlayerListener::IsPaused()
 {
     return isPaused_;
@@ -1023,13 +1062,14 @@ void AlarmPlayerListener::OnInterrupt(int32_t type, int32_t hint)
     }
     return;
 }
-}
 
-void PushAlarmClockDataToModel(AlarmClockQueueMsg alarmClockMsg)
-{
-    OHOS::AlarmClockModel::GetInstance()->PushAlarmClockData(alarmClockMsg);
 }
 
+// void PushAlarmClockDataToModel(AlarmClockQueueMsg alarmClockMsg)
+// {
+//     OHOS::AlarmClockModel::GetInstance()->PushAlarmClockData(alarmClockMsg);
+// }
+
 #ifdef __cplusplus
 }
 #endif
index 36bb5c7..22baced 100644 (file)
@@ -37,7 +37,7 @@ constexpr uint8_t WEEK_BIT3 = 3;
 constexpr uint8_t WEEK_BIT2 = 2;\r
 constexpr uint8_t WEEK_BIT1 = 1;\r
 constexpr uint8_t WEEK_BIT0 = 0;\r
-constexpr uint16_t ALARM_MAX_NUM = 4;\r
+constexpr uint16_t ALARM_MAX_NUM = 5; // 4;\r
 constexpr int32_t BUTTON_MAX_NUM = 7;\r
 constexpr uint16_t CLOCK_NUM = 5;\r
 constexpr uint8_t CANCEL_DATA = 0;\r
@@ -65,13 +65,18 @@ void AlarmPresenter::OnStart()
 {\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter OnStart");\r
     Presenter<MainAlarmView>::OnStart();\r
+\r
+    OHOS::AlarmClockModel::GetInstance()->InitAlarmData();\r
 }\r
 \r
 void AlarmPresenter::OnPause(void) {}\r
 \r
 void AlarmPresenter::OnResume(void) {}\r
 \r
-void AlarmPresenter::OnStop(void) {}\r
+void AlarmPresenter::OnStop(void)\r
+{\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter OnStop");\r
+}\r
 \r
 AlarmPresenter *AlarmPresenter::GetInstance()\r
 {\r
@@ -183,19 +188,25 @@ void AlarmPresenter::ClickJudgeTrue(uint16_t num)
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickJudgeTrue new MainAlarmView::GetInstance() error");\r
         return;\r
     }\r
-    MainAlarmView::GetInstance()->RefreshAlarm();\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[@CHENG][%d]:", __LINE__);\r
     clockQty--;\r
-    for (uint16_t alarmNum = 0; alarmNum < clockQty; alarmNum++) {\r
-        // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[@CHENG][%d]:%d", __LINE__, alarmNum);\r
-\r
-        if (!(AlarmClockModel::GetInstance()->GetClockTime(alarmNum, &clockTime))) {\r
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ClickJudgeTrue error");\r
-            return;\r
-        }\r
-        MainAlarmView::GetInstance()->RefreshAlarm();\r
-    }\r
     AlarmClockModel::GetInstance()->SetSerialRdc();\r
+    MainAlarmView::GetInstance()->RefreshAlarm();\r
     MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_JUDGE, MAIN_INTERFACE);\r
+\r
+    // MainAlarmView::GetInstance()->RefreshAlarm();\r
+    // clockQty--;\r
+    // for (uint16_t alarmNum = 0; alarmNum < clockQty; alarmNum++) {\r
+    //     // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[@CHENG][%d]:%d", __LINE__, alarmNum);\r
+\r
+    //     if (!(AlarmClockModel::GetInstance()->GetClockTime(alarmNum, &clockTime))) {\r
+    //         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ClickJudgeTrue error");\r
+    //         return;\r
+    //     }\r
+    //     MainAlarmView::GetInstance()->RefreshAlarm();\r
+    // }\r
+    // AlarmClockModel::GetInstance()->SetSerialRdc();\r
+    // MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_JUDGE, MAIN_INTERFACE);\r
 }\r
 \r
 void AlarmPresenter::ClickAlarmTimeOk(uint16_t num)\r
@@ -284,8 +295,9 @@ void AlarmPresenter::ClickAlarmWeekOk(uint16_t num)
         MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_SET_WEEK, CHANGE_INTERFACE_CONFIG);\r
     } else if (setListener == NEW_TIME_LISTENER) {\r
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickAlarmWeekOk new time!");\r
-        clockQty++;\r
+        // clockQty++;\r
         alarmListener = clockQty;\r
+        clockQty++;\r
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "******************ClickAlarmWeekOk  alarmListener = %d***************", alarmListener);\r
         AlarmClockModel::GetInstance()->SetSerialAdd();\r
         AlarmClockModel::GetInstance()->SetAlarmInfo(timeHour, timeMin, clockWeek, alarmListener, setListener);\r
@@ -536,4 +548,10 @@ void AlarmPresenter::OnSwipe(UISwipeView &view)
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::OnSwipe ");\r
     view.SetIntercept((0 == view.GetCurrentPage()) ? false : true);\r
 }\r
+\r
+void AlarmPresenter::UpdateAlarmInfoByAppSet(void)\r
+{\r
+    NativeAbility::GetInstance().Back();\r
+}\r
+\r
 }
\ No newline at end of file
index 0234bea..fceebef 100644 (file)
@@ -203,7 +203,7 @@ void MainAlarmView::AlarmAddButtonUpdate(uint8_t count)
         return; 
 
     // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]: 0_y=%d", __LINE__, SwipeView_[0]->GetY());
-    AddButton_->SetY(SwipeView_[0]->GetY() + (alarmInterval * count));
+    AddButton_->SetY((0 == count) ? (Screen::GetInstance().GetHeight() / 2 - 50) : (SwipeView_[0]->GetY() + (alarmInterval * count)));
 }
 
 UIViewGroup * MainAlarmView::NewClockCtlExt(int16_t alarmNum, uint8_t index)
@@ -318,16 +318,9 @@ void MainAlarmView::NewClockCtl(int16_t alarmNum)
 
     SwipeViewItem_[alarmNum][0] = NewClockCtlExt(alarmNum, 0);
     SwipeView_[alarmNum]->Add(SwipeViewItem_[alarmNum][0]);
-    if(0 != alarmNum)
-    {
-        SwipeViewItem_[alarmNum][1] = NewClockCtlExt(alarmNum, 1);
-        SwipeView_[alarmNum]->Add(SwipeViewItem_[alarmNum][1]);
-    }
-    // SwipeViewItem_[alarmNum][0] = NewClockCtlExt(alarmNum, 0);
-    // SwipeViewItem_[alarmNum][1] = NewClockCtlExt(alarmNum, 1);
 
-    // SwipeView_[alarmNum]->Add(SwipeViewItem_[alarmNum][0]);
-    // SwipeView_[alarmNum]->Add(SwipeViewItem_[alarmNum][1]);
+    SwipeViewItem_[alarmNum][1] = NewClockCtlExt(alarmNum, 1);
+    SwipeView_[alarmNum]->Add(SwipeViewItem_[alarmNum][1]);
 
     SwipeView_[alarmNum]->SetCurrentPage(0);
     SwipeView_[alarmNum]->SetIntercept(false);
index 99efade..119c2bc 100644 (file)
@@ -87,6 +87,7 @@ typedef enum {
     UI_HAND_WATCH_FIRST_PAIRED, //手表已配对:给第一次手表启动用配对成功调用
     UI_UPDATE_RECORDPROCESS,    //更新录音进度条
     UI_UPDATE_PLAYERPROCESS,   //处理更新音乐进度条   
+    UI_UPDATE_ALARM_INFO, // set alarm by app
     UI_UPDATE_OBU_MESSAGE,       
     MAX_NUM_HANDLER, 
 } UiServiceMsgId;
index 6a9d493..949be7c 100644 (file)
@@ -28,6 +28,7 @@
 #include "heartrate/include/HeartModel.h"
 #include "aivoice/include/AiVoiceModel.h"
 #include "weather/include/WeatherModel.h"
+#include "alarm/include/AlarmClockModel.h"
 #include "uiservice/include/ui_service.h"
 #include "wearable_log.h"
 #include "samgr_lite.h"
@@ -127,6 +128,7 @@ extern "C"
     static void HandleUpdateMessage(Request *request);
     static void HandleUpdateHeartRate(Request *request);
     static void HandleUpdateDialState(Request *request);
+    static void HandleUpdateAlarmInfo(Request *request);
 
     // 消息处理程序项数组(每个消息类型对应一个处理函数,函数名以 Handle 开头)
     MsgHandlerEntry msgHandlers[] = {
@@ -164,7 +166,7 @@ extern "C"
         {UI_UPDATE_MESSAGE_DATA, HandleUpdateMessage},
         {UI_UPDATE_HEARTRATE_DATA, HandleUpdateHeartRate},
         {UI_UPDATE_DIALSTATE_DATA, HandleUpdateDialState},
-
+        {UI_UPDATE_ALARM_INFO, HandleUpdateAlarmInfo},
     };
     /* -------------------------------------------------------------------------- */
     void ScreenTurnOn(int32_t timeout)
@@ -675,6 +677,11 @@ extern "C"
             std::bind(&OHOS::testModel::testModelupdata,OHOS::testModel::GetInstance(),type));
     }
 
+    static void HandleUpdateAlarmInfo(Request *request)
+    {
+        GraphicService::GetInstance()->PostGraphicEvent(
+            std::bind(&OHOS::AlarmClockModel::UpdateAlarmInfoByAppSet, OHOS::AlarmClockModel::GetInstance()));
+    }
 
 /* -------------------------------------------------------------------------- */
 #ifdef __cplusplus
index 99d68d6..83708e2 100644 (file)
@@ -1240,7 +1240,7 @@ void ble_SetAlarmInfo(uint32_t time_hour, uint32_t time_min, uint8_t week,uint8_
 
 void ble_AlarmClock_refresh(void)
 {
-    //OHOS::AlarmClockModel::GetInstance()->InitAlarmData();
+    SendMsgToUIService(UI_UPDATE_ALARM_INFO, 0, nullptr, 0);
 }