From 78c5e63dfbd7e094fd0ee6c70a5fa364e1a151d7 Mon Sep 17 00:00:00 2001 From: maomao <2144439972@qq.com> Date: Mon, 21 Apr 2025 14:41:31 +0800 Subject: [PATCH] =?utf8?q?=E3=80=90=E7=9D=A1=E7=9C=A0=E6=A8=A1=E5=BC=8F?= =?utf8?q?=E3=80=91UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../sleepmode/include/SleepModeModel.h | 25 +++ .../sleepmode/include/SleepModePresenter.h | 40 ++++ .../sleepmode/include/SleepModeView.h | 46 ++++ .../nativeui/sleepmode/src/SleepModeModel.cpp | 92 ++++++++ .../sleepmode/src/SleepModePresenter.cpp | 91 ++++++++ .../nativeui/sleepmode/src/SleepModeView.cpp | 198 ++++++++++++++++++ 6 files changed, 492 insertions(+) create mode 100644 code/sdk/application/wearable/fd230/nativeapp/nativeui/sleepmode/include/SleepModeModel.h create mode 100644 code/sdk/application/wearable/fd230/nativeapp/nativeui/sleepmode/include/SleepModePresenter.h create mode 100644 code/sdk/application/wearable/fd230/nativeapp/nativeui/sleepmode/include/SleepModeView.h create mode 100644 code/sdk/application/wearable/fd230/nativeapp/nativeui/sleepmode/src/SleepModeModel.cpp create mode 100644 code/sdk/application/wearable/fd230/nativeapp/nativeui/sleepmode/src/SleepModePresenter.cpp create mode 100644 code/sdk/application/wearable/fd230/nativeapp/nativeui/sleepmode/src/SleepModeView.cpp diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/sleepmode/include/SleepModeModel.h b/code/sdk/application/wearable/fd230/nativeapp/nativeui/sleepmode/include/SleepModeModel.h new file mode 100644 index 000000000..14cc1ac6a --- /dev/null +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/sleepmode/include/SleepModeModel.h @@ -0,0 +1,25 @@ + +#ifndef __SLEEPMODEMODEL_H__ +#define __SLEEPMODEMODEL_H__ + + +namespace OHOS +{ + class SleepModeModel + { + public: + static SleepModeModel &GetInstance(void); + // void UpdateSleepMode(void); + void SetSleepModeEnabled(void); + void SetSleepModeDisabled(void); + + private: + SleepModeModel(); + SleepModeModel(const SleepModeModel &) = delete; + SleepModeModel &operator=(const SleepModeModel &) = delete; + virtual ~SleepModeModel(); + + }; +} + +#endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/sleepmode/include/SleepModePresenter.h b/code/sdk/application/wearable/fd230/nativeapp/nativeui/sleepmode/include/SleepModePresenter.h new file mode 100644 index 000000000..b33b33874 --- /dev/null +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/sleepmode/include/SleepModePresenter.h @@ -0,0 +1,40 @@ + +#ifndef __SLEEPMODEPRESENTER_H__ +#define __SLEEPMODEPRESENTER_H__ + +#include "Presenter.h" +#include "View.h" +#include "sleepmode/include/SleepModeView.h" +#include "sleepmode/include/SleepModeModel.h" + + +namespace OHOS +{ + class SleepModeView; + class SleepModePresenter : public Presenter, + public UIView::OnClickListener, + public RootView::OnKeyActListener, + public UIView::OnDragListener + { + public: + SleepModePresenter(); + virtual ~SleepModePresenter(); + + void OnStart() override; + + + static SleepModePresenter *GetInstance(); + // virtual void Notify() override; + + private: + bool OnClick(UIView &view, const ClickEvent &event) override; + bool OnDrag(UIView &view, const DragEvent &event) override; + bool OnDragEnd(UIView &view, const DragEvent &event) override; + bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件 + bool X_DRAG_FLAG{false}; + + SleepModeModel * SleepModeModel_{nullptr}; + }; +} + +#endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/sleepmode/include/SleepModeView.h b/code/sdk/application/wearable/fd230/nativeapp/nativeui/sleepmode/include/SleepModeView.h new file mode 100644 index 000000000..c2edc3042 --- /dev/null +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/sleepmode/include/SleepModeView.h @@ -0,0 +1,46 @@ + +#ifndef __SLEEPMODEVIEW_H__ +#define __SLEEPMODEVIEW_H__ + +//#include "BaseView.h" +#include "View.h" + +#include "components/ui_scroll_view.h" +#include "components/ui_label_ext.h" +#include "components/ui_image_view.h" +#include "components/ui_label_button_ext.h" + + +namespace OHOS +{ + #define SLEEPMODE_ViewId_OKButton_ "SLEEPMODE_ViewId_OKButton_" + + class SleepModePresenter; + class SleepModeView : public View + { + public: + SleepModeView(); + virtual ~SleepModeView(); + static SleepModeView * GetInstance(void); + + void OnStart() override; + + private: + UIScrollView * InitScreen(void); + void DeinitScreen(void); + + UIScrollView * ScrollView_{nullptr}; + UILabelExt * TitleLabelExt_{nullptr}; + UIImageView * PromptImage_{nullptr}; + UILabelExt * PromptLabelExt_{nullptr}; + UILabelButtonExt * CancelButton_{nullptr}; + UILabelButtonExt * OKButton_{nullptr}; + + + #define SCREEN_WIDTH (Screen::GetInstance().GetWidth()) + #define SCREEN_HEIGHT (Screen::GetInstance().GetHeight()) + + #define SLEEP_MODE_PROMPT_IMAGE "/user/res/Sleepmode/sleepmode.bin" + }; +} +#endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/sleepmode/src/SleepModeModel.cpp b/code/sdk/application/wearable/fd230/nativeapp/nativeui/sleepmode/src/SleepModeModel.cpp new file mode 100644 index 000000000..672dacd88 --- /dev/null +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/sleepmode/src/SleepModeModel.cpp @@ -0,0 +1,92 @@ + +#include "sleepmode/include/SleepModeModel.h" +#include "main/include/MainViewSample.h" +#include "main/include/dropdown/DropDownCardPage1.h" +#include "MainModel.h" +#include "ConfigModel.h" +#include "custom_runtime.h" +#include "custom_utils.h" +#include "ui_service.h" +#include "ConfigModelC.h" +#include "power_display_service.h" + + +namespace OHOS +{ + SleepModeModel::SleepModeModel() {} + + SleepModeModel::~SleepModeModel() {} + + SleepModeModel &SleepModeModel::GetInstance() + { + static SleepModeModel instance; + return instance; + } + + void SleepModeModel::SetSleepModeEnabled(void) + { + uapi_sleep_mode_flag_set(1); + + // update donotdisturb + // SendMsgToUIService(UI_UPDATE_DNOTDISTURB_MODE, 0, nullptr, 0); + + /*更新主界面配置*/ + MainModel::GetInstance().setDialState(DialState::SLEEP, true); + + //更新下拉界面 + if(DropDownCardPage1::GetInstance() != nullptr && MainViewSample::GetInstance() != nullptr) + { + DropDownCardPage1::GetInstance()->UpdateSleepModelState(true); + } + + // disable flip wrist + uapi_take_to_wake(0); + + // turn down brightness + const power_display_svr_api_t *display_api = power_display_svr_get_api(); + display_api->set_brightness(MIN_BRIGHTNESS); + } + + void SleepModeModel::SetSleepModeDisabled(void) + { + uapi_sleep_mode_flag_set(0); + + // update donotdisturb + // SendMsgToUIService(UI_UPDATE_DNOTDISTURB_MODE, 0, nullptr, 0); + + /*更新主界面配置*/ + MainModel::GetInstance().setDialState(DialState::SLEEP, false); + + //更新下拉界面 + if(DropDownCardPage1::GetInstance() != nullptr && MainViewSample::GetInstance() != nullptr) + { + DropDownCardPage1::GetInstance()->UpdateSleepModelState(false); + } + // enable flip wrist + if(true == mmi_flip_wrist_switch_get()) + { + uapi_take_to_wake(1); + } + + // reset brightness + const power_display_svr_api_t *display_api = power_display_svr_get_api(); + display_api->set_brightness(OHOS::ConfigModel::GetInstance()->GetBrightness()); + } + + // /*更新勿扰模式*/ + // void SleepModeModel::UpdateSleepMode(void) + // { + // if (PullUpDownView::GetInstance() != nullptr) + // { + // /*更新主界面下拉界面配置*/ + // if(DropDownCardPage1::GetInstance() && DropDownCardPage1::GetInstance()->GetDropDownCardPage1_ToggleButton(DropDownCardPage1::toggleButton_DNOTDISTURB)) + // { + // DropDownCardPage1::GetInstance()->GetDropDownCardPage1_ToggleButton(DropDownCardPage1::toggleButton_DNOTDISTURB)->SetState(GetSleepModeEnabled()); + // } + // PullUpDownView::GetInstance()->UpdateSleepModeStatus(GetSleepModeEnabled()); + // /*更新主界面配置*/ + // MainModel::GetInstance().setDialState(DialState::DO_NOT_DISTURB, GetSleepModeEnabled()); + // } + // return; + // } +} \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/sleepmode/src/SleepModePresenter.cpp b/code/sdk/application/wearable/fd230/nativeapp/nativeui/sleepmode/src/SleepModePresenter.cpp new file mode 100644 index 000000000..77fed051c --- /dev/null +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/sleepmode/src/SleepModePresenter.cpp @@ -0,0 +1,91 @@ + +#include "AppViewIDs.h" +#include "NativeAbility.h" +#include "UiConfig.h" +#include "sleepmode/include/SleepModePresenter.h" +#include "common/key_code.h" +#include +#include "NativeRegisterManager.h" + +namespace OHOS +{ + REGIST_SLICE( VIEW_SLEEPMODE, SleepModeView, SleepModePresenter); + + static SleepModePresenter * p_SleepModePresenterInstance = nullptr; + + SleepModePresenter::SleepModePresenter() + { + SleepModeModel_ = &SleepModeModel::GetInstance(); + p_SleepModePresenterInstance = this; + } + + SleepModePresenter::~SleepModePresenter() + { + p_SleepModePresenterInstance = nullptr; + } + + SleepModePresenter * SleepModePresenter::GetInstance() + { + return p_SleepModePresenterInstance; + } + + void SleepModePresenter::OnStart() + { + Presenter::OnStart(); + } + + bool SleepModePresenter::OnDrag(UIView &view, const DragEvent &event) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SleepModePresenter::OnDrag"); + UNUSED(view); + if ((event.GetDeltaX() > X_DRAG_OFFSET) && (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY())))) // 拖动过程中判断是否是水平滑动 + { + SleepModePresenter::X_DRAG_FLAG = true; + } + return true; + } + + bool SleepModePresenter::OnDragEnd(UIView &view, const DragEvent &event) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SleepModePresenter::OnDragEnd"); + UNUSED(event); + if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && SleepModePresenter::X_DRAG_FLAG) + { + NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS); + SleepModePresenter::X_DRAG_FLAG = false; + } + return true; + } + + bool SleepModePresenter::OnClick(UIView &view, const ClickEvent &event) + { + UNUSED(event); + + if(0 == strcmp(view.GetViewId(), SLEEPMODE_ViewId_OKButton_)) + { + SleepModeModel_->SetSleepModeEnabled(); + } + + NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS); + return true; + } + + // 增加按键事件 + bool SleepModePresenter::OnKeyAct(UIView &view, const KeyEvent &event) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SleepModePresenter::OnKeyAct"); + uint16_t keyID = event.GetKeyId(); + uint16_t keyState = event.GetState(); + // 如果是power键就返回上一级 + if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 1 && uapi_get_screen_state() == 0) + { + NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS); + } + return true; + } + + // void SleepModePresenter::Notify() + // { + // // SleepModeView::GetInstance()->UpdataTime(); + // } +} \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/sleepmode/src/SleepModeView.cpp b/code/sdk/application/wearable/fd230/nativeapp/nativeui/sleepmode/src/SleepModeView.cpp new file mode 100644 index 000000000..26d714de6 --- /dev/null +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/sleepmode/src/SleepModeView.cpp @@ -0,0 +1,198 @@ + +#include "sleepmode/include/SleepModeView.h" +#include "sleepmode/include/SleepModePresenter.h" +#include "sleepmode/include/SleepModeModel.h" +#include "wearable_log.h" +#include "UiConfig.h" +#include "ui_resource_image.h" +#include "uicomponents/UIComponents.h" +#include "ui_resource_string.h" + + +namespace OHOS +{ + static SleepModeView * p_SleepModeViewInstance = nullptr; + + SleepModeView::SleepModeView() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SleepModeView::SleepModeView"); + p_SleepModeViewInstance = this; + } + + SleepModeView::~SleepModeView() + { + DeinitScreen(); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SleepModeView::~SleepModeView"); + p_SleepModeViewInstance = nullptr; + } + + SleepModeView * SleepModeView::GetInstance() + { + return p_SleepModeViewInstance; + } + + void SleepModeView::OnStart() + { + View::OnStart(); + GetRootContainer()->SetTouchable(true); + GetRootContainer()->SetDraggable(true); + + ScrollView_ = InitScreen(); + + AddViewToRootContainer(ScrollView_); + + RootView::GetInstance()->SetOnKeyActListener(presenter_); + } + + + + void SleepModeView::DeinitScreen() + { + if(nullptr != ScrollView_) + { + ScrollView_->RemoveAll(); + if(nullptr != TitleLabelExt_) + { + delete TitleLabelExt_; + TitleLabelExt_ = nullptr; + } + if(nullptr != PromptImage_) + { + delete PromptImage_; + PromptImage_ = nullptr; + } + if(nullptr != PromptLabelExt_) + { + delete PromptLabelExt_; + PromptLabelExt_ = nullptr; + } + if(nullptr != CancelButton_) + { + delete CancelButton_; + CancelButton_ = nullptr; + } + if(nullptr != OKButton_) + { + delete OKButton_; + OKButton_ = nullptr; + } + + delete ScrollView_; + ScrollView_ = nullptr; + } + } + + UIScrollView * SleepModeView::InitScreen(void) + { + if (nullptr == ScrollView_) + { + ScrollView_ = new UIScrollView(); + if (nullptr == ScrollView_) + return nullptr; + + ScrollView_->SetScrollBlankSize(35); + ScrollView_->SetReboundSize(50); + ScrollView_->SetPosition(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); + // ScrollView_->SetViewId(); + ScrollView_->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE); + ScrollView_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full); + ScrollView_->SetOnDragListener(presenter_); + ScrollView_->SetTouchable(true); + ScrollView_->SetDraggable(true); + + if (nullptr == TitleLabelExt_) + { + TitleLabelExt_ = new UILabelExt(); + if (nullptr == TitleLabelExt_) + return nullptr; + + TitleLabelExt_->SetPosition(83, 50, 300, 35); + TitleLabelExt_->SetStyle(STYLE_TEXT_FONT, 30); + TitleLabelExt_->SetStyle(STYLE_LINE_HEIGHT, 35); + TitleLabelExt_->SetTextId(STR_SLEEPMODE); + TitleLabelExt_->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION); + TitleLabelExt_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + TitleLabelExt_->SetRollSpeed(23); + TitleLabelExt_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + // TitleLabelExt_->SetStyle(STYLE_TEXT_COLOR, 0xffff5a36); + } + + if (nullptr == PromptImage_) + { + PromptImage_ = new UIImageView(); + if (nullptr == PromptImage_) + return nullptr; + + PromptImage_->SetPosition(183, 107); + // PromptImage_->Resize(94, 94); + // PromptImage_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff8120e2); + // PromptImage_->SetStyle(STYLE_BACKGROUND_OPA, 0xff); + // PromptImage_->SetStyle(STYLE_BORDER_RADIUS, 100); + // PromptImage_->SetAutoEnable(false); + // PromptImage_->SetResizeMode(UIImageView::CENTER); + PromptImage_->SetSrc(SLEEP_MODE_PROMPT_IMAGE); + } + + if (nullptr == PromptLabelExt_) + { + PromptLabelExt_ = new UILabelExt(); + if (nullptr == PromptLabelExt_) + return nullptr; + + PromptLabelExt_->SetPosition(53, 230, 360, 70); + PromptLabelExt_->SetStyle(STYLE_TEXT_FONT, 30); + PromptLabelExt_->SetStyle(STYLE_LINE_HEIGHT, 35); + PromptLabelExt_->SetTextId(STR_SLEEP_MODE_PROMPT_ON); + PromptLabelExt_->SetLineBreakMode(UILabel::LINE_BREAK_WRAP); + PromptLabelExt_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + PromptLabelExt_->SetRollSpeed(23); + PromptLabelExt_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + PromptLabelExt_->SetStyle(STYLE_TEXT_COLOR, 0Xff999999); + } + + if (nullptr == CancelButton_) + { + CancelButton_ = new UILabelButtonExt(); + if (nullptr == CancelButton_) + return nullptr; + + CancelButton_->SetPosition(111, PromptLabelExt_->GetY() + PromptLabelExt_->GetHeight() + 20, 100, 100); + // CancelButton_->SetViewId(SCHEDULE_ViewId_DeleteCancelButton_); + CancelButton_->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff); + CancelButton_->SetStyle(STYLE_BACKGROUND_OPA, 25); // 10% + CancelButton_->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xffffffff, UIButton::PRESSED); + CancelButton_->SetStyleForState(STYLE_BACKGROUND_OPA, 25, UIButton::PRESSED); + CancelButton_->SetStyle(STYLE_BORDER_RADIUS, 100); + CancelButton_->SetImagePosition(0, 0); + CancelButton_->SetImageSrc(PNG_SYSTEM_CHECK_OFF_IMAGE, PNG_SYSTEM_CHECK_OFF_IMAGE); + CancelButton_->SetOnClickListener(presenter_); + } + + if (nullptr == OKButton_) + { + OKButton_ = new UILabelButtonExt(); + if (nullptr == OKButton_) + return nullptr; + + OKButton_->SetPosition(256, PromptLabelExt_->GetY() + PromptLabelExt_->GetHeight() + 20,100, 100); + OKButton_->SetViewId(SLEEPMODE_ViewId_OKButton_); + OKButton_->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff); + OKButton_->SetStyle(STYLE_BACKGROUND_OPA, 25); // 10% + OKButton_->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xffffffff, UIButton::PRESSED); + OKButton_->SetStyleForState(STYLE_BACKGROUND_OPA, 25, UIButton::PRESSED); + OKButton_->SetStyle(STYLE_BORDER_RADIUS, 100); + OKButton_->SetImagePosition(0, 0); + OKButton_->SetImageSrc(PNG_SYSTEM_CHECK_ON_IMAGE, PNG_SYSTEM_CHECK_ON_IMAGE); + OKButton_->SetOnClickListener(presenter_); + } + + ScrollView_->Add(TitleLabelExt_); + ScrollView_->Add(PromptImage_); + ScrollView_->Add(PromptLabelExt_); + ScrollView_->Add(CancelButton_); + ScrollView_->Add(OKButton_); + } + + return ScrollView_; + } +} \ No newline at end of file -- 2.17.1