From: Caisking Date: Tue, 14 Oct 2025 03:07:41 +0000 (+0800) Subject: 修复消息Slice进入无法刷新的问题 X-Git-Tag: V1.0.9_20251128_194606_LN~212^2~28 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=1a9d909035cf2fcf6d7e4c44ccc52ba802e6ca18;p=mirrors%2FFD230.git 修复消息Slice进入无法刷新的问题 --- diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/message/include/MessageView.h b/code/sdk/application/wearable/fd230/nativeapp/nativeui/message/include/MessageView.h index 9c03f05b9..79abd45ae 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/message/include/MessageView.h +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/message/include/MessageView.h @@ -51,6 +51,8 @@ namespace OHOS bool SetupViewPage(MessageView *messageView); void UpdataButton(int num); + void RefreshMessageList(const MessageListItem *itemInfo); + private: /*无消息界面*/ UIScrollView *lackView{nullptr}; diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/message/src/MessagePresenter.cpp b/code/sdk/application/wearable/fd230/nativeapp/nativeui/message/src/MessagePresenter.cpp index a1ba5f1fc..7e192924c 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/message/src/MessagePresenter.cpp +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/message/src/MessagePresenter.cpp @@ -52,6 +52,12 @@ namespace OHOS { model->InitMessageListItems(); Presenter::OnStart(); + + if(view_ != nullptr) + { + const MessageListItem *itemInfo = model->GetMessageListItems(); + view_->RefreshMessageList(itemInfo); + } } void MessagePresenter::OnPause(void) diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/message/src/MessageView.cpp b/code/sdk/application/wearable/fd230/nativeapp/nativeui/message/src/MessageView.cpp index f43360030..a1650787b 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/message/src/MessageView.cpp +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/message/src/MessageView.cpp @@ -218,6 +218,17 @@ void MessageView::AddMessageToList(const MessageListItem &item) { } // 获取列表 UIList *MessageView::GetList() { return MessageList; } -/// @brief 创建页面的视图 + + +void MessageView::RefreshMessageList(const MessageListItem *itemInfo) { + for (uint8_t i = 0; i < MessageModel::GetInstance().GetMessageListNum(); + i++) { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, + "SettingPresenter::OnStart itemInfo[i].itemName:%d", i); + AddMessageToList(itemInfo[i]); + } + MessageList->SetAdapter(p_MessageListAdapter); + MessageList->RefreshList(); +} } // namespace OHOS \ No newline at end of file diff --git a/code/sdk/application/wearable/fd272/nativeapp/nativeui/message/include/MessageView.h b/code/sdk/application/wearable/fd272/nativeapp/nativeui/message/include/MessageView.h index 9c03f05b9..79abd45ae 100644 --- a/code/sdk/application/wearable/fd272/nativeapp/nativeui/message/include/MessageView.h +++ b/code/sdk/application/wearable/fd272/nativeapp/nativeui/message/include/MessageView.h @@ -51,6 +51,8 @@ namespace OHOS bool SetupViewPage(MessageView *messageView); void UpdataButton(int num); + void RefreshMessageList(const MessageListItem *itemInfo); + private: /*无消息界面*/ UIScrollView *lackView{nullptr}; diff --git a/code/sdk/application/wearable/fd272/nativeapp/nativeui/message/src/MessagePresenter.cpp b/code/sdk/application/wearable/fd272/nativeapp/nativeui/message/src/MessagePresenter.cpp index a1ba5f1fc..7e192924c 100644 --- a/code/sdk/application/wearable/fd272/nativeapp/nativeui/message/src/MessagePresenter.cpp +++ b/code/sdk/application/wearable/fd272/nativeapp/nativeui/message/src/MessagePresenter.cpp @@ -52,6 +52,12 @@ namespace OHOS { model->InitMessageListItems(); Presenter::OnStart(); + + if(view_ != nullptr) + { + const MessageListItem *itemInfo = model->GetMessageListItems(); + view_->RefreshMessageList(itemInfo); + } } void MessagePresenter::OnPause(void) diff --git a/code/sdk/application/wearable/fd272/nativeapp/nativeui/message/src/MessageView.cpp b/code/sdk/application/wearable/fd272/nativeapp/nativeui/message/src/MessageView.cpp index f43360030..90bfeab4a 100644 --- a/code/sdk/application/wearable/fd272/nativeapp/nativeui/message/src/MessageView.cpp +++ b/code/sdk/application/wearable/fd272/nativeapp/nativeui/message/src/MessageView.cpp @@ -6,218 +6,229 @@ * /FD230/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageView.cpp */ -#include "message/include/MessageView.h" -#include "message/include/MessageModel.h" -#include "message/include/MessagePresenter.h" - -#include "UiConfig.h" -#include "uicomponents/UIComponents.h" -#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() { g_pMessageView = this; } - -MessageView::~MessageView() { - g_pMessageView = nullptr; - DeInitView(); -} - -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 (labeltitle) { - delete labeltitle; - labeltitle = nullptr; - } - if (labelmeage) { - delete labelmeage; - labelmeage = nullptr; - } - if (imageline) { - delete imageline; - imageline = nullptr; - } - if (imagemeage) { - delete imagemeage; - imagemeage = nullptr; - } - delete lackView; - lackView = nullptr; - } - if (messageView) { - messageView->RemoveAll(); - if (p_MessageListAdapter) { - delete p_MessageListAdapter; - p_MessageListAdapter = nullptr; - } - if (MessageList) { - delete MessageList; - MessageList = nullptr; - } - if (imageline2) { - delete imageline2; - imageline2 = nullptr; - } - delete messageView; - messageView = nullptr; - } -} - -void MessageView::PreLoad(void) { - if (!viewInitStatus) { - InitView(); - viewInitStatus = true; - } -} - -/*无数据界面*/ -void MessageView::ShowLackView() { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowLackView start"); - if (lackView == nullptr) { - 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); - lackView->SetViewId("lackView"); - - /*初始化label*/ - InitRollLabel(labeltitle, 83, 50, 300, 35, "labletitle", - STR_MESSAGE_NOTIFICATION, DEFAULT_VECTOR_FONT_FILENAME, 30); - InitRollLabel(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); - - AddViewToRootContainer(lackView); - lackView->SetDraggable(true); - lackView->SetTouchable(true); - - lackView->SetOnDragListener(presenter_); - - lackView->SetVisible(false); // 界面隐藏 - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowLackView end"); -} - -/*数据界面*/ -void MessageView::ShowMessageView() { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowmessageView start"); - if (messageView == nullptr) { - 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); // 禁止垂直滑动 - messageView->SetViewId("messageView"); - - 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(43, 95, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION); - MessageList->SetScrollStateListener(this); - MessageList->SetThrowDrag(true); - MessageList->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT); - MessageList->SetMaxScrollDistance(1000); - MessageList->SetSwipeACCLevel(200); - MessageList->SetDragACCLevel(5); - MessageList->SetIntercept(true); - - MessageList->SetOnClickListener(presenter_); - messageView->SetOnDragListener(presenter_); - - messageView->Add(MessageList); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MessageList is add"); - AddViewToRootContainer(messageView); - - messageView->SetVisible(false); // 隐藏界面 - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowmessageView end"); -} - -/*控制显示界面*/ -void MessageView::SetPopupViewStatus(PopupMessage view, bool status) { - WEARABLE_LOGD(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(); - - ShowMessageView(); - ShowLackView(); - PreLoad(); - - if (MessageModel::GetInstance().HasDataVector()) { - if (p_MessageListAdapter) { - MessageList->SetAdapter(p_MessageListAdapter); - } - } -} -void MessageView::AddMessageToList(const MessageListItem &item) { - p_MessageListAdapter->AddListItem(item); -} -// 获取列表 -UIList *MessageView::GetList() { return MessageList; } -/// @brief 创建页面的视图 - -} // namespace OHOS \ No newline at end of file + #include "message/include/MessageView.h" + #include "message/include/MessageModel.h" + #include "message/include/MessagePresenter.h" + + #include "UiConfig.h" + #include "uicomponents/UIComponents.h" + #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() { g_pMessageView = this; } + + MessageView::~MessageView() { + g_pMessageView = nullptr; + DeInitView(); + } + + 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 (labeltitle) { + delete labeltitle; + labeltitle = nullptr; + } + if (labelmeage) { + delete labelmeage; + labelmeage = nullptr; + } + if (imageline) { + delete imageline; + imageline = nullptr; + } + if (imagemeage) { + delete imagemeage; + imagemeage = nullptr; + } + delete lackView; + lackView = nullptr; + } + if (messageView) { + messageView->RemoveAll(); + if (p_MessageListAdapter) { + delete p_MessageListAdapter; + p_MessageListAdapter = nullptr; + } + if (MessageList) { + delete MessageList; + MessageList = nullptr; + } + if (imageline2) { + delete imageline2; + imageline2 = nullptr; + } + delete messageView; + messageView = nullptr; + } + } + + void MessageView::PreLoad(void) { + if (!viewInitStatus) { + InitView(); + viewInitStatus = true; + } + } + + /*无数据界面*/ + void MessageView::ShowLackView() { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowLackView start"); + if (lackView == nullptr) { + 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); + lackView->SetViewId("lackView"); + + /*初始化label*/ + InitRollLabel(labeltitle, 83, 50, 300, 35, "labletitle", + STR_MESSAGE_NOTIFICATION, DEFAULT_VECTOR_FONT_FILENAME, 30); + InitRollLabel(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); + + AddViewToRootContainer(lackView); + lackView->SetDraggable(true); + lackView->SetTouchable(true); + + lackView->SetOnDragListener(presenter_); + + lackView->SetVisible(false); // 界面隐藏 + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowLackView end"); + } + + /*数据界面*/ + void MessageView::ShowMessageView() { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowmessageView start"); + if (messageView == nullptr) { + 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); // 禁止垂直滑动 + messageView->SetViewId("messageView"); + + 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(43, 95, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION); + MessageList->SetScrollStateListener(this); + MessageList->SetThrowDrag(true); + MessageList->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT); + MessageList->SetMaxScrollDistance(1000); + MessageList->SetSwipeACCLevel(200); + MessageList->SetDragACCLevel(5); + MessageList->SetIntercept(true); + + MessageList->SetOnClickListener(presenter_); + messageView->SetOnDragListener(presenter_); + + messageView->Add(MessageList); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MessageList is add"); + AddViewToRootContainer(messageView); + + messageView->SetVisible(false); // 隐藏界面 + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowmessageView end"); + } + + /*控制显示界面*/ + void MessageView::SetPopupViewStatus(PopupMessage view, bool status) { + WEARABLE_LOGD(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(); + + ShowMessageView(); + ShowLackView(); + PreLoad(); + + if (MessageModel::GetInstance().HasDataVector()) { + if (p_MessageListAdapter) { + MessageList->SetAdapter(p_MessageListAdapter); + } + } + } + + void MessageView::AddMessageToList(const MessageListItem &item) { + p_MessageListAdapter->AddListItem(item); + } + // 获取列表 + UIList *MessageView::GetList() { return MessageList; } + + + void MessageView::RefreshMessageList(const MessageListItem *itemInfo) { + for (uint8_t i = 0; i < MessageModel::GetInstance().GetMessageCount(); + i++) { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, + "MessageView::RefreshMessageList itemInfo[i].itemName:%d", i); + AddMessageToList(itemInfo[i]); + } + MessageList->SetAdapter(p_MessageListAdapter); + MessageList->RefreshList(); + } + } // namespace OHOS \ No newline at end of file diff --git a/code/sdk/application/wearable/n9/nativeapp/nativeui/message/include/MessageView.h b/code/sdk/application/wearable/n9/nativeapp/nativeui/message/include/MessageView.h index 9c03f05b9..79abd45ae 100644 --- a/code/sdk/application/wearable/n9/nativeapp/nativeui/message/include/MessageView.h +++ b/code/sdk/application/wearable/n9/nativeapp/nativeui/message/include/MessageView.h @@ -51,6 +51,8 @@ namespace OHOS bool SetupViewPage(MessageView *messageView); void UpdataButton(int num); + void RefreshMessageList(const MessageListItem *itemInfo); + private: /*无消息界面*/ UIScrollView *lackView{nullptr}; diff --git a/code/sdk/application/wearable/n9/nativeapp/nativeui/message/src/MessagePresenter.cpp b/code/sdk/application/wearable/n9/nativeapp/nativeui/message/src/MessagePresenter.cpp index a1ba5f1fc..7e192924c 100644 --- a/code/sdk/application/wearable/n9/nativeapp/nativeui/message/src/MessagePresenter.cpp +++ b/code/sdk/application/wearable/n9/nativeapp/nativeui/message/src/MessagePresenter.cpp @@ -52,6 +52,12 @@ namespace OHOS { model->InitMessageListItems(); Presenter::OnStart(); + + if(view_ != nullptr) + { + const MessageListItem *itemInfo = model->GetMessageListItems(); + view_->RefreshMessageList(itemInfo); + } } void MessagePresenter::OnPause(void) diff --git a/code/sdk/application/wearable/n9/nativeapp/nativeui/message/src/MessageView.cpp b/code/sdk/application/wearable/n9/nativeapp/nativeui/message/src/MessageView.cpp index f43360030..1a10bafd3 100644 --- a/code/sdk/application/wearable/n9/nativeapp/nativeui/message/src/MessageView.cpp +++ b/code/sdk/application/wearable/n9/nativeapp/nativeui/message/src/MessageView.cpp @@ -213,11 +213,22 @@ void MessageView::OnStart() { } } } + void MessageView::AddMessageToList(const MessageListItem &item) { p_MessageListAdapter->AddListItem(item); } // 获取列表 UIList *MessageView::GetList() { return MessageList; } -/// @brief 创建页面的视图 + +void MessageView::RefreshMessageList(const MessageListItem *itemInfo) { + for (uint8_t i = 0; i < MessageModel::GetInstance().GetMessageCount(); + i++) { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, + "MessageView::RefreshMessageList itemInfo[i].itemName:%d", i); + AddMessageToList(itemInfo[i]); + } + MessageList->SetAdapter(p_MessageListAdapter); + MessageList->RefreshList(); +} } // namespace OHOS \ No newline at end of file