* @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"
#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
* @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"
#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;
{
Presenter<RebootView>::OnStart();
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RebootPresenter::On Start ");
+ uapi_setScreenDuration(10 * 1000);
}
void RebootPresenter::OnPause(void) {}
{
// 重启
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)
{
// GetPMSDefaultInterface()->ShutDownDevice(NULL, NULL);
RebootView::GetInstance()->ChangeView(SHUTDOWNDEVICEVIEW, SHUTDOWNANIMATORVIEW);
ShutDownAnimatorView::GetInstance()->GeShutDownImageAnimatorView()->Start();
+ isShutDownOperation = true;
}
return true;
}
{
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;
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;
}
}
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;
}
{
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RebootView::~OnSetUpView");
View<RebootPresenter>::OnSetUpView();
+ RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::RebootPresenter::GetInstance();
+ RootView::GetInstance()->SetOnKeyActListener(keyactListener);
Draw();
}
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;
}
}
/// @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();
}
}
-
+/*
+ * @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"
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);