增加遥控拍照回退以及按键 639/1
authorCaisking <3449750381@qq.com>
Sat, 3 Aug 2024 03:12:11 +0000 (11:12 +0800)
committerCaisking <3449750381@qq.com>
Sat, 3 Aug 2024 03:12:11 +0000 (11:12 +0800)
code/sdk/application/wearable/fd230app/nativeui/takephotos/include/TakephotosPresenter.h
code/sdk/application/wearable/fd230app/nativeui/takephotos/src/TakephotosPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/takephotos/src/TakephotosView.cpp

index ed50f74..5353abf 100644 (file)
@@ -3,6 +3,7 @@
 
 #include "Presenter.h"
 #include "TakephotosView.h"
+#include "common/key_code.h"
 
 namespace OHOS
 {
@@ -10,6 +11,7 @@ namespace OHOS
 
     class TakephotosPresenter : public Presenter<TakephotosView>,
                                 public UIView::OnClickListener,
+                                public RootView::OnKeyActListener,
                                 public UIView::OnDragListener
     {
     public:
@@ -26,6 +28,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; // 增加按键事件
     };
 } // namespace OHOS
 
index 9be982d..091d526 100644 (file)
 #include <iostream>
 #include <chrono>
 #include <thread>
-#include "takephotos/include/TakephotosPresenter.h"
+
 #include "uicomponents/UIComponents.h"
 #include "bleEvent.h"
+#include "common/key_code.h"
+#include "KeyInputListener.h"
+#include "custom_utils.h"
+
+#include "takephotos/include/TakephotosPresenter.h"
+#include "takephotos/include/TakephotosModel.h"
 // #include "TakephotosView.h"
 
 namespace OHOS
@@ -61,10 +67,15 @@ namespace OHOS
 
     bool TakephotosPresenter::OnDrag(UIView &view, const DragEvent &event)
     {
-        if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)
+        if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT &&
+            (event.GetDeltaX() > 20) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY()))))
         {
             NativeAbility::GetInstance().Back();
-            cameraSend(3);
+            /*如果是拍照界面需要发送拍照结束的消息*/
+            if (TakephotosModel::GetInstance()->GetPopStaust() == PopupPhoto::TakePopup)
+            {
+                cameraSend(3);
+            }
         }
         return true;
     }
@@ -74,7 +85,6 @@ namespace OHOS
         // 返回按键
         if (strcmp(view.GetViewId(), BUTTONGO) == 0)
         {
-            // NativeAbility::GetInstance().EnterSlice(VIEW_TRAININGMORE);
             NativeAbility::GetInstance().Back();
         }
         if (strcmp(view.GetViewId(), BUTTONTAKE) == 0)
@@ -85,4 +95,22 @@ namespace OHOS
         }
         return true;
     }
+
+    bool TakephotosPresenter::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();
+            /*如果是拍照界面需要发送拍照结束的消息*/
+            if (TakephotosModel::GetInstance()->GetPopStaust() == PopupPhoto::TakePopup)
+            {
+                cameraSend(3);
+            }
+        }
+        return true;
+    }
+
 }
index 57bd488..d4cee4d 100644 (file)
@@ -47,75 +47,40 @@ namespace OHOS
     /* DeInit:删除组件 */
     void TakephotosView::DeInit()
     {
-        container_->RemoveAll();
-        if (labeltitle_ != nullptr)
-        {
-            creamView->Remove(labeltitle_);
-            delete labeltitle_;
-            labeltitle_ = nullptr;
-        }
-        if (labelnote_ != nullptr)
-        {
-            creamView->Remove(labelnote_);
-            delete labelnote_;
-            labelnote_ = nullptr;
-        }
-        if (labeltake_ != nullptr)
-        {
-            takeView->Remove(labeltake_);
-            delete labeltake_;
-            labeltake_ = nullptr;
-        }
-        if (labelclick_ != nullptr)
-        {
-            takeView->Remove(labelclick_);
-            delete labelclick_;
-            labelclick_ = nullptr;
-        }
-        if (buttontake != nullptr)
-        {
-            takeView->Remove(buttontake);
-            delete buttontake;
-            buttontake = nullptr;
-        }
-        if (buttongo != nullptr)
-        {
-            creamView->Remove(buttongo);
-            delete buttongo;
-            buttongo = nullptr;
-        }
-        if (smileAnimator != nullptr)
-        {
-            smileAnimator->Stop();
-            takeView->Remove(smileAnimator);
-            delete smileAnimator;
-            smileAnimator = nullptr;
-        }
-        if (creamAnimator != nullptr)
-        {
-            creamAnimator->Stop();
-            creamView->Remove(creamAnimator);
-            delete creamAnimator;
-            creamAnimator = nullptr;
-        }
-        if (creamView != nullptr)
-        {
-            creamView->RemoveAll();
-            delete creamView;
-            creamView = nullptr;
-        }
-        if (takeView != nullptr)
-        {
-            takeView->RemoveAll();
-            delete takeView;
-            takeView = nullptr;
-        }
-        if (container_ != nullptr)
-        {
-            container_->RemoveAll();
-            delete container_;
-            container_ = nullptr;
-        }
+        creamView->RemoveAll();
+        takeView->RemoveAll();
+
+        delete labeltitle_;
+        labeltitle_ = nullptr;
+
+        delete labelnote_;
+        labelnote_ = nullptr;
+
+        delete labeltake_;
+        labeltake_ = nullptr;
+
+        delete labelclick_;
+        labelclick_ = nullptr;
+
+        delete buttontake;
+        buttontake = nullptr;
+
+        delete buttongo;
+        buttongo = nullptr;
+
+        smileAnimator->Stop();
+        delete smileAnimator;
+        smileAnimator = nullptr;
+
+        creamAnimator->Stop();
+        delete creamAnimator;
+        creamAnimator = nullptr;
+
+        delete creamView;
+        creamView = nullptr;
+
+        delete takeView;
+        takeView = nullptr;
     }
 
     void TakephotosView::PreLoad(void)
@@ -274,28 +239,19 @@ namespace OHOS
     void TakephotosView::OnStart()
     {
         container_ = new UIScrollView();
-        if (container_ == nullptr)
-        {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "container_ new fail");
-            return;
-        }
         container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
-        // 创建 draglistener 实例并设置为拖动监听器
-        UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(TakephotosPresenter::GetInstance());
-        if (draglistener == nullptr)
-        {
-            return;
-        }
-        container_->SetOnDragListener(draglistener);
+        container_->SetOnDragListener(presenter_);
         container_->SetTouchable(true);
         container_->SetDraggable(true);
-        container_->SetStyle(STYLE_BACKGROUND_COLOR, BACK_GROUND_COLOR);
-        container_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
 
         ShowCreamView();
         ShowTakeView();
         PreLoad();
+
         RootView::GetInstance()->Add(container_);
+        SetContainerView(container_);
+
+        RootView::GetInstance()->SetOnKeyActListener(presenter_);
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TakephotosView OnStart is ok");
     }
 
@@ -326,6 +282,12 @@ namespace OHOS
     void TakephotosView::OnStop()
     {
         View<TakephotosPresenter>::OnStop();
+        if (container_ != nullptr)
+        {
+            container_->RemoveAll();
+            delete container_;
+            container_ = nullptr;
+        }
         RootView::GetInstance()->RemoveAll();
         return;
     }