97 lines
2.6 KiB
C++
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
|