From 698fb67508bf023ebae337405c7ea92383b3264d Mon Sep 17 00:00:00 2001 From: cheng Date: Thu, 5 Sep 2024 15:12:08 +0800 Subject: [PATCH] =?utf8?q?=E8=A7=A3=E5=86=B3APP=E5=90=8C=E6=AD=A5=E9=97=B9?= =?utf8?q?=E9=92=9F=E5=BC=82=E5=B8=B8=E3=80=81=E7=A7=BB=E9=99=A4=E9=BB=98?= =?utf8?q?=E8=AE=A4=E5=86=85=E7=BD=AE=E9=97=B9=E9=92=9F=E3=80=81=E5=A2=9E?= =?utf8?q?=E5=8A=A0=E7=AC=AC=E4=B8=80=E4=B8=AA=E9=97=B9=E9=92=9F=E5=8F=AF?= =?utf8?q?=E5=88=A0=E9=99=A4=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../nativeui/alarm/include/AlarmClockModel.h | 21 +- .../nativeui/alarm/include/AlarmPresenter.h | 3 +- .../nativeui/alarm/src/AlarmClockModel.cpp | 328 ++++++++++-------- .../nativeui/alarm/src/AlarmPresenter.cpp | 44 ++- .../nativeui/alarm/src/MainAlarmView.cpp | 13 +- .../nativeui/uiservice/include/ui_service.h | 1 + .../nativeui/uiservice/src/ui_service.cpp | 9 +- .../service/ble_service/blemoder/bletest.cpp | 2 +- 8 files changed, 242 insertions(+), 179 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativeui/alarm/include/AlarmClockModel.h b/code/sdk/application/wearable/fd230app/nativeui/alarm/include/AlarmClockModel.h index 9e965a3dd..3ca09076c 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/alarm/include/AlarmClockModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/alarm/include/AlarmClockModel.h @@ -104,7 +104,7 @@ public: void NextDayNotify(void); void ResetRingClockStatus(void); void DeactAudioInter(void); - void PushAlarmClockData(AlarmClockQueueMsg alarmClockMsg); + // void PushAlarmClockData(AlarmClockQueueMsg alarmClockMsg); void PopInterCancelMusic(void); void PopInterPlayMusic(void); void SetAlarmInfo(uint32_t time_hour, uint32_t time_min, uint8 week, uint16_t alarmListener, uint16_t setListener); @@ -121,15 +121,18 @@ public: int testPlayerStart(char *); int AlarmPlayerStop(); int InitAlarmData(void); + + void UpdateAlarmInfoByAppSet(void); + private: void SetAlarmId(uint8_t id); void DeleteAlarmId(uint8_t id); - void NewFirstTime(void); + // void NewFirstTime(void); uint8_t GetAlarmId(void); - int32_t SaveGlobalAlarmToFile(void); - int32_t GetAlarmGlobalData(uint8 id, AlarmClockInfo *info); - int32_t InitAlarmClockData(void); - int32_t FetchedAlarmClockData(AlarmClockQueueMsg *alarmClockMsg); + // int32_t SaveGlobalAlarmToFile(void); + // int32_t GetAlarmGlobalData(uint8 id, AlarmClockInfo *info); + // int32_t InitAlarmClockData(void); + // int32_t FetchedAlarmClockData(AlarmClockQueueMsg *alarmClockMsg); int32_t GettManagement(AlarmClockManagement *management); bool JudgeClockModel(uint16_t alarmNum); @@ -156,8 +159,8 @@ private: List listAlarmClock; }; -extern "C" { - void PushAlarmClockDataToModel(AlarmClockQueueMsg alarmClockMsg); -} +// extern "C" { +// void PushAlarmClockDataToModel(AlarmClockQueueMsg alarmClockMsg); +// } } #endif // ALARM_CLOCK_MODEL_H diff --git a/code/sdk/application/wearable/fd230app/nativeui/alarm/include/AlarmPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/alarm/include/AlarmPresenter.h index 8d8ce065f..d972dfa65 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/alarm/include/AlarmPresenter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/alarm/include/AlarmPresenter.h @@ -149,7 +149,7 @@ public: void OnTimePickerStoped(UITimePicker &picker) override; void ClickBlue(UIView &view); void ClickBlack(UIView &view); - void GetAlarmNum(uint16_t alarmNum); + // void GetAlarmNum(uint16_t alarmNum); void ClickSetTime(uint16_t alarmNum); void ClickSetWeek(uint16_t alarmNum); void ClickAlarmClockDelete(uint16_t alarmNum); @@ -164,6 +164,7 @@ public: uint8_t alarmWeek[7] = {1, 1, 1, 1, 1, 1, 1}; // 闹钟默认所有的日期都选中,因此初始值为1,7是指一个星期中七天 void ClickDeleteButtonAlarmClockDelete(uint16_t num); + void UpdateAlarmInfoByAppSet(void); private: uint32_t timeHour{0}; diff --git a/code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmClockModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmClockModel.cpp index 9804b3e89..3f76fdddb 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmClockModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmClockModel.cpp @@ -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 diff --git a/code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmPresenter.cpp index 36bb5c7cc..22bacedb4 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmPresenter.cpp @@ -37,7 +37,7 @@ constexpr uint8_t WEEK_BIT3 = 3; constexpr uint8_t WEEK_BIT2 = 2; constexpr uint8_t WEEK_BIT1 = 1; constexpr uint8_t WEEK_BIT0 = 0; -constexpr uint16_t ALARM_MAX_NUM = 4; +constexpr uint16_t ALARM_MAX_NUM = 5; // 4; constexpr int32_t BUTTON_MAX_NUM = 7; constexpr uint16_t CLOCK_NUM = 5; constexpr uint8_t CANCEL_DATA = 0; @@ -65,13 +65,18 @@ void AlarmPresenter::OnStart() { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter OnStart"); Presenter::OnStart(); + + OHOS::AlarmClockModel::GetInstance()->InitAlarmData(); } void AlarmPresenter::OnPause(void) {} void AlarmPresenter::OnResume(void) {} -void AlarmPresenter::OnStop(void) {} +void AlarmPresenter::OnStop(void) +{ + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter OnStop"); +} AlarmPresenter *AlarmPresenter::GetInstance() { @@ -183,19 +188,25 @@ void AlarmPresenter::ClickJudgeTrue(uint16_t num) WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickJudgeTrue new MainAlarmView::GetInstance() error"); return; } - MainAlarmView::GetInstance()->RefreshAlarm(); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[@CHENG][%d]:", __LINE__); clockQty--; - for (uint16_t alarmNum = 0; alarmNum < clockQty; alarmNum++) { - // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[@CHENG][%d]:%d", __LINE__, alarmNum); - - if (!(AlarmClockModel::GetInstance()->GetClockTime(alarmNum, &clockTime))) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ClickJudgeTrue error"); - return; - } - MainAlarmView::GetInstance()->RefreshAlarm(); - } AlarmClockModel::GetInstance()->SetSerialRdc(); + MainAlarmView::GetInstance()->RefreshAlarm(); MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_JUDGE, MAIN_INTERFACE); + + // MainAlarmView::GetInstance()->RefreshAlarm(); + // clockQty--; + // for (uint16_t alarmNum = 0; alarmNum < clockQty; alarmNum++) { + // // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[@CHENG][%d]:%d", __LINE__, alarmNum); + + // if (!(AlarmClockModel::GetInstance()->GetClockTime(alarmNum, &clockTime))) { + // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ClickJudgeTrue error"); + // return; + // } + // MainAlarmView::GetInstance()->RefreshAlarm(); + // } + // AlarmClockModel::GetInstance()->SetSerialRdc(); + // MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_JUDGE, MAIN_INTERFACE); } void AlarmPresenter::ClickAlarmTimeOk(uint16_t num) @@ -284,8 +295,9 @@ void AlarmPresenter::ClickAlarmWeekOk(uint16_t num) MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_SET_WEEK, CHANGE_INTERFACE_CONFIG); } else if (setListener == NEW_TIME_LISTENER) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickAlarmWeekOk new time!"); - clockQty++; + // clockQty++; alarmListener = clockQty; + clockQty++; WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "******************ClickAlarmWeekOk alarmListener = %d***************", alarmListener); AlarmClockModel::GetInstance()->SetSerialAdd(); AlarmClockModel::GetInstance()->SetAlarmInfo(timeHour, timeMin, clockWeek, alarmListener, setListener); @@ -536,4 +548,10 @@ void AlarmPresenter::OnSwipe(UISwipeView &view) WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::OnSwipe "); view.SetIntercept((0 == view.GetCurrentPage()) ? false : true); } + +void AlarmPresenter::UpdateAlarmInfoByAppSet(void) +{ + NativeAbility::GetInstance().Back(); +} + } \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/alarm/src/MainAlarmView.cpp b/code/sdk/application/wearable/fd230app/nativeui/alarm/src/MainAlarmView.cpp index 0234beab0..fceebeffe 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/alarm/src/MainAlarmView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/alarm/src/MainAlarmView.cpp @@ -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); diff --git a/code/sdk/application/wearable/fd230app/nativeui/uiservice/include/ui_service.h b/code/sdk/application/wearable/fd230app/nativeui/uiservice/include/ui_service.h index 99efadec4..119c2bc23 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/uiservice/include/ui_service.h +++ b/code/sdk/application/wearable/fd230app/nativeui/uiservice/include/ui_service.h @@ -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; diff --git a/code/sdk/application/wearable/fd230app/nativeui/uiservice/src/ui_service.cpp b/code/sdk/application/wearable/fd230app/nativeui/uiservice/src/ui_service.cpp index 6a9d493fb..949be7cd5 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/uiservice/src/ui_service.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/uiservice/src/ui_service.cpp @@ -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 diff --git a/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp b/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp index 99d68d6db..83708e2f8 100644 --- a/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp +++ b/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp @@ -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); } -- 2.17.1