卡片管理Slice增加按键适配回退 519/target/2 520/1 520/head
authorCaisking <3449750381@qq.com>
Mon, 15 Jul 2024 06:37:12 +0000 (14:37 +0800)
committerCaisking <3449750381@qq.com>
Mon, 15 Jul 2024 06:37:12 +0000 (14:37 +0800)
code/sdk/application/wearable/fd230app/nativeui/add_card/include/AddCardPresenter.h
code/sdk/application/wearable/fd230app/nativeui/add_card/src/AddCardItem.cpp
code/sdk/application/wearable/fd230app/nativeui/add_card/src/AddCardPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/add_card/src/AddCardView.cpp
code/sdk/application/wearable/fd230app/nativeui/main/src/MainModel.cpp

index 09ce848..2e3c81a 100644 (file)
@@ -1,4 +1,10 @@
-/*** 
+/***
+ * @Date: 2024-05-30 15:59:37
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-07-15 11:31:56
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/add_card/include/AddCardPresenter.h
+ */
+/***
  * @Date: 2024-05-30 15:59:37
  * @LastEditors: Caisking 3449750381@qq.com
  * @LastEditTime: 2024-06-29 14:46:02
@@ -28,7 +34,12 @@ namespace OHOS
 
     class AddCardView;
     class AddCardModel;
-    class AddCardPresenter : public Presenter<AddCardView>, public ModelListenerSample, public UIView::OnClickListener, public UIView::OnDragListener, public ListScrollListener
+    class AddCardPresenter : public Presenter<AddCardView>,
+                             public ModelListenerSample,
+                             public UIView::OnClickListener,
+                             public UIView::OnDragListener,
+                             public ListScrollListener,
+                             public RootView::OnKeyActListener
     {
     public:
         AddCardPresenter();
@@ -45,6 +56,10 @@ namespace OHOS
         void OnItemSelected(int16_t index, UIView *view) override;
         bool OnDrag(UIView &view, const DragEvent &event) override;
 
+        bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件
+
+        static AddCardPresenter *GetInstance();
+
     private:
         void ResetTickTimer(void);
         AddCardModel *model{nullptr};
index 65eea3a..5aaa4d9 100644 (file)
@@ -1,7 +1,7 @@
 /*** \r
  * @Date: 2024-04-15 10:55:58\r
  * @LastEditors: Caisking 3449750381@qq.com\r
- * @LastEditTime: 2024-07-06 17:57:00\r
+ * @LastEditTime: 2024-07-15 14:10:35\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/add_card/src/AddCardItem.cpp\r
  */\r
 /***\r
@@ -79,7 +79,7 @@ namespace OHOS
 \r
     void AddCardItem::SetOnClickListener(OnClickListener *onClickListener)\r
     {\r
-        cardLabel_.SetOnClickListener(onClickListener);\r
+        // cardLabel_.SetOnClickListener(onClickListener);\r
         cardToggleButton_.SetOnClickListener(onClickListener);\r
     }\r
 \r
index a803d35..2129729 100644 (file)
@@ -9,38 +9,51 @@
 #include "AddCardModel.h"
 #include "AddCardPresenter.h"
 
+#include "KeyInputListener.h"
+#include "custom_utils.h"
+#include "common/key_code.h"
 namespace OHOS
 {
+
+    // 当前Presenter属性实例化的内存指针
+    static AddCardPresenter *g_pAddCardPresenter = nullptr;
+
     AddCardPresenter::AddCardPresenter()
     {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AddCardPresenter::AddCardPresenter");
         model = &AddCardModel::GetInstance();
+        g_pAddCardPresenter = this;
     }
 
     AddCardPresenter::~AddCardPresenter()
     {
-        if (keyActListenr != nullptr)
-        {
-            delete keyActListenr;
-            keyActListenr = nullptr;
-        }
+        // if (keyActListenr != nullptr)
+        // {
+        //     delete keyActListenr;
+        //     keyActListenr = nullptr;
+        // }
     }
 
     void AddCardPresenter::OnStart()
     {
         Presenter<AddCardView>::OnStart();
-        if (keyActListenr == nullptr)
-        {
-            keyActListenr = new KeyInputListener();
-            if (keyActListenr != nullptr)
-            {
-                RootView::GetInstance()->SetOnKeyActListener(keyActListenr);
-            }
-            else
-            {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ApplistPresenter::OnStart: new KeyInputListener fail");
-            }
-        }
+        // if (keyActListenr == nullptr)
+        // {
+        //     keyActListenr = new KeyInputListener();
+        //     if (keyActListenr != nullptr)
+        //     {
+        //         RootView::GetInstance()->SetOnKeyActListener(keyActListenr);
+        //     }
+        //     else
+        //     {
+        //         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ApplistPresenter::OnStart: new KeyInputListener fail");
+        //     }
+        // }
+    }
+
+    AddCardPresenter *AddCardPresenter::GetInstance()
+    {
+        return g_pAddCardPresenter;
     }
 
     void AddCardPresenter::OnResume(void)
@@ -65,10 +78,11 @@ namespace OHOS
 
     bool AddCardPresenter::OnClick(UIView &view, const ClickEvent &event)
     {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AddCardPresenter::OnClick");
         uint8_t index = model->GetSelectedCardIndex();
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AddCardPresenter::OnClick index %d", index);
         if (!MainModel::GetInstance().GetCardInfoSet(index))
         {
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AddCardPresenter::OnClick GetCardInfoSet ture");
             if (MainModel::GetInstance().GetCardSettingCount() >= CARD_SETTING_COUNT_MAX)
             {
                 cardCountEvent = true;
@@ -133,4 +147,17 @@ namespace OHOS
         startTime = osKernelGetTick2ms();
         return;
     }
+    // 增加按键事件
+    bool AddCardPresenter::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().Back();
+        }
+        return true;
+    }
 }
index 3584599..5c8f150 100644 (file)
@@ -37,6 +37,11 @@ namespace OHOS
         SetUpListInfo();
         SetUpListView();
         SetUpToast();
+
+        SetContainerView(container_);
+        // 增加按键监听
+        RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::AddCardPresenter::GetInstance();
+        RootView::GetInstance()->SetOnKeyActListener(keyactListener);
     }
 
     void AddCardView::OnSetUpView()
@@ -139,5 +144,4 @@ namespace OHOS
         toastLabel_.SetVisible(isVisible);
         toastLabel_.Invalidate();
     }
-
 }
index a9cf3d0..1b56285 100644 (file)
@@ -184,11 +184,15 @@ namespace OHOS
             return;\r
         }\r
         // 检查要插入的位置是否有效\r
-        if (index < 0 || index > cardSettingCount)\r
+        int count = sizeof(cardInfoSet) / sizeof(cardInfoSet[0]);\r
+        if (index < 0 || index > count)\r
         {\r
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "index %d is error or cardSettingCount %d is error", index, cardSettingCount);\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "index %d is error or count %d is error", index, count);\r
             return;\r
         }\r
+        // 删除的卡片\r
+        cardInfoSet[index].isVisible = false;\r
+#if 0\r
         int count = sizeof(cardInfoSet) / sizeof(cardInfoSet[0]);\r
         WEARABLE_LOGD(WEARABL_LOG_MODULE_APP, "count:%d\r\n", count);\r
         // 设置map里面的属性\r
@@ -203,6 +207,7 @@ namespace OHOS
             }\r
             WEARABLE_LOGD(WEARABL_LOG_MODULE_APP, "cardInfoSet[%d]:id%d\r\n", i, cardInfoSet[i].id);\r
         }\r
+#endif\r
         int mapindex = 0;\r
         // 重新生成cardSettings\r
         for (uint8_t i = 0; i < CARD_SETTING_COUNT_MAX; i++)\r
@@ -252,11 +257,15 @@ namespace OHOS
         }\r
 \r
         // 检查要插入的位置是否有效\r
-        if (index < 0 || index > cardSettingCount)\r
+        int count = sizeof(cardInfoSet) / sizeof(cardInfoSet[0]);\r
+        if (index < 0 || index > count)\r
         {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "index %d is error or count %d is error", index, count);\r
             return;\r
         }\r
         // 设置map里面的属性\r
+        cardInfoSet[index].isVisible = true;\r
+#if 0\r
         int count = sizeof(cardInfoSet) / sizeof(cardInfoSet[0]);\r
         for (uint8_t i = 0; i < count; i++)\r
         {\r
@@ -264,11 +273,13 @@ namespace OHOS
             if (cardInfoMap[index].id == cardInfoSet[i].id)\r
             {\r
                 cardInfoSet[i].isVisible = true;\r
-                WEARABLE_LOGD(WEARABL_LOG_MODULE_APP, "添加卡片:cardSettings[%d] is %d \r\n", index, cardInfoMap[index].id);\r
-                WEARABLE_LOGD(WEARABL_LOG_MODULE_APP, "设置添加卡片属性:cardInfoSet[%d] is %d \r\n", i, cardInfoSet[i].isVisible);\r
+                WEARABLE_LOGE(WEARABL_LOG_MODULE_APP, "添加卡片:cardSettings[%d] is %d \r\n", index, cardInfoMap[index].id);\r
+                WEARABLE_LOGE(WEARABL_LOG_MODULE_APP, "设置添加卡片属性:cardInfoSet[%d] is %d \r\n", i, cardInfoSet[i].isVisible);\r
+                break;\r
             }\r
-            WEARABLE_LOGD(WEARABL_LOG_MODULE_APP, "cardInfoSet[%d]:id%d\r\n", i, cardInfoSet[i].id);\r
+            WEARABLE_LOGE(WEARABL_LOG_MODULE_APP, "cardInfoSet[%d]:id%d\r\n", i, cardInfoSet[i].id);\r
         }\r
+#endif\r
 \r
         // 设置map里面的属性\r
         int mapindex = 0;\r