228 lines
7.5 KiB
C++
228 lines
7.5 KiB
C++
/*----------------------------------------------------------------------------
|
||
* Copyright (c) TJD Technologies Co., Ltd. 2024. All rights reserved.
|
||
*
|
||
* Description:
|
||
*
|
||
* Author: huangshuyi
|
||
*
|
||
* Create: 2024-4
|
||
*--------------------------------------------------------------------------*/
|
||
|
||
#include "TjdUiAppMainPageMessage.h"
|
||
#include "components/ui_label.h"
|
||
#include "components/ui_scroll_view.h"
|
||
#include "wearable_log.h"
|
||
#include "ui_resource_image.h"
|
||
#include "common/image_cache_manager.h"
|
||
#include <time.h>
|
||
#include <unordered_map>
|
||
#include "gfx_utils/image_info.h"
|
||
#include "gfx_utils/heap_base.h"
|
||
#include "TjdUiImageIds.h"
|
||
#include "ui_label.h"
|
||
#include "TjdUiMemManage.h"
|
||
#include "sys_config.h"
|
||
#include "TjdUiMultiLanguageExt.h"
|
||
#include "sql_message.h"
|
||
|
||
using namespace OHOS;
|
||
|
||
namespace TJD {
|
||
|
||
#define ENABLE_PRINT_INFO 1
|
||
#if ENABLE_PRINT_INFO
|
||
#define static_print_info(...) sys_ui_log_i(__VA_ARGS__) //一般信息打印宏控制
|
||
#define static_print_warn(...) sys_ui_log_w(__VA_ARGS__) //警告信息打印一般常开
|
||
#define static_print_error(...) sys_ui_log_e(__VA_ARGS__) //错误信息打印一般常开
|
||
#define static_print_debug(...) sys_ui_log_d(__VA_ARGS__)
|
||
#else
|
||
#define static_print_info(...)
|
||
#define static_print_warn(...)
|
||
#define static_print_error(...)
|
||
#define static_print_debug(...)
|
||
#endif
|
||
|
||
#define IMAGE_BIN_PATH TJD_IMAGE_PATH"img_main_message.bin"
|
||
#define MESSAGE_CONTAINER_WIDTH 300
|
||
#define MESSAGE_CONTAINER_HEIGHT 100
|
||
#define MESSAGE_CONTAINER_GAP 30
|
||
|
||
static uint16_t msg_container_y;
|
||
struct ItemNode {
|
||
int resId;
|
||
char* title;
|
||
char* context;
|
||
char *timesample;
|
||
//ImageInfo* imgInfo;
|
||
};
|
||
static ItemNode message_list[] = {
|
||
{IMG_MAIN_MESSAGE_DINGDING, "张三", "今晚有会", "2024-5-21"},
|
||
{IMG_MAIN_MESSAGE_FACEBOOK, "张三", "今晚有会", "2024-5-21"},
|
||
{IMG_MAIN_MESSAGE_INSTAGRAM, "张三", "今晚有会", "2024-5-21"},
|
||
{IMG_MAIN_MESSAGE_FACEBOOKMESSENGER, "张三", "今晚有会", "2024-5-21"},
|
||
{IMG_MAIN_MESSAGE_KAKAOTALK, "张三", "今晚有会", "2024-5-21"},
|
||
};
|
||
|
||
static TjdUiAppMainPageMessage *g_pMainMessagePage = nullptr;
|
||
|
||
static void tjdui_create_message_item(UIViewGroup *cont, ItemNode *item)
|
||
{
|
||
UIViewGroup *container = new UIViewGroup();
|
||
container->SetStyle(STYLE_BACKGROUND_COLOR, Color::Gray().full);
|
||
container->SetStyle(STYLE_BORDER_RADIUS, 15);
|
||
container->SetPosition((Screen::GetInstance().GetWidth() - MESSAGE_CONTAINER_WIDTH) / 2, msg_container_y + 50, MESSAGE_CONTAINER_WIDTH, MESSAGE_CONTAINER_HEIGHT);
|
||
ImageInfo* imgInfo;
|
||
UIImageView *messageIcon = new UIImageView();
|
||
container->Add(messageIcon);
|
||
uint32_t icon_id = item->resId;
|
||
char *title = item->title;
|
||
char *context = item->context;
|
||
char *timesample = item->timesample;
|
||
imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(icon_id, IMAGE_BIN_PATH);
|
||
if (imgInfo == nullptr) {
|
||
static_print_warn("open img failed");
|
||
return;
|
||
}
|
||
messageIcon->SetPosition(10,10);
|
||
messageIcon->SetSrc(imgInfo);
|
||
messageIcon->SetViewId("messageIcon");
|
||
UILabel *labelTitle = new UILabel();
|
||
container->Add(labelTitle);
|
||
labelTitle->SetText(title);//需要换成多语言
|
||
labelTitle->SetFont(TJD_VECTOR_FONT_FILENAME, TJD_FONT_SIZE_20);
|
||
labelTitle->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
|
||
labelTitle->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
|
||
labelTitle->LayoutRightToSibling(messageIcon->GetViewId(), 0);
|
||
labelTitle->AlignTopToSibling(messageIcon->GetViewId(), 0);
|
||
labelTitle->SetViewId("labelTitle");
|
||
|
||
UILabel *labelContext = new UILabel();
|
||
container->Add(labelContext);
|
||
labelContext->SetText(context);//需要换成多语言
|
||
labelContext->SetFont(TJD_VECTOR_FONT_FILENAME, TJD_FONT_SIZE_20);
|
||
labelContext->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
|
||
labelContext->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
|
||
labelContext->LayoutBottomToSibling(labelTitle->GetViewId(), 10);
|
||
labelContext->AlignLeftToSibling(labelTitle->GetViewId(), 0);
|
||
|
||
|
||
msg_container_y += MESSAGE_CONTAINER_HEIGHT + MESSAGE_CONTAINER_GAP;
|
||
cont->Add(container);
|
||
}
|
||
|
||
TjdUiAppMainPageMessage::TjdUiAppMainPageMessage()
|
||
{
|
||
SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
|
||
g_pMainMessagePage = this;
|
||
}
|
||
|
||
TjdUiAppMainPageMessage::~TjdUiAppMainPageMessage()
|
||
{
|
||
UnLoad();
|
||
g_pMainMessagePage = nullptr;
|
||
}
|
||
|
||
TjdUiAppMainPageMessage *TjdUiAppMainPageMessage::GetInstance(void)
|
||
{
|
||
return g_pMainMessagePage;
|
||
}
|
||
|
||
|
||
void TjdUiAppMainPageMessage::PreLoad(void)
|
||
{
|
||
static_print_debug("TjdUiAppMainPageMessage::PreLoad..............");
|
||
if (!viewiInitStatus) {
|
||
InitView();
|
||
viewiInitStatus = true;
|
||
}
|
||
}
|
||
|
||
|
||
void TjdUiAppMainPageMessage::ScrollBegin(bool isActive)
|
||
{
|
||
//为1时,是正处于消息页面,为0时,是没有处于消息页面
|
||
if (isActive == 0) {
|
||
UpdateView();
|
||
} else {
|
||
MessageTotalPage->FocusManage(false);
|
||
}
|
||
}
|
||
|
||
void TjdUiAppMainPageMessage::ScrollEnd(bool isActive)
|
||
{
|
||
//为0的时候,是该界面已经完全移出,为1的时候是该界面已经完全移入
|
||
if (isActive == 1) {
|
||
MessageTotalPage->FocusManage(true);
|
||
}
|
||
}
|
||
|
||
void TjdUiAppMainPageMessage::CoverBegin(bool isCovered)
|
||
{
|
||
//isCovered:当前屏幕没有被覆盖为0 1则为已被覆盖 覆盖开始时上抛
|
||
}
|
||
void TjdUiAppMainPageMessage::CoverEnd(bool isCovered)
|
||
{
|
||
//isCovered:当前屏幕没有被覆盖为0 1则为已被覆盖 覆盖结束后上抛
|
||
}
|
||
|
||
void TjdUiAppMainPageMessage::UnLoad(void)
|
||
{
|
||
if (viewiInitStatus) {
|
||
ImageCacheManager::GetInstance().UnloadAllInMultiRes(IMAGE_BIN_PATH);
|
||
viewiInitStatus = false;
|
||
//TjdUiMemManage::DeleteChildren(container);
|
||
}
|
||
|
||
if (MessageConfirmDelPage) {
|
||
delete MessageConfirmDelPage;
|
||
MessageConfirmDelPage = nullptr;
|
||
}
|
||
if (MessageNoMessagePage) {
|
||
delete MessageNoMessagePage;
|
||
MessageNoMessagePage = nullptr;
|
||
}
|
||
if (MessageTotalPage) {
|
||
delete MessageTotalPage;
|
||
MessageTotalPage = nullptr;
|
||
}
|
||
//printf("TjdUiAppMainPageMessage::UnLoad:%d..............\n");
|
||
// Main clock view is commonly used page, so we do not release it's resources inner slice.
|
||
}
|
||
|
||
void TjdUiAppMainPageMessage::UpdateView(void)
|
||
{
|
||
if (sql_message_get_message_num() == 0) {
|
||
MessageNoMessagePage->show();
|
||
MessageTotalPage->hide();
|
||
} else {
|
||
MessageTotalPage->UpdateMessagePageGroup();
|
||
MessageNoMessagePage->hide();
|
||
}
|
||
}
|
||
|
||
bool TjdUiAppMainPageMessage::InitView(void)
|
||
{
|
||
//sql_message_test();
|
||
//这里不能无消息和有消息单独申请,因为主页面再没有销毁的情况下有可能有消息,有可能没有消息
|
||
TjdUiMessageTotalPage::sliceId = (TjdUiAppViewId)NativeAbility::GetInstance().GetCurSliceId();
|
||
MessageNoMessagePage = new TjdUiMessageNoMessagePage();
|
||
MessageTotalPage = new TjdUiMessageTotalPage();
|
||
MessageConfirmDelPage = new TjdUiMessageConfirmDelPage();
|
||
container = MessageTotalPage->PageInit(nullptr);
|
||
MessageConfirmDelPage->PageInit(container);
|
||
MessageConfirmDelPage->SetParentPage(MessageTotalPage);
|
||
MessageNoMessagePage->PageInit(container);
|
||
if (sql_message_get_message_num() == 0) {
|
||
MessageConfirmDelPage->hide();
|
||
MessageTotalPage->hide();
|
||
MessageNoMessagePage->show();
|
||
} else {
|
||
MessageConfirmDelPage->hide();
|
||
MessageNoMessagePage->hide();
|
||
MessageTotalPage->show();
|
||
}
|
||
Add(container);
|
||
return true;
|
||
}
|
||
}
|