From 036da76f9679a8dcd78ec98e3a90b6405652499c Mon Sep 17 00:00:00 2001 From: Caisking <3449750381@qq.com> Date: Sat, 28 Sep 2024 20:40:28 +0800 Subject: [PATCH] =?utf8?q?=E4=BF=AE=E6=94=B9=E6=B6=88=E6=81=AFSlice?= =?utf8?q?=E7=9A=84=E6=98=BE=E7=A4=BA=E4=BB=A5=E5=8F=8A=E8=AF=BB=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../nativelauncher/src/NativeLauncher.cpp | 12 +- .../message/include/MessageCardView.h | 34 +- .../message/include/MessageLackView.h | 1 - .../message/include/MessageShowView.h | 1 - .../nativeui/message/include/MessageView.h | 5 +- .../nativeui/message/src/MessageAdapter.cpp | 6 + .../nativeui/message/src/MessageCardView.cpp | 36 +- .../message/src/MessageControlView.cpp | 2 + .../nativeui/message/src/MessageLackView.cpp | 7 - .../nativeui/message/src/MessageModel.cpp | 45 +- .../nativeui/message/src/MessagePresenter.cpp | 5 +- .../nativeui/message/src/MessageShowView.cpp | 13 +- .../nativeui/message/src/MessageView.cpp | 542 +++++++++--------- 13 files changed, 325 insertions(+), 384 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp b/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp index 5d58f7281..5804b385a 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp +++ b/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp @@ -538,16 +538,22 @@ namespace OHOS C_ScheduleDataReadFromFile(); mmi_sleep_mode_switch_read(); - /*开机如果设置了密码锁,进行锁屏*/ + /*开机读取消息历史数据*/ + if(!MessageModel::GetInstance().LoadMessagesFromStorage()) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LoadMessagesFromStorage failed!"); + } + + /*开机检查如果设置了密码锁,进行锁屏*/ int lockstate = OHOS::ConfigModel::GetInstance()->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_PASSWORD_SWITCH); WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lockstate = %d", lockstate); // 打印锁定状态判断 if (lockstate == 1) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Native ability state is active."); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Device is locked (lock state == 1)"); if (uapi_dev_runtime_get_lock_status() == 0) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Device is unlocked (lock status == 0)."); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Device is unlocked (lock status == 0)"); uapi_dev_runtime_set_lock_status(1); // 上锁 OHOS::MainModel::GetInstance().setDialState(OHOS::DialState::LOCK, true); } diff --git a/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageCardView.h b/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageCardView.h index 004871412..526eca9c6 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageCardView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageCardView.h @@ -1,33 +1,4 @@ -/*** - * @Date: 2024-07-10 16:58:06 - * @LastEditors: Caisking 3449750381@qq.com - * @LastEditTime: 2024-08-24 17:36:42 - * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageCardView.h - */ -/*** - * @Date: 2024-07-10 16:58:06 - * @LastEditors: Caisking 3449750381@qq.com - * @LastEditTime: 2024-07-25 10:57:25 - * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageCardView.h - */ -/*** - * @Date: 2024-04-15 10:55:58 - * @LastEditors: Caisking 3449750381@qq.com - * @LastEditTime: 2024-06-22 17:52:45 - * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageCardView.h - */ -/*** - * @Date: 2024-04-15 10:55:58 - * @LastEditors: Caisking 3449750381@qq.com - * @LastEditTime: 2024-06-19 17:56:08 - * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageCardView.h - */ -/* - * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved. - * Description: MessageCardView.h - * Author: - * Create: 2021-12-21 - */ + #ifndef MESSAGE_CARD_VIEW_H #define MESSAGE_CARD_VIEW_H @@ -66,11 +37,8 @@ namespace OHOS private: void ClearAll(void); - UILabelExt *title{nullptr}; MessageListAdapter *p_MessageListAdapter{nullptr}; UIList *MessageList = nullptr; - UILabelButtonExt *DeleteButton = nullptr; // 删除按键 - MessageModel *p_MessageModel{nullptr}; UIImageView *imageline{nullptr}; }; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageLackView.h b/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageLackView.h index a6174653a..53adf1f38 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageLackView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageLackView.h @@ -42,7 +42,6 @@ namespace OHOS private: UIImageView *imageline{nullptr}; UIImageView *imagemeage{nullptr}; - UILabelExt *labeltitle{nullptr}; UILabelExt *labelmeage{nullptr}; void ClearAll(void); diff --git a/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageShowView.h b/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageShowView.h index 457d57e2e..d8bdf8c26 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageShowView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageShowView.h @@ -59,7 +59,6 @@ namespace OHOS UILabel *title{nullptr}; UILabel *time{nullptr}; - UILabel *message{nullptr}; UILabelButton *messageButton{nullptr}; // 消息 UILabelButtonExt *deleteButton{nullptr}; // 清除按键 diff --git a/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageView.h b/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageView.h index 1a56c244d..dd549502b 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageView.h @@ -63,15 +63,12 @@ namespace OHOS /*消息列表界面*/ UIScrollView *messageView{nullptr}; - UILabelExt *title{nullptr}; + UIImageView *imageline2{nullptr}; MessageListAdapter *p_MessageListAdapter{nullptr}; UIList *MessageList = nullptr; - UILabelButtonExt *DeleteButton = nullptr; // 删除按键 - UIView::OnDragListener *draglistener{nullptr}; bool viewInitStatus{false}; - MessageModel *g_MessageModel{nullptr}; }; } // namespace OHOS #endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageAdapter.cpp b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageAdapter.cpp index 75a2403c5..3e7aceaca 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageAdapter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageAdapter.cpp @@ -20,6 +20,11 @@ namespace OHOS MessageListAdapter::~MessageListAdapter() { + if(DeleteButton) + { + delete DeleteButton; + DeleteButton = nullptr; + } listData.clear(); } @@ -98,6 +103,7 @@ namespace OHOS else { item = static_cast(inView); + item->TearDownChild(); item->RemoveAll(); } item->SetUpChild(); diff --git a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageCardView.cpp b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageCardView.cpp index 3cbf62096..861644ef9 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageCardView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageCardView.cpp @@ -4,6 +4,7 @@ * Author: * Create: 2021-12-21 */ + #include #include "common/image_cache_manager.h" #include "ui_resource_image.h" @@ -52,14 +53,11 @@ namespace OHOS delete MessageList; MessageList = nullptr; } - if (DeleteButton != nullptr) + if(p_MessageListAdapter != nullptr) { - delete DeleteButton; - DeleteButton = nullptr; - } - - delete p_MessageListAdapter; - p_MessageListAdapter = nullptr; + delete p_MessageListAdapter; + p_MessageListAdapter = nullptr; + } } void MessageCardView::AddMessageToList(const MessageListItem &item) { @@ -75,15 +73,20 @@ namespace OHOS Add(imageline); // UIList 的适配器 - p_MessageListAdapter = new MessageListAdapter(); + if(p_MessageListAdapter == nullptr) + { + p_MessageListAdapter = new MessageListAdapter(); + } + p_MessageListAdapter->SetItemClickListener(MessageControlPresenter::GetInstance()); if (MessageList == nullptr) { MessageList = new UIList(); } + // MessageList->SetPosition(MORE_LIST_POSITION_X, MORE_LIST_POSITION_Y, 466, 466); MessageList->SetPosition(MORE_LIST_POSITION_X, MORE_LIST_POSITION_Y, 466, 466); - MessageList->SetScrollBlankSize(35); - MessageList->SetReboundSize(50); + // MessageList->SetScrollBlankSize(35); + // MessageList->SetReboundSize(50); MessageList->SetThrowDrag(true); MessageList->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT); MessageList->SetMaxScrollDistance(1000); // 1000: max scroll distance @@ -130,16 +133,11 @@ namespace OHOS } void MessageCardView::SetUpView(MessageCardView *messageCardView) { - p_MessageModel = &MessageModel::GetInstance(); - if (p_MessageModel == nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "p_MessageModel fail"); - return; - } /* 加载list */ - p_MessageModel->InitMessageListItems(); - const MessageListItem *itemInfo = p_MessageModel->GetMessageListItems(); - for (int i = 0; i < p_MessageModel->GetMessageCount(); i++) + MessageModel::GetInstance().InitMessageListItems(); + const MessageListItem *itemInfo = MessageModel::GetInstance().GetMessageListItems(); + uint8_t num = MessageModel::GetInstance().GetMessageCount(); + for (int i = 0; i < num; i++) { messageCardView->AddMessageToList(itemInfo[i]); } diff --git a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageControlView.cpp b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageControlView.cpp index d7347151c..dbca24ac4 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageControlView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageControlView.cpp @@ -34,11 +34,13 @@ namespace OHOS RemoveAll(); if (messageLackView != nullptr) { + messageLackView->RemoveAll(); delete messageLackView; messageLackView = nullptr; } if (messageCardView != nullptr) { + messageCardView->RemoveAll(); delete messageCardView; messageCardView = nullptr; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageLackView.cpp b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageLackView.cpp index 3df4d0cb7..7edac4bd2 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageLackView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageLackView.cpp @@ -47,11 +47,6 @@ namespace OHOS delete imagemeage; imagemeage = nullptr; } - if (labeltitle != nullptr) - { - delete labeltitle; - labeltitle = nullptr; - } if (labelmeage != nullptr) { delete labelmeage; @@ -69,7 +64,6 @@ namespace OHOS WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MessageLackView::CreateUIViewGroup"); /*初始化label*/ - InitLabelExt(labeltitle, 83, 50, 300, 35, "labletitle", STR_MESSAGE_NOTIFICATION, DEFAULT_VECTOR_FONT_FILENAME, 30); InitLabelExt(labelmeage, 53, 276, 360, 40, "labelMessage", STR_MESSAGENO, DEFAULT_VECTOR_FONT_FILENAME, 30); labelmeage->SetTextColor(Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff)); /*初始化image*/ @@ -78,7 +72,6 @@ namespace OHOS Add(imageline); Add(imagemeage); - Add(labeltitle); Add(labelmeage); SetDraggable(false); diff --git a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageModel.cpp index 5b83e40c1..8ad2b498b 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageModel.cpp @@ -109,7 +109,13 @@ extern "C" WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "request %d\r\n", request->msgId); if (request->msgId == TOPIC_EVENT_MESSAGE_UPDATA) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TOPIC_EVENT_MESSAGE_UPDATA"); ancs_data_info_t *messageInfo = new ancs_data_info_t(); + if(messageInfo == NULL) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new ancs_data_info_t fail"); + return; + } int rets = memcpy_s(messageInfo, sizeof(ancs_data_info_t), (ancs_data_info_t *)request->data, request->len); if (rets != EOK) { @@ -142,7 +148,7 @@ namespace OHOS MessageModel::MessageModel() { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageModel"); - LoadMessagesFromStorage(); + // LoadMessagesFromStorage(); } MessageModel::~MessageModel() { @@ -202,7 +208,7 @@ namespace OHOS } // 清空现有数据 - MessageVector.clear(); + // MessageVector.clear(); // 将JSON数据转换为MessageData并添加到消息数组中 int dataCount = cJSON_GetArraySize(messageArray); @@ -321,8 +327,12 @@ namespace OHOS bool unread_state = false; // 初始化未读状态 numberOfItems = MessageVector.size(); // 获取 MessageVector 的大小 - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "当前的项数是 %d", numberOfItems); - + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "当前的项数是 %d", numberOfItems); + if(numberOfItems == 0) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageVector is empty"); + return; + } // 从 MessageVector 的末尾开始迭代 for (int i = numberOfItems - 1, count = 0; i >= 0 && count < MaxMessageListCount; i--, count++) { @@ -369,7 +379,7 @@ namespace OHOS data.labelTitle = messageInfo->title; data.timestamp = messageInfo->time; - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AddMessageData data.isRead is %d,data.labelDetails is %s,data.labelTitle is %s,data.timestamp is %d", data.isRead, data.labelDetails.c_str(), data.labelTitle.c_str(), data.timestamp); + // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AddMessageData data.isRead is %d,data.labelDetails is %s,data.labelTitle is %s,data.timestamp is %d", data.isRead, data.labelDetails.c_str(), data.labelTitle.c_str(), data.timestamp); char labelTime[20]; if (uapi_get_TIME_STR(data.timestamp, labelTime, '.', ':', DATE_Y_M_D_H_M) != ERRCODE_SUCC) @@ -470,31 +480,8 @@ namespace OHOS void MessageModel::UpdateMessageView() { // 更新主界面卡片 - if (MessageControlView::GetInstance()) + if (MessageControlView::GetInstance()&&MainViewSample::GetInstance()) { -#if 0 - MessageControlView::GetInstance()->SetLackView(false); - auto messageCard = MessageCardView::GetInstance(); - if (messageCard) // 检查主界面卡片实例 - { - uint8_t status = MessageModel::GetInstance().HasDataVector(); - if (status) - { - InitMessageListItems(); // 更新列表item - MessageListAdapter *p_MessageListAdapter = new MessageListAdapter(); - messageCard->GetList()->RefreshList(); - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UpdateListView messageCardView"); - } - else - { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "No new data to refresh the message card list."); - } - } - else - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UpdateListView: messageCardView instance is nullptr"); - } -#endif // 配置主界面回退界面 CardId Id = MainViewSample::GetInstance()->GetHorCurrentCard(); MainModel::GetInstance().SetFromSetCardView(true); diff --git a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessagePresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessagePresenter.cpp index cf5397be8..ae92dbe11 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessagePresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessagePresenter.cpp @@ -84,7 +84,10 @@ namespace OHOS { NativeAbility::GetInstance().Back(); } - + if(event.GetDragDirection() == DragEvent::DIRECTION_TOP_TO_BOTTOM) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN); + } return true; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageShowView.cpp b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageShowView.cpp index 3cc5de923..abb9c33cc 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageShowView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageShowView.cpp @@ -66,15 +66,17 @@ namespace OHOS } void MessageShowView::DeInitView() { + if(container_) + { + container_->RemoveAll(); + } + delete title; title = nullptr; delete time; time = nullptr; - delete message; - message = nullptr; - delete messageButton; messageButton = nullptr; @@ -190,9 +192,6 @@ namespace OHOS messageButton->SetText(messageStr.c_str()); // messageButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); /* -------------------------------------------------------------------------- */ - InitUILabel(message, 63, 165, 340, 100, "message", messageStr.c_str(), DEFAULT_VECTOR_FONT_FILENAME, 30); - message->SetLineBreakMode(UILabel::LINE_BREAK_WRAP); // 宽固定 高度变长! - message->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER); /*加载清除按键*/ InitButtonExt(deleteButton, 43, 157 + defaultRectWidth + 20, 380, 100, DELETEBUTTON, STR_CLEAN, 30); deleteButton->SetOnClickListener(static_cast(MessageShowPresenter::GetInstance())); @@ -200,7 +199,6 @@ namespace OHOS container_->Add(title); container_->Add(time); container_->Add(messageButton); - // container_->Add(message); container_->Add(deleteButton); /* -------------------------------------------------------------------------- */ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitView is ok!"); @@ -219,6 +217,7 @@ namespace OHOS titleStr = data->labelTitle; timeStr = data->labelTime; messageStr = data->labelDetails; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UpdateMessage title %s time %s message %s", titleStr.c_str(), timeStr.c_str(), messageStr.c_str()); } void MessageShowView::PreLoad(void) { diff --git a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageView.cpp b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageView.cpp index 71d272d2f..bbb2b4fd9 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageView.cpp @@ -2,290 +2,274 @@ * @Date: 2024-07-12 11:19:45 * @LastEditors: Caisking 3449750381@qq.com * @LastEditTime: 2024-08-09 14:03:51 - * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageView.cpp + * @FilePath: + * /FD230/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageView.cpp */ #include "message/include/MessageView.h" -#include "message/include/MessagePresenter.h" #include "message/include/MessageModel.h" +#include "message/include/MessagePresenter.h" #include "UiConfig.h" -#include "wearable_log.h" #include "uicomponents/UIComponents.h" -namespace OHOS -{ - static constexpr char *lineimagePath = "/user/res/message/Line.bin"; - static constexpr char *messageimagePath = "/user/res/message/message.bin"; - static const uint32_t BACK_GROUND_COLOR = 0xfff6f6f6; - static constexpr int16_t More_LIST_POSITION_X = 43; - static constexpr int16_t More_LIST_POSITION_Y = 120; - static constexpr int16_t More_SCROLLBLANKSIZE = 35; // 设置此滚动视图的空白大小。 - static constexpr int16 MAX_SCR_DIS = 1000; - static constexpr int16 LIST_POS = 20; - static constexpr int16 SNUM_2 = 2; - static constexpr uint8_t NUM_2 = 2; - - static MessageView *g_pMessageView{nullptr}; - - MessageView::MessageView() - { - // SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION); - g_pMessageView = this; - } - - MessageView::~MessageView() - { - // if (viewInitStatus == true) - // { - // DeInitView(); - // } - UIViewGroup *tmpGroup = dynamic_cast(container_); - UIViewGroup::RemoveAndDeleteAllRecursively(tmpGroup); - - g_pMessageView = nullptr; - } - - MessageView *MessageView::GetInstance() - { - return g_pMessageView; - } - void MessageView::InitView() - { - // 展示界面 - if (MessageModel::GetInstance().HasDataVector()) - { - printf("存在数据!\r\n"); - SetPopupViewStatus(PopupMessage::MessagePopup, true); - } - else - { - printf("不存在数据!\r\n"); - SetPopupViewStatus(PopupMessage::LackPopup, true); - } - } - void MessageView::DeInitView() - { - lackView->RemoveAll(); - messageView->RemoveAll(); - MessageList->RemoveAll(); - - delete labeltitle; - labeltitle = nullptr; - - delete labelmeage; - labelmeage = nullptr; - - delete imageline; - imageline = nullptr; - - delete imagemeage; - imagemeage = nullptr; - - delete lackView; - lackView = nullptr; - - delete title; - title = nullptr; - delete title; - title = nullptr; - - delete DeleteButton; - DeleteButton = nullptr; - - delete MessageList; - MessageList = nullptr; - - delete messageView; - messageView = nullptr; - - delete draglistener; - draglistener = nullptr; - } - - void MessageView::PreLoad(void) - { - if (!viewInitStatus) - { - InitView(); - viewInitStatus = true; - } - } - - /*无数据界面*/ - void MessageView::ShowLackView() - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowLackView start"); - lackView = new UIScrollView(); - if (lackView == nullptr) - { - return; - } - lackView->SetPosition(0, 0); - lackView->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION); - lackView->SetScrollBlankSize(20); - lackView->SetReboundSize(50); - lackView->SetDirection(1); - /*初始化label*/ - InitLabelExt(labeltitle, 83, 50, 300, 35, "labletitle", STR_MESSAGE_NOTIFICATION, DEFAULT_VECTOR_FONT_FILENAME, 30); - InitLabelExt(labelmeage, 53, 276, 360, 40, "labelMessage", STR_MESSAGENO, DEFAULT_VECTOR_FONT_FILENAME, 30); - labelmeage->SetTextColor(Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff)); - /*初始化image*/ - InitImageView(imageline, 193, 30, 365, 35, "image", lineimagePath); - InitImageView(imagemeage, 183, 156, 100, 100, "image", messageimagePath); - - lackView->Add(imageline); - lackView->Add(imagemeage); - lackView->Add(labeltitle); - lackView->Add(labelmeage); - - container_->Add(lackView); - lackView->SetDraggable(true); - lackView->SetTouchable(true); - - lackView->SetOnDragListener(presenter_); - - lackView->SetVisible(false); // 界面隐藏 - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowLackView end"); - } - - /*数据界面*/ - void MessageView::ShowMessageView() - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowmessageView start"); - messageView = new UIScrollView(); - if (messageView == nullptr) - { - return; - } - messageView->SetPosition(0, 0); - messageView->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION); - messageView->SetScrollBlankSize(20); - messageView->SetReboundSize(50); - messageView->SetDirection(1); - - /*初始化label*/ - InitLabelExt(title, 83, 50, 300, 35, "labletitle", STR_MESSAGE_NOTIFICATION, DEFAULT_VECTOR_FONT_FILENAME, 30); - messageView->Add(title); - - // UIList 的适配器 - p_MessageListAdapter = new MessageListAdapter(); - p_MessageListAdapter->SetItemClickListener(presenter_); - if (MessageList == nullptr) - { - MessageList = new UIList(); - } - MessageList->SetPosition(More_LIST_POSITION_X, More_LIST_POSITION_Y, 466, 466); - MessageList->SetScrollStateListener(this); - MessageList->SetThrowDrag(true); - MessageList->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT); - // 设置手指抬起屏幕后的最大滚动距离 - MessageList->SetMaxScrollDistance(1000); // 1000: max scroll distance - // 设置手指抬起屏幕后的补偿距离 - MessageList->SetSwipeACCLevel(800); // 800: compensation distance - // 设置拖动加速 - MessageList->SetDragACCLevel(5); // 5: drag acceleration - MessageList->SetYScrollBarVisible(true); - - MessageList->SetOnClickListener(presenter_); - messageView->SetOnDragListener(presenter_); - - messageView->SetVisible(false); // 隐藏界面 - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowmessageView end"); - } - void MessageView::UpdataButton(int num) - { - int top = num * 240; - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "old top %d", top); - top > 466 ? top += 130 : top -= 100; - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new top %d", top); - DeleteButton->SetPosition(43, top); - } - /*控制显示界面*/ - void MessageView::SetPopupViewStatus(PopupMessage view, bool status) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetPopupViewStatus %d", view); - - if (view == PopupMessage::LackPopup) - { - MessageModel::GetInstance().SetPopupViewState(false); // 设置状态为无消息 - lackView->SetVisible(true); // 隐藏界面 - messageView->SetVisible(false); // 隐藏界面 - } - else if (view == PopupMessage::MessagePopup) - { - MessageModel::GetInstance().SetPopupViewState(true); // 设置状态为有消息 - lackView->SetVisible(false); // 隐藏界面 - messageView->SetVisible(true); // 隐藏界面 - } - } - - /// @brief 页面启动时需要执行的代码逻辑 - void MessageView::OnStart() - { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartResultView::OnStart"); - View::OnStart(); - - // SetContainerView(new UIScrollView()); - container_ = new UIScrollView(); - container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight()); - container_->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT); - container_->SetOnDragListener(presenter_); - container_->SetTouchable(true); - container_->SetDraggable(true); - // container_->SetFullScreenBlur(true); // 设置高斯模糊 - - ShowLackView(); - ShowMessageView(); - PreLoad(); - - SetContainerView(container_); - - RootView::GetInstance()->SetOnKeyActListener(presenter_); - } - void MessageView::AddMessageToList(const MessageListItem &item) - { - p_MessageListAdapter->AddListItem(item); - } - // 获取列表 - UIList *MessageView::GetList() - { - return MessageList; - } - /// @brief 创建页面的视图 - void MessageView::OnSetUpView() - { - View::OnSetUpView(); - if (MessageModel::GetInstance().HasDataVector()) - { - messageView->Add(MessageList); - messageView->Add(DeleteButton); - // messageView->SetFullScreenBlur(true); - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageList is add"); - container_->Add(messageView); - // container_->SetFullScreenBlur(true); - MessageList->SetAdapter(p_MessageListAdapter); - } - Draw(); - } - - /// @brief 销毁页面的视图 - void MessageView::OnTearDownView() - { - View::OnTearDownView(); - return; - } - - /// @brief 页面结束时需要执行的销毁逻辑。 - void MessageView::OnStop() - { - View::OnStop(); - if (container_ != nullptr) - { - container_->RemoveAll(); - delete container_; - container_ = nullptr; - } - RootView::GetInstance()->RemoveAll(); - return; +#include "wearable_log.h" +namespace OHOS { +static constexpr char *lineimagePath = "/user/res/message/Line.bin"; +static constexpr char *messageimagePath = "/user/res/message/message.bin"; +static const uint32_t BACK_GROUND_COLOR = 0xfff6f6f6; +static constexpr int16_t More_LIST_POSITION_X = 43; +static constexpr int16_t More_LIST_POSITION_Y = 120; +static constexpr int16_t More_SCROLLBLANKSIZE = + 35; // 设置此滚动视图的空白大小。 +static constexpr int16 MAX_SCR_DIS = 1000; +static constexpr int16 LIST_POS = 20; +static constexpr int16 SNUM_2 = 2; +static constexpr uint8_t NUM_2 = 2; + +static MessageView *g_pMessageView{nullptr}; + +MessageView::MessageView() { + // SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION); + g_pMessageView = this; +} + +MessageView::~MessageView() { + if (viewInitStatus == true) { + DeInitView(); + } + // UIViewGroup *tmpGroup = dynamic_cast(container_); + // UIViewGroup::RemoveAndDeleteAllRecursively(tmpGroup); + + g_pMessageView = nullptr; +} + +MessageView *MessageView::GetInstance() { return g_pMessageView; } +void MessageView::InitView() { + // 展示界面 + if (MessageModel::GetInstance().HasDataVector()) { + printf("存在数据!\r\n"); + SetPopupViewStatus(PopupMessage::MessagePopup, true); + } else { + printf("不存在数据!\r\n"); + SetPopupViewStatus(PopupMessage::LackPopup, true); + } +} +void MessageView::DeInitView() { + // 移除视图中的所有子项 + if (lackView) { + lackView->RemoveAll(); + } + + if (messageView) { + messageView->RemoveAll(); + } + + if (p_MessageListAdapter) { + delete p_MessageListAdapter; + p_MessageListAdapter = nullptr; + } + + if (MessageList) { + MessageList->RemoveAll(); + delete MessageList; + MessageList = nullptr; + } + + // 删除所有标签和图像指针,确保指针非空 + if (labeltitle) { + delete labeltitle; + labeltitle = nullptr; + } + + if (labelmeage) { + delete labelmeage; + labelmeage = nullptr; + } + + if (imageline) { + delete imageline; + imageline = nullptr; + } + + if (imageline2) { + delete imageline2; + imageline2 = nullptr; + } + + if (imagemeage) { + delete imagemeage; + imagemeage = nullptr; + } + + if (lackView) { + delete lackView; + lackView = nullptr; + } + + if (messageView) { + delete messageView; + messageView = nullptr; + } +} + +void MessageView::PreLoad(void) { + if (!viewInitStatus) { + InitView(); + viewInitStatus = true; + } +} + +/*无数据界面*/ +void MessageView::ShowLackView() { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowLackView start"); + lackView = new UIScrollView(); + if (lackView == nullptr) { + return; + } + lackView->SetPosition(0, 0); + lackView->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION); + lackView->SetScrollBlankSize(20); + lackView->SetReboundSize(50); + lackView->SetDirection(1); + /*初始化label*/ + InitLabelExt(labeltitle, 83, 50, 300, 35, "labletitle", + STR_MESSAGE_NOTIFICATION, DEFAULT_VECTOR_FONT_FILENAME, 30); + InitLabelExt(labelmeage, 53, 276, 360, 40, "labelMessage", STR_MESSAGENO, + DEFAULT_VECTOR_FONT_FILENAME, 30); + labelmeage->SetTextColor(Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff)); + /*初始化image*/ + InitImageView(imageline, 193, 30, 365, 35, "image", lineimagePath); + InitImageView(imagemeage, 183, 156, 100, 100, "image", messageimagePath); + + lackView->Add(imageline); + lackView->Add(imagemeage); + lackView->Add(labeltitle); + lackView->Add(labelmeage); + + container_->Add(lackView); + lackView->SetDraggable(true); + lackView->SetTouchable(true); + + lackView->SetOnDragListener(presenter_); + + lackView->SetVisible(false); // 界面隐藏 + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowLackView end"); +} + +/*数据界面*/ +void MessageView::ShowMessageView() { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowmessageView start"); + messageView = new UIScrollView(); + if (messageView == nullptr) { + return; + } + messageView->SetPosition(0, 0); + messageView->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION); + messageView->SetHorizontalScrollState(false); // 设置横向不可以滚动 + messageView->SetDirection(0); + messageView->SetVerticalScrollState(false); // 禁止垂直滑动 + + InitImageView(imageline2, 193, 30, 80, 8, "image", lineimagePath); + messageView->Add(imageline2); + + // UIList 的适配器 + if (p_MessageListAdapter == nullptr) { + p_MessageListAdapter = new MessageListAdapter(); + } + + p_MessageListAdapter->SetItemClickListener(presenter_); + if (MessageList == nullptr) { + MessageList = new UIList(); + } + // MessageList->SetPosition(More_LIST_POSITION_X, More_LIST_POSITION_Y, 466, + // 466); + MessageList->SetPosition(43, 95, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION); + MessageList->SetScrollStateListener(this); + MessageList->SetThrowDrag(true); + MessageList->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT); + MessageList->SetMaxScrollDistance(1000); + MessageList->SetSwipeACCLevel(800); + MessageList->SetDragACCLevel(5); + MessageList->SetIntercept(true); + + MessageList->SetOnClickListener(presenter_); + messageView->SetOnDragListener(presenter_); + + messageView->SetVisible(false); // 隐藏界面 + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowmessageView end"); +} + +/*控制显示界面*/ +void MessageView::SetPopupViewStatus(PopupMessage view, bool status) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetPopupViewStatus %d", view); + + if (view == PopupMessage::LackPopup) { + MessageModel::GetInstance().SetPopupViewState(false); // 设置状态为无消息 + lackView->SetVisible(true); // 隐藏界面 + messageView->SetVisible(false); // 隐藏界面 + } else if (view == PopupMessage::MessagePopup) { + MessageModel::GetInstance().SetPopupViewState(true); // 设置状态为有消息 + lackView->SetVisible(false); // 隐藏界面 + messageView->SetVisible(true); // 隐藏界面 + } +} + +/// @brief 页面启动时需要执行的代码逻辑 +void MessageView::OnStart() { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartResultView::OnStart"); + View::OnStart(); + + // SetContainerView(new UIScrollView()); + container_ = new UIScrollView(); + container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), + Screen::GetInstance().GetHeight()); + container_->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT); + container_->SetOnDragListener(presenter_); + container_->SetTouchable(true); + container_->SetDraggable(true); + // container_->SetFullScreenBlur(true); // 设置高斯模糊 + ShowMessageView(); + ShowLackView(); + + PreLoad(); + SetContainerView(container_); + + RootView::GetInstance()->SetOnKeyActListener(presenter_); +} +void MessageView::AddMessageToList(const MessageListItem &item) { + p_MessageListAdapter->AddListItem(item); +} +// 获取列表 +UIList *MessageView::GetList() { return MessageList; } +/// @brief 创建页面的视图 +void MessageView::OnSetUpView() { + View::OnSetUpView(); + if (MessageModel::GetInstance().HasDataVector()) { + messageView->Add(MessageList); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageList is add"); + container_->Add(messageView); + if (p_MessageListAdapter) { + MessageList->SetAdapter(p_MessageListAdapter); } -} \ No newline at end of file + } + Draw(); +} + +/// @brief 销毁页面的视图 +void MessageView::OnTearDownView() { + View::OnTearDownView(); + return; +} + +/// @brief 页面结束时需要执行的销毁逻辑。 +void MessageView::OnStop() { + View::OnStop(); + if (container_ != nullptr) { + container_->RemoveAll(); + delete container_; + container_ = nullptr; + } + RootView::GetInstance()->RemoveAll(); + return; +} +} // namespace OHOS \ No newline at end of file -- 2.17.1