mcu_hi3321_watch/tjd/ui/app/low_power/TjdUiAppLowPowerView.cpp
2025-05-26 20:15:20 +08:00

94 lines
3.6 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "TjdUiAppLowPowerView.h"
#include "TjdUiImageIds.h"
#include "TjdUiMemManage.h"
#include "TjdUiMultiLanguageExt.h"
#include "animator/animator_manager.h"
#include "common/image_cache_manager.h"
#include "gfx_utils/mem_check.h"
#include "graphic_service.h"
#include "sys_config.h"
namespace TJD {
#define ENABLE_PRINT_INFO 1
#if ENABLE_PRINT_INFO
#define static_print_info(...) sys_ui_log_i(__VA_ARGS__) // 一般信息打印宏控制
#define static_print_warn(...) sys_ui_log_w(__VA_ARGS__) // 警告信息打印一般常开
#define static_print_error(...) sys_ui_log_e(__VA_ARGS__) // 错误信息打印一般常开
#define static_print_debug(...) sys_ui_log_d(__VA_ARGS__) // 调试信息打印一般常开
#else
#define static_print_info(...)
#define static_print_warn(...)
#define static_print_error(...)
#define static_print_debug(...)
#endif
static inline int16_t HorizontalCenter(int16_t width, int16_t parentWidth) { return (parentWidth - width) / 2; }
static inline void InitLabelHorCenter(OHOS::UILabel &label, uint8_t size, int16_t y, int16_t target, const char *text)
{
label.SetFont(TJD_VECTOR_FONT_FILENAME, size);
label.SetText(text);
label.SetLineBreakMode(OHOS::UILabel::LINE_BREAK_ADAPT);
label.SetAlign(OHOS::TEXT_ALIGNMENT_CENTER, OHOS::TEXT_ALIGNMENT_CENTER);
label.SetPosition(HorizontalCenter(label.GetWidth(), target), y);
}
// clang-format on
#define LOW_POWER_IMAGE_BIN_PATH TJD_IMAGE_PATH "img_low_power.bin"
TjdUiAppLowPowerView::TjdUiAppLowPowerView(uint8_t battery, TjdUiAppLowPowerPresenter *presenter)
: presenter_(presenter)
{
TjdUIEnterViewBase::SetEnterViewType(EnterViewType::OK_AND_CANCEL);
OHOS::ImageInfo *res = nullptr;
SetOnDragListener(presenter);
auto &image = OHOS::ImageCacheManager::GetInstance();
Resize(OHOS::HORIZONTAL_RESOLUTION, OHOS::VERTICAL_RESOLUTION);
image.LoadAllInMultiRes(LOW_POWER_IMAGE_BIN_PATH);
char descStr[64] = {0};
if (battery <= 0) {
snprintf(descStr, sizeof(descStr), "电量下降至0%%\n是否开启省电模式?");
res = image.LoadOneInMultiRes(IMG_LOW_POWER_ICON_0, LOW_POWER_IMAGE_BIN_PATH);
}else if (battery <= 5) {
snprintf(descStr, sizeof(descStr), "电量下降至5%%\n是否开启省电模式?");
res = image.LoadOneInMultiRes(IMG_LOW_POWER_ICON_5, LOW_POWER_IMAGE_BIN_PATH);
} else if (battery <= 10) {
snprintf(descStr, sizeof(descStr), "电量下降至10%%\n是否开启省电模式?");
res = image.LoadOneInMultiRes(IMG_LOW_POWER_ICON_10, LOW_POWER_IMAGE_BIN_PATH);
} else if (battery <= 20) {
snprintf(descStr, sizeof(descStr), "电量下降至20%%\n是否开启省电模式?");
res = image.LoadOneInMultiRes(IMG_LOW_POWER_ICON_20, LOW_POWER_IMAGE_BIN_PATH);
}
icon_.SetPosition(173, 25, 120, 120);
icon_.SetSrc(res);
res = image.LoadOneInMultiRes(IMG_LOW_POWER_CANCEL, LOW_POWER_IMAGE_BIN_PATH);
TjdUIEnterViewBase::SetCancelSrc(res);
res = image.LoadOneInMultiRes(IMG_LOW_POWER_CONFIRM, LOW_POWER_IMAGE_BIN_PATH);
TjdUIEnterViewBase::SetOkSrc(res);
TjdUIEnterViewBase::SetEnterViewOnClickListener(presenter);
InitLabelHorCenter(desc_, 28, 158, 466, descStr);
InitLabelHorCenter(descTips_, 24, 250, 466, "开启功能,屏幕亮度将降到最低,震动、\n铃声将关闭长按3S退出省电模式");
descTips_.SetStyle(OHOS::STYLE_TEXT_OPA, OHOS::OPA_OPAQUE * 0.5);
Add(&icon_);
Add(&desc_);
Add(&descTips_);
}
TjdUiAppLowPowerView::~TjdUiAppLowPowerView()
{
if (presenter_ != nullptr) {
delete presenter_;
presenter_ = nullptr;
}
RemoveAll();
}
} // namespace TJD