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

170 lines
5.4 KiB
C++

/*----------------------------------------------------------------------------
* Copyright (c) TJD Technologies Co., Ltd. 2025. All rights reserved.
*
* Description: TjdUiAppListItemView.cpp
*
* Author: luziquan@ss-tjd.com
*
* Create: 2025-02-12
*--------------------------------------------------------------------------*/
#include "TjdUiAppListItemView.h"
#include "TjdUiImageIds.h"
#include "TjdUiMultiLanguageExt.h"
#include "common/image_cache_manager.h"
#include "common/screen.h"
namespace TJD {
#define APP_LIST_ITEM_WIDTH (OHOS::HORIZONTAL_RESOLUTION - 40)
#define APP_LIST_ITEM_HEIGHT (140)
#define MENU_IMAGE_BIN_PATH TJD_IMAGE_PATH "/img_menu_list.bin"
AppListItemView::AppListItemView()
{
SetTouchable(true);
SetPosition(0, 0, APP_LIST_ITEM_WIDTH, APP_LIST_ITEM_HEIGHT);
SetStyle(OHOS::STYLE_BACKGROUND_OPA, OHOS::OPA_OPAQUE);
icon_.SetResizeMode(OHOS::UIImageView::ImageResizeMode::CENTER);
icon_.SetViewId("image");
label_.SetStyle(OHOS::STYLE_BACKGROUND_OPA, OHOS::OPA_TRANSPARENT);
label_.SetFont(TJD_VECTOR_FONT_FILENAME, TJD_FONT_SIZE_40);
label_.SetY(0);
label_.SetHeight(APP_LIST_ITEM_HEIGHT);
label_.SetLineBreakMode(OHOS::UILabel::LINE_BREAK_MARQUEE);
label_.SetStyle(OHOS::STYLE_BORDER_WIDTH, 1);
label_.SetAlign(OHOS::TEXT_ALIGNMENT_LEFT, OHOS::TEXT_ALIGNMENT_CENTER);
label_.SetStyle(OHOS::STYLE_BACKGROUND_OPA, OHOS::OPA_TRANSPARENT);
Reset();
Add(&icon_);
Add(&label_);
}
AppListItemView::~AppListItemView() { RemoveAll(); }
void AppListItemView::SetItemInfo(const TjdAppItem &itemInfo)
{
itemInfo_ = itemInfo;
if (itemInfo_.resId == -1) {
icon_.SetSrc(itemInfo_.appItem.iconSmall);
} else {
icon_.SetSrc(OHOS::ImageCacheManager::GetInstance().LoadOneInMultiRes(itemInfo_.resId, MENU_IMAGE_BIN_PATH));
}
if (itemInfo_.txtId == -1) {
label_.SetText(itemInfo_.appItem.label);
} else {
label_.SetTextId(itemInfo_.txtId);
}
SetViewIndex(itemInfo_.appItem.id);
SetUpChild();
}
TjdUiAppViewId AppListItemView::GetViewId() { return static_cast<TjdUiAppViewId>(itemInfo_.appItem.id); }
const char *AppListItemView::GetAppUid() { return itemInfo_.appItem.uid; }
void AppListItemView::SetUpChild()
{
icon_.LayoutCenterOfParent();
icon_.LayoutLeftOfParent(90);
label_.LayoutRightToSibling(icon_.GetViewId(), 24);
label_.SetWidth(APP_LIST_ITEM_WIDTH - (icon_.GetWidth() + icon_.GetX() + 24));
}
void AppListItemView::SelectedChange()
{
label_.SetTextColor(OHOS::Color::White());
icon_.Scale(OHOS::Vector2<float>{1.1, 1.1}, OHOS::Vector2<float>{0, 0});
}
void AppListItemView::Reset()
{
label_.SetTextColor(OHOS::Color::Gray());
icon_.ResetTransParameter();
}
HexagonsItemView::HexagonsItemView() {}
HexagonsItemView::~HexagonsItemView() {}
void HexagonsItemView::SetItemInfo(const TjdAppItem &itemInfo)
{
itemInfo_ = itemInfo;
SetViewIndex(itemInfo_.appItem.id);
if (itemInfo_.resId == -1) {
SetSrc(itemInfo_.appItem.iconSmall);
} else {
SetSrc(OHOS::ImageCacheManager::GetInstance().LoadOneInMultiRes(itemInfo_.resId, MENU_IMAGE_BIN_PATH));
}
}
TjdUiAppViewId HexagonsItemView::GetViewId() { return static_cast<TjdUiAppViewId>(itemInfo_.appItem.id); }
const char *HexagonsItemView::GetAppUid() { return itemInfo_.appItem.uid; }
void WaterfallItemView::SetItemInfo(const TjdAppItem &itemInfo)
{
itemInfo_ = itemInfo;
if (itemInfo_.resId == -1) {
SetSrc(itemInfo_.appItem.iconSmall);
} else {
SetSrc(OHOS::ImageCacheManager::GetInstance().LoadOneInMultiRes(itemInfo_.resId, MENU_IMAGE_BIN_PATH));
}
}
TjdUiAppViewId WaterfallItemView::GetViewId() { return static_cast<TjdUiAppViewId>(itemInfo_.appItem.id); }
const char *WaterfallItemView::GetAppUid() { return itemInfo_.appItem.uid; }
SphereItemView::SphereItemView()
{
static constexpr int16_t MENU_ITEM_SIZE = 80;
SetPosition(0, 0, MENU_ITEM_SIZE, MENU_ITEM_SIZE);
SetStyle(OHOS::STYLE_BACKGROUND_OPA, OHOS::OPA_TRANSPARENT);
icon_.SetTouchable(true);
icon_.SetPosition(0, 0, GetWidth(), GetHeight());
icon_.SetAutoEnable(false);
icon_.SetResizeMode(OHOS::UIImageView::ImageResizeMode::FILL);
Add(&icon_);
}
SphereItemView::~SphereItemView() { RemoveAll(); }
void SphereItemView::SetItemInfo(const TjdAppItem &itemInfo)
{
itemInfo_ = itemInfo;
if (itemInfo_.resId == -1) {
icon_.SetSrc(itemInfo_.appItem.iconSmall);
} else {
icon_.SetSrc(OHOS::ImageCacheManager::GetInstance().LoadOneInMultiRes(itemInfo_.resId, MENU_IMAGE_BIN_PATH));
}
SetViewIndex(itemInfo_.appItem.id);
}
TjdUiAppViewId SphereItemView::GetViewId() { return static_cast<TjdUiAppViewId>(itemInfo_.appItem.id); }
const char *SphereItemView::GetAppUid() { return itemInfo_.appItem.uid; }
void SphereItemView::SetOnClickListener(OHOS::UIView::OnClickListener *onClickListener)
{
icon_.SetOnClickListener(onClickListener);
}
void GridItemView::SetItemInfo(const TjdAppItem &itemInfo)
{
itemInfo_ = itemInfo;
if (itemInfo_.resId == -1) {
SetSrc(itemInfo_.appItem.iconSmall);
} else {
SetSrc(OHOS::ImageCacheManager::GetInstance().LoadOneInMultiRes(itemInfo_.resId, MENU_IMAGE_BIN_PATH));
}
}
TjdUiAppViewId GridItemView::GetViewId() { return static_cast<TjdUiAppViewId>(itemInfo_.appItem.id); }
const char *GridItemView::GetAppUid() { return itemInfo_.appItem.uid; }
} // namespace TJD