mcu_hi3321_watch/tjd/ui/app/main/TjdUiAppMainModel.cpp
2025-05-31 10:45:15 +08:00

152 lines
5.3 KiB
C++

/*----------------------------------------------------------------------------
* Copyright (c) TJD Technologies Co., Ltd. 2025. All rights reserved.
*
* Description: TjdUiAppMainModel.cpp
*
* Author: luziquan@ss-tjd.com
*
* Create: 2025-03-13
*--------------------------------------------------------------------------*/
#include "TjdUiAppMainModel.h"
#include "TjdUiImageIds.h"
#include "sql_setting.h"
#include "sys_config.h"
#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
namespace TJD {
static constexpr int CARD_SETTING_VALUE_LEN = 32;
TjdUiAppMainModel::TjdUiAppMainModel() {}
TjdUiAppMainModel::~TjdUiAppMainModel() {}
TjdUiAppMainModel &TjdUiAppMainModel::GetInstance(void)
{
static TjdUiAppMainModel instance;
return instance;
}
void TjdUiAppMainModel::Init()
{
cardInfos.resize(TjdCardId::TJD_CARD_MAX_CARD);
cardInfos.push_back({TjdCardId::TJD_CARD_FAVORITE, "副一屏", 0});
cardInfos.push_back({TjdCardId::TJD_CARD_WATCH_FACE, "表盘", 0});
cardInfos.push_back({TjdCardId::TJD_CARD_HEALTH, "健康", IMG_MAIN_PREVIEW_HEALTH});
cardInfos.push_back({TjdCardId::TJD_CARD_TOOL, "工具", IMG_MAIN_PREVIEW_TOOL});
cardInfos.push_back({TjdCardId::TJD_CARD_WEATHER, "天气", IMG_MAIN_PREVIEW_WEATHER});
cardInfos.push_back({TjdCardId::TJD_CARD_MUSIC, "音乐", IMG_MAIN_PREVIEW_MUSIC});
cardInfos.push_back({TjdCardId::TJD_CARD_MAKE_FRIEND, "支付交友", IMG_MAIN_PREVIEW_MAKE_FRIENDS});
cardInfos.push_back({TjdCardId::TJD_CARD_MAP, "地图", IMG_MAIN_PREVIEW_MAP});
cardInfos.push_back({TjdCardId::TJD_CARD_FOUR_LEAF_CLOVER, "四叶草", IMG_MAIN_PREVIEW_DATA});
InitCardSettings();
}
bool TjdUiAppMainModel::IsFromComponentsView(void) const { return isFromComponentsView; }
void TjdUiAppMainModel::SetFromComponentsView(bool isFrom) { isFromComponentsView = isFrom; }
void TjdUiAppMainModel::SetFromCardId(uint8_t cardId) { fromCardId = cardId; }
uint8_t TjdUiAppMainModel::GetFromComponentsCardId(void) { return fromCardId; }
void TjdUiAppMainModel::InitCardSettings(void)
{
int index = 0;
cardSettings.clear();
cardSettings.resize(TjdCardId::TJD_CARD_MAX_CARD);
uint8_t cardNums = 0;
const uint8_t *cards = sql_setting_get_card_settings(&cardNums);
if (cardNums > 0 && cards != nullptr) {
/* 读取用户card配置 */
for (uint8_t i = 0; i < cardNums; i++) {
if (index >= TjdCardId::TJD_CARD_MAX_CARD) {
break;
}
cardSettings[index++] = static_cast<TjdCardId>(cards[i]);
}
index = cardNums;
} else {
/* 使用默认card配置 */
cardSettings[index++] = TjdCardId::TJD_CARD_FAVORITE;
cardSettings[index++] = TjdCardId::TJD_CARD_WATCH_FACE;
cardSettings[index++] = TjdCardId::TJD_CARD_HEALTH;
cardSettings[index++] = TjdCardId::TJD_CARD_TOOL;
cardSettings[index++] = TjdCardId::TJD_CARD_WEATHER;
cardSettings[index++] = TjdCardId::TJD_CARD_MUSIC;
cardSettings[index++] = TjdCardId::TJD_CARD_MAKE_FRIEND;
cardSettings[index++] = TjdCardId::TJD_CARD_MAP;
cardSettings[index++] = TjdCardId::TJD_CARD_FOUR_LEAF_CLOVER;
}
}
void TjdUiAppMainModel::DeleteCardSetting(uint8_t index)
{
// char temp[CARD_SETTING_VALUE_LEN] = {0};
// for (uint8_t i = 0; i < cardSettingCount; i++) {
// if (i == index + 1) {
// uint8_t j = i;
// for (; j < cardSettingCount - 1; j++) {
// cardSettings[j] = cardSettings[j + 1];
// }
// cardSettings[j] = TJD_MAIN_MAX_CARD;
// cardSettingCount--;
// }
// }
// for (uint8_t i = 0; i < cardSettingCount; i++) {
// static_print_debug("cardSettings[%d] = %d", i, cardSettings[i]);
// (void)sprintf_s(temp + strlen(temp), CARD_SETTING_VALUE_LEN, "%d,", cardSettings[i]);
// }
// (void)UtilsSetValue("card_setting", temp);
}
void TjdUiAppMainModel::AddCardSetting(uint8_t index)
{
// char temp[CARD_SETTING_VALUE_LEN] = {0};
// if (cardSettingCount >= TJD_MAIN_MAX_CARD) {
// return;
// }
// for (int i = 0; i < cardSettingCount; i++) {
// if (cardSettings[i] == cardInfos[index].id) {
// return;
// }
// }
// cardSettings[cardSettingCount++] = cardInfos[index].id;
// for (uint8_t i = 0; i < cardSettingCount; i++) {
// static_print_debug("cardSettings[%d] = %d", i, cardSettings[i]);
// (void)sprintf_s(temp + strlen(temp), CARD_SETTING_VALUE_LEN, "%d,", cardSettings[i]);
// }
// (void)UtilsSetValue("card_setting", temp);
}
const std::vector<TjdCardId> &TjdUiAppMainModel::GetCardSettings(void) { return cardSettings; }
const CardInfo *TjdUiAppMainModel::GetCardInfo(TjdCardId id)
{
for (auto &cardInfo : cardInfos) {
if (cardInfo.id == id) {
return &cardInfo;
}
}
return nullptr;
}
} // namespace TJD