消息:修复消息Slice的析构
authorCaisking <3449750381@qq.com>
Sat, 5 Oct 2024 08:21:01 +0000 (16:21 +0800)
committerCaisking <3449750381@qq.com>
Sat, 5 Oct 2024 08:21:01 +0000 (16:21 +0800)
code/sdk/application/wearable/fd230app/nativeui/message/src/MessageView.cpp

index bbb2b4f..f53fb2d 100644 (file)
@@ -28,20 +28,9 @@ 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);
+MessageView::MessageView() { g_pMessageView = this; }
 
-  g_pMessageView = nullptr;
-}
+MessageView::~MessageView() { g_pMessageView = nullptr; }
 
 MessageView *MessageView::GetInstance() { return g_pMessageView; }
 void MessageView::InitView() {
@@ -55,60 +44,50 @@ void MessageView::InitView() {
   }
 }
 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;
+  if (viewInitStatus) {
+    if (container_) {
+      container_->RemoveAll();
+      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;
+      }
+    }
+    delete container_;
+    container_ = nullptr;
   }
 }
 
@@ -122,15 +101,19 @@ void MessageView::PreLoad(void) {
 /*无数据界面*/
 void MessageView::ShowLackView() {
   WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowLackView start");
-  lackView = new UIScrollView();
   if (lackView == nullptr) {
-    return;
+    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*/
   InitLabelExt(labeltitle, 83, 50, 300, 35, "labletitle",
                STR_MESSAGE_NOTIFICATION, DEFAULT_VECTOR_FONT_FILENAME, 30);
@@ -159,15 +142,18 @@ void MessageView::ShowLackView() {
 /*数据界面*/
 void MessageView::ShowMessageView() {
   WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowmessageView start");
-  messageView = new UIScrollView();
   if (messageView == nullptr) {
-    return;
+    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);
@@ -181,8 +167,6 @@ void MessageView::ShowMessageView() {
   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);
@@ -195,6 +179,15 @@ void MessageView::ShowMessageView() {
   MessageList->SetOnClickListener(presenter_);
   messageView->SetOnDragListener(presenter_);
 
+  messageView->Add(MessageList);
+  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageList is add");
+
+  container_->Add(messageView);
+
+  if (p_MessageListAdapter) {
+    MessageList->SetAdapter(p_MessageListAdapter);
+  }
+
   messageView->SetVisible(false); // 隐藏界面
   WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowmessageView end");
 }
@@ -219,19 +212,15 @@ void MessageView::OnStart() {
   WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartResultView::OnStart");
   View<MessagePresenter>::OnStart();
 
-  // SetContainerView(new UIScrollView());
-  container_ = new UIScrollView();
+  SetContainerView(new UIViewGroup());
   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); // 设置高斯模糊
+  BaseView::RootView(Color::Black().full);
+
   ShowMessageView();
   ShowLackView();
-
   PreLoad();
+
   SetContainerView(container_);
 
   RootView::GetInstance()->SetOnKeyActListener(presenter_);
@@ -244,14 +233,6 @@ 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);
-    }
-  }
   Draw();
 }
 
@@ -264,11 +245,7 @@ void MessageView::OnTearDownView() {
 /// @brief 页面结束时需要执行的销毁逻辑。
 void MessageView::OnStop() {
   View<MessagePresenter>::OnStop();
-  if (container_ != nullptr) {
-    container_->RemoveAll();
-    delete container_;
-    container_ = nullptr;
-  }
+  DeInitView();
   RootView::GetInstance()->RemoveAll();
   return;
 }