From 83d5f46fdf217e74098bfefc5dc23d45a4fe037b Mon Sep 17 00:00:00 2001 From: Caisking <3449750381@qq.com> Date: Sat, 22 Jun 2024 18:01:38 +0800 Subject: [PATCH] =?utf8?q?=E5=A2=9E=E5=8A=A0=E4=B8=BB=E7=95=8C=E9=9D=A2?= =?utf8?q?=E6=B6=88=E6=81=AF=E5=88=97=E8=A1=A8=E7=82=B9=E5=87=BB=E8=AF=A6?= =?utf8?q?=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../uicomponents/UIComponents.cpp | 2 +- .../wearable/fd230app/CMakeLists.txt | 1 + .../message/include/MessageCardView.h | 7 ++ .../message/include/MessageControlPresenter.h | 47 +++++++++++ .../nativeui/message/src/MessageCardView.cpp | 10 ++- .../message/src/MessageControlPresenter.cpp | 82 +++++++++++++++++++ .../message/src/MessageControlView.cpp | 1 + .../nativeui/message/src/MessageModel.cpp | 17 ++-- .../nativeui/message/src/MessagePresenter.cpp | 43 ++++++++-- .../nativeui/message/src/MessageShowView.cpp | 13 +-- 10 files changed, 198 insertions(+), 25 deletions(-) create mode 100644 code/sdk/application/wearable/fd230app/nativeui/message/include/MessageControlPresenter.h create mode 100644 code/sdk/application/wearable/fd230app/nativeui/message/src/MessageControlPresenter.cpp diff --git a/code/sdk/application/wearable/CustomUIComponentTool/uicomponents/UIComponents.cpp b/code/sdk/application/wearable/CustomUIComponentTool/uicomponents/UIComponents.cpp index 5d7d0dae5..e8d5680b4 100644 --- a/code/sdk/application/wearable/CustomUIComponentTool/uicomponents/UIComponents.cpp +++ b/code/sdk/application/wearable/CustomUIComponentTool/uicomponents/UIComponents.cpp @@ -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; } /* -------------------------------------------------------------------------- */ diff --git a/code/sdk/application/wearable/fd230app/CMakeLists.txt b/code/sdk/application/wearable/fd230app/CMakeLists.txt index 880e46803..c7393c32d 100644 --- a/code/sdk/application/wearable/fd230app/CMakeLists.txt +++ b/code/sdk/application/wearable/fd230app/CMakeLists.txt @@ -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 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 4833ec0e7..6b650912c 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageCardView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageCardView.h @@ -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 index 000000000..b82d73caf --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/message/include/MessageControlPresenter.h @@ -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 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 b91bf9b67..4f9742bd5 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageCardView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageCardView.cpp @@ -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(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(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 index 000000000..aa123a75e --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageControlPresenter.cpp @@ -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(&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 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 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 938ac9ab5..13f0c574a 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageControlView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageControlView.cpp @@ -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 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 9ecef0304..ebbcb8995 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageModel.cpp @@ -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 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 4199190e5..5d9abf3ed 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessagePresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessagePresenter.cpp @@ -115,21 +115,46 @@ namespace OHOS return true; } /* -------------------------------------------------------------------------- */ + // 获取 MessageItemView 并检查索引 MessageItemView *p_MessageItemView = static_cast(&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 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; 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 261cad327..bee94e862 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageShowView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageShowView.cpp @@ -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(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) { -- 2.17.1