* @Author: luozheng 1732036298@qq.com
* @Date: 2024-04-16 14:36:13
* @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-04-16 16:18:00
+ * @LastEditTime: 2024-04-18 14:38:37
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/brightnesslevel/src/BrightnessLevelView.cpp
*/
#include "brightnesslevel/include/BrightnessLevelView.h"
BrightnessLevelView::~BrightnessLevelView()
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "~BrightnessLevelView::BrightnessLevelView");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BrightnessLevelView::~BrightnessLevelView");
ClearAll();
g_pBrightnessLevelView = nullptr;
}
* @Author: luozheng 1732036298@qq.com\r
* @Date: 2024-01-29 15:37:44\r
* @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-04-16 16:51:33\r
+ * @LastEditTime: 2024-04-18 14:52:47\r
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/displaybrightness/include/BrightnessControlView.h\r
*/\r
#ifndef BRIGHTNESS_CONTROL_VIEW_H\r
#include "components/ui_slider.h"\r
#include "components/ui_image_view.h"\r
#include <memory>\r
+#include "map"\r
namespace OHOS\r
{\r
#define BRIGHTNESS_MIN 51\r
#define BRIGHTNESS_MAX 0xff\r
#define BRIGHTNESS_PROGRESS "progress"\r
\r
+ // 步骤 1: 定义策略接口.定义一个策略接口,所有的亮度调整策略都需要实现这个接口\r
+ class BrightnessControlView;\r
+ class BrightnessChangeStrategy\r
+ {\r
+ public:\r
+ virtual void ApplyChange(BrightnessControlView *view, UISlider *slider, uint8_t value) = 0;\r
+ virtual ~BrightnessChangeStrategy() = default;\r
+ };\r
+\r
static const char *BRIGHTNESS_CONTROL_SLIDER = "BrightnessControlViewSlider";\r
class BrightnessSliderEventListener : public UISlider::UISliderEventListener,\r
public UIView::OnClickListener,\r
public:\r
BrightnessSliderEventListener();\r
~BrightnessSliderEventListener();\r
- static std::shared_ptr<BrightnessSliderEventListener> GetInstance();\r
+ static BrightnessSliderEventListener *GetInstance();\r
void ChangeBrightness(uint8_t status, uint8_t value);\r
void OnChange(int32_t value) override;\r
void OnRelease(int32_t value) override;\r
bool OnDrag(UIView &view, const DragEvent &event) override;\r
\r
private:\r
- int32_t BrightnessValue; // 亮度值\r
+ std::map<uint8_t, std::shared_ptr<BrightnessChangeStrategy>> strategyMap;\r
};\r
class BrightnessControlView\r
{\r
UIScrollView *BrightnessControlViewInit(void);\r
void ClearAll(void);\r
UISlider *GetBrightnessControlViewSlider(void);\r
- int16_t CurrentBrightnessValue{0}; // 当前亮度值\r
- void SetScreenBrightnessValue(unsigned char value);\r
+\r
private:\r
bool SetUpScrollView(void);\r
bool SetUpSlider(void);\r
bool SetUpImageView(void);\r
+ BrightnessSliderEventListener *rawPointer{nullptr};\r
UIScrollView *BrightnessControlScrollView{nullptr};\r
UISlider *BrightnessControlViewSlider = nullptr;\r
UIImageView *BrightnessControlViewImageIcon = nullptr;\r
* @Author: luozheng 1732036298@qq.com\r
* @Date: 2024-04-12 20:11:04\r
* @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-04-17 10:33:16\r
+ * @LastEditTime: 2024-04-18 10:23:37\r
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/displaybrightness/include/DisplayBrightnessModel.h\r
*/\r
#ifndef DISPLAY_BRIGHTNESS_MODEL_H_\r
void SetRaiseToBrightnessCheckBoxButtonStatus(bool value);\r
bool RaiseToBrightnessCheckBoxButtonStatusInit(void);\r
bool ScreenDurationRadioButtonSlectStatusInit(void);\r
+ bool SelectScreenDurationLabelInit(void);\r
void SetScreenDurationTime(unsigned int time);\r
unsigned int GetScreenDurationTime(void);\r
private:\r
* @Author: luozheng 1732036298@qq.com\r
* @Date: 2024-02-18 09:10:05\r
* @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-04-17 10:21:03\r
+ * @LastEditTime: 2024-04-18 10:59:11\r
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/displaybrightness/include/DisplayBrightnessPresenter.h\r
*/\r
#ifndef _DISPLAY_BRIGHTNESS_PRESENTER_H\r
\r
static DisplayBrightnessPresenter *GetInstance();\r
void SetRaiseToBrightnessState(bool value);\r
- void SetScreenDurationRadioButtonSlectStatus(uint32_t value);\r
+ void SetScreenDurationRadioButtonSelectStatus(uint32_t value);\r
+ void SetSelectScreenDurationLabel(uint32_t value);\r
\r
private:\r
// 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;\r
int16_t w;\r
int16_t h;\r
const char *ViewId;\r
- const char *ImageSrc;\r
+ //const char *ImageSrc;\r
};\r
struct LabelConfig\r
{\r
int16_t height;\r
int16_t fontSize; // 字体大小\r
int16_t lineHeigh; // 行高\r
- const char *text; // 文本\r
+ std::string text; // 文本\r
uint8_t lineBreakMode; // 断行模式。\r
};\r
struct CheckBoxConfig\r
UIScrollView *GetDisplayBrightnessScrollView(int16_t i);\r
UICheckBox::UICheckBoxState GetRaiseToBrightnessCheckBoxButtonState(void);\r
void SetRaiseToBrightnessCheckBoxButtonState(UICheckBox::UICheckBoxState state);\r
- ScreenDurationView * GetScreenDurationView(void);\r
+ ScreenDurationView *GetScreenDurationView(void);\r
+ UILabelExt * GetSelectScreenDurationLabel(void);\r
public:\r
void OnStart() override;\r
void OnSetUpView() override;\r
void OnStop() override;\r
\r
private:\r
- //ScreenDurationView *p_ScreenDurationView{nullptr}; // 亮屏时长视图\r
+ // ScreenDurationView *p_ScreenDurationView{nullptr}; // 亮屏时长视图\r
std::shared_ptr<ScreenDurationView> p_ScreenDurationView;\r
+\r
private:\r
bool SetUpScrollView(void);\r
bool SetTheTitle(void);\r
UIButton *SetTheButton(ButtonConfig &buttonconfig, UIView::OnClickListener *clickListener);\r
bool InitDisplayBrightnessViewButton(void);\r
- UILabel *SetUpLabel(LabelConfig &labelconfig); // 设置标签\r
+ UILabelExt *SetUpLabel(LabelConfig &labelconfig); // 设置标签\r
bool InitDisplayBrightnessViewLabel(void);\r
UIImageView *SetUpImageView(ImageConfig &imageconfig); // 设置图片\r
bool InitDisplayBrightnessViewImage(void);\r
UICheckBox *SetUpCheckBox(CheckBoxConfig &checkboxconfig); // 设置复选框\r
bool InitDisplayBrightnessViewCheckBox(void);\r
UIScrollView *DisplayBrightnessScrollView[2]{nullptr};\r
- UILabel *DisplayBrightnessTitleLabel = nullptr; // 显示与亮度标题\r
- UIButton *BringhtnessControlButton = nullptr; // 亮度调节按钮\r
- UIButton *ScreenDurationButton = nullptr; // 亮屏时长按钮\r
- UILabel *BringhtnessControlLabel = nullptr; // 亮度调节标签\r
- UILabel *ScreenDurationLabel = nullptr; // 亮屏时长标签\r
- UILabel *RaiseToBrightnessLabel = nullptr; // 抬腕亮屏标签\r
+ UILabelExt *DisplayBrightnessTitleLabel = nullptr; // 显示与亮度标题\r
+ UIButton *BringhtnessControlButton = nullptr; // 亮度调节按钮\r
+ UIButton *ScreenDurationButton = nullptr; // 亮屏时长按钮\r
+ UILabelExt *BringhtnessControlLabel = nullptr; // 亮度调节标签\r
+ UILabelExt *ScreenDurationLabel = nullptr; // 亮屏时长标签\r
+ UILabelExt *selectScreenDurationLabel = nullptr; // 选择的亮屏时间\r
+ UILabelExt *RaiseToBrightnessLabel = nullptr; // 抬腕亮屏标签\r
UIImageView *NextImage[2]{nullptr};\r
UIImageView *RaiseToBrightnessImage = nullptr; // 抬腕亮屏图片\r
UICheckBox *RaiseToBrightnessCheckBoxButton = nullptr; // 抬腕亮屏按钮\r
#include <custom_utils.h>\r
#include "power_display_service.h"\r
#include "config/include/ConfigModel.h"\r
+#include "map"\r
+#include "iostream"\r
namespace OHOS\r
{\r
static BrightnessControlView *g_pBrightnessControlView{nullptr};\r
delete BrightnessControlViewImageIcon;\r
BrightnessControlViewImageIcon = nullptr;\r
\r
+ delete rawPointer;\r
+ rawPointer = nullptr;\r
+\r
delete BrightnessControlScrollView;\r
BrightnessControlScrollView = nullptr;\r
}\r
BrightnessControlViewSlider->SetValue(ConfigModel::GetInstance()->GetBrightness());\r
BrightnessControlViewSlider->SetIntercept(true);\r
\r
- /*\r
- 注意,使用get方法获取的原生指针不应被用来管理对象的生命周期(不要用它去调用delete),因为智能指针会自动处理对象的销毁。\r
- */\r
- BrightnessSliderEventListener *rawPointer = BrightnessSliderEventListener::GetInstance().get();\r
- BrightnessControlViewSlider->SetSliderEventListener(rawPointer );\r
- BrightnessControlViewSlider->SetOnClickListener(rawPointer );\r
- BrightnessControlViewSlider->SetOnDragListener(rawPointer );\r
+ if (rawPointer == nullptr)\r
+ {\r
+ rawPointer = new BrightnessSliderEventListener();\r
+ if (rawPointer == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "rawPointer new fail");\r
+ return false;\r
+ }\r
+ }\r
+ BrightnessControlViewSlider->SetSliderEventListener(rawPointer);\r
+ BrightnessControlViewSlider->SetOnClickListener(rawPointer);\r
+ BrightnessControlViewSlider->SetOnDragListener(rawPointer);\r
BrightnessControlViewSlider->SetKnobStyle(StyleDefault::GetSliderKnobStyle());\r
return true;\r
}\r
return BrightnessControlViewSlider;\r
}\r
\r
- void BrightnessControlView::SetScreenBrightnessValue(unsigned char value)\r
- {\r
- BrightnessControlViewSlider->SetValue(value);\r
- }\r
\r
// 亮度调节视图初始化\r
UIScrollView *BrightnessControlView::BrightnessControlViewInit(void)\r
}\r
\r
/* -------------------------------------------------------------------------- */\r
- static BrightnessSliderEventListener *g_pBrightnessSliderEventListener{nullptr};\r
- constexpr int16_t BRIGHTNESS_CHANGE = 10;\r
\r
+ static constexpr int16_t BRIGHTNESS_CHANGE = 10;\r
+ // 步骤 2: 实现具体的策略\r
+ class LowerBrightnessStrategy : public BrightnessChangeStrategy\r
+ {\r
+ public:\r
+ void ApplyChange(BrightnessControlView *view, UISlider *slider, uint8_t value) override\r
+ {\r
+ // Implement the logic similar to the BRIGHTNESSLOWERS case\r
+ uint8_t newBrightnessValue = slider->GetValue() - BRIGHTNESS_CHANGE;\r
+ if (newBrightnessValue < BRIGHTNESS_MIN)\r
+ {\r
+ newBrightnessValue = BRIGHTNESS_MIN;\r
+ }\r
+\r
+ const power_display_svr_api_t *display_api = power_display_svr_get_api();\r
+ if (display_api->set_brightness(newBrightnessValue) != ERRCODE_SUCC)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LowerBrightness: set_brightness fail!");\r
+ }\r
+ else\r
+ {\r
+ slider->SetValue(newBrightnessValue);\r
+ }\r
+ }\r
+ };\r
+\r
+ class ElevateBrightnessStrategy : public BrightnessChangeStrategy\r
+ {\r
+ public:\r
+ void ApplyChange(BrightnessControlView *view, UISlider *slider, uint8_t value) override\r
+ {\r
+ // Implement the logic similar to the BRIGHTNESSEVATED case\r
+ uint8_t newBrightnessValue = slider->GetValue() + BRIGHTNESS_CHANGE;\r
+ if (newBrightnessValue > BRIGHTNESS_MAX)\r
+ {\r
+ newBrightnessValue = BRIGHTNESS_MAX;\r
+ }\r
+\r
+ const power_display_svr_api_t *display_api = power_display_svr_get_api();\r
+ if (display_api->set_brightness(newBrightnessValue) != ERRCODE_SUCC)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ElevateBrightness: set_brightness fail!");\r
+ }\r
+ else\r
+ {\r
+ slider->SetValue(newBrightnessValue);\r
+ }\r
+ }\r
+ };\r
+\r
+ class DragBrightnessStrategy : public BrightnessChangeStrategy\r
+ {\r
+ public:\r
+ void ApplyChange(BrightnessControlView *view, UISlider *slider, uint8_t value) override\r
+ {\r
+ // Implement the logic similar to the BRIGHTNESSDRAG case\r
+ const power_display_svr_api_t *display_api = power_display_svr_get_api();\r
+ // 更新进度条的显示:\r
+ slider->SetValue(value);\r
+ if (display_api->set_brightness(value) != ERRCODE_SUCC)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ChangeBrightness: set_brightness fail!");\r
+ return;\r
+ }\r
+ }\r
+ };\r
+ /* -------------------------------------------------------------------------- */\r
+ static BrightnessSliderEventListener *g_pBrightnessSliderEventListener{nullptr};\r
BrightnessSliderEventListener::BrightnessSliderEventListener()\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BrightnessSliderEventListener::BrightnessSliderEventListener");\r
+ // 步骤 3: 创建一个映射表将状态映射到策略\r
+ strategyMap[BRIGHTNESSLOWERS] = std::make_shared<LowerBrightnessStrategy>();\r
+ strategyMap[BRIGHTNESSEVATED] = std::make_shared<ElevateBrightnessStrategy>();\r
+ strategyMap[BRIGHTNESSDRAG] = std::make_shared<DragBrightnessStrategy>();\r
g_pBrightnessSliderEventListener = this;\r
}\r
\r
g_pBrightnessSliderEventListener = nullptr;\r
}\r
\r
- std::shared_ptr<BrightnessSliderEventListener> BrightnessSliderEventListener::GetInstance(void)\r
+ BrightnessSliderEventListener *BrightnessSliderEventListener::GetInstance(void)\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BrightnessSliderEventListener::GetInstance");\r
- static std::shared_ptr<BrightnessSliderEventListener> instance(new BrightnessSliderEventListener());\r
- return instance;\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BrightnessSliderEventListener::GetInstance");\r
+ return g_pBrightnessSliderEventListener;\r
}\r
\r
- /// @brief 改变屏幕状态\r
- /// @param status\r
+ // 步骤 4: 使用映射表简化 ChangeBrightness\r
void BrightnessSliderEventListener::ChangeBrightness(uint8_t status, uint8_t value)\r
{\r
- // 1.获取 BrightnessControlView 的实例:\r
- BrightnessControlView *p_BrightnessControlView = BrightnessControlView::GetInstance();\r
- // 2.检查 BrightnessControlView 指针是否为 nullptr,并在为 nullptr 时打印错误日志并返回\r
- if (p_BrightnessControlView == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BrightnessControlView::GetInstance fail!");\r
- return;\r
- }\r
- // 3.获取 p_BrightnessControlView 的进度条 UISlider 实例的指针:\r
- UISlider *progress = p_BrightnessControlView->GetBrightnessControlViewSlider();\r
- // 4.检查 progress 指针是否为 nullptr,并在为 nullptr 时打印错误日志并返回:\r
- if (progress == nullptr)\r
+ auto it = strategyMap.find(status);\r
+ if (it != strategyMap.end())\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ChangeBrightness:progress is nullptr!");\r
- return;\r
- }\r
- // 5.保存当前亮度到变量 BrightnessValue\r
- BrightnessValue = p_BrightnessControlView->CurrentBrightnessValue;\r
-\r
- // 6.获取显示功耗管理服务API接口.\r
- const power_display_svr_api_t *display_api = power_display_svr_get_api();\r
- // 7.根据传入的 status 值进行亮度变化操作\r
- switch (status)\r
- {\r
- case BRIGHTNESSLOWERS:\r
- /* code */\r
- p_BrightnessControlView->CurrentBrightnessValue = progress->GetValue() - BRIGHTNESS_CHANGE;\r
- if (p_BrightnessControlView->CurrentBrightnessValue < BRIGHTNESS_MIN)\r
- {\r
- p_BrightnessControlView->CurrentBrightnessValue = BRIGHTNESS_MIN;\r
- }\r
- break;\r
- case BRIGHTNESSEVATED:\r
- p_BrightnessControlView->CurrentBrightnessValue = progress->GetValue() + BRIGHTNESS_CHANGE;\r
- if (p_BrightnessControlView->CurrentBrightnessValue > BRIGHTNESS_MAX)\r
- {\r
- p_BrightnessControlView->CurrentBrightnessValue = BRIGHTNESS_MAX;\r
- }\r
- break;\r
- case BRIGHTNESSDRAG:\r
- p_BrightnessControlView->CurrentBrightnessValue = value;\r
- if (p_BrightnessControlView->CurrentBrightnessValue < BRIGHTNESS_MIN)\r
- {\r
- p_BrightnessControlView->CurrentBrightnessValue = BRIGHTNESS_MIN;\r
- }\r
- else if (p_BrightnessControlView->CurrentBrightnessValue > BRIGHTNESS_MAX)\r
+ // 确保 BrightnessControlView 和 UISlider 都不为 nullptr\r
+ BrightnessControlView *view = BrightnessControlView::GetInstance();\r
+ UISlider *slider = view ? view->GetBrightnessControlViewSlider() : nullptr;\r
+ if (view && slider)\r
{\r
- p_BrightnessControlView->CurrentBrightnessValue = BRIGHTNESS_MAX;\r
+ it->second->ApplyChange(view, slider, value);\r
}\r
- break;\r
- default:\r
- break;\r
- }\r
- // 8.将 p_BrightnessControlView->CurrentBrightnessValue 的值赋给 progress 的值,更新进度条的显示:\r
- progress->SetValue(p_BrightnessControlView->CurrentBrightnessValue);\r
-\r
- // 9.设置当前亮度值并检查是否设置成功\r
- if (display_api->set_brightness(p_BrightnessControlView->CurrentBrightnessValue) != ERRCODE_SUCC)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ChangeBrightness: set_brightness fail!");\r
- return;\r
}\r
}\r
\r
* @Author: luozheng 1732036298@qq.com
* @Date: 2024-04-12 20:11:04
* @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-04-17 10:33:29
+ * @LastEditTime: 2024-04-18 10:55:38
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/displaybrightness/src/DisplayBrightnessModel.cpp
*/
#include "displaybrightness/include/DisplayBrightnessModel.h"
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessViewAndSubViewComponentsStatusInit DisplayBrightnessPresenter GetInstance fail");
return false;
}
- displayBrightnessPresent->SetScreenDurationRadioButtonSlectStatus(GetScreenDurationTime());
+ displayBrightnessPresent->SetScreenDurationRadioButtonSelectStatus(GetScreenDurationTime());
+ return true;
+ }
+
+ bool DisplayBrightnessModel::SelectScreenDurationLabelInit(void)
+ {
+ DisplayBrightnessPresenter *displayBrightnessPresent = DisplayBrightnessPresenter::GetInstance();
+ if (displayBrightnessPresent == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessViewAndSubViewComponentsStatusInit DisplayBrightnessPresenter GetInstance fail");
+ return false;
+ }
+ displayBrightnessPresent->SetSelectScreenDurationLabel(GetScreenDurationTime());
return true;
}
+/*\r
+ * @Author: luozheng 1732036298@qq.com\r
+ * @Date: 2024-03-30 09:14:38\r
+ * @LastEditors: luozheng 1732036298@qq.com\r
+ * @LastEditTime: 2024-04-18 11:16:04\r
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/displaybrightness/src/DisplayBrightnessPresent.cpp\r
+ */\r
#include "AppViewIDs.h"\r
#include "components/ui_label_ext.h"\r
#include "language/font/ui_resource_string.h"\r
#include "power_display_service.h"\r
#include "common/key_code.h"\r
#include <custom_utils.h>\r
+#include "map"\r
+#include "iostream"\r
namespace OHOS\r
{\r
// 当前Presenter属性实例化的内存指针\r
\r
/// @brief 根据value值设置哪个按钮被选中\r
/// @param value\r
- void DisplayBrightnessPresenter::SetScreenDurationRadioButtonSlectStatus(uint32_t value)\r
+ void DisplayBrightnessPresenter::SetScreenDurationRadioButtonSelectStatus(uint32_t value)\r
{\r
ScreenDurationView *p_ScreenDurationView = ScreenDurationView::GetInstance();\r
if (p_ScreenDurationView == nullptr)\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetScreenDurationRadioButtonSlectStatus ScreenDurationView GetInstance fail");\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScreenDurationView GetInstance fail");\r
return;\r
}\r
- switch (value)\r
+\r
+ // 映射表将value映射到特定的单选按钮\r
+ const std::map<uint32_t, ScreenDurationRadioButton> radioButtonMap = {\r
+ {SCREENDURATION_FIVE, ScreenDurationRadioButton1},\r
+ {SCREENDURATION_TEN, ScreenDurationRadioButton2},\r
+ {SCREENDURATION_FIFTEENTH, ScreenDurationRadioButton3},\r
+ {SCREENDURATION_THIRTY, ScreenDurationRadioButton4},\r
+ {SCREENDURATION_SIXTY, ScreenDurationRadioButton5},\r
+ {SCREENDURATION_THREE_HUNDRED, ScreenDurationRadioButton6},\r
+ };\r
+\r
+ auto iter = radioButtonMap.find(value);\r
+ if (iter != radioButtonMap.end())\r
{\r
- case SCREENDURATION_FIVE:\r
- p_ScreenDurationView->SetRadioButtonSelectStatus(ScreenDurationRadioButton1);\r
- break;\r
- case SCREENDURATION_TEN:\r
- p_ScreenDurationView->SetRadioButtonSelectStatus(ScreenDurationRadioButton2);\r
- break;\r
- case SCREENDURATION_FIFTEENTH:\r
- p_ScreenDurationView->SetRadioButtonSelectStatus(ScreenDurationRadioButton3);\r
- break;\r
- case SCREENDURATION_THIRTY:\r
- p_ScreenDurationView->SetRadioButtonSelectStatus(ScreenDurationRadioButton4);\r
- break;\r
- case SCREENDURATION_SIXTY:\r
- p_ScreenDurationView->SetRadioButtonSelectStatus(ScreenDurationRadioButton5);\r
- break;\r
- case SCREENDURATION_THREE_HUNDRED:\r
- p_ScreenDurationView->SetRadioButtonSelectStatus(ScreenDurationRadioButton6);\r
- break;\r
- default:\r
- // Optionally handle any other unexpected value\r
- break;\r
+ p_ScreenDurationView->SetRadioButtonSelectStatus(iter->second);\r
}\r
+ else\r
+ {\r
+ // 处理未知值\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Unexpected duration value");\r
+ }\r
+ }\r
+\r
+ /*\r
+ * @brief 根据value值出设置选择的亮屏时长内容\r
+ */\r
+ void DisplayBrightnessPresenter::SetSelectScreenDurationLabel(uint32_t value)\r
+ {\r
+ DisplayBrightnessView *p_DisplayBrightnessView = DisplayBrightnessView::GetInstance();\r
+ if (p_DisplayBrightnessView == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessView GetInstance fail");\r
+ return;\r
+ }\r
+\r
+ const std::map<uint32_t, std::string> durationMap = {\r
+ {SCREENDURATION_FIVE, "5秒"},\r
+ {SCREENDURATION_TEN, "10秒"},\r
+ {SCREENDURATION_FIFTEENTH, "15秒"},\r
+ {SCREENDURATION_THIRTY, "30秒"},\r
+ {SCREENDURATION_SIXTY, "60秒"},\r
+ {SCREENDURATION_THREE_HUNDRED, "300秒"}};\r
+\r
+ auto iter = durationMap.find(value);\r
+ if (iter != durationMap.end())\r
+ {\r
+ p_DisplayBrightnessView->GetSelectScreenDurationLabel()->SetText(iter->second.c_str());\r
+ }\r
+ else\r
+ {\r
+ // Handle unexpected value\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Unexpected duration value");\r
+ }\r
+\r
+ p_DisplayBrightnessView->GetSelectScreenDurationLabel()->Invalidate();\r
return;\r
}\r
\r
}\r
else if (strcmp(view.GetViewId(), DISPLAY_BRIGHTNESS_VIEW) == 0)\r
{\r
- //NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);\r
+ // NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);\r
NativeAbility::GetInstance().Back();\r
return true;\r
}\r
return true;\r
}\r
\r
- /*处理亮屏时长*/\r
+ /*\r
+ * @brief 用于处理亮屏时长单选按钮的状态改变.根据用户选择的单选按钮,更新屏幕持续显示时间\r
+ */\r
bool ScreenDurationRadiobuttonOnChangeListener::OnChange(UICheckBox::UICheckBoxState state)\r
{\r
+ if (state != UICheckBox::SELECTED)\r
+ {\r
+ return true; // 如果不是选中状态,无需处理\r
+ }\r
+\r
DisplayBrightnessView *p_DisplayBrightnessView = DisplayBrightnessView::GetInstance();\r
if (p_DisplayBrightnessView == nullptr)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessView::GetInstance fail!");\r
return false;\r
}\r
- switch (state)\r
+\r
+ ScreenDurationView *p_ScreenDurationView = p_DisplayBrightnessView->GetScreenDurationView();\r
+ if (p_ScreenDurationView == nullptr)\r
{\r
- case UICheckBox::SELECTED:\r
- if (p_DisplayBrightnessView->GetScreenDurationView() != nullptr)\r
- {\r
- if (p_DisplayBrightnessView->GetScreenDurationView()->GetRadioButton(ScreenDurationRadioButton1) == (UIView *)m_view)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Switched to 5 seconds");\r
- uapi_setScreenDuration(SCREENDURATION_FIVE);\r
- DisplayBrightnessModel::GetInstance()->SetScreenDurationTime(SCREENDURATION_FIVE);\r
- return true;\r
- }\r
- else if (p_DisplayBrightnessView->GetScreenDurationView()->GetRadioButton(ScreenDurationRadioButton2) == (UIView *)m_view)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Switched to 10 seconds");\r
- uapi_setScreenDuration(SCREENDURATION_TEN);\r
- DisplayBrightnessModel::GetInstance()->SetScreenDurationTime(SCREENDURATION_TEN);\r
- return true;\r
- }\r
- else if (p_DisplayBrightnessView->GetScreenDurationView()->GetRadioButton(ScreenDurationRadioButton3) == (UIView *)m_view)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Switched to 15 seconds");\r
- uapi_setScreenDuration(SCREENDURATION_FIFTEENTH);\r
- DisplayBrightnessModel::GetInstance()->SetScreenDurationTime(SCREENDURATION_FIFTEENTH);\r
- return true;\r
- }\r
- else if (p_DisplayBrightnessView->GetScreenDurationView()->GetRadioButton(ScreenDurationRadioButton4) == (UIView *)m_view)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Switched to 30 seconds");\r
- uapi_setScreenDuration(SCREENDURATION_THIRTY);\r
- DisplayBrightnessModel::GetInstance()->SetScreenDurationTime(SCREENDURATION_THIRTY);\r
- return true;\r
- }\r
- else if (p_DisplayBrightnessView->GetScreenDurationView()->GetRadioButton(ScreenDurationRadioButton5) == (UIView *)m_view)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Switched to 60 seconds");\r
- uapi_setScreenDuration(SCREENDURATION_SIXTY);\r
- DisplayBrightnessModel::GetInstance()->SetScreenDurationTime(SCREENDURATION_SIXTY);\r
- return true;\r
- }\r
- else if (p_DisplayBrightnessView->GetScreenDurationView()->GetRadioButton(ScreenDurationRadioButton6) == (UIView *)m_view)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Switched to 300 seconds");\r
- uapi_setScreenDuration(SCREENDURATION_THREE_HUNDRED);\r
- DisplayBrightnessModel::GetInstance()->SetScreenDurationTime(SCREENDURATION_THREE_HUNDRED);\r
- return true;\r
- }\r
- }\r
+ return false; // 相关视图不存在,直接返回\r
+ }\r
\r
- break;\r
- case UICheckBox::UNSELECTED:\r
- break;\r
- default:\r
- break;\r
+ // 关联单选按钮视图和对应的持续时间\r
+ std::map<UIView *, uint32_t> durationMap = {\r
+ {p_ScreenDurationView->GetRadioButton(ScreenDurationRadioButton1), SCREENDURATION_FIVE},\r
+ {p_ScreenDurationView->GetRadioButton(ScreenDurationRadioButton2), SCREENDURATION_TEN},\r
+ {p_ScreenDurationView->GetRadioButton(ScreenDurationRadioButton3), SCREENDURATION_FIFTEENTH},\r
+ {p_ScreenDurationView->GetRadioButton(ScreenDurationRadioButton4), SCREENDURATION_THIRTY},\r
+ {p_ScreenDurationView->GetRadioButton(ScreenDurationRadioButton5), SCREENDURATION_SIXTY},\r
+ {p_ScreenDurationView->GetRadioButton(ScreenDurationRadioButton6), SCREENDURATION_THREE_HUNDRED}};\r
+\r
+ auto it = durationMap.find((UIView *)m_view);\r
+ if (it != durationMap.end())\r
+ {\r
+ uapi_setScreenDuration(it->second);\r
+ DisplayBrightnessModel::GetInstance()->SetScreenDurationTime(it->second);\r
+ // 此处可以根据需要,添加对 WEARABLE_LOGE 的调用,打印日志\r
+ DisplayBrightnessPresenter::GetInstance()->SetSelectScreenDurationLabel(it->second);\r
}\r
- return false;\r
+ else\r
+ {\r
+ // 如果没有找到对应的映射项,可能是逻辑错误或数据不一致\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "No matching screen duration found for selected radiobutton.");\r
+ }\r
+\r
+ return true;\r
}\r
}
\ No newline at end of file
DisplayBrightnessView::~DisplayBrightnessView()\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessView::~DisplayBrightnessView");\r
- if (initViewStatus == true)\r
- {\r
- ClearAll();\r
- }\r
+ ClearAll();\r
g_pDisplayBrightnessView = nullptr;\r
}\r
\r
delete ScreenDurationLabel;\r
ScreenDurationLabel = nullptr;\r
\r
+ delete selectScreenDurationLabel;\r
+ selectScreenDurationLabel = nullptr;\r
+\r
delete RaiseToBrightnessLabel;\r
RaiseToBrightnessLabel = nullptr;\r
\r
if (state == UICheckBox::UICheckBoxState::SELECTED)\r
{\r
DisplayBrightnessModel::GetInstance()->SetRaiseToBrightnessCheckBoxButtonStatus(true);\r
- ConfigModel::GetInstance()->set_condigData_Bool(ConfigModel::ConfigItem::CONFIGMODEL_ITEM_RAISE_TO_WAKE,true);\r
+ ConfigModel::GetInstance()->set_condigData_Bool(ConfigModel::ConfigItem::CONFIGMODEL_ITEM_RAISE_TO_WAKE, true);\r
}\r
else\r
{\r
DisplayBrightnessModel::GetInstance()->SetRaiseToBrightnessCheckBoxButtonStatus(false);\r
- ConfigModel::GetInstance()->set_condigData_Bool(ConfigModel::ConfigItem::CONFIGMODEL_ITEM_RAISE_TO_WAKE,false);\r
+ ConfigModel::GetInstance()->set_condigData_Bool(ConfigModel::ConfigItem::CONFIGMODEL_ITEM_RAISE_TO_WAKE, false);\r
}\r
\r
delete RaiseToBrightnessCheckBoxButton;\r
/// @return true 设置成功,false 失败\r
bool DisplayBrightnessView::SetTheTitle(void)\r
{\r
- DisplayBrightnessTitleLabel = new UILabel();\r
+ DisplayBrightnessTitleLabel = new UILabelExt();\r
if (DisplayBrightnessTitleLabel == nullptr)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessView::DisplayBrightnessTitleLabel new fail!");\r
return false;\r
}\r
- DisplayBrightnessTitleLabel->SetPosition(158, 52);\r
+ DisplayBrightnessTitleLabel->SetPosition(93, 52, 280, 40);\r
DisplayBrightnessTitleLabel->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
DisplayBrightnessTitleLabel->SetStyle(STYLE_TEXT_FONT, 30);\r
DisplayBrightnessTitleLabel->SetStyle(STYLE_LINE_HEIGHT, 35);\r
DisplayBrightnessTitleLabel->SetText("屏幕与亮度");\r
- DisplayBrightnessTitleLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+ DisplayBrightnessTitleLabel->SetRollSpeed(40);\r
+ DisplayBrightnessTitleLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
DisplayBrightnessTitleLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
DisplayBrightnessTitleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
return true;\r
}\r
button->SetPosition(buttonconfig.x, buttonconfig.y, buttonconfig.w, buttonconfig.h);\r
button->SetViewId(buttonconfig.ViewId);\r
- button->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
- button->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
- button->SetImageSrc(buttonconfig.ImageSrc, buttonconfig.ImageSrc);\r
- button->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
+ button->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);\r
+ button->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+ // button->SetImageSrc(buttonconfig.ImageSrc, buttonconfig.ImageSrc);\r
+ button->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xffffffff, UIButton::PRESSED);\r
+ button->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);\r
button->SetOnClickListener(clickListener);\r
return button;\r
}\r
buttonconfig.w = 380;\r
buttonconfig.h = 100;\r
buttonconfig.ViewId = BRINGHTNESSCONTROLBUTTON_VIEW;\r
- buttonconfig.ImageSrc = "/user/res/SETTING_BACKGROUND.bin";\r
+ // buttonconfig.ImageSrc = "/user/res/SETTING_BACKGROUND.bin";\r
BringhtnessControlButton = SetTheButton(buttonconfig, clickListener);\r
if (nullptr == BringhtnessControlButton)\r
{\r
}\r
\r
// 设置标签LabelConfig &labelconfig\r
- UILabel *DisplayBrightnessView::SetUpLabel(LabelConfig &labelconfig)\r
+ UILabelExt *DisplayBrightnessView::SetUpLabel(LabelConfig &labelconfig)\r
{\r
- UILabel *label = new UILabel();\r
+ UILabelExt *label = new UILabelExt();\r
if (label == nullptr)\r
{\r
return nullptr;\r
label->SetPosition(labelconfig.left, labelconfig.top, labelconfig.width, labelconfig.height); // 位置大小\r
label->SetStyle(STYLE_TEXT_FONT, labelconfig.fontSize); // 字体大小\r
label->SetStyle(STYLE_LINE_HEIGHT, labelconfig.lineHeigh); // 字体行高\r
- label->SetText(labelconfig.text); // 内容\r
+ label->SetText(labelconfig.text.c_str()); // 内容\r
label->SetLineBreakMode(labelconfig.lineBreakMode); // 断行模式。\r
- label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+ label->SetRollSpeed(40);\r
+ // label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, labelconfig.fontSize);\r
return label;\r
}\r
LabelConfig labelconfig = {\r
.left = 90,\r
.top = 153,\r
- .width = 200,\r
- .height = 60,\r
+ .width = 250,\r
+ .height = 40,\r
.fontSize = 30,\r
.lineHeigh = 35,\r
.text = "亮度调节",\r
- .lineBreakMode = UILabel::LINE_BREAK_ADAPT,\r
+ .lineBreakMode = UILabel::LINE_BREAK_MARQUEE,\r
};\r
BringhtnessControlLabel = SetUpLabel(labelconfig);\r
if (BringhtnessControlLabel == nullptr)\r
}\r
/* -------------------------------------------------------------------------- */\r
labelconfig.top = 273;\r
+ labelconfig.width = 180;\r
labelconfig.text = "亮屏时长";\r
ScreenDurationLabel = SetUpLabel(labelconfig);\r
if (ScreenDurationLabel == nullptr)\r
/* -------------------------------------------------------------------------- */\r
labelconfig.top = 393;\r
labelconfig.text = "抬腕亮屏";\r
- //labelconfig.text = "4G能力开关";\r
RaiseToBrightnessLabel = SetUpLabel(labelconfig);\r
if (RaiseToBrightnessLabel == nullptr)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessView::RaiseToBrightnessLabel new fail!");\r
return false;\r
}\r
+ /* -------------------------------------------------------------------------- */\r
+ labelconfig = {\r
+ .left = 291,\r
+ .top = 273,\r
+ .width = 65,\r
+ .height = 40,\r
+ .fontSize = 30,\r
+ .lineHeigh = 35,\r
+ .text = "",\r
+ .lineBreakMode = UILabel::LINE_BREAK_MARQUEE,\r
+ };\r
+ selectScreenDurationLabel = SetUpLabel(labelconfig);\r
+ if (selectScreenDurationLabel == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessView::selectScreenDurationLabel new fail!");\r
+ return false;\r
+ }\r
+ selectScreenDurationLabel->SetTextColor(Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff));\r
+ /* -------------------------------------------------------------------------- */\r
return true;\r
}\r
\r
return false;\r
}\r
/* -------------------------------------------------------------------------- */\r
- imageconfig.x = 43;\r
- imageconfig.y = 360;\r
- imageconfig.w = 380;\r
- imageconfig.h = 100;\r
- imageconfig.ImageSrc = "/user/res/SETTING_BACKGROUND.bin";\r
+ imageconfig = {\r
+ .x = 43,\r
+ .y = 360,\r
+ .w = 380,\r
+ .h = 100,\r
+ .ImageSrc = "/user/res/SETTING_BACKGROUND.bin",\r
+ };\r
RaiseToBrightnessImage = SetUpImageView(imageconfig);\r
- if (nullptr == NextImage[1])\r
+ if (nullptr == RaiseToBrightnessImage)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessView::RaiseToBrightnessImage is nullptr!");\r
return false;\r
}\r
-\r
return true;\r
}\r
\r
{\r
return;\r
}\r
+ if (!DisplayBrightnessModel::GetInstance()->SelectScreenDurationLabelInit())\r
+ {\r
+ return;\r
+ }\r
initViewStatus = true;\r
}\r
\r
return p_ScreenDurationView.get();\r
}\r
\r
+ UILabelExt *DisplayBrightnessView::GetSelectScreenDurationLabel(void)\r
+ {\r
+ if (selectScreenDurationLabel == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessView::GetSelectScreenDurationLabel selectScreenDurationLabel is nullptr!");\r
+ return nullptr;\r
+ }\r
+ return selectScreenDurationLabel;\r
+ }\r
+\r
// 1.切换到“屏幕与亮度”视图\r
bool DisplayBrightnessView::ChangeDisplayBrightnessView(int16_t thisView)\r
{\r
DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->Add(ScreenDurationButton);\r
DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->Add(BringhtnessControlLabel);\r
DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->Add(ScreenDurationLabel);\r
+ DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->Add(selectScreenDurationLabel);\r
DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->Add(NextImage[0]);\r
DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->Add(NextImage[1]);\r
DisplayBrightnessScrollView[DISPLAYBRIGHTNESSVIEW]->Add(RaiseToBrightnessImage);\r
if ((event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) &&
(event.GetDeltaX() > X_DRAG_OFFSET) && (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY()))))
{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SettingPresenter::OnDrag ChangeSlice(VIEW_APPLIST)");
- /*
- GetPreSliceId作用:是从已存储的切片中获取上一个切片的ID,并且在切片数小于2的情况下返回一个无效的切片ID。
- */
- uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
- if (preSlice == VIEW_APPLIST)
- {
- NativeAbility::GetInstance().ChangeSlice(preSlice);
- return true;
- }
- else
- {
- NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);
- return true;
- }
+ // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SettingPresenter::OnDrag ChangeSlice(VIEW_APPLIST)");
+ // /*
+ // GetPreSliceId作用:是从已存储的切片中获取上一个切片的ID,并且在切片数小于2的情况下返回一个无效的切片ID。
+ // */
+ // uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
+ // if (preSlice == VIEW_APPLIST)
+ // {
+ // NativeAbility::GetInstance().ChangeSlice(preSlice);
+ // return true;
+ // }
+ // else
+ // {
+ // NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);
+ // return true;
+ // }
+ NativeAbility::GetInstance().Back();
}
- return false;
+ return true;
}
// 增加按键事件
bool SettingPresenter::OnKeyAct(UIView &view, const KeyEvent &event)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SettingPresenter::OnKeyAct");
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SettingPresenter::OnKeyAct");
uint16 keyID = event.GetKeyId();
uint16 keyState = event.GetState();
// 如果是power键就返回上一级
else
{
NativeAbility::GetInstance().EnterSlice(SettingModel::GetInstance().GetSettingIdToViewId().at(index));
- //NativeAbility::GetInstance().ChangeSlice(SettingModel::GetInstance().GetSettingIdToViewId().at(index));
+ // NativeAbility::GetInstance().ChangeSlice(SettingModel::GetInstance().GetSettingIdToViewId().at(index));
/* -------------------------------------------------------------------------- */
#if 0
if (index == SETTING_ITEM_TWO)