From 3910bc716b9e104a2a73dedb81ebda87a854995e Mon Sep 17 00:00:00 2001 From: cheng Date: Thu, 5 Sep 2024 18:39:58 +0800 Subject: [PATCH] =?utf8?q?=E5=A2=9E=E5=8A=A0=E6=9C=80=E6=96=B0=E7=89=88?= =?utf8?q?=E6=89=8B=E7=94=B5=E7=AD=92=E5=8A=9F=E8=83=BD(=E6=9C=AA=E5=AE=8C?= =?utf8?q?=E6=88=90=E9=83=A8=E5=88=86=EF=BC=9A1.=E8=87=AA=E5=AE=9A?= =?utf8?q?=E4=B9=89=E9=A2=9C=E8=89=B2=E9=80=89=E6=8B=A9=EF=BC=9B2.?= =?utf8?q?=E4=BF=9D=E5=AD=98=E8=AE=BE=E7=BD=AE=E7=9A=84=E4=BF=A1=E6=81=AF?= =?utf8?q?=E5=88=B0config)?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../flashlight/include/FlashlightModel.h | 25 +- .../flashlight/include/FlashlightPresenter.h | 48 +- .../flashlight/include/FlashlightView.h | 110 ++- .../flashlight/src/FlashlightModel.cpp | 190 ++++- .../flashlight/src/FlashlightPresenter.cpp | 106 ++- .../flashlight/src/FlashlightView.cpp | 788 ++++++++++++++++-- .../fd230/fs/user/res/flashlight/color_0.bin | 3 + .../fd230/fs/user/res/flashlight/color_1.bin | 3 + .../fd230/fs/user/res/flashlight/color_2.bin | 3 + .../fd230/fs/user/res/flashlight/color_3.bin | 3 + .../fd230/fs/user/res/flashlight/color_4.bin | 3 + .../fd230/fs/user/res/flashlight/color_5.bin | 3 + .../fs/user/res/flashlight/color_selected.bin | 3 + .../fs/user/res/flashlight/color_setting.bin | 3 + .../user/res/flashlight/flahing_setting.bin | 3 + .../fd230/fs/user/res/flashlight/up_arrow.bin | 3 + 16 files changed, 1174 insertions(+), 123 deletions(-) create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/color_0.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/color_1.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/color_2.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/color_3.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/color_4.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/color_5.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/color_selected.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/color_setting.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/flahing_setting.bin create mode 100644 code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/up_arrow.bin diff --git a/code/sdk/application/wearable/fd230app/nativeui/flashlight/include/FlashlightModel.h b/code/sdk/application/wearable/fd230app/nativeui/flashlight/include/FlashlightModel.h index d96c72e3a..abce5c0f5 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/flashlight/include/FlashlightModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/flashlight/include/FlashlightModel.h @@ -16,9 +16,18 @@ namespace OHOS { public: static FlashlightModel &GetInstance(void); - void ToggleBrightness(); - void UpdateScreenColor(); - int64_t GetCurrentBrightness(void); + + uint8_t GetColorIndex(void); + void SetColorIndex(uint8_t value); + int64_t GetColorValue(void); + void SetColorValue(int64_t value); + uint8_t GetFlashingLevel(void); + void SetFlashingLevel(uint8_t value); + + void FlashlightStartTimer(void); + void FlashlightStopTimer(void); + void FlashlightPauseTimer(void); + void FlashlightResumeTimer(uint32_t interval); private: FlashlightModel(); @@ -26,13 +35,9 @@ namespace OHOS FlashlightModel &operator=(const FlashlightModel &) = delete; virtual ~FlashlightModel(); - enum Brightness : int64_t - { - Low = 0xff808080, - Medium = 0xffbfbfbf, - High = 0xffffffff, - }; - int64_t currentBrightness = Brightness::Low; + uint8_t ColorIndex_{0}; // 0~5-fixed;6-custom + int64_t ColorValue_ = 0xffffffff; // background color + uint8_t FlashingLevel_ = 0; // 0-no; 1-quickly; 2-slowly }; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/flashlight/include/FlashlightPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/flashlight/include/FlashlightPresenter.h index 2d5b46e30..d272d02ac 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/flashlight/include/FlashlightPresenter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/flashlight/include/FlashlightPresenter.h @@ -12,26 +12,65 @@ #include "Presenter.h" #include "View.h" #include "flashlight/include/FlashlightView.h" +#include "components/ui_swipe_view.h" + namespace OHOS { - + #define Flashlight_ViewId_ImageColorSetting_ "Flashlight_ViewId_ImageColorSetting_" + #define Flashlight_ViewId_ImageFlashingSetting_ "Flashlight_ViewId_ImageFlashingSetting_" + + #define Flashlight_ViewId_GroupColorSetting_ "Flashlight_ViewId_GroupColorSetting_" + #define Flashlight_ViewId_GroupColorCustom_ "Flashlight_ViewId_GroupColorCustom_" + #define Flashlight_ViewId_ScrollFlashingSetting_ "Flashlight_ViewId_ScrollFlashingSetting_" + + #define FLASHING_SETTING_ITEM_COUNT (3) + constexpr char * Flashlight_ViewId_FlashingSettingItem_[FLASHING_SETTING_ITEM_COUNT] = + { + "Flashlight_ViewId_FlashingSettingItem0_", + "Flashlight_ViewId_FlashingSettingItem1_", + "Flashlight_ViewId_FlashingSettingItem2_" + }; + + #define COLOR_SETTING_ITEM_COUNT (6) + constexpr char * Flashlight_ViewId_ImageColorSettingItem_[COLOR_SETTING_ITEM_COUNT] = + { + "Flashlight_ViewId_ImageColorSettingItem0_", + "Flashlight_ViewId_ImageColorSettingItem1_", + "Flashlight_ViewId_ImageColorSettingItem2_", + "Flashlight_ViewId_ImageColorSettingItem3_", + "Flashlight_ViewId_ImageColorSettingItem4_", + "Flashlight_ViewId_ImageColorSettingItem5_" + }; + + constexpr int64_t ColorValue_ColorSettingItem_[COLOR_SETTING_ITEM_COUNT] = + { + 0xffffffff, 0xffff5a36, 0xff4fc34c, + 0xff3549ff, 0xffff8a36, 0xffffffff + }; + + class FlashlightView; class FlashlightPresenter : public Presenter, public UIView::OnClickListener, public RootView::OnKeyActListener, - public UIView::OnDragListener + public UIView::OnDragListener, + public UISwipeView::OnSwipeListener { public: FlashlightPresenter(); virtual ~FlashlightPresenter(); + static FlashlightPresenter * GetInstance(); void OnStart() override; void OnPause() override; void OnResume() override; void OnStop() override; - static FlashlightPresenter *GetInstance(); - + uint8_t GetColorIndex(void); + int64_t GetColorValue(void); + uint8_t GetFlashingLevel(void); + void UpdateViewMainScreenFlashing(bool flag); + void StartFlashingTimer(void); private: bool OnClick(UIView &view, const ClickEvent &event) override; @@ -39,6 +78,7 @@ namespace OHOS bool OnDragEnd(UIView &view, const DragEvent &event) override; bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件 bool X_DRAG_FLAG{false}; + void OnSwipe(UISwipeView &view); }; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/flashlight/include/FlashlightView.h b/code/sdk/application/wearable/fd230app/nativeui/flashlight/include/FlashlightView.h index 29d62fb12..9a51b0001 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/flashlight/include/FlashlightView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/flashlight/include/FlashlightView.h @@ -11,8 +11,15 @@ #include "BaseView.h" #include "View.h" +#include "flashlight/include/FlashlightPresenter.h" + #include "components/ui_scroll_view.h" #include "components/ui_image_view.h" +#include "components/ui_swipe_view.h" +#include "components/ui_label_button_ext.h" +#include "components/ui_label_ext.h" +#include "components/ui_radio_button.h" + namespace OHOS { class FlashlightPresenter; @@ -23,19 +30,108 @@ namespace OHOS FlashlightView(); virtual ~FlashlightView(); static FlashlightView *GetInstance(void); - void SetTheGroupViewColor(int64_t colorValue); - UIScrollView *GetGroupView(); + void OnStart() override; void OnSetUpView() override; void OnTearDownView() override; void OnStop() override; + void DisplayViewMainScreen(); + void DisplayViewSettingScreen(); + void DisplayColorSettingScreen(); + void DisplayColorCustomScreen(); + void DisplayFlashingSettingScreen(); + + void UpdateViewMainScreenFlashing(bool flag); + + typedef enum + { + ENUM_FLASHLIGHT_SCREEN_VIEW_MAIN, + ENUM_FLASHLIGHT_SCREEN_VIEW_SETTING, + ENUM_FLASHLIGHT_SCREEN_COLOR_SETTING, + ENUM_FLASHLIGHT_SCREEN_COLOR_CUSTOM, + ENUM_FLASHLIGHT_SCREEN_FLASHING_SETTING, + + ENUM_FLASHLIGHT_SCREEN_MAX + }ENUM_FLASHLIGHT_SCREEN; + + UIViewGroup * InitSwipeData(); + UIViewGroup * InitColorSettingData(); + UIViewGroup * InitColorCustomData(); + UIViewGroup * InitFlashingSettingData(); + private: - void FlashlightViewInit(void); - void ClearAll(void); - UIScrollView *group{nullptr}; - UIImageView *FlashlightVector{nullptr}; - UIImageView *LineImage{nullptr}; + UILabelExt * CreateUILabelExt(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t text_id, + int64_t font_size, int64_t line_height, int64_t color_value, + UITextLanguageAlignment hor_align, UITextLanguageAlignment ver_align); + UIRadioButton * CreateUIRadioButtonItem(int16_t x, int16_t y, int16_t w, int16_t h); + UIViewGroup * CreateUIGroupItem(char * id, int16_t x, int16_t y, int16_t w, int16_t h); + UIImageView * CreateImageColorSettingItem_(char * id, int16_t x, int16_t y, int16_t w, int16_t h, char * src); + + + void DeinitSwipeData(); + // UISwipeView * InitSwipeData(); + UISwipeView * SwipeView_{nullptr}; + + void DeinitViewMainData(); + UIViewGroup * InitViewMainData(); + void UpdateViewMainScreen(void); + UIViewGroup * GroupMain_{nullptr}; + UIImageView * ImageArrow_{nullptr}; + + void DeinitViewSettingData(); + UIViewGroup * InitViewSettingData(); + UIViewGroup * GroupSetting_{nullptr}; + UILabelExt * LabelTitle_{nullptr}; + UIImageView * ImageColorSetting_{nullptr}; + UIImageView * ImageFlashingSetting_{nullptr}; + UILabelExt * LabelColorSetting_{nullptr}; + UILabelExt * LabelFlashingSetting_{nullptr}; + + void DeinitColorSettingData(); + // UIViewGroup * InitColorSettingData(); + void UpdateColorSettingItem(void); + UIViewGroup * GroupColorSetting_{nullptr}; + UILabelExt * LabelColorSettingTitle_{nullptr}; + #define COLOR_SETTING_ITEM_COUNT (6) + UIImageView * ImageColorSettingItem_[COLOR_SETTING_ITEM_COUNT][2]{nullptr}; + + void DeinitColorCustomData(); + // UIViewGroup * InitColorCustomData(); + UIViewGroup * GroupColorCustom_{nullptr}; + UIImageView * ImageColorCustom_{nullptr}; + + void DeinitFlashingSettingData(); + // UIScrollView * InitFlashingSettingData(); + void UpdateFlashingSettingItem(void); + UIScrollView * ScrollFlashingSetting_{nullptr}; + UILabelExt * LabelFlashingSettingTitle_{nullptr}; + #define FLASHING_SETTING_ITEM_COUNT (3) + UIViewGroup * GroupFlashingSettingItem_[FLASHING_SETTING_ITEM_COUNT]{nullptr}; + UILabelExt * LabelFlashingSettingItem_[FLASHING_SETTING_ITEM_COUNT]{nullptr}; + UIRadioButton * RadioButtonFlashingSettingItem_[FLASHING_SETTING_ITEM_COUNT]{nullptr}; + + void DisplaySelectScreen(uint8_t ScreenIndex); + UIViewGroup * ScreenGroupArray_[ENUM_FLASHLIGHT_SCREEN_MAX]{nullptr}; + + + #define SCREEN_WIDTH (Screen::GetInstance().GetWidth()) + #define SCREEN_HEIGHT (Screen::GetInstance().GetHeight()) + + #define UP_ARROW_IMAGE "/user/res/flashlight/up_arrow.bin" + #define COLOR_SETTING_IMAGE "/user/res/flashlight/color_setting.bin" + #define FLASHING_SETTING_IMAGE "/user/res/flashlight/flahing_setting.bin" + + #define COLOR_SETTING_SELECTED_IMAGE "/user/res/flashlight/color_selected.bin" + char * ImageColorSettingItemSrc_[COLOR_SETTING_ITEM_COUNT] = + { + "/user/res/flashlight/color_0.bin", + "/user/res/flashlight/color_1.bin", + "/user/res/flashlight/color_2.bin", + "/user/res/flashlight/color_3.bin", + "/user/res/flashlight/color_4.bin", + "/user/res/flashlight/color_5.bin", + }; }; } #endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/flashlight/src/FlashlightModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/flashlight/src/FlashlightModel.cpp index 797d7bb5a..3b894aee3 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/flashlight/src/FlashlightModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/flashlight/src/FlashlightModel.cpp @@ -1,15 +1,17 @@ -/* - * @Author: luozheng 1732036298@qq.com - * @Date: 2024-04-10 18:13:11 - * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-04-10 19:34:54 - * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/flashlight/src/FlashlightModel.cpp - */ + +#include "graphic_service.h" +#include +#include +#include "wearable_log.h" #include "flashlight/include/FlashlightModel.h" -#include "flashlight/include/FlashlightView.h" +#include "flashlight/include/FlashlightPresenter.h" namespace OHOS { + static osTimerId_t g_timer = NULL; + static bool switch_flag = false; + + FlashlightModel::FlashlightModel() {} FlashlightModel::~FlashlightModel() {} @@ -20,34 +22,170 @@ namespace OHOS return instance; } - /*切换屏幕亮度*/ - void FlashlightModel::ToggleBrightness() + uint8_t FlashlightModel::GetColorIndex(void) + { + return ColorIndex_; + } + + void FlashlightModel::SetColorIndex(uint8_t value) + { + ColorIndex_ = value; + } + + int64_t FlashlightModel::GetColorValue(void) + { + if((COLOR_SETTING_ITEM_COUNT - 1) > ColorIndex_) + return ColorValue_ColorSettingItem_[ColorIndex_]; + + return ColorValue_; + } + + void FlashlightModel::SetColorValue(int64_t value) + { + ColorValue_ = value; + } + + uint8_t FlashlightModel::GetFlashingLevel(void) + { + return FlashingLevel_; + } + + void FlashlightModel::SetFlashingLevel(uint8_t value) + { + FlashingLevel_ = value; + } + + + static void FlashlightTimerCallbackProc(int data) + { + switch_flag = !(switch_flag); + FlashlightPresenter::GetInstance()->UpdateViewMainScreenFlashing(switch_flag); + } + + /* + * @brief 计时器回调函数 + */ + static void FlashlightTimerCallback(int data) { - switch (currentBrightness) + GraphicService::GetInstance()->PostGraphicEvent(std::bind(FlashlightTimerCallbackProc, data)); + } + + /* + * @brief 开启定时器函数 + * @param interval 时间间隔,单位ms + */ + void FlashlightModel::FlashlightStartTimer(void) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[@CHENG][%d]:%d", __LINE__, FlashingLevel_); + uint32_t interval = 0; + switch (FlashingLevel_) + { + case 0: // no + return; + break; + + case 1: // quickly + interval = 500; + break; + + case 2: // slowly + interval = 1000; + break; + + default: + break; + } + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[@CHENG][%d]:%d", __LINE__, interval); + + /* -------------------------- 1.检查定时器是否已经存在,如果存在则返回 ------------------------- */ + if (g_timer != NULL) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FlashlightModel::FlashlightStartTimer Timer already exists!!"); + return; + } + + /* --------------------------------- 2.创建定时器 -------------------------------- */ + g_timer = osTimerNew((osTimerFunc_t)FlashlightTimerCallback, osTimerPeriodic, NULL, NULL); + // 检查定时器创建是否成功 + if (g_timer == NULL) { - case Brightness::Low: - currentBrightness = Brightness::Medium; // 更新屏幕颜色为中亮度 + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FlashlightModel::FlashlightStartTimer Timer create failed!!"); + return; + } - break; - case Brightness::Medium: - currentBrightness = Brightness::High; // 更新屏幕颜色为高亮度 + /* ----------------------------- 3.将毫秒转换为系统时钟节拍数 ---------------------------- */ + int tick = osMs2Tick(interval); - break; - case Brightness::High: - currentBrightness = Brightness::Low; // 关闭手电筒(屏幕恢复正常显示) - break; + /* --------------------------------- 4.启动定时器 -------------------------------- */ + // g_timerStartTimestamp = GetCurrentTimestamp(); // 假设GetCurrentTimestamp()是获取当前时间戳的函数 + osStatus_t ret = osTimerStart(g_timer, tick); + /* -------------------- 5.检查定时器启动是否成功,如果启动失败,删除定时器并置为 NULL -------------------- */ + if (ret != osOK) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[FlashlightStartTimer] osTimerDelete failed, ret = %lx!!", ret); + if (g_timer != NULL) + { + ret = osTimerDelete(g_timer); + if (ret != osOK) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScanTimerCallback osTimerDelete failed, ret = %lx!!", ret); + } + g_timer = NULL; + } } - UpdateScreenColor(); } - // 基于当前亮度状态currentBrightness,更新屏幕颜色 - void FlashlightModel::UpdateScreenColor() + /* + * @brief 停止定时器 + */ + void FlashlightModel::FlashlightStopTimer(void) + { + // 检查定时器是否存在 + if (g_timer != NULL) + { + // 删除定时器并置为 NULL + osStatus_t ret = osTimerDelete(g_timer); + if (ret != osOK) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScanTimerCallback osTimerDelete failed, ret = %lx!!", ret); + } + g_timer = NULL; + } + } + /* + * @brief 暂停定时器 + */ + void FlashlightModel::FlashlightPauseTimer(void) { - FlashlightView::GetInstance()->SetTheGroupViewColor(currentBrightness); + // 检查定时器是否存在 + if (g_timer != NULL) + { + // 暂停定时器,但不删除它 + osStatus_t ret = osTimerStop(g_timer); + if (ret != osOK) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FlashlightPauseTimer osTimerStop failed, ret = %lx!!", ret); + } + } } - int64_t FlashlightModel::GetCurrentBrightness(void) + /* + * @brief 恢复定时器 + */ + void FlashlightModel::FlashlightResumeTimer(uint32_t interval) { - return currentBrightness; + // 检查定时器是否存在 + if (g_timer != NULL) + { + int tick = osMs2Tick(interval); + // 恢复定时器 + osStatus_t ret = osTimerStart(g_timer, tick); + if (ret != osOK) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FlashlightResumeTimer osTimerStart failed, ret = %lx!!", ret); + } + } } + + } \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/flashlight/src/FlashlightPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/flashlight/src/FlashlightPresenter.cpp index 8d56231e9..96b22f41a 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/flashlight/src/FlashlightPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/flashlight/src/FlashlightPresenter.cpp @@ -45,6 +45,9 @@ namespace OHOS void FlashlightPresenter::OnStart() { Presenter::OnStart(); + + FlashlightModel::GetInstance().FlashlightStartTimer(); + ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); } void FlashlightPresenter::OnPause(void) @@ -60,6 +63,9 @@ namespace OHOS void FlashlightPresenter::OnStop(void) { Presenter::OnStop(); + + ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON); + FlashlightModel::GetInstance().FlashlightStopTimer(); } bool FlashlightPresenter::OnDrag(UIView &view, const DragEvent &event) @@ -79,6 +85,22 @@ namespace OHOS UNUSED(view); if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && FlashlightPresenter::X_DRAG_FLAG) { + if(0 == strcmp(Flashlight_ViewId_GroupColorSetting_, view.GetViewId())) + { + view_->DisplayViewSettingScreen(); + return true; + } + if(0 == strcmp(Flashlight_ViewId_GroupColorCustom_, view.GetViewId())) + { + view_->DisplayColorSettingScreen(); + return true; + } + if(0 == strcmp(Flashlight_ViewId_ScrollFlashingSetting_, view.GetViewId())) + { + view_->DisplayViewSettingScreen(); + return true; + } + NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS); X_DRAG_FLAG = false; } @@ -89,10 +111,49 @@ namespace OHOS { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "DnotDisturbPresenter::OnClick"); UNUSED(event); - if (&view == FlashlightView::GetInstance()->GetGroupView()) + + if(0 == strcmp(Flashlight_ViewId_ImageColorSetting_, view.GetViewId())) + { + view_->DisplayColorSettingScreen(); + return true; + } + if(0 == strcmp(Flashlight_ViewId_ImageFlashingSetting_, view.GetViewId())) + { + view_->DisplayFlashingSettingScreen(); + return true; + } + + uint8_t i = 0; + for(i = 0; i < FLASHING_SETTING_ITEM_COUNT; i++) { - FlashlightModel::GetInstance().ToggleBrightness(); + if(0 == strcmp(Flashlight_ViewId_FlashingSettingItem_[i], view.GetViewId())) + { + FlashlightModel::GetInstance().SetFlashingLevel(i); + // view_->UpdateFlashingSettingItem(); + // view_->DisplayFlashingSettingScreen(); + view_->DisplayViewMainScreen(); + return true; + } } + + for(i = 0; i < COLOR_SETTING_ITEM_COUNT; i++) + { + if(0 == strcmp(Flashlight_ViewId_ImageColorSettingItem_[COLOR_SETTING_ITEM_COUNT - 1], view.GetViewId())) + { + FlashlightModel::GetInstance().SetColorIndex(i); + view_->DisplayColorCustomScreen(); + return true; + } + + if(0 == strcmp(Flashlight_ViewId_ImageColorSettingItem_[i], view.GetViewId())) + { + FlashlightModel::GetInstance().SetColorIndex(i); + FlashlightModel::GetInstance().SetColorValue(ColorValue_ColorSettingItem_[i]); + view_->DisplayViewMainScreen(); + return true; + } + } + return true; } @@ -110,4 +171,45 @@ namespace OHOS return true; } + void FlashlightPresenter::OnSwipe(UISwipeView &view) + { + UNUSED(view); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FlashlightPresenter::OnSwipe"); + + if(0 == view.GetCurrentPage()) + { + FlashlightModel::GetInstance().FlashlightStartTimer(); + ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); + } + else + { + FlashlightModel::GetInstance().FlashlightStopTimer(); + ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON); + } + } + + uint8_t FlashlightPresenter::GetColorIndex(void) + { + return FlashlightModel::GetInstance().GetColorIndex(); + } + + int64_t FlashlightPresenter::GetColorValue(void) + { + return FlashlightModel::GetInstance().GetColorValue(); + } + + uint8_t FlashlightPresenter::GetFlashingLevel(void) + { + return FlashlightModel::GetInstance().GetFlashingLevel(); + } + + void FlashlightPresenter::StartFlashingTimer(void) + { + FlashlightModel::GetInstance().FlashlightStartTimer(); + } + + void FlashlightPresenter::UpdateViewMainScreenFlashing(bool flag) + { + view_->UpdateViewMainScreenFlashing(flag); + } } \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/flashlight/src/FlashlightView.cpp b/code/sdk/application/wearable/fd230app/nativeui/flashlight/src/FlashlightView.cpp index f0e7a31c4..e317e85ef 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/flashlight/src/FlashlightView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/flashlight/src/FlashlightView.cpp @@ -6,9 +6,10 @@ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/flashligh/src/FlashlightView.cpp */ #include "flashlight/include/FlashlightView.h" -#include "flashlight/include/FlashlightPresenter.h" -#include "flashlight/include/FlashlightModel.h" #include "wearable_log.h" +#include "ui_resource_string.h" +#include "UiConfig.h" +#include "custom_utils.h" namespace OHOS { @@ -24,7 +25,6 @@ namespace OHOS FlashlightView::~FlashlightView() { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FlashlightView::~FlashlightView"); - ClearAll(); g_pFlashlightView = nullptr; } @@ -33,123 +33,763 @@ namespace OHOS return g_pFlashlightView; } - void FlashlightView::ClearAll(void) + void FlashlightView::OnStart() { - group->RemoveAll(); - if (group != nullptr) + View::OnStart(); + + SetContainerView(new UIViewGroup()); + if (nullptr == GetContainer()) { - delete FlashlightVector; - FlashlightVector = nullptr; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d]", __LINE__); + return; + } + container_->SetPosition(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); + container_->SetTouchable(true); + container_->SetDraggable(true); + // container_->SetOnDragListener(presenter_); + + RootView::GetInstance()->SetOnKeyActListener(presenter_); + } + + void FlashlightView::OnSetUpView() + { + View::OnSetUpView(); + + InitSwipeData(); + Draw(); + } + + void FlashlightView::OnTearDownView() + { + View::OnTearDownView(); + return; + } + + void FlashlightView::OnStop() + { + View::OnStop(); + RootView::GetInstance()->ClearOnKeyActListener(); + + if (nullptr != container_) + { + container_->RemoveAll(); + delete container_; + container_ = nullptr; + + DeinitSwipeData(); + + DeinitColorSettingData(); + DeinitFlashingSettingData(); + } + } - delete LineImage; - LineImage = nullptr; - delete group; - group = nullptr; + void FlashlightView::DeinitSwipeData() + { + if(nullptr != SwipeView_) + { + SwipeView_->RemoveAll(); + delete SwipeView_; + SwipeView_ = nullptr; + + DeinitViewMainData(); + DeinitViewSettingData(); } } - void FlashlightView::FlashlightViewInit(void) + UIViewGroup * FlashlightView::InitSwipeData() { - if (group == nullptr) + if(nullptr == SwipeView_) { - group = new UIScrollView(); - if (group == nullptr) + SwipeView_ = new UISwipeView(UISwipeView::VERTICAL); + if(nullptr == SwipeView_) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FlashlightView::group is nullptr"); - return; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[@CHENG][%d]", __LINE__); + return nullptr; } - group->SetPosition(0, 0, 466, 466); - group->SetStyle(STYLE_BACKGROUND_COLOR, FlashlightModel::GetInstance().GetCurrentBrightness()); - group->SetStyle(STYLE_BACKGROUND_OPA, 0xff); - UIView::OnClickListener *listener1 = static_cast(FlashlightPresenter::GetInstance()); - group->SetOnClickListener(listener1); - UIView::OnDragListener *listener2 = static_cast(FlashlightPresenter::GetInstance()); - group->SetOnDragListener(listener2); - /* -------------------------------------------------------------------------- */ - FlashlightVector = new UIImageView(); - if (FlashlightVector == nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FlashlightView::FlashlightVector is nullptr"); - return; + SwipeView_->SetPosition(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); + SwipeView_->SetTouchable(true); + SwipeView_->SetDraggable(true); + // SwipeView_->SetThrowDrag(true); + SwipeView_->SetOnSwipeListener(presenter_); + SwipeView_->SetAnimatorTime(50); // 200:animator drag time(ms) + SwipeView_->SetOnDragListener(presenter_); + SwipeView_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full); + SwipeView_->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE); + SwipeView_->SetStyle(STYLE_BORDER_RADIUS, 100); + + UIViewGroup * temp_0 = InitViewMainData(); + if(nullptr == temp_0) + return nullptr; + SwipeView_->Add(temp_0); + + UIViewGroup * temp_1 = InitViewSettingData(); + if(nullptr == temp_1) + return nullptr; + SwipeView_->Add(temp_1); + + SwipeView_->SetCurrentPage(0); + SwipeView_->SetIntercept(false); + SwipeView_->SetLoopState(false); + + container_->Add(SwipeView_); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FlashlightView::InitSwipeData"); + } + + return dynamic_cast(SwipeView_); + // return SwipeView_; + } + + void FlashlightView::DeinitViewMainData() + { + if(nullptr != GroupMain_) + { + GroupMain_->RemoveAll(); + delete GroupMain_; + GroupMain_ = nullptr; + + if(nullptr != ImageArrow_) + { + delete ImageArrow_; + ImageArrow_ = nullptr; } - FlashlightVector->SetPosition(212, 191, 100, 100); - const char *imagesPath = "/user/res/flashlight/Flashlight.bin"; - FlashlightVector->SetSrc(imagesPath); - /* -------------------------------------------------------------------------- */ - LineImage = new UIImageView(); - if (LineImage == nullptr) + } + } + + UIViewGroup * FlashlightView::InitViewMainData(void) + { + if(nullptr == GroupMain_) + { + GroupMain_ = new UIViewGroup(); + if(nullptr == GroupMain_) + return nullptr; + + GroupMain_->SetPosition(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); + // GroupMain_->SetViewId(S_ViewId_NoDataGroup_); + GroupMain_->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE); + GroupMain_->SetStyle(STYLE_BACKGROUND_COLOR, presenter_->GetColorValue()); + GroupMain_->SetTouchable(true); + GroupMain_->SetDraggable(true); + GroupMain_->SetOnDragListener(presenter_); + + if (nullptr == ImageArrow_) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FlashlightView::LineImage is nullptr"); - return; + ImageArrow_ = new UIImageView(); + if (nullptr == ImageArrow_) + return nullptr; + + ImageArrow_->SetPosition(211, 430, 40, 20); + ImageArrow_->SetSrc(UP_ARROW_IMAGE); } - LineImage->SetPosition(193, 430, 80, 8); - LineImage->SetStyle(STYLE_BACKGROUND_COLOR, 0xffdddddd); - LineImage->SetStyle(STYLE_BACKGROUND_OPA, 0xff); - LineImage->SetVisible(false); + + GroupMain_->Add(ImageArrow_); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FlashlightView::InitViewMainData"); } + + return GroupMain_; } - UIScrollView *FlashlightView::GetGroupView() + void FlashlightView::UpdateViewMainScreenFlashing(bool flag) { - if (group != nullptr) + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[@CHENG][%d]", __LINE__); + if(nullptr == GroupMain_) + return; + + if(false == GroupMain_->IsVisible()) + return; + + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[@CHENG][%d]:%d", __LINE__, flag); + if(true == flag) { - return group; + GroupMain_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full); } else { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FlashlightView::group is new fail!!"); + GroupMain_->SetStyle(STYLE_BACKGROUND_COLOR, presenter_->GetColorValue()); + } + + Draw(); + } + + void FlashlightView::UpdateViewMainScreen(void) + { + if(nullptr == SwipeView_) + return; + + SwipeView_->SetCurrentPage(0); + + if(0 == presenter_->GetFlashingLevel()) + UpdateViewMainScreenFlashing(false); + else + presenter_->StartFlashingTimer(); + } + + void FlashlightView::DeinitViewSettingData() + { + if(nullptr != GroupSetting_) + { + GroupSetting_->RemoveAll(); + delete GroupSetting_; + GroupSetting_ = nullptr; + + if(nullptr != LabelTitle_) + { + delete LabelTitle_; + LabelTitle_ = nullptr; + } + if(nullptr != ImageColorSetting_) + { + delete ImageColorSetting_; + ImageColorSetting_ = nullptr; + } + if(nullptr != ImageFlashingSetting_) + { + delete ImageFlashingSetting_; + ImageFlashingSetting_ = nullptr; + } + if(nullptr != LabelColorSetting_) + { + delete LabelColorSetting_; + LabelColorSetting_ = nullptr; + } + if(nullptr != LabelFlashingSetting_) + { + delete LabelFlashingSetting_; + LabelFlashingSetting_ = nullptr; + } + } + } + + UIViewGroup * FlashlightView::InitViewSettingData() + { + if(nullptr == GroupSetting_) + { + GroupSetting_ = new UIViewGroup(); + if(nullptr == GroupSetting_) + return nullptr; + + // GroupSetting_->SetViewId(S_ViewId_NoDataGroup_); + GroupSetting_->SetPosition(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); + GroupSetting_->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE); + GroupSetting_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full); + GroupSetting_->SetTouchable(true); + GroupSetting_->SetDraggable(true); + GroupSetting_->SetOnDragListener(presenter_); + + if(nullptr == LabelTitle_) + { + LabelTitle_ = CreateUILabelExt(83, 50, 300, 35, STR_FLASHLIGHT_SETTING, 30, 35, Color::White().full, + TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + if(nullptr == LabelTitle_) + return nullptr; + } + + if(nullptr == ImageColorSetting_) + { + ImageColorSetting_ = new UIImageView(); + if (nullptr == ImageColorSetting_) + return nullptr; + + ImageColorSetting_->SetViewId(Flashlight_ViewId_ImageColorSetting_); + ImageColorSetting_->SetPosition(60, 140, 160, 160); + ImageColorSetting_->SetSrc(COLOR_SETTING_IMAGE); + ImageColorSetting_->SetTouchable(true); + ImageColorSetting_->SetOnClickListener(presenter_); + } + + if(nullptr == ImageFlashingSetting_) + { + ImageFlashingSetting_ = new UIImageView(); + if (nullptr == ImageFlashingSetting_) + return nullptr; + + ImageFlashingSetting_->SetViewId(Flashlight_ViewId_ImageFlashingSetting_); + ImageFlashingSetting_->SetPosition(246, 140, 160, 160); + ImageFlashingSetting_->SetSrc(FLASHING_SETTING_IMAGE); + ImageFlashingSetting_->SetTouchable(true); + ImageFlashingSetting_->SetOnClickListener(presenter_); + } + + if(nullptr == LabelColorSetting_) + { + LabelColorSetting_ = CreateUILabelExt(80, 320, 120, 35, STR_LIGHT_COLOR, 30, 35, 0xff999999, + TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + if(nullptr == LabelColorSetting_) + return nullptr; + } + + if(nullptr == LabelFlashingSetting_) + { + LabelFlashingSetting_ = CreateUILabelExt(266, 320, 120, 35, STR_FLICKER_FREQUENCY, 30, 35, 0xff999999, + TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + if(nullptr == LabelFlashingSetting_) + return nullptr; + } + + GroupSetting_->Add(LabelTitle_); + GroupSetting_->Add(ImageColorSetting_); + GroupSetting_->Add(ImageFlashingSetting_); + GroupSetting_->Add(LabelColorSetting_); + GroupSetting_->Add(LabelFlashingSetting_); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FlashlightView::InitViewSettingData"); + } + + return GroupSetting_; + } + + void FlashlightView::DeinitColorSettingData() + { + if(nullptr != GroupColorSetting_) + { + GroupColorSetting_->RemoveAll(); + delete GroupColorSetting_; + GroupColorSetting_ = nullptr; + + if(nullptr != LabelColorSettingTitle_) + { + delete LabelColorSettingTitle_; + LabelColorSettingTitle_ = nullptr; + } + + uint8_t i = 0; + for(i = 0; i < COLOR_SETTING_ITEM_COUNT; i++) + { + if(nullptr != ImageColorSettingItem_[i][0]) + { + delete ImageColorSettingItem_[i][0]; + ImageColorSettingItem_[i][0] = nullptr; + } + if(nullptr != ImageColorSettingItem_[i][1]) + { + delete ImageColorSettingItem_[i][1]; + ImageColorSettingItem_[i][1] = nullptr; + } + } + } + } + + UIViewGroup * FlashlightView::InitColorSettingData() + { + if(nullptr == GroupColorSetting_) + { + GroupColorSetting_ = new UIViewGroup(); + if(nullptr == GroupColorSetting_) + return nullptr; + + GroupColorSetting_->SetViewId(Flashlight_ViewId_GroupColorSetting_); + GroupColorSetting_->SetPosition(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); + GroupColorSetting_->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE); + GroupColorSetting_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full); + GroupColorSetting_->SetTouchable(true); + GroupColorSetting_->SetDraggable(true); + GroupColorSetting_->SetOnDragListener(presenter_); + + if(nullptr == LabelColorSettingTitle_) + { + LabelColorSettingTitle_ = CreateUILabelExt(83, 50, 300, 35, STR_LIGHT_COLOR, 30, 35, Color::White().full, + TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + if(nullptr == LabelColorSettingTitle_) + return nullptr; + } + GroupColorSetting_->Add(LabelColorSettingTitle_); + + uint8_t i = 0; + for(i = 0; i < COLOR_SETTING_ITEM_COUNT; i++) + { + int16_t x = 0; + int16_t y = 0; + + switch(i) + { + case 0: + case 1: + case 2: + x = 43 + (120 + 10)*i; + y = 130; + ImageColorSettingItem_[i][0] = + CreateImageColorSettingItem_(nullptr, x, y, 120, 120, COLOR_SETTING_SELECTED_IMAGE); + GroupColorSetting_->Add(ImageColorSettingItem_[i][0]); + x = 43 + (120 + 10)*i + 10; + y = 130 + 10; + ImageColorSettingItem_[i][1] = + CreateImageColorSettingItem_(Flashlight_ViewId_ImageColorSettingItem_[i], + x, y, 100, 100, ImageColorSettingItemSrc_[i]); + GroupColorSetting_->Add(ImageColorSettingItem_[i][1]); + break; + + case 3: + case 4: + x = 43 + (120 + 10)*(i - 3); + y = 260; + ImageColorSettingItem_[i][0] = + CreateImageColorSettingItem_(nullptr, x, y, 120, 120, COLOR_SETTING_SELECTED_IMAGE); + GroupColorSetting_->Add(ImageColorSettingItem_[i][0]); + x = 43 + (120 + 10)*(i - 3) + 10; + y = 260 + 10; + ImageColorSettingItem_[i][1] = + CreateImageColorSettingItem_(Flashlight_ViewId_ImageColorSettingItem_[i], + x, y, 100, 100, ImageColorSettingItemSrc_[i]); + GroupColorSetting_->Add(ImageColorSettingItem_[i][1]); + break; + + case 5: + x = 43 + (120 + 10)*(i - 3); + y = 260; + ImageColorSettingItem_[i][0] = + CreateImageColorSettingItem_(nullptr, x, y, 120, 120, COLOR_SETTING_SELECTED_IMAGE); + GroupColorSetting_->Add(ImageColorSettingItem_[i][0]); + x = 43 + (120 + 10)*(i - 3) + 20; + y = 260 + 20; + ImageColorSettingItem_[i][1] = + CreateImageColorSettingItem_(Flashlight_ViewId_ImageColorSettingItem_[i], + x, y, 80, 80, ImageColorSettingItemSrc_[i]); + GroupColorSetting_->Add(ImageColorSettingItem_[i][1]); + break; + } + if(presenter_->GetColorIndex() == i) + ImageColorSettingItem_[i][0]->SetVisible(true); + else + ImageColorSettingItem_[i][0]->SetVisible(false); + + ImageColorSettingItem_[i][1]->SetVisible(true); + } + + container_->Add(GroupColorSetting_); + } + + return GroupColorSetting_; + } + + UIImageView * FlashlightView::CreateImageColorSettingItem_(char * id, int16_t x, int16_t y, int16_t w, int16_t h, + char * src) + { + UIImageView * temp_UIImageView = new UIImageView(); + if (nullptr == temp_UIImageView) return nullptr; + + if(nullptr != id) + temp_UIImageView->SetViewId(id); + temp_UIImageView->SetPosition(x, y, w, h); + temp_UIImageView->SetSrc(src); + temp_UIImageView->SetTouchable(true); + temp_UIImageView->SetOnClickListener(presenter_); + + return temp_UIImageView; + } + + void FlashlightView::UpdateColorSettingItem(void) + { + uint8_t i = 0; + for(i = 0; i < COLOR_SETTING_ITEM_COUNT; i++) + { + if(nullptr == ImageColorSettingItem_[i][0]) + return; + + if(presenter_->GetColorIndex() == i) + ImageColorSettingItem_[i][0]->SetVisible(true); + else + ImageColorSettingItem_[i][0]->SetVisible(false); } } - void FlashlightView::SetTheGroupViewColor(int64_t colorValue) + void FlashlightView::DeinitColorCustomData() { - if (group != nullptr) + if(nullptr != GroupColorCustom_) { - group->SetStyle(STYLE_BACKGROUND_COLOR, colorValue); - group->Invalidate(); + GroupColorCustom_->RemoveAll(); + delete GroupColorCustom_; + GroupColorCustom_ = nullptr; + + if(nullptr != ImageColorCustom_) + { + delete ImageColorCustom_; + ImageColorCustom_ = nullptr; + } } - else + } + + UIViewGroup * FlashlightView::InitColorCustomData() + { + if(nullptr == GroupColorCustom_) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FlashlightView::group is new fail!!"); - return; + GroupColorCustom_ = new UIViewGroup(); + if(nullptr == GroupColorCustom_) + return nullptr; + + GroupColorCustom_->SetViewId(Flashlight_ViewId_GroupColorCustom_); + GroupColorCustom_->SetPosition(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); + GroupColorCustom_->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE); + GroupColorCustom_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full); + GroupColorCustom_->SetTouchable(true); + GroupColorCustom_->SetDraggable(true); + GroupColorCustom_->SetOnDragListener(presenter_); + + if(nullptr == ImageColorCustom_) + { + ImageColorCustom_ = new UIImageView; + if(nullptr == ImageColorCustom_) + return nullptr; + + ImageColorCustom_->SetPosition(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); + } + + container_->Add(GroupColorCustom_); } + + return GroupColorCustom_; } - void FlashlightView::OnStart() + void FlashlightView::DeinitFlashingSettingData() { - View::OnStart(); - FlashlightViewInit(); + if(nullptr != ScrollFlashingSetting_) + { + ScrollFlashingSetting_->RemoveAll(); + delete ScrollFlashingSetting_; + ScrollFlashingSetting_ = nullptr; - // 增加按键监听 - RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::FlashlightPresenter::GetInstance(); - RootView::GetInstance()->SetOnKeyActListener(keyactListener); + if(nullptr != LabelFlashingSettingTitle_) + { + delete LabelFlashingSettingTitle_; + LabelFlashingSettingTitle_ = nullptr; + } + + uint8_t i = 0; + for(i = 0; i < FLASHING_SETTING_ITEM_COUNT; i++) + { + if(nullptr != GroupFlashingSettingItem_[i]) + { + GroupFlashingSettingItem_[i]->RemoveAll(); + delete GroupFlashingSettingItem_[i]; + GroupFlashingSettingItem_[i] = nullptr; + + if(nullptr != LabelFlashingSettingItem_[i]) + { + delete LabelFlashingSettingItem_[i]; + LabelFlashingSettingItem_[i] = nullptr; + } + if(nullptr != RadioButtonFlashingSettingItem_[i]) + { + delete RadioButtonFlashingSettingItem_[i]; + RadioButtonFlashingSettingItem_[i] = nullptr; + } + } + } + } } - void FlashlightView::OnSetUpView() + UIViewGroup * FlashlightView::InitFlashingSettingData() { + if(nullptr == ScrollFlashingSetting_) + { + ScrollFlashingSetting_ = new UIScrollView(); + if(nullptr == ScrollFlashingSetting_) + return nullptr; + + ScrollFlashingSetting_->SetViewId(Flashlight_ViewId_ScrollFlashingSetting_); + ScrollFlashingSetting_->SetPosition(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT - 50); + ScrollFlashingSetting_->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE); + ScrollFlashingSetting_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full); + ScrollFlashingSetting_->SetTouchable(true); + ScrollFlashingSetting_->SetDraggable(true); + ScrollFlashingSetting_->SetOnDragListener(presenter_); + + ScrollFlashingSetting_->SetScrollBlankSize(40); + ScrollFlashingSetting_->SetReboundSize(40); + ScrollFlashingSetting_->SetMaxScrollDistance(1000); + ScrollFlashingSetting_->SetThrowDrag(true); + ScrollFlashingSetting_->RequestFocus(); + ScrollFlashingSetting_->SetRotateFactor(2); + + if(nullptr == LabelFlashingSettingTitle_) + { + LabelFlashingSettingTitle_ = CreateUILabelExt(83, 50, 300, 35, STR_FLICKER_FREQUENCY, 30, 35, Color::White().full, + TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + if(nullptr == LabelFlashingSettingTitle_) + return nullptr; + } + + uint8_t i = 0; + uint16_t text_id[FLASHING_SETTING_ITEM_COUNT] = {STR_NO_FLICKER, STR_FAST_FLICKER, STR_SLOW_FLICKER}; + for(i = 0; i < FLASHING_SETTING_ITEM_COUNT; i++) + { + LabelFlashingSettingItem_[i] = CreateUILabelExt(47, 33, 230, 35, text_id[i], 30, 35, Color::White().full, + TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER); + RadioButtonFlashingSettingItem_[i] = CreateUIRadioButtonItem(300, 30, 40, 40); + GroupFlashingSettingItem_[i] = CreateUIGroupItem(Flashlight_ViewId_FlashingSettingItem_[i], + 43, 120 + 120 * i, 380, 100); + + GroupFlashingSettingItem_[i]->Add(LabelFlashingSettingItem_[i]); + GroupFlashingSettingItem_[i]->Add(RadioButtonFlashingSettingItem_[i]); + ScrollFlashingSetting_->Add(GroupFlashingSettingItem_[i]); + } + + ScrollFlashingSetting_->Add(LabelFlashingSettingTitle_); + + container_->Add(ScrollFlashingSetting_); + } + + return dynamic_cast(ScrollFlashingSetting_); + // return ScrollFlashingSetting_; + } + + UILabelExt * FlashlightView::CreateUILabelExt(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t text_id, + int64_t font_size, int64_t line_height, int64_t color_value, + UITextLanguageAlignment hor_align, UITextLanguageAlignment ver_align) + { + UILabelExt * temp_UILabelExt = new UILabelExt(); + if(nullptr == temp_UILabelExt) + return nullptr; + + temp_UILabelExt->SetPosition(x, y, w, h); + temp_UILabelExt->SetStyle(STYLE_TEXT_FONT, font_size); + temp_UILabelExt->SetStyle(STYLE_LINE_HEIGHT, line_height); + temp_UILabelExt->SetTextId(text_id); + temp_UILabelExt->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION); + temp_UILabelExt->SetAlign(hor_align, ver_align); + temp_UILabelExt->SetRollSpeed(70); + temp_UILabelExt->SetFont(DEFAULT_VECTOR_FONT_FILENAME, font_size); + temp_UILabelExt->SetStyle(STYLE_TEXT_COLOR, color_value); + + return temp_UILabelExt; + } + + UIRadioButton * FlashlightView::CreateUIRadioButtonItem(int16_t x, int16_t y, int16_t w, int16_t h) + { + UIRadioButton * temp_UIRadioButton = new UIRadioButton(); + if(nullptr == temp_UIRadioButton) + return temp_UIRadioButton; + + temp_UIRadioButton->SetPosition(x, y, w, h); + temp_UIRadioButton->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full); + temp_UIRadioButton->SetImages(PNG_CHECKBOX_ON_IMAGE, PNG_CHECKBOX_OFF_IMAGE); + // temp_UIRadioButton->SetOnChangeListener(presenter_); + + return temp_UIRadioButton; + } + + UIViewGroup * FlashlightView::CreateUIGroupItem(char * id, int16_t x, int16_t y, int16_t w, int16_t h) + { + UIViewGroup * temp_UIViewGroup = new UIViewGroup(); + if(nullptr == temp_UIViewGroup) + return nullptr; + + temp_UIViewGroup->SetViewId(id); + temp_UIViewGroup->SetPosition(x, y, w, h); + temp_UIViewGroup->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919); + temp_UIViewGroup->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE); + temp_UIViewGroup->SetStyle(STYLE_BORDER_RADIUS, 52); + temp_UIViewGroup->SetTouchable(true); + // temp_UIViewGroup->SetDraggable(true); + temp_UIViewGroup->SetOnClickListener(presenter_); + + return temp_UIViewGroup; + } + + void FlashlightView::UpdateFlashingSettingItem(void) + { + uint8_t i = 0; + for(i = 0; i < FLASHING_SETTING_ITEM_COUNT; i++) + { + if(nullptr == RadioButtonFlashingSettingItem_[i]) + return; + + if(presenter_->GetFlashingLevel() == i) + RadioButtonFlashingSettingItem_[i]->SetState(UICheckBox::SELECTED); + else + RadioButtonFlashingSettingItem_[i]->SetState(UICheckBox::UNSELECTED); + } + } + + struct FlashlightViewMapper + { + FlashlightView::ENUM_FLASHLIGHT_SCREEN screen_index; + UIViewGroup * (FlashlightView::*func)(void); + }; + static const FlashlightViewMapper ViewMapper[] = + { + {FlashlightView::ENUM_FLASHLIGHT_SCREEN_VIEW_MAIN, &FlashlightView::InitSwipeData}, + {FlashlightView::ENUM_FLASHLIGHT_SCREEN_VIEW_SETTING, &FlashlightView::InitSwipeData}, + {FlashlightView::ENUM_FLASHLIGHT_SCREEN_COLOR_SETTING, &FlashlightView::InitColorSettingData}, + {FlashlightView::ENUM_FLASHLIGHT_SCREEN_COLOR_CUSTOM, &FlashlightView::InitColorCustomData}, + {FlashlightView::ENUM_FLASHLIGHT_SCREEN_FLASHING_SETTING, &FlashlightView::InitFlashingSettingData}, + }; + + void FlashlightView::DisplaySelectScreen(uint8_t ScreenIndex) + { + if(ENUM_FLASHLIGHT_SCREEN_MAX <= ScreenIndex) + { + return; + } + + uint8_t i = 0; + for(i = 0; i < ENUM_FLASHLIGHT_SCREEN_MAX; i++) + { + if(nullptr != ScreenGroupArray_[i]) + { + ScreenGroupArray_[i]->SetVisible(false); + } + } + + if(nullptr == ScreenGroupArray_[ScreenIndex]) + { + ScreenGroupArray_[ScreenIndex] = (this->*(ViewMapper[ScreenIndex].func))(); + if(nullptr == ScreenGroupArray_[ScreenIndex]) + return; + } + ScreenGroupArray_[ScreenIndex]->SetVisible(true); + + switch (ScreenIndex) + { + case ENUM_FLASHLIGHT_SCREEN_VIEW_MAIN: + ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); + UpdateViewMainScreen(); + break; + + case ENUM_FLASHLIGHT_SCREEN_VIEW_SETTING: + SwipeView_->SetCurrentPage(1); + break; + + case ENUM_FLASHLIGHT_SCREEN_COLOR_SETTING: + UpdateColorSettingItem(); + break; + + case ENUM_FLASHLIGHT_SCREEN_COLOR_CUSTOM: + break; + + case ENUM_FLASHLIGHT_SCREEN_FLASHING_SETTING: + UpdateFlashingSettingItem(); + break; + + // default: + // break; + } - View::OnSetUpView(); - group->Add(FlashlightVector); - group->Add(LineImage); - RootView::GetInstance()->Add(group); - container_ = group; Draw(); } - void FlashlightView::OnTearDownView() + void FlashlightView::DisplayViewMainScreen() { - View::OnTearDownView(); - return; + DisplaySelectScreen(ENUM_FLASHLIGHT_SCREEN_VIEW_MAIN); } - void FlashlightView::OnStop() + void FlashlightView::DisplayViewSettingScreen() { + DisplaySelectScreen(ENUM_FLASHLIGHT_SCREEN_VIEW_SETTING); + } - View::OnStop(); - RootView::GetInstance()->RemoveAll(); - RootView::GetInstance()->ClearOnKeyActListener(); - return; + void FlashlightView::DisplayColorSettingScreen() + { + DisplaySelectScreen(ENUM_FLASHLIGHT_SCREEN_COLOR_SETTING); + } + + void FlashlightView::DisplayColorCustomScreen() + { + DisplaySelectScreen(ENUM_FLASHLIGHT_SCREEN_COLOR_CUSTOM); + } + + void FlashlightView::DisplayFlashingSettingScreen() + { + DisplaySelectScreen(ENUM_FLASHLIGHT_SCREEN_FLASHING_SETTING); } + } \ No newline at end of file diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/color_0.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/color_0.bin new file mode 100644 index 000000000..11a295cd3 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/color_0.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a7795ec7eb4265a8e4e58691f71a44f784291c9c57302ae9efc5496a476ae7c +size 6824 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/color_1.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/color_1.bin new file mode 100644 index 000000000..2ac4153c3 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/color_1.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:668268cd43834f2195637d9251153cb54e3bc450207b052cf71272726988faff +size 6824 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/color_2.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/color_2.bin new file mode 100644 index 000000000..e1f4741fa --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/color_2.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a55b3a2bf19d5c2121b1d7908b072a3039154942aac81258710ebd6313277fab +size 6824 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/color_3.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/color_3.bin new file mode 100644 index 000000000..54f6860a6 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/color_3.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b16200a6c887fa4675c9d9628ffaa8c79a26ff3c1df749ac6e5624379582133 +size 6824 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/color_4.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/color_4.bin new file mode 100644 index 000000000..0279e27fd --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/color_4.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12f48f0ce227179cde03c4844f56df7dea84291504ef667e43d493caa430668e +size 6824 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/color_5.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/color_5.bin new file mode 100644 index 000000000..9767cc00d --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/color_5.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5cf4d2f4577666a17ffcfa158c1b7e3898b0182a8f2ea1d318337599f31692e +size 4504 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/color_selected.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/color_selected.bin new file mode 100644 index 000000000..6818f1a83 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/color_selected.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7bb91b520ac3cd41db992d8c5de26e13cb4589a734c77c4ee5a1691b012ed0a8 +size 9624 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/color_setting.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/color_setting.bin new file mode 100644 index 000000000..9cd2a20a9 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/color_setting.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb8bf8a658e242e218b486d858f62d45b47132bbc6d8e40a544732e82e416587 +size 17304 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/flahing_setting.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/flahing_setting.bin new file mode 100644 index 000000000..c79c5fd26 --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/flahing_setting.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1af3c6e4bc46d709b475d420a2f560fd3715cd2e59bab25d4dfb4c69dafec2f8 +size 17304 diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/up_arrow.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/up_arrow.bin new file mode 100644 index 000000000..02ec9f96c --- /dev/null +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/flashlight/up_arrow.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9502e15d326f052a44264af777546e4c895ee2a38a107d8ee8282969655816b +size 792 -- 2.17.1