162 lines
5.4 KiB
C++
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
|