1.重启界面优化
authorluozheng <1732036298@qq.com>
Thu, 21 Mar 2024 03:16:14 +0000 (11:16 +0800)
committerluozheng <1732036298@qq.com>
Thu, 21 Mar 2024 03:16:14 +0000 (11:16 +0800)
2.解决按键监听多次触发问题
3.custom_utils增加uapi_setScreenDuration 设置某个Slice亮屏时间

code/sdk/application/wearable/fd230app/nativeui/rebootdevice/include/RebootPresenter.h
code/sdk/application/wearable/fd230app/nativeui/rebootdevice/src/RebootPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/rebootdevice/src/RebootView.cpp
code/sdk/drivers/peripheral/utils/custom_utils.c
code/sdk/drivers/peripheral/utils/custom_utils.h

index 990884f..5dc40d3 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-01-29 15:37:44
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-03-20 20:25:14
+ * @LastEditTime: 2024-03-21 09:48:06
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/rebootdevice/include/RebootPresenter.h
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
 #include "NativeAbility.h"
 #include "BaseView.h"
 #include "components/ui_image_animator.h"
-namespace OHOS {
-enum RebootPresenterNum : uint8_t {
+#include "KeyInputListener.h"
+namespace OHOS
+{
+    enum RebootPresenterNum : uint8_t
+    {
         REBOOTVIEW = 0,
         REBOOTDEVICEVIEW,
         SHUTDOWNDEVICEVIEW,
-        SHUTDOWNANIMATORVIEW, //关机动画视图
+        SHUTDOWNANIMATORVIEW, // 关机动画视图
         REBOOT_MAX,
-};
+    };
 
 #define REBOOT_BUTTON "rebootButton"
 #define SHUTDOWN_BUTTON "shutdownButton"
@@ -38,22 +41,28 @@ enum RebootPresenterNum : uint8_t {
 #define REBOOTDEVICE_VIEW "rebootDeviceView"
 #define SHUTDOWNDEVICE_VIEW "shutdownDeviceView"
 
-class RebootView;
-class RebootPresenter : public Presenter<RebootView>,
-                        public UIView::OnClickListener,public UIImageAnimatorView::AnimatorStopListener, 
-                        public UIView::OnDragListener {
-public:
-    RebootPresenter();
-    ~RebootPresenter();
-    static RebootPresenter *GetInstance();
-    void OnStart() override;
-    void OnPause() override;
-    void OnResume() override;
-    void OnStop() override;
-    bool OnClick(UIView& view, const ClickEvent& event) override;
-    bool OnDrag(UIView& view, const DragEvent& event) override;
-    virtual void OnAnimatorStop(UIView &view) override;
-private:
-};
+    class RebootView;
+    class RebootPresenter : public Presenter<RebootView>,
+                            public UIView::OnClickListener,
+                            public UIImageAnimatorView::AnimatorStopListener,
+                            public RootView::OnKeyActListener,
+                            public UIView::OnDragListener
+    {
+    public:
+        RebootPresenter();
+        ~RebootPresenter();
+        static RebootPresenter *GetInstance();
+        void OnStart() override;
+        void OnPause() override;
+        void OnResume() override;
+        void OnStop() override;
+        bool OnClick(UIView &view, const ClickEvent &event) override;
+        bool OnDrag(UIView &view, const DragEvent &event) override;
+        virtual void OnAnimatorStop(UIView &view) override;
+        bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件
+
+    private:
+        bool isShutDownOperation{false}; // 是否是关机操作
+    };
 } // namespace OHOS
 #endif
index 004af71..3a502e2 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-02-21 19:06:02
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-03-20 20:30:01
+ * @LastEditTime: 2024-03-21 11:15:29
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/rebootdevice/src/RebootPresenter.cpp
  */
 #include "rebootdevice/include/RebootPresenter.h"
@@ -12,6 +12,7 @@
 #include "wearable_log.h"
 #include "custom_utils.h"
 #include "components/ui_image_animator.h"
+#include "common/key_code.h"
 namespace OHOS
 {
     static RebootPresenter *g_pRebootPresenter = nullptr;
@@ -38,6 +39,7 @@ namespace OHOS
     {
         Presenter<RebootView>::OnStart();
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RebootPresenter::On Start ");
+        uapi_setScreenDuration(10 * 1000);
     }
 
     void RebootPresenter::OnPause(void) {}
@@ -62,7 +64,9 @@ namespace OHOS
         {
             // 重启
             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "REBOOTDEVICE_BUTTON OnClick");
-            uapi_reboot_device();
+            RebootView::GetInstance()->ChangeView(REBOOTDEVICEVIEW, SHUTDOWNANIMATORVIEW);
+            ShutDownAnimatorView::GetInstance()->GeShutDownImageAnimatorView()->Start();
+            isShutDownOperation = false;
         }
         else if (strcmp(view.GetViewId(), SHUTDOWNDEVICE_BUTTON) == 0)
         {
@@ -71,6 +75,7 @@ namespace OHOS
             // GetPMSDefaultInterface()->ShutDownDevice(NULL, NULL);
             RebootView::GetInstance()->ChangeView(SHUTDOWNDEVICEVIEW, SHUTDOWNANIMATORVIEW);
             ShutDownAnimatorView::GetInstance()->GeShutDownImageAnimatorView()->Start();
+            isShutDownOperation = true;
         }
         return true;
     }
@@ -82,31 +87,16 @@ namespace OHOS
         {
             if (strcmp(view.GetViewId(), REBOOT_VIEW) == 0)
             {
-                NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);
+                uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
+                NativeAbility::GetInstance().ChangeSlice(preSlice);
             }
             else if (strcmp(view.GetViewId(), REBOOTDEVICE_VIEW) == 0)
             {
-                if (RebootModel::GetInstance()->GetExitsView() == 0)
-                {
-                    RebootView::GetInstance()->ChangeView(REBOOTDEVICEVIEW, REBOOTVIEW);
-                }
-                else
-                {
-                    NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);
-                    RebootModel::GetInstance()->SetExitsView(false);
-                }
+                RebootView::GetInstance()->ChangeView(REBOOTDEVICEVIEW, REBOOTVIEW);
             }
             else if (strcmp(view.GetViewId(), SHUTDOWNDEVICE_VIEW) == 0)
             {
-                if (RebootModel::GetInstance()->GetExitsView() == 0)
-                {
-                    RebootView::GetInstance()->ChangeView(SHUTDOWNDEVICEVIEW, REBOOTVIEW);
-                }
-                else
-                {
-                    NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);
-                    RebootModel::GetInstance()->SetExitsView(false);
-                }
+                RebootView::GetInstance()->ChangeView(SHUTDOWNDEVICEVIEW, REBOOTVIEW);
             }
         }
         return true;
@@ -114,7 +104,30 @@ namespace OHOS
 
     void RebootPresenter::OnAnimatorStop(UIView &view)
     {
+        UNUSED(view);
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RebootPresenter::OnAnimatorStop");
-        uapi_poweroff_device();
+        if (isShutDownOperation == true)
+        {
+            uapi_poweroff_device(); // 关机
+        }
+        else
+        {
+            uapi_reboot_device(); // 重启
+        }
+    }
+
+    bool RebootPresenter::OnKeyAct(UIView &view, const KeyEvent &event) // 增加按键事件
+    {
+        UNUSED(view);
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SettingPresenter::OnKeyAct");
+        uint16 keyID = event.GetKeyId();
+        uint16 keyState = event.GetState();
+        // 如果是power键就返回上一级
+        if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0)
+        {
+            uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
+            NativeAbility::GetInstance().ChangeSlice(preSlice);
+        }
+        return true;
     }
 }
index 9db397c..88f3ed2 100644 (file)
@@ -62,20 +62,21 @@ namespace OHOS
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RebootView::~OnStart");
         View<RebootPresenter>::OnStart();
         BaseView::RootView(Color::Black().full);
-        if (RebootModel::GetInstance()->GetSelectView() == REBOOT)
-        {
-            ChangeView(REBOOT_MAX, REBOOTVIEW);
-        }
-        else if (RebootModel::GetInstance()->GetSelectView() == REBOOTDEVICE)
-        {
-            ChangeView(REBOOT_MAX, REBOOTDEVICEVIEW);
-            RebootModel::GetInstance()->SetSelectViewId(REBOOT);
-        }
-        else if (RebootModel::GetInstance()->GetSelectView() == SHUTDOWNDEVICE)
-        {
-            ChangeView(REBOOT_MAX, SHUTDOWNDEVICEVIEW);
-            RebootModel::GetInstance()->SetSelectViewId(REBOOT);
-        }
+        // if (RebootModel::GetInstance()->GetSelectView() == REBOOT)
+        // {
+        //     ChangeView(REBOOT_MAX, REBOOTVIEW);
+        // }
+        // else if (RebootModel::GetInstance()->GetSelectView() == REBOOTDEVICE)
+        // {
+        //     ChangeView(REBOOT_MAX, REBOOTDEVICEVIEW);
+        //     RebootModel::GetInstance()->SetSelectViewId(REBOOT);
+        // }
+        // else if (RebootModel::GetInstance()->GetSelectView() == SHUTDOWNDEVICE)
+        // {
+        //     ChangeView(REBOOT_MAX, SHUTDOWNDEVICEVIEW);
+        //     RebootModel::GetInstance()->SetSelectViewId(REBOOT);
+        // }
+        ChangeView(REBOOT_MAX, REBOOTVIEW);
         RootView::GetInstance()->Invalidate();
         return;
     }
@@ -84,6 +85,8 @@ namespace OHOS
     {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RebootView::~OnSetUpView");
         View<RebootPresenter>::OnSetUpView();
+        RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::RebootPresenter::GetInstance();
+        RootView::GetInstance()->SetOnKeyActListener(keyactListener);
         Draw();
     }
 
@@ -242,15 +245,17 @@ namespace OHOS
     bool RebootView::ChangeRebootView(int16_t hideView, int16_t thisView)
     {
         UNUSED(hideView);
-        // init view
-        UIViewGroup *group = InitShowUpView();
-        if (group == nullptr)
+        if (container[thisView] == nullptr)
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");
-            return false;
+            UIViewGroup *group = InitShowUpView();
+            if (group == nullptr)
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");
+                return false;
+            }
+            container[thisView] = group;
+            RootView::GetInstance()->Add(container[thisView]);
         }
-        container[thisView] = group;
-        RootView::GetInstance()->Add(container[thisView]);
         return true;
     }
 
index a1b5261..39663c7 100644 (file)
@@ -348,7 +348,8 @@ errcode_t uapi_get_yyyymmddhhmmss_Date(char *date)
 }
 
 /// @brief 控制屏幕是否常亮
-/// @param turnOnFlag 1:常亮屏幕 0:取消常亮 
+/// @param turnOnFlag 1:常亮屏幕 
+/// @param turnOnFlag 0:取消常亮 
 void ScreenAlwaysOnCtr(uint8_t turnOnFlag)
 {
     const power_display_svr_api_t *display_api = power_display_svr_get_api();
@@ -368,7 +369,14 @@ void ScreenAlwaysOnCtr(uint8_t turnOnFlag)
     }
 }
 
-
+/*
+ * @brief 设置某个Slice亮屏时间,超过时间后屏幕息屏,单位ms 
+*/
+void uapi_setScreenDuration(int32_t time)
+{
+    const power_display_svr_api_t *display_api = power_display_svr_get_api();
+    display_api->set_screen_auto_off_timeout(time);
+}
 
 #include "bts_le_gap.h"
 
index 2a9ac9b..89163fb 100644 (file)
@@ -42,7 +42,9 @@ errcode_t uapi_get_yyyymmddhhmmss_Date(char *date);
 
 char *uapi_get_local_yyyymmdd_date(void);
 
-void  ScreenAlwaysOnCtr(uint8_t turnOnFlag);
+void ScreenAlwaysOnCtr(uint8_t turnOnFlag);
+
+void uapi_setScreenDuration(int32_t time);
 
 errcode_t uapi_get_btaddr(uint8_t *buf_btaddr, uint32_t *len_btaddr);
 errcode_t uapi_get_btname(uint8_t *buf_btname, uint32_t *len_btname);