-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: MainModel.h\r
- * Author:\r
- * Create: 2021-11-23\r
+/***\r
+ * @Date: 2024-06-21 09:56:18\r
+ * @LastEditors: Caisking 3449750381@qq.com\r
+ * @LastEditTime: 2024-08-20 10:44:15\r
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/main/include/MainModel.h\r
*/\r
\r
#ifndef MAIN_MODEL_H\r
\r
#include <string>\r
#include "UiConfig.h"\r
+#include "ui_resource_string.h"\r
\r
-namespace OHOS {\r
- typedef struct {\r
+namespace OHOS\r
+{\r
+ struct CardInfo\r
+ {\r
CardId id;\r
const char *cardImg;\r
- } CardInfo;\r
-\r
- typedef struct {\r
- uint8_t id;\r
+ bool isVisible;\r
+ UIResourceTextId cardid;\r
+ };\r
+ struct CardInfoSet\r
+ {\r
+ CardId id;\r
+ bool isVisible;\r
+ };\r
+ // 自定义表盘配置\r
+ typedef struct\r
+ {\r
+ DialId id;\r
const char *dialName;\r
const char *dialImg;\r
uint8_t freq;\r
- uint8_t capability;\r
} DialInfo;\r
\r
- typedef struct {\r
- uint8_t dialFlag; // 0 在线表盘 1 离线表盘\r
+ typedef struct\r
+ {\r
+ uint8_t dialFlag;\r
uint8_t dialId;\r
std::string dialFullName;\r
} DialSetting;\r
\r
- class MainModel {\r
+ /*表盘状态*/\r
+ enum class DialState\r
+ {\r
+ DO_NOT_DISTURB, // 勿扰\r
+ SLEEP, // 睡眠\r
+ LOCK, // 锁\r
+ INVALID // 无效状态\r
+ };\r
+ const int STATE_COUNT = 3; // 确保这里的数量与 DialState 状态数相同\r
+\r
+ struct DialStateInfo\r
+ {\r
+ DialState state;\r
+ bool active; // 是否激活\r
+ };\r
+ class MainModel\r
+ {\r
public:\r
static MainModel &GetInstance(void);\r
void InitCardSettings(void);\r
void DeleteCardSetting(uint8_t index);\r
void AddCardSetting(uint8_t index);\r
const CardInfo *GetCardInfo(CardId card) const;\r
- const DialInfo *GetDialInfo(uint8_t dial) const; // 获取在线表盘配置\r
- uint8_t GetDialInfoNum() const; // 获取在线表盘的数量\r
- void AddDialSetting(const DialSetting &setting);\r
+ const DialInfo *GetDialInfo(DialId dial) const;\r
+ void AddDialSetting(const DialSetting &setting, const int id);\r
void InitDialSettings(void);\r
DialSetting &GetDialSetting();\r
bool IsFromSetCardView(void) const;\r
void SetFromSetCardView(bool isFrom);\r
void SetFromCardId(uint8_t cardId);\r
uint8_t GetFromCardId(void);\r
- bool IsAodEnabled();\r
+ void printCardSettings();\r
+ const char *getCardNameFromMap(uint8_t cardId) const;\r
+ const bool GetCardInfoSet(uint8_t index) const;\r
+\r
+ void setDialState(DialState state, bool value);\r
+ DialState getHighestPriorityActiveState();\r
+ bool getMessageActiveState();\r
+ void printDialStates();\r
+ void UpdateDialState();\r
+ void InitDialState();\r
+ bool getVideostate();\r
+ void setVideostate(bool state);\r
+ bool IsAodEnabled();\r
void EnableAod(bool enable);\r
\r
private:\r
- void InitDialSettingDefault(void);\r
+ void InitDialSettingDefault(int Id);\r
MainModel();\r
MainModel(const MainModel &);\r
MainModel &operator=(const MainModel &);\r
virtual ~MainModel();\r
\r
- CardId cardSettings[CARD_SETTING_COUNT_MAX] = { MAX_CARD };\r
+ CardId cardSettings[CARD_SETTING_COUNT_MAX] = {MAX_CARD};\r
uint8_t cardSettingCount{0};\r
DialSetting dialSetting;\r
bool isFromSetCardView{false};\r
uint8_t fromCardId{MAX_CARD};\r
- bool isAodEnabled{false};\r
+ bool video_state{false};\r
+ bool isAodEnabled{false};\r
};\r
}\r
\r
-#endif
\ No newline at end of file
+#endif\r
#ifndef MAIN_PRESENTER_SAMPLE_H
#define MAIN_PRESENTER_SAMPLE_H
-#include "Presenter.h"
+#include "HeartRateView.h"
+#include "KeyInputListener.h"
+#include "MainCompassPresenter.h"
+#include "MainCompassView.h"
+#include "MainModel.h"
+#include "MainViewSample.h"
#include "ModelListenerSample.h"
+#include "PlayersView.h"
+#include "Presenter.h"
#include "components/root_view.h"
-#include "drag_event.h"
-#include "MainViewSample.h"
-#include "MainModel.h"
#include "components/ui_swipe_view.h"
#include "components/ui_view.h"
-#include "MainCompassView.h"
-#include "MainCompassPresenter.h"
-#include "PlayersView.h"
-#include "HeartRateView.h"
+#include "drag_event.h"
#include "swipe_effect/zoom_effect.h"
namespace OHOS {
static constexpr const char *MAIN_CLICK_ACTIVITY = "mainclickactivity";
static constexpr const char *MAIN_CLICK_MESSAGE = "mainclickmessage";
static constexpr const char *MAIN_CLICK_HEARTRATE = "mainclickheartrate";
+static constexpr const char *MAIN_CLICK_BLOOD = "mainclickblood"; // Ѫ�����
+static constexpr const char *MAIN_CLICK_SETCARD =
+ "mainclicksetcard"; // ���ÿ�Ƭ
+
+static constexpr const char *DROPDOWN_CLICK_DONOTDISTURB =
+ "dropdownclickdonotdisturb";
+static constexpr const char *DROPDOWN_CLICK_BRIGHTENSCREEN =
+ "dropdownclickbrightscreen";
+
+static constexpr const char *DROPDOWN_CLICK_SETTING =
+ "dropdownclicksetting"; // ����
+static constexpr const char *DROPDOWN_CLICK_BLUETOOTH =
+ "dropdownclickbluetooth";
+static constexpr const char *DROPDOWN_CLICK_DNOTDISTURB =
+ "dropdownclickdnotdisturb"; // ����
+static constexpr const char *DROPDOWN_CLICK_SAVEELE =
+ "dropdownclicksaveele"; // ʡ��
+static constexpr const char *DROPDOWN_CLICK_FINDMYPHONE =
+ "dropdownclickfindmyphone"; // ���ֻ�
+
+static constexpr const char *CONNECTEDSTATUSBACKGROUNDBUTTON =
+ "connectedstatusbackgroundbutton"; // ����״̬��ť
+static constexpr const char *CONNECTEDSTATUSVIEWCLOSEBUTTON =
+ "connectedstatusviewclosebutton"; // ����״̬��ͼ�Ĺرհ�ť
-static constexpr const char *DROPDOWN_CLICK_DONOTDISTURB = "dropdownclickdonotdisturb";
-static constexpr const char *DROPDOWN_CLICK_BRIGHTENSCREEN = "dropdownclickbrightscreen";
-static constexpr const char *DROPDOWN_CLICK_FINDMYPHONE = "dropdownclickfindmyphone";
-static constexpr const char *DROPDOWN_CLICK_ALARM = "dropdownclickalarm";
-static constexpr const char *DROPDOWN_CLICK_SETTING = "dropdownclicksetting";
constexpr uint16_t VERTICAL_STATUS = 1;
constexpr uint16_t HORIZONTAL_STATUS = 0;
enum class MainPresenterState {
void SetPage(int8_t id, bool loadAdjacent = true);
void SetTaskPeroid(CardId cardId);
- void InitCardSettings(void);
- uint8_t GetCardSettingCount(void);
- CardId *GetCardSettings(void);
- void InitDialSettings(void);
- DialSetting& GetDialSetting();
- bool IsFromSetCardView(void) const;
- void SetFromSetCardView(bool isFrom);
- uint8_t GetFromCardId(void);
- MainPresenterState GetMainPresenterState();
+ void InitCardSettings(void);
+ uint8_t GetCardSettingCount(void);
+ CardId *GetCardSettings(void);
+ void InitDialSettings(void);
+ DialSetting &GetDialSetting();
+ void UpdataTime();
+ uint32_t GetWeekStr(char *p_week);
+ void UpdataBaseData();
+ void PullUpDown_StartTimer(uint32_t interval);
+ void PullUpDown_StopTimer(void);
+ static uint8_t g_PullUpDownTimes;
+
+ void get_memcheck();
+
+ bool IsFromSetCardView(void) const;
+ void SetFromSetCardView(bool isFrom);
+ uint8_t GetFromCardId(void);
+ MainPresenterState GetMainPresenterState();
private:
- void ProcessDataNotify(void);
- void SetCircleProgress(void);
- void SetCompassRotate(void);
- uint8_t state_ = UICheckBox::UICheckBoxState::MAX_STATUS_NUM;
- int64_t playerCurrentTime_{0};
- int64_t playerMusicDuration_{0};
- int64_t playerProgressValue_{0};
- bool isCompassSensorOpened_{false};
- MainPresenterState mainPresenterState_ = MainPresenterState::STOP;
+ void LogCardTransition(CardId previous, CardId current);
+ void ResetSleepCardView();
+ void ResetWeatherCardView();
+ void ResetgoalCardView();
+ void StartHeartRateDetection();
+ void UpdateWatchFace();
+ void UpdateWeather();
+ void Updategoal();
+ void UpdateSleep();
+ void ProcessDataNotify(void);
+ void SetCircleProgress(void);
+ void SetCompassRotate(void);
+ void OpenCompassSensor(void);
+ void CloseCompassSensor(void);
+ KeyInputListener *keyActListener_{nullptr};
+ uint8_t state_ = UICheckBox::UICheckBoxState::MAX_STATUS_NUM;
+ int64_t playerCurrentTime_{0};
+ int64_t playerMusicDuration_{0};
+ int64_t playerProgressValue_{0};
+ bool isCompassSensorOpened_{false}; //ָ���봫�����Ƿ��Ѿ���
+ CardId previousCardId{WATCH_FACE};
+
+ int isPullDownPageView{false};//�Ƿ��Ѿ�������������
+ MainPresenterState mainPresenterState_ = MainPresenterState::STOP;
};
}
#include <string>
#include "View.h"
+#include "window/window.h"
#include "components/root_view.h"
#include "swipe_effect/zoom_effect.h"
#include "ChangeSliceListener.h"
#include "CompassControlView.h"
#include "DialViewGroup.h"
#include "MainClockView.h"
-#include "PlayersView.h"
+#include "player/include/PlayersView.h"
#include "MainPresenterSample.h"
#include "HeartRateView.h"
#include "components/ui_card_page.h"
-#include "main/include/PullUpDownView.h"
+#include "PullUpDownView.h"
#include "components/ui_cross_view.h"
+#include "uicomponents/UIComponents.h"
+
#include "SetCardModel.h"
+// #include "heart_blood/BloodCardView.h"
+// #include "traing/training_card/include/Training_CardView.h"
+// #include "ApplistCardView.h"
+#include "weather/include/WeatherControlView.h"
+#include "goal/include/goalControlView.h"
-namespace OHOS {
-class MainPresenterSample;
-class MainViewSample : public View<MainPresenterSample> {
-public:
- MainViewSample();
- ~MainViewSample() override;
- static MainViewSample *GetInstance(void);
- void OnStart() override;
- void OnStop() override;
- UICardPage *InitWatchFacePage(void);
- UICardPage *InitHeartRatePage(void);
- UICardPage *InitActivityPage(void);
- UICardPage *InitCompassPage(void);
- UICardPage *InitMusicPlayerPage(void);
- void AnimatorStart(int pageIndex);
- void AnimatorStop(void);
- CardId GetHorCurrentCard() const;
- UIView* GetMainViewGroup(void) const
+// #include "message/include/MessageControlView.h"
+// #include "sleep/include/SleepCardView.h"
+#include "set_card/include/SetMainView.h"
+// #include "heartrate/include/HeartRateCardView.h"
+namespace OHOS
+{
+ class MainPresenterSample;
+ class MainViewSample : public View<MainPresenterSample>
{
- return mainSwipeGroup;
- }
+ public:
+ MainViewSample();
+ ~MainViewSample() override;
+ static MainViewSample *GetInstance(void);
+ void OnStart() override;
+
- UICardPage* GetViewById(int16_t id) const
- {
- return recordCard[id];
- }
+ UICardPage *InitWatchFacePage(void);
+ UICardPage *InitHeartRatePage(void);
+ UICardPage *InitActivityPage(void);
+ UICardPage *InitCompassPage(void);
+ UICardPage *InitMusicPlayerPage(void);
+ UICardPage *InitBloodOxygenPage(void);
+ UICardPage *InitWeatherPage(void);
+ UICardPage *InitGoalPage(void);
- void SwitchToClockPage(bool loadAdjacent = true)
- {
- if (mainClockView != nullptr) {
- SetPage(mainClockView->GetViewIndex(), loadAdjacent);
+ UICardPage *InitSleepPage(void);
+ UICardPage *InitTrainingPage(void);
+ UICardPage *InitApplistPage(void);
+ UICardPage *InitSetMainPage(void);
+
+ void AnimatorStart(int pageIndex);
+ void AnimatorStop(void);
+ CardId GetHorCurrentCard() const;
+ PullUpDownView *GetPullUpView();
+ void SetDisturbState(bool state);
+ // UICrossView::VPage GetVerCurrentCard() const;
+ UIView *GetMainViewGroup(void) const
+ {
+ return mainSwipeGroup;
+ }
+ UICardPage *GetViewById(int16_t id) const
+ {
+ return recordCard[id];
}
- }
- void SwitchToCard(uint8_t cardId, bool loadAdjacent = true);
- bool IsMainClockPage(void);
- void SetDragFg(bool continFg);
- bool GetDragFg(void);
- void SetPage(int16_t page, bool loadAdjacent = true);
+ void SwitchToClockPage(void)
+ {
+ if (mainClockView != nullptr)
+ {
+ SetPage(mainClockView->GetViewIndex());
+ }
+ }
+ void SwitchToCard(uint8_t cardId);
+ bool IsMainClockPage(void);
+ int IsPullUpViewPage(void);
+ void SetDragFg(bool continFg);
+ bool GetDragFg(void);
+ void SetPage(int16_t page, bool loadAdjacent = true);
+ void UpdateStateShow(UIImageView *&messageicon,UIImageView *&dialstateicon);
+ void HandOnKeyEventSwitchMainPullDownView(void);
+ void UpdateStateShow(void);
+
+ private:
+ PullUpDownView *dropDownView{nullptr};
+ UICardPage *mainClockView{nullptr};
+
+ UILabel *MessageLable = nullptr;
+ ActivityWeekView *activityWeekView{nullptr};
+ PlayersView *playersView{nullptr};
+ CompassControlView *compassControlView{nullptr};
+
+ // HeartRateCardView *heartRateView{nullptr};
+ // BloodCardView *bloodView{nullptr};
+ // SleepCardView *sleepView{nullptr};
+ // Training_CardView *traingView{nullptr};
+ // MessageControlView *messageView{nullptr};
+ SetMainView *setmainView{nullptr};
+
+ WeatherControlView *weatherControlView{nullptr};
+ goalControlView *GoalControlView{nullptr};
+ // ApplistCardView *applistCardView{nullptr};
+ UIButton *changebut{nullptr};
-private:
- PullUpDownView *dropDownView{nullptr};
- UICardPage *messageView{nullptr};
- UILabel *messageLable{nullptr};
- UICardPage *mainClockView{nullptr};
- ActivityWeekView *activityWeekView{nullptr};
- PlayersView *playersView{nullptr};
- CompassControlView *compassControlView{nullptr};
- HeartRateView *heartRateView{nullptr};
- UICardPage *recordCard[MAX_CARD]{nullptr};
- bool pageStatus[MAX_CARD]{false};
- UICrossView *mainSwipeGroup{nullptr};
- ZoomEffect* callback{nullptr};
+ // UIImageView *dialstateicon_{nullptr};
+ // UIImageView *messageicon_{nullptr};
+ /* -------------------------------------------------------------------------- */
+ UICardPage *recordCard[MAX_CARD]{nullptr};
+ bool pageStatus[MAX_CARD]{false};
+ UICrossView *mainSwipeGroup{nullptr};
+ ZoomEffect *callback{nullptr};
bool HorizontalViewInit(void);
void VerticalViewInit(void);
#include "components/ui_box_progress.h"
#include "components/ui_image_animator.h"
#include "components/ui_swipe_view.h"
-#include "battery_hal.h"
+// #include "battery_hal.h"
#include "main/include/ConnectedStatusView.h"
#include "main/include/dropdown/DropDownCardPage1.h"
#include "main/include/dropdown/DropDownCardPage2.h"
#include "kv_store.h"\r
#include "securec.h"\r
#include "wearable_log.h"\r
-#include "DialBinTypesV2.h"\r
+#include "ConfigModel.h"\r
+#include <array>\r
+#include <stdexcept>\r
+#include "MainViewSample.h"\r
+#include "ui_service.h"\r
+#include "SetDialModel.h"\r
+#include "dnotdisturb/include/DnotDisturbModel.h"\r
+#include "custom_utils.h"\r
+#include "DialViewGroup.h"\r
+\r
+#ifdef SUPPORT_POWER_MANAGER\r
#include "power_display_service.h"\r
+#endif\r
+\r
+extern "C" void uapi_dev_runtime_set_lock_status(uint8_t status);\r
\r
-namespace OHOS {\r
+namespace OHOS\r
+{\r
static const int CARD_SETTING_VALUE_LEN = 32;\r
static const int DIAL_SETTING_VALUE_LEN = 64;\r
+ /*默认卡片:心率,睡眠,快速训练*/\r
+ // 更新主界面卡片需要更新Map\r
const CardInfo cardInfoMap[] = {\r
- { HEART_RATE, PNG_SET_CARD_HEART },\r
- { COMPASS, PNG_SET_CARD_COMPASS },\r
- // { ACTIVITY, PNG_SET_CARD_ACTIVITY },\r
- { MUSIC_PLAYER, PNG_SET_CARD_PLAYER },\r
+ {HEART_RATE, PNG_SET_CARD_HEART, true,STR_HEART_RATE},\r
+ {TRAINING, PNG_SET_CARD_TRAIN, true,STR_TRAINING},\r
+ {COMPASS, PNG_SET_CARD_COMPASS, false,STR_COMPASS},\r
+ {SLEEP, PNG_SET_CARD_SLEEP, true,STR_SLEEP},\r
+ {BLOODOXGEN, PNG_SET_CARD_BLOOD, false,STR_BLOOD_OXYGEN},\r
+ {GOAL, PNG_SET_CARD_ACTIVITY, false,STR_ACTIVITY},\r
+ {WEATHER, PNG_SET_CARD_WEATHER, false,STR_WEATHER},\r
+ {MUSIC_PLAYER, PNG_SET_CARD_PLAYER, false,STR_MUSIC},\r
};\r
-\r
+ /*维护卡片*/\r
+ CardInfoSet cardInfoSet[] = {\r
+ {HEART_RATE, true},\r
+ {TRAINING, true},\r
+ {COMPASS, false},\r
+ {SLEEP, true},\r
+ {BLOODOXGEN, false},\r
+ {GOAL, false},\r
+ {WEATHER, false},\r
+ {MUSIC_PLAYER, false},\r
+ };\r
+ /*自定义map配置*/\r
const DialInfo dialInfoMap[] = {\r
- { 0, "扫秒表盘", PNG_SET_DIAL_CLOCK, DEFAULT_TASK_PERIOD, DIAL_DISPLAY_CAPABILITY_NORMAL_ONLY},\r
- { 1, "aod扫秒表盘", PNG_SET_DIAL_CLOCK, DEFAULT_TASK_PERIOD, DIAL_DISPLAY_CAPABILITY_AMBITIENT_ONLY},\r
+#ifdef CUSTOM_Z1\r
+ {DIAL_CLOCK, "Z1", DEFAULT_DIALPER_PATH, DEFAULT_TASK_PERIOD},\r
+#else\r
+ {DIAL_CLOCK, "KUMI", DEFAULT_DIALPER_PATH, DEFAULT_TASK_PERIOD}, // 默认表盘 Id 0\r
+#endif\r
+ {DIAL_CLOCK_1, "Custom_1", CUSTOM_CLOCK1_DIALPER_PATH, DEFAULT_TASK_PERIOD}, // 表盘 Id 1\r
+ {DIAL_CLOCK_2, "Custom_2", CUSTOM_CLOCK2_DIALPER_PATH, DEFAULT_TASK_PERIOD}, // 表盘 Id 2\r
+ {DIAL_CLOCK_3, "Custom_3", CUSTOM_CLOCK3_DIALPER_PATH, DEFAULT_TASK_PERIOD}, // 表盘 Id 3\r
+ {DIAL_CLOCK_4, "Custom_4", CUSTOM_CLOCK4_DIALPER_PATH, DEFAULT_TASK_PERIOD}, // 表盘 Id 4\r
+ {DIAL_CLOCK_5, "Custom_5", CUSTOM_CLOCK5_DIALPER_PATH, DEFAULT_TASK_PERIOD}, // 表盘 Id 4\r
};\r
-\r
- MainModel::MainModel()\r
- {\r
- power_display_gui_enable_aod(IsAodEnabled());\r
- }\r
-\r
+ //默认表盘\r
+ static const char* DEFAULT_CUSTOM_DIAL_PATH = "/user/dial/res_dial/obsidianrhythm.bin";\r
+ //卡片map\r
+ const CardInfo printfMap[] = {\r
+ {HEART_RATE, "心率卡片"},\r
+ {COMPASS, "指南针"},\r
+ {MUSIC_PLAYER, "音乐"},\r
+ {BLOODOXGEN, "血氧"},\r
+ {WEATHER, "天气"},\r
+ {TRAINING, "训练"},\r
+ {GOAL, "每日目标"},\r
+ {SLEEP, "睡眠"},\r
+ };\r
+ /*表盘显示状态map*/\r
+ std::array<DialStateInfo, STATE_COUNT> dialstateInfo = {{\r
+ {DialState::DO_NOT_DISTURB, false},\r
+ {DialState::SLEEP, false},\r
+ {DialState::LOCK, false},\r
+ }};\r
+ MainModel::MainModel() {}\r
MainModel::~MainModel() {}\r
-\r
MainModel &MainModel::GetInstance()\r
{\r
static MainModel instance;\r
return instance;\r
}\r
+ /*\r
+ ###卡片配置###\r
\r
- const CardInfo *MainModel::GetCardInfo(CardId card) const\r
+ -卡片Id\r
+ -卡片默认map\r
+ -卡片维护map\r
+ */\r
+ void MainModel::printCardSettings(void)\r
{\r
- for (uint8_t i = 0; i < (sizeof(cardInfoMap) / sizeof(cardInfoMap[0])); i++) {\r
- if (card == cardInfoMap[i].id) {\r
- return &cardInfoMap[i];\r
- }\r
+ uint8_t i;\r
+ WEARABLE_LOGD(WEARABL_LOG_MODULE_APP, "_____________________________________________________\r\n");\r
+ for (i = 0; i < cardSettingCount; i++)\r
+ {\r
+ uint8_t cardId = cardSettings[i];\r
+ const char *cardname = getCardNameFromMap(cardId);\r
+ WEARABLE_LOGD(WEARABL_LOG_MODULE_APP, "cardSettings[%d]:Id: %d, CardName: %s\r\n", i, cardId, cardname);\r
}\r
- return nullptr;\r
+\r
+ for (uint8_t m = 0; m < (sizeof(cardInfoSet) / sizeof(cardInfoSet[0])); m++)\r
+ {\r
+ WEARABLE_LOGD(WEARABL_LOG_MODULE_APP, "cardInfoSet[%d]:Id %d, Visible: %s\n", m, cardInfoSet[m].id, cardInfoSet[m].isVisible ? "true" : "false");\r
+ }\r
+ WEARABLE_LOGD(WEARABL_LOG_MODULE_APP, "_____________________________________________________\r\n");\r
}\r
\r
- const DialInfo *MainModel::GetDialInfo(uint8_t dialId) const\r
+ const char *MainModel::getCardNameFromMap(uint8_t cardId) const\r
{\r
- for (uint8_t i = 0; i < (sizeof(dialInfoMap) / sizeof(dialInfoMap[0])); i++) {\r
- if (dialId == dialInfoMap[i].id) {\r
- return &dialInfoMap[i];\r
+ for (uint8_t i = 0; i < (sizeof(printfMap) / sizeof(printfMap[0])); i++)\r
+ {\r
+ if (cardId == printfMap[i].id)\r
+ {\r
+ return printfMap[i].cardImg;\r
+ }\r
+ }\r
+ return "Unknown";\r
+ }\r
+ const CardInfo *MainModel::GetCardInfo(CardId card) const\r
+ {\r
+ for (uint8_t i = 0; i < (sizeof(cardInfoMap) / sizeof(cardInfoMap[0])); i++)\r
+ {\r
+ if (card == cardInfoMap[i].id)\r
+ {\r
+ WEARABLE_LOGD(WEARABL_LOG_MODULE_APP, "cardInfoMap[%d]:%d\n", i, cardInfoMap[i].id);\r
+ return &cardInfoMap[i];\r
}\r
}\r
return nullptr;\r
}\r
-\r
- uint8_t MainModel::GetDialInfoNum() const\r
+ const bool MainModel::GetCardInfoSet(uint8_t index) const\r
{\r
- return sizeof(dialInfoMap) / sizeof(dialInfoMap[0]);\r
+ return cardInfoSet[index].isVisible;\r
}\r
-\r
+ /*初始化卡片设置*/\r
void MainModel::InitCardSettings(void)\r
{\r
- char temp[CARD_SETTING_VALUE_LEN] = { 0 };\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "InitCardSettings");\r
+ char temp[CARD_SETTING_VALUE_LEN] = {0};\r
int len;\r
int index = 0;\r
\r
memset_s(cardSettings, CARD_SETTING_COUNT_MAX, 0, CARD_SETTING_COUNT_MAX);\r
len = UtilsGetValue("card_setting", temp, CARD_SETTING_VALUE_LEN);\r
- if (len >= 0 && strlen(temp) > 0) {\r
- /* 读取用户card配置 */\r
+ if (len >= 0)\r
+ {\r
+ // 更新用户卡片配置及更新卡片可见性\r
char *setBuffer = nullptr;\r
char *setValue = strtok_s(temp, ",", &setBuffer);\r
- while (setValue != nullptr) {\r
- if (index >= CARD_SETTING_COUNT_MAX) {\r
+ index = 0; // 重置 index\r
+ while (setValue != nullptr)\r
+ {\r
+ if (index >= CARD_SETTING_COUNT_MAX)\r
+ {\r
break;\r
}\r
cardSettings[index++] = (CardId)atoi(setValue);\r
setValue = strtok_s(nullptr, ",", &setBuffer);\r
}\r
cardSettingCount = index;\r
- } else {\r
- /* 使用默认card配置 */\r
- cardSettings[index++] = WATCH_FACE;\r
- cardSettings[index++] = HEART_RATE;\r
- cardSettings[index++] = COMPASS;\r
- // cardSettings[index++] = ACTIVITY;\r
- cardSettings[index++] = MUSIC_PLAYER;\r
+\r
+ // 更新卡片可见性\r
+ for (size_t i = 0; i < sizeof(cardInfoSet) / sizeof(cardInfoSet[0]); i++)\r
+ {\r
+ bool visible = false;\r
+ for (size_t j = 0; j < cardSettingCount; j++)\r
+ {\r
+ if (cardInfoSet[i].id == cardSettings[j])\r
+ {\r
+ // WEARABLE_LOGD(WEARABL_LOG_MODULE_APP, "CardSettings:cardInfoSet[%d] is set cardSettings[%d]\r\n", i, j);\r
+ visible = true;\r
+ break;\r
+ }\r
+ }\r
+ cardInfoSet[i].isVisible = visible;\r
+ }\r
+ }\r
+ else\r
+ {\r
+ for (uint8_t i = 0; i < (sizeof(cardInfoMap) / sizeof(cardInfoMap[0])); i++)\r
+ {\r
+ if (index == 0)\r
+ {\r
+ /* 表盘卡片[不被卡片管理,必须设置] */\r
+ cardSettings[index++] = WATCH_FACE;\r
+ }\r
+ if (cardInfoMap[i].isVisible)\r
+ {\r
+ cardSettings[index++] = cardInfoMap[i].id;\r
+ }\r
+ // 配置维护卡片的可见 与默认 保持一致 {没有kv文件}\r
+ cardInfoSet[i].isVisible = cardInfoMap[i].isVisible;\r
+ }\r
+\r
+ /*设置卡片[不被卡片管理,必须设置] */\r
+ cardSettings[index++] = SETCARD;\r
+\r
cardSettingCount = index;\r
}\r
- }\r
\r
+ // printCardSettings();\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "InitCardSettings");\r
+ }\r
void MainModel::DeleteCardSetting(uint8_t index)\r
{\r
- char temp[CARD_SETTING_VALUE_LEN] = { 0 };\r
- for (uint8_t i = 0; i < cardSettingCount; i++) {\r
- if (i == index + 1) {\r
- uint8_t j = i;\r
- for (; j < cardSettingCount - 1; j++) {\r
- cardSettings[j] = cardSettings[j + 1];\r
- }\r
- cardSettings[j] = MAX_CARD;\r
- cardSettingCount--;\r
+ /*设置卡片类型为false cardsetting 重新遍历map里面为ture的卡片{表盘必须存在}*/\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "DeleteCardSetting");\r
+\r
+ if (cardSettingCount > CARD_SETTING_COUNT_MAX)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "cardSettingCount %d is error", cardSettingCount);\r
+ return;\r
+ }\r
+ // 检查要插入的位置是否有效\r
+ int count = sizeof(cardInfoSet) / sizeof(cardInfoSet[0]);\r
+ if (index < 0 || index > count)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "index %d is error or count %d is error", index, count);\r
+ return;\r
+ }\r
+ // 删除的卡片\r
+ cardInfoSet[index].isVisible = false;\r
+#if 0\r
+ int count = sizeof(cardInfoSet) / sizeof(cardInfoSet[0]);\r
+ WEARABLE_LOGD(WEARABL_LOG_MODULE_APP, "count:%d\r\n", count);\r
+ // 设置map里面的属性\r
+ for (uint8_t i = 0; i < count; i++)\r
+ {\r
+ // 需要被删除的卡片\r
+ if (cardInfoMap[index].id == cardInfoSet[i].id)\r
+ {\r
+ cardInfoSet[i].isVisible = false;\r
+ WEARABLE_LOGD(WEARABL_LOG_MODULE_APP, "删除卡片:cardSettings[%d] is %d \r\n", index + 1, cardSettings[index + 1]);\r
+ WEARABLE_LOGD(WEARABL_LOG_MODULE_APP, "设置删除卡片属性:cardInfoSet[%d] is %d \r\n", i, cardInfoSet[i].isVisible);\r
}\r
+ WEARABLE_LOGD(WEARABL_LOG_MODULE_APP, "cardInfoSet[%d]:id%d\r\n", i, cardInfoSet[i].id);\r
}\r
+#endif\r
+ int mapindex = 0;\r
+ // 重新生成cardSettings\r
+ for (uint8_t i = 0; i < CARD_SETTING_COUNT_MAX; i++)\r
+ {\r
+ cardSettings[i] = MAX_CARD;\r
+ }\r
+ // printCardSettings();\r
+ for (uint8_t i = 0; i < (sizeof(cardInfoSet) / sizeof(cardInfoSet[0])); i++)\r
+ {\r
+ if (mapindex == 0)\r
+ {\r
+ /* 表盘卡片[不被卡片管理,必须设置] */\r
+ cardSettings[mapindex++] = WATCH_FACE;\r
+ }\r
+ // 设置其他卡片\r
+ if (cardInfoSet[i].isVisible)\r
+ {\r
+ // WEARABLE_LOGD(WEARABL_LOG_MODULE_APP, "cardSettings[%d]\r\n", i);\r
+ cardSettings[mapindex++] = cardInfoSet[i].id;\r
+ }\r
+ }\r
+ /*设置卡片[不被卡片管理,必须设置] */\r
+ cardSettings[mapindex++] = SETCARD;\r
\r
- for (uint8_t i = 0; i < cardSettingCount; i++) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "cardSettings[%d] = %d", i, cardSettings[i]);\r
- (void)sprintf_s(temp + strlen(temp), CARD_SETTING_VALUE_LEN, "%d,", cardSettings[i]);\r
+ cardSettingCount = mapindex;\r
+\r
+ // 更新存储内容\r
+ char temp[CARD_SETTING_VALUE_LEN] = {0};\r
+ for (uint8_t k = 0; k < cardSettingCount; k++)\r
+ {\r
+ (void)sprintf_s(temp + strlen(temp), CARD_SETTING_VALUE_LEN, "%d,", cardSettings[k]);\r
}\r
(void)UtilsSetValue("card_setting", temp);\r
+\r
+ // printCardSettings();\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "DeleteCardSetting");\r
}\r
\r
void MainModel::AddCardSetting(uint8_t index)\r
{\r
- char temp[CARD_SETTING_VALUE_LEN] = { 0 };\r
- if (cardSettingCount >= CARD_SETTING_COUNT_MAX) {\r
+ /*设置卡片类型为ture cardsetting 重新遍历map里面为ture的卡片{表盘必须存在}*/\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AddCardSetting");\r
+\r
+ if (cardSettingCount > CARD_SETTING_COUNT_MAX)\r
+ {\r
return;\r
}\r
- for (int i = 0; i < cardSettingCount; i++) {\r
- if (cardSettings[i] == cardInfoMap[index].id) {\r
- return;\r
+\r
+ // 检查要插入的位置是否有效\r
+ int count = sizeof(cardInfoSet) / sizeof(cardInfoSet[0]);\r
+ if (index < 0 || index > count)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "index %d is error or count %d is error", index, count);\r
+ return;\r
+ }\r
+ // 设置map里面的属性\r
+ cardInfoSet[index].isVisible = true;\r
+#if 0\r
+ int count = sizeof(cardInfoSet) / sizeof(cardInfoSet[0]);\r
+ for (uint8_t i = 0; i < count; i++)\r
+ {\r
+ // 需要被添加的卡片 因为添加是显示所有卡片,所以是使用map\r
+ if (cardInfoMap[index].id == cardInfoSet[i].id)\r
+ {\r
+ cardInfoSet[i].isVisible = true;\r
+ WEARABLE_LOGE(WEARABL_LOG_MODULE_APP, "添加卡片:cardSettings[%d] is %d \r\n", index, cardInfoMap[index].id);\r
+ WEARABLE_LOGE(WEARABL_LOG_MODULE_APP, "设置添加卡片属性:cardInfoSet[%d] is %d \r\n", i, cardInfoSet[i].isVisible);\r
+ break;\r
}\r
+ WEARABLE_LOGE(WEARABL_LOG_MODULE_APP, "cardInfoSet[%d]:id%d\r\n", i, cardInfoSet[i].id);\r
}\r
- cardSettings[cardSettingCount++] = cardInfoMap[index].id;\r
- for (uint8_t i = 0; i < cardSettingCount; i++) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "cardSettings[%d] = %d", i, cardSettings[i]);\r
- (void)sprintf_s(temp + strlen(temp), CARD_SETTING_VALUE_LEN, "%d,", cardSettings[i]);\r
+#endif\r
+\r
+ // 设置map里面的属性\r
+ int mapindex = 0;\r
+ for (uint8_t i = 0; i < (sizeof(cardInfoSet) / sizeof(cardInfoSet[0])); i++)\r
+ {\r
+ if (mapindex == 0)\r
+ {\r
+ /* 表盘卡片[不被卡片管理,必须设置] */\r
+ cardSettings[mapindex++] = WATCH_FACE;\r
+ }\r
+ // 设置其他卡片\r
+ if (cardInfoSet[i].isVisible)\r
+ {\r
+ cardSettings[mapindex++] = cardInfoSet[i].id;\r
+ WEARABLE_LOGD(WEARABL_LOG_MODULE_APP, "set cardInfoSet[%d]\r\n", i);\r
+ }\r
+ }\r
+ /*设置卡片[不被卡片管理,必须设置] */\r
+ cardSettings[mapindex++] = SETCARD;\r
+\r
+ cardSettingCount = mapindex;\r
+\r
+ // 更新存储内容\r
+ char temp[CARD_SETTING_VALUE_LEN] = {0};\r
+ for (uint8_t j = 0; j < cardSettingCount; j++)\r
+ {\r
+ (void)sprintf_s(temp + strlen(temp), CARD_SETTING_VALUE_LEN, "%d,", cardSettings[j]);\r
}\r
(void)UtilsSetValue("card_setting", temp);\r
- }\r
\r
+ // printCardSettings();\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AddCardSetting");\r
+ }\r
uint8_t MainModel::GetCardSettingCount(void)\r
{\r
return cardSettingCount;\r
{\r
return cardSettings;\r
}\r
+ bool MainModel::IsFromSetCardView(void) const\r
+ {\r
+ return isFromSetCardView;\r
+ }\r
+\r
+ void MainModel::SetFromSetCardView(bool isFrom)\r
+ {\r
+ isFromSetCardView = isFrom;\r
+ }\r
+\r
+ void MainModel::SetFromCardId(uint8_t cardId)\r
+ {\r
+ fromCardId = cardId;\r
+ }\r
+\r
+ uint8_t MainModel::GetFromCardId(void)\r
+ {\r
+ return fromCardId;\r
+ }\r
+\r
+ /*\r
+ ###表盘配置###\r
\r
- void MainModel::InitDialSettingDefault(void)\r
+ -表盘名称\r
+ -表盘列表\r
+ -表盘Id\r
+ */\r
+ const DialInfo *MainModel::GetDialInfo(DialId dialId) const\r
{\r
+ for (uint8_t i = 0; i < (sizeof(dialInfoMap) / sizeof(dialInfoMap[0])); i++)\r
+ {\r
+ if (dialId == dialInfoMap[i].id)\r
+ {\r
+ return &dialInfoMap[i];\r
+ }\r
+ }\r
+ return nullptr;\r
+ }\r
+\r
+ void MainModel::InitDialSettingDefault(int id)\r
+ {\r
+ //黑耀表盘\r
+ if(id == DEFAULT_DIAL_ID)\r
+ {\r
+ dialSetting.dialFlag = 1;\r
+ dialSetting.dialId = id;\r
+ dialSetting.dialFullName = DEFAULT_CUSTOM_DIAL_PATH; \r
+ return;\r
+ }\r
+ //自定义表盘\r
+ if (id < DIAL_CLOCK || id >= DIAL_MAX)\r
+ id = DIAL_CLOCK;\r
+\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "InitDialSettingDefault");\r
dialSetting.dialFlag = 0;\r
- dialSetting.dialId = 0;\r
- dialSetting.dialFullName = "";\r
+ dialSetting.dialId = id;\r
+ dialSetting.dialFullName.clear(); // 用 clear() 替代空字符串\r
}\r
\r
- void MainModel::AddDialSetting(const DialSetting &setting)\r
+ /* 更新表盘设置 */\r
+ void MainModel::AddDialSetting(const DialSetting &setting, const int id)\r
{\r
- std::string tmp;\r
- tmp += std::to_string(setting.dialFlag);\r
- tmp += ",";\r
- tmp += std::to_string(setting.dialId);\r
- tmp += ",";\r
- tmp += setting.dialFullName;\r
- tmp += ",";\r
- (void)UtilsSetValue("dial_setting", tmp.c_str());\r
+ std::string tmp = std::to_string(setting.dialFlag) + "," + std::to_string(setting.dialId) + "," + setting.dialFullName + ",";\r
+\r
+ (void)UtilsSetValue("dial_setting", tmp.c_str()); // 存储表盘配置\r
+ (void)UtilsSetValue("dial_id", std::to_string(id).c_str()); // 存储当前表盘Id\r
}\r
\r
+ /* 加载 kvstore 里面的 dial */\r
void MainModel::InitDialSettings(void)\r
{\r
- char temp[DIAL_SETTING_VALUE_LEN] = { 0 };\r
- int32_t len = UtilsGetValue("dial_setting", temp, DIAL_SETTING_VALUE_LEN);\r
- if (len >= 0) {\r
- char *setBuffer = nullptr;\r
- char *setValue = strtok_s(temp, ",", &setBuffer);\r
- if (setValue != nullptr) {\r
- dialSetting.dialFlag = atoi(setValue);\r
- } else {\r
- InitDialSettingDefault();\r
- return;\r
+ char temp[DIAL_SETTING_VALUE_LEN] = {0}; // 创建一个临时字符数组用于存储拨号设置的字符串\r
+ int len = UtilsGetValue("dial_setting", temp, DIAL_SETTING_VALUE_LEN);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Attempting to load dial settings from kvstore. Length: %d\r\n", len);\r
+\r
+ if (len < 0)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Error: Failed to retrieve dial settings. Initializing to default settings.\r\n");\r
+ //判断黑耀表盘是否存在\r
+ if(SetDialModel::GetInstance().IsDialInstalled(DEFAULT_DIAL_ID))\r
+ {\r
+ InitDialSettingDefault(DEFAULT_DIAL_ID);\r
+ }\r
+ else\r
+ {\r
+ InitDialSettingDefault(DIAL_CLOCK);\r
}\r
+ return;\r
+ }\r
\r
- setValue = strtok_s(nullptr, ",", &setBuffer);\r
- if (setValue != nullptr) {\r
- dialSetting.dialId = atoi(setValue);\r
- } else {\r
- InitDialSettingDefault();\r
- return;\r
+ char *setBuffer = nullptr; // 字符指针用于 strtok_s 的存储\r
+ char *setValue;\r
+\r
+ // 从字符串中读取三个值\r
+ // 1.读取表盘标志位\r
+ setValue = strtok_s(temp, ",", &setBuffer);\r
+ if (setValue)\r
+ {\r
+ dialSetting.dialFlag = atoi(setValue); // 将字符串转换为整数\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Dial flag loaded: %d\r\n", dialSetting.dialFlag);\r
+ }\r
+ else\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Error: First value is empty. Initializing to default settings.\r\n");\r
+ //判断黑耀表盘是否存在\r
+ if(SetDialModel::GetInstance().IsDialInstalled(DEFAULT_DIAL_ID))\r
+ {\r
+ InitDialSettingDefault(DEFAULT_DIAL_ID);\r
+ }\r
+ else\r
+ {\r
+ InitDialSettingDefault(DIAL_CLOCK);\r
}\r
+ return;\r
+ }\r
\r
- setValue = strtok_s(nullptr, ",", &setBuffer);\r
- if (setValue != nullptr) {\r
- dialSetting.dialFullName = setValue;\r
- if (!((dialSetting.dialFullName.length() > 0) &&\r
- (access(dialSetting.dialFullName.c_str(), F_OK) == 0))) {\r
- InitDialSettingDefault();\r
- return;\r
- }\r
- } else {\r
- InitDialSettingDefault();\r
- return;\r
+ // 读取表盘Id\r
+ setValue = strtok_s(nullptr, ",", &setBuffer);\r
+ if (setValue)\r
+ {\r
+ dialSetting.dialId = atoi(setValue); // 将字符串转换为整数\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Dial ID loaded: %d\r\n", dialSetting.dialId);\r
+ }\r
+ else\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Error: Second value is empty. Initializing to default settings.\r\n");\r
+ //判断黑耀表盘是否存在\r
+ if(SetDialModel::GetInstance().IsDialInstalled(DEFAULT_DIAL_ID))\r
+ {\r
+ InitDialSettingDefault(DEFAULT_DIAL_ID);\r
}\r
- } else {\r
- InitDialSettingDefault();\r
+ else\r
+ {\r
+ InitDialSettingDefault(DIAL_CLOCK);\r
+ }\r
+ return;\r
+ }\r
+\r
+ // 读取表盘名\r
+ setValue = strtok_s(nullptr, ",", &setBuffer);\r
+ if (setValue)\r
+ {\r
+ dialSetting.dialFullName = setValue; // 将完整名称赋值\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Dial full name loaded: %s\r\n", dialSetting.dialFullName.c_str());\r
+\r
+ if (dialSetting.dialFullName.empty() || access(dialSetting.dialFullName.c_str(), F_OK) != 0)\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Error: Dial full name is invalid or file does not exist. Initializing to default settings.\r\n");\r
+ InitDialSettingDefault(dialSetting.dialId);\r
+ }\r
+ }\r
+ else\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Error: Third value is empty. Initializing to default settings.\r\n");\r
+ InitDialSettingDefault(dialSetting.dialId);\r
}\r
}\r
\r
- DialSetting& MainModel::GetDialSetting()\r
+ DialSetting &MainModel::GetDialSetting()\r
{\r
return dialSetting;\r
}\r
\r
- bool MainModel::IsFromSetCardView(void) const\r
+ /*\r
+ ###表盘状态###\r
+\r
+ 接口 1 设置某个项的属性为ture or false\r
+ 接口 2 获取最高优先级为ture的状态为哪一个 并且返回\r
+ 接口 3 打印状态\r
+\r
+ 管理状态:勿扰 睡眠 密码锁\r
+ */\r
+\r
+ // 开机读取手表配置 \r
+ void MainModel::InitDialState(void) { \r
+ // 获取加锁状态 \r
+ int lockstate = OHOS::ConfigModel::GetInstance()->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_PASSWORD_SWITCH); \r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "lockstate = %d", lockstate); \r
+\r
+ // 判断加锁状态 \r
+ if (lockstate == 1) { \r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Device is locked (lock state == 1)"); \r
+ uapi_dev_runtime_set_lock_status(1); // 上锁 \r
+ dialstateInfo[static_cast<int>(DialState::LOCK)].active = true; // 设置锁定状态为真 \r
+ } \r
+\r
+ // 判断勿扰模式 \r
+ dialstateInfo[static_cast<int>(DialState::DO_NOT_DISTURB)].active = DnotDisturbModel::GetInstance().GetDoNotDisturbModeEnabled(); \r
+\r
+ // 判断睡眠状态 \r
+ }\r
+\r
+ // 接口 1: 设置某个状态的属性\r
+ void MainModel::setDialState(DialState state, bool value)\r
{\r
- return isFromSetCardView;\r
+ // // 将 state 转换为整数以进行比较\r
+ // int stateIndex = static_cast<int>(state);\r
+ // if (stateIndex >= 0 && stateIndex < STATE_COUNT) // 确保 index 在有效范围\r
+ // {\r
+ // // 检查当前状态是否与要设置的状态一致\r
+ // if (dialstateInfo[stateIndex].active != value)\r
+ // {\r
+ // dialstateInfo[stateIndex].active = value; // 使用转换后的索引\r
+ // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Set dialstateInfo[%d].active = %d", stateIndex, value);\r
+ // SendMsgToUIService(UI_UPDATE_DIALSTATE_DATA, 0, nullptr, 0); // 发送更新消息\r
+ // }\r
+ // else\r
+ // {\r
+ // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "State %d is unchanged, no update needed.", stateIndex);\r
+ // }\r
+ // }\r
+ // else\r
+ // {\r
+ // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "state %d is error", stateIndex);\r
+ // }\r
}\r
\r
- void MainModel::SetFromSetCardView(bool isFrom)\r
+ // 接口 2: 获取最高优先级为 true 的状态\r
+ DialState MainModel::getHighestPriorityActiveState()\r
{\r
- isFromSetCardView = isFrom;\r
+ for (int i = STATE_COUNT - 1; i >= 0; i--)\r
+ {\r
+ if (dialstateInfo[i].active)\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "high dialstateInfo[%d].active", i);\r
+ return dialstateInfo[i].state; // 返回活跃状态中优先级最高的\r
+ }\r
+ }\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "no have high dialstateInfo.active");\r
+ return DialState::INVALID; // 如果没有找到活跃状态,返回无效状态\r
}\r
\r
- void MainModel::SetFromCardId(uint8_t cardId)\r
+ // 接口 3: 打印所有状态及其是否激活\r
+ void MainModel::printDialStates()\r
{\r
- fromCardId = cardId;\r
+ for (int i = 0; i < STATE_COUNT; ++i)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dialstateInfo[%d].active = %d", i, dialstateInfo[i].active);\r
+ }\r
}\r
\r
- uint8_t MainModel::GetFromCardId(void)\r
+ // 未读状态判断\r
+ bool MainModel::getMessageActiveState()\r
{\r
- return fromCardId;\r
+ bool unread_state = ConfigModel::GetInstance()->get_configData_bool(ConfigModel::CONFIGMODEL_ITEM_MESSAGE_UNREAD);\r
+ return unread_state;\r
+ }\r
+\r
+ void MainModel::UpdateDialState()\r
+ {\r
+ /*进行主界面UI更新通知 如果在主界面*/\r
+ if (MainViewSample::GetInstance() != nullptr)\r
+ MainViewSample::GetInstance()->UpdateStateShow();\r
+ }\r
+ //主界面获取视频频率\r
+ bool MainModel::getVideostate() {\r
+ return video_state;\r
+ }\r
+ void MainModel::setVideostate(bool state) {\r
+ video_state = state;\r
+ }\r
+\r
+\r
+#if 0\r
+ void MainModel::DeleteCardSetting(uint8_t index)\r
+ {\r
+ char temp[CARD_SETTING_VALUE_LEN] = {0};\r
+ for (uint8_t i = 0; i < cardSettingCount; i++)\r
+ {\r
+ if (i == index + 1)\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "i:%d index:%d", i, index);\r
+ uint8_t j = i;\r
+ for (; j < cardSettingCount - 1; j++)\r
+ {\r
+ cardSettings[j] = cardSettings[j + 1];\r
+ }\r
+ cardSettings[j] = MAX_CARD;\r
+ cardSettingCount--;\r
+ }\r
+ }\r
+\r
+ for (uint8_t i = 0; i < cardSettingCount; i++)\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "cardSettings[%d] = %d", i, cardSettings[i]);\r
+ (void)sprintf_s(temp + strlen(temp), CARD_SETTING_VALUE_LEN, "%d,", cardSettings[i]);\r
+ }\r
+ (void)UtilsSetValue("card_setting", temp);\r
+\r
+ WEARABLE_LOGD(WEARABL_LOG_MODULE_APP, "\r\n***************DeleteCardSetting********************\r\n");\r
+ printCardSettings();\r
+ WEARABLE_LOGD(WEARABL_LOG_MODULE_APP, "\r\n_____________________________________________________\r\n");\r
+ }\r
+\r
+ void MainModel::AddCardSetting(uint8_t index)\r
+ {\r
+ char temp[CARD_SETTING_VALUE_LEN] = {0};\r
+ if (cardSettingCount >= CARD_SETTING_COUNT_MAX)\r
+ {\r
+ return;\r
+ }\r
+ for (int i = 0; i < cardSettingCount; i++)\r
+ {\r
+ if (cardSettings[i] == cardInfoMap[index].id)\r
+ {\r
+ return;\r
+ }\r
+ }\r
+ cardSettings[cardSettingCount++] = cardInfoMap[index].id;\r
+ for (uint8_t i = 0; i < cardSettingCount; i++)\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "cardSettings[%d] = %d", i, cardSettings[i]);\r
+ (void)sprintf_s(temp + strlen(temp), CARD_SETTING_VALUE_LEN, "%d,", cardSettings[i]);\r
+ }\r
+ (void)UtilsSetValue("card_setting", temp);\r
+\r
+ WEARABLE_LOGD(WEARABL_LOG_MODULE_APP, "\r\n***************AddCardSetting********************\r\n");\r
+ printCardSettings();\r
+ else\r
+ {\r
+ /* 使用默认card配置 */\r
+ cardSettings[index++] = WATCH_FACE;\r
+ cardSettings[index++] = HEART_RATE;\r
+ cardSettings[index++] = COMPASS;\r
+ cardSettings[index++] = MUSIC_PLAYER;\r
+ cardSettings[index++] = SETCARD; // 默认卡片增加设置卡片\r
+ cardSettingCount = index;\r
+ }\r
}\r
+#endif\r
\r
- bool MainModel::IsAodEnabled()\r
+ bool MainModel::IsAodEnabled()\r
{\r
char temp[DIAL_SETTING_VALUE_LEN] = { 0 };\r
int32_t len = UtilsGetValue("enable_aod", temp, DIAL_SETTING_VALUE_LEN);\r
#include "HeartRateView.h"
#include "PlayersModel.h"
#include "PlayersPresenter.h"
-#include "MainCompassPresenter.h"
-#include "NativeRegisterManager.h"
-#include "CompassModel.h"
+#include "CompassPresenter.h"
+#include "compass/include/CompassModel.h"
#include "CompassCalibrationView.h"
#include "drag_event.h"
#include "graphic_service.h"
#include <map>
#include "ModelDialDataFactory.h"
#include "DialModelTime.h"
+#include "DialModelPower.h"
+#include "heartrate/include/HeartModel.h"
+#include "gfx_utils/mem_check.h"
+#include "custom_utils.h"
+// #include "traing/training_card/include/Training_CardView.h"
+// #include "dnotdisturb/include/DnotDisturbModel.h"
+#include "weather/include/WeatherModel.h"
+// #include "heart_blood/health_service/health_service.h"
+// #include "sleep/include/SleepControlView.h"
+// #include "sleep/include/SleepCardView.h"
+// #include "sleep/include/SleepModel.h"
+#include "MainModel.h"
+// #include "../../../../../../../drivers/peripheral/utils/custom_runtime.h"
+// #include "rebootandshutdown/include/RebootAndShutdownModelC.h"
+
+#if USE_OFFLINE_DIAL
#include "DialViewGroup.h"
+#endif
#include "ui_service.h"
-#include "PageTransitionMgr.h"
-
-namespace OHOS {
+#include "time.h"
+#define TESTCHECK 0
+//心率弹窗
+#define HEART_RATE_CHECK_TIMEOUT 0
+#include "NativeRegisterManager.h"
+#ifdef SUPPORT_POWER_MANAGER
+#include "power_display_service.h"
+#endif
+namespace OHOS
+{
REGIST_SLICE(VIEW_MAIN, MainViewSample, MainPresenterSample);
-std::map<std::string, AppViewId> g_jumpView = { { MAIN_CLICK_WEATHER, VIEW_MAIN }, // 天气界面
- { MAIN_CLICK_ACTIVITY, VIEW_MAIN_ACTIVITY }, // 活动记录界面
- { MAIN_CLICK_MESSAGE, VIEW_MAIN }, // 消息app
- { MAIN_CLICK_HEARTRATE, VIEW_MAIN }, // 心率界面
- { DROPDOWN_CLICK_ALARM, VIEW_MAIN_ALARM }, // 闹钟app
- { DROPDOWN_CLICK_SETTING, VIEW_SETTING } }; // 设置界面
-
-// std::map<std::string, int> g_chanColor = { { DROPDOWN_CLICK_FINDMYPHONE, DROPDOWN_DROPDOWN_FIND_PHONE_B },
-// { DROPDOWN_CLICK_ALARM, DROPDOWN_DROPDOWN_ALARM_B },
-// { DROPDOWN_CLICK_SETTING, DROPDOWN_DROPDOWN_SETTING_B } };
-
-static MainPresenterSample *g_pMainPresenterSample = nullptr;
+ std::map<std::string, AppViewId> g_jumpView = {
+ {MAIN_CLICK_BLOOD, VIEW_BLOOD_CHECK}, // 血氧检查
+ {MAIN_CLICK_SETCARD, VIEW_ADD_CARD}, // 卡片管理
+ };
-static constexpr uint16_t DROP_X_MAX = 360;
-static constexpr uint16_t PROGRESS_PERCENTAGE = 100;
-static constexpr uint16_t HORIZONTAL_SWIPE = 1;
-static constexpr uint16_t PLAYER_PERIOD = 500;
-static constexpr uint16_t MAX_PERIOD = 1000;
+ static MainPresenterSample *g_pMainPresenterSample = nullptr;
-MainPresenterSample::MainPresenterSample()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainPresenterSample :%p", this);
- g_pMainPresenterSample = this;
-}
-
-MainPresenterSample::~MainPresenterSample()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "~MainPresenterSample");
-}
+ static constexpr uint16_t DROP_X_MAX = 360;
+ static constexpr uint16_t PROGRESS_PERCENTAGE = 100;
+ static constexpr uint16_t HORIZONTAL_SWIPE = 1;
+ static constexpr uint16_t PLAYER_PERIOD = 500;
+ static constexpr uint16_t MAX_PERIOD = 1000;
-MainPresenterSample *MainPresenterSample::GetInstance(void)
-{
- return g_pMainPresenterSample;
-}
+ MainPresenterSample::MainPresenterSample()
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainPresenterSample :%p", this);
+ g_pMainPresenterSample = this;
+ }
-void MainPresenterSample::OnStart()
-{
- mainPresenterState_ = MainPresenterState::START;
-}
+ MainPresenterSample::~MainPresenterSample()
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "~MainPresenterSample");
+ g_pMainPresenterSample = nullptr;
+ // /*从主界面退出,关闭心率检测*/
+ // HeartModel::GetInstance()->Heart_Stop();
+ // HeartModel::GetInstance()->Heart_Control(HeartState::End,
+ // HeartCheck::CARDCHECK);
+ }
-void MainPresenterSample::OnPause()
-{
- Presenter<MainViewSample>::OnPause();
- // Save watchface content for slide back
- UIView* watchFace = view_->GetViewById(WATCH_FACE)->GetParent();
- uint8_t opaScale = watchFace->GetOpaScale();
- watchFace->SetOpaScale(OPA_OPAQUE);
- PageTransitionMgr::GetInstance().SaveSlideBackSnapShotIfNecessary(watchFace);
- watchFace->SetOpaScale(opaScale);
-
- mainPresenterState_ = MainPresenterState::PAUSE;
-}
+ MainPresenterSample *MainPresenterSample::GetInstance(void)
+ {
+ return g_pMainPresenterSample;
+ }
+
+ void MainPresenterSample::OnStart()
+ {
+ mainPresenterState_ = MainPresenterState::START;
+ }
+
+ void MainPresenterSample::OnPause()
+ {
+ Presenter<MainViewSample>::OnPause();
+ // Save watchface content for slide back
+ UIView* watchFace = view_->GetViewById(WATCH_FACE)->GetParent();
+ uint8_t opaScale = watchFace->GetOpaScale();
+ watchFace->SetOpaScale(OPA_OPAQUE);
+ PageTransitionMgr::GetInstance().SaveSlideBackSnapShotIfNecessary(watchFace);
+ watchFace->SetOpaScale(opaScale);
+
+ mainPresenterState_ = MainPresenterState::PAUSE;
+
+ //进行视频表盘的暂停
+ // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "暂停视频") ;
+ // DialSetting &setting = GetDialSetting();
+ // if (setting.dialFlag) {
+ // DialModelTime::GetInstance()->UpdateTime();
+ // dynamic_cast<DialViewGroup *>(view_->GetViewById(WATCH_FACE))->StopDial();
+ // }
+ }
+
+ void MainPresenterSample::OnResume(void)
+ {
+ Presenter::OnResume();
+ mainPresenterState_ = MainPresenterState::RESUME;
+ // Set current page again to invoke OnActive method.
+ uint8_t curCardId = view_->GetHorCurrentCard();
+ view_->SwitchToCard(curCardId);
+
+ #if IS_SUPPORT_BIND_VOTE
+if (ConfigModel::GetInstance()->GetisFirstTimeStart() == true) {
+ uapi_remove_bind_vote(); //页面已经展示后的调用逻辑。取消绑定投票
+ ConfigModel::GetInstance()->SetisFirstTimeStart(false);
+ }
+#endif
+ // //进行视频表盘的恢复
+ // DialSetting &setting = GetDialSetting();
+ // if (setting.dialFlag) {
+ // DialModelTime::GetInstance()->UpdateTime();
+ // dynamic_cast<DialViewGroup *>(view_->GetViewById(WATCH_FACE))->StartDial();
+ // }
+ }
+
+ void MainPresenterSample::OnStop(void)
+ {
+ mainPresenterState_ = MainPresenterState::STOP;
+ if (isCompassSensorOpened_) {
+ CompassModel::GetInstance()->CloseCompassSensor();
+ }
-void MainPresenterSample::OnResume(void)
-{
- Presenter::OnResume();
- mainPresenterState_ = MainPresenterState::RESUME;
- // Set current page again to invoke OnActive method.
- uint8_t curCardId = view_->GetHorCurrentCard();
- view_->SwitchToCard(curCardId);
-}
+ PullUpDown_StopTimer();
+ CloseCompassSensor(); //切换Slice时要关闭指南针传感器
+ }
-void MainPresenterSample::OnStop(void)
-{
- mainPresenterState_ = MainPresenterState::STOP;
- if (isCompassSensorOpened_) {
- CompassModel::GetInstance()->CloseCompassSensor();
+ MainPresenterState MainPresenterSample::GetMainPresenterState(void)
+ {
+ return mainPresenterState_;
}
-}
-MainPresenterState MainPresenterSample::GetMainPresenterState(void)
-{
- return mainPresenterState_;
-}
-bool MainPresenterSample::OnClick(UIView &view, const ClickEvent &event)
-{
- // UNUSED(event);
- // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "StatusButtonClickListener: %s", view.GetViewId());
- // std::string curViewId = view.GetViewId();
-
- // UIImageView *imgView = static_cast<UIImageView *>(&view);
- // if (HealthModel::GetInstance() == nullptr) {
- // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "health model nullptr");
- // return false;
- // }
- // if (curViewId == DROPDOWN_CLICK_DONOTDISTURB) {
- // if (HealthModel::GetInstance()->GetDntDistStatus() == 0) {
- // ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, imgView, DROPDOWN_DROPDOWN_DN_DISTURB_B);
- // HealthModel::GetInstance()->UpdateDntDistStatus(1);
- // } else {
- // ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, imgView, DROPDOWN_DROPDOWN_DN_DISTURB);
- // HealthModel::GetInstance()->UpdateDntDistStatus(0);
- // }
- // }
- // if (curViewId == DROPDOWN_CLICK_BRIGHTENSCREEN) {
- // if (HealthModel::GetInstance()->GetBriScrStatus() == 0) {
- // ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, imgView, DROPDOWN_DROPDOWN_BRI_SCREEN_B);
- // HealthModel::GetInstance()->UpdateBriScrStatus(1);
- // ScreenOffEnable(0);
- // } else {
- // ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, imgView, DROPDOWN_DROPDOWN_BRI_SCREEN);
- // HealthModel::GetInstance()->UpdateBriScrStatus(0);
- // ScreenOffEnable(1);
- // }
- // }
+
+ bool MainPresenterSample::OnClick(UIView &view, const ClickEvent &event)
+ {
+ UNUSED(event);
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "StatusButtonClickListener: %s", view.GetViewId());
+ std::string curViewId = view.GetViewId();
+
+ // UIImageView *imgView = static_cast<UIImageView *>(&view);
+ // if (HealthModel::GetInstance() == nullptr)
+ // {
+ // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "health model nullptr");
+ // return false;
+ // }
+
+ // /*发生点击进入密码锁*/
+ // if (uapi_dev_runtime_get_lock_status())
+ // {
+ // /*进入密码锁*/
+ // NativeAbility::GetInstance().ChangeSlice(VIEW_CODED_LOCK);
+ // return true;
+ // }
+
+ // if (curViewId == CONNECTEDSTATUSBACKGROUNDBUTTON)
+ // {
+ // PullUpDownView::GetInstance()->ChangeView(DROPDOWNVIEW, CONNECTEDSTATUSVIEW);
+ // PullUpDown_StopTimer(); // 切换到连接状态视图时停止定时器
+ // return true;
+ // }
+ // else if (curViewId == CONNECTEDSTATUSVIEWCLOSEBUTTON)
+ // {
+ // PullUpDownView::GetInstance()->ChangeView(CONNECTEDSTATUSVIEW, DROPDOWNVIEW);
+ // PullUpDown_StartTimer(1000); // 切回下拉控制中心视图开启定时器
+ // return true;
+ // }
+ // // 设置血氧进入
+ // else if (curViewId == MAIN_CLICK_BLOOD)
+ // {
+ // MainModel::GetInstance().SetFromSetCardView(true);
+ // MainModel::GetInstance().SetFromCardId(BLOODOXGEN);
+ // // 如果正在充电进入提醒界面
+ // if (get_charge_stat())
+ // {
+ // HealthState highHealthState;
+ // highHealthState.checkType = CHARGE;
+ // HealthService::GetInstance()->SetHealthCurrent(highHealthState);
+ // NativeAbility::GetInstance().ChangeSlice(VIEW_CHECK_INVALID, TransitionType::TRANSITION_ZOOM);
+ // }
+ // }
+ // 设置卡片管理进入
+ if (curViewId == MAIN_CLICK_SETCARD)
+ {
+ MainModel::GetInstance().SetFromSetCardView(true);
+ MainModel::GetInstance().SetFromCardId(SETCARD);
+ }
+ if (g_jumpView.count(curViewId) != 0)
+ {
+ NativeAbility::GetInstance().EnterSlice(g_jumpView[curViewId]);
+ }
+ return true;
+ }
- // if (g_jumpView.count(curViewId) != 0) {
- // if (g_jumpView[curViewId] == VIEW_SETTING) {
- // NativeAbility::GetInstance().ChangeSlice(g_jumpView[curViewId], TransitionType::TRANSITION_INVALID,
- // gSliceDefaultPriority, true);
- // } else {
- // NativeAbility::GetInstance().ChangeSlice(g_jumpView[curViewId]);
- // }
- // }
- return true;
-}
+ bool MainPresenterSample::OnLongPress(UIView &view, const LongPressEvent &event)
+ {
+ UNUSED(event);
+ UNUSED(view);
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainPresenterSample OnLongPress");
+ uint8_t cardId = view_->GetHorCurrentCard();
+ /*
+ 卡片进入管理卡片界面
+ if (cardId != WATCH_FACE)
+ {
+ SetCardModel::GetInstance().SetSelectedCard(cardId);
+ NativeAbility::GetInstance().ChangeSlice(VIEW_ADD_CARD);
+ }
+ */
+ if (cardId == WATCH_FACE)
+ {
+ // if (uapi_dev_runtime_get_lock_status())
+ // {
+ // /*进入密码锁*/
+ // NativeAbility::GetInstance().ChangeSlice(VIEW_CODED_LOCK);
+ // }
+ // else
+ // {
+ /*进入表盘设置*/
+ NativeAbility::GetInstance().ChangeSlice(VIEW_SET_DIAL);
+ // }
+ }
+ return true;
+ }
-bool MainPresenterSample::OnLongPress(UIView& view, const LongPressEvent& event)
-{
- UNUSED(event);
- UNUSED(view);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainPresenterSample OnLongPress");
- uint8_t cardId = view_->GetHorCurrentCard();
- if (cardId != WATCH_FACE) {
- SetCardModel::GetInstance().SetSelectedCard(cardId);
- NativeAbility::GetInstance().ChangeSlice(VIEW_SET_CARD);
- } else {
- NativeAbility::GetInstance().ChangeSlice(VIEW_SET_DIAL);
- }
- return true;
-}
-void MainPresenterSample::SetPage(int8_t id, bool loadAdjacent)
-{
- if (view_ != nullptr) {
- view_->SetPage(id, loadAdjacent);
+ void MainPresenterSample::SetPage(int8_t id, bool loadAdjacent)
+ {
+ if (view_ != nullptr) {
+ view_->SetPage(id, loadAdjacent);
+ }
}
-}
-void MainPresenterSample::SetTaskPeroid(CardId cardId)
-{
- if (cardId == COMPASS) {
- SetPeriod(DEFAULT_TASK_PERIOD);
- } else if (cardId == WATCH_FACE) {
- uint32_t time;
- DialSetting &setting = GetDialSetting();
- if (setting.dialFlag) {
- time = dynamic_cast<DialViewGroup*>(view_->GetViewById(WATCH_FACE))->GetPeriod();
- } else {
- time = DEFAULT_TASK_PERIOD;
+ void MainPresenterSample::SetTaskPeroid(CardId cardId)
+ {
+ if (cardId == COMPASS)
+ {
+ SetPeriod(DEFAULT_TASK_PERIOD);
+ }
+ else if (cardId == WATCH_FACE)
+ {
+ uint32_t time;
+ DialSetting &setting = GetDialSetting();
+ if (setting.dialFlag)
+ {
+ time = dynamic_cast<DialViewGroup *>(view_->GetViewById(WATCH_FACE))->GetPeriod();
+ }
+ else
+ {
+ time = DEFAULT_TASK_PERIOD;
+ }
+ SetPeriod(time);
+ }
+ else if (cardId == MUSIC_PLAYER)
+ {
+ SetPeriod(PLAYER_PERIOD);
+ }
+ else
+ {
+ SetPeriod(MAX_PERIOD);
}
- SetPeriod(time);
- } else if (cardId == MUSIC_PLAYER) {
- SetPeriod(PLAYER_PERIOD);
- } else {
- SetPeriod(MAX_PERIOD);
}
-}
-void MainPresenterSample::OnSwipe(UISwipeView &view)
-{
- UNUSED(view);
- CardId cardId = view_->GetHorCurrentCard();
- SetTaskPeroid(cardId);
- if (cardId == COMPASS) {
- if (!isCompassSensorOpened_) {
- CompassModel::GetInstance()->OpenCompassSensor();
- isCompassSensorOpened_ = true;
+ void MainPresenterSample::ResetgoalCardView()
+ {
+ if(goalControlView::GetInstance())
+ {
+ auto goalSwipView = goalControlView::GetInstance()->GetGoalControlSwipView();
+ if (goalSwipView->GetCurrentPage() != 0)
+ {
+ goalSwipView->SetCurrentPage(0);
+ }
}
- } else if (isCompassSensorOpened_) {
- CompassModel::GetInstance()->CloseCompassSensor();
- isCompassSensorOpened_ = false;
}
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnSwipe OnSwipe");
- return;
-}
+ void MainPresenterSample::OnSwipe(UISwipeView &view)
+ {
+ // UNUSED(view);
+ /* -------------------------------------------------------------------------- */
+ /*
+ * @brief 如果当前是下拉界面,先更新一次下拉窗口的数据包括,电池电量,时间,信号强度等等数据,
+ * 然后开启一个每2秒更新数据的定时器。
+ * 如果不在下拉界面了停止定时器
+ */
+ if (MainViewSample::GetInstance()->IsPullUpViewPage() == PULLUP) {
+ if (!isPullDownPageView) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "开始下拉更新");
+ isPullDownPageView = true;
+ UpdataBaseData();
+ PullUpDownView::GetInstance()->UpdateSignalStrengthStatusAndBatteryPosition();
+ PullUpDown_StartTimer(2000);
+ }
+ } else if (MainViewSample::GetInstance()->IsPullUpViewPage() == DROPDOWN) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "开始上拉更新");
+ isPullDownPageView = false;
+ PullUpDown_StopTimer();
+ } else {
+ isPullDownPageView = false;
+ PullUpDown_StopTimer();
+ }
+ /* -------------------------------------------------------------------------- */
-void MainPresenterSample::ProcessDataNotify(void)
-{
- HealthMsg healthMsg;
- uint16_t len;
+ CardId cardId = view_->GetHorCurrentCard();
+ SetTaskPeroid(cardId);
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnSwipe OnSwipe");
+ return;
+ }
- while ((HealthModel::GetInstance()->FetchedHealthData(&healthMsg))) {
- switch (healthMsg.type) {
+ void MainPresenterSample::ProcessDataNotify(void)
+ {
+ HealthMsg healthMsg;
+ uint16_t len;
+
+ while ((HealthModel::GetInstance()->FetchedHealthData(&healthMsg) == true))
+ {
+ switch (healthMsg.type)
+ {
case BATTERY_LIFE:
break;
default:
break;
+ }
}
}
-}
-void MainPresenterSample::SetCircleProgress()
-{
- PlayersView *playersView = dynamic_cast<PlayersView*>(view_->GetViewById(MUSIC_PLAYER));
- if (playersView == nullptr) {
- return;
+ void MainPresenterSample::SetCircleProgress()
+ {
+ #if 0
+ PlayersView *playersView = dynamic_cast<PlayersView *>(view_->GetViewById(MUSIC_PLAYER));
+ if (playersView == nullptr)
+ {
+ return;
+ }
+ UICircleProgress *playbackProgress = playersView->GetPlaybackProgress();
+ if (playbackProgress == nullptr)
+ {
+ return;
+ }
+ if(PlayersModel::GetInstance()->GetMusicSource() == false) {
+ int32_t playerState;
+ PlayersModel::GetInstance()->GetPlayerCtr()->GetPlayerState(playerState);
+ state_ = playersView->GetPlayerButtonState();
+ if ((playerState != PLAYER_STARTED) && (state_ == UICheckBox::UICheckBoxState::SELECTED))
+ {
+ playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::UNSELECTED);
+ }
+ else if ((playerState == PLAYER_STARTED) && (state_ == UICheckBox::UICheckBoxState::UNSELECTED))
+ {
+ playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::SELECTED);
+ }
+ }
+ if (state_ == UICheckBox::UICheckBoxState::SELECTED)
+ {
+ PlayersModel::GetInstance()->GetPlayerCtr()->GetCurrentTime(playerCurrentTime_);
+ PlayersModel::GetInstance()->GetDuration(playerMusicDuration_);
+ if (playerMusicDuration_ != 0)
+ {
+ playerProgressValue_ = (playerCurrentTime_ * PROGRESS_PERCENTAGE) / playerMusicDuration_;
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playerProgressValue_ %lld", playerProgressValue_);
+ }
+ else
+ {
+ playerProgressValue_ = 100; // 100: max progress value
+ }
+ PlayersModel::GetInstance()->SetCircleProgress(playerProgressValue_);
+ PlayersPresenter::GetInstance()->SetPlaybackProgress(playerProgressValue_);
+ }
+ #endif
}
- UICircleProgress *playbackProgress = playersView->GetPlaybackProgress();
- if (playbackProgress == nullptr) {
- return;
+
+ void MainPresenterSample::SetCompassRotate()
+ {
+ bool status = CompassModel::GetInstance()->GetCalibrationStatus();
+ dynamic_cast<CompassControlView *>(view_->GetViewById(COMPASS))->SetCalibrationView(status);
+ if (!status)
+ {
+ DetermineToRotate();
+ }
}
- int32_t playerState;
- PlayersModel::GetInstance()->GetPlayerCtr()->GetPlayerState(playerState);
- state_ = playersView->GetPlayerButtonState();
- if ((playerState != PLAYER_STARTED) && (state_ == UICheckBox::UICheckBoxState::SELECTED)) {
- playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::UNSELECTED);
- } else if ((playerState == PLAYER_STARTED) && (state_ == UICheckBox::UICheckBoxState::UNSELECTED)) {
- playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::SELECTED);
- }
- if (state_ == UICheckBox::UICheckBoxState::SELECTED) {
- PlayersModel::GetInstance()->GetPlayerCtr()->GetCurrentTime(playerCurrentTime_);
- PlayersModel::GetInstance()->GetDuration(playerMusicDuration_);
- if (playerMusicDuration_ != 0) {
- playerProgressValue_ = (playerCurrentTime_ * PROGRESS_PERCENTAGE) / playerMusicDuration_;
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playerProgressValue_ %lld", playerProgressValue_);
- } else {
- playerProgressValue_ = 100; // 100: max progress value
- }
- PlayersModel::GetInstance()->SetCircleProgress(playerProgressValue_);
- PlayersPresenter::GetInstance()->SetPlaybackProgress(playerProgressValue_);
+
+ // 滑动到指南针卡片开启指南针传感器
+ void MainPresenterSample::OpenCompassSensor(void)
+ {
+ if (!isCompassSensorOpened_)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OpenCompassSensor");
+ isCompassSensorOpened_ = true;
+ CompassModel::GetInstance()->OpenCompassSensor();
+ ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); //滑动到指南针页面时开启屏幕常亮
+ }
}
-}
+ // 关闭指南针传感器
+ void MainPresenterSample::CloseCompassSensor(void)
+ {
+ if(isCompassSensorOpened_)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CloseCompassSensor");
+ isCompassSensorOpened_ = false;
+ CompassModel::GetInstance()->CloseCompassSensor();
+ ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON); //滑动到指南针页面时取消屏幕常亮
+ }
+ }
+ /* --------------------------------- 主界面卡片功能 -------------------------------- */
+ void MainPresenterSample::Notify(void)
+ {
+ CardId currentCardId = view_->GetHorCurrentCard();
+
+ // 从心率卡片变为其他卡片时关闭心率检测
+ if (previousCardId == HEART_RATE && currentCardId != HEART_RATE)
+ {
+ LogCardTransition(previousCardId, currentCardId);
+ // HeartModel::GetInstance()->Heart_Stop();
+ // HeartModel::GetInstance()->Heart_Control(HeartState::End,HeartCheck::CARDCHECK); //主动检测心率
+ }
+ // 从指南针卡片跳转到其他卡片时切换到关闭长亮屏
+ if (previousCardId == COMPASS && currentCardId != COMPASS)
+ {
+ CloseCompassSensor();
+ }
-void MainPresenterSample::SetCompassRotate()
-{
- bool status = CompassModel::GetInstance()->GetCalibrationStatus();
- dynamic_cast<CompassControlView*>(view_->GetViewById(COMPASS))->SetCalibrationView(status);
- if (!status) {
- DetermineToRotate();
+ // 从睡眠卡片跳转到其他卡片时切换到睡眠卡片主界面
+ if (previousCardId == SLEEP && currentCardId != SLEEP)
+ {
+ LogCardTransition(previousCardId, currentCardId);
+ ResetSleepCardView();
+ }
+ if (previousCardId == WEATHER && currentCardId != WEATHER)
+ {
+ LogCardTransition(previousCardId, currentCardId);
+ ResetWeatherCardView();
+ }
+ if (previousCardId == GOAL && currentCardId != GOAL)
+ {
+ LogCardTransition(previousCardId, currentCardId);
+ ResetgoalCardView();
+ }
+
+
+ // 更新上一个卡片的值
+ previousCardId = currentCardId;
+
+ switch (currentCardId)
+ {
+ case HEART_RATE:
+ StartHeartRateDetection();
+ break;
+
+ case COMPASS:
+ OpenCompassSensor();
+ SetCompassRotate();
+ break;
+
+ case MUSIC_PLAYER:
+ // PlayersModel::GetInstance()->SetCircleProgress();
+ break;
+
+ case WATCH_FACE:
+ UpdateWatchFace();
+ break;
+
+ case WEATHER:
+ UpdateWeather();
+ break;
+
+ case GOAL:
+ // Updategoal();
+ break;
+
+ case SLEEP:
+ UpdateSleep();
+ break;
+
+ }
+ }
+ /*打印日志*/
+ void MainPresenterSample::LogCardTransition(CardId previous, CardId current)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[MainCard slide]previousCardId:%d cardId:%d", previous, current);
+ }
+ /*睡眠卡片*/
+ void MainPresenterSample::ResetSleepCardView()
+ {
+ // if (SleepCardView::GetInstance() != nullptr)
+ // {
+ // auto sleepCardView = SleepCardView::GetInstance()->GetSleepCardView();
+ // if (sleepCardView->GetCurrentPage() != 0)
+ // {
+ // sleepCardView->SetCurrentPage(0);
+ // }
+ // }
+
+ // SleepModel::GetInstance().msg_save_sleep_data();
+ }
+ /*天气卡片*/
+ void MainPresenterSample::ResetWeatherCardView()
+ {
+ if(WeatherControlView::GetInstance())
+ {
+ auto weatherSwipView = WeatherControlView::GetInstance()->GetWeatherSwipView();
+ if (weatherSwipView->GetCurrentPage() != 0)
+ {
+ weatherSwipView->SetCurrentPage(0);
+ }
+ }
}
-}
-void MainPresenterSample::Notify(void)
-{
- CardId cardId = view_->GetHorCurrentCard();
- if (cardId == COMPASS) {
- SetCompassRotate();
- } else if (cardId == MUSIC_PLAYER) {
- SetCircleProgress();
- } else if (cardId == WATCH_FACE) {
+
+ /*心率卡片*/
+ void MainPresenterSample::StartHeartRateDetection()
+ {
+ // HeartModel::GetInstance()->Heart_Control(HeartState::End, HeartCheck::PASSIVITY);
+#if HEART_RATE_CHECK_TIMEOUT
+ HeartModel::GetInstance()->Heart_Control(HeartState::Start,HeartCheck::CARDCHECK);
+#else
+ // HeartModel::GetInstance()->Heart_Start(HeartCheck::CARDCHECK);
+#endif
+ }
+ /*主表盘*/
+ void MainPresenterSample::UpdateWatchFace()
+ {
DialSetting &setting = GetDialSetting();
- if (setting.dialFlag) {
+ if (setting.dialFlag)
+ {
DialModelTime::GetInstance()->UpdateTime();
- DialViewGroup* group = dynamic_cast<DialViewGroup*>(view_->GetViewById(WATCH_FACE));
- if (group != nullptr) {
- group->UpdateViewsByPeriodicUpdateData();
+ dynamic_cast<DialViewGroup *>(view_->GetViewById(WATCH_FACE))->UpdateViewsByPeriodicUpdateData();
+ }
+ else
+ {
+ dynamic_cast<MainClockView *>(view_->GetViewById(WATCH_FACE))->UpdateTime();
+ }
+ }
+
+ void MainPresenterSample::Updategoal()
+ {
+ if(GoalView::GetInstance())
+ {
+ GoalView::GetInstance()->GoalViewrefresh();
+ }
+ if(GoalotherView::GetInstance())
+ {
+ GoalotherView::GetInstance()->GoalViewrefresh();
+ }
+ }
+
+ /*睡眠*/
+ void MainPresenterSample::UpdateSleep()
+ {
+ // GraphicService::GetInstance()->PostGraphicEvent(
+ // std::bind(&OHOS::SleepModel::UpdateSleepView, &OHOS::SleepModel::GetInstance()));
+ }
+
+ /*天气*/
+ void MainPresenterSample::UpdateWeather()
+ {
+ if (WeatherModel::GetInstance().GetWeatherDataIsValid())
+ {
+ WeatherModel::GetInstance().UpdateWeatherCurTime();
+ }
+ }
+ /* -------------------------------------------------------------------------- */
+ void MainPresenterSample::InitCardSettings(void)
+ {
+ MainModel::GetInstance().InitCardSettings();
+ }
+
+ uint8_t MainPresenterSample::GetCardSettingCount(void)
+ {
+ return MainModel::GetInstance().GetCardSettingCount();
+ }
+
+ CardId *MainPresenterSample::GetCardSettings(void)
+ {
+ return MainModel::GetInstance().GetCardSettings();
+ }
+
+ void MainPresenterSample::InitDialSettings(void)
+ {
+ return MainModel::GetInstance().InitDialSettings();
+ }
+ DialSetting &MainPresenterSample::GetDialSetting()
+ {
+ return MainModel::GetInstance().GetDialSetting();
+ }
+
+ static const char *weekDays_ch[] = {"星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
+ static const char *weekDays_other[] = {"Sun", "Mon", "Tue", "Wed", "Thur", "Fri", "Sat"};
+ uint32_t MainPresenterSample::GetWeekStr(char *p_week)
+ {
+ time_t currtime;
+ struct tm *timeinfo;
+ time(&currtime);
+ timeinfo = localtime(&currtime);
+
+ // 获取星期信息
+ int language = ConfigModel::GetInstance()->GetLanguage();
+ if (language == 0)
+ {
+ strcpy(p_week, weekDays_ch[timeinfo->tm_wday]);
+ }
+ else
+ {
+ strcpy(p_week, weekDays_other[timeinfo->tm_wday]);
+ }
+
+ return ERRCODE_SUCC; // 假设成功获取星期信息
+ }
+
+ void MainPresenterSample::UpdataBaseData()
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::UpdataBaseData");
+ // 解析日期信息
+ char *dateStr = (char *)malloc(9);
+ if (uapi_get_YYMMDD_Time(dateStr, '/') != ERRCODE_SUCC)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to get start date");
+ free(dateStr);
+ return;
+ }
+ // 获取当前时间
+ char *timeStr = (char *)malloc(9);
+ if (uapi_get_HHMMSS_Time(timeStr, ':', false) != ERRCODE_SUCC)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to get start time");
+ free(dateStr);
+ free(timeStr);
+ return;
+ }
+ // 解析星期信息
+ char *weekStr = (char *)malloc(10);
+ if (GetWeekStr(weekStr) != ERRCODE_SUCC)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to get week information");
+ free(dateStr);
+ free(timeStr);
+ free(weekStr);
+ return;
+ }
+
+ // 获取电池电量信息
+ float voltage = 0.0F;
+ uint8_t value = 0;
+ // value = battery_get_voltage(&voltage);
+ value = 0;
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "battery_get_voltage = %d", value);
+ std::string dateAndweek = std::string(dateStr) + " " + std::string(weekStr);
+ if (PullUpDownView::GetInstance() != nullptr)
+ {
+ PullUpDownView::GetInstance()->GetProgress()->SetValue(value);
+ PullUpDownView::GetInstance()->GetDateAndWeekLabel()->SetText(dateAndweek.c_str());
+ }
+
+ // 释放动态分配的内存
+ free(dateStr);
+ free(timeStr);
+ free(weekStr);
+
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ALLData are refresh!\n");
+ }
+ void MainPresenterSample::get_memcheck()
+ {
+ MemCheck::GetInstance()->DumpMemInfo();
+ }
+ /* -------------------------------------------------------------------------- */
+ // 声明定时器变量
+ static osTimerId_t g_timer = nullptr;
+ static uint8_t UPDATETIME = 20; // 20秒
+ uint8_t MainPresenterSample::g_PullUpDownTimes = UPDATETIME;
+
+ /*定时器到期时的处理*/
+ static void PullUpDown_TimerCallbackProc(int data)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDown_TimerCallbackProc");
+ if (uapi_get_screen_state() == 1) // 息屏状态下若停留在下拉界面,20s后无操作停止更新数据
+ {
+ MainPresenterSample::g_PullUpDownTimes -= 2;
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "%d", MainPresenterSample::g_PullUpDownTimes);
+ if (MainPresenterSample::g_PullUpDownTimes <= 0) {
+ GraphicService::GetInstance()->PostGraphicEvent(std::bind(&MainPresenterSample::PullUpDown_StopTimer, MainPresenterSample::GetInstance()));
}
- } else {
- MainClockView* clock = dynamic_cast<MainClockView*>(view_->GetViewById(WATCH_FACE));
- if (clock != nullptr) {
- clock->UpdateTime();
+ }
+ else //亮屏状态下每2s刷新一次下拉数据
+ {
+ if (PullUpDownView::GetInstance() != nullptr)
+ {
+ PullUpDownView::GetInstance()->UpdateSignalStrengthStatusAndBatteryPosition();
}
+ if (MainPresenterSample::g_PullUpDownTimes != UPDATETIME) // 如果是亮屏后息屏再亮屏(此时息屏时间没超过 UPDATETIME)则恢复
+ MainPresenterSample::g_PullUpDownTimes = UPDATETIME;
}
+ return;
}
-}
-void MainPresenterSample::InitCardSettings(void)
-{
- MainModel::GetInstance().InitCardSettings();
-}
+ /*
+ * @brief 回调函数
+ */
+ static void PullUpDown_TimerCallback(int data)
+ {
+ GraphicService::GetInstance()->PostGraphicEvent(std::bind(PullUpDown_TimerCallbackProc, data));
+ }
-uint8_t MainPresenterSample::GetCardSettingCount(void)
-{
- return MainModel::GetInstance().GetCardSettingCount();
-}
+ /*
+ * @brief 开启定时器函数
+ * @param interval 时间间隔,单位ms
+ */
+ void MainPresenterSample::PullUpDown_StartTimer(uint32_t interval)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainPresenterSample::PullUpDown_StartTimer");
+ /* -------------------------- 1.检查定时器是否已经存在,如果存在则返回 ------------------------- */
+ if (g_timer != nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainPresenterSample::PullUpDown_StartTimer Timer already exists!!");
+ return;
+ }
-CardId *MainPresenterSample::GetCardSettings(void)
-{
- return MainModel::GetInstance().GetCardSettings();
-}
+ /* --------------------------------- 2.创建定时器 -------------------------------- */
+ g_timer = osTimerNew((osTimerFunc_t)PullUpDown_TimerCallback, osTimerPeriodic, nullptr, nullptr);
+ // 检查定时器创建是否成功
+ if (g_timer == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainPresenterSample::PullUpDown_StartTimer Timer create failed!!");
+ return;
+ }
-void MainPresenterSample::InitDialSettings(void)
-{
- return MainModel::GetInstance().InitDialSettings();
-}
-DialSetting& MainPresenterSample::GetDialSetting()
-{
- return MainModel::GetInstance().GetDialSetting();
-}
+ /* ----------------------------- 3.将毫秒转换为系统时钟节拍数 ---------------------------- */
+ int tick = osMs2Tick(interval);
+ /* --------------------------------- 4.启动定时器 -------------------------------- */
+ osStatus_t ret = osTimerStart(g_timer, tick);
+ /* -------------------- 5.检查定时器启动是否成功,如果启动失败,删除定时器并置为 nullptr -------------------- */
+ if (ret != osOK)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[PullUpDown_StartTimer] osTimerDelete failed, ret = %lx!!", ret);
+ if (g_timer != nullptr)
+ {
+ ret = osTimerDelete(g_timer);
+ }
+ g_timer = nullptr;
+ return;
+ }
+ return;
+ }
-bool MainPresenterSample::IsFromSetCardView(void) const
-{
- return MainModel::GetInstance().IsFromSetCardView();
-}
+ /*
+ * @brief 停止定时器
+ */
+ void MainPresenterSample::PullUpDown_StopTimer(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainPresenterSample::PullUpDown_StopTimer");
+ // 检查定时器是否存在
+ if (g_timer != nullptr)
+ {
+ osTimerStop(g_timer);
+ // 删除定时器并置为 nullptr
+ osStatus_t ret = osTimerDelete(g_timer);
+ if (ret != osOK)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "osTimerDelete failed, ret = %lx!!", ret);
+ }
+ g_timer = nullptr;
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "g_timer stop success");
+ }
+ }
-void MainPresenterSample::SetFromSetCardView(bool isFrom)
-{
- MainModel::GetInstance().SetFromSetCardView(isFrom);
-}
+ bool MainPresenterSample::IsFromSetCardView(void) const
+ {
+ return MainModel::GetInstance().IsFromSetCardView();
+ }
-uint8_t MainPresenterSample::GetFromCardId(void)
-{
- return MainModel::GetInstance().GetFromCardId();
-}
+ void MainPresenterSample::SetFromSetCardView(bool isFrom)
+ {
+ MainModel::GetInstance().SetFromSetCardView(isFrom);
+ }
+
+ uint8_t MainPresenterSample::GetFromCardId(void)
+ {
+ return MainModel::GetInstance().GetFromCardId();
+ }
}
#include "wearable_log.h"
#include "MainViewSample.h"
#include "graphic_service.h"
+// #include "dialupdate/include/DialUpdateModel.h"
+#include "uicomponents/UIComponents.h"
+#include "ui_service.h"
+// extern DialInfo_1 dialInfo_1[MAX_DIALNUM_1];
-namespace OHOS {
-static MainViewSample *g_pMainView = nullptr;
-static constexpr uint16_t MESLABLE_X_TMP = 177;
-static constexpr uint16_t MESLABLE_Y_TMP = 212;
-static constexpr uint16_t MESLABLE_WIDTH_TMP = 100;
-static constexpr uint16_t MESLABLE_HEIGHT_TMP = 30;
-static constexpr uint8_t FONT_SIZE_TMP = 24;
-static constexpr uint8_t PULL_MIDDLE_VIEW_OPA = 0;
-
-struct MainViewMapper {
- CardId id;
- UICardPage *(MainViewSample::*func)(void);
-};
-
-static const MainViewMapper CardMapper[] = {
- {WATCH_FACE, &MainViewSample::InitWatchFacePage},
- {HEART_RATE, &MainViewSample::InitHeartRatePage},
- {COMPASS, &MainViewSample::InitCompassPage},
- // {ACTIVITY, &MainViewSample::InitActivityPage},
- {MUSIC_PLAYER, &MainViewSample::InitMusicPlayerPage},
-};
-
-MainViewSample::MainViewSample()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::MainViewSample");
- g_pMainView = this;
-}
+extern "C" uint8_t uapi_dev_runtime_get_lock_status(void);
-MainViewSample::~MainViewSample()
+namespace OHOS
{
- dropDownView->ClearBackgroundBlur();
- messageView->ClearBackgroundBlur();
-
- for (int32_t i = 0; i < MAX_CARD; i++) {
- recordCard[i] = nullptr;
- pageStatus[i] = false;
- }
-
- if (mainSwipeGroup != nullptr) {
- delete mainSwipeGroup;
- mainSwipeGroup = nullptr;
- }
-
- if (mainClockView != nullptr) {
- delete mainClockView;
- mainClockView = nullptr;
- }
- if (activityWeekView != nullptr) {
- delete activityWeekView;
- activityWeekView = nullptr;
+ static MainViewSample *g_pMainView = nullptr;
+ static constexpr uint16_t MESLABLE_X_TMP = 177;
+ static constexpr uint16_t MESLABLE_Y_TMP = 212;
+ static constexpr uint16_t MESLABLE_WIDTH_TMP = 100;
+ static constexpr uint16_t MESLABLE_HEIGHT_TMP = 30;
+ static constexpr uint8_t FONT_SIZE_TMP = 24;
+ static constexpr uint8_t PULL_MIDDLE_VIEW_OPA = 0;
+
+#define DIALSTATE 1
+
+ struct MainViewMapper
+ {
+ CardId id;
+ UICardPage *(MainViewSample::*func)(void);
+ };
+ // 严格按照Id对应
+ static const MainViewMapper CardMapper[] = {
+ {WATCH_FACE, &MainViewSample::InitWatchFacePage},
+ // {HEART_RATE, &MainViewSample::InitHeartRatePage},
+ {TRAINING, &MainViewSample::InitTrainingPage},
+ {COMPASS, &MainViewSample::InitCompassPage},
+ // {SLEEP, &MainViewSample::InitSleepPage},
+ // {BLOODOXGEN, &MainViewSample::InitBloodOxygenPage},
+ {GOAL, &MainViewSample::InitGoalPage},
+ {WEATHER, &MainViewSample::InitWeatherPage},
+ {MUSIC_PLAYER, &MainViewSample::InitMusicPlayerPage},
+ {SETCARD, &MainViewSample::InitSetMainPage},
+
+#if 0
+ {ACTIVITY, &MainViewSample::InitActivityPage},
+#endif
+ };
+ MainViewSample::MainViewSample()
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::MainViewSample");
+ g_pMainView = this;
}
- if (playersView != nullptr) {
- delete playersView;
- playersView = nullptr;
- }
-
- if (heartRateView != nullptr) {
- delete heartRateView;
- heartRateView = nullptr;
- }
+ MainViewSample::~MainViewSample()
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainViewSample::~MainViewSample");
+ mainSwipeGroup->RemoveAll();
- if (dropDownView != nullptr) {
- delete dropDownView;
- dropDownView = nullptr;
- }
+ for (int32_t i = 0; i < MAX_CARD; i++)
+ {
+ recordCard[i] = nullptr;
+ pageStatus[i] = false;
+ }
+ if (activityWeekView != nullptr)
+ {
+ activityWeekView->RemoveAll();
+ delete activityWeekView;
+ activityWeekView = nullptr;
+ }
- if (messageView != nullptr) {
- messageView->RemoveAll();
- delete messageView;
- messageView = nullptr;
- }
+ if (playersView != nullptr)
+ {
+ playersView->RemoveAll();
+ delete playersView;
+ playersView = nullptr;
+ }
- if (messageLable != nullptr) {
- delete messageLable;
- messageLable = nullptr;
- }
+ // if (heartRateView != nullptr)
+ // {
+ // heartRateView->RemoveAll();
+ // delete heartRateView;
+ // heartRateView = nullptr;
+ // }
+ if (dropDownView != nullptr)
+ {
+ dropDownView->ClearBackgroundBlur();
+ delete dropDownView;
+ dropDownView = nullptr;
+ }
- if (compassControlView != nullptr) {
- delete compassControlView;
- compassControlView = nullptr;
+ if (activityWeekView != nullptr)
+ {
+ activityWeekView->RemoveAll();
+ delete activityWeekView;
+ activityWeekView = nullptr;
+ }
+ // if (messageView != nullptr)
+ // {
+ // messageView->ClearBackgroundBlur();
+ // messageView->RemoveAll();
+ // delete messageView;
+ // messageView = nullptr;
+ // }
+ // if (MessageLable != nullptr)
+ // {
+ // delete MessageLable;
+ // MessageLable = nullptr;
+ // }
+ // if (dialstateicon != nullptr)
+ // {
+ // mainClockView->Remove(dialstateicon);
+ // delete dialstateicon;
+ // dialstateicon = nullptr;
+ // }
+ // if (messageicon != nullptr)
+ // {
+ // mainClockView->Remove(messageicon);
+ // delete messageicon;
+ // messageicon = nullptr;
+ // }
+ if (compassControlView != nullptr)
+ {
+ compassControlView->RemoveAll();
+ delete compassControlView;
+ compassControlView = nullptr;
+ }
+ if (mainClockView != nullptr)
+ {
+ mainClockView->RemoveAll();
+ delete mainClockView;
+ mainClockView = nullptr;
+ }
+ // if (bloodView != nullptr)
+ // {
+ // bloodView->RemoveAll();
+ // delete bloodView;
+ // bloodView = nullptr;
+ // }
+ if (setmainView != nullptr)
+ {
+ setmainView->RemoveAll();
+ delete setmainView;
+ setmainView = nullptr;
+ }
+ // if (sleepView != nullptr)
+ // {
+ // sleepView->RemoveAll();
+ // delete sleepView;
+ // sleepView = nullptr;
+ // }
+ // if (traingView != nullptr)
+ // {
+ // traingView->RemoveAll();
+ // delete traingView;
+ // traingView = nullptr;
+ // }
+ if (weatherControlView != nullptr)
+ {
+ delete weatherControlView;
+ weatherControlView = nullptr;
+ }
+ if (GoalControlView != nullptr)
+ {
+ GoalControlView->RemoveAll();
+ delete GoalControlView;
+ GoalControlView = nullptr;
+ }
+ // if (applistCardView != nullptr)
+ // {
+ // delete applistCardView;
+ // applistCardView = nullptr;
+ // }
+ if (mainSwipeGroup != nullptr)
+ {
+ delete mainSwipeGroup;
+ mainSwipeGroup = nullptr;
+ }
+ if (callback != nullptr)
+ {
+ delete callback;
+ callback = nullptr;
+ }
+ g_pMainView = nullptr;
}
-
- if (callback != nullptr) {
- delete callback;
- callback = nullptr;
+ MainViewSample *MainViewSample::GetInstance(void)
+ {
+ return g_pMainView;
}
- g_pMainView = nullptr;
-}
+ void MainViewSample::OnStart()
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainViewSample::OnStart");
-MainViewSample *MainViewSample::GetInstance(void)
-{
- return g_pMainView;
-}
+ if (mainSwipeGroup == nullptr) {
+ mainSwipeGroup = new UICrossView();
+ if (mainSwipeGroup == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mainSwipeGroup new fail");
+ return;
+ }
+ }
-void MainViewSample::OnStart()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::OnStart");
- View<MainPresenterSample>::OnStart();
+ // UIView::OnDragListener *listener = static_cast<UIView::OnDragListener *>(MainPresenterSample::GetInstance());
+ // if (listener == nullptr)
+ // {
+ // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new alarmDragListener fail");
+ // return;
+ // }
+ // mainSwipeGroup->SetOnDragListener(listener);
+
+ if (callback == nullptr)
+ {
+ callback = new ZoomEffect();
+ if (callback == nullptr)
+ {
+ delete mainSwipeGroup;
+ mainSwipeGroup = nullptr;
+ GRAPHIC_LOGE("SwipeCallback new fail\n");
+ return;
+ }
+ }
+ callback->isNeedClip_ = true;
+ callback->SetContainer(mainSwipeGroup);
+ HorizontalViewInit();
+ HorViewLoad();
+ VerticalViewInit(); // 初始化上下拉界面
+ VertViewLoad(); // 添加上下拉界面
+ mainSwipeGroup->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
+ mainSwipeGroup->SetAnimatorTime(50);
+ mainSwipeGroup->SetLoopState(false); // 主界面循环
+ mainSwipeGroup->EnableScreenCap(true); // 主界面截屏滑动
+ mainSwipeGroup->RegisterSwipeCallback(callback); // 主界面动画回调
+ // /*密码锁上锁*/
+ // if (uapi_dev_runtime_get_lock_status())
+ // {
+ // // 回到表盘
+ // SwitchToClockPage();
+ // // printf("密码锁\r\n");
+ // mainClockView->SetIntercept(true);
+ // mainSwipeGroup->SetDraggable(false);
+ // mainSwipeGroup->SetOnSwipeListener(nullptr);
+ // mainSwipeGroup->SetOnClickListener(presenter_);
+ // }
+ // else
+ // {
+ // 判断是否为从主界面前往的其他Slice
+ if (presenter_->IsFromSetCardView())
+ {
+ // 回退标志位
+ presenter_->SetFromSetCardView(false);
+ // 设置Id为主界面显示索引
+ SwitchToCard(presenter_->GetFromCardId());
+ }
+ else
+ {
+ // 回到表盘
+ SwitchToClockPage();
+ }
+ // }
- mainSwipeGroup = new UICrossView();
- if (mainSwipeGroup == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mainSwipeGroup new fail");
- return;
+ AddViewToRootContainer(mainSwipeGroup);
}
- if (callback == nullptr) {
- callback = new ZoomEffect();
- if (callback == nullptr) {
- delete mainSwipeGroup;
- mainSwipeGroup = nullptr;
- GRAPHIC_LOGE("SwipeCallback new fail\n");
- return;
+ void MainViewSample::UpdateStateShow() {
+ DialSetting &setting = presenter_->GetDialSetting();
+ //离线表盘
+ if (setting.dialFlag) {
+ if (mainClockView != nullptr) {
+ // dynamic_cast<DialViewGroup *>(mainClockView)->UpdateStateShow();
+ }
+ }
+ //在线表盘
+ else {
+ if (mainClockView != nullptr) {
+ dynamic_cast<MainClockView *>(mainClockView)->UpdateStateShow();
+ }
+
}
}
- callback->SetContainer(mainSwipeGroup);
-
- HorizontalViewInit();
- HorViewLoad();
- VerticalViewInit();
- VertViewLoad();
- mainSwipeGroup->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
- mainSwipeGroup->SetAnimatorTime(50); // 50: animator drag time(ms);
- mainSwipeGroup->SetLoopState(true);
- mainSwipeGroup->EnableScreenCap(true);
- mainSwipeGroup->RegisterSwipeCallback(callback);
- if (presenter_->IsFromSetCardView()) {
- presenter_->SetFromSetCardView(false);
- SwitchToCard(presenter_->GetFromCardId(), false);
- } else {
- SwitchToClockPage(false);
- }
- AddViewToRootContainer(mainSwipeGroup);
-}
-
-bool MainViewSample::HorizontalViewInit(void)
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::HorizontalViewInit");
- presenter_->InitDialSettings();
- presenter_->InitCardSettings();
- uint8_t cardSettingNum = presenter_->GetCardSettingCount();
- CardId *cardSettings = presenter_->GetCardSettings();
- uint8_t cardMapNumber = sizeof(CardMapper) / sizeof(CardMapper[0]);
- for (int16_t i = 0; i < cardSettingNum; i++) {
- for (uint8_t j = 0; j < cardMapNumber; j++) {
- if (cardSettings[i] == CardMapper[j].id) {
- recordCard[j] = (this->*(CardMapper[j].func))();
- if (recordCard[j] == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
- "MainViewSample:: recordCard %d error", j);
- return false;
+
+ bool MainViewSample::HorizontalViewInit(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::HorizontalViewInit");
+ /*读取kvstore里面的配置*/
+ presenter_->InitDialSettings();
+ presenter_->InitCardSettings();
+ uint8_t cardSettingNum = presenter_->GetCardSettingCount();
+ CardId *cardSettings = presenter_->GetCardSettings();
+ uint8_t cardMapNumber = sizeof(CardMapper) / sizeof(CardMapper[0]);
+ for (int16_t i = 0; i < cardSettingNum; i++)
+ {
+ for (uint8_t j = 0; j < cardMapNumber; j++)
+ {
+ if (cardSettings[i] == CardMapper[j].id)
+ {
+ recordCard[j] = (this->*(CardMapper[j].func))();
+ if (recordCard[j] == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+ "MainViewSample:: recordCard %d error", j);
+ return false;
+ }
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
+ "MainViewSample:: recordCard[%d]:%p", j, recordCard[j]);
+ break;
}
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
- "MainViewSample:: recordCard[%d]:%p", j, recordCard[j]);
- break;
}
}
+
+ mainSwipeGroup->SetOnSwipeListener(presenter_);
+ mainSwipeGroup->SetOnLongPressListener(presenter_);
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::InitPage over");
+ return true;
}
- mainSwipeGroup->SetOnSwipeListener(presenter_);
- mainSwipeGroup->SetOnLongPressListener(presenter_);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::InitPage over");
- return true;
-}
-void MainViewSample::HorViewLoad(void)
-{
- uint8_t cardSettingNum = presenter_->GetCardSettingCount();
- CardId *cardSettings = presenter_->GetCardSettings();
- for (int16_t i = 0; i < cardSettingNum; i++) {
- CardId cardId = cardSettings[i];
- if (recordCard[cardId] != nullptr) {
- mainSwipeGroup->HorAdd(recordCard[cardId]);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample:: HorViewLoad cardid = %d ViewIndex = %d",
- cardId, recordCard[cardId]->GetViewIndex());
+ void MainViewSample::HorViewLoad(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::HorViewLoad");
+ uint8_t cardSettingNum = presenter_->GetCardSettingCount();
+ CardId *cardSettings = presenter_->GetCardSettings();
+ for (int16_t i = 0; i < cardSettingNum; i++)
+ {
+ CardId cardId = cardSettings[i];
+ if (recordCard[cardId] != nullptr)
+ {
+ mainSwipeGroup->HorAdd(recordCard[cardId]);
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample:: HorViewLoad cardid = %d ViewIndex = %d",
+ cardId, recordCard[cardId]->GetViewIndex());
+ }
}
}
-}
-void MainViewSample::VerticalViewInit(void)
-{
- dropDownView = new PullUpDownView();
- if (dropDownView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dropDownView new fail");
- return;
+ void MainViewSample::VerticalViewInit(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::VerticalViewInit");
+#ifdef FD230
+ if (dropDownView == nullptr) {
+ dropDownView = new PullUpDownView();
+ if (dropDownView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dropDownView new fail");
+ return;
+ }
+ }
+ dropDownView->PreLoad();
+ dropDownView->SetViewId("dropDownView");
+ dropDownView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
+ dropDownView->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
+ /* -------------------------------------------------------------------------- */
+ // if (messageView == nullptr) {
+ // messageView = new MessageControlView();
+ // if (messageView == nullptr)
+ // {
+ // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "messageView new fail");
+ // return;
+ // }
+ // }
+
+ // messageView->SetViewId("messageView");
+ // messageView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
+ // messageView->PreLoad();
+ // messageView->SetDraggable(false);
+ // // messageView->SetIntercept(true);
+ // messageView->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
+#endif
}
- dropDownView->PreLoad();
- dropDownView->SetViewId("dropDownView");
- dropDownView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
- dropDownView->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
-
- messageView = new UICardPage();
- if (messageView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "messageView new fail");
- return;
+
+ PullUpDownView *MainViewSample::GetPullUpView()
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::GetPullUpView");
+ return dropDownView;
}
- messageView->SetPosition(0, 0);
- messageView->SetWidth(Screen::GetInstance().GetWidth());
- messageView->SetHeight(Screen::GetInstance().GetHeight());
- messageView->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
- messageView->SetViewId("messageView");
- messageView->SetTouchable(true);
- messageView->SetIntercept(true);
- messageLable = new UILabel();
- if (messageLable == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "messageLable new fail");
- return;
+
+ void MainViewSample::VertViewLoad(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::VertViewLoad");
+ mainSwipeGroup->VerAdd(dropDownView, UICrossView::VPage::UP_PAGE);
+ // mainSwipeGroup->VerAdd(messageView, UICrossView::VPage::DOWN_PAGE);
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::PullViewLoad::Pull View Load complete");
}
- messageLable->SetPosition(MESLABLE_X_TMP, MESLABLE_Y_TMP, MESLABLE_WIDTH_TMP, MESLABLE_HEIGHT_TMP);
- messageLable->SetText("无消息");
- messageLable->SetAlign(TEXT_ALIGNMENT_CENTER);
- messageLable->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_SIZE_TMP);
- messageLable->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);
- messageView->Add(messageLable);
-}
+
+ UICardPage *MainViewSample::InitWatchOffDial(DialSetting &setting)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::InitWathOffDial");
+ DialViewGroup *dial = new DialViewGroup();
+ dial->SetDial(setting.dialFullName);
+ // dial->SetDial(DEFAULT_DIAL_PATH);
+ return dial;
+ }
+ /*初始化自定义表盘*/
+ UICardPage *MainViewSample::InitWatchDial(DialSetting &setting)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::InitWathDial");
+
+ MainClockView *clock = new MainClockView();
+ clock->SetCustomId(setting.dialId);
+ return clock;
+ }
+ UICardPage *MainViewSample::InitWatchFacePage(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::InitWatchFacePage");
+ DialSetting &setting = presenter_->GetDialSetting();
+ if (setting.dialFlag)
+ {
+ mainClockView = InitWatchOffDial(setting);
+ }
+ else
+ {
+ mainClockView = InitWatchDial(setting);
+ }
+ if (mainClockView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainClockView new fail");
+ return nullptr;
+ }
-void MainViewSample::VertViewLoad(void)
-{
- mainSwipeGroup->VerAdd(dropDownView, UICrossView::VPage::UP_PAGE);
- mainSwipeGroup->VerAdd(messageView, UICrossView::VPage::DOWN_PAGE);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::PullViewLoad::Pull View Load complete");
-}
+ mainClockView->SetViewId("mainClockView");
+ return mainClockView;
+ }
+ // 指南针卡片
+ UICardPage *MainViewSample::InitCompassPage(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::InitCompassPage");
+ compassControlView = new CompassControlView();
+ if (compassControlView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "compassControlView new fail");
+ return nullptr;
+ }
+ return compassControlView;
+ }
+ // 音乐卡片
+ UICardPage *MainViewSample::InitMusicPlayerPage(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::InitMusicPlayerPage");
+ playersView = new PlayersView();
+ if (playersView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersView new fail");
+ return nullptr;
+ }
+ return playersView;
+ }
-void MainViewSample::OnStop()
-{
- messageView->RemoveAll();
- return;
-}
+ // 主界面血氧卡片
+ UICardPage *MainViewSample::InitBloodOxygenPage(void)
+ {
+ // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::InitBloodOxygenPage");
+ // bloodView = new BloodCardView();
+ // if (bloodView == nullptr)
+ // {
+ // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodView new fail");
+ // return nullptr;
+ // }
+ // return bloodView;
+ return nullptr;
+ }
-UICardPage *MainViewSample::InitWatchOffDial(DialSetting &setting)
-{
- DialViewGroup *dial = new DialViewGroup();
- dial->SetDial(setting.dialFullName);
- return dial;
-}
+ // 主界面训练卡片
+ UICardPage *MainViewSample::InitTrainingPage(void)
+ {
+ // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::InitTrainingPage");
+ // traingView = new Training_CardView();
+ // if (traingView == nullptr)
+ // {
+ // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "traingView new fail");
+ // return nullptr;
+ // }
+ // return traingView;
+ return nullptr;
+ }
-UICardPage *MainViewSample::InitWatchDial(DialSetting &setting)
-{
- switch (setting.dialId) {
- case DIAL_CLOCK:
- return new MainClockView();
- default:
+ // 主界面天气卡片
+ UICardPage *MainViewSample::InitWeatherPage(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::InitWeatherPage");
+ weatherControlView = new WeatherControlView();
+ if (weatherControlView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "weatherControlView new fail");
return nullptr;
+ }
+ return weatherControlView;
}
-}
-UICardPage *MainViewSample::InitWatchFacePage(void)
-{
- DialSetting &setting = presenter_->GetDialSetting();
- if (setting.dialFlag) {
- mainClockView = InitWatchOffDial(setting);
- } else {
- mainClockView = InitWatchDial(setting);
+ // 主界面每日目标卡片
+ UICardPage *MainViewSample::InitGoalPage(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::InitGoalPage");
+ GoalControlView = new goalControlView();
+ if (GoalControlView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GoalControlView new fail");
+ return nullptr;
+ }
+ return GoalControlView;
}
- if (mainClockView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainClockView new fail");
- return nullptr;
+ // 主界面心率卡片
+ UICardPage *MainViewSample::InitHeartRatePage(void){
+ // {
+ // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::InitHeartRatePage");
+ // heartRateView = new HeartRateCardView();
+ // if (heartRateView == nullptr)
+ // {
+ // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "heartRateView new fail");
+ // return nullptr;
+ // }
+ // return heartRateView;
+ return nullptr;
}
- return mainClockView;
-}
-UICardPage *MainViewSample::InitHeartRatePage(void)
-{
- heartRateView = new HeartRateView();
- if (heartRateView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "heartRateView new fail");
- return nullptr;
+ // 主界面运动卡片
+ UICardPage *MainViewSample::InitActivityPage(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::InitActivityPage");
+ activityWeekView = new ActivityWeekView();
+ if (activityWeekView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "activityWeekView new fail");
+ return nullptr;
+ }
+ return activityWeekView;
}
- return heartRateView;
-}
-UICardPage *MainViewSample::InitActivityPage(void)
-{
- activityWeekView = new ActivityWeekView();
- if (activityWeekView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "activityWeekView new fail");
- return nullptr;
+ /*主界面设置卡片*/
+ UICardPage *MainViewSample::InitSetMainPage(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::InitSetMainPage");
+ setmainView = new SetMainView();
+ if (setmainView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "setmainView new fail");
+ return nullptr;
+ }
+ return setmainView;
}
- return activityWeekView;
-}
-UICardPage *MainViewSample::InitCompassPage(void)
-{
- compassControlView = new CompassControlView();
- if (compassControlView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "compassControlView new fail");
+ /*主界面睡眠卡片*/
+ UICardPage *MainViewSample::InitSleepPage(void)
+ {
+ // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::InitSetMainPage");
+ // sleepView = new SleepCardView();
+ // if (sleepView == nullptr)
+ // {
+ // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "sleepView new fail");
+ // return nullptr;
+ // }
+ // return sleepView;
return nullptr;
}
- return compassControlView;
-}
-UICardPage *MainViewSample::InitMusicPlayerPage(void)
-{
- playersView = new PlayersView();
- if (playersView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersView new fail");
- return nullptr;
+ void MainViewSample::SetPage(int16_t page, bool loadAdjacent)
+ {
+ if (mainSwipeGroup != nullptr) {
+ mainSwipeGroup->SetHorCurrentPage(page, loadAdjacent);
+ }
+
+ if (presenter_ != nullptr) {
+ CardId *cardSettings = presenter_->GetCardSettings();
+ /* page 与CardId 没有对应关系,需要一次转换 */
+ presenter_->SetTaskPeroid(cardSettings[page]);
+ }
}
- return playersView;
-}
-void MainViewSample::SetPage(int16_t page, bool loadAdjacent)
-{
- if (mainSwipeGroup != nullptr) {
- mainSwipeGroup->SetHorCurrentPage(page, loadAdjacent);
+ bool MainViewSample::IsMainClockPage(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::IsMainClockPage");
+ if (mainSwipeGroup->GetCurrentPageId(0) == mainClockView->GetViewIndex() &&
+ mainSwipeGroup->GetCurrentPageId(1) == 1)
+ { // 0: horizontal; 1: vertical
+ return true;
+ }
+ else
+ {
+ return false;
+ }
}
-
- if (presenter_ != nullptr) {
+ int MainViewSample::IsPullUpViewPage(void) {
+ //主界面->下拉界面
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::IsPullUpViewPage");
+ if (mainSwipeGroup->GetCurrentPageId(0) == mainClockView->GetViewIndex() &&
+ mainSwipeGroup->GetCurrentPageId(1) == 0)
+ {
+ return PULLUP;
+ }
+ //主界面->上拉界面
+ else if(mainSwipeGroup->GetCurrentPageId(0) == mainClockView->GetViewIndex() &&
+ mainSwipeGroup->GetCurrentPageId(1) == 2)
+ {
+ return DROPDOWN;
+ }
+ //其他狀態
+ return UNKOWNPAG;
+ }
+ CardId MainViewSample::GetHorCurrentCard() const
+ {
CardId *cardSettings = presenter_->GetCardSettings();
- /* page 与CardId 没有对应关系,需要一次转换 */
- presenter_->SetTaskPeroid(cardSettings[page]);
+ int pageId = mainSwipeGroup->GetCurrentPageId(UISwipeView::HORIZONTAL); // 0: horizontal; 1: vertical
+ /* pageId 与CardId 没有对应关系,需要一次转换 */
+ return cardSettings[pageId];
}
-}
-bool MainViewSample::IsMainClockPage(void)
-{
- if (mainSwipeGroup->GetCurrentPageId(0) == mainClockView->GetViewIndex() &&
- mainSwipeGroup->GetCurrentPageId(1) == 1) { // 0: horizontal; 1: vertical
- return true;
- } else {
- return false;
+ void MainViewSample::SwitchToCard(uint8_t cardId)
+ {
+ if ((cardId < MAX_CARD) && (recordCard[cardId] != nullptr))
+ {
+ SetPage(recordCard[cardId]->GetViewIndex());
+ }
+ else
+ {
+ SwitchToClockPage();
+ }
}
-}
-
-CardId MainViewSample::GetHorCurrentCard() const
-{
- CardId *cardSettings = presenter_->GetCardSettings();
- int pageId = mainSwipeGroup->GetCurrentPageId(UISwipeView::HORIZONTAL); // 0: horizontal; 1: vertical
- /* pageId 与CardId 没有对应关系,需要一次转换 */
- return cardSettings[pageId];
-}
-void MainViewSample::SwitchToCard(uint8_t cardId, bool loadAdjacent)
-{
- if ((cardId < MAX_CARD) && (recordCard[cardId] != nullptr)) {
- SetPage(recordCard[cardId]->GetViewIndex(), loadAdjacent);
- } else {
- SwitchToClockPage(loadAdjacent);
+ void MainViewSample::HandOnKeyEventSwitchMainPullDownView(void)
+ {
+ if(dropDownView)
+ {
+ dropDownView->HandOnKeyEventSwitchMainPullDownView();
+ }
}
}
-
-}
return;
}
- bool isCharging = get_charge_stat(); // 获取充电状态
+ // bool isCharging = get_charge_stat(); // 获取充电状态
+ bool isCharging = true;
if (isCharging)
{