增加主界面消息列表点击详情
authorCaisking <3449750381@qq.com>
Sat, 22 Jun 2024 10:01:38 +0000 (18:01 +0800)
committerCaisking <3449750381@qq.com>
Sat, 22 Jun 2024 10:01:38 +0000 (18:01 +0800)
code/sdk/application/wearable/CustomUIComponentTool/uicomponents/UIComponents.cpp
code/sdk/application/wearable/fd230app/CMakeLists.txt
code/sdk/application/wearable/fd230app/nativeui/message/include/MessageCardView.h
code/sdk/application/wearable/fd230app/nativeui/message/include/MessageControlPresenter.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/message/src/MessageCardView.cpp
code/sdk/application/wearable/fd230app/nativeui/message/src/MessageControlPresenter.cpp [new file with mode: 0644]
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/message/src/MessagePresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/message/src/MessageShowView.cpp

index 5d7d0da..e8d5680 100644 (file)
@@ -134,7 +134,7 @@ namespace OHOS
         button->SetStyleForState(STYLE_BACKGROUND_COLOR, DEFAULT_BACKGROUND_COLOR, UIButton::PRESSED);
         button->SetStyleForState(STYLE_BORDER_COLOR, PRESSED_BORDER_COLOR, UIButton::PRESSED);
         button->SetVisible(true);
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitButton is succeed");
+        // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitButton is succeed");
         return true;
     }
     /* -------------------------------------------------------------------------- */
index 880e468..c7393c3 100644 (file)
@@ -511,6 +511,7 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/message/src/MessageCardView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/message/src/MessageLackView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/message/src/MessageControlView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/message/src/MessageControlPresenter.cpp
 
     #遥控拍照
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/takephotos/src/TakephotosPresenter.cpp
index 4833ec0..6b65091 100644 (file)
@@ -1,3 +1,9 @@
+/*** 
+ * @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
@@ -30,6 +36,7 @@
 #include "message/include/MessageModel.h"
 namespace OHOS
 {
+    #define MAINMESSAGEVIEW "messagecard"
     class MessageCardView : public AppGroupView
     {
     public:
diff --git a/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageControlPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageControlPresenter.h
new file mode 100644 (file)
index 0000000..b82d73c
--- /dev/null
@@ -0,0 +1,47 @@
+/***
+ * @Date: 2024-06-22 11:36:07
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-06-22 14:57:34
+ * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageControlPresenter.h
+ */
+/***
+ * @Date: 2024-06-22 11:36:16
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-06-22 11:39:50
+ * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageControlPresenter.cpp
+ */
+
+#ifndef MESSAGE_CONTROL_PRESENTER_H
+#define MESSAGE_CONTROL_PRESENTER_H
+
+#include "Presenter.h"
+#include "components/ui_view.h"
+#include "components/ui_image_view.h"
+#include "ohos_types.h"
+#include "UiConfig.h"
+#include "AppViewIDs.h"
+#include "components/ui_label_ext.h"
+#include "language/font/ui_resource_string.h"
+#include "message/include/MessageControlView.h"
+
+namespace OHOS
+{
+    class MessageControlView;
+    class MessageControlPresenter : public UIView::OnClickListener
+    {
+    public:
+        MessageControlPresenter(){};
+        virtual ~MessageControlPresenter(){};
+        static MessageControlPresenter *GetInstance()
+        {
+            static MessageControlPresenter instance;
+            return &instance;
+        }
+
+        bool OnClick(UIView &view, const ClickEvent &event) override;
+
+    private:
+        UIView *view_{nullptr};
+    };
+}
+#endif
\ No newline at end of file
index b91bf9b..4f9742b 100644 (file)
@@ -10,6 +10,7 @@
 #include "message/include/MessageCardView.h"
 #include "message/include/MessagePresenter.h"
 #include "uicomponents/UIComponents.h"
+#include "message/include/MessageControlPresenter.h"
 namespace OHOS
 {
 
@@ -84,9 +85,16 @@ namespace OHOS
         MessageList->EnableAutoAlign(true);
         MessageList->SetElastic(true); // 设置回弹效果
         MessageList->SetMaxScrollDistance(MAX_SCR_DIS);
+        MessageList->SetViewId(MAINMESSAGEVIEW);
 
         // SetYScrollBarVisible(true); // 设置滑动滚动条
-        MessageList->SetOnClickListener(static_cast<UIView::OnClickListener *>(MessagePresenter::GetInstance()));
+        UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::MessageControlPresenter::GetInstance();
+        if (clickListener == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AddButton::OnStart clickListener NULL");
+            return false;
+        }
+        MessageList->SetOnClickListener(clickListener);
         UIView::OnDragListener *Messagedraglistener = static_cast<UIView::OnDragListener *>(MessagePresenter::GetInstance());
 #if 0
         /*删除按键*/
diff --git a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageControlPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageControlPresenter.cpp
new file mode 100644 (file)
index 0000000..aa123a7
--- /dev/null
@@ -0,0 +1,82 @@
+/***
+ * @Date: 2024-04-15 10:55:58
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-04-16 17:36:17
+ * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/message/training_card/src/MessageControlPresenter.cpp
+ */
+
+#include "message/include/MessageControlPresenter.h"
+#include "message/include/MessageControlView.h"
+#include "message/include/MessageModel.h"
+
+#include "AppViewIDs.h"
+#include "components/ui_label_ext.h"
+#include "language/font/ui_resource_string.h"
+#include "NativeAbility.h"
+#include "components/ui_label_ext.h"
+#include "language/font/ui_resource_string.h"
+#include "UiConfig.h"
+#include "wearable_log.h"
+
+#include "uicomponents/UIComponents.h"
+
+namespace OHOS
+{
+    bool MessageControlPresenter::OnClick(UIView &view, const ClickEvent &event)
+    {
+        UNUSED(event);
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageControlView::OnClick %s", view.GetViewId());
+        if (strcmp(view.GetViewId(), MAINMESSAGEVIEW) != 0)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Error: View is not List");
+            return false;
+        }
+        
+        if (!MessageModel::GetInstance().GetJsonLoadStatus())
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Error: Json data not loaded.");
+            return false;
+        }
+
+        // 获取 MessageItemView 并检查索引
+        MessageItemView *p_MessageItemView = static_cast<MessageItemView *>(&view);
+        if (!p_MessageItemView)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Error: Invalid view type.");
+            return false;
+        }
+        MessageCardView::GetInstance()->GetList()->GetViewIndex();
+        int index = p_MessageItemView->GetMessageListIndex();
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "index is %d", index);
+        // 读取json数据
+        std::vector<MessageData> messageDataVector = MessageModel::GetInstance().LoadMessageData();
+
+        if (messageDataVector.empty())
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Error: messageDataVector is empty");
+            return false;
+        }
+
+        if (index < 0)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Error: Invalid index (index < 0)");
+            return false;
+        }
+
+        if (index >= messageDataVector.size())
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Error: Invalid index (index out of range)");
+            return false;
+        }
+
+        int arraynum = messageDataVector.size() - 1;
+        MessageData &messageData = messageDataVector[arraynum - index];
+
+        MessageModel::GetInstance().SetCurrentMessageData(&messageData);
+        MessageModel::GetInstance().SetCurrentIndex(arraynum - index);
+        // 切换到详情界面
+        NativeAbility::GetInstance().ChangeSlice(VIEW_MESSAGE_SHOW);
+
+        return true; // 返回 true 表示点击事件处理成功
+    }
+} // namespace OHOS
\ No newline at end of file
index 938ac9a..13f0c57 100644 (file)
@@ -6,6 +6,7 @@
  */
 #include "message/include/MessageControlView.h"
 #include "message/include/MessageModel.h"
+#include"message/include/MessageControlPresenter.h"
 #include "wearable_log.h"
 
 namespace OHOS
index 9ecef03..ebbcb89 100644 (file)
@@ -1,4 +1,10 @@
-/***
+/*
+ * @Date: 2024-06-21 09:56:18
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-06-22 15:32:37
+ * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageModel.cpp
+ */
+/*
  * @Author: Caisking 3449750381@qq.com
  * @Date: 2024-01-29 19:58:37
  * @LastEditors: Caisking 3449750381@qq.com
@@ -115,7 +121,7 @@ namespace OHOS
 
             // 这里根据解析的 JSON 数据类型修改 messagedata.isRead 的精确类型
             messagedata.isRead = cJSON_GetObjectItem(item, "read")->valueint;
-            PrintData(messagedata);
+            // PrintData(messagedata);
             MessageVector.push_back(messagedata);
         }
         cJSON_Delete(root);
@@ -158,12 +164,12 @@ namespace OHOS
     }
     void MessageModel::PrintData(MessageData messagedata)
     {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "**************************************");
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "--------------------------------------");
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Message Title: %s", (messagedata.labelTitle).c_str());
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Message Details: %s", (messagedata.labelDetails).c_str());
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Message Time: %s", (messagedata.labelTime).c_str());
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Message Read: %d", messagedata.isRead);
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "**************************************");
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "--------------------------------------");
     }
     void MessageModel::InitMessageListItems()
     {
@@ -180,7 +186,7 @@ namespace OHOS
                 messageData.labelTitle = messageVector[i].labelTitle;
                 messageData.labelDetails = messageVector[i].labelDetails;
                 messageData.labelTime = messageVector[i].labelTime;
-                PrintData(messageData);
+                // PrintData(messageData);
                 // 获取是否读取 来信 信息内容 时间
                 Messages[count] = {count, messageData.isRead, messageData.labelTitle, messageData.labelDetails, messageData.labelTime};
             }
@@ -210,6 +216,7 @@ namespace OHOS
     // 获取目前的message
     MessageData *MessageModel::GetCurrentMessageData()
     {
+        PrintData(message_);
         return &message_;
     }
     // 设置目前的message
index 4199190..5d9abf3 100644 (file)
@@ -115,21 +115,46 @@ namespace OHOS
                 return true;
             }
             /* -------------------------------------------------------------------------- */
+            // 获取 MessageItemView 并检查索引
             MessageItemView *p_MessageItemView = static_cast<MessageItemView *>(&view);
+            if (!p_MessageItemView)
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Error: Invalid view type.");
+                return false;
+            }
+
             int index = p_MessageItemView->GetMessageListIndex();
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "the index is %d", index);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "index is %d", index);
             // 读取json数据
             std::vector<MessageData> messageDataVector = MessageModel::GetInstance().LoadMessageData();
-            if (!messageDataVector.empty())
+
+            if (messageDataVector.empty())
             {
-                // 选择点击按键的历史数据
-                int arraynum = messageDataVector.size() - 1;
-                MessageData messageData = messageDataVector[arraynum - index]; // 显示是倒序 id同理
-                MessageModel::GetInstance().SetCurrentMessageData(&messageData);
-                MessageModel::GetInstance().SetCurrentIndex(arraynum - index);
-                NativeAbility::GetInstance().ChangeSlice(VIEW_MESSAGE_SHOW);
-                return true;
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Error: messageDataVector is empty");
+                return false;
+            }
+
+            if (index < 0)
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Error: Invalid index (index < 0)");
+                return false;
+            }
+
+            if (index >= messageDataVector.size())
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Error: Invalid index (index out of range)");
+                return false;
             }
+
+            int arraynum = messageDataVector.size() - 1;
+            MessageData &messageData = messageDataVector[arraynum - index];
+
+            MessageModel::GetInstance().SetCurrentMessageData(&messageData);
+            MessageModel::GetInstance().SetCurrentIndex(arraynum - index);
+            // 切换到详情界面
+            NativeAbility::GetInstance().ChangeSlice(VIEW_MESSAGE_SHOW);
+
+            return true; // 返回 true 表示点击事件处理成功
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "the messageDataVector is error");
         }
         return true;
index 261cad3..bee94e8 100644 (file)
@@ -42,7 +42,7 @@ namespace OHOS
     std::string messageStr = "【铁路12306】系统已自动为您生成订单EC09828333,04月23日G2231次,深圳北站13:31开。请您在2小时内完成支付。您可通过以下链接进行支付。https://www.12306.cn/index/";
 #endif
     std::string titleStr, timeStr, messageStr;
-    
+
     MessageShowView::MessageShowView()
     {
         g_pMessageShowView = this;
@@ -131,7 +131,7 @@ namespace OHOS
     }
     void MessageShowView::InitView()
     {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitView");
+        // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitView");
         /* -------------------------------------------------------------------------- */
         title = new UILabel();
         if (title == nullptr)
@@ -146,7 +146,6 @@ namespace OHOS
         title->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
         title->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
         title->SetVisible(true);
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "title is ok!");
         /* -------------------------------------------------------------------------- */
         time = new UILabel();
         if (time == nullptr)
@@ -163,21 +162,17 @@ namespace OHOS
         time->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS);
         time->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
         time->SetVisible(true);
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "time is ok!");
         /* -------------------------------------------------------------------------- */
         /*初始化消息内容*/
         InitializeButton(messageButton, 33, 157, 380, 350, "message");
         messageButton->SetStyle(STYLE_BORDER_RADIUS, 30);
         messageButton->SetText(messageStr.c_str());
-        // messageButton->SetAlign(TEXT_ALIGNMENT_LEFT);
         messageButton->SetTextColor(Color::Gray());
         messageButton->SetTouchable(false);
         messageButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "messageButton");
         /*加载清除按键*/
-        InitButtonExt(deleteButton, 43, 527, 380, 100, DELETEBUTTON, STR_CLOSE, 30);
+        InitButtonExt(deleteButton, 43, 527, 380, 100, DELETEBUTTON, STR_CLEAN, 30);
         deleteButton->SetOnClickListener(static_cast<UIView::OnClickListener *>(MessageShowPresenter::GetInstance()));
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "deleteButton");
         /* -------------------------------------------------------------------------- */
         container_->Add(title);
         container_->Add(time);
@@ -213,7 +208,7 @@ namespace OHOS
 
     void MessageShowView::OnStart()
     {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnStart");
+        // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnStart");
         container_ = new UIScrollView();
         if (container_ == nullptr)
         {