#87 消息实现动态刷新
authorCaisking <3449750381@qq.com>
Thu, 25 Jul 2024 07:58:02 +0000 (15:58 +0800)
committerCaisking <3449750381@qq.com>
Thu, 25 Jul 2024 07:58:02 +0000 (15:58 +0800)
code/sdk/application/wearable/fd230app/nativeui/message/include/MessageCardView.h
code/sdk/application/wearable/fd230app/nativeui/message/include/MessageControlView.h
code/sdk/application/wearable/fd230app/nativeui/message/include/MessageModel.h
code/sdk/application/wearable/fd230app/nativeui/message/src/MessageCardView.cpp
code/sdk/application/wearable/fd230app/nativeui/message/src/MessageControlView.cpp
code/sdk/application/wearable/fd230app/nativeui/message/src/MessageModel.cpp
code/sdk/application/wearable/fd230app/nativeui/uiservice/include/ui_service.h
code/sdk/application/wearable/fd230app/nativeui/uiservice/src/ui_service.cpp
code/sdk/application/wearable/service/msg_center/src/notify/message_notification.cpp

index 6b65091..25ca110 100644 (file)
@@ -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);
index 6b63f40..16b411a 100644 (file)
@@ -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);
     };
index b68cccf..013d64c 100644 (file)
@@ -50,6 +50,7 @@ namespace OHOS
         void SetPopupViewState(bool state);                 // 设置弹出视图状态
         bool GetPopupViewState();                           // 获取弹出视图状态
         bool HasDataVector();                               // 判断数组是否存在数据
+        void UpdateMessageView();
 
     private:
         MessageModel &operator=(const MessageModel &);
index 4161e24..e4f57fd 100644 (file)
@@ -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()
     {
index 336a09d..e6f4d07 100644 (file)
@@ -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);
index f27f942..cd71660 100644 (file)
 #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");
+        }
+    }
 
 }
 
index bc5ac2a..f9d870a 100644 (file)
@@ -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,//更新用户问题的字符串       
index 0393384..d5aa750 100644 (file)
@@ -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
 }
index af2680f..7cb1864 100644 (file)
@@ -51,6 +51,7 @@ namespace OHOS
         if (strcmp(view.GetViewId(), DELETEBUTTON) == 0)
         {
             NotificationManager::GetInstance()->StopNotify();
+            // 点击关闭之后通知list进行刷新
             SendMsgToUIService(UI_UPDATE_MESSAGE_DATA, 0, nullptr, 0);
         }