* @Date: 2024-07-12 11:19:45
* @LastEditors: Caisking 3449750381@qq.com
* @LastEditTime: 2024-08-09 14:03:51
- * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageView.cpp
+ * @FilePath:
+ * /FD230/code/sdk/application/wearable/fd230app/nativeui/message/src/MessageView.cpp
*/
#include "message/include/MessageView.h"
-#include "message/include/MessagePresenter.h"
#include "message/include/MessageModel.h"
+#include "message/include/MessagePresenter.h"
#include "UiConfig.h"
-#include "wearable_log.h"
#include "uicomponents/UIComponents.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()
- {
- // SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
- g_pMessageView = this;
- }
-
- MessageView::~MessageView()
- {
- // if (viewInitStatus == true)
- // {
- // DeInitView();
- // }
- UIViewGroup *tmpGroup = dynamic_cast<UIViewGroup *>(container_);
- UIViewGroup::RemoveAndDeleteAllRecursively(tmpGroup);
-
- g_pMessageView = nullptr;
- }
-
- 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()
- {
- lackView->RemoveAll();
- messageView->RemoveAll();
- MessageList->RemoveAll();
-
- delete labeltitle;
- labeltitle = nullptr;
-
- delete labelmeage;
- labelmeage = nullptr;
-
- delete imageline;
- imageline = nullptr;
-
- delete imagemeage;
- imagemeage = nullptr;
-
- delete lackView;
- lackView = nullptr;
-
- delete title;
- title = nullptr;
- delete title;
- title = nullptr;
-
- delete DeleteButton;
- DeleteButton = nullptr;
-
- delete MessageList;
- MessageList = nullptr;
-
- delete messageView;
- messageView = nullptr;
-
- delete draglistener;
- draglistener = nullptr;
- }
-
- void MessageView::PreLoad(void)
- {
- if (!viewInitStatus)
- {
- InitView();
- viewInitStatus = true;
- }
- }
-
- /*无数据界面*/
- void MessageView::ShowLackView()
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowLackView start");
- 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);
- /*初始化label*/
- InitLabelExt(labeltitle, 83, 50, 300, 35, "labletitle", STR_MESSAGE_NOTIFICATION, DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitLabelExt(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);
-
- container_->Add(lackView);
- lackView->SetDraggable(true);
- lackView->SetTouchable(true);
-
- lackView->SetOnDragListener(presenter_);
-
- lackView->SetVisible(false); // 界面隐藏
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowLackView end");
- }
-
- /*数据界面*/
- void MessageView::ShowMessageView()
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowmessageView start");
- messageView = new UIScrollView();
- if (messageView == nullptr)
- {
- return;
- }
- messageView->SetPosition(0, 0);
- messageView->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);
- messageView->SetScrollBlankSize(20);
- messageView->SetReboundSize(50);
- messageView->SetDirection(1);
-
- /*初始化label*/
- InitLabelExt(title, 83, 50, 300, 35, "labletitle", STR_MESSAGE_NOTIFICATION, DEFAULT_VECTOR_FONT_FILENAME, 30);
- messageView->Add(title);
-
- // UIList 的适配器
- p_MessageListAdapter = new MessageListAdapter();
- p_MessageListAdapter->SetItemClickListener(presenter_);
- if (MessageList == nullptr)
- {
- MessageList = new UIList();
- }
- MessageList->SetPosition(More_LIST_POSITION_X, More_LIST_POSITION_Y, 466, 466);
- MessageList->SetScrollStateListener(this);
- MessageList->SetThrowDrag(true);
- MessageList->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
- // 设置手指抬起屏幕后的最大滚动距离
- MessageList->SetMaxScrollDistance(1000); // 1000: max scroll distance
- // 设置手指抬起屏幕后的补偿距离
- MessageList->SetSwipeACCLevel(800); // 800: compensation distance
- // 设置拖动加速
- MessageList->SetDragACCLevel(5); // 5: drag acceleration
- MessageList->SetYScrollBarVisible(true);
-
- MessageList->SetOnClickListener(presenter_);
- messageView->SetOnDragListener(presenter_);
-
- messageView->SetVisible(false); // 隐藏界面
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowmessageView end");
- }
- void MessageView::UpdataButton(int num)
- {
- int top = num * 240;
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "old top %d", top);
- top > 466 ? top += 130 : top -= 100;
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new top %d", top);
- DeleteButton->SetPosition(43, top);
- }
- /*控制显示界面*/
- void MessageView::SetPopupViewStatus(PopupMessage view, bool status)
- {
- WEARABLE_LOGE(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<MessagePresenter>::OnStart();
-
- // SetContainerView(new UIScrollView());
- container_ = new UIScrollView();
- container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
- container_->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
- container_->SetOnDragListener(presenter_);
- container_->SetTouchable(true);
- container_->SetDraggable(true);
- // container_->SetFullScreenBlur(true); // 设置高斯模糊
-
- ShowLackView();
- ShowMessageView();
- PreLoad();
-
- SetContainerView(container_);
-
- RootView::GetInstance()->SetOnKeyActListener(presenter_);
- }
- void MessageView::AddMessageToList(const MessageListItem &item)
- {
- p_MessageListAdapter->AddListItem(item);
- }
- // 获取列表
- UIList *MessageView::GetList()
- {
- return MessageList;
- }
- /// @brief 创建页面的视图
- void MessageView::OnSetUpView()
- {
- View<MessagePresenter>::OnSetUpView();
- if (MessageModel::GetInstance().HasDataVector())
- {
- messageView->Add(MessageList);
- messageView->Add(DeleteButton);
- // messageView->SetFullScreenBlur(true);
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageList is add");
- container_->Add(messageView);
- // container_->SetFullScreenBlur(true);
- MessageList->SetAdapter(p_MessageListAdapter);
- }
- Draw();
- }
-
- /// @brief 销毁页面的视图
- void MessageView::OnTearDownView()
- {
- View<MessagePresenter>::OnTearDownView();
- return;
- }
-
- /// @brief 页面结束时需要执行的销毁逻辑。
- void MessageView::OnStop()
- {
- View<MessagePresenter>::OnStop();
- if (container_ != nullptr)
- {
- container_->RemoveAll();
- delete container_;
- container_ = nullptr;
- }
- RootView::GetInstance()->RemoveAll();
- return;
+#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() {
+ // SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
+ g_pMessageView = this;
+}
+
+MessageView::~MessageView() {
+ if (viewInitStatus == true) {
+ DeInitView();
+ }
+ // UIViewGroup *tmpGroup = dynamic_cast<UIViewGroup *>(container_);
+ // UIViewGroup::RemoveAndDeleteAllRecursively(tmpGroup);
+
+ g_pMessageView = nullptr;
+}
+
+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 (messageView) {
+ messageView->RemoveAll();
+ }
+
+ if (p_MessageListAdapter) {
+ delete p_MessageListAdapter;
+ p_MessageListAdapter = nullptr;
+ }
+
+ if (MessageList) {
+ MessageList->RemoveAll();
+ delete MessageList;
+ MessageList = nullptr;
+ }
+
+ // 删除所有标签和图像指针,确保指针非空
+ if (labeltitle) {
+ delete labeltitle;
+ labeltitle = nullptr;
+ }
+
+ if (labelmeage) {
+ delete labelmeage;
+ labelmeage = nullptr;
+ }
+
+ if (imageline) {
+ delete imageline;
+ imageline = nullptr;
+ }
+
+ if (imageline2) {
+ delete imageline2;
+ imageline2 = nullptr;
+ }
+
+ if (imagemeage) {
+ delete imagemeage;
+ imagemeage = nullptr;
+ }
+
+ if (lackView) {
+ delete lackView;
+ lackView = nullptr;
+ }
+
+ if (messageView) {
+ delete messageView;
+ messageView = nullptr;
+ }
+}
+
+void MessageView::PreLoad(void) {
+ if (!viewInitStatus) {
+ InitView();
+ viewInitStatus = true;
+ }
+}
+
+/*无数据界面*/
+void MessageView::ShowLackView() {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowLackView start");
+ 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);
+ /*初始化label*/
+ InitLabelExt(labeltitle, 83, 50, 300, 35, "labletitle",
+ STR_MESSAGE_NOTIFICATION, DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabelExt(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);
+
+ container_->Add(lackView);
+ lackView->SetDraggable(true);
+ lackView->SetTouchable(true);
+
+ lackView->SetOnDragListener(presenter_);
+
+ lackView->SetVisible(false); // 界面隐藏
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowLackView end");
+}
+
+/*数据界面*/
+void MessageView::ShowMessageView() {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowmessageView start");
+ 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); // 禁止垂直滑动
+
+ 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(More_LIST_POSITION_X, More_LIST_POSITION_Y, 466,
+ // 466);
+ 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(800);
+ MessageList->SetDragACCLevel(5);
+ MessageList->SetIntercept(true);
+
+ MessageList->SetOnClickListener(presenter_);
+ messageView->SetOnDragListener(presenter_);
+
+ messageView->SetVisible(false); // 隐藏界面
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowmessageView end");
+}
+
+/*控制显示界面*/
+void MessageView::SetPopupViewStatus(PopupMessage view, bool status) {
+ WEARABLE_LOGE(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<MessagePresenter>::OnStart();
+
+ // SetContainerView(new UIScrollView());
+ container_ = new UIScrollView();
+ container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(),
+ Screen::GetInstance().GetHeight());
+ container_->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
+ container_->SetOnDragListener(presenter_);
+ container_->SetTouchable(true);
+ container_->SetDraggable(true);
+ // container_->SetFullScreenBlur(true); // 设置高斯模糊
+ ShowMessageView();
+ ShowLackView();
+
+ PreLoad();
+ SetContainerView(container_);
+
+ RootView::GetInstance()->SetOnKeyActListener(presenter_);
+}
+void MessageView::AddMessageToList(const MessageListItem &item) {
+ p_MessageListAdapter->AddListItem(item);
+}
+// 获取列表
+UIList *MessageView::GetList() { return MessageList; }
+/// @brief 创建页面的视图
+void MessageView::OnSetUpView() {
+ View<MessagePresenter>::OnSetUpView();
+ if (MessageModel::GetInstance().HasDataVector()) {
+ messageView->Add(MessageList);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageList is add");
+ container_->Add(messageView);
+ if (p_MessageListAdapter) {
+ MessageList->SetAdapter(p_MessageListAdapter);
}
-}
\ No newline at end of file
+ }
+ Draw();
+}
+
+/// @brief 销毁页面的视图
+void MessageView::OnTearDownView() {
+ View<MessagePresenter>::OnTearDownView();
+ return;
+}
+
+/// @brief 页面结束时需要执行的销毁逻辑。
+void MessageView::OnStop() {
+ View<MessagePresenter>::OnStop();
+ if (container_ != nullptr) {
+ container_->RemoveAll();
+ delete container_;
+ container_ = nullptr;
+ }
+ RootView::GetInstance()->RemoveAll();
+ return;
+}
+} // namespace OHOS
\ No newline at end of file