配置消息通知Slice回退以及按键
authorCaisking <3449750381@qq.com>
Sat, 3 Aug 2024 02:46:45 +0000 (10:46 +0800)
committerCaisking <3449750381@qq.com>
Sat, 3 Aug 2024 02:46:45 +0000 (10:46 +0800)
code/sdk/application/wearable/fd230app/nativeui/message/include/MessagePresenter.h
code/sdk/application/wearable/fd230app/nativeui/message/src/MessagePresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/message/src/MessageView.cpp

index 716f815..7635308 100644 (file)
@@ -1,3 +1,9 @@
+/***
+ * @Date: 2024-04-15 10:55:58
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-08-03 09:55:51
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/message/include/MessagePresenter.h
+ */
 /***
  * @Date: 2024-04-15 10:55:58
  * @LastEditors: Caisking 3449750381@qq.com
@@ -18,6 +24,9 @@
 #include "MessageView.h"
 #include "message/include/MessageModel.h"
 #include "components/ui_list.h"
+// #include "KeyInputListener.h"
+#include "common/key_code.h"
+
 namespace OHOS
 {
     class MessageView;
@@ -26,6 +35,7 @@ namespace OHOS
                              public UIView::OnClickListener,
                              public UIView::OnDragListener,
                              public ListScrollListener,
+                             public RootView::OnKeyActListener,
                              public UIList
     {
     public:
@@ -43,6 +53,7 @@ namespace OHOS
         // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;
         bool OnClick(UIView &view, const ClickEvent &event) override;
         bool OnDrag(UIView &view, const DragEvent &event) override;
+        bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件
         MessageModel *p_MessageModel{nullptr};
     };
 } // namespace OHOS
index e389929..9df71b0 100644 (file)
@@ -3,13 +3,17 @@
 #include "AppViewIDs.h"
 #include "components/ui_label_ext.h"
 #include "ui_resource_string.h"
-#include "NativeAbility.h"
+
 #include "message/include/MessagePresenter.h"
 #include "message/include/MessageAdapter.h"
 #include "message/include/MessageItemView.h"
 #include "components/ui_abstract_scroll_bar.h"
 #include "gfx_utils/graphic_log.h"
 #include "wearable_log.h"
+#include "NativeAbility.h"
+#include "common/key_code.h"
+#include "KeyInputListener.h"
+#include "custom_utils.h"
 
 namespace OHOS
 {
@@ -77,11 +81,6 @@ namespace OHOS
         {
             NativeAbility::GetInstance().Back();
         }
-        // 向下回到主界面
-        // if (event.GetDragDirection() == DragEvent::DIRECTION_TOP_TO_BOTTOM)
-        // {
-        //     NativeAbility::GetInstance().EnterSlice(VIEW_MAIN);
-        // }
 
         return true;
     }
@@ -95,7 +94,7 @@ namespace OHOS
             {
                 // 执行全部删除操作
                 MessageModel::GetInstance().ClearAllMessages();
-                NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
+                NativeAbility::GetInstance().Back();
                 return true;
             }
             /* -------------------------------------------------------------------------- */
@@ -121,4 +120,17 @@ namespace OHOS
         return true;
     }
 
+    bool MessagePresenter::OnKeyAct(UIView &view, const KeyEvent &event)
+    {
+        unsigned short keyID = event.GetKeyId();
+        unsigned short keyState = event.GetState();
+        // 如果是power键,且是亮屏状态,按键释放就返回上一级
+        if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0)
+        {
+            // NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
+            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_ZOOM);
+        }
+        return true;
+    }
+
 }
\ No newline at end of file
index 3c215a3..65da13a 100644 (file)
@@ -61,63 +61,35 @@ namespace OHOS
         messageView->RemoveAll();
         MessageList->RemoveAll();
 
-        if (labeltitle != nullptr)
-        {
-            lackView->Remove(labeltitle);
-            delete labeltitle;
-            labeltitle = nullptr;
-        }
-        if (labelmeage != nullptr)
-        {
-            lackView->Remove(labelmeage);
-            delete labelmeage;
-            labelmeage = nullptr;
-        }
-        if (imageline != nullptr)
-        {
-            lackView->Remove(imageline);
-            delete imageline;
-            imageline = nullptr;
-        }
-        if (imagemeage != nullptr)
-        {
-            lackView->Remove(imagemeage);
-            delete imagemeage;
-            imagemeage = nullptr;
-        }
-        if (lackView != nullptr)
-        {
-            lackView->RemoveAll();
-            delete lackView;
-            lackView = nullptr;
-        }
-        if (title != nullptr)
-        {
-            delete title;
-            title = nullptr;
-        }
-        if (title != nullptr)
-        {
-            delete title;
-            title = nullptr;
-        }
-        if (DeleteButton != nullptr)
-        {
-            delete DeleteButton;
-            DeleteButton = nullptr;
-        }
-        if (MessageList != nullptr)
-        {
-            MessageList->RemoveAll();
-            delete MessageList;
-            MessageList = nullptr;
-        }
-        if (messageView != nullptr)
-        {
-            messageView->RemoveAll();
-            delete messageView;
-            messageView = nullptr;
-        }
+        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;
     }
@@ -162,12 +134,7 @@ namespace OHOS
         lackView->SetDraggable(true);
         lackView->SetTouchable(true);
 
-        UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(MessagePresenter::GetInstance());
-        if (draglistener == nullptr)
-        {
-            return;
-        }
-        lackView->SetOnDragListener(draglistener);
+        lackView->SetOnDragListener(presenter_);
 
         lackView->SetVisible(false); // 界面隐藏
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowLackView end");
@@ -211,14 +178,8 @@ namespace OHOS
         MessageList->SetDragACCLevel(5); // 5: drag acceleration
         MessageList->SetYScrollBarVisible(true);
 
-        MessageList->SetOnClickListener(static_cast<UIView::OnClickListener *>(MessagePresenter::GetInstance()));
-
-        UIView::OnDragListener *Messagedraglistener = static_cast<UIView::OnDragListener *>(MessagePresenter::GetInstance());
-        if (Messagedraglistener == nullptr)
-        {
-            return;
-        }
-        messageView->SetOnDragListener(Messagedraglistener);
+        MessageList->SetOnClickListener(presenter_);
+        messageView->SetOnDragListener(presenter_);
 
         /*删除按键*/
         int top = MessageList->GetHeight();
@@ -226,7 +187,7 @@ namespace OHOS
         top > 466 ? top += 130 : top -= 100;
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new top %d", top);
         InitButtonExt(DeleteButton, 43, top, 380, 100, DELETEALLDATA, STR_CLEANALL, 30);
-        DeleteButton->SetOnClickListener(static_cast<UIView::OnClickListener *>(MessagePresenter::GetInstance()));
+        DeleteButton->SetOnClickListener(presenter_);
         messageView->Add(DeleteButton);
 
         messageView->SetVisible(false); // 隐藏界面
@@ -260,22 +221,34 @@ namespace OHOS
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PopupView is NULL");
             return;
         }
-        popupView->SetVisible(status);
-        UIView::OnDragListener *Messagedraglistener = static_cast<UIView::OnDragListener *>(MessagePresenter::GetInstance());
-        if (Messagedraglistener == nullptr)
+        if (container_ != nullptr)
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Messagedraglistener is NULL");
-            return;
+            container_->SetVisible(!status);
         }
-        popupView->SetOnDragListener(Messagedraglistener);
+        popupView->SetVisible(status);
     }
 
     /// @brief 页面启动时需要执行的代码逻辑
     void MessageView::OnStart()
     {
+        WEARABLE_LOGE(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_->SetOnDragListener(presenter_);
+        container_->SetTouchable(true);
+        container_->SetDraggable(true);
+
         ShowLackView();
         ShowMessageView();
         PreLoad();
+
+        RootView::GetInstance()->Add(container_);
+        SetContainerView(container_);
+
+        RootView::GetInstance()->SetOnKeyActListener(presenter_);
     }
     void MessageView::AddMessageToList(const MessageListItem &item)
     {
@@ -311,6 +284,12 @@ namespace OHOS
     void MessageView::OnStop()
     {
         View<MessagePresenter>::OnStop();
+        if (container_ != nullptr)
+        {
+            container_->RemoveAll();
+            delete container_;
+            container_ = nullptr;
+        }
         RootView::GetInstance()->RemoveAll();
         return;
     }