From: Caisking <3449750381@qq.com> Date: Thu, 25 Jul 2024 07:58:02 +0000 (+0800) Subject: #87 消息实现动态刷新 X-Git-Tag: release_V1.2.70_20241020_135402~748^2~6 X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=d319f174829e93a41dd29afff3536789f6d8bf2d;p=mirrors%2FFD230.git #87 消息实现动态刷新 --- 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 6b650912c..25ca11047 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageCardView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageCardView.h @@ -1,4 +1,10 @@ -/*** +/*** + * @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 @@ -36,7 +42,7 @@ #include "message/include/MessageModel.h" namespace OHOS { - #define MAINMESSAGEVIEW "messagecard" +#define MAINMESSAGEVIEW "messagecard" class MessageCardView : public AppGroupView { public: @@ -49,7 +55,8 @@ namespace OHOS bool InitView(void *caller) override; bool GetInitViewState(void); void SetUpView(MessageCardView *messageCardView); - UIList *GetList(); + void UpdateMessageCard(void); + UIList *GetList(void); private: void ClearAll(void); diff --git a/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageControlView.h b/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageControlView.h index 6b63f40a3..16b411a7d 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageControlView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageControlView.h @@ -33,12 +33,13 @@ namespace OHOS void PreLoad(void) override; void UnLoad(void) override; void SetLackView(bool flag); + private: MessageLackView *messageLackView{nullptr}; MessageCardView *messageCardView{nullptr}; bool viewiInitStatus{false}; - bool isLack{false}; + bool isLack{true}; void ClearAll(void); }; diff --git a/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageModel.h b/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageModel.h index b68cccf13..013d64cc0 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageModel.h @@ -50,6 +50,7 @@ namespace OHOS void SetPopupViewState(bool state); // 设置弹出视图状态 bool GetPopupViewState(); // 获取弹出视图状态 bool HasDataVector(); // 判断数组是否存在数据 + void UpdateMessageView(); private: MessageModel &operator=(const MessageModel &); 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 4161e243b..e4f57fd3b 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageCardView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageCardView.cpp @@ -102,13 +102,6 @@ namespace OHOS MessageList->SetAdapter(p_MessageListAdapter); MessageList->RefreshList(); - // /*删除按键*/ - // int top = MessageList->GetWidth() + 130; - // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "top %d", top); - // InitButtonExt(DeleteButton, 43, top, 380, 100, DELETEALLDATA, STR_CLEANALL, 30); - // DeleteButton->SetOnClickListener((UIView::OnClickListener *)OHOS::MessageControlPresenter::GetInstance()); - // Add(DeleteButton); - SetDraggable(false); SetTouchable(false); initViewStatus = true; @@ -154,6 +147,10 @@ namespace OHOS { messageCardView->AddMessageToList(itemInfo[i]); } + } + void MessageCardView::UpdateMessageCard() + { + } UIList *MessageCardView::GetList() { 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 336a09dae..e6f4d07b6 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageControlView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageControlView.cpp @@ -1,3 +1,21 @@ +/*** + * @Date: 2024-07-11 14:52:39 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-07-25 10:28:36 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageControlView.cpp + */ +/*** + * @Date: 2024-07-11 14:52:39 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-07-25 09:41:22 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageControlView.cpp + */ +/*** + * @Date: 2024-07-11 14:52:39 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-07-25 09:32:03 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageControlView.cpp + */ /* * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved. * Description: MessageControlView.cpp @@ -77,8 +95,9 @@ namespace OHOS } Add(messageCardView); Add(messageLackView); - uint8_t status = MessageModel::GetInstance().HasDataVector(); - if (status == 0) + + isLack = MessageModel::GetInstance().HasDataVector(); + if (!isLack) { messageCardView->SetVisible(false); messageLackView->SetVisible(true); @@ -97,7 +116,13 @@ namespace OHOS void MessageControlView::SetLackView(bool flag) { - if (flag) + // 避免相同设置多次赋值 + if (flag == isLack) + return; + + isLack = flag; + + if (isLack) { messageLackView->SetVisible(true); messageCardView->SetVisible(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 f27f942e8..cd7166094 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageModel.cpp @@ -29,6 +29,13 @@ #include "broadcast_feature.h" #include "broadcast_service.h" #include "bleANCS.h" +#include "AppViewIDs.h" +#include "NativeAbility.h" +#include "MainModel.h" +#include "MainViewSample.h" +#include "message/include/MessageCardView.h" +#include "message/include/MessageView.h" +#include "message/include/MessageControlView.h" #define MESSAGE_JSON_FILE "user/userdata/ancs.json" #define MESSAGE_JSON_DIR "user/userdata/message/" @@ -165,7 +172,7 @@ namespace OHOS // 加载Message文件 bool MessageModel::LoadMessagesFromStorage() { - //加载消息过滤文件 + // 加载消息过滤文件 filtration_file_read(); std::ifstream file(MESSAGE_JSON_FILE); if (!file.is_open()) @@ -234,7 +241,7 @@ namespace OHOS // 保存Message文件 bool MessageModel::SaveMessagesToStorage() { - //消息过滤文件保存 + // 消息过滤文件保存 filtration_file_save(); if (MessageVector.empty()) { @@ -423,6 +430,54 @@ namespace OHOS { return popupViewState_; } + void MessageModel::UpdateMessageView() + { + // 更新主界面卡片 + if (MessageControlView::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); + MainModel::GetInstance().SetFromCardId(Id); + + NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN); + return; + } + + // 更新Message界面 + auto messageView = MessageView::GetInstance(); + if (messageView) // 检查Message界面实例 + { + NativeAbility::GetInstance().ChangeSlice(VIEW_MESSAGE); + } + else + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UpdateListView: MessageView instance is nullptr"); + } + } } diff --git a/code/sdk/application/wearable/fd230app/nativeui/uiservice/include/ui_service.h b/code/sdk/application/wearable/fd230app/nativeui/uiservice/include/ui_service.h index bc5ac2a05..f9d870aea 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/uiservice/include/ui_service.h +++ b/code/sdk/application/wearable/fd230app/nativeui/uiservice/include/ui_service.h @@ -1,7 +1,7 @@ /*** * @Date: 2024-07-12 19:25:33 * @LastEditors: Caisking 3449750381@qq.com - * @LastEditTime: 2024-07-12 20:20:44 + * @LastEditTime: 2024-07-25 10:22:03 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/uiservice/include/ui_service.h */ /* @@ -75,7 +75,8 @@ typedef enum { UI_UPDATE_SILENT_MODE, //更新静音模式 UI_UPDATE_WEATHER_DATA, //天气数据更新 - UI_UPDATE_SLEEP_DATA, //睡眠数据更新 + UI_UPDATE_SLEEP_DATA, //更新睡眠数据 + UI_UPDATE_MESSAGE_DATA, //更新消息数据 UI_AI_JUMP_TO_RESULT_VIEW, //跳转到返回结果视图 UI_UPDATE_USER_QUESTION_STR,//更新用户问题的字符串 diff --git a/code/sdk/application/wearable/fd230app/nativeui/uiservice/src/ui_service.cpp b/code/sdk/application/wearable/fd230app/nativeui/uiservice/src/ui_service.cpp index 0393384c6..d5aa75079 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/uiservice/src/ui_service.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/uiservice/src/ui_service.cpp @@ -20,6 +20,7 @@ #include "soundandvibration/include/SoundAndVibrationModel.h" #include "rebootandshutdown/include/RebootAndShutdownModel.h" #include "sleep/include/SleepModel.h" +#include "message/include/MessageModel.h" #include "aivoice/include/AiVoiceModel.h" #include "weather/include/WeatherModel.h" #include "uiservice/include/ui_service.h" @@ -109,6 +110,7 @@ static void HandleUpdateUserQuestionStr(Request *request); static void HandleUpdateAIAnswerStr(Request *request); static void HandleWatchFirstPaired(Request *request); static void HandleUpdateSleep(Request *request); +static void HandleUpdateMessage(Request *request); // 消息处理程序项数组(每个消息类型对应一个处理函数,函数名以 Handle 开头) @@ -140,6 +142,7 @@ MsgHandlerEntry msgHandlers[] = { {UI_HAND_WATCH_FIRST_PAIRED,HandleWatchFirstPaired}, {UI_UPDATE_SLEEP_DATA, HandleUpdateSleep}, + {UI_UPDATE_MESSAGE_DATA, HandleUpdateMessage}, }; /* -------------------------------------------------------------------------- */ static void ScreenTurnOn(Request *request) @@ -555,13 +558,20 @@ void HandleWatchFirstPaired(Request *request) GraphicService::GetInstance()->PostGraphicEvent( std::bind(&OHOS::RebootAndShutdownModel::HandFirstTimeStartJumpToMainView, &OHOS::RebootAndShutdownModel::GetInstance())); } - +//更新睡眠数据 void HandleUpdateSleep(Request *request) { - WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleEarphoneConnected"); + WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateSleep"); GraphicService::GetInstance()->PostGraphicEvent( std::bind(&OHOS::SleepModel::UpdateSleepView, &OHOS::SleepModel::GetInstance())); } +//更新消息数据 +void HandleUpdateMessage(Request *request) +{ + WEARABLE_LOGI(WEARABLE_LOG_MODULE_UI_SERVICE, "HandleUpdateMessage"); + GraphicService::GetInstance()->PostGraphicEvent( + std::bind(&OHOS::MessageModel::UpdateMessageView, &OHOS::MessageModel::GetInstance())); +} /* -------------------------------------------------------------------------- */ #ifdef __cplusplus } diff --git a/code/sdk/application/wearable/service/msg_center/src/notify/message_notification.cpp b/code/sdk/application/wearable/service/msg_center/src/notify/message_notification.cpp index af2680f94..7cb186497 100644 --- a/code/sdk/application/wearable/service/msg_center/src/notify/message_notification.cpp +++ b/code/sdk/application/wearable/service/msg_center/src/notify/message_notification.cpp @@ -51,6 +51,7 @@ namespace OHOS if (strcmp(view.GetViewId(), DELETEBUTTON) == 0) { NotificationManager::GetInstance()->StopNotify(); + // 点击关闭之后通知list进行刷新 SendMsgToUIService(UI_UPDATE_MESSAGE_DATA, 0, nullptr, 0); }