mcu_hi3321_watch/tjd/ui/app/aod/TjdUiAppAodView.cpp
2025-05-26 20:15:20 +08:00

97 lines
2.6 KiB
C++

/*
* Copyright (c) CompanyNameMagicTag 2024-2024. All rights reserved.
* Description: TjdUiAppAodView
* Author:
* Create: 2024-10-30
*/
#include "TjdUiAppAodView.h"
#include "DialBinParser.h"
#include "DialModelTime.h"
#include "DialViewGroup.h"
#include "TjdUiAppAodModel.h"
#include "TjdUiAppAodPresenter.h"
#include "TjdUiNativeAodAnalogView.h"
#include "TjdUiNativeAodDigitalView.h"
#include "common/graphic_utils.h"
namespace TJD {
TjdUiAppAodView::~TjdUiAppAodView()
{
if (clockDial_ != nullptr) {
delete clockDial_;
clockDial_ = nullptr;
}
}
void TjdUiAppAodView::OnStart()
{
if (clockDial_ == nullptr) {
clockDial_ = InitNativeAodDial();
}
if (clockDial_ == nullptr) {
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TjdUiAppAodView::OnStart: Failed to generate the AOD watch face.\n");
return;
}
OHOS::DialViewGroup *dial = dynamic_cast<OHOS::DialViewGroup *>(clockDial_);
if (dial != nullptr) {
dial->PreLoad();
dial->OnActive();
presenter_->SetPeriod(dial->GetPeriod());
} else {
TjdUiAppAodNativeView *clock = dynamic_cast<TjdUiAppAodNativeView *>(clockDial_);
if (clock != nullptr) {
clock->PreLoad();
presenter_->SetPeriod(clock->GetPeriod());
}
}
isLoaded_ = true;
AddViewToRootContainer(clockDial_);
}
void TjdUiAppAodView::OnStop()
{
if (clockDial_ != nullptr) {
OHOS::DialViewGroup *dial = dynamic_cast<OHOS::DialViewGroup *>(clockDial_);
if (dial != nullptr) {
dial->OnInactive();
dial->UnLoad();
}
isLoaded_ = false;
}
}
OHOS::UIViewGroup *TjdUiAppAodView::InitNativeAodDial()
{
OHOS::UIViewGroup *nativeAodDial = nullptr;
switch (TjdUiAppAodModel::GetInstance().GetNativeViewType()) {
case TjdUiAppAodModel::AodNativeViewType::ANALOG_VIEW:
nativeAodDial = new TjdUiNativeAodAnalogView();
break;
case TjdUiAppAodModel::AodNativeViewType::DIGITAL_VIEW:
nativeAodDial = new TjdUiNativeAodDigitalView();
break;
}
return nativeAodDial;
}
void TjdUiAppAodView::PeriodicUpdate()
{
if (clockDial_ == nullptr || !isLoaded_) {
return;
}
OHOS::DialViewGroup *dial = dynamic_cast<OHOS::DialViewGroup *>(clockDial_);
if (dial != nullptr) {
OHOS::DialModelTime::GetInstance()->UpdateTime();
dial->UpdateViewsByPeriodicUpdateData();
return;
}
TjdUiAppAodNativeView *clock = dynamic_cast<TjdUiAppAodNativeView *>(clockDial_);
if (clockDial_ != nullptr) {
clock->UpdateTime();
}
}
} // namespace TJD