#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"
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:
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<DialViewGroup *>(view_->GetViewById(WATCH_FACE))->UpdateViewsByPeriodicUpdateData();
- }
- else
+ auto sleepCardView = SleepCardView::GetInstance()->GetSleepCardView();
+ if (sleepCardView->GetCurrentPage() != 0)
{
- dynamic_cast<MainClockView *>(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<DialViewGroup *>(view_->GetViewById(WATCH_FACE))->UpdateViewsByPeriodicUpdateData();
+ }
+ else
+ {
+ dynamic_cast<MainClockView *>(view_->GetViewById(WATCH_FACE))->UpdateTime();
}
}
-
+ /*天气*/
+ void MainPresenterSample::UpdateWeather()
+ {
+ if (WeatherModel::GetInstance().GetWeatherDataIsValid())
+ {
+ WeatherModel::GetInstance().UpdateWeatherCurTime();
+ }
+ }
+ /* -------------------------------------------------------------------------- */
void MainPresenterSample::InitCardSettings(void)
{
MainModel::GetInstance().InitCardSettings();
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]);
}
// 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);