876 lines
38 KiB
C++
876 lines
38 KiB
C++
/*----------------------------------------------------------------------------
|
||
* Copyright (c) TJD Technologies Co., Ltd. 2024. All rights reserved.
|
||
*
|
||
* Description:
|
||
*
|
||
* Author: huangshuyi
|
||
*
|
||
* Create: 2024-4
|
||
*--------------------------------------------------------------------------*/
|
||
|
||
#include "TjdUiAppMainPageShortCut.h"
|
||
#include "TjdUiAppAlipayModel.h"
|
||
#include "TjdUiAppLockScreenPresenter.h"
|
||
#include "TjdUiAppMainPresenter.h"
|
||
#include "TjdUiAppMainView.h"
|
||
#include "TjdUiAppSettingNormalListModel.h"
|
||
#include "TjdUiAppSettingView.h"
|
||
#include "TjdUiEditShortcutPresenter.h"
|
||
#include "TjdUiImageIds.h"
|
||
#include "TjdUiMemManage.h"
|
||
#include "TjdUiMultiLanguageExt.h"
|
||
#include "TjdUiScreenEvent.h"
|
||
#include "TjdUiScreenManage.h"
|
||
#include "ble_api.h"
|
||
#include "common/image_cache_manager.h"
|
||
#include "rtc_api.h"
|
||
#include "service_charger.h"
|
||
#include "sql_fit.h"
|
||
#include "sql_setting.h"
|
||
#include "sys_config.h"
|
||
#include "ui_screennotify.h"
|
||
#include <sstream>
|
||
|
||
using namespace OHOS;
|
||
|
||
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
|
||
|
||
#define IMAGE_BIN_PATH TJD_IMAGE_PATH "img_main_shortcut.bin"
|
||
#define BATTERY_IMAGE_BIN_PATH TJD_IMAGE_PATH "img_battery.bin"
|
||
|
||
static TjdUiAppMainPageShortcut *g_pMainShortcutPage = nullptr;
|
||
static const char *week_ch[] = {"周日", "周一", "周二", "周三", "周四", "周五", "周六"};
|
||
static const char *week_en[] = {"Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"};
|
||
static uint8_t screenSetFlag = 0; // 0 disable 1 enable
|
||
// #define SHORTCUT_EDIT_INDEX 0
|
||
// #define SHORTCUT_BUSINESS_CARD_INDEX 1
|
||
// #define SHORTCUT_LOCK_SCREEN_INDEX 2
|
||
// #define SHORTCUT_ALIPAY_INDEX 3
|
||
// #define SHORTCUT_NOT_DISTURB_INDEX 4
|
||
// #define SHORTCUT_POWER_SAVE_INDEX 5
|
||
// #define SHORTCUT_CARD_PACKET_INDEX 6
|
||
// #define SHORTCUT_FIND_PHONE_INDEX 7
|
||
// #define SHORTCUT_SCREEN_SET_INDEX 8
|
||
// #define SHORTCUT_WATER_INDEX 9
|
||
// #define SHORTCUT_MENU_STYLE_INDEX 10
|
||
// #define SHORTCUT_CLOCK_INDEX 11
|
||
// #define SHORTCUT_SYSTEM_SET_INDEX 12
|
||
// #define SHORTCUT_BLUETOOTH_INDEX 13
|
||
// #define SHORTCUT_BRIGHTNESS_SET_INDEX 14
|
||
// #define SHORTCUT_FLASHLIGHT_INDEX 15
|
||
|
||
std::list<uint8_t> TjdUiAppMainPageShortcut::shortcutList = {
|
||
TjdUiAppMainPageShortcut::SHORTCUT_BRIGHT_SCREEN_INDEX, TjdUiAppMainPageShortcut::SHORTCUT_BUSINESS_CARD_INDEX,
|
||
TjdUiAppMainPageShortcut::SHORTCUT_ALIPAY_INDEX, TjdUiAppMainPageShortcut::SHORTCUT_CARD_PACKET_INDEX,
|
||
TjdUiAppMainPageShortcut::SHORTCUT_FIND_PHONE_INDEX, TjdUiAppMainPageShortcut::SHORTCUT_SCREEN_SET_INDEX,
|
||
TjdUiAppMainPageShortcut::SHORTCUT_WATER_INDEX, TjdUiAppMainPageShortcut::SHORTCUT_MENU_STYLE_INDEX,
|
||
TjdUiAppMainPageShortcut::SHORTCUT_CLOCK_INDEX, TjdUiAppMainPageShortcut::SHORTCUT_SYSTEM_SET_INDEX,
|
||
TjdUiAppMainPageShortcut::SHORTCUT_BLUETOOTH_INDEX, TjdUiAppMainPageShortcut::SHORTCUT_BRIGHTNESS_SET_INDEX,
|
||
TjdUiAppMainPageShortcut::SHORTCUT_FLASHLIGHT_INDEX,
|
||
};
|
||
|
||
std::list<uint8_t> TjdUiAppMainPageShortcut::shortcutAddList_ = {
|
||
TjdUiAppMainPageShortcut::SHORTCUT_LOCK_SCREEN_INDEX,
|
||
TjdUiAppMainPageShortcut::SHORTCUT_NOT_DISTURB_INDEX,
|
||
TjdUiAppMainPageShortcut::SHORTCUT_POWER_SAVE_INDEX,
|
||
};
|
||
|
||
ShortcutView TjdUiAppMainPageShortcut::currentViewIndex_ = SHORTCUT_NORMAL;
|
||
|
||
TjdUiAppMainPageShortcut::ShortcutItem TjdUiAppMainPageShortcut::shortcutItems[] = {
|
||
{STR_ID_494, TjdUiAppMainPageShortcut::SHORTCUT_BRIGHT_SCREEN_INDEX, IMG_MAIN_SHORTCUT_BRIGHT_SCREEN_OPEN,
|
||
IMG_MAIN_SHORTCUT_BRIGHT_SCREEN_CLOSE}, //抬腕亮屏
|
||
{STR_ID_22, TjdUiAppMainPageShortcut::SHORTCUT_BUSINESS_CARD_INDEX, IMG_MAIN_SHORTCUT_BUSSINE_CARD_CLOSE,
|
||
IMG_MAIN_SHORTCUT_BUSSINE_CARD_CLOSE}, //名片
|
||
{STR_ID_588, TjdUiAppMainPageShortcut::SHORTCUT_LOCK_SCREEN_INDEX, IMG_MAIN_SHORTCUT_LOCK_SCREEN_CLOSE,
|
||
IMG_MAIN_SHORTCUT_LOCK_SCREEN_CLOSE}, //锁屏
|
||
{STR_ID_32, TjdUiAppMainPageShortcut::SHORTCUT_ALIPAY_INDEX, IMG_MAIN_SHORTCUT_ALIPAY_CLOSE,
|
||
IMG_MAIN_SHORTCUT_ALIPAY_CLOSE}, //支付宝
|
||
{STR_ID_420, TjdUiAppMainPageShortcut::SHORTCUT_NOT_DISTURB_INDEX, IMG_MAIN_SHORTCUT_NOT_DISTURB_OPEN,
|
||
IMG_MAIN_SHORTCUT_NOT_DISTURB_CLOSE}, //勿扰模式
|
||
{STR_ID_421, TjdUiAppMainPageShortcut::SHORTCUT_POWER_SAVE_INDEX, IMG_MAIN_SHORTCUT_POWER_SAVE_CLOSE,
|
||
IMG_MAIN_SHORTCUT_POWER_SAVE_CLOSE}, //省电模式
|
||
{STR_ID_23, TjdUiAppMainPageShortcut::SHORTCUT_CARD_PACKET_INDEX, IMG_MAIN_SHORTCUT_CARD_PACKET_CLOSE,
|
||
IMG_MAIN_SHORTCUT_CARD_PACKET_CLOSE}, //卡包
|
||
{STR_ID_587, TjdUiAppMainPageShortcut::SHORTCUT_FIND_PHONE_INDEX, IMG_MAIN_SHORTCUT_FIND_PHONE_CLOSE,
|
||
IMG_MAIN_SHORTCUT_FIND_PHONE_CLOSE}, //查找手机
|
||
{STR_ID_586, TjdUiAppMainPageShortcut::SHORTCUT_SCREEN_SET_INDEX, IMG_MAIN_SHORTCUT_SCREEN_SET_OPEN,
|
||
IMG_MAIN_SHORTCUT_SCREEN_SET_CLOSE}, //常亮设置
|
||
{STR_ID_585, TjdUiAppMainPageShortcut::SHORTCUT_WATER_INDEX, IMG_MAIN_SHORTCUT_WATER_CLOSE,
|
||
IMG_MAIN_SHORTCUT_WATER_CLOSE}, //排水
|
||
{STR_ID_584, TjdUiAppMainPageShortcut::SHORTCUT_MENU_STYLE_INDEX, IMG_MAIN_SHORTCUT_MENU_STYLE_CLOSE,
|
||
IMG_MAIN_SHORTCUT_MENU_STYLE_CLOSE}, //菜单风格
|
||
{STR_ID_491, TjdUiAppMainPageShortcut::SHORTCUT_CLOCK_INDEX, IMG_MAIN_SHORTCUT_CLOCK_OPEN,
|
||
IMG_MAIN_SHORTCUT_CLOCK_CLOSE}, //床头钟
|
||
{STR_ID_28, TjdUiAppMainPageShortcut::SHORTCUT_SYSTEM_SET_INDEX, IMG_MAIN_SHORTCUT_SYSTEM_SET_CLOSE,
|
||
IMG_MAIN_SHORTCUT_SYSTEM_SET_CLOSE}, //系统设置
|
||
{STR_ID_416, TjdUiAppMainPageShortcut::SHORTCUT_BLUETOOTH_INDEX, IMG_MAIN_SHORTCUT_BT_OPEN_NOT_CONNECT,
|
||
IMG_MAIN_SHORTCUT_BT_CLOSE}, //蓝牙
|
||
{STR_ID_486, TjdUiAppMainPageShortcut::SHORTCUT_BRIGHTNESS_SET_INDEX, IMG_MAIN_SHORTCUT_BRIGHTNESS_SET_CLOSE,
|
||
IMG_MAIN_SHORTCUT_BRIGHTNESS_SET_CLOSE}, //亮度
|
||
{STR_ID_583, TjdUiAppMainPageShortcut::SHORTCUT_FLASHLIGHT_INDEX, IMG_MAIN_SHORTCUT_FLASHLIGHT_CLOSE,
|
||
IMG_MAIN_SHORTCUT_FLASHLIGHT_CLOSE}, //闪光灯
|
||
{STR_ID_69, TjdUiAppMainPageShortcut::SHORTCUT_EDIT_INDEX, IMG_MAIN_SHORTCUT_EDIT_BG,
|
||
IMG_MAIN_SHORTCUT_EDIT_BG}, //编辑
|
||
};
|
||
|
||
TjdUiAppMainPageShortcut::TjdUiAppMainPageShortcut()
|
||
{
|
||
SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
|
||
g_pMainShortcutPage = this;
|
||
}
|
||
|
||
TjdUiAppMainPageShortcut::~TjdUiAppMainPageShortcut()
|
||
{
|
||
UnLoad();
|
||
g_pMainShortcutPage = nullptr;
|
||
}
|
||
|
||
TjdUiAppMainPageShortcut *TjdUiAppMainPageShortcut::GetInstance(void) { return g_pMainShortcutPage; }
|
||
|
||
std::list<uint8_t> &TjdUiAppMainPageShortcut::GetShortcutList(void) { return shortcutList; }
|
||
|
||
TjdUiAppMainPageShortcut::ShortcutItem *TjdUiAppMainPageShortcut::GetShortcutItems(void) { return shortcutItems; }
|
||
|
||
uint8_t TjdUiAppMainPageShortcut::GetShortcutItemsCnt(void) { return sizeof(shortcutItems) / sizeof(shortcutItems[0]); }
|
||
|
||
static void GraphicTimerCallback(void *param)
|
||
{
|
||
GraphicService::GetInstance()->PostGraphicEvent([] {
|
||
if (g_pMainShortcutPage) {
|
||
if (g_pMainShortcutPage->screenTipViewGroup_) {
|
||
OHOS::RootView::GetInstance()->RemoveSystemView(g_pMainShortcutPage->screenTipViewGroup_);
|
||
TjdUiMemManage::DeleteChildren(g_pMainShortcutPage->screenTipViewGroup_);
|
||
}
|
||
g_pMainShortcutPage->screenTipViewGroup_ = nullptr;
|
||
}
|
||
});
|
||
}
|
||
|
||
void TjdUiAppMainPageShortcut::DisplayScreenTips(uint8_t status, uint8_t min)
|
||
{
|
||
if (screenTipViewGroup_) {
|
||
OHOS::RootView::GetInstance()->RemoveSystemView(screenTipViewGroup_);
|
||
TjdUiMemManage::DeleteChildren(screenTipViewGroup_);
|
||
screenTipViewGroup_ = nullptr;
|
||
}
|
||
screenTipViewGroup_ = new UIViewGroup();
|
||
OHOS::RootView::GetInstance()->AddSystemView(screenTipViewGroup_);
|
||
screenTipViewGroup_->SetStyle(STYLE_BORDER_RADIUS, 55);
|
||
screenTipViewGroup_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff646464);
|
||
screenTipViewGroup_->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE * 0.9);
|
||
screenTipViewGroup_->SetWidth(320);
|
||
screenTipViewGroup_->SetHeight(110);
|
||
screenTipViewGroup_->LayoutCenterOfParent(0, 0);
|
||
UILabelExt *labelNotify = new UILabelExt();
|
||
screenTipViewGroup_->Add(labelNotify);
|
||
labelNotify->SetFont(TJD_VECTOR_FONT_FILENAME, TJD_FONT_SIZE_34);
|
||
labelNotify->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
|
||
char text[60];
|
||
if (status == 0) {
|
||
labelNotify->SetText("常亮已关闭");
|
||
} else {
|
||
std::string text = "屏幕将常亮" + std::to_string(min) + "分钟";
|
||
labelNotify->SetText(text.c_str()); // 使用格式化后的字符串
|
||
}
|
||
labelNotify->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
|
||
labelNotify->LayoutCenterOfParent();
|
||
if (timerToReturn_ == nullptr) {
|
||
timerToReturn_ = new OHOS::GraphicTimer(2000, GraphicTimerCallback, nullptr, false);
|
||
timerToReturn_->Start();
|
||
} else {
|
||
timerToReturn_->Start();
|
||
}
|
||
}
|
||
|
||
void TjdUiAppMainPageShortcut::PreLoad(void)
|
||
{
|
||
static_print_debug("TjdUiAppMainPageShortcut::PreLoad");
|
||
if (!viewiInitStatus) {
|
||
InitView();
|
||
viewiInitStatus = true;
|
||
}
|
||
}
|
||
|
||
void TjdUiAppMainPageShortcut::ScrollBegin(bool isActive)
|
||
{
|
||
//为1时,是正处于快捷栏页面,为0时,是没有处于快捷栏页面
|
||
if (isActive == 1) {
|
||
scrollCont->ClearFocus();
|
||
}
|
||
}
|
||
|
||
void TjdUiAppMainPageShortcut::ScrollEnd(bool isActive)
|
||
{
|
||
// isActive:滑动结束后,先前在前台显示的界面被替换后上抛0,新移入的界面上抛1
|
||
//为0的时候,是该界面已经完全移出,为1的时候是该界面已经完全移入
|
||
if (isActive == 1) {
|
||
scrollCont->RequestFocus();
|
||
}
|
||
}
|
||
|
||
void TjdUiAppMainPageShortcut::ReturnToTop(void)
|
||
{
|
||
if (scrollCont == nullptr) {
|
||
return;
|
||
}
|
||
scrollCont->SetReboundSize(0);
|
||
scrollCont->ScrollBy(0, -OHOS::HORIZONTAL_RESOLUTION);
|
||
scrollCont->SetReboundSize(Screen::GetInstance().GetHeight() >> 1);
|
||
}
|
||
|
||
void TjdUiAppMainPageShortcut::DeleteContainer(void)
|
||
{
|
||
if (container) {
|
||
this->Remove(container);
|
||
TjdUiMemManage::DeleteChildren(container);
|
||
}
|
||
}
|
||
|
||
void TjdUiAppMainPageShortcut::SetEditShortcutViewVisible(bool isVisible)
|
||
{
|
||
if (scrollCont == nullptr)
|
||
return;
|
||
|
||
scrollCont->SetVisible(isVisible);
|
||
}
|
||
|
||
void TjdUiAppMainPageShortcut::UnLoad(void)
|
||
{
|
||
if (viewiInitStatus) {
|
||
ImageCacheManager::GetInstance().UnloadAllInMultiRes(IMAGE_BIN_PATH);
|
||
ImageCacheManager::GetInstance().UnloadAllInMultiRes(BATTERY_IMAGE_BIN_PATH);
|
||
viewiInitStatus = false;
|
||
if (g_pMainShortcutPage->screenTipViewGroup_) {
|
||
OHOS::RootView::GetInstance()->RemoveSystemView(g_pMainShortcutPage->screenTipViewGroup_);
|
||
TjdUiMemManage::DeleteChildren(g_pMainShortcutPage->screenTipViewGroup_);
|
||
screenTipViewGroup_ = nullptr;
|
||
}
|
||
TjdUiMemManage::DeleteChildren(container);
|
||
if (timerToReturn_) {
|
||
delete timerToReturn_;
|
||
timerToReturn_ = nullptr;
|
||
}
|
||
}
|
||
// printf("TjdUiAppMainPageShortcut::UnLoad:%d..............\n");
|
||
// Main clock view is commonly used page, so we do not release it's resources inner slice.
|
||
}
|
||
|
||
static void ShortcuScreenStatusNotifyCallback(ScreenStatus status)
|
||
{
|
||
if (status != SCREEN_STATUS_OFF) {
|
||
return;
|
||
}
|
||
GraphicService::GetInstance()->PostGraphicEvent([]() {
|
||
if (TjdUiAppMainPageShortcut::GetInstance()) {
|
||
TjdUiAppMainPageShortcut::GetInstance()->ResetKeepScreenIcon();
|
||
}
|
||
TjdUiScreenManage::SetScreenOnSystime();
|
||
deregisterNotifyScreenStatus(ShortcuScreenStatusNotifyCallback);
|
||
});
|
||
}
|
||
|
||
bool TjdUiAppMainPageShortcut::OnClick(UIView &view, const ClickEvent &event)
|
||
{
|
||
uint8_t vieIndex = view.GetViewIndex();
|
||
ImageInfo *imgInfo;
|
||
if (vieIndex == SHORTCUT_MENU_STYLE_INDEX) {
|
||
TjdUiAppSettingNormalListModel::GetInstance().SetListType(
|
||
TjdUiAppSettingNormalListModel::SettingListType::SETTING_LIST_TYPE_MENU_STYLE);
|
||
OHOS::NativeAbility::GetInstance().ChangeSlice(TJD_APP_VIEW_SETTING_NORMAL_LIST,
|
||
OHOS::TransitionType::TRANSITION_INVALID,
|
||
OHOS::gSliceDefaultPriority, true);
|
||
} else if (vieIndex == SHORTCUT_SYSTEM_SET_INDEX) {
|
||
OHOS::NativeAbility::GetInstance().ChangeSlice(TJD_APP_VIEW_SETTING, OHOS::TransitionType::TRANSITION_INVALID,
|
||
OHOS::gSliceDefaultPriority, true);
|
||
} else if (vieIndex == SHORTCUT_BRIGHT_SCREEN_INDEX) {
|
||
uint8_t isBright = sql_fit_get_switch_bright_screen();
|
||
if (!isBright) {
|
||
imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(
|
||
shortcutItems[FindArrayIndex(SHORTCUT_BRIGHT_SCREEN_INDEX)].iconOpenId, IMAGE_BIN_PATH);
|
||
} else {
|
||
imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(
|
||
shortcutItems[FindArrayIndex(SHORTCUT_BRIGHT_SCREEN_INDEX)].iconCloseId, IMAGE_BIN_PATH);
|
||
}
|
||
imgBrightScreen_->SetSrc(imgInfo);
|
||
sql_fit_set_switch_bright_screen(!isBright);
|
||
} else if (vieIndex == SHORTCUT_WATER_INDEX) {
|
||
NativeAbility::GetInstance().ChangeSlice(TJD_APP_VIEW_DRAIN);
|
||
} else if (vieIndex == SHORTCUT_BUSINESS_CARD_INDEX) {
|
||
NativeAbility::GetInstance().ChangeSlice(TJD_APP_VIEW_BUSINESSCARD);
|
||
} else if (vieIndex == SHORTCUT_CARD_PACKET_INDEX) {
|
||
NativeAbility::GetInstance().ChangeSlice(TJD_APP_VIEW_WALLET);
|
||
} else if (vieIndex == SHORTCUT_BRIGHTNESS_SET_INDEX) {
|
||
OHOS::NativeAbility::GetInstance().ChangeSlice(TJD_APP_VIEW_SETTING_DISPLAY_AND_BRIGHTNESS,
|
||
OHOS::TransitionType::TRANSITION_INVALID,
|
||
OHOS::gSliceDefaultPriority, true);
|
||
} else if (vieIndex == SHORTCUT_POWER_SAVE_INDEX) {
|
||
OHOS::NativeAbility::GetInstance().ChangeSlice(TJD_APP_VIEW_SETTING_POWER_SAVING,
|
||
OHOS::TransitionType::TRANSITION_INVALID,
|
||
OHOS::gSliceDefaultPriority, true);
|
||
} else if (vieIndex == SHORTCUT_NOT_DISTURB_INDEX) {
|
||
OHOS::NativeAbility::GetInstance().ChangeSlice(TJD_APP_VIEW_SETTING_DO_NOT_DISTURB,
|
||
OHOS::TransitionType::TRANSITION_INVALID,
|
||
OHOS::gSliceDefaultPriority, true);
|
||
} else if (vieIndex == SHORTCUT_LOCK_SCREEN_INDEX) {
|
||
// NativeAbility::GetInstance().ChangeSlice(TJD_APP_VIEW_LOCKSCREEN);
|
||
TjdUiAppMainView::GetInstance()->SwitchToClockPage();
|
||
SetLockScreenEnable(true);
|
||
ShowLockScreenView();
|
||
} else if (vieIndex == SHORTCUT_FIND_PHONE_INDEX) {
|
||
NativeAbility::GetInstance().ChangeSlice(TJD_APP_VIEW_FINDPHONE);
|
||
} else if (vieIndex == SHORTCUT_FLASHLIGHT_INDEX) {
|
||
NativeAbility::GetInstance().ChangeSlice(TJD_APP_VIEW_FLASHLIGHT);
|
||
} else if (vieIndex == SHORTCUT_EDIT_INDEX) {
|
||
// NativeAbility::GetInstance().ChangeSlice(TJD_APP_VIEW_SHORTCUT_EDIT);
|
||
ShowShortcutEditView();
|
||
} else if (vieIndex == SHORTCUT_ALIPAY_INDEX) {
|
||
TjdUiAppAlipayModel::GetInstance().SetQuickEnterFlag(true);
|
||
NativeAbility::GetInstance().ChangeSlice(TJD_APP_VIEW_ALIPAY);
|
||
} else if (vieIndex == SHORTCUT_SCREEN_SET_INDEX) {
|
||
if (screenSetFlag) {
|
||
screenSetFlag = 0;
|
||
TjdUiScreenManage::SetScreenOnSystime();
|
||
DisplayScreenTips(0, 0);
|
||
deregisterNotifyScreenStatus(ShortcuScreenStatusNotifyCallback);
|
||
} else {
|
||
uint32_t time_s = sql_setting_get_keep_screen_time();
|
||
TjdUiScreenManage::SetScreenOnSystime(time_s * 1000);
|
||
DisplayScreenTips(1, time_s / 60);
|
||
screenSetFlag = 1;
|
||
registerNotifyScreenStatus(ShortcuScreenStatusNotifyCallback);
|
||
}
|
||
if (screenSetFlag == 1) {
|
||
imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(
|
||
shortcutItems[FindArrayIndex(SHORTCUT_SCREEN_SET_INDEX)].iconOpenId, IMAGE_BIN_PATH);
|
||
} else {
|
||
imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(
|
||
shortcutItems[FindArrayIndex(SHORTCUT_SCREEN_SET_INDEX)].iconCloseId, IMAGE_BIN_PATH);
|
||
}
|
||
imgScreenSet_->SetSrc(imgInfo);
|
||
} else if (vieIndex == SHORTCUT_BLUETOOTH_INDEX) {
|
||
if (tjd_get_bt_adv_statue()) {
|
||
imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(
|
||
shortcutItems[FindArrayIndex(SHORTCUT_BLUETOOTH_INDEX)].iconCloseId, IMAGE_BIN_PATH);
|
||
tjd_close_bluetooth_only();
|
||
} else {
|
||
imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(
|
||
shortcutItems[FindArrayIndex(SHORTCUT_BLUETOOTH_INDEX)].iconOpenId, IMAGE_BIN_PATH);
|
||
tjd_open_bluetooth_only();
|
||
}
|
||
imgBt_->SetSrc(imgInfo);
|
||
} else if (vieIndex == SHORTCUT_CLOCK_INDEX) {
|
||
sql_setting_set_bedside_clock(!sql_setting_get_bedside_clock());
|
||
if (sql_setting_get_bedside_clock()) {
|
||
imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(
|
||
shortcutItems[FindArrayIndex(SHORTCUT_CLOCK_INDEX)].iconOpenId, IMAGE_BIN_PATH);
|
||
} else {
|
||
imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(
|
||
shortcutItems[FindArrayIndex(SHORTCUT_CLOCK_INDEX)].iconCloseId, IMAGE_BIN_PATH);
|
||
}
|
||
imgBedClock_->SetSrc(imgInfo);
|
||
}
|
||
return true;
|
||
}
|
||
|
||
void TjdUiAppMainPageShortcut::ResetKeepScreenIcon(void)
|
||
{
|
||
if (screenSetFlag) {
|
||
auto imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(
|
||
shortcutItems[FindArrayIndex(SHORTCUT_SCREEN_SET_INDEX)].iconCloseId, IMAGE_BIN_PATH);
|
||
if (imgScreenSet_) {
|
||
imgScreenSet_->SetSrc(imgInfo);
|
||
}
|
||
}
|
||
}
|
||
|
||
class TjdShortcutScrollView : public OHOS::UIScrollView
|
||
{
|
||
public:
|
||
bool scrollControl_ = false;
|
||
bool OnDragEvent(const DragEvent &event) override
|
||
{
|
||
UIView *child = GetChildrenHead();
|
||
Rect coor = child->GetRect();
|
||
Rect coor1 = GetRect();
|
||
// Rect coor = child->GetRelativeRect();
|
||
// Rect coor1 = GetRelativeRect();
|
||
bool dir = event.GetDeltaY() > 0 ? true : false; // true:向下滑动,false:向上滑动
|
||
// printf("get absolution coor of viewgroup x:%d,y:%d, top:%d, bottom:%d, h:%d,name:%s\n", coor.GetX(), coor.GetY(),
|
||
// coor.GetTop(), coor.GetBottom(), coor.GetHeight(), child->GetViewId()); printf("get absolution coor of scroll
|
||
// x:%d,y:%d, top:%d, bottom:%d, h:%d,name:%s\n", coor1.GetX(), coor1.GetY(), coor1.GetTop(), coor1.GetBottom(),
|
||
// coor1.GetHeight(), GetViewId());
|
||
#if 0
|
||
if (!scrollControl_) {
|
||
if (coor1.GetY() < 0) {
|
||
return false;
|
||
} else {
|
||
UIScrollView::OnDragEvent(event);
|
||
scrollControl_ = true;
|
||
return true;
|
||
}
|
||
} else {
|
||
UIScrollView::OnDragEvent(event);
|
||
coor = child->GetRect();
|
||
if (coor.GetBottom() < Screen::GetInstance().GetHeight() - 1) {
|
||
scrollControl_ = false;
|
||
return false;
|
||
}
|
||
return true;
|
||
}
|
||
#endif
|
||
#if 1
|
||
if (dir == false) {
|
||
if ((coor.GetBottom() < Screen::GetInstance().GetHeight() - 1)) {
|
||
//返回false表示不拦截事件,继续传递给父控件
|
||
return false;
|
||
}
|
||
UIScrollView::OnDragEvent(event);
|
||
//返回true表示拦截事件,不继续传递给父控件,自己滚动
|
||
return true;
|
||
} else if (dir == true) {
|
||
if ((coor.GetBottom() < Screen::GetInstance().GetHeight() - 1)) {
|
||
if (coor1.GetBottom() == Screen::GetInstance().GetHeight() - 1) {
|
||
UIScrollView::OnDragEvent(event);
|
||
return true;
|
||
}
|
||
//返回false表示不拦截事件,继续传递给父控件
|
||
return false;
|
||
}
|
||
//返回true表示拦截事件,不继续传递给父控件,自己滚动
|
||
UIScrollView::OnDragEvent(event);
|
||
return true;
|
||
}
|
||
// UIScrollView::OnDragEvent(event);
|
||
return true;
|
||
#endif
|
||
}
|
||
|
||
private:
|
||
bool isConsumed = true;
|
||
};
|
||
|
||
void TjdUiAppMainPageShortcut::CreateShortcutItemView(UIViewGroup *viewGroup, uint8_t index, int16_t itemX,
|
||
int16_t itemY, UIView::OnClickListener *clickListener)
|
||
{
|
||
uint8_t cntItem = sizeof(shortcutItems) / sizeof(shortcutItems[0]);
|
||
uint8_t i;
|
||
for (i = 0; i < cntItem; i++) {
|
||
if (index == shortcutItems[i].index) {
|
||
break;
|
||
}
|
||
}
|
||
if (i >= cntItem) {
|
||
return;
|
||
}
|
||
ImageInfo *imgInfo;
|
||
UIImageView *img = new UIImageView();
|
||
viewGroup->Add(img);
|
||
if (index == SHORTCUT_BLUETOOTH_INDEX) {
|
||
imgBt_ = img;
|
||
if (tjd_get_bt_adv_statue()) {
|
||
if (tjd_get_bt_is_connect()) {
|
||
imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(IMG_MAIN_SHORTCUT_BT_OPEN_CONNECT,
|
||
IMAGE_BIN_PATH);
|
||
} else {
|
||
imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(
|
||
shortcutItems[FindArrayIndex(SHORTCUT_BLUETOOTH_INDEX)].iconOpenId, IMAGE_BIN_PATH);
|
||
}
|
||
} else {
|
||
imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(
|
||
shortcutItems[FindArrayIndex(SHORTCUT_BLUETOOTH_INDEX)].iconCloseId, IMAGE_BIN_PATH);
|
||
}
|
||
} else if (index == SHORTCUT_BRIGHT_SCREEN_INDEX) {
|
||
imgBrightScreen_ = img;
|
||
if (sql_fit_get_switch_bright_screen()) {
|
||
imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(shortcutItems[i].iconOpenId, IMAGE_BIN_PATH);
|
||
} else {
|
||
imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(shortcutItems[i].iconCloseId, IMAGE_BIN_PATH);
|
||
}
|
||
} else if (index == SHORTCUT_CLOCK_INDEX) {
|
||
imgBedClock_ = img;
|
||
if (sql_setting_get_bedside_clock()) {
|
||
imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(shortcutItems[i].iconOpenId, IMAGE_BIN_PATH);
|
||
} else {
|
||
imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(shortcutItems[i].iconCloseId, IMAGE_BIN_PATH);
|
||
}
|
||
} else if (index == SHORTCUT_NOT_DISTURB_INDEX) {
|
||
imgNotDisturb_ = img;
|
||
if (sql_setting_get_dnd_all_day()) {
|
||
imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(shortcutItems[i].iconOpenId, IMAGE_BIN_PATH);
|
||
} else {
|
||
imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(shortcutItems[i].iconCloseId, IMAGE_BIN_PATH);
|
||
}
|
||
} else if (index == SHORTCUT_SCREEN_SET_INDEX) {
|
||
imgScreenSet_ = img;
|
||
if (screenSetFlag == 1) {
|
||
imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(shortcutItems[i].iconOpenId, IMAGE_BIN_PATH);
|
||
} else {
|
||
imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(shortcutItems[i].iconCloseId, IMAGE_BIN_PATH);
|
||
}
|
||
} else {
|
||
imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(shortcutItems[i].iconOpenId, IMAGE_BIN_PATH);
|
||
}
|
||
|
||
img->SetSrc(imgInfo);
|
||
img->SetPosition(itemX, itemY);
|
||
img->SetOnClickListener(clickListener);
|
||
img->SetTouchable(true);
|
||
img->SetViewIndex(index);
|
||
}
|
||
|
||
uint8_t TjdUiAppMainPageShortcut::FindArrayIndex(uint8_t index)
|
||
{
|
||
uint8_t cntItem = sizeof(shortcutItems) / sizeof(shortcutItems[0]);
|
||
for (uint8_t i = 0; i < cntItem; i++) {
|
||
if (index == shortcutItems[i].index) {
|
||
return i;
|
||
}
|
||
}
|
||
return 0;
|
||
}
|
||
|
||
void TjdUiAppMainPageShortcut::UpdateView(void)
|
||
{
|
||
ImageInfo *imgInfo;
|
||
char dig_text[20];
|
||
rtc_class_ops *rtc = tjd_driver_rtc_get_ops();
|
||
struct rtc_time localTime;
|
||
rtc->get_rtc_time(&localTime);
|
||
uint8_t battery = tjd_service_charger_get_battery();
|
||
std::ostringstream oss;
|
||
uint8_t month = localTime.tm_mon; //获得当前的月份
|
||
uint8_t day = localTime.tm_mday; //获得当前的日期
|
||
uint8_t weekIndex = localTime.tm_wday; //获得当前是星期几
|
||
|
||
if (img_bat_level) {
|
||
uint8_t bat_level = battery / 10;
|
||
imgInfo =
|
||
ImageCacheManager::GetInstance().LoadOneInMultiRes(IMG_BATTERY_BAT_0 + bat_level, BATTERY_IMAGE_BIN_PATH);
|
||
img_bat_level->SetSrc(imgInfo);
|
||
}
|
||
if (label_bat_dig) {
|
||
uint8_t bat_level_dig = (uint8_t)battery;
|
||
oss.str("");
|
||
oss << static_cast<int>(bat_level_dig) << '%';
|
||
std::string result = oss.str();
|
||
strcpy(dig_text, result.c_str());
|
||
label_bat_dig->SetText(dig_text);
|
||
}
|
||
if (img_ble_status) {
|
||
uint8_t ble_connected = tjd_get_ble_is_connect();
|
||
//蓝牙图标
|
||
if (ble_connected) {
|
||
imgInfo =
|
||
ImageCacheManager::GetInstance().LoadOneInMultiRes(IMG_MAIN_SHORTCUT_BLUETOOTH_ON, IMAGE_BIN_PATH);
|
||
} else {
|
||
imgInfo =
|
||
ImageCacheManager::GetInstance().LoadOneInMultiRes(IMG_MAIN_SHORTCUT_BLUETOOTH_OFF, IMAGE_BIN_PATH);
|
||
}
|
||
img_ble_status->SetSrc(imgInfo);
|
||
}
|
||
|
||
if (label_date) {
|
||
std::string result;
|
||
oss.str("");
|
||
oss << static_cast<int>(month) << '/' << static_cast<int>(day);
|
||
result = oss.str();
|
||
memset(dig_text, 0, sizeof(dig_text));
|
||
strcpy(dig_text, result.c_str());
|
||
label_date->SetText(dig_text);
|
||
}
|
||
|
||
if (label_week) {
|
||
const char *weekStr = nullptr;
|
||
TjdUiLanguageId language = TjdUiMultiLanguageExt::GetCurrentLanguage();
|
||
if (language == LANGUAGE_ID_CHS) {
|
||
weekStr = week_ch[weekIndex];
|
||
} else {
|
||
weekStr = week_en[weekIndex];
|
||
}
|
||
label_week->SetText(weekStr);
|
||
}
|
||
|
||
if (imgBt_) {
|
||
if (tjd_get_bt_adv_statue()) {
|
||
if (tjd_get_bt_is_connect()) {
|
||
imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(IMG_MAIN_SHORTCUT_BT_OPEN_CONNECT,
|
||
IMAGE_BIN_PATH);
|
||
} else {
|
||
imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(
|
||
shortcutItems[FindArrayIndex(SHORTCUT_BLUETOOTH_INDEX)].iconOpenId, IMAGE_BIN_PATH);
|
||
}
|
||
} else {
|
||
imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(
|
||
shortcutItems[FindArrayIndex(SHORTCUT_BLUETOOTH_INDEX)].iconCloseId, IMAGE_BIN_PATH);
|
||
}
|
||
imgBt_->SetSrc(imgInfo);
|
||
}
|
||
viewGroup1->Remove(label_bat_dig);
|
||
viewGroup1->Add(label_bat_dig);
|
||
viewGroup2->Remove(label_week);
|
||
viewGroup2->Add(label_week);
|
||
}
|
||
|
||
bool TjdUiAppMainPageShortcut::InitView(void)
|
||
{
|
||
container = new UIViewGroup();
|
||
container->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
|
||
container->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
|
||
UIView::OnClickListener *clickListener = (UIView::OnClickListener *)TjdUiAppMainPresenter::GetInstance();
|
||
// UIView::OnDragListener *dragListener = (UIView::OnDragListener *)TjdUiAppMainPresenter::GetInstance();
|
||
// UIScrollView *scrollCont = new UIScrollView();
|
||
// scrollCont->SetOnDragListener(dragListener);
|
||
scrollCont = new TjdShortcutScrollView();
|
||
scrollCont->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
|
||
scrollCont->SetScrollBlankSize(0);
|
||
scrollCont->SetHorizontalScrollState(false);
|
||
scrollCont->SetThrowDrag(true); //设置结束拖动时,是否产生惯性滑动动效
|
||
scrollCont->SetSwipeACCLevel(5); // 越大距离越长
|
||
scrollCont->SetDragACCLevel(10); //越大时间越短
|
||
// scrollCont->SetReboundSize(100);
|
||
scrollCont->SetMaxScrollDistance(1000);
|
||
scrollCont->SetElastic(true);
|
||
scrollCont->SetReboundSize(Screen::GetInstance().GetHeight() >> 1);
|
||
scrollCont->SetPosition(0, 0);
|
||
scrollCont->SetWidth(Screen::GetInstance().GetWidth());
|
||
scrollCont->SetHeight(Screen::GetInstance().GetHeight());
|
||
|
||
viewGroup = new UIViewGroup();
|
||
viewGroup->SetViewId("viewGroup");
|
||
viewGroup->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
|
||
// viewGroup->SetOnDragListener(dragListener);
|
||
viewGroup->SetPosition(0, 0);
|
||
viewGroup->SetAutoSize(true);
|
||
scrollCont->Add(viewGroup);
|
||
|
||
ImageInfo *imgInfo;
|
||
UIImageView *editBackground = new UIImageView();
|
||
imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(
|
||
shortcutItems[FindArrayIndex(SHORTCUT_EDIT_INDEX)].iconCloseId, IMAGE_BIN_PATH);
|
||
editBackground->SetPosition(143, 43);
|
||
editBackground->SetSrc(imgInfo);
|
||
editBackground->SetOnClickListener(clickListener);
|
||
editBackground->SetTouchable(true);
|
||
editBackground->SetViewIndex(SHORTCUT_EDIT_INDEX);
|
||
editBackground->SetViewId("editBackground");
|
||
viewGroup->Add(editBackground);
|
||
|
||
UILabelExt *labelEdit = new UILabelExt();
|
||
viewGroup->Add(labelEdit);
|
||
// labelEdit->SetText("编辑");//需要换成多语言
|
||
labelEdit->SetTextId(STR_ID_69); //需要换成多语言
|
||
labelEdit->SetFont(TJD_VECTOR_FONT_FILENAME, 30);
|
||
labelEdit->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
|
||
labelEdit->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
|
||
labelEdit->AlignHorCenterToSibling(editBackground->GetViewId(), 0);
|
||
labelEdit->AlignVerCenterToSibling(editBackground->GetViewId(), 0);
|
||
|
||
uint8_t itemVerGap = 32;
|
||
uint8_t itemHorGap = 32;
|
||
uint8_t imageHeight = 110;
|
||
uint8_t imageWidth = 110;
|
||
uint8_t listCnt = shortcutList.size();
|
||
if (listCnt < minShortcutNum) {
|
||
static_print_error("shortcut num is too small, cnt:%d", listCnt);
|
||
listCnt = minShortcutNum;
|
||
}
|
||
|
||
uint8_t cntItem = sizeof(shortcutItems) / sizeof(shortcutItems[0]);
|
||
uint8_t numReminder = listCnt % 3;
|
||
auto begin = shortcutList.begin();
|
||
auto end = shortcutList.end();
|
||
int x = 36;
|
||
int y = 151;
|
||
if (numReminder == 1) {
|
||
auto it = shortcutList.begin();
|
||
auto &firstItem = *it; // 第一个元素
|
||
CreateShortcutItemView(viewGroup, firstItem, 178, 151, clickListener);
|
||
begin = std::next(begin, 1); // 移动迭代器到下一个元素
|
||
y += itemHorGap + imageWidth;
|
||
} else if (numReminder == 2) {
|
||
auto it = shortcutList.begin();
|
||
auto &firstItem = *it; // 第一个元素
|
||
CreateShortcutItemView(viewGroup, firstItem, 105, 151, clickListener);
|
||
std::advance(it, 1); // 移动迭代器到下一个元素
|
||
auto &secondItem = *it; // 第二个元素
|
||
CreateShortcutItemView(viewGroup, secondItem, 247, 151, clickListener);
|
||
begin = std::next(begin, 2); // 移动迭代器到下一个元素
|
||
y += itemHorGap + imageWidth;
|
||
}
|
||
int index = 0;
|
||
for (auto it = begin; it != end; ++it, ++index) {
|
||
const auto &item = *it;
|
||
x = 36 + (index % 3) * (itemHorGap + imageWidth);
|
||
if (index != 0 && index % 3 == 0) {
|
||
y += (itemVerGap + imageHeight);
|
||
}
|
||
CreateShortcutItemView(viewGroup, item, x, y, clickListener);
|
||
}
|
||
|
||
viewGroup1 = new UIViewGroup();
|
||
viewGroup->Add(viewGroup1);
|
||
viewGroup1->SetViewId("viewGroup1");
|
||
viewGroup1->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
|
||
// viewGroup->SetOnDragListener(dragListener);
|
||
viewGroup1->SetAutoSize(true);
|
||
|
||
uint8_t ble_connected = tjd_get_ble_is_connect();
|
||
//蓝牙图标以及电量星期显示
|
||
img_ble_status = new UIImageView();
|
||
viewGroup1->Add(img_ble_status);
|
||
if (ble_connected) {
|
||
imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(IMG_MAIN_SHORTCUT_BLUETOOTH_ON, IMAGE_BIN_PATH);
|
||
} else {
|
||
imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(IMG_MAIN_SHORTCUT_BLUETOOTH_OFF, IMAGE_BIN_PATH);
|
||
}
|
||
img_ble_status->SetSrc(imgInfo);
|
||
img_ble_status->SetViewId("img_ble_status");
|
||
// img_ble_status->SetX(146);
|
||
// img_ble_status->SetY(y + imageHeight + 32);
|
||
img_ble_status->SetX(0);
|
||
img_ble_status->SetY(0);
|
||
|
||
// img_ble_status->LayoutBottomToSibling(img_flashlight->GetViewId(), 40);
|
||
|
||
uint8_t battery = tjd_service_charger_get_battery();
|
||
uint8_t bat_level = battery / 10;
|
||
img_bat_level = new UIImageView();
|
||
viewGroup1->Add(img_bat_level);
|
||
imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(IMG_BATTERY_BAT_0 + bat_level, BATTERY_IMAGE_BIN_PATH);
|
||
img_bat_level->SetSrc(imgInfo);
|
||
img_bat_level->SetViewId("img_bat_level");
|
||
// img_bat_level->SetX(150);
|
||
img_bat_level->LayoutRightToSibling(img_ble_status->GetViewId(), 20);
|
||
img_bat_level->AlignVerCenterToSibling(img_ble_status->GetViewId(), 0);
|
||
viewGroup1->Remove(img_bat_level);
|
||
viewGroup1->Add(img_bat_level);
|
||
|
||
uint8_t bat_level_dig = (uint8_t)battery;
|
||
// bat_level_dig = 100;
|
||
label_bat_dig = new UILabel();
|
||
viewGroup1->Add(label_bat_dig);
|
||
char dig_text[20];
|
||
std::ostringstream oss;
|
||
oss << static_cast<int>(bat_level_dig) << '%';
|
||
std::string result = oss.str();
|
||
strcpy(dig_text, result.c_str());
|
||
label_bat_dig->SetText(dig_text);
|
||
label_bat_dig->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
|
||
label_bat_dig->SetFont(TJD_VECTOR_FONT_FILENAME, 36);
|
||
label_bat_dig->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
|
||
label_bat_dig->LayoutRightToSibling(img_bat_level->GetViewId(), 20);
|
||
int16_t offsety = (img_bat_level->GetHeight() - label_bat_dig->GetHeight()) / 2;
|
||
label_bat_dig->SetY(img_bat_level->GetY() + offsety);
|
||
// label_bat_dig->AlignVerCenterToSibling(img_bat_level->GetViewId(), -1);
|
||
// printf("label bat level x:%d,y:%d, w:%d,%d, h:%d,%d\n", label_bat_dig->GetX(), label_bat_dig->GetY(),
|
||
// label_bat_dig->GetWidth(), label_bat_dig->GetRect().GetWidth(),
|
||
// label_bat_dig->GetHeight(),label_bat_dig->GetRect().GetHeight());
|
||
viewGroup1->Remove(label_bat_dig);
|
||
viewGroup1->Add(label_bat_dig);
|
||
viewGroup1->SetX((Screen::GetInstance().GetWidth() - viewGroup1->GetWidth()) / 2);
|
||
viewGroup1->SetY(y + imageHeight + 32);
|
||
// viewGroup1->SetStyle(STYLE_BACKGROUND_COLOR, Color::Green().full);
|
||
viewGroup->Remove(viewGroup1);
|
||
viewGroup->Add(viewGroup1);
|
||
|
||
viewGroup2 = new UIViewGroup();
|
||
viewGroup->Add(viewGroup2);
|
||
viewGroup2->SetViewId("viewGroup2");
|
||
viewGroup2->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
|
||
// viewGroup->SetOnDragListener(dragListener);
|
||
viewGroup2->SetAutoSize(true);
|
||
rtc_class_ops *rtc = tjd_driver_rtc_get_ops();
|
||
struct rtc_time localTime;
|
||
rtc->get_rtc_time(&localTime);
|
||
|
||
uint8_t month = localTime.tm_mon; //获得当前的月份
|
||
uint8_t day = localTime.tm_mday; //获得当前的日期
|
||
uint8_t weekIndex = localTime.tm_wday; //获得当前是星期几
|
||
|
||
label_date = new UILabel();
|
||
viewGroup2->Add(label_date);
|
||
oss.str("");
|
||
oss << static_cast<int>(month) << '/' << static_cast<int>(day);
|
||
result = oss.str();
|
||
memset(dig_text, 0, sizeof(dig_text));
|
||
strcpy(dig_text, result.c_str());
|
||
label_date->SetViewId("label_date");
|
||
label_date->SetFont(TJD_DIN_MEDIUM_FONT_FILENAME, 36);
|
||
label_date->SetText(dig_text);
|
||
label_date->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
|
||
label_date->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
|
||
label_date->SetX(0);
|
||
label_date->SetY(0);
|
||
// printf("label date x:%d,y:%d, w:%d, h:%d\n", label_date->GetX(), label_date->GetY(),
|
||
// label_date->GetRect().GetWidth(), label_date->GetRect().GetHeight());
|
||
// printf("label date x:%d,y:%d, w:%d, h:%d\n", label_date->GetX(), label_date->GetY(), label_date->GetWidth(),
|
||
// label_date->GetHeight());
|
||
viewGroup2->Remove(label_date);
|
||
viewGroup2->Add(label_date);
|
||
// printf("group2 width:%d, height:%d\n", viewGroup2->GetWidth(), viewGroup2->GetHeight());
|
||
|
||
const char *weekStr = nullptr;
|
||
TjdUiLanguageId language = TjdUiMultiLanguageExt::GetCurrentLanguage();
|
||
if (language == LANGUAGE_ID_CHS) {
|
||
weekStr = week_ch[weekIndex];
|
||
} else {
|
||
weekStr = week_en[weekIndex];
|
||
}
|
||
label_week = new UILabel();
|
||
viewGroup2->Add(label_week);
|
||
label_week->SetText(weekStr);
|
||
label_week->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
|
||
label_week->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
|
||
label_week->SetFont(TJD_VECTOR_FONT_FILENAME, 36);
|
||
label_week->LayoutRightToSibling(label_date->GetViewId(), 13);
|
||
offsety = (label_date->GetHeight() - label_week->GetHeight()) / 2;
|
||
label_week->SetY(label_date->GetY() + offsety);
|
||
// printf("label label_week x:%d,y:%d, w:%d,%d, h:%d,%d\n", label_week->GetX(), label_week->GetY(),
|
||
// label_week->GetWidth(), label_week->GetRect().GetWidth(),
|
||
// label_week->GetHeight(),label_week->GetRect().GetHeight());
|
||
viewGroup2->Remove(label_week);
|
||
viewGroup2->Add(label_week);
|
||
// printf("group2 width:%d, height:%d\n", viewGroup2->GetWidth(), viewGroup2->GetHeight());
|
||
viewGroup2->SetX((Screen::GetInstance().GetWidth() - viewGroup2->GetWidth()) / 2);
|
||
viewGroup2->SetY(viewGroup1->GetY() + viewGroup1->GetHeight() + 10);
|
||
viewGroup->Remove(viewGroup2);
|
||
viewGroup->Add(viewGroup2);
|
||
|
||
UIViewGroup *blankGroup = new UIViewGroup();
|
||
viewGroup->Add(blankGroup);
|
||
blankGroup->SetViewId("blankGroup");
|
||
blankGroup->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
|
||
blankGroup->SetAutoSize(false);
|
||
blankGroup->SetWidth(Screen::GetInstance().GetWidth());
|
||
blankGroup->SetHeight(40);
|
||
blankGroup->LayoutBottomToSibling(viewGroup2->GetViewId(), 0);
|
||
blankGroup->LayoutLeftToSibling(viewGroup2->GetViewId(), 0);
|
||
|
||
viewGroup->Remove(blankGroup);
|
||
viewGroup->Add(blankGroup);
|
||
container->Add(scrollCont);
|
||
container->SetViewId("shortcut");
|
||
Add(container);
|
||
scrollCont->ScrollBy(0, -((viewGroup->GetHeight() - 1) - (Screen::GetInstance().GetHeight() - 1)));
|
||
// printf("---------------------group top:%d, height:%d,scroll to:%d,bottom:%d\n", viewGroup->GetRect().GetTop(),
|
||
// viewGroup->GetHeight(), -(viewGroup->GetHeight() - Screen::GetInstance().GetHeight() - 1),
|
||
// viewGroup->GetRect().GetBottom());
|
||
return true;
|
||
}
|
||
|
||
} // namespace TJD
|