From: Caisking <3449750381@qq.com> Date: Tue, 3 Sep 2024 08:40:10 +0000 (+0800) Subject: 优化主界面card管理;增加睡眠card回退索引 X-Git-Tag: release_V1.2.70_20241020_135402~529^2~19^2~3 X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=b96e1228ce56b396618626eda02f91e4bd3b21a0;p=mirrors%2FFD230.git 优化主界面card管理;增加睡眠card回退索引 --- diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/MainPresenterSample.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/MainPresenterSample.h index e5f831402..f8b19964a 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/main/include/MainPresenterSample.h +++ b/code/sdk/application/wearable/fd230app/nativeui/main/include/MainPresenterSample.h @@ -91,6 +91,11 @@ namespace OHOS uint8_t GetFromCardId(void); private: + void LogCardTransition(CardId previous, CardId current); + void ResetSleepCardView(); + void StartHeartRateDetection(); + void UpdateWatchFace(); + void UpdateWeather(); void ProcessDataNotify(void); void SetCircleProgress(void); void SetCompassRotate(void); diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/MainPresenterSample.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/MainPresenterSample.cpp index db2488651..b04b62eee 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/main/src/MainPresenterSample.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/main/src/MainPresenterSample.cpp @@ -31,6 +31,9 @@ #include "dnotdisturb/include/DnotDisturbModel.h" #include "weather/include/WeatherModel.h" #include "heart_blood/health_service/health_service.h" +#include "sleep/include/SleepControlView.h" +#include "sleep/include/SleepCardView.h" +#include "sleep/include/SleepModel.h" #include "MainModel.h" #include "../../../../../../../drivers/peripheral/utils/custom_runtime.h" @@ -397,28 +400,33 @@ namespace OHOS DetermineToRotate(); } } - + /* --------------------------------- 主界面卡片功能 -------------------------------- */ void MainPresenterSample::Notify(void) { - CardId cardId = view_->GetHorCurrentCard(); - + CardId currentCardId = view_->GetHorCurrentCard(); static CardId previousCardId = WATCH_FACE; - if (previousCardId == HEART_RATE && cardId != HEART_RATE) + // 从心率卡片变为其他卡片时关闭心率检测 + if (previousCardId == HEART_RATE && currentCardId != HEART_RATE) { - // 从心率卡片变为其他卡片时调用关闭心率检测的函数 + LogCardTransition(previousCardId, currentCardId); HeartModel::GetInstance()->Heart_Control(HeartState::End, HeartCheck::CARDCHECK); } + // 从睡眠卡片跳转到其他卡片时切换到睡眠卡片主界面 + if (previousCardId == SLEEP && currentCardId != SLEEP) + { + LogCardTransition(previousCardId, currentCardId); + ResetSleepCardView(); + } + // 更新上一个卡片的值 - previousCardId = cardId; + previousCardId = currentCardId; - switch (cardId) + switch (currentCardId) { case HEART_RATE: - // 开启心率检测 [UI优先级最高直接打断正在检测 重新检测] - HeartModel::GetInstance()->Heart_Control(HeartState::End, HeartCheck::PASSIVITY); - HeartModel::GetInstance()->Heart_Control(HeartState::Start, HeartCheck::CARDCHECK); + StartHeartRateDetection(); break; case COMPASS: @@ -430,28 +438,60 @@ namespace OHOS break; case WATCH_FACE: + UpdateWatchFace(); + break; + + case WEATHER: + UpdateWeather(); + break; + } + } + /*打印日志*/ + void MainPresenterSample::LogCardTransition(CardId previous, CardId current) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[MainCard slide]previousCardId:%d cardId:%d", previous, current); + } + /*睡眠卡片*/ + void MainPresenterSample::ResetSleepCardView() + { + if (SleepCardView::GetInstance() != nullptr) { - DialSetting &setting = GetDialSetting(); - if (setting.dialFlag) - { - DialModelTime::GetInstance()->UpdateTime(); - dynamic_cast(view_->GetViewById(WATCH_FACE))->UpdateViewsByPeriodicUpdateData(); - } - else + auto sleepCardView = SleepCardView::GetInstance()->GetSleepCardView(); + if (sleepCardView->GetCurrentPage() != 0) { - dynamic_cast(view_->GetViewById(WATCH_FACE))->UpdateTime(); + sleepCardView->SetCurrentPage(0); } } - break; - case WEATHER: - if (WeatherModel::GetInstance().GetWeatherDataIsValid()) - { - WeatherModel::GetInstance().UpdateWeatherCurTime(); - } - break; + } + /*心率卡片*/ + void MainPresenterSample::StartHeartRateDetection() + { + HeartModel::GetInstance()->Heart_Control(HeartState::End, HeartCheck::PASSIVITY); + HeartModel::GetInstance()->Heart_Control(HeartState::Start, HeartCheck::CARDCHECK); + } + /*主表盘*/ + void MainPresenterSample::UpdateWatchFace() + { + DialSetting &setting = GetDialSetting(); + if (setting.dialFlag) + { + DialModelTime::GetInstance()->UpdateTime(); + dynamic_cast(view_->GetViewById(WATCH_FACE))->UpdateViewsByPeriodicUpdateData(); + } + else + { + dynamic_cast(view_->GetViewById(WATCH_FACE))->UpdateTime(); } } - + /*天气*/ + void MainPresenterSample::UpdateWeather() + { + if (WeatherModel::GetInstance().GetWeatherDataIsValid()) + { + WeatherModel::GetInstance().UpdateWeatherCurTime(); + } + } + /* -------------------------------------------------------------------------- */ void MainPresenterSample::InitCardSettings(void) { MainModel::GetInstance().InitCardSettings(); @@ -502,8 +542,8 @@ namespace OHOS timeinfo = localtime(&currtime); // 获取星期信息 - int language = ConfigModel::GetInstance()->GetLanguage(); - if(language == 0) + int language = ConfigModel::GetInstance()->GetLanguage(); + if (language == 0) { strcpy(p_week, weekDays_ch[timeinfo->tm_wday]); } @@ -567,7 +607,7 @@ namespace OHOS // break; // } // } - std::string dateAndweek = std::string(dateStr) + " " + std::string(weekStr) ; + std::string dateAndweek = std::string(dateStr) + " " + std::string(weekStr); if (PullUpDownView::GetInstance() != nullptr) { // PullUpDownView::GetInstance()->GetProgress()->SetImage(progressImageSrc, progressImageSrc);