#include "TjdUiAppSettingModel.h" #include "TjdUiAppMainView.h" #include "TjdUiAppSettingPresenter.h" #include "TjdUiImageIds.h" #include "TjdUiMessageCommon.h" #include "TjdUiMultiLanguage.h" #include "ble_api.h" #include "graphic_service.h" #include "power_display_service.h" #include "service_charger.h" #include "sys_config.h" #include "tp_api.h" #include #include extern "C" { #include "sql_bt.h" #include "sql_fit.h" #include "sql_setting.h" #include "task_driver_event.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 static const char url[] = {"http://dw.ss-tjd.com/download/index4.html?name=Lefun&mac="}; namespace TJD { static void PostFuncEvent(std::function func) { GraphicService::GetInstance()->PostGraphicEvent([func]() { func(); }); } TjdUiAppSettingModel::TjdUiAppSettingModel() { const char *path = TJD_IMAGE_PATH "img_setting.bin"; // clang-format off motionIconList_.clear(); motionIconList_.push_back({STR_ID_502, TJD_MAIN_PAGE_EFFECT_NONE, IMG_SETTING_STYLE_01, path}); motionIconList_.push_back({STR_ID_503, TJD_MAIN_PAGE_EFFECT_CURTAIN, IMG_SETTING_STYLE_02, path}); motionIconList_.push_back({STR_ID_504, TJD_MAIN_PAGE_EFFECT_CURTAIN_FADE_IN_OUT, IMG_SETTING_STYLE_03, path}); motionIconList_.push_back({STR_ID_505, TJD_MAIN_PAGE_EFFECT_CURTAIN_GAOSI, IMG_SETTING_STYLE_07, path}); motionIconList_.push_back({STR_ID_506, TJD_MAIN_PAGE_EFFECT_TURN_PAGE, IMG_SETTING_STYLE_04, path}); motionIconList_.push_back({STR_ID_507, TJD_MAIN_PAGE_EFFECT_ROTATE_TURN, IMG_SETTING_STYLE_04, path}); motionIconList_.push_back({STR_ID_508, TJD_MAIN_PAGE_EFFECT_CENTER_ZOOM, IMG_SETTING_STYLE_05, path}); motionIconList_.push_back({STR_ID_509, TJD_MAIN_PAGE_EFFECT_3D, IMG_SETTING_STYLE_06, path}); styleIconList_.clear(); styleIconList_.push_back({STR_ID_477, MENU_STYLE_LIST, IMG_SETTING_ICON_STYLE_03, path}); styleIconList_.push_back({STR_ID_475, MENU_STYLE_CELLUAR, IMG_SETTING_ICON_STYLE_01, path}); styleIconList_.push_back({STR_ID_476, MENU_STYLE_SPHERE, IMG_SETTING_ICON_STYLE_02, path}); styleIconList_.push_back({STR_ID_478, MENU_STYLE_GRID, IMG_SETTING_ICON_STYLE_04, path}); // clang-format on } TjdUiAppSettingModel *TjdUiAppSettingModel::GetInstance(void) { static TjdUiAppSettingModel instance; return &instance; } std::string TjdUiAppSettingModel::GetConnectUrl() { uint8_t *mac = sql_bt_get_mac_addr(); const uint8_t count = 6; std::stringstream ss; for (uint8_t i = 0; i < count; ++i) { ss << std::setfill('0') << std::setw(2) << std::hex << std::uppercase << static_cast(mac[i]); } return url + ss.str(); } bool TjdUiAppSettingModel::IsOpenBle() { return sql_bt_get_bt_switch_mode(); } bool TjdUiAppSettingModel::SetOpenBle(bool status) { if (status) { PostFuncEvent([]() { tjd_open_bluetooth_only(); }); } else { PostFuncEvent([]() { tjd_close_bluetooth_only(); }); } sql_bt_set_bt_switch_mode(status); return true; } bool TjdUiAppSettingModel::IsConnectApp() { return tjd_get_ble_is_connect(); } const std::string &TjdUiAppSettingModel::GetUserName() { char name[32] = {0}; sql_fit_get_user_name(name); userName_ = name; return userName_; } const std::string &TjdUiAppSettingModel::GetBleName() { uint8_t name[255]; uint8_t len = 255; gap_ble_get_local_name(name, &len); std::string nameStr(reinterpret_cast(name), len); if (nameStr.empty()) { nameStr = "TH18ALefun"; } bleName_ = nameStr; return bleName_; } uint8_t TjdUiAppSettingModel::GetUserHeight() { return sql_fit_get_user_height(); } uint8_t TjdUiAppSettingModel::GetUserWeight() { return sql_fit_get_user_weight(); } const std::string TjdUiAppSettingModel::GetMacAddress() { uint8_t *mac = sql_bt_get_mac_addr(); const uint8_t count = 6; std::stringstream ss; for (uint8_t i = 0; i < count; ++i) { if (i != 0) { ss << ":"; } ss << std::setfill('0') << std::setw(2) << std::hex << std::uppercase << static_cast(mac[i]); } return ss.str(); } const std::string TjdUiAppSettingModel::GetVersion() { std::ostringstream oss; oss << "SV" << DEVICE_SOFT_VERSION_H << "." << DEVICE_SOFT_VERSION_L << "_" << "HV" << DEVICE_HARD_VERSION_H << "." << DEVICE_HARD_VERSION_L; return oss.str(); } const std::string TjdUiAppSettingModel::GetKernelVersion() { std::ostringstream oss; oss << DEVICE_KERNEL_TYPE_STR << "_T" << std::setw(5) << std::setfill('0') << DEVICE_KERNEL_PROJECT_ID << "_" << std::setw(20) << std::setfill('0') << std::hex << DEVICE_KERNEL_DEVICE_ID; return oss.str(); } void TjdUiAppSettingModel::SetNotification(bool notification) { if (notification == 0) { TjdUiAppMainView::SetMessageRead(0); } sql_setting_set_notification(notification); } bool TjdUiAppSettingModel::GetNotification(void) { return sql_setting_get_notification(); } void TjdUiAppSettingModel::SetScreenWakes(bool screenWakes) { sql_setting_set_screen_wakes(screenWakes); } bool TjdUiAppSettingModel::GetScreenWakes(void) { return sql_setting_get_screen_wakes(); } void TjdUiAppSettingModel::SetLanguage(language_enum language) { sql_setting_set_language(language); } language_enum TjdUiAppSettingModel::GetLanguage(void) { return sql_setting_get_language(); } void TjdUiAppSettingModel::SetDoNotDisturb(bool status) { sql_setting_set_dnd_all_day(status); } bool TjdUiAppSettingModel::GetDoNotDisturb(void) { return sql_setting_get_dnd_all_day(); } void TjdUiAppSettingModel::SetDoNotDisturbPeriodEnable(bool status) { sql_setting_set_dnd_period_enable(status); } bool TjdUiAppSettingModel::GetDoNotDisturbPeriodEnable(void) { return sql_setting_get_dnd_period_enable(); } void TjdUiAppSettingModel::SetDoNotDisturbPeriod(uint8_t startHour, uint8_t startMinute, uint8_t endHour, uint8_t endMinute) { sql_setting_set_dnd_period(true, startHour, startMinute, endHour, endMinute); } void TjdUiAppSettingModel::GetDoNotDisturbPeriod(uint8_t &startHour, uint8_t &startMinute, uint8_t &endHour, uint8_t &endMinute) { sql_setting_get_dnd_period(&startHour, &startMinute, &endHour, &endMinute); } void TjdUiAppSettingModel::SetScreenBrightnessLevel(uint8_t brightness, bool isSave) { const power_display_svr_api_t *display_api = power_display_svr_get_api(); display_api->set_brightness_mode(MANUAL); display_api->set_brightness(brightness); if (isSave) { sql_setting_set_brightness(brightness); } } uint8_t TjdUiAppSettingModel::GetScreenBrightness() { return sql_setting_get_brightness(); } void TjdUiAppSettingModel::SetScreenAutoBrightness(bool autoBrightness) { const power_display_svr_api_t *display_api = power_display_svr_get_api(); errcode_t ret = display_api->set_brightness_mode(autoBrightness ? AUTO : MANUAL); if (ret != ERRCODE_SUCC) { static_print_error("set_brightness_mode failed, ret = %d", ret); } } bool TjdUiAppSettingModel::GetScreenAutoBrightness() { const power_display_svr_api_t *display_api = power_display_svr_get_api(); return display_api->get_brightness_mode() == AUTO; } void TjdUiAppSettingModel::SetPowerSavingMode(bool status) { sql_setting_set_power_saving_mode(status); } bool TjdUiAppSettingModel::GetPowerSavingMode(void) { return sql_setting_get_power_saving_mode(); } void TjdUiAppSettingModel::SetShowOffScreenView(bool status) { sql_setting_set_off_screen(status); power_display_gui_enable_aod(status); } bool TjdUiAppSettingModel::GetShowOffScreenView(void) { return sql_setting_get_off_screen(); } void TjdUiAppSettingModel::SetShowOffScreenViewType(uint8_t type) { sql_setting_set_off_screen_view_type(type); } uint8_t TjdUiAppSettingModel::GetShowOffScreenViewType(void) { return sql_setting_get_off_screen_view_type(); } void TjdUiAppSettingModel::SetBedsideClock(bool status) { sql_setting_set_bedside_clock(status); } bool TjdUiAppSettingModel::GetBedsideClock(void) { return sql_setting_get_bedside_clock(); } void TjdUiAppSettingModel::SetKeepScreenSec(uint16_t sec) { return sql_setting_set_keep_screen_time(sec); } uint16_t TjdUiAppSettingModel::GetKeepScreenTime(void) { return sql_setting_get_keep_screen_time(); } void TjdUiAppSettingModel::SetMotionEnable(bool status) { sql_setting_set_motion_enable(status); } bool TjdUiAppSettingModel::GetMotionEnable(void) { return sql_setting_get_motion_enable(); } void TjdUiAppSettingModel::SetMotionEndEnable(bool status) { sql_setting_set_motion_end_enable(status); } bool TjdUiAppSettingModel::GetMotionEndEnable(void) { return sql_setting_get_motion_end_enable(); } void TjdUiAppSettingModel::SetMotionOutTime(uint32_t time) { sql_setting_set_motion_out_time(time); } uint32_t TjdUiAppSettingModel::GetMotionOutTime(void) { return sql_setting_get_motion_out_time(); } void TjdUiAppSettingModel::SetPasswordEnable(bool status) { sql_setting_set_password_enable(status); } bool TjdUiAppSettingModel::GetPasswordEnable(void) { return sql_setting_get_password_enable(); } void TjdUiAppSettingModel::SetPassword(const char *password) { password_ = password; sql_setting_set_password(password); } std::string &TjdUiAppSettingModel::GetPassword() { char password[6] = {0}; sql_setting_get_password(password); std::string passwordTmp(password, 4); password_ = passwordTmp; return password_; } void TjdUiAppSettingModel::SetPinchToAnswer(bool status) { sql_setting_set_pinch_to_answer(status); } bool TjdUiAppSettingModel::GetPinchToAnswer(void) { return sql_setting_get_pinch_to_answer(); } void TjdUiAppSettingModel::SetCoverToTurnOffScreen(bool status) { tjd_driver_tp_set_wakeup_enable(status); sql_setting_set_cover_to_turn_off_screen(status); } bool TjdUiAppSettingModel::GetCoverToTurnOffScreen(void) { return sql_setting_get_cover_to_turn_off_screen(); } void TjdUiAppSettingModel::SetLeftKeySetting(uint32_t setting) { sql_setting_set_switch_downkey_app(setting); } uint32_t TjdUiAppSettingModel::GetLeftKeySetting(void) { return sql_setting_get_switch_downkey_app(); } void TjdUiAppSettingModel::SetFloatingWindow(uint16_t *id) { sql_setting_set_floating_window_map(id, 10); } const uint16_t *TjdUiAppSettingModel::GetFloatingWindow() { return sql_setting_get_floating_window_map(nullptr); } void TjdUiAppSettingModel::SetAnimation(uint8_t animation) { sql_setting_set_animation(static_cast(animation)); } uint8_t TjdUiAppSettingModel::GetAnimation(void) { return static_cast(sql_setting_get_animation()); } E_MenuStyle TjdUiAppSettingModel::GetWatchFaceMenuStyle(void) { return sql_setting_get_menu_style(); } bool TjdUiAppSettingModel::GetSwitchBrightScreen() { return sql_fit_get_switch_bright_screen(); } void TjdUiAppSettingModel::SetSwitchBrightScreen(bool status) { sql_fit_set_switch_bright_screen(status); } uint8_t TjdUiAppSettingModel::GetPower(void) { return tjd_service_charger_get_battery(); } void TjdUiAppSettingModel::SetVolume(uint8_t volume) { sql_setting_set_volume(volume); } uint8_t TjdUiAppSettingModel::GetVolume(void) { return sql_setting_get_volume(); } void TjdUiAppSettingModel::SetVolumeMute(bool mute) { sql_setting_set_volume_mute(mute); } bool TjdUiAppSettingModel::GetVolumeMute(void) { return sql_setting_get_volume_mute(); } void TjdUiAppSettingModel::SetTouchShake(bool shake) { sql_setting_set_touch_shake(shake); } bool TjdUiAppSettingModel::GetTouchShake(void) { return sql_setting_get_touch_shake(); } void TjdUiAppSettingModel::SetTouchShakeLevel(uint8_t level) { sql_setting_set_touch_shake_level(level); } uint8_t TjdUiAppSettingModel::GetTouchShakeLevel(void) { return sql_setting_get_touch_shake_level(); } } // namespace TJD