mcu_hi3321_watch/tjd/ui/app/phone/phone_app/TjdUiAppPhoneAdapter.cpp
2025-05-26 20:15:20 +08:00

162 lines
5.4 KiB
C++

/*----------------------------------------------------------------------------
* Copyright (c) TJD Technologies Co., Ltd. 2025. All rights reserved.
*
* Description: TjdUiAppPhoneAdapter.cpp
*
* Author: luziquan@ss-tjd.com
*
* Create: 2025-04-01
*--------------------------------------------------------------------------*/
#include "TjdUiAppPhoneAdapter.h"
#include "TjdUiAppPhonePresenter.h"
#include "TjdUiMultiLanguageExt.h"
#include "common/image_cache_manager.h"
namespace TJD {
static constexpr int16_t ITEM_ALIGN_X = 242;
static constexpr int16_t ITEM_WIDTH = 245;
static constexpr int16_t ITEM_HEIGHT = 56;
PhoneMainItemView::PhoneMainItemView(const PhoneListItemInfo &itemInfo)
{
auto &images = OHOS::ImageCacheManager::GetInstance();
Resize(450, 128);
SetTouchable(true);
SetViewIndex(itemInfo.index);
SetStyle(OHOS::STYLE_BACKGROUND_OPA, 0xff);
SetStyle(OHOS::STYLE_BORDER_RADIUS, 64);
SetStyle(OHOS::STYLE_BACKGROUND_COLOR, 0xff202020);
icon_.SetPosition(20, 18, 92, 92);
if (itemInfo.imageInfo != nullptr) {
icon_.SetSrc(itemInfo.imageInfo);
}
name_.SetFont(TJD_VECTOR_FONT_FILENAME, 42);
name_.SetLineBreakMode(OHOS::UILabel::LINE_BREAK_MARQUEE);
name_.SetAlign(OHOS::TEXT_ALIGNMENT_CENTER, OHOS::TEXT_ALIGNMENT_CENTER);
name_.SetPosition(ITEM_ALIGN_X - (ITEM_WIDTH >> 1), (GetHeight() >> 1) - (ITEM_HEIGHT >> 1), ITEM_WIDTH,
ITEM_HEIGHT);
Add(&icon_);
Add(&name_);
}
void PhoneMainItemView::RefreshItem(const PhoneListItemInfo &itemInfo, int16_t index)
{
itemInfo_ = itemInfo;
icon_.SetSrc(itemInfo.imageInfo);
name_.SetText(itemInfo.name.c_str());
}
bool PhoneMainItemView::OnClickEvent(const OHOS::ClickEvent &event)
{
if (itemInfo_.index == PHONE_CONTACT) {
TjdUiAppPhonePresenter::GetInstance()->ClickContactEvent();
} else if (itemInfo_.index == PHONE_CALL_LOG) {
TjdUiAppPhonePresenter::GetInstance()->ClickCallLogEvent();
} else if (itemInfo_.index == PHONE_DIAL) {
TjdUiAppPhonePresenter::GetInstance()->ClickDialEvent();
}
return true;
}
PhoneCallLogItemView::PhoneCallLogItemView(const PhoneListItemInfo &itemInfo)
{
Resize(450, 128);
SetTouchable(true);
SetViewIndex(itemInfo.index);
SetStyle(OHOS::STYLE_BACKGROUND_OPA, 0xff);
SetStyle(OHOS::STYLE_BORDER_RADIUS, 64);
SetStyle(OHOS::STYLE_BACKGROUND_COLOR, 0xff202020);
icon_.SetPosition(20, 18, 92, 92);
if (itemInfo.imageInfo != nullptr) {
icon_.SetSrc(itemInfo.imageInfo);
}
name_.SetFont(TJD_VECTOR_FONT_FILENAME, 42);
name_.SetLineBreakMode(OHOS::UILabel::LINE_BREAK_MARQUEE);
name_.SetAlign(OHOS::TEXT_ALIGNMENT_CENTER, OHOS::TEXT_ALIGNMENT_CENTER);
name_.SetPosition(ITEM_ALIGN_X - (ITEM_WIDTH >> 1), 18, ITEM_WIDTH, ITEM_HEIGHT);
number_.SetFont(TJD_VECTOR_FONT_FILENAME, 30);
number_.SetLineBreakMode(OHOS::UILabel::LINE_BREAK_MARQUEE);
number_.SetAlign(OHOS::TEXT_ALIGNMENT_CENTER, OHOS::TEXT_ALIGNMENT_CENTER);
number_.SetStyle(OHOS::STYLE_TEXT_OPA, OHOS::OPA_OPAQUE * 0.2);
number_.SetPosition(ITEM_ALIGN_X - (ITEM_WIDTH >> 1), 68, ITEM_WIDTH, ITEM_HEIGHT);
Add(&icon_);
Add(&name_);
Add(&number_);
}
void PhoneCallLogItemView::RefreshItem(const PhoneListItemInfo &itemInfo, int16_t index)
{
itemInfo_ = itemInfo;
icon_.SetSrc(itemInfo.imageInfo);
if (itemInfo.name.empty()) {
name_.SetY((GetHeight() >> 1) - (ITEM_HEIGHT >> 1));
name_.SetText(itemInfo.number.c_str());
number_.SetVisible(false);
} else {
name_.SetY(18);
name_.SetText(itemInfo.name.c_str());
number_.SetText(itemInfo.number.c_str());
number_.SetVisible(true);
}
}
bool PhoneCallLogItemView::OnClickEvent(const OHOS::ClickEvent &event) { return true; }
PhoneContactItemView::PhoneContactItemView(const PhoneListItemInfo &itemInfo)
{
Resize(450, 128);
SetTouchable(true);
SetViewIndex(itemInfo.index);
SetStyle(OHOS::STYLE_BACKGROUND_OPA, 0xff);
SetStyle(OHOS::STYLE_BORDER_RADIUS, 64);
SetStyle(OHOS::STYLE_BACKGROUND_COLOR, 0xff202020);
icon_.SetPosition(20, 18, 92, 92);
if (itemInfo.imageInfo != nullptr) {
icon_.SetSrc(itemInfo.imageInfo);
}
name_.SetFont(TJD_VECTOR_FONT_FILENAME, 42);
name_.SetLineBreakMode(OHOS::UILabel::LINE_BREAK_MARQUEE);
name_.SetAlign(OHOS::TEXT_ALIGNMENT_CENTER, OHOS::TEXT_ALIGNMENT_CENTER);
name_.SetPosition(ITEM_ALIGN_X - (ITEM_WIDTH >> 1), 18, ITEM_WIDTH, ITEM_HEIGHT);
number_.SetFont(TJD_VECTOR_FONT_FILENAME, 30);
number_.SetLineBreakMode(OHOS::UILabel::LINE_BREAK_MARQUEE);
number_.SetAlign(OHOS::TEXT_ALIGNMENT_CENTER, OHOS::TEXT_ALIGNMENT_CENTER);
number_.SetStyle(OHOS::STYLE_TEXT_OPA, OHOS::OPA_OPAQUE * 0.2);
number_.SetPosition(ITEM_ALIGN_X - (ITEM_WIDTH >> 1), 68, ITEM_WIDTH, ITEM_HEIGHT);
Add(&icon_);
Add(&name_);
Add(&number_);
}
void PhoneContactItemView::RefreshItem(const PhoneListItemInfo &itemInfo, int16_t index)
{
itemInfo_ = itemInfo;
icon_.SetSrc(itemInfo.imageInfo);
name_.SetText(itemInfo.name.c_str());
number_.SetText(itemInfo.number.c_str());
}
bool PhoneContactItemView::OnClickEvent(const OHOS::ClickEvent &event)
{
TjdUiAppPhonePresenter *persenter = TjdUiAppPhonePresenter::GetInstance();
if (persenter == nullptr) {
return false;
}
persenter->ClickDialCallEvent(itemInfo_.index);
return true;
}
} // namespace TJD