${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/training_card/src/TrainingControlView.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/training_card/src/TrainingDataView.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/training_card/src/TrainingDetailView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/training_card/src/TraingDataAllView.cpp
#训练记录
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traingrecord/src/TraingRecordView.cpp
return;
}
// 计步数据累加
- uint32 counter =0;// OHOS::ActivityModel::GetInstance()->GetStepCounter();
+ uint32_t counter =
+ 0; // OHOS::ActivityModel::GetInstance()->GetStepCounter();
counter = *(uint32_t *)request->data;
set_step_data(counter);
counter = get_step_data();//*(uint32_t *)request->data;
* @Date: 2024-03-01 15:10:34
* @LastEditors: luozheng 1732036298@qq.com
* @LastEditTime: 2024-09-03 17:53:43
- * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/main/include/MainPresenterSample.h
+ * @FilePath:
+ * /FD230/code/sdk/application/wearable/fd230app/nativeui/main/include/MainPresenterSample.h
*/
#ifndef MAIN_PRESENTER_SAMPLE_H
#define MAIN_PRESENTER_SAMPLE_H
-#include "Presenter.h"
-#include "ModelListenerSample.h"
-#include "components/root_view.h"
+#include "HeartRateView.h"
#include "KeyInputListener.h"
-#include "drag_event.h"
-#include "MainViewSample.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 "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_WEATHER = "mainclickweather";
- 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"; // 设置卡片
+namespace OHOS {
+static constexpr const char *MAIN_CLICK_WEATHER = "mainclickweather";
+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_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 *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 *CONNECTEDSTATUSBACKGROUNDBUTTON =
+ "connectedstatusbackgroundbutton"; // 连接状态按钮
+static constexpr const char *CONNECTEDSTATUSVIEWCLOSEBUTTON =
+ "connectedstatusviewclosebutton"; // 连接状态视图的关闭按钮
- constexpr uint16_t VERTICAL_STATUS = 1;
- constexpr uint16_t HORIZONTAL_STATUS = 0;
+constexpr uint16_t VERTICAL_STATUS = 1;
+constexpr uint16_t HORIZONTAL_STATUS = 0;
- class MainViewSample;
- class MainPresenterSample : public Presenter<MainViewSample>, public ModelListenerSample, public UIView::OnClickListener, public UIView::OnDragListener, public UISwipeView::OnSwipeListener, public UIView::OnLongPressListener, public UISwipeView, public CompassPresenter
- {
- public:
- MainPresenterSample();
- ~MainPresenterSample() override;
- static MainPresenterSample *GetInstance(void);
+class MainViewSample;
+class MainPresenterSample : public Presenter<MainViewSample>,
+ public ModelListenerSample,
+ public UIView::OnClickListener,
+ public UIView::OnDragListener,
+ public UISwipeView::OnSwipeListener,
+ public UIView::OnLongPressListener,
+ public UISwipeView,
+ public CompassPresenter {
+public:
+ MainPresenterSample();
+ ~MainPresenterSample() override;
+ static MainPresenterSample *GetInstance(void);
- void OnStart() override;
- void OnPause() override;
- void OnResume() override;
- void OnStop() override;
- void Notify() override;
- bool OnClick(UIView &view, const ClickEvent &event) override;
- bool OnDrag(UIView &view, const DragEvent &event) override;
- bool OnLongPress(UIView &view, const LongPressEvent &event) override;
- void OnSwipe(UISwipeView &view) override;
- void SetPage(int8_t id);
- void SetTaskPeroid(CardId cardId);
- void setCallback(ZoomEffect *callback)
- {
- callback_ = callback;
- }
+ void OnStart() override;
+ void OnPause() override;
+ void OnResume() override;
+ void OnStop() override;
+ void Notify() override;
+ bool OnClick(UIView &view, const ClickEvent &event) override;
+ bool OnDrag(UIView &view, const DragEvent &event) override;
+ bool OnLongPress(UIView &view, const LongPressEvent &event) override;
+ void OnSwipe(UISwipeView &view) override;
+ void SetPage(int8_t id);
+ void SetTaskPeroid(CardId cardId);
+ void setCallback(ZoomEffect *callback) { callback_ = callback; }
- 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 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();
+ void get_memcheck();
- bool IsFromSetCardView(void) const;
- void SetFromSetCardView(bool isFrom);
- uint8_t GetFromCardId(void);
+ bool IsFromSetCardView(void) const;
+ void SetFromSetCardView(bool isFrom);
+ uint8_t GetFromCardId(void);
- private:
- void LogCardTransition(CardId previous, CardId current);
- void ResetSleepCardView();
- void ResetWeatherCardView();
- void ResetgoalCardView();
- void StartHeartRateDetection();
- void UpdateWatchFace();
- void UpdateWeather();
- void Updategoal();
- void ProcessDataNotify(void);
- void SetCircleProgress(void);
- void SetCompassRotate(void);
- KeyInputListener *keyActListener_{nullptr};
- ZoomEffect *callback_{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};
- };
+private:
+ void LogCardTransition(CardId previous, CardId current);
+ void ResetSleepCardView();
+ void ResetWeatherCardView();
+ void ResetgoalCardView();
+ void StartHeartRateDetection();
+ void UpdateWatchFace();
+ void UpdateWeather();
+ void Updategoal();
+ void ProcessDataNotify(void);
+ void SetCircleProgress(void);
+ void SetCompassRotate(void);
+ KeyInputListener *keyActListener_{nullptr};
+ ZoomEffect *callback_{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};
+};
}
#endif // MAIN_PRESENTER_H
return &instance;
}
bool GetDialFloatData(DialDataType &type, float &out) override;
- void UpdateDistance(int16_t Distance);
+ void UpdateDistance(uint32_t Distance);
int GetDistanceData(void);
private:
return &instance;
}
bool GetDialFloatData(DialDataType& type, float& out) override;
- void UpdateSteps(int16_t steps);
+ void UpdateSteps(uint32_t steps);
-private:
+ private:
float steps_ = 0; // 11520.0: default step value as reference
};
}
return true;
}
- void DialModelDistance::UpdateDistance(int16_t distance)
- {
- // 将距离从米(m)转换为公里(km)并保留一位小数
- distance_ = static_cast<float>(distance) / 1000.0f; // distance 米
+ void DialModelDistance::UpdateDistance(uint32_t distance) {
+ // 将距离从米(m)转换为公里(km)并保留一位小数
+ distance_ = static_cast<float>(distance) / 1000.0f; // distance 米
- if (onChangeListener_ != nullptr)
- {
- // 通知改变监听器更新距离数据
- onChangeListener_->OnDialFloatDataUpdate(DialDataType::DATA_TYPE_DISTANCE, distance_);
- }
+ if (onChangeListener_ != nullptr) {
+ // 通知改变监听器更新距离数据
+ onChangeListener_->OnDialFloatDataUpdate(
+ DialDataType::DATA_TYPE_DISTANCE, distance_);
+ }
}
}
return true;
}
-void DialModelSteps::UpdateSteps(int16_t steps)
-{
- steps_ = static_cast<float>(steps);
- if(onChangeListener_ != nullptr) {
- onChangeListener_->OnDialFloatDataUpdate(DialDataType::DATA_TYPE_STEPS, steps_);
- }
+void DialModelSteps::UpdateSteps(uint32_t steps) {
+ steps_ = static_cast<float>(steps);
+ if (onChangeListener_ != nullptr) {
+ onChangeListener_->OnDialFloatDataUpdate(DialDataType::DATA_TYPE_STEPS,
+ steps_);
+ }
}
}
uint64_t startTime{0};\r
int count = 3; // 初始计数\r
int progressValue = 0; // 初始进度值\r
+ uint16_t drag_x = 0;\r
+ uint16_t drag_y = 0;\r
};\r
\r
} // namespace OHOS\r
-/***\r
- * @Date: 2024-04-15 10:55:58\r
- * @LastEditors: Caisking 3449750381@qq.com\r
- * @LastEditTime: 2024-08-20 16:29:53\r
- * @FilePath:\r
- * /FD230/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveBatPresenter.cpp\r
- */\r
-/***\r
- * @Date: 2024-04-15 10:55:58\r
- * @LastEditors: Caisking 3449750381@qq.com\r
- * @LastEditTime: 2024-08-20 16:28:11\r
- * @FilePath:\r
- * /FD230/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveBatPresenter.cpp\r
- */\r
-/***\r
- * @Date: 2024-04-15 10:55:58\r
- * @LastEditors: Caisking 3449750381@qq.com\r
- * @LastEditTime: 2024-08-17 15:08:53\r
- * @FilePath:\r
- * /FD230/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveBatPresenter.cpp\r
- */\r
\r
#include "AppViewIDs.h"\r
#include "KeyInputListener.h"\r
return g_pSaveBatPresenter;\r
}\r
\r
-void SaveBatPresenter::OnStart() { Presenter<SaveBatView>::OnStart(); }\r
+/*\r
+ void enable_drag(uint8_t direction, uint8_t enable);\r
+ void set_drag_limit(uint8_t direction, uint16_t limit);\r
+ uint16_t get_drag_limit(uint8_t direction);\r
+*/\r
+void SaveBatPresenter::OnStart() {\r
+ Presenter<SaveBatView>::OnStart();\r
+ // 1.获取原drag\r
+ drag_x = get_drag_limit(0);\r
+ drag_y = get_drag_limit(1);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "drag_x:%d,drag_y:%d", drag_x, drag_y);\r
+ // 2.设置drag\r
+ enable_drag(0, 0);\r
+ enable_drag(1, 0);\r
+}\r
\r
void SaveBatPresenter::OnPause(void) { Presenter<SaveBatView>::OnPause(); }\r
\r
void SaveBatPresenter::OnStop(void) {\r
SaveEleModel::GetInstance()->SetViewState(false);\r
Presenter<SaveBatView>::OnStop();\r
+ ///回退darg设置\r
+ enable_drag(0, 1);\r
+ enable_drag(1, 1);\r
}\r
\r
bool SaveBatPresenter::OnPress(UIView &view, const PressEvent &event) {\r
* @Date: 2024-04-15 10:55:58
* @LastEditors: Caisking 3449750381@qq.com
* @LastEditTime: 2024-04-25 10:32:38
- * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingEnddataView.h
+ * @FilePath:
+ * /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingEnddataView.h
*/
/***
* @Date: 2024-04-15 10:55:58
* @LastEditors: Caisking 3449750381@qq.com
* @LastEditTime: 2024-04-16 09:27:11
- * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingEnddataView.h
+ * @FilePath:
+ * /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingEnddataView.h
*/
#ifndef _TraingEnddata_VIEW_H
#define _TraingEnddata_VIEW_H
#include "BaseView.h"
#include "View.h"
-#include <ui_scroll_view.h>
-#include "components/ui_view_group.h"
-#include "components/ui_label.h"
-#include "components/ui_label_ext.h"
-#include "components/ui_image_view.h"
+#include "components/icon_adapter.h"
#include "components/ui_button.h"
+#include "components/ui_card_page.h"
+#include "components/ui_chart.h"
#include "components/ui_image_animator.h"
+#include "components/ui_image_view.h"
+#include "components/ui_label.h"
#include "components/ui_label_button_ext.h"
-#include "components/ui_chart.h"
+#include "components/ui_label_ext.h"
#include "components/ui_list.h"
-#include "components/icon_adapter.h"
-#include "wearable_log.h"
+#include "components/ui_view_group.h"
#include "ohos_types.h"
-#include "components/ui_card_page.h"
+#include "wearable_log.h"
+#include <ui_scroll_view.h>
+#include "TraingEnddataPresenter.h"
+#include "traing/Training_UiConfig.h"
#include "traing/include/TraingModel.h"
#include "uicomponents/UIComponents.h"
-#include "traing/Training_UiConfig.h"
-#include "TraingEnddataPresenter.h"
-namespace OHOS
-{
+namespace OHOS {
#define BUTTONBACK "button1"
- class TraingEnddataPresenter;
- class TraingEnddataView : public View<TraingEnddataPresenter>
- {
+class TraingEnddataPresenter;
+class TraingEnddataView : public View<TraingEnddataPresenter> {
- public:
- TraingEnddataView();
- virtual ~TraingEnddataView();
- static TraingEnddataView *GetInstance(void);
+public:
+ TraingEnddataView();
+ virtual ~TraingEnddataView();
+ static TraingEnddataView *GetInstance(void);
- void OnStart() override;
- void OnSetUpView() override;
- void OnTearDownView() override;
- void OnStop() override;
- void InitView();
- void DeInit();
+ void OnStart() override;
+ void OnSetUpView() override;
+ void OnTearDownView() override;
+ void OnStop() override;
+ void InitView();
+ void DeInit();
- void PreLoad(void);
+ void PreLoad(void);
- void InitData(void);
- void InitializeImageViews(void);
- void InitializeLabels(void);
- void SetLabelsTextColor(const std::vector<UILabel *> &labels, OHOS::ColorType color);
- void AddLabelsToScrollView(const std::vector<UILabel *> &labels);
- void InitializeExitControls(void);
+ void InitData(void);
+ void InitializeImageViews(void);
+ void InitializeLabels(void);
+ void SetLabelsTextColor(const std::vector<UILabel *> &labels,
+ OHOS::ColorType color);
+ void AddLabelsToScrollView(const std::vector<UILabel *> &labels);
+ void InitializeExitControls(void);
- void BonusdataView();
- void ExitView();
+ void BonusdataView();
+ void ExitView();
- private:
- UIView::OnDragListener *draglistener{nullptr};
- TraingEnddataView(TraingEnddataView &&) = delete;
- TraingEnddataView &operator=(TraingEnddataView &&) = delete;
+private:
+ UIView::OnDragListener *draglistener{nullptr};
+ TraingEnddataView(TraingEnddataView &&) = delete;
+ TraingEnddataView &operator=(TraingEnddataView &&) = delete;
- UIViewGroup *container_ = nullptr;
- UIScrollView *scrollView_ = nullptr;
+ UIViewGroup *container_ = nullptr;
+ UIScrollView *scrollView_ = nullptr;
- UILabelExt *labelutime = nullptr; // u训练时间
- UILabelExt *labelutag = nullptr; // u训练完成度
- UILabelExt *labelumile = nullptr; // u训练距离
- UILabelExt *labeluheart = nullptr; // u训练平均心率
- UILabelExt *labelustrong = nullptr; // u训练强度
- UILabelExt *labelusteps = nullptr; // u训练步数
- UILabelExt *labeluavpace = nullptr; // u训练平均配速
- UILabelExt *labelufreq = nullptr; // u训练步频
- UILabelExt *labelustride = nullptr; // u训练步幅
+ UILabelExt *labelutime = nullptr; // u训练时间
+ UILabelExt *labelutag = nullptr; // u训练完成度
+ UILabelExt *labelumile = nullptr; // u训练距离
+ UILabelExt *labeluheart = nullptr; // u训练平均心率
+ UILabelExt *labelustrong = nullptr; // u训练强度
+ UILabelExt *labelusteps = nullptr; // u训练步数
+ UILabelExt *labeluavpace = nullptr; // u训练平均配速
+ UILabelExt *labelufreq = nullptr; // u训练步频
+ UILabelExt *labelustride = nullptr; // u训练步幅
+ UILabelExt *labelucalorie = nullptr; // u训练卡路里
- UILabelExt *labeltype = nullptr; // 训练类型
- UILabelExt *labelsport = nullptr; // 训练项
- UILabelExt *labelduration = nullptr; // 训练时间
- UILabelExt *labeltag = nullptr; // 训练目标完成度
- UILabelExt *labeltime = nullptr; // 训练时长
- UILabelExt *labelmile = nullptr; // 训练距离
- UILabelExt *labelheart = nullptr; // 训练平均心率
- UILabelExt *labelstrong = nullptr; // 训练强度
- UILabelExt *labelsteps = nullptr; // 训练步数
- UILabelExt *labelavpace = nullptr; // 训练平均配速
- UILabelExt *labelfreq = nullptr; // 训练步频
- UILabelExt *labelstride = nullptr; // 训练步幅
+ UILabelExt *labeltype = nullptr; // 训练类型
+ UILabelExt *labelsport = nullptr; // 训练项
+ UILabelExt *labelduration = nullptr; // 训练时间
+ UILabelExt *labeltag = nullptr; // 训练目标完成度
+ UILabelExt *labeltime = nullptr; // 训练时长
+ UILabelExt *labelmile = nullptr; // 训练距离
+ UILabelExt *labelheart = nullptr; // 训练平均心率
+ UILabelExt *labelstrong = nullptr; // 训练强度
+ UILabelExt *labelsteps = nullptr; // 训练步数
+ UILabelExt *labelavpace = nullptr; // 训练平均配速
+ UILabelExt *labelfreq = nullptr; // 训练步频
+ UILabelExt *labelstride = nullptr; // 训练步幅
+ UILabelExt *labelcalories = nullptr; // 训练卡路里
- UILabelExt *exitLabel = nullptr; // APP提醒
- UILabelButtonExt *exitButton = nullptr; // 返回按键
+ UILabelExt *exitLabel = nullptr; // APP提醒
+ UILabelButtonExt *exitButton = nullptr; // 返回按键
- UIImageView *imageIcon = nullptr;
- UIImageView *imageLine2 = nullptr;
- UIImageView *imageLine3 = nullptr;
- UIImageView *imageLine4 = nullptr;
- UIImageView *imageLine5 = nullptr;
- UIImageView *imageLine6 = nullptr;
- UIImageView *imageLine7 = nullptr;
- UIImageView *imageLine8 = nullptr;
- UIImageView *imageLine9 = nullptr;
- UIImageView *imageLine10 = nullptr;
+ UIImageView *imageIcon = nullptr;
+ UIImageView *imageLine2 = nullptr;
+ UIImageView *imageLine3 = nullptr;
+ UIImageView *imageLine4 = nullptr;
+ UIImageView *imageLine5 = nullptr;
+ UIImageView *imageLine6 = nullptr;
+ UIImageView *imageLine7 = nullptr;
+ UIImageView *imageLine8 = nullptr;
+ UIImageView *imageLine9 = nullptr;
+ UIImageView *imageLine10 = nullptr;
+ UIImageView *imageLine11 = nullptr;
+ UIImageView *imageLine12 = nullptr;
- bool viewiInitStatus{false};
- };
+ bool viewiInitStatus{false};
+};
} // namespace OHOS
#endif // TraingEnddata_PRESENTER_H
#include "traing/include/TraingEnddataView.h"
-#include "common/image_cache_manager.h"
-#include "components/ui_label_ext.h"
-#include "ui_resource_string.h"
#include "UiConfig.h"
-#include "ui_resource_image.h"
-#include <ui_scroll_view.h>
+#include "common/image_cache_manager.h"
#include "components/ui_button.h"
+#include "components/ui_label_ext.h"
+#include "traing/Training_UiConfig.h"
#include "traing/include/TraingModel.h"
+#include "ui_resource_image.h"
+#include "ui_resource_string.h"
#include "uicomponents/UIComponents.h"
-#include "traing/Training_UiConfig.h"
-#include <cmath> // 包含数学函数库,用于四舍五入
-#include <string> // 包含字符串处理库,用于使用 std::to_string
+#include <cmath> // 包含数学函数库,用于四舍五入
+#include <iostream>
+#include <sstream> // 用于 std::ostringstream
+#include <string> // 包含字符串处理库,用于使用 std::to_string
+#include <ui_scroll_view.h>
/*测试打印函数*/
-#define PRINT_LINE_INFO() WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "File: %s, Line: %d\r\n", __FILE__, __LINE__)
-#define PRINT_FUNCTION_LINE() WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Function: %s, Line: %d\r\n", __FUNCTION__, __LINE__)
-
+#define PRINT_LINE_INFO() \
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "File: %s, Line: %d\r\n", __FILE__, \
+ __LINE__)
+#define PRINT_FUNCTION_LINE() \
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Function: %s, Line: %d\r\n", \
+ __FUNCTION__, __LINE__)
+
+/*
+ 普通运动:
+ 时长,平均心率,训练强度,卡路里,目标完成度
+ 算法支持运动:
+ 时长,平均心率,训练强度,卡路里,
+ 距离,步数,平均配速,步幅,步频,目标完成度
+*/
#define UI_UPDATA 0
-namespace OHOS
-{
+namespace OHOS {
- static const int startY_Unit = 252;
- static const int startY_Value = 292;
- static const int labelHeight = 40;
- static const int labelInterval = 130;
- ColorType textColor = Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f);
+static const int startY_Unit = 252;
+static const int startY_Value = 292;
+static const int labelHeight = 40;
+static const int labelInterval = 130;
+ColorType textColor = Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f);
- static const int initialY = 132;
- static const int lineHeight = 130;
- static const int iconHeight = 80;
- static const int verticalOffset = 2;
- static const int baseY = 214;
+static const int initialY = 132;
+static const int lineHeight = 130;
+static const int iconHeight = 80;
+static const int verticalOffset = 2;
+static const int baseY = 214;
- static TraingEnddataView *g_pTraingEnddataView{nullptr};
+static TraingEnddataView *g_pTraingEnddataView{nullptr};
- TraingEnddataView::TraingEnddataView()
- {
- g_pTraingEnddataView = this;
- }
+TraingEnddataView::TraingEnddataView() { g_pTraingEnddataView = this; }
- TraingEnddataView::~TraingEnddataView()
- {
- // DeInit();
- UIViewGroup *tmpGroup = dynamic_cast<UIViewGroup *>(container_);
- UIViewGroup::RemoveAndDeleteAllRecursively(tmpGroup);
+TraingEnddataView::~TraingEnddataView() {
+ // DeInit();
+ scrollView_->RemoveAll();
- g_pTraingEnddataView = nullptr;
- }
+ UIViewGroup *tmpGroup = dynamic_cast<UIViewGroup *>(container_);
+ UIViewGroup::RemoveAndDeleteAllRecursively(tmpGroup);
- TraingEnddataView *TraingEnddataView::GetInstance()
- {
+ g_pTraingEnddataView = nullptr;
+}
- return g_pTraingEnddataView;
- }
+TraingEnddataView *TraingEnddataView::GetInstance() {
- // 初始化图像
- void TraingEnddataView ::InitializeImageViews()
- {
- // 初始化主图标
- InitImageView(imageIcon, 80, initialY, 54, iconHeight, "image", WALKING_54_IMAGE);
-
- InitImageView(imageLine2, 97, baseY, 80, 20, "image2", LINE_IMAGE); // imageLine2
- InitImageView(imageLine3, 97, baseY + lineHeight, 80, 20, "image3", LINE_IMAGE); // imageLine3
- InitImageView(imageLine4, 97, baseY + 2 * lineHeight, 80, 20, "image4", LINE_IMAGE); // imageLine4
- InitImageView(imageLine5, 97, baseY + 3 * lineHeight, 80, 20, "image5", LINE_IMAGE); // imageLine5
- scrollView_->Add(imageLine2);
- scrollView_->Add(imageLine3);
- scrollView_->Add(imageLine4);
- scrollView_->Add(imageLine5);
- scrollView_->Add(imageIcon);
-
-#if UI_UPDATA
- InitImageView(imageLine6, 97, baseY + 4 * lineHeight, 80, 20, "image6", LINE_IMAGE); // imageLine6
- InitImageView(imageLine7, 97, baseY + 5 * lineHeight, 80, 20, "image7", LINE_IMAGE); // imageLine7
- scrollView_->Add(imageLine6);
- scrollView_->Add(imageLine7);
-#endif
- }
- void TraingEnddataView ::InitializeLabels(void)
- {
- /*title and sport*/
- InitRollLabel(labeltype, 83, 50, 300, 35, "label1", STR_EXERCISE_LIST, DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitLabel(labelsport, 147, 140, 240, 35, "label6", "健走", DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitLabel(labelduration, 146, 179, 240, 40, "label7", "13:00:22-15:00:12", DEFAULT_VECTOR_FONT_FILENAME, 28);
-
- // 初始化单位Label
- InitRollLabel(labelutag, 146, startY_Unit + labelInterval * 0, 240, 40, "label8", STR_GOAL_ACCOMPLISHMENT_DEGREE, DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitRollLabel(labelutime, 146, startY_Unit + labelInterval * 1, 240, 40, "label9", STR_TRAINING_DURATION, DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitRollLabel(labeluheart, 146, startY_Unit + labelInterval * 2, 240, 40, "label11", STR_MEAN_HEART_RATE_MIN, DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitRollLabel(labelustrong, 146, startY_Unit + labelInterval * 3, 240, 40, "label2", STR_TRAINING_INTENSITY, DEFAULT_VECTOR_FONT_FILENAME, 30);
-
- // 设置文本颜色
- labelduration->SetTextColor(textColor);
- labelutag->SetTextColor(textColor);
- labelutime->SetTextColor(textColor);
- labeluheart->SetTextColor(textColor);
- labelustrong->SetTextColor(textColor);
-
- // 初始化值
- InitLabel(labeltag, 146, startY_Value + 0 * labelInterval, 240, 60, "label18", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
- labeltag->SetTextColor(Color::Green());
- InitLabel(labeltime, 146, startY_Value + 1 * labelInterval, 240, 60, "label14", "00:00:00", DEFAULT_VECTOR_FONT_FILENAME, 40);
- labeltime->SetTextColor(Color::Red());
- InitLabel(labelheart, 146, startY_Value + 2 * labelInterval, 240, 60, "label16", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
- labelheart->SetTextColor(Color::Yellow());
- InitLabel(labelstrong, 146, startY_Value + 3 * labelInterval, 240, 60, "label17", "中等强度", DEFAULT_VECTOR_FONT_FILENAME, 30);
- labelstrong->SetTextColor(Color::Red());
-
- scrollView_->Add(labeltype);
- scrollView_->Add(labelsport);
- scrollView_->Add(labeltime);
- scrollView_->Add(labelutag);
- scrollView_->Add(labelutime);
- scrollView_->Add(labeluheart);
- scrollView_->Add(labelustrong);
-
- scrollView_->Add(labeltag);
- scrollView_->Add(labelduration);
- scrollView_->Add(labelheart);
- scrollView_->Add(labelstrong);
-
-#if UI_UPDATA
- InitRollLabel(labelumile, 146, startY_Unit + labelInterval * 2, 240, 40, "label10", STR_RANGE_MILE, DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitRollLabel(labelusteps, 146, startY_Unit + labelInterval * 4, 240, 40, "label12", STR_STEP_NUMBER, DEFAULT_VECTOR_FONT_FILENAME, 30);
- labelumile->SetTextColor(textColor);
- labelusteps->SetTextColor(textColor);
-
- InitLabel(labelmile, 146, startY_Value + 2 * labelInterval, 240, 60, "label15", "8,301", DEFAULT_VECTOR_FONT_FILENAME, 40);
- labelmile->SetTextColor(Color::Blue());
- InitLabel(labelsteps, 146, startY_Value + 4 * labelInterval, 240, 60, "label16", "5000", DEFAULT_VECTOR_FONT_FILENAME, 40);
- labelsteps->SetTextColor(Color::Green());
-
- scrollView_->Add(labelumile);
- scrollView_->Add(labelusteps);
- scrollView_->Add(labelmile);
- scrollView_->Add(labelsteps);
-#endif
- }
- /* InitView:初始化界面*/
- void TraingEnddataView ::InitView()
- {
+ return g_pTraingEnddataView;
+}
+
+// 初始化图像
+void TraingEnddataView ::InitializeImageViews() {
+ // 初始化主图标
+ InitImageView(imageIcon, 80, initialY, 54, iconHeight, "image",
+ WALKING_54_IMAGE);
+
+ InitImageView(imageLine2, 97, baseY, 80, 20, "image2",
+ LINE_IMAGE); // imageLine2
+ InitImageView(imageLine3, 97, baseY + lineHeight, 80, 20, "image3",
+ LINE_IMAGE); // imageLine3
+ InitImageView(imageLine4, 97, baseY + 2 * lineHeight, 80, 20, "image4",
+ LINE_IMAGE); // imageLine4
+ InitImageView(imageLine5, 97, baseY + 3 * lineHeight, 80, 20, "image5",
+ LINE_IMAGE); // imageLine5
+
+ bool isincludeTag = TraingModel::GetInstance()->GetSportTag();
+ if (isincludeTag) {
+ InitImageView(imageLine6, 97, baseY + 4 * lineHeight, 80, 20, "image7",
+ LINE_IMAGE);
+ scrollView_->Add(imageLine6);
+ }
+
+ scrollView_->Add(imageLine2);
+ scrollView_->Add(imageLine3);
+ scrollView_->Add(imageLine4);
+ scrollView_->Add(imageLine5);
+
+ scrollView_->Add(imageIcon);
+}
+/*
+ InitView:初始化界面
+
+ 普通运动:
+ 时长,平均心率,训练强度,卡路里,目标完成度
+ 算法支持运动:
+ 时长,平均心率,训练强度,卡路里,目标完成度
+ 距离,步数,平均配速,步幅,步频,
+
+ 蓝色:距离、平均配速
+ 黄色:训练时长
+ 橙色:平均心率、训练强度
+ 绿色:步数,步幅,步频,平均配速,卡路里,目标完成度
+*/
+void TraingEnddataView ::InitializeLabels() {
+
+ /*title and sport*/
+ InitRollLabel(labeltype, 83, 50, 300, 35, "label1", STR_EXERCISE_LIST,
+ DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabel(labelsport, 147, 140, 240, 35, "label6", "健走",
+ DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabel(labelduration, 146, 179, 240, 40, "label7", "13:00:22-15:00:12",
+ DEFAULT_VECTOR_FONT_FILENAME, 28);
+ // 初始化Label
+ //时长
+ InitRollLabel(labelutime, 146, startY_Unit + labelInterval * 0, 240, 40,
+ "label8", STR_TRAINING_DURATION, DEFAULT_VECTOR_FONT_FILENAME,
+ 30);
+ InitLabel(labeltime, 146, startY_Value + 0 * labelInterval, 240, 60,
+ "label14", "00:00:00", DEFAULT_VECTOR_FONT_FILENAME, 40);
+ labeltime->SetTextColor(Color::Yellow());
+ //平均心率
+ InitRollLabel(labeluheart, 146, startY_Unit + labelInterval * 1, 240, 40,
+ "label9", STR_MEAN_HEART_RATE_MIN, DEFAULT_VECTOR_FONT_FILENAME,
+ 30);
+ InitLabel(labelheart, 146, startY_Value + 1 * labelInterval, 240, 60,
+ "label16", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
+ labelheart->SetTextColor(Color::Orange());
+ // 训练强度
+ InitRollLabel(labelustrong, 146, startY_Unit + labelInterval * 2, 240, 40,
+ "label11", STR_TRAINING_INTENSITY, DEFAULT_VECTOR_FONT_FILENAME,
+ 30);
+ InitLabel(labelstrong, 146, startY_Value + 2 * labelInterval, 240, 60,
+ "label17", "中等强度", DEFAULT_VECTOR_FONT_FILENAME, 30);
+ labelstrong->SetTextColor(Color::Orange());
+ //卡路里
+ InitRollLabel(labelucalorie, 146, startY_Unit + labelInterval * 3, 240, 40,
+ "label2", STR_CALORIE_SETTING, DEFAULT_VECTOR_FONT_FILENAME,
+ 30);
+ InitLabel(labelcalories, 146, startY_Value + 3 * labelInterval, 240, 60,
+ "label15", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
+ labelcalories->SetTextColor(Color::Green());
+
+ //目标完成度
+ bool isincludeTag = TraingModel::GetInstance()->GetSportTag();
+ if (isincludeTag) {
+ InitRollLabel(labelutag, 146, startY_Unit + labelInterval * 4, 240, 40,
+ "label10", STR_GOAL_ACCOMPLISHMENT_DEGREE,
+ DEFAULT_VECTOR_FONT_FILENAME, 30);
+ labelutag->SetTextColor(textColor);
+ InitLabel(labeltag, 146, startY_Value + 4 * labelInterval, 240, 60,
+ "label18", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
+ labeltag->SetTextColor(Color::Green());
+ scrollView_->Add(labelutag);
+ scrollView_->Add(labeltag);
+ }
+
+ // 设置文本颜色
+ labelduration->SetTextColor(textColor);
+ labelutime->SetTextColor(textColor);
+ labeluheart->SetTextColor(textColor);
+ labelustrong->SetTextColor(textColor);
+ labelucalorie->SetTextColor(textColor);
+
+ scrollView_->Add(labeltype);
+ scrollView_->Add(labelsport);
+ scrollView_->Add(labeltime);
+
+ scrollView_->Add(labelutime);
+ scrollView_->Add(labeluheart);
+ scrollView_->Add(labelustrong);
+ scrollView_->Add(labelucalorie);
+
+ scrollView_->Add(labelduration);
+ scrollView_->Add(labelheart);
+ scrollView_->Add(labelstrong);
+ scrollView_->Add(labelcalories);
+}
+// 增加额外配置
+void TraingEnddataView::BonusdataView() {
+ if (!TraingModel::GetInstance()->GetIsSpecial())
+ return;
+
+ bool isincludeTag = TraingModel::GetInstance()->GetSportTag();
+ int tagflge = isincludeTag ? 1 : 0;
+
+ // 初始化线条
+
+ InitImageView(imageLine8, 97, baseY + (4 + tagflge) * lineHeight, 80, 20,
+ "image8", LINE_IMAGE); // imageLine8
+ InitImageView(imageLine9, 97, baseY + (5 + tagflge) * lineHeight, 80, 20,
+ "image9", LINE_IMAGE); // imageLine9
+ InitImageView(imageLine10, 97, baseY + (6 + tagflge) * lineHeight, 80, 20,
+ "image10", LINE_IMAGE); // imageLine10
+ InitImageView(imageLine11, 97, baseY + (7 + tagflge) * lineHeight, 80, 20,
+ "image11", LINE_IMAGE);
+ InitImageView(imageLine12, 97, baseY + (8 + tagflge) * lineHeight, 80, 20,
+ "image7", LINE_IMAGE);
+
+ scrollView_->Add(imageLine8);
+ scrollView_->Add(imageLine9);
+ scrollView_->Add(imageLine10);
+ scrollView_->Add(imageLine11);
+ scrollView_->Add(imageLine12);
+
+ // 初始化标签
+ // 距离
+ InitRollLabel(labelumile, 146, startY_Unit + labelInterval * (4 + tagflge),
+ 240, 40, "label10", STR_RANGE_MILE,
+ DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabel(labelmile, 146, startY_Value + (4 + tagflge) * labelInterval, 240,
+ 60, "label15", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
+ labelumile->SetTextColor(textColor);
+ labelmile->SetTextColor(Color::Blue());
+
+ // 步数
+ InitRollLabel(labelusteps, 146, startY_Unit + labelInterval * (5 + tagflge),
+ 240, 40, "label12", STR_STEP_NUMBER,
+ DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabel(labelsteps, 146, startY_Value + (5 + tagflge) * labelInterval, 240,
+ 60, "label17", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
+ labelusteps->SetTextColor(textColor);
+ labelsteps->SetTextColor(Color::Green());
+
+ // 平均配速
+ InitRollLabel(labeluavpace, 146, startY_Unit + labelInterval * (6 + tagflge),
+ 240, 40, "label2", STR_AVG_PACE, DEFAULT_VECTOR_FONT_FILENAME,
+ 30);
+ InitLabel(labelavpace, 146, startY_Value + (6 + tagflge) * labelInterval, 240,
+ 60, "label17", "--", DEFAULT_VECTOR_FONT_FILENAME, 40);
+ labeluavpace->SetTextColor(textColor);
+ labelavpace->SetTextColor(Color::Green());
+
+ // 步幅
+ InitRollLabel(labelustride, 146, startY_Unit + labelInterval * (7 + tagflge),
+ 240, 40, "label2", STR_STEP_LENGTH,
+ DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabel(labelstride, 146, startY_Value + (7 + tagflge) * labelInterval, 240,
+ 60, "label17", "77", DEFAULT_VECTOR_FONT_FILENAME, 40);
+ labelustride->SetTextColor(textColor);
+ labelstride->SetTextColor(Color::Green());
+
+ // 步频
+ InitRollLabel(labelufreq, 146, startY_Unit + labelInterval * (8 + tagflge),
+ 240, 40, "label2", STR_STEP_FREQUENCY,
+ DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabel(labelfreq, 146, startY_Value + (8 + tagflge) * labelInterval, 240,
+ 60, "label17", "154", DEFAULT_VECTOR_FONT_FILENAME, 40);
+ labelufreq->SetTextColor(textColor);
+ labelfreq->SetTextColor(Color::Green());
+
+ scrollView_->Add(labelumile);
+ scrollView_->Add(labelmile);
+ scrollView_->Add(labelusteps);
+ scrollView_->Add(labelsteps);
+ scrollView_->Add(labeluavpace);
+ scrollView_->Add(labelavpace);
+ scrollView_->Add(labelustride);
+ scrollView_->Add(labelstride);
+ scrollView_->Add(labelufreq);
+ scrollView_->Add(labelfreq);
+}
+// 配置退出相关位置
+void TraingEnddataView::ExitView() {
+
+ bool isincludeTag = TraingModel::GetInstance()->GetSportTag();
+ int tagflge = isincludeTag ? 1 : 0;
+
+ if (TraingModel::GetInstance()->GetIsSpecial()) {
+ // 初始化退出(最后 要根据前方配置设置位置)
+ // 是否为特殊运动
+ // 是否包含目标
+ InitRollLabel(exitLabel, 80,
+ (startY_Value + labelInterval * (8 + tagflge) + 100), 300, 40,
+ "label8", STR_MORE_APP, DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitButtonExt(exitButton, 42,
+ (startY_Value + labelInterval * (8 + tagflge) + 160), 380,
+ 100, BUTTONBACK, STR_CLOSE, 30);
+ } else {
+ InitRollLabel(exitLabel, 80,
+ (startY_Value + labelInterval * (3 + tagflge) + 100), 300, 40,
+ "label8", STR_MORE_APP, DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitButtonExt(exitButton, 42,
+ (startY_Value + labelInterval * (3 + tagflge) + 160), 380,
+ 100, BUTTONBACK, STR_CLOSE, 30);
+ }
+ exitLabel->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f));
+ scrollView_->Add(exitLabel);
+ exitButton->SetOnClickListener(presenter_);
+ scrollView_->Add(exitButton);
+}
+void TraingEnddataView ::InitView() {
- scrollView_ = new UIScrollView();
+ scrollView_ = new UIScrollView();
- scrollView_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
- scrollView_->SetScrollBlankSize(50);
- // scrollView_->SetReboundSize(35);
- scrollView_->SetHorizontalScrollState(false);
- scrollView_->RequestFocus();
- scrollView_->SetRotateFactor(1.0);
- scrollView_->SetMaxScrollDistance(1000);
- scrollView_->SetDragACCLevel(5);
- scrollView_->SetSwipeACCLevel(800); /*设置手指抬起屏幕后的补偿距离。*/
- scrollView_->SetTouchable(true);
- scrollView_->SetDraggable(true);
+ scrollView_->SetPosition(0, 0, Screen::GetInstance().GetWidth(),
+ Screen::GetInstance().GetHeight());
+ scrollView_->SetScrollBlankSize(100);
+ scrollView_->SetReboundSize(50);
+ scrollView_->SetHorizontalScrollState(false);
+ scrollView_->RequestFocus();
+ scrollView_->SetRotateFactor(1.0);
+ scrollView_->SetMaxScrollDistance(1000);
+ scrollView_->SetDragACCLevel(5);
+ scrollView_->SetSwipeACCLevel(800); /*设置手指抬起屏幕后的补偿距离。*/
+ scrollView_->SetTouchable(true);
+ scrollView_->SetDraggable(true);
- /*初始化线条*/
- InitializeImageViews();
+ /*初始化线条*/
+ InitializeImageViews();
- /*初始化label*/
- InitializeLabels();
+ /*初始化label*/
+ InitializeLabels();
- BonusdataView(); // 配置额外数据
+ BonusdataView(); // 配置额外数据
- ExitView(); // 配置退出组件
+ ExitView(); // 配置退出组件
- container_->Add(scrollView_);
- }
- // 增加额外配置
- void TraingEnddataView::BonusdataView()
+ container_->Add(scrollView_);
+}
+
+/* DeInit:删除组件 */
+void TraingEnddataView::DeInit() {
+ scrollView_->RemoveAll();
+
+ /*单位label*/
+ delete labelutime;
+ labelutime = nullptr;
+ delete labelutag;
+ labelutag = nullptr;
+ delete labelusteps;
+ labelusteps = nullptr;
+ delete labelumile;
+ labelumile = nullptr;
+ delete labeluheart;
+ labeluheart = nullptr;
+ delete labelustrong;
+ labelustrong = nullptr;
+ delete labeluavpace;
+ labeluavpace = nullptr;
+ delete labelufreq;
+ labelufreq = nullptr;
+ delete labelustride;
+ labelustride = nullptr;
+
+ /*值label*/
+ delete labeltype;
+ labeltype = nullptr;
+ delete labelsport;
+ labelsport = nullptr;
+ delete labelduration;
+ labelduration = nullptr;
+ delete labeltag;
+ labeltag = nullptr;
+ delete labeltime;
+ labeltime = nullptr;
+ delete labelmile;
+ labelmile = nullptr;
+ delete labelheart;
+ labelheart = nullptr;
+ delete labelstrong;
+ labelstrong = nullptr;
+ delete labelsteps;
+ labelsteps = nullptr;
+ delete labelavpace;
+ labelavpace = nullptr;
+ delete labelfreq;
+ labelfreq = nullptr;
+ delete labelstride;
+ labelstride = nullptr;
+
+ /*图片label*/
+ delete imageIcon;
+ imageIcon = nullptr;
+ delete imageLine2;
+ imageLine2 = nullptr;
+ delete imageLine3;
+ imageLine3 = nullptr;
+ delete imageLine4;
+ imageLine4 = nullptr;
+ delete imageLine5;
+ imageLine5 = nullptr;
+ delete imageLine6;
+ imageLine6 = nullptr;
+ delete imageLine8;
+ imageLine8 = nullptr;
+ delete imageLine9;
+ imageLine9 = nullptr;
+ delete imageLine10;
+ imageLine10 = nullptr;
+
+ /*退出相关*/
+ delete exitButton;
+ exitButton = nullptr;
+ delete exitLabel;
+ exitLabel = nullptr;
+
+ delete scrollView_;
+ scrollView_ = nullptr;
+}
+
+void TraingEnddataView::PreLoad(void) {
+ if (!viewiInitStatus) {
+ InitView();
+ viewiInitStatus = true;
+ }
+}
+
+void TraingEnddataView::InitData() {
+ SportData *enddata = TraingModel::GetInstance()->GetSportdata();
+
+ if (enddata == nullptr) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+ "Enddata is nullptr. Exiting InitData()...\r\n");
+ return;
+ }
+
+ // 训练图标Icon
+ std::string imageStr =
+ TraingModel::GetInstance()->GetSportType(enddata->sportType);
+ if (!imageStr.empty()) {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "imageIcon %s\r\n",
+ imageStr.c_str());
+ if (imageIcon) // 检查 imageIcon 是否为空
{
- if (!TraingModel::GetInstance()->GetIsSpecial())
- return;
-#if UI_UPDATA
- /*线条*/
- InitImageView(imageLine8, 97, baseY + 6 * lineHeight, 80, 20, "image8", LINE_IMAGE); // imageLine8
- InitImageView(imageLine9, 97, baseY + 7 * lineHeight, 80, 20, "image9", LINE_IMAGE); // imageLine9
- InitImageView(imageLine10, 97, baseY + 8 * lineHeight, 80, 20, "image10", LINE_IMAGE); // imageLine10
- scrollView_->Add(imageLine8);
- scrollView_->Add(imageLine9);
- scrollView_->Add(imageLine10);
- /*label*/
- InitRollLabel(labeluavpace, 146, startY_Unit + labelInterval * 6, 240, 40, "label2", STR_AVG_PACE, DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitRollLabel(labelufreq, 146, startY_Unit + labelInterval * 7, 240, 40, "label2", STR_STEP_FREQUENCY, DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitRollLabel(labelustride, 146, startY_Unit + labelInterval * 8, 240, 40, "label2", STR_STEP_LENGTH, DEFAULT_VECTOR_FONT_FILENAME, 30);
- labeluavpace->SetTextColor(textColor);
- labelufreq->SetTextColor(textColor);
- labelustride->SetTextColor(textColor);
- scrollView_->Add(labeluavpace);
- scrollView_->Add(labelufreq);
- scrollView_->Add(labelustride);
-
- InitLabel(labelavpace, 146, startY_Value + 6 * labelInterval, 240, 60, "label17", "5.45", DEFAULT_VECTOR_FONT_FILENAME, 40);
- labelavpace->SetTextColor(Color::Blue());
- InitLabel(labelfreq, 146, startY_Value + 7 * labelInterval, 240, 60, "label17", "154", DEFAULT_VECTOR_FONT_FILENAME, 40);
- labelfreq->SetTextColor(Color::Green());
- InitLabel(labelstride, 146, startY_Value + 8 * labelInterval, 240, 60, "label17", "77", DEFAULT_VECTOR_FONT_FILENAME, 40);
- labelstride->SetTextColor(Color::Green());
- scrollView_->Add(labelavpace);
- scrollView_->Add(labelfreq);
- scrollView_->Add(labelstride);
-#else
- InitRollLabel(labelumile, 146, startY_Unit + labelInterval * 4, 240, 40, "label10", STR_RANGE_MILE, DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitRollLabel(labelusteps, 146, startY_Unit + labelInterval * 5, 240, 40, "label12", STR_STEP_NUMBER, DEFAULT_VECTOR_FONT_FILENAME, 30);
- labelumile->SetTextColor(textColor);
- labelusteps->SetTextColor(textColor);
-
- InitLabel(labelmile, 146, startY_Value + 4 * labelInterval, 240, 60, "label15", "8,301", DEFAULT_VECTOR_FONT_FILENAME, 40);
- labelmile->SetTextColor(Color::Blue());
- InitLabel(labelsteps, 146, startY_Value + 5 * labelInterval, 240, 60, "label16", "5000", DEFAULT_VECTOR_FONT_FILENAME, 40);
- labelsteps->SetTextColor(Color::Green());
-
- scrollView_->Add(labelumile);
- scrollView_->Add(labelusteps);
- scrollView_->Add(labelmile);
- scrollView_->Add(labelsteps);
-
- InitImageView(imageLine6, 97, baseY + 4 * lineHeight, 80, 20, "image6", LINE_IMAGE); // imageLine6
- InitImageView(imageLine7, 97, baseY + 5 * lineHeight, 80, 20, "image7", LINE_IMAGE); // imageLine7
- scrollView_->Add(imageLine6);
- scrollView_->Add(imageLine7);
-#endif
+ imageIcon->SetSrc(imageStr.c_str());
}
- // 配置退出相关位置
- void TraingEnddataView::ExitView()
+ } else {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+ "Failed to get image string. Skipping imageIcon update.\r\n");
+ }
+
+ // 训练类
+ UIResourceTextId typeId =
+ TraingModel::GetInstance()->GetSportTypeId(enddata->sportType);
+ if (labeltype) // 检查 labeltype 是否为空
+ {
+ labeltype->SetTextId(typeId);
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Sport Type ID set: %d\r\n",
+ typeId); // 打印运动类型ID
+ }
+
+ // 运动项目
+ if (labelsport) // 检查 labelsport 是否为空
+ {
+ labelsport->SetTextId(enddata->sportId);
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Sport ID set: %d\r\n",
+ enddata->sportId); // 打印运动项目ID
+ }
+
+ // 运动开始结束时间
+ std::string startTimeStr = enddata->start_time;
+ std::string endTimeStr = enddata->end_time;
+ std::string durationStr = startTimeStr + "-" + endTimeStr;
+ if (labelduration) // 检查 labelduration 是否为空
+ {
+ labelduration->SetText(durationStr.c_str());
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Duration set: %s\r\n",
+ durationStr.c_str()); // 打印运动时间段
+ }
+
+ // 运动目标
+ if (enddata->goaldegree) {
+ std::string tagStr = std::to_string(enddata->goaldegree) + "%";
+ if (labeltag) // 检查 labeltag 是否为空
{
- if (TraingModel::GetInstance()->GetIsSpecial())
- {
- // 初始化退出(最后 要根据前方配置设置位置)
- InitRollLabel(exitLabel, 80, 1033, 300, 40, "label8", STR_MORE_APP, DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitButtonExt(exitButton, 42, 1083, 380, 100, BUTTONBACK, STR_CLOSE, 30);
- }
- else
- {
- InitRollLabel(exitLabel, 80, 773, 300, 40, "label8", STR_MORE_APP, DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitButtonExt(exitButton, 42, 823, 380, 100, BUTTONBACK, STR_CLOSE, 30);
- }
- exitLabel->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f));
- scrollView_->Add(exitLabel);
- exitButton->SetOnClickListener(presenter_);
- scrollView_->Add(exitButton);
+ labeltag->SetText(tagStr.c_str());
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Goal degree set: %s\r\n",
+ tagStr.c_str()); // 打印运动目标
}
- /* DeInit:删除组件 */
- void TraingEnddataView::DeInit()
+ } else {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
+ "Enddata tag is null. Skipping labeltag update.\r\n");
+ }
+
+ // 运动时长
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Duration of the sport: %d\r\n",
+ enddata->duration);
+ std::string timeStr = TraingModel::GetInstance()->GetTrainingTime();
+ if (labeltime) // 检查 labeltime 是否为空
+ {
+ labeltime->SetText(timeStr.c_str());
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Training time set: %s\r\n",
+ timeStr.c_str()); // 打印训练时间
+ }
+
+ // 运动距离
+ std::string mileStr = std::to_string(enddata->distance);
+ if (labelmile) // 检查 labelmile 是否为空
+ {
+ labelmile->SetText(mileStr.c_str());
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Distance set: %s\r\n",
+ mileStr.c_str()); // 打印运动距离
+ }
+
+ // 平均心率
+ std::string heartStr = std::to_string(enddata->avgheart);
+ if (labelheart) // 检查 labelheart 是否为空
+ {
+ labelheart->SetText(heartStr.c_str());
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Average heart rate set: %s\r\n",
+ heartStr.c_str()); // 打印平均心率
+ }
+
+ // 步数
+ std::string stepStr = std::to_string(enddata->steps);
+ if (labelsteps) // 检查 labelsteps 是否为空
+ {
+ labelsteps->SetText(stepStr.c_str());
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Steps set: %s\r\n",
+ stepStr.c_str()); // 打印步数
+ }
+
+ // 训练强度
+ UIResourceTextId intensityid = TraingModel::GetInstance()->GetIntensity();
+ if (labelstrong) // 检查 labelstrong 是否为空
+ {
+ labelstrong->SetTextId(intensityid);
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Intensity ID set: %d\r\n",
+ intensityid); // 打印训练强度ID
+ }
+ //卡路里
+ std::string calStr = std::to_string(enddata->calories);
+ if (labelcalories) // 检查 labelcal 是否为空
+ {
+ labelcalories->SetText(calStr.c_str());
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Calories set: %s\r\n",
+ calStr.c_str()); // 打印卡路里
+ }
+
+ //特殊配置
+ if (TraingModel::GetInstance()->GetIsSpecial()) {
+ // 平均配速
+ // 需要计算一下 是秒 需要显示 分钟''秒''
+ int totalSeconds = enddata->apc; // 总秒数
+ int minutes = totalSeconds / 60; // 计算分钟
+ int seconds = totalSeconds % 60; // 计算剩余秒数
+ // 格式化为字符串
+ std::ostringstream oss;
+ oss << minutes << "'" << seconds << "\""; // 生成 "X'Y\"" 格式的字符串
+ std::string avpaceStr = oss.str(); // 得到字符串
+ if (labelavpace) // 检查标签是否为空
{
- scrollView_->RemoveAll();
-
- /*单位label*/
- delete labelutime;
- labelutime = nullptr;
- delete labelutag;
- labelutag = nullptr;
- delete labelusteps;
- labelusteps = nullptr;
- delete labelumile;
- labelumile = nullptr;
- delete labeluheart;
- labeluheart = nullptr;
- delete labelustrong;
- labelustrong = nullptr;
- delete labeluavpace;
- labeluavpace = nullptr;
- delete labelufreq;
- labelufreq = nullptr;
- delete labelustride;
- labelustride = nullptr;
-
- /*值label*/
- delete labeltype;
- labeltype = nullptr;
- delete labelsport;
- labelsport = nullptr;
- delete labelduration;
- labelduration = nullptr;
- delete labeltag;
- labeltag = nullptr;
- delete labeltime;
- labeltime = nullptr;
- delete labelmile;
- labelmile = nullptr;
- delete labelheart;
- labelheart = nullptr;
- delete labelstrong;
- labelstrong = nullptr;
- delete labelsteps;
- labelsteps = nullptr;
- delete labelavpace;
- labelavpace = nullptr;
- delete labelfreq;
- labelfreq = nullptr;
- delete labelstride;
- labelstride = nullptr;
-
- /*图片label*/
- delete imageIcon;
- imageIcon = nullptr;
- delete imageLine2;
- imageLine2 = nullptr;
- delete imageLine3;
- imageLine3 = nullptr;
- delete imageLine4;
- imageLine4 = nullptr;
- delete imageLine5;
- imageLine5 = nullptr;
- delete imageLine6;
- imageLine6 = nullptr;
- delete imageLine8;
- imageLine8 = nullptr;
- delete imageLine9;
- imageLine9 = nullptr;
- delete imageLine10;
- imageLine10 = nullptr;
-
- /*退出相关*/
- delete exitButton;
- exitButton = nullptr;
- delete exitLabel;
- exitLabel = nullptr;
-
- delete scrollView_;
- scrollView_ = nullptr;
+ labelavpace->SetText(avpaceStr.c_str());
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Average pace set: %s\r\n",
+ avpaceStr.c_str()); // 打印平均配速
}
- void TraingEnddataView::PreLoad(void)
+ // 步频
+ std::string freqStr = std::to_string(enddata->cdc);
+ if (labelfreq) // 检查 labelfreq 是否为空
{
- if (!viewiInitStatus)
- {
- InitView();
- viewiInitStatus = true;
- }
+ labelfreq->SetText(freqStr.c_str());
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Cadence set: %s\r\n",
+ freqStr.c_str()); // 打印步频
}
- void TraingEnddataView::InitData()
+ // 步幅
+ std::string strideStr = std::to_string(enddata->std);
+ if (labelstride) // 检查 labelstride 是否为空
{
- SportData *enddata = TraingModel::GetInstance()->GetSportdata();
-
- if (enddata == nullptr)
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Enddata is nullptr. Exiting InitData()...\r\n");
- return;
- }
-
- // 训练图标Icon
- std::string imageStr = TraingModel::GetInstance()->GetSportType(enddata->sportType);
- if (!imageStr.empty())
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "imageIcon %s\r\n", imageStr.c_str());
- if (imageIcon) // 检查 imageIcon 是否为空
- {
- imageIcon->SetSrc(imageStr.c_str());
- }
- }
- else
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Failed to get image string. Skipping imageIcon update.\r\n");
- }
-
- // 训练类
- UIResourceTextId typeId = TraingModel::GetInstance()->GetSportTypeId(enddata->sportType);
- if (labeltype) // 检查 labeltype 是否为空
- {
- labeltype->SetTextId(typeId);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Sport Type ID set: %d\r\n", typeId); // 打印运动类型ID
- }
-
- // 运动项目
- if (labelsport) // 检查 labelsport 是否为空
- {
- labelsport->SetTextId(enddata->sportId);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Sport ID set: %d\r\n", enddata->sportId); // 打印运动项目ID
- }
-
- // 运动开始结束时间
- std::string startTimeStr = enddata->start_time;
- std::string endTimeStr = enddata->end_time;
- std::string durationStr = startTimeStr + "-" + endTimeStr;
- if (labelduration) // 检查 labelduration 是否为空
- {
- labelduration->SetText(durationStr.c_str());
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Duration set: %s\r\n", durationStr.c_str()); // 打印运动时间段
- }
-
- // 运动目标
- if (enddata->goaldegree)
- {
- std::string tagStr = std::to_string(enddata->goaldegree) + "%";
- if (labeltag) // 检查 labeltag 是否为空
- {
- labeltag->SetText(tagStr.c_str());
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Goal degree set: %s\r\n", tagStr.c_str()); // 打印运动目标
- }
- }
- else
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Enddata tag is null. Skipping labeltag update.\r\n");
- }
-
- // 运动时长
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Duration of the sport: %d\r\n", enddata->duration);
- std::string timeStr = TraingModel::GetInstance()->GetTrainingTime();
- if (labeltime) // 检查 labeltime 是否为空
- {
- labeltime->SetText(timeStr.c_str());
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Training time set: %s\r\n", timeStr.c_str()); // 打印训练时间
- }
-
- // 运动距离
- std::string mileStr = std::to_string(enddata->distance);
- if (labelmile) // 检查 labelmile 是否为空
- {
- labelmile->SetText(mileStr.c_str());
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Distance set: %s\r\n", mileStr.c_str()); // 打印运动距离
- }
-
- // 平均心率
- std::string heartStr = std::to_string(enddata->avgheart);
- if (labelheart) // 检查 labelheart 是否为空
- {
- labelheart->SetText(heartStr.c_str());
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Average heart rate set: %s\r\n", heartStr.c_str()); // 打印平均心率
- }
-
- // 步数
- std::string stepStr = std::to_string(enddata->steps);
- if (labelsteps) // 检查 labelsteps 是否为空
- {
- labelsteps->SetText(stepStr.c_str());
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Steps set: %s\r\n", stepStr.c_str()); // 打印步数
- }
-
- // 训练强度
- UIResourceTextId intensityid = TraingModel::GetInstance()->GetIntensity();
- if (labelstrong) // 检查 labelstrong 是否为空
- {
- labelstrong->SetTextId(intensityid);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Intensity ID set: %d\r\n", intensityid); // 打印训练强度ID
- }
-
- if (TraingModel::GetInstance()->GetIsSpecial())
- {
- // 平均配速
- std::string avpaceStr = std::to_string(enddata->apc);
- if (labelavpace) // 检查 labelavpace 是否为空
- {
- labelavpace->SetText(avpaceStr.c_str());
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Average pace set: %s\r\n", avpaceStr.c_str()); // 打印平均配速
- }
-
- // 步频
- std::string freqStr = std::to_string(enddata->cdc);
- if (labelfreq) // 检查 labelfreq 是否为空
- {
- labelfreq->SetText(freqStr.c_str());
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Cadence set: %s\r\n", freqStr.c_str()); // 打印步频
- }
-
- // 步幅
- std::string strideStr = std::to_string(enddata->std);
- if (labelstride) // 检查 labelstride 是否为空
- {
- labelstride->SetText(strideStr.c_str());
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Stride length set: %s\r\n", strideStr.c_str()); // 打印步幅
- }
- }
-
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TraingEnddataView data initialization complete.\r\n");
+ labelstride->SetText(strideStr.c_str());
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Stride length set: %s\r\n",
+ strideStr.c_str()); // 打印步幅
}
- // 设置按键监听
- static void SetKeyActListener()
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetKeyActListener");
- // 增加按键监听
- RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::TraingEnddataPresenter::GetInstance();
- RootView::GetInstance()->SetOnKeyActListener(keyactListener);
- }
- void TraingEnddataView::OnStart()
- {
- View<TraingEnddataPresenter>::OnStart();
+ }
- container_ = new UIViewGroup();
- container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+ "TraingEnddataView data initialization complete.\r\n");
+}
+// 设置按键监听
+static void SetKeyActListener() {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetKeyActListener");
+ // 增加按键监听
+ RootView::OnKeyActListener *keyactListener =
+ (RootView::OnKeyActListener *)OHOS::TraingEnddataPresenter::GetInstance();
+ RootView::GetInstance()->SetOnKeyActListener(keyactListener);
+}
+void TraingEnddataView::OnStart() {
+ View<TraingEnddataPresenter>::OnStart();
- PreLoad();
- InitData(); // 刷新数据
+ container_ = new UIViewGroup();
+ container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(),
+ Screen::GetInstance().GetHeight());
- SetContainerView(container_);
+ PreLoad();
+ InitData(); // 刷新数据
- container_->SetDraggable(true);
- container_->SetTouchable(true);
- container_->SetOnDragListener(presenter_);
+ SetContainerView(container_);
- SetKeyActListener();
- }
+ container_->SetDraggable(true);
+ container_->SetTouchable(true);
+ container_->SetOnDragListener(presenter_);
- void TraingEnddataView::OnSetUpView()
- {
+ SetKeyActListener();
+}
- View<TraingEnddataPresenter>::OnSetUpView();
- Draw();
- }
+void TraingEnddataView::OnSetUpView() {
- void TraingEnddataView::OnTearDownView()
- {
- View<TraingEnddataPresenter>::OnTearDownView();
- return;
- }
+ View<TraingEnddataPresenter>::OnSetUpView();
+ Draw();
+}
- void TraingEnddataView::OnStop()
- {
- View<TraingEnddataPresenter>::OnStop();
- RootView::GetInstance()->ClearOnKeyActListener();
- if (container_ != nullptr)
- {
- container_->RemoveAll();
- delete container_;
- container_ = nullptr;
- }
- return;
- }
+void TraingEnddataView::OnTearDownView() {
+ View<TraingEnddataPresenter>::OnTearDownView();
+ return;
+}
+void TraingEnddataView::OnStop() {
+ View<TraingEnddataPresenter>::OnStop();
+ RootView::GetInstance()->ClearOnKeyActListener();
+ if (container_ != nullptr) {
+ container_->RemoveAll();
+ delete container_;
+ container_ = nullptr;
+ }
+ return;
}
+
+} // namespace OHOS
/* 定时器回调函数 */
void TraingTimerCallback()
{
- g_motionTimes++;
+ g_motionTimes++;
+#if 0
TraingCardPresenter *gTraingCardPresenter = TraingCardPresenter::GetInstance();
if (gTraingCardPresenter == nullptr)
{
return;
}
gTraingCardPresenter->ModifiesTime();
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TraingTimerCallback\r\n");
+#endif
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TraingTimerCallback\r\n");
}
/* 开启定时器 */
-/*** \r
- * @Date: 2024-04-15 10:55:58\r
- * @LastEditors: Caisking 3449750381@qq.com\r
- * @LastEditTime: 2024-08-24 15:18:42\r
- * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/include/TraingCardPresenter.h\r
- */\r
-/***\r
- * @Date: 2024-04-15 10:55:58\r
- * @LastEditors: Caisking 3449750381@qq.com\r
- * @LastEditTime: 2024-08-19 10:55:50\r
- * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/include/TraingCardPresenter.h\r
- */\r
-/***\r
- * @Author: Caisking 3449750381@qq.com\r
- * @Date: 2024-03-19 17:37:18\r
- * @LastEditors: Caisking 3449750381@qq.com\r
- * @LastEditTime: 2024-03-26 16:54:22\r
- * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_card/include/TraingCardPresenter.h\r
- * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE\r
- */\r
\r
#ifndef _TraingCard_PRESENTER_H\r
#define _TraingCard_PRESENTER_H\r
\r
+#include "ModelListenerSample.h"\r
#include "Presenter.h"\r
#include "TraingCardView.h"\r
#include "traing/training_card/include/TrainingControlView.h"\r
#include "traing/training_card/include/TrainingDataView.h"\r
#include "traing/training_card/include/TrainingDetailView.h"\r
-#include "ModelListenerSample.h"\r
\r
-#include "cywee_service.h"\r
+#include "bletest.h"\r
+#include "components/root_view.h"\r
+#include "components/ui_swipe_view.h"\r
+#include "components/ui_view.h"\r
+\r
#include "cywee_hal.h"\r
+#include "cywee_service.h"\r
#include "traing/include/TraingModel.h"\r
#include "uicomponents/UIComponents.h"\r
-#include "bletest.h"\r
\r
-namespace OHOS\r
-{\r
- class TraingCardView;\r
- class TrainingControlView;\r
- class TrainingDataView;\r
- class TrainingDetailView;\r
- class TraingModel;\r
- class TraingCardPresenter : public Presenter<TraingCardView>,\r
- public UIView::OnClickListener,\r
- public UIView::OnDragListener,\r
- public ModelListenerSample\r
- {\r
- public:\r
- TraingCardPresenter();\r
- virtual ~TraingCardPresenter();\r
- static TraingCardPresenter *GetInstance();\r
+namespace OHOS {\r
+class TraingCardView;\r
+class TrainingControlView;\r
+class TrainingDataView;\r
+class TrainingDetailView;\r
+class TraingModel;\r
+class TraingCardPresenter : public Presenter<TraingCardView>,\r
+ public UIView::OnClickListener,\r
+ public UIView::OnDragListener,\r
+ public UISwipeView::OnSwipeListener,\r
+ public ModelListenerSample {\r
+public:\r
+ TraingCardPresenter();\r
+ virtual ~TraingCardPresenter() override;\r
+ static TraingCardPresenter *GetInstance(void);\r
+\r
+ void OnStart() override;\r
+ void OnPause() override;\r
+ void OnResume() override;\r
+ void OnStop() override;\r
+ // void OnTickEvent() override;\r
+ void Notify() override;\r
\r
- void OnStart() override;\r
- void OnPause() override;\r
- void OnResume() override;\r
- void OnStop() override;\r
- // void OnTickEvent() override;\r
- void Notify() override;\r
+ bool OpenSensor(ExerciseClass type);\r
+ bool ControlSensor(ExerciseState state);\r
\r
- bool OpenSensor(ExerciseClass type);\r
- bool ControlSensor(ExerciseState state);\r
+ void ModifiesTime();\r
+ void RefreshData(SportData *sportdata); // 更新数据\r
\r
- void ModifiesTime();\r
- void RefreshData(SportData *sportdata); // 更新数据\r
+ void UpdateTimeOfControl();\r
+ void UpdateTimeOfData();\r
+ void UpdateDataView();\r
\r
- /*蓝牙开启运动*/\r
- bool send_sport_cmd(training_ble *cmd);\r
+ /*蓝牙开启运动*/\r
+ bool send_sport_cmd(training_ble *cmd);\r
\r
- /*控制*/\r
- void handleStartState();\r
- void handleEndState();\r
- void handlePauseState();\r
- void handleContinueState();\r
+ /*控制*/\r
+ void handleStartState();\r
+ void handleEndState();\r
+ void handlePauseState();\r
+ void handleContinueState();\r
\r
- private:\r
- // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;\r
- bool OnClick(UIView &view, const ClickEvent &event) override;\r
- bool OnDrag(UIView &view, const DragEvent &event) override;\r
- int tag_ = 0;\r
- bool opensensorstuats{false};\r
- // bool OnDragEnd(UIView& view, const DragEvent& event) override;\r
- };\r
+private:\r
+ // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;\r
+ bool OnClick(UIView &view, const ClickEvent &event) override;\r
+ bool OnDrag(UIView &view, const DragEvent &event) override;\r
+ void OnSwipe(UISwipeView &view) override;\r
+ int tag_ = 0;\r
+ bool opensensorstuats{false};\r
+ // bool OnDragEnd(UIView& view, const DragEvent& event) override;\r
+};\r
} // namespace OHOS\r
\r
#endif // SLEEPDETAIL_PRESENTER_H
\ No newline at end of file
#include "traing/training_card/include/TraingCardPresenter.h"\r
\r
#include "PlayersView.h"\r
+#include "traing/training_card/include/TraingDataAllView.h"\r
#include "traing/training_card/include/TrainingControlView.h"\r
#include "traing/training_card/include/TrainingDataView.h"\r
#include "traing/training_card/include/TrainingDetailView.h"\r
UICardPage *InitControlPage(void);\r
UICardPage *InitDataPage(void);\r
UICardPage *InitMusicPage(void);\r
+\r
UICardPage *InitDetailPage(void);\r
\r
void InitView();\r
UIScrollView *endView{nullptr};\r
UIScrollView *getView{nullptr};\r
UIScrollView *heartView{nullptr};\r
- TrainingControlView *ControlView{nullptr}; // 控制卡片\r
- TrainingDataView *DataVIew{nullptr}; // 数据卡片\r
+ TrainingControlView *controlview_{nullptr}; // 控制卡片\r
+ TraingDataAllView *dataallview_{nullptr}; // 数据卡片\r
TrainingDetailView *DetailView{nullptr}; // 详细数据卡片\r
- PlayersView *MusicView{nullptr}; // 音乐卡片\r
+ PlayersView *musicview_{nullptr}; // 音乐卡片\r
\r
/*结束弹窗*/\r
UILabelExt *endtitle{nullptr}; // 结束弹窗title\r
--- /dev/null
+/***
+ * @Date: 2024-06-25 10:41:08
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-09-02 09:22:33
+ * @FilePath:
+ * /FD230/code/sdk/application/wearable/fd230app/nativeui/TraingDataAll/include/TraingDataAllView.h
+ */
+
+#ifndef TRAING_DATA_ALL__VIEW_H
+#define TRAING_DATA_ALL__VIEW_H
+
+#include "BaseView.h"
+#include "View.h"
+#include "components/ui_swipe_view.h"
+#include "traing/training_card/include/TraingCardPresenter.h"
+#include "traing/training_card/include/TrainingDataView.h"
+#include "traing/training_card/include/TrainingDetailView.h"
+
+#include "components/ui_card_page.h"
+namespace OHOS {
+
+typedef enum {
+ TRAING_DATA_ALL_MAIN_VIEW = 0, // Heart rate time data chart
+ TRAING_DATA_ALL_DETAIL_VIEW, // Detailed view
+ TRAING_DATA_ALL_MAX_VIEW,
+} TraingDataAllPageId;
+
+#define TRAING_DATA_ALL_VIEW "TraingDataAllView"
+
+class TraingCardPresenter;
+class TrainingDataView;
+class TrainingDetailView;
+
+class TraingDataAllView : public UICardPage {
+public:
+ TraingDataAllView();
+ virtual ~TraingDataAllView();
+
+ static TraingDataAllView *GetInstance(void);
+
+ UISwipeView *TraingDataAllViewInit(void);
+ void ClearAll(void);
+
+ AppGroupView *TraingDataPageInit(void);
+ AppGroupView *TraingDetailPageInit(void);
+
+ TrainingDataView *GetTrainingDataView(void);
+ TrainingDetailView *GetTrainingDetailView(void);
+
+ UISwipeView *GetTraingDataAllPageView(void);
+ void ChangeView(int16_t hideView, int16_t showView);
+
+ void InitPage(void);
+
+ void PreLoad(void) override;
+ void UnLoad(void) override;
+ bool InitView(void);
+
+private:
+ TrainingDataView *trainingDataView{nullptr};
+ TrainingDetailView *trainingDetailView{nullptr};
+ TraingDataAllView *trainingDataAllView{nullptr};
+ UISwipeView *traingDataAllPageView{nullptr};
+
+ int16_t maxPage = TRAING_DATA_ALL_MAX_VIEW;
+ UISwipeView *TraingDataAllSwipeViewList{nullptr};
+ AppGroupView *recordCard[TRAING_DATA_ALL_MAX_VIEW]{nullptr};
+
+ AppGroupView *CreatePage(uint8_t pageId);
+ bool viewiInitStatus{false};
+};
+
+} // namespace OHOS
+
+#endif // TRAING_DATA_ALL__VIEW_H
\ No newline at end of file
#include "components/icon_adapter.h"
#include "components/ui_circle_progress.h"
-#include "wearable_log.h"
-#include "ohos_types.h"
+#include "AppGroupView.h"
#include "components/ui_card_page.h"
+#include "ohos_types.h"
+#include "traing/Training_UiConfig.h"
#include "traing/include/TraingModel.h"
#include "uicomponents/UIComponents.h"
-#include "traing/Training_UiConfig.h"
+#include "wearable_log.h"
#include "traing/include/TraingModel.h"
#include "uicomponents/UIComponents.h"
{
#define BUTTONNOTE "button1"
- class TrainingDataView : public UICardPage
- {
- public:
- TrainingDataView();
- virtual ~TrainingDataView();
- static TrainingDataView *GetInstance(void);
-
- void InitView();
- void DeInit();
+class TrainingDataView : public AppGroupView {
+public:
+ TrainingDataView();
+ virtual ~TrainingDataView();
+ static TrainingDataView *GetInstance(void);
+ bool InitPage(void);
+ virtual bool InitView(void *caller) override;
+ void DeInit();
- void PreLoad(void) override;
- void UnLoad(void) override;
- UILabelExt *GetTimeLabel();
- UILabelExt *GetHeartLabel();
- UICircleProgress*GetProgress();
+ UILabelExt *GetTimeLabel();
+ UILabelExt *GetHeartLabel();
+ UICircleProgress *GetProgress();
- void UpdataTime();
+ void UpdataTime();
- private:
- UIView::OnDragListener *draglistener{nullptr};
- TrainingDataView(TrainingDataView &&) = delete;
- TrainingDataView &operator=(TrainingDataView &&) = delete;
+private:
+ UIView::OnDragListener *draglistener{nullptr};
+ TrainingDataView(TrainingDataView &&) = delete;
+ TrainingDataView &operator=(TrainingDataView &&) = delete;
- UIViewGroup *container_ = nullptr;
+ UIViewGroup *container_ = nullptr;
- UILabelExt *curtimelabel = nullptr; // 当前时间
- UILabelExt *sportlabel = nullptr; // 运动项目名称
- UILabelExt *timerlabel = nullptr; // 计时
- UILabelExt *heartlabel = nullptr; // 运动实时心率
- UILabelExt *ubpmlabel = nullptr; // 运动强度
+ UILabelExt *curtimelabel = nullptr; // 当前时间
+ UILabelExt *sportlabel = nullptr; // 运动项目名称
+ UILabelExt *timerlabel = nullptr; // 计时
+ UILabelExt *heartlabel = nullptr; // 运动实时心率
+ UILabelExt *ubpmlabel = nullptr; // 运动强度
- UIImageView *image_progress = nullptr;
- UIImageView *image_heart = nullptr;
- UIImageView *image_lowIntensity = nullptr; // 低等强度
- UIImageView *image_mediumIntensity = nullptr; // 中等强度
- UIImageView *image_highIntensity = nullptr; // 高等强度
- UIImageView *image_superHighIntensity = nullptr; // 超高等强度
+ UIImageView *image_progress = nullptr;
+ UIImageView *image_heart = nullptr;
+ UIImageView *image_lowIntensity = nullptr; // 低等强度
+ UIImageView *image_mediumIntensity = nullptr; // 中等强度
+ UIImageView *image_highIntensity = nullptr; // 高等强度
+ UIImageView *image_superHighIntensity = nullptr; // 超高等强度
- UICircleProgress *circleProgress = nullptr;
+ UICircleProgress *circleProgress = nullptr;
- UIImageView *image_iconup = nullptr;
- UIImageView *image_iconpoint = nullptr;
+ UIImageView *image_iconup = nullptr;
+ UIImageView *image_iconpoint = nullptr;
- UIButton *buttonNote = nullptr; // 注意事项按键
- bool viewiInitStatus{false};
- };
+ UIButton *buttonNote = nullptr; // 注意事项按键
+ bool viewiInitStatus{false};
+};
} // namespace OHOS
#endif // TraingData_PRESENTER_H
namespace OHOS
{
- class TrainingDetailView : public UICardPage
- {
- public:
- TrainingDetailView();
- virtual ~TrainingDetailView();
- static TrainingDetailView *GetInstance(void);
+class TrainingDetailView : public AppGroupView {
+public:
+ TrainingDetailView();
+ virtual ~TrainingDetailView();
+ static TrainingDetailView *GetInstance(void);
- void InitView();
- void DeInit();
+ void DeInit();
- void PreLoad(void) override;
- void UnLoad(void) override;
+ bool InitPage(void);
+ virtual bool InitView(void *caller) override;
- UILabelExt *GetMileLabel();
- UILabelExt *GetStepLabel();
- UILabelExt *GetCalorieLabel();
- UILabelButtonExt *Get_Intensity_Button();
+ UILabelExt *GetMileLabel();
+ UILabelExt *GetStepLabel();
+ UILabelExt *GetCalorieLabel();
+ UILabelButtonExt *Get_Intensity_Button();
- private:
- UIView::OnDragListener *draglistener{nullptr};
- TrainingDetailView(TrainingDetailView &&) = delete;
- TrainingDetailView &operator=(TrainingDetailView &&) = delete;
+private:
+ UIView::OnDragListener *draglistener{nullptr};
+ TrainingDetailView(TrainingDetailView &&) = delete;
+ TrainingDetailView &operator=(TrainingDetailView &&) = delete;
- UIViewGroup *container_ = nullptr;
+ UIViewGroup *container_ = nullptr;
- UILabelButtonExt *intensity_button{nullptr};
+ UILabelButtonExt *intensity_button{nullptr};
- UILabelExt *u_milelabel = nullptr;
- UILabelExt *u_stepslabel = nullptr;
- UILabelExt *u_calorielabel = nullptr;
- UILabelExt *milelabel = nullptr;
- UILabelExt *steplabel = nullptr;
- UILabelExt *calorielabel = nullptr;
+ UILabelExt *u_milelabel = nullptr;
+ UILabelExt *u_stepslabel = nullptr;
+ UILabelExt *u_calorielabel = nullptr;
+ UILabelExt *milelabel = nullptr;
+ UILabelExt *steplabel = nullptr;
+ UILabelExt *calorielabel = nullptr;
- UIImageView *progress_image = nullptr;
- UIImageView *lineimage2_ = nullptr;
+ UIImageView *progress_image = nullptr;
+ UIImageView *lineimage2_ = nullptr;
- bool viewiInitStatus{false};
- };
+ bool viewiInitStatus{false};
+};
} // namespace OHOS
#endif // TraingDetail_PRESENTER_H
* @Date: 2024-07-06 16:27:31\r
* @LastEditors: Caisking 3449750381@qq.com\r
* @LastEditTime: 2024-08-02 10:21:14\r
- * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardPresenter.cpp\r
+ * @FilePath:\r
+ * /FD230/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardPresenter.cpp\r
*/\r
/***\r
* @Date: 2024-04-26 09:23:18\r
* @LastEditors: Caisking 3449750381@qq.com\r
* @LastEditTime: 2024-04-26 10:25:05\r
- * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardPresenter.cpp\r
+ * @FilePath:\r
+ * /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TraingCardPresenter.cpp\r
*/\r
\r
#include "AppViewIDs.h"\r
+#include "NativeAbility.h"\r
#include "components/ui_label_ext.h"\r
#include "ui_resource_string.h"\r
-#include "NativeAbility.h"\r
\r
-#include <iostream>\r
-#include <chrono>\r
-#include <thread>\r
+#include "ConfigModel.h"\r
+#include "custom_utils.h"\r
+#include "graphic_service.h"\r
+#include "traing/include/TraingModel.h"\r
#include "traing/training_card/include/TraingCardPresenter.h"\r
#include "traing/training_card/include/TrainingControlView.h"\r
-#include "traing/include/TraingModel.h"\r
#include "uicomponents/UIComponents.h"\r
-#include "ConfigModel.h"\r
-#include "custom_utils.h"\r
#include "vibrator_service.h"\r
+#include <chrono>\r
#include <iomanip>\r
+#include <iostream>\r
#include <sstream>\r
+#include <thread>\r
#include <unordered_map>\r
-#include "graphic_service.h"\r
\r
extern "C" void do_cywee_service_check_msg(int cmd, int data[]);\r
\r
#define DEFAULT_DASH "--"\r
#define DATATEST 0\r
\r
-extern "C"\r
-{\r
- void InitTimer();\r
- void DisableTimer();\r
- void PauseTimer();\r
- void ResumeTimer();\r
+extern "C" {\r
+void InitTimer();\r
+void DisableTimer();\r
+void PauseTimer();\r
+void ResumeTimer();\r
}\r
-namespace OHOS\r
-{\r
- // 当前Presenter属性实例化的内存指针\r
- static TraingCardPresenter *g_pTraingCardPresenter = nullptr;\r
+namespace OHOS {\r
+// 当前Presenter属性实例化的内存指针\r
+static TraingCardPresenter *g_pTraingCardPresenter = nullptr;\r
\r
- TraingCardPresenter::TraingCardPresenter()\r
- {\r
- g_pTraingCardPresenter = this;\r
- }\r
+TraingCardPresenter::TraingCardPresenter() { g_pTraingCardPresenter = this; }\r
\r
- TraingCardPresenter::~TraingCardPresenter()\r
- {\r
- // tag_ = 0;\r
- g_pTraingCardPresenter = nullptr;\r
- }\r
-\r
- TraingCardPresenter *TraingCardPresenter::GetInstance()\r
- {\r
- static TraingCardPresenter instance;\r
- return &instance;\r
- }\r
+TraingCardPresenter::~TraingCardPresenter() {\r
+ // tag_ = 0;\r
+ g_pTraingCardPresenter = nullptr;\r
+}\r
\r
- void TraingCardPresenter::OnStart()\r
- {\r
- Presenter<TraingCardView>::OnStart();\r
- // ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 长亮屏\r
- }\r
+TraingCardPresenter *TraingCardPresenter::GetInstance() {\r
+ static TraingCardPresenter instance;\r
+ return &instance;\r
+}\r
\r
- void TraingCardPresenter::OnPause(void)\r
- {\r
+void TraingCardPresenter::OnStart() {\r
+ Presenter<TraingCardView>::OnStart();\r
+ // ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 长亮屏\r
+}\r
\r
- Presenter<TraingCardView>::OnPause();\r
- }\r
+void TraingCardPresenter::OnPause(void) {\r
\r
- void TraingCardPresenter::OnResume(void)\r
- {\r
+ Presenter<TraingCardView>::OnPause();\r
+}\r
\r
- Presenter<TraingCardView>::OnResume();\r
- }\r
+void TraingCardPresenter::OnResume(void) {\r
\r
- void TraingCardPresenter::OnStop(void)\r
- {\r
+ Presenter<TraingCardView>::OnResume();\r
+}\r
\r
- Presenter<TraingCardView>::OnStop();\r
- // ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON); // 长亮屏\r
- }\r
+void TraingCardPresenter::OnStop(void) {\r
\r
- bool TraingCardPresenter::OnDrag(UIView &view, const DragEvent &event)\r
- {\r
- UNUSED(view);\r
- return true;\r
- }\r
+ Presenter<TraingCardView>::OnStop();\r
+ // ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON); // 长亮屏\r
+}\r
\r
- // 计时器更新timer\r
- void TraingCardPresenter::ModifiesTime()\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ModifiesTime begin");\r
- std ::string TimeStr = TraingModel::GetInstance()->DisplayMotionDuration();\r
+bool TraingCardPresenter::OnDrag(UIView &view, const DragEvent &event) {\r
+ UNUSED(view);\r
+ return true;\r
+}\r
\r
- /*灭屏状态不刷新UI*/\r
- if (uapi_get_screen_state() == 1)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "uapi_get_screen_state is off");\r
- return;\r
- }\r
+// 计时器更新timer\r
+void TraingCardPresenter::ModifiesTime() {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ModifiesTime begin");\r
+ std ::string TimeStr = TraingModel::GetInstance()->DisplayMotionDuration();\r
+\r
+ /*灭屏状态不刷新UI*/\r
+ if (uapi_get_screen_state() == 1) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "uapi_get_screen_state is off");\r
+ return;\r
+ }\r
+\r
+ if (TimeStr.empty()) {\r
+ WEARABLE_LOGE(\r
+ WEARABLE_LOG_MODULE_APP,\r
+ "TraingModel::GetInstance()->DisplayMotionDuration() nullptr");\r
+ return;\r
+ }\r
+ if (TrainingControlView::GetInstance()->GetTimeLabel() != nullptr) {\r
+ TrainingControlView::GetInstance()->GetTimeLabel()->SetText(\r
+ TimeStr.c_str());\r
+ }\r
+ if (TrainingDataView::GetInstance()->GetTimeLabel() != nullptr) {\r
+ TrainingDataView::GetInstance()->GetTimeLabel()->SetText(TimeStr.c_str());\r
+ }\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ModifiesTime end");\r
+}\r
\r
- if (TimeStr.empty())\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingModel::GetInstance()->DisplayMotionDuration() nullptr");\r
- return;\r
- }\r
- if (TrainingControlView::GetInstance()->GetTimeLabel() != nullptr)\r
- {\r
- TrainingControlView::GetInstance()->GetTimeLabel()->SetText(TimeStr.c_str());\r
- }\r
- if (TrainingDataView::GetInstance()->GetTimeLabel() != nullptr)\r
- {\r
- TrainingDataView::GetInstance()->GetTimeLabel()->SetText(TimeStr.c_str());\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ModifiesTime end");\r
- }\r
+//计时器\r
+void TraingCardPresenter::UpdateTimeOfControl() {\r
+ std ::string TimeStr = TraingModel::GetInstance()->DisplayMotionDuration();\r
+ if (TimeStr.empty()) {\r
+ WEARABLE_LOGE(\r
+ WEARABLE_LOG_MODULE_APP,\r
+ "TraingModel::GetInstance()->DisplayMotionDuration() nullptr");\r
+ return;\r
+ }\r
+ if (TrainingControlView::GetInstance()->GetTimeLabel() != nullptr) {\r
+ TrainingControlView::GetInstance()->GetTimeLabel()->SetText(\r
+ TimeStr.c_str());\r
+ }\r
+}\r
+void TraingCardPresenter::UpdateTimeOfData() {\r
+ std ::string TimeStr = TraingModel::GetInstance()->DisplayMotionDuration();\r
+ if (TimeStr.empty()) {\r
+ WEARABLE_LOGE(\r
+ WEARABLE_LOG_MODULE_APP,\r
+ "TraingModel::GetInstance()->DisplayMotionDuration() nullptr");\r
+ return;\r
+ }\r
+ if (TrainingDataView::GetInstance()->GetTimeLabel() != nullptr) {\r
+ TrainingDataView::GetInstance()->GetTimeLabel()->SetText(TimeStr.c_str());\r
+ }\r
+}\r
\r
- /* --------------------------------- cywee库操作 -------------------------------- */\r
- /*开启cywee*/\r
- bool TraingCardPresenter::OpenSensor(ExerciseClass type)\r
- {\r
- // 防止重复开启\r
- if (opensensorstuats)\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OpenSensor is opening!!");\r
- return false;\r
- }\r
- // 根据不同的运动项目进行不同的运动\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TraingCardPresenter::OpenSensor!!");\r
- switch (type)\r
- {\r
- case ExerciseClass::NORMAL:\r
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_NORMAL_MODE, NULL);\r
- break;\r
- case ExerciseClass::TREADMILL:\r
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_TREADMILL_MODE, NULL);\r
- break;\r
- case ExerciseClass::OUTDOOR:\r
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_OUTDOOR_RUNNING_MODE, NULL);\r
- break;\r
- case ExerciseClass::INDOOR:\r
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_INDOOR_RUNNING_MODE, NULL);\r
- break;\r
- case ExerciseClass::FITNESS_PEDOMETER:\r
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_FITNESS_PEDOMETER_MODE, NULL);\r
- break;\r
- case ExerciseClass::FREE_TRAINING:\r
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_FREE_TRAINING_MODE, NULL);\r
- break;\r
- default:\r
- break;\r
- }\r
- opensensorstuats = true;\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OpenSensor--%d!!", type);\r
- return true;\r
- }\r
+/* --------------------------------- cywee库操作\r
+ * -------------------------------- */\r
+/*开启cywee*/\r
+bool TraingCardPresenter::OpenSensor(ExerciseClass type) {\r
+ // 防止重复开启\r
+ if (opensensorstuats) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OpenSensor is opening!!");\r
+ return false;\r
+ }\r
+ // 根据不同的运动项目进行不同的运动\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TraingCardPresenter::OpenSensor!!");\r
+ switch (type) {\r
+ case ExerciseClass::NORMAL:\r
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_NORMAL_MODE, NULL);\r
+ break;\r
+ case ExerciseClass::TREADMILL:\r
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_TREADMILL_MODE, NULL);\r
+ break;\r
+ case ExerciseClass::OUTDOOR:\r
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_OUTDOOR_RUNNING_MODE, NULL);\r
+ break;\r
+ case ExerciseClass::INDOOR:\r
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_INDOOR_RUNNING_MODE, NULL);\r
+ break;\r
+ case ExerciseClass::FITNESS_PEDOMETER:\r
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_FITNESS_PEDOMETER_MODE, NULL);\r
+ break;\r
+ case ExerciseClass::FREE_TRAINING:\r
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_FREE_TRAINING_MODE, NULL);\r
+ break;\r
+ default:\r
+ break;\r
+ }\r
+ opensensorstuats = true;\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OpenSensor--%d!!", type);\r
+ return true;\r
+}\r
\r
- /*控制cywee*/\r
- bool TraingCardPresenter::ControlSensor(ExerciseState state)\r
- {\r
- switch (state)\r
- {\r
- case ExerciseState::End:\r
- // 退出进入普通模式\r
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_NORMAL_MODE, NULL);\r
- opensensorstuats = false; // 恢复标志位\r
- DisableTimer(); // 关闭计时器\r
- break;\r
- case ExerciseState::Pause:\r
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_PAUSE, 0);\r
- break;\r
- case ExerciseState::Continue:\r
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_RESUME, 0);\r
- break;\r
- default:\r
- break;\r
- }\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ControlSensor[%d]!!", state);\r
- return true;\r
- }\r
+/*控制cywee*/\r
+bool TraingCardPresenter::ControlSensor(ExerciseState state) {\r
+ switch (state) {\r
+ case ExerciseState::End:\r
+ // 退出进入普通模式\r
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_NORMAL_MODE, NULL);\r
+ opensensorstuats = false; // 恢复标志位\r
+ DisableTimer(); // 关闭计时器\r
+ break;\r
+ case ExerciseState::Pause:\r
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_PAUSE, 0);\r
+ break;\r
+ case ExerciseState::Continue:\r
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_RESUME, 0);\r
+ break;\r
+ default:\r
+ break;\r
+ }\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ControlSensor[%d]!!", state);\r
+ return true;\r
+}\r
\r
- void TraingCardPresenter::RefreshData(SportData *sportdata)\r
- {\r
- if (sportdata == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "sportdata is null");\r
- return;\r
- }\r
- std::string distanceStr;\r
- if (sportdata->distance != 0)\r
- {\r
- double distance_km = sportdata->distance / 1000.0; // 转换为公里并保留两位小数\r
- std::stringstream ss;\r
- ss << std::fixed << std::setprecision(2) << distance_km;\r
- distanceStr = ss.str();\r
- }\r
- else\r
- {\r
- distanceStr = DEFAULT_DASH;\r
- }\r
-\r
- std::string heartStr = (sportdata->heart != 0) ? std::to_string(sportdata->heart) : DEFAULT_DASH;\r
- std::string stepsStr = (sportdata->steps != 0) ? std::to_string(sportdata->steps) : DEFAULT_DASH;\r
- std::string calorieStr = (sportdata->calories != 0) ? std::to_string(sportdata->calories) : DEFAULT_DASH;\r
- // 训练强度刷新\r
- UIResourceTextId intensityid = TraingModel::GetInstance()->GetIntensity();\r
- // printf("intensityid %d \r\n", intensityid);\r
- TrainingDetailView::GetInstance()->Get_Intensity_Button()->SetTextId(intensityid);\r
-\r
- TrainingDataView::GetInstance()->GetProgress()->SetValue(sportdata->goaldegree); // 目标完成度\r
- TrainingDataView::GetInstance()->GetHeartLabel()->SetText(heartStr.c_str()); // 心率\r
- TrainingDetailView::GetInstance()->GetCalorieLabel()->SetText(calorieStr.c_str()); // 卡路里\r
- TrainingDetailView::GetInstance()->GetMileLabel()->SetText(distanceStr.c_str()); // 距离\r
- TrainingDetailView::GetInstance()->GetStepLabel()->SetText(stepsStr.c_str()); // 步数\r
-\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[Calories: %s, Distance: %s, Steps: %s Intensityid: %d]", calorieStr.c_str(), distanceStr.c_str(), stepsStr.c_str(), intensityid);\r
- // 释放sportdata内存\r
- }\r
+void TraingCardPresenter::RefreshData(SportData *sportdata) {\r
+ if (sportdata == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "sportdata is null");\r
+ return;\r
+ }\r
+ std::string distanceStr;\r
+ if (sportdata->distance != 0) {\r
+ double distance_km =\r
+ sportdata->distance / 1000.0; // 转换为公里并保留两位小数\r
+ std::stringstream ss;\r
+ ss << std::fixed << std::setprecision(2) << distance_km;\r
+ distanceStr = ss.str();\r
+ } else {\r
+ distanceStr = DEFAULT_DASH;\r
+ }\r
+\r
+ std::string heartStr =\r
+ (sportdata->heart != 0) ? std::to_string(sportdata->heart) : DEFAULT_DASH;\r
+ std::string stepsStr =\r
+ (sportdata->steps != 0) ? std::to_string(sportdata->steps) : DEFAULT_DASH;\r
+ std::string calorieStr = (sportdata->calories != 0)\r
+ ? std::to_string(sportdata->calories)\r
+ : DEFAULT_DASH;\r
+ // 训练强度刷新\r
+ UIResourceTextId intensityid = TraingModel::GetInstance()->GetIntensity();\r
+ // printf("intensityid %d \r\n", intensityid);\r
+ TrainingDetailView::GetInstance()->Get_Intensity_Button()->SetTextId(\r
+ intensityid);\r
+\r
+ TrainingDataView::GetInstance()->GetProgress()->SetValue(\r
+ sportdata->goaldegree); // 目标完成度\r
+ TrainingDataView::GetInstance()->GetHeartLabel()->SetText(\r
+ heartStr.c_str()); // 心率\r
+ TrainingDetailView::GetInstance()->GetCalorieLabel()->SetText(\r
+ calorieStr.c_str()); // 卡路里\r
+ TrainingDetailView::GetInstance()->GetMileLabel()->SetText(\r
+ distanceStr.c_str()); // 距离\r
+ TrainingDetailView::GetInstance()->GetStepLabel()->SetText(\r
+ stepsStr.c_str()); // 步数\r
+\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,\r
+ "[Calories: %s, Distance: %s, Steps: %s Intensityid: %d]",\r
+ calorieStr.c_str(), distanceStr.c_str(), stepsStr.c_str(),\r
+ intensityid);\r
+ // 释放sportdata内存\r
+}\r
#if 0\r
/*刷新 time 和 data */\r
void TraingCardPresenter::OnTickEvent()\r
}\r
#endif\r
#if 1\r
- void TraingCardPresenter::Notify(void)\r
- {\r
- // 未开启训练 直接退出\r
- if (TraingModel::GetInstance()->GetSportState() == ExerciseState::General)\r
- return;\r
+void TraingCardPresenter::Notify(void) {\r
+ // 如果未开启训练,直接退出\r
+ if (TraingModel::GetInstance()->GetSportState() == ExerciseState::General) {\r
+ return;\r
+ }\r
+\r
+ Control_Card cardId = static_cast<Control_Card>(view_->GetCurrentPage());\r
+\r
+ switch (cardId) {\r
+ case Control_Card::CONTROL: {\r
+ UpdateTimeOfControl(); // 更新控制界面的时间\r
+ break;\r
+ }\r
+ case Control_Card::DATA: {\r
+ UpdateDataView(); // 更新训练数据视图\r
+ break;\r
+ }\r
+ default:\r
+ break; // 其他情况不处理\r
+ }\r
+}\r
\r
- // 刷新训练数据界面 现实时间\r
- GraphicService::GetInstance()->PostGraphicEvent(std::bind(&TrainingDataView::UpdataTime, TrainingDataView::GetInstance()));\r
+void TraingCardPresenter::UpdateDataView() {\r
+ // 刷新计时\r
+ UpdateTimeOfData();\r
\r
- // 刷新训练数据界面 心率 卡路里 距离 步数 训练强度 目标完成度\r
- SportData *sportdata = TraingModel::GetInstance()->GetSportdata();\r
- GraphicService::GetInstance()->PostGraphicEvent(std::bind(&TraingCardPresenter::RefreshData, TraingCardPresenter::GetInstance(), sportdata));\r
- }\r
+ // 刷新训练数据视图,显示当前时间\r
+ GraphicService::GetInstance()->PostGraphicEvent(std::bind(\r
+ &TrainingDataView::UpdataTime, TrainingDataView::GetInstance()));\r
+\r
+ // 刷新训练数据:心率、卡路里、距离、步数、训练强度、目标完成度\r
+ SportData *sportdata = TraingModel::GetInstance()->GetSportdata();\r
+ RefreshData(sportdata);\r
+}\r
#endif\r
- /* --------------------------------- 点击事件处理 --------------------------------- */\r
- bool TraingCardPresenter::OnClick(UIView &view, const ClickEvent &event)\r
- {\r
- const std::string viewId = view.GetViewId();\r
-\r
- // 定义点击事件映射\r
- static const std::unordered_map<std::string, std::function<void()>> actionMap = {\r
- // 暂停按键\r
- {BUTTONSTOP, [&]()\r
- {\r
- auto currentState = TraingModel::GetInstance()->GetSportState();\r
- if (currentState == ExerciseState::Continue || currentState == ExerciseState::Start)\r
- {\r
- handlePauseState();\r
- }\r
- else if (currentState == ExerciseState::Pause)\r
- {\r
- handleContinueState();\r
- }\r
- }},\r
- // 结束按键\r
- {BUTTONEND, [&]()\r
- {\r
- ControlSensor(ExerciseState::Pause);\r
- TraingCardView::GetInstance()->SetPopupViewStatus(EndPopup, true);\r
- TraingCardView::GetInstance()->RefreshEndView();\r
- }},\r
- // 确定结束\r
- {BUTTONEXIT, [&]()\r
- {\r
- handleEndState();\r
- }},\r
- // 返回\r
- {BUTTONBACK, [&]()\r
- {\r
- ControlSensor(ExerciseState::Continue);\r
- TraingCardView::GetInstance()->SetPopupViewStatus(EndPopup, false);\r
- }},\r
- // 确定达到目标\r
- {BUTTONWINOK, [&]()\r
- {\r
- TraingCardView::GetInstance()->SetPopupViewStatus(GetTagPopup, false);\r
- TraingCardView::GetInstance()->GetAnimator()->Stop();\r
- }},\r
- // 确定心率提醒\r
- {BUTTONNOTE, [&]()\r
- {\r
- TraingCardView::GetInstance()->SetPopupViewStatus(HeartPopup, false);\r
- }},\r
- };\r
-\r
- // 查找并执行对应的操作\r
- auto it = actionMap.find(viewId);\r
- if (it != actionMap.end())\r
- {\r
- it->second(); // 执行操作\r
- return true;\r
- }\r
-\r
- return false; // 没有匹配的操作\r
+/* --------------------------------- 点击事件处理\r
+ * --------------------------------- */\r
+bool TraingCardPresenter::OnClick(UIView &view, const ClickEvent &event) {\r
+ const std::string viewId = view.GetViewId();\r
+\r
+ // 定义点击事件映射\r
+ static const std::unordered_map<std::string, std::function<void()>>\r
+ actionMap = {\r
+ // 暂停按键\r
+ {BUTTONSTOP,\r
+ [&]() {\r
+ auto currentState = TraingModel::GetInstance()->GetSportState();\r
+ if (currentState == ExerciseState::Continue ||\r
+ currentState == ExerciseState::Start) {\r
+ handlePauseState();\r
+ } else if (currentState == ExerciseState::Pause) {\r
+ handleContinueState();\r
+ }\r
+ }},\r
+ // 结束按键\r
+ {BUTTONEND,\r
+ [&]() {\r
+ ControlSensor(ExerciseState::Pause);\r
+ TraingCardView::GetInstance()->SetPopupViewStatus(EndPopup, true);\r
+ TraingCardView::GetInstance()->RefreshEndView();\r
+ }},\r
+ // 确定结束\r
+ {BUTTONEXIT, [&]() { handleEndState(); }},\r
+ // 返回\r
+ {BUTTONBACK,\r
+ [&]() {\r
+ ControlSensor(ExerciseState::Continue);\r
+ TraingCardView::GetInstance()->SetPopupViewStatus(EndPopup, false);\r
+ }},\r
+ // 确定达到目标\r
+ {BUTTONWINOK,\r
+ [&]() {\r
+ TraingCardView::GetInstance()->SetPopupViewStatus(GetTagPopup,\r
+ false);\r
+ TraingCardView::GetInstance()->GetAnimator()->Stop();\r
+ }},\r
+ // 确定心率提醒\r
+ {BUTTONNOTE,\r
+ [&]() {\r
+ TraingCardView::GetInstance()->SetPopupViewStatus(HeartPopup,\r
+ false);\r
+ }},\r
+ };\r
+\r
+ // 查找并执行对应的操作\r
+ auto it = actionMap.find(viewId);\r
+ if (it != actionMap.end()) {\r
+ it->second(); // 执行操作\r
+ return true;\r
+ }\r
+\r
+ return false; // 没有匹配的操作\r
+}\r
+void TraingCardPresenter::OnSwipe(UISwipeView &view) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TempPresenter::OnSwipe ");\r
+ UNUSED(view);\r
+ return;\r
+}\r
+/* -------------------------------- 协议发起运动处理\r
+ * -------------------------------- */\r
+bool TraingCardPresenter::send_sport_cmd(training_ble *cmd) {\r
+ if (cmd == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Invalid sport command");\r
+ return false;\r
+ }\r
+\r
+ switch (cmd->controlmd) {\r
+ case SETGOAL:\r
+ if (TraingModel::GetInstance()->GetSportState() == ExerciseState::General) {\r
+ // 设置目标:在非运动情况下设置 [单指令,执行后退出]\r
+ TraingModel::GetInstance()->SetSportTag(\r
+ static_cast<ExerciseTag>(cmd->sportTagType), cmd->sportTag);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetSportTag is succeed!\r\n");\r
+ return true;\r
}\r
-\r
- /* -------------------------------- 协议发起运动处理 -------------------------------- */\r
- bool TraingCardPresenter::send_sport_cmd(training_ble *cmd)\r
- {\r
- if (cmd == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Invalid sport command");\r
- return false;\r
- }\r
-\r
- switch (cmd->controlmd)\r
- {\r
- case SETGOAL:\r
- if (TraingModel::GetInstance()->GetSportState() == ExerciseState::General)\r
- {\r
- // 设置目标:在非运动情况下设置 [单指令,执行后退出]\r
- TraingModel::GetInstance()->SetSportTag(static_cast<ExerciseTag>(cmd->sportTagType), cmd->sportTag);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetSportTag is succeed!\r\n");\r
- return true;\r
- }\r
- break;\r
-\r
- case SENDDATA:\r
- TraingModel::GetInstance()->SendLiveData(); // 发送实时数据 [单指令,执行后退出]\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SendLiveData is succeed!\r\n");\r
- return true;\r
- default:\r
- break;\r
- }\r
-\r
- if (TraingCardView::GetInstance() == nullptr)\r
- {\r
- uapi_set_screen_on_api(); // 亮屏\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGCRAD);\r
- // 设置目标类型和项目有且只有一次\r
- switch (cmd->sportType)\r
- {\r
- case 0:\r
- TraingModel::GetInstance()->SetSportEvent(STR_EXERCISE_OUTDOORWALKING);\r
- OpenSensor(ExerciseClass::OUTDOOR);\r
- break;\r
- case 1:\r
- TraingModel::GetInstance()->SetSportEvent(STR_EXERCISE_OUTDOORRUNNING);\r
- OpenSensor(ExerciseClass::OUTDOOR);\r
- break;\r
- case 2:\r
- TraingModel::GetInstance()->SetSportEvent(STR_EXERCISE_OUTDOORBIKING);\r
- OpenSensor(ExerciseClass::FREE_TRAINING);\r
- break;\r
- default:\r
- break;\r
- }\r
- }\r
-\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "cmd->sportType[%d],cmd->controlmd[%d],cmd->sportTagType[%d],cmd->sportTag[%d]\r\n", cmd->sportType, cmd->controlmd, cmd->sportTagType, cmd->sportTag);\r
-\r
- ExerciseState cmdState = static_cast<ExerciseState>(cmd->controlmd);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ExerciseState::End [%d]\r\n", cmdState);\r
-\r
- switch (cmdState)\r
- {\r
- case ExerciseState::End:\r
- handleEndState();\r
- break;\r
- case ExerciseState::Pause:\r
- handlePauseState();\r
- break;\r
- case ExerciseState::Continue:\r
- handleContinueState();\r
- break;\r
- case ExerciseState::Start:\r
- handleStartState();\r
- break;\r
- default:\r
- break;\r
- }\r
-\r
- return true;\r
+ break;\r
+\r
+ case SENDDATA:\r
+ TraingModel::GetInstance()\r
+ ->SendLiveData(); // 发送实时数据 [单指令,执行后退出]\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SendLiveData is succeed!\r\n");\r
+ return true;\r
+ default:\r
+ break;\r
+ }\r
+\r
+ if (TraingCardView::GetInstance() == nullptr) {\r
+ uapi_set_screen_on_api(); // 亮屏\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGCRAD);\r
+ // 设置目标类型和项目有且只有一次\r
+ switch (cmd->sportType) {\r
+ case 0:\r
+ TraingModel::GetInstance()->SetSportEvent(STR_EXERCISE_OUTDOORWALKING);\r
+ OpenSensor(ExerciseClass::OUTDOOR);\r
+ break;\r
+ case 1:\r
+ TraingModel::GetInstance()->SetSportEvent(STR_EXERCISE_OUTDOORRUNNING);\r
+ OpenSensor(ExerciseClass::OUTDOOR);\r
+ break;\r
+ case 2:\r
+ TraingModel::GetInstance()->SetSportEvent(STR_EXERCISE_OUTDOORBIKING);\r
+ OpenSensor(ExerciseClass::FREE_TRAINING);\r
+ break;\r
+ default:\r
+ break;\r
}\r
+ }\r
+\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,\r
+ "cmd->sportType[%d],cmd->controlmd[%d],cmd->sportTagType[%d],"\r
+ "cmd->sportTag[%d]\r\n",\r
+ cmd->sportType, cmd->controlmd, cmd->sportTagType,\r
+ cmd->sportTag);\r
+\r
+ ExerciseState cmdState = static_cast<ExerciseState>(cmd->controlmd);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ExerciseState::End [%d]\r\n",\r
+ cmdState);\r
+\r
+ switch (cmdState) {\r
+ case ExerciseState::End:\r
+ handleEndState();\r
+ break;\r
+ case ExerciseState::Pause:\r
+ handlePauseState();\r
+ break;\r
+ case ExerciseState::Continue:\r
+ handleContinueState();\r
+ break;\r
+ case ExerciseState::Start:\r
+ handleStartState();\r
+ break;\r
+ default:\r
+ break;\r
+ }\r
+\r
+ return true;\r
+}\r
\r
- /*训练结束*/\r
- void TraingCardPresenter::handleEndState()\r
- {\r
- TraingModel::GetInstance()->SetSportState(ExerciseState::End);\r
- ControlSensor(ExerciseState::End);\r
+/*训练结束*/\r
+void TraingCardPresenter::handleEndState() {\r
+ TraingModel::GetInstance()->SetSportState(ExerciseState::End);\r
+ ControlSensor(ExerciseState::End);\r
#if DATATEST\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGENDDATA);\r
- return;\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGENDDATA);\r
+ return;\r
#endif\r
- // 是否达到训练目标\r
- if (TraingModel::GetInstance()->GetMomentum())\r
- {\r
- // 进入训练详情\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGENDDATA);\r
- NativeAbility::GetInstance().ClearSliceIdStack(); // 清空所有SLiceId栈元素\r
- }\r
- else\r
- {\r
- // 进入训练记录\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_TRAINING_RECORD);\r
- NativeAbility::GetInstance().ClearSliceIdStack(); // 清空所有SLiceId栈元素\r
- }\r
- }\r
-\r
- /*训练暂停*/\r
- void TraingCardPresenter::handlePauseState()\r
- {\r
- TrainingControlView::GetInstance()->GetLabel()->SetTextId(STR_RESUME);\r
- TrainingControlView::GetInstance()->GetButton()->SetImageSrc(SPORT_CONTINUE_IMAGE, SPORT_CONTINUE_IMAGE);\r
- TraingModel::GetInstance()->SetSportState(ExerciseState::Pause);\r
- PauseTimer();\r
- ControlSensor(ExerciseState::Pause);\r
+ // 是否达到训练目标\r
+ if (TraingModel::GetInstance()->GetMomentum()) {\r
+ // 进入训练详情\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGENDDATA);\r
+ NativeAbility::GetInstance().ClearSliceIdStack(); // 清空所有SLiceId栈元素\r
+ } else {\r
+ // 进入训练记录\r
+ // NativeAbility::GetInstance().ChangeSlice(VIEW_TRAINING_RECORD);\r
+ if (TraingModel::GetInstance()->GetEntryType() == APPLIST_ENTER)\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAINING,\r
+ TransitionType::TRANSITION_ZOOM);\r
+ else {\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN,\r
+ TransitionType::TRANSITION_ZOOM);\r
+ NativeAbility::GetInstance().ClearSliceIdStack(); // 清空所有SLiceId栈元素\r
}\r
+ NativeAbility::GetInstance().ClearSliceIdStack(); // 清空所有SLiceId栈元素\r
+ }\r
+}\r
\r
- /*训练继续*/\r
- void TraingCardPresenter::handleContinueState()\r
- {\r
- TrainingControlView::GetInstance()->GetLabel()->SetTextId(STR_PAUSE);\r
- TrainingControlView::GetInstance()->GetButton()->SetImageSrc(SPORT_PAUSE_IMAGE, SPORT_PAUSE_IMAGE);\r
- TraingModel::GetInstance()->SetSportState(ExerciseState::Continue);\r
- ResumeTimer();\r
- ControlSensor(ExerciseState::Continue);\r
- }\r
+/*训练暂停*/\r
+void TraingCardPresenter::handlePauseState() {\r
+ TrainingControlView::GetInstance()->GetLabel()->SetTextId(STR_RESUME);\r
+ TrainingControlView::GetInstance()->GetButton()->SetImageSrc(\r
+ SPORT_CONTINUE_IMAGE, SPORT_CONTINUE_IMAGE);\r
+ TraingModel::GetInstance()->SetSportState(ExerciseState::Pause);\r
+ PauseTimer();\r
+ ControlSensor(ExerciseState::Pause);\r
+}\r
\r
- /*训练开始*/\r
- void TraingCardPresenter::handleStartState()\r
- {\r
- ControlSensor(ExerciseState::Start);\r
- TraingModel::GetInstance()->SetSportOpenWay(true);\r
- }\r
+/*训练继续*/\r
+void TraingCardPresenter::handleContinueState() {\r
+ TrainingControlView::GetInstance()->GetLabel()->SetTextId(STR_PAUSE);\r
+ TrainingControlView::GetInstance()->GetButton()->SetImageSrc(\r
+ SPORT_PAUSE_IMAGE, SPORT_PAUSE_IMAGE);\r
+ TraingModel::GetInstance()->SetSportState(ExerciseState::Continue);\r
+ ResumeTimer();\r
+ ControlSensor(ExerciseState::Continue);\r
+}\r
\r
+/*训练开始*/\r
+void TraingCardPresenter::handleStartState() {\r
+ ControlSensor(ExerciseState::Start);\r
+ TraingModel::GetInstance()->SetSportOpenWay(true);\r
}\r
+\r
+} // namespace OHOS\r
\r
#include "traing/training_card/include/TraingCardView.h"\r
+#include "UiConfig.h"\r
#include "common/image_cache_manager.h"\r
+#include "components/ui_button.h"\r
#include "components/ui_label_ext.h"\r
-#include "ui_resource_string.h"\r
-#include "UiConfig.h"\r
#include "ui_resource_image.h"\r
+#include "ui_resource_string.h"\r
#include <ui_scroll_view.h>\r
-#include "components/ui_button.h"\r
\r
#include "common/screen.h"\r
#include "components/ui_digital_clock.h"\r
#include "components/ui_label_ext.h"\r
#include "font/ui_font.h"\r
\r
-#include "traing/include/TraingModel.h"\r
-#include "uicomponents/UIComponents.h"\r
#include "ConfigModel.h"\r
#include "custom_utils.h"\r
+#include "traing/include/TraingModel.h"\r
+#include "uicomponents/UIComponents.h"\r
\r
-extern "C"\r
-{\r
- void InitTimer();\r
- void DisableTimer();\r
+extern "C" {\r
+void InitTimer();\r
+void DisableTimer();\r
}\r
\r
-namespace OHOS\r
-{\r
+namespace OHOS {\r
\r
#ifdef __cplusplus\r
- extern "C"\r
- {\r
+extern "C" {\r
#endif\r
\r
-#include "pm_veto.h"\r
#include "pm.h"\r
- /*移除睡眠否决投票*/\r
- void uapi_remove_sport_vote(void)\r
- {\r
- uint8_t cnt = pm_veto_get_id_cnt(PM_ID_HEART);\r
- if (cnt == 1)\r
- {\r
- uapi_pm_remove_sleep_veto(PM_ID_HEART);\r
- }\r
- else\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE, "Sport SERVICE MCU has delete pm_id_Sport vote");\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_MAIN_SERVICE, "Sport SERVICE MCU SLEEP SUCCESS");\r
- }\r
-\r
- /*添加睡眠否决投票*/\r
- void uapi_add_sport_vote(void)\r
- {\r
- uint8_t cnt = pm_veto_get_id_cnt(PM_ID_HEART);\r
- if (cnt == 0)\r
- {\r
- uapi_pm_add_sleep_veto(PM_ID_HEART);\r
- }\r
- else\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE, "Sport SERVICE MCU has got pm_id_Sport vote");\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_MAIN_SERVICE, "Sport SERVICE MCU WAKEUP SUCCESS");\r
- }\r
+#include "pm_veto.h"\r
+/*移除睡眠否决投票*/\r
+void uapi_remove_sport_vote(void) {\r
+ uint8_t cnt = pm_veto_get_id_cnt(PM_ID_HEART);\r
+ if (cnt == 1) {\r
+ uapi_pm_remove_sleep_veto(PM_ID_HEART);\r
+ } else {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,\r
+ "Sport SERVICE MCU has delete pm_id_Sport vote");\r
+ }\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_MAIN_SERVICE,\r
+ "Sport SERVICE MCU SLEEP SUCCESS");\r
+}\r
+\r
+/*添加睡眠否决投票*/\r
+void uapi_add_sport_vote(void) {\r
+ uint8_t cnt = pm_veto_get_id_cnt(PM_ID_HEART);\r
+ if (cnt == 0) {\r
+ uapi_pm_add_sleep_veto(PM_ID_HEART);\r
+ } else {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,\r
+ "Sport SERVICE MCU has got pm_id_Sport vote");\r
+ }\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_MAIN_SERVICE,\r
+ "Sport SERVICE MCU WAKEUP SUCCESS");\r
+}\r
\r
#ifdef __cplusplus\r
- }\r
+}\r
#endif\r
\r
- static const uint16_t LABEL_FONT_SIZE = 200;\r
- static const uint32_t BACK_GROUND_COLOR = 0xfff6f6f6;\r
- static const uint32_t CARD_PAGE_COLOR = 0xffd0d0d0;\r
-\r
- static TraingCardView *g_pTraingCardView{nullptr};\r
-\r
- TraingCardView::TraingCardView()\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TraingCardView::TraingCardView");\r
- InitTimer(); // 开启计时器\r
- TraingModel::GetInstance()->SetSportState(ExerciseState::Start); // 设置运动状态为开始\r
- TraingModel::GetInstance()->SetTimestamp();\r
- uapi_add_sport_vote(); // 保护进程\r
- g_pTraingCardView = this;\r
- }\r
-\r
- TraingCardView::~TraingCardView()\r
- {\r
- imageAnimator->Stop();\r
- FreeImageInfoArray(winimageInfos, winbasePath.c_str(), 94);\r
- ReleaseImageAnimatorSource(winimageAnimatorInfo, 94);\r
- DeInit();\r
-\r
- g_pTraingCardView = nullptr;\r
- DisableTimer(); // 关闭计时器\r
- TraingModel::GetInstance()->SetTimestamp();\r
- uapi_remove_sport_vote(); // 移除\r
- }\r
-\r
- TraingCardView *TraingCardView::GetInstance()\r
- {\r
- return g_pTraingCardView;\r
- }\r
-\r
- /* InitView:初始化界面*/\r
- void TraingCardView ::InitView()\r
- {\r
- UISwipeView::OnSwipeListener *listener = nullptr;\r
-\r
- if (swipe_ == nullptr)\r
- {\r
- swipe_ = new UICrossView();\r
- swipe_->SetPosition(0, 0, 466, 466);\r
- swipe_->SetStyle(STYLE_BACKGROUND_OPA, 0);\r
- }\r
-\r
- InitControlPage();\r
- InitDataPage();\r
- InitMusicPage();\r
- InitDetailPage();\r
-\r
- swipe_->HorAdd(ControlView);\r
- swipe_->HorAdd(DataVIew);\r
- swipe_->HorAdd(MusicView);\r
-\r
- ShowEndView();\r
- ShowGetTagView();\r
- ShowHeartView();\r
- // swipe_->HorAdd(DetailView);\r
-\r
- swipe_->VerAdd(DetailView, UICrossView::VPage::DOWN_PAGE);\r
- swipe_->SetHorCurrentPage(Control_Card::DATA); // 设置进入索引 [数据]\r
-\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TraingCardView::InitPage over");\r
- }\r
-\r
- /* DeInit:删除组件 */\r
- void TraingCardView::DeInit()\r
- {\r
- swipe_->RemoveAll();\r
-\r
- /*界面*/\r
- ControlView->RemoveAll();\r
- DataVIew->RemoveAll();\r
- DetailView->RemoveAll();\r
- MusicView->RemoveAll();\r
- endView->RemoveAll();\r
- getView->RemoveAll();\r
- heartView->RemoveAll();\r
-\r
- /*标签*/\r
- delete endtitle;\r
- endtitle = nullptr;\r
- delete notelabel;\r
- notelabel = nullptr;\r
- delete endnotelabel;\r
- endnotelabel = nullptr;\r
- delete endnote;\r
- endnote = nullptr;\r
- delete labeltitle;\r
- labeltitle = nullptr;\r
- delete labeltag;\r
- labeltag = nullptr;\r
- delete labelgettag;\r
- labelgettag = nullptr;\r
- delete labelpre;\r
- labelpre = nullptr;\r
- delete hearttitle;\r
- hearttitle = nullptr;\r
- delete labelnote;\r
- labelnote = nullptr;\r
- /*图片*/\r
- delete heartiamge;\r
- heartiamge = nullptr;\r
-\r
- /*按键*/\r
- delete exit;\r
- exit = nullptr;\r
- delete back;\r
- back = nullptr;\r
- delete buttonok_;\r
- buttonok_ = nullptr;\r
- delete buttonnote_;\r
- buttonnote_ = nullptr;\r
-\r
- /*动画*/\r
- delete imageAnimator;\r
- imageAnimator = nullptr;\r
-\r
- /*卡片*/\r
- delete ControlView;\r
- ControlView = nullptr;\r
- delete DataVIew;\r
- DataVIew = nullptr;\r
- delete DetailView;\r
- DetailView = nullptr;\r
- delete swipe_;\r
- delete MusicView;\r
- MusicView = nullptr;\r
- /*弹窗*/\r
- delete endView;\r
- endView = nullptr;\r
- delete getView;\r
- getView = nullptr;\r
- delete heartView;\r
- heartView = nullptr;\r
-\r
- swipe_ = nullptr;\r
- }\r
- UICardPage *TraingCardView::InitControlPage(void)\r
- {\r
- ControlView = new TrainingControlView();\r
- ControlView->PreLoad();\r
- if (ControlView == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ControlView new fail");\r
- return nullptr;\r
- }\r
- return ControlView;\r
- }\r
- UICardPage *TraingCardView::InitDataPage(void)\r
- {\r
- DataVIew = new TrainingDataView();\r
- DataVIew->PreLoad();\r
- if (DataVIew == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DataVIew new fail");\r
- return nullptr;\r
- }\r
- return DataVIew;\r
- }\r
- UICardPage *TraingCardView::InitMusicPage(void)\r
- {\r
- MusicView = new PlayersView();\r
- MusicView->PreLoad();\r
- if (MusicView == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MusicView new fail");\r
- return nullptr;\r
- }\r
- return MusicView;\r
- }\r
- UICardPage *TraingCardView::InitDetailPage()\r
- {\r
- DetailView = new TrainingDetailView();\r
- DetailView->PreLoad();\r
- DetailView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
- DetailView->SetStyle(STYLE_BORDER_RADIUS, 466); // 设置为圆形\r
- if (DetailView == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DetailView new fail");\r
- return nullptr;\r
- }\r
- return DetailView;\r
- }\r
- void TraingCardView::PreLoad(void)\r
- {\r
- if (!viewiInitStatus)\r
- {\r
- InitView();\r
- viewiInitStatus = true;\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TraingCardView PreLoad");\r
- }\r
- void TraingCardView::OnStart()\r
- {\r
- swipe_ = new UICrossView();\r
- if (swipe_ == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "swipe_ new fail");\r
- return;\r
- }\r
- swipe_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
- // 创建 draglistener 实例并设置为拖动监听器\r
- UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(TraingCardPresenter::GetInstance());\r
- if (draglistener == nullptr)\r
- {\r
- return;\r
- }\r
- swipe_->SetOnDragListener(draglistener);\r
- swipe_->SetTouchable(true);\r
- swipe_->SetDraggable(true);\r
- swipe_->SetStyle(STYLE_BACKGROUND_COLOR, BACK_GROUND_COLOR);\r
- swipe_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
- // swipe_->EnableScreenCap(true);\r
- PreLoad();\r
- SetContainerView(swipe_);\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "swipe_ new ok");\r
- }\r
- /*设置弹窗状态*/\r
- void TraingCardView::SetPopupViewStatus(PopupType type, bool status)\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetPopupViewStatus %d", type);\r
- UIView *popupView = nullptr;\r
- if (type == EndPopup)\r
- {\r
- popupView = endView;\r
- }\r
- else if (type == GetTagPopup)\r
- {\r
- popupView = getView;\r
- }\r
- else if (type == HeartPopup)\r
- {\r
- popupView = heartView;\r
- }\r
-\r
- if (popupView == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PopupView is NULL");\r
- return;\r
- }\r
-\r
- UIView *cardview = TraingCardView::GetInstance()->GetTraingCrad();\r
- if (cardview != nullptr)\r
- {\r
- cardview->SetVisible(!status);\r
- }\r
-\r
- popupView->SetVisible(status);\r
- }\r
- /*结束弹窗界面*/\r
- void TraingCardView::ShowEndView()\r
- {\r
- // momentumFlag = false; // 标志位还原\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowEndView");\r
- endView = new UIScrollView();\r
- if (endView == nullptr)\r
- {\r
- return;\r
- }\r
- endView->SetPosition(0, 0);\r
- endView->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);\r
- endView->SetScrollBlankSize(20);\r
- endView->SetReboundSize(50);\r
- endView->SetDirection(1);\r
-\r
- InitRollLabel(endtitle, 83, 50, 300, 35, "label1", STR_LOOK_OUT, DEFAULT_VECTOR_FONT_FILENAME, 30);\r
- InitRollLabel(notelabel, 56, 167, 360, 80, "label2", STR_INSUFFICIENT_EXERCISE_AMOUNT, DEFAULT_VECTOR_FONT_FILENAME, 30);\r
- /*隐藏是否结束运动title*/\r
- InitRollLabel(endnote, 56, 207, 360, 80, "label3", STR_END_THIS_MOVEMENT, DEFAULT_VECTOR_FONT_FILENAME, 30);\r
- endnote->SetVisible(false);\r
-\r
- endView->Add(endnote);\r
- endView->Add(endtitle);\r
- endView->Add(notelabel);\r
-\r
- InitButton(exit, 111, 299, 100, 100, BUTTONBACK);\r
- exit->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingCardPresenter::GetInstance()));\r
- exit->SetImageSrc(NO_IMAGE, NO_IMAGE);\r
- InitButton(back, 256, 299, 100, 100, BUTTONEXIT);\r
- back->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingCardPresenter::GetInstance()));\r
- back->SetImageSrc(YES_IMAGE, YES_IMAGE);\r
- endView->Add(exit);\r
- endView->Add(back);\r
- RootView::GetInstance()->Add(endView);\r
- endView->SetDraggable(false);\r
- endView->SetTouchable(true);\r
- endView->SetVisible(false); // 界面隐藏\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowEndView end");\r
- }\r
- /*目标达成界面*/\r
- void TraingCardView::ShowGetTagView()\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowGetTagView");\r
- getView = new UIScrollView();\r
- if (getView == nullptr)\r
- {\r
- return;\r
- }\r
- getView->SetPosition(0, 0);\r
- getView->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);\r
- getView->SetScrollBlankSize(20);\r
- getView->SetReboundSize(50);\r
- getView->SetDirection(1);\r
-\r
- // 初始化Lable\r
- InitRollLabel(labeltitle, 83, 50, 300, 35, "label1", STR_GOAL_ACHIEVED, DEFAULT_VECTOR_FONT_FILENAME, 35);\r
- getView->Add(labeltitle);\r
- InitRollLabel(labelgettag, 103, 307, 200, 35, "label3", STR_ACCOMPLISH_GOAL, DEFAULT_VECTOR_FONT_FILENAME, 30);\r
- getView->Add(labelgettag);\r
- InitLabel(labelpre, 233, 307, 160, 35, "label3", "100%", DEFAULT_VECTOR_FONT_FILENAME, 30);\r
- getView->Add(labelpre);\r
-\r
- // 初始化按键\r
- InitButtonExt(buttonok_, 0, 366, 466, 100, BUTTONWINOK, STR_OK, 30);\r
- buttonok_->SetImageSrc(BUTTONOK_IMAGE, BUTTONOK_IMAGE);\r
- buttonok_->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingCardPresenter::GetInstance()));\r
- getView->Add(buttonok_);\r
-\r
- InitImageAnimator();\r
- RootView::GetInstance()->Add(getView);\r
- getView->SetDraggable(false);\r
- getView->SetTouchable(true);\r
- getView->SetVisible(false); // 界面隐藏\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowGetTagView end");\r
- }\r
- /*最高心率提醒弹窗*/\r
- void TraingCardView::ShowHeartView()\r
- {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowHeartView");\r
- heartView = new UIScrollView();\r
- if (heartView == nullptr)\r
- {\r
- return;\r
- }\r
- heartView->SetPosition(0, 0);\r
- heartView->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);\r
- heartView->SetScrollBlankSize(20);\r
- heartView->SetReboundSize(50);\r
- heartView->SetDirection(1);\r
-\r
- // 初始化Lable\r
- InitRollLabel(hearttitle, 83, 50, 300, 35, "label1", STR_HEARTTITLE, DEFAULT_VECTOR_FONT_FILENAME, 35);\r
- heartView->Add(hearttitle);\r
-\r
- int maxheart = ConfigModel::GetInstance()->get_configData_int(ConfigModel::CONFIGMODEL_ITEM_TRAINING_HEART_MAX);\r
- std::string heartStr = "当前心率高于" + std::to_string(maxheart) + "次/分钟";\r
- InitLabel(labelnote, 53, 269, 360, 35, "label3", heartStr.c_str(), DEFAULT_VECTOR_FONT_FILENAME, 30);\r
- heartView->Add(labelnote);\r
-\r
- InitImageView(heartiamge, 193, 149, 80, 80, "note", WARNING_IMAGE);\r
- heartView->Add(heartiamge);\r
-\r
- // 初始化按键\r
- InitButtonExt(buttonnote_, 0, 366, 466, 100, BUTTONNOTE, STR_OK, 30);\r
- buttonnote_->SetImageSrc(BUTTONOK_IMAGE, BUTTONOK_IMAGE);\r
- buttonnote_->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingCardPresenter::GetInstance()));\r
- heartView->Add(buttonnote_);\r
-\r
- RootView::GetInstance()->Add(heartView);\r
- heartView->SetDraggable(false);\r
- heartView->SetTouchable(true);\r
- heartView->SetVisible(false); // 界面隐藏\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowHeartView end");\r
- }\r
- /*获取运动量结束弹窗界面刷新*/\r
- bool TraingCardView::RefreshEndView()\r
- {\r
- // 获取训练卡路里判断运动量\r
- momentumFlag = TraingModel::GetInstance()->GetMomentum();\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "momentumFlag %d", momentumFlag);\r
-\r
- if (momentumFlag)\r
- {\r
- // 正常结束\r
- endnote->SetVisible(false);\r
- endtitle->SetTextId(STR_END_MOVEMENT);\r
- notelabel->SetTextId(STR_END_THIS_MOVEMENT);\r
- }\r
- else\r
- {\r
- endtitle->SetTextId(STR_LOOK_OUT);\r
- notelabel->SetTextId(STR_INSUFFICIENT_EXERCISE_AMOUNT);\r
- endnote->SetVisible(true);\r
- }\r
- return momentumFlag;\r
- }\r
- /*初始化动画以及Taglabel*/\r
- void TraingCardView::InitImageAnimator()\r
- {\r
- int tag = TraingModel::GetInstance()->GetSportTag();\r
- ExerciseTag tagType = TraingModel::GetInstance()->GetSportTagtype();\r
- std::string tagString = std::to_string(tag);\r
- switch (tagType)\r
- {\r
- case ExerciseTag::Duration:\r
- {\r
- int hours = tag / 60;\r
- int minutes = tag % 60;\r
- int seconds = 0;\r
- // 将小时、分钟、秒转换为字符串,并在小于10时补零\r
- std::string hoursStr = (hours < 10) ? "0" + std::to_string(hours) : std::to_string(hours);\r
- std::string minutesStr = (minutes < 10) ? "0" + std::to_string(minutes) : std::to_string(minutes);\r
- std::string secondsStr = (seconds < 10) ? "0" + std::to_string(seconds) : std::to_string(seconds);\r
- tagString = hoursStr + ":" + minutesStr + ":" + secondsStr;\r
- break;\r
- }\r
- case ExerciseTag::Calories:\r
- {\r
- tagString = tagString + "kcal";\r
- break;\r
- }\r
- case ExerciseTag::Distance:\r
- {\r
- tagString = tagString + "km";\r
- break;\r
- }\r
- case ExerciseTag::Steps:\r
- break;\r
- default:\r
- break;\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "tag[%d]-tagType[%d]-tagString[%s]\r\n", tag, tagType, tagString.c_str());\r
- InitLabel(labeltag, 70, 215, 326, 97, "label2", tagString.c_str(), DEFAULT_VECTOR_FONT_FILENAME, 80);\r
- labeltag->SetTextColor(Color::GetColorFromRGBA(0x4f, 0xc3, 0x4c, 0xff));\r
- getView->Add(labeltag);\r
-\r
- // 初始化图片数组以及动画\r
- winimageInfos = CreateImageInfoArray(winbasePath.c_str(), 94);\r
- InitImageAnimatorSource(imageAnimator, winimageAnimatorInfo, winimageInfos, 94, 173, 100, 120, 120, "imageAnimator1", 10);\r
- getView->Add(imageAnimator);\r
- }\r
-\r
- /*获取卡片View单例*/\r
- UICrossView *TraingCardView::GetTraingCrad()\r
- {\r
- return swipe_;\r
- }\r
- void TraingCardView::OnSetUpView()\r
- {\r
- View<TraingCardPresenter>::OnSetUpView();\r
- Draw();\r
- }\r
-\r
- void TraingCardView::OnTearDownView()\r
- {\r
- View<TraingCardPresenter>::OnTearDownView();\r
- return;\r
- }\r
-\r
- void TraingCardView::OnStop()\r
- {\r
- View<TraingCardPresenter>::OnStop();\r
- RootView::GetInstance()->RemoveAll();\r
- return;\r
- }\r
-\r
- int TraingCardView::GetCurrentPage()\r
- {\r
- return swipe_->GetCurrentPageId(0); // 获取水平页面\r
- }\r
- UIImageAnimatorView *TraingCardView::GetAnimator()\r
- {\r
- return imageAnimator;\r
- }\r
+static const uint16_t LABEL_FONT_SIZE = 200;\r
+static const uint32_t BACK_GROUND_COLOR = 0xfff6f6f6;\r
+static const uint32_t CARD_PAGE_COLOR = 0xffd0d0d0;\r
+\r
+static TraingCardView *g_pTraingCardView{nullptr};\r
+\r
+TraingCardView::TraingCardView() {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TraingCardView::TraingCardView");\r
+ InitTimer(); // 开启计时器\r
+ TraingModel::GetInstance()->SetSportState(\r
+ ExerciseState::Start); // 设置运动状态为开始\r
+ TraingModel::GetInstance()->SetTimestamp();\r
+ uapi_add_sport_vote(); // 保护进程\r
+ g_pTraingCardView = this;\r
+}\r
+\r
+TraingCardView::~TraingCardView() {\r
+ imageAnimator->Stop();\r
+ FreeImageInfoArray(winimageInfos, winbasePath.c_str(), 94);\r
+ ReleaseImageAnimatorSource(winimageAnimatorInfo, 94);\r
+ DeInit();\r
+\r
+ g_pTraingCardView = nullptr;\r
+ DisableTimer(); // 关闭计时器\r
+ TraingModel::GetInstance()->SetTimestamp();\r
+ uapi_remove_sport_vote(); // 移除\r
+}\r
+\r
+TraingCardView *TraingCardView::GetInstance() { return g_pTraingCardView; }\r
+\r
+/* InitView:初始化界面*/\r
+void TraingCardView ::InitView() {\r
+\r
+ if (swipe_ == nullptr) {\r
+ swipe_ = new UICrossView();\r
+ swipe_->SetPosition(0, 0, 466, 466);\r
+ swipe_->SetStyle(STYLE_BACKGROUND_OPA, 0);\r
+ }\r
+\r
+ InitControlPage();\r
+ InitDataPage();\r
+ InitMusicPage();\r
+ InitDetailPage();\r
+\r
+ swipe_->HorAdd(controlview_);\r
+ swipe_->HorAdd(dataallview_);\r
+ swipe_->HorAdd(musicview_);\r
+\r
+ ShowEndView();\r
+ ShowGetTagView();\r
+ ShowHeartView();\r
+\r
+ // swipe_->HorAdd(DetailView);\r
+ swipe_->VerAdd(DetailView, UICrossView::VPage::DOWN_PAGE);\r
+\r
+ swipe_->SetHorCurrentPage(Control_Card::DATA); // 设置进入索引 [数据]\r
+\r
+ UISwipeView::OnSwipeListener *onSwipeListener =\r
+ static_cast<UISwipeView::OnSwipeListener *>(\r
+ OHOS::TraingCardPresenter::GetInstance());\r
+ if (onSwipeListener == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "onSwipeListener is null");\r
+ return;\r
+ }\r
+ swipe_->SetOnSwipeListener(onSwipeListener);\r
+\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TraingCardView::InitPage over");\r
+}\r
+\r
+/* DeInit:删除组件 */\r
+void TraingCardView::DeInit() {\r
+ swipe_->RemoveAll();\r
+\r
+ /*界面*/\r
+ controlview_->RemoveAll();\r
+ dataallview_->RemoveAll();\r
+ // DetailView->RemoveAll();\r
+ musicview_->RemoveAll();\r
+ endView->RemoveAll();\r
+ getView->RemoveAll();\r
+ heartView->RemoveAll();\r
+\r
+ /*标签*/\r
+ delete endtitle;\r
+ endtitle = nullptr;\r
+ delete notelabel;\r
+ notelabel = nullptr;\r
+ delete endnotelabel;\r
+ endnotelabel = nullptr;\r
+ delete endnote;\r
+ endnote = nullptr;\r
+ delete labeltitle;\r
+ labeltitle = nullptr;\r
+ delete labeltag;\r
+ labeltag = nullptr;\r
+ delete labelgettag;\r
+ labelgettag = nullptr;\r
+ delete labelpre;\r
+ labelpre = nullptr;\r
+ delete hearttitle;\r
+ hearttitle = nullptr;\r
+ delete labelnote;\r
+ labelnote = nullptr;\r
+ /*图片*/\r
+ delete heartiamge;\r
+ heartiamge = nullptr;\r
+\r
+ /*按键*/\r
+ delete exit;\r
+ exit = nullptr;\r
+ delete back;\r
+ back = nullptr;\r
+ delete buttonok_;\r
+ buttonok_ = nullptr;\r
+ delete buttonnote_;\r
+ buttonnote_ = nullptr;\r
+\r
+ /*动画*/\r
+ delete imageAnimator;\r
+ imageAnimator = nullptr;\r
+\r
+ /*卡片*/\r
+ delete controlview_;\r
+ controlview_ = nullptr;\r
+ delete dataallview_;\r
+ dataallview_ = nullptr;\r
+ // delete DetailView;\r
+ // DetailView = nullptr;\r
+ delete swipe_;\r
+ delete musicview_;\r
+ musicview_ = nullptr;\r
+ /*弹窗*/\r
+ delete endView;\r
+ endView = nullptr;\r
+ delete getView;\r
+ getView = nullptr;\r
+ delete heartView;\r
+ heartView = nullptr;\r
+\r
+ swipe_ = nullptr;\r
+}\r
+UICardPage *TraingCardView::InitControlPage(void) {\r
+ controlview_ = new TrainingControlView();\r
+ // controlview_->PreLoad();\r
+ if (controlview_ == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "controlview_ new fail");\r
+ return nullptr;\r
+ }\r
+ return controlview_;\r
+}\r
+UICardPage *TraingCardView::InitDataPage(void) {\r
+ dataallview_ = new TraingDataAllView();\r
+ // dataallview_->PreLoad();\r
+ if (dataallview_ == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dataallview_ new fail");\r
+ return nullptr;\r
+ }\r
+ return dataallview_;\r
+}\r
+UICardPage *TraingCardView::InitMusicPage(void) {\r
+ musicview_ = new PlayersView();\r
+ // musicview_->PreLoad();\r
+ if (musicview_ == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "musicview_ new fail");\r
+ return nullptr;\r
+ }\r
+ return musicview_;\r
+}\r
+UICardPage *TraingCardView::InitDetailPage() {\r
+ DetailView = new TrainingDetailView();\r
+ // DetailView->PreLoad();\r
+ DetailView->SetPosition(0, 0, Screen::GetInstance().GetWidth(),\r
+ Screen::GetInstance().GetHeight());\r
+ DetailView->SetStyle(STYLE_BORDER_RADIUS, 466); // 设置为圆形\r
+ if (DetailView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DetailView new fail");\r
+ return nullptr;\r
+ }\r
+ return DetailView;\r
+}\r
+void TraingCardView::PreLoad(void) {\r
+ if (!viewiInitStatus) {\r
+ InitView();\r
+ viewiInitStatus = true;\r
+ }\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TraingCardView PreLoad");\r
+}\r
+void TraingCardView::OnStart() {\r
+ View<TraingCardPresenter>::OnStart();\r
+\r
+ swipe_ = new UICrossView();\r
+ if (swipe_ == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "swipe_ new fail");\r
+ return;\r
+ }\r
+ UIView::OnDragListener *listener =\r
+ static_cast<UIView::OnDragListener *>(TraingCardPresenter::GetInstance());\r
+ if (listener == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,\r
+ "AlarmSetWeekView:: new alarmDragListener fail");\r
+ return;\r
+ }\r
+ swipe_->SetOnDragListener(listener);\r
+\r
+ PreLoad();\r
+ swipe_->SetPosition(0, 0, Screen::GetInstance().GetWidth(),\r
+ Screen::GetInstance().GetHeight());\r
+ swipe_->SetTouchable(true);\r
+ swipe_->SetDraggable(true);\r
+ swipe_->SetStyle(STYLE_BACKGROUND_COLOR, BACK_GROUND_COLOR);\r
+ swipe_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
+ swipe_->EnableScreenCap(true);\r
+ swipe_->SetAnimatorTime(50);\r
+\r
+ SetContainerView(swipe_);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "swipe_ new ok");\r
+}\r
+/*设置弹窗状态*/\r
+void TraingCardView::SetPopupViewStatus(PopupType type, bool status) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetPopupViewStatus %d", type);\r
+ UIView *popupView = nullptr;\r
+ if (type == EndPopup) {\r
+ popupView = endView;\r
+ } else if (type == GetTagPopup) {\r
+ popupView = getView;\r
+ } else if (type == HeartPopup) {\r
+ popupView = heartView;\r
+ }\r
+\r
+ if (popupView == nullptr) {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PopupView is NULL");\r
+ return;\r
+ }\r
+\r
+ UIView *cardview = TraingCardView::GetInstance()->GetTraingCrad();\r
+ if (cardview != nullptr) {\r
+ cardview->SetVisible(!status);\r
+ }\r
+\r
+ popupView->SetVisible(status);\r
+}\r
+/*结束弹窗界面*/\r
+void TraingCardView::ShowEndView() {\r
+ // momentumFlag = false; // 标志位还原\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowEndView");\r
+ endView = new UIScrollView();\r
+ if (endView == nullptr) {\r
+ return;\r
+ }\r
+ endView->SetPosition(0, 0);\r
+ endView->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);\r
+ endView->SetScrollBlankSize(20);\r
+ endView->SetReboundSize(50);\r
+ endView->SetDirection(1);\r
+\r
+ InitRollLabel(endtitle, 83, 50, 300, 35, "label1", STR_LOOK_OUT,\r
+ DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ InitRollLabel(notelabel, 56, 167, 360, 80, "label2",\r
+ STR_INSUFFICIENT_EXERCISE_AMOUNT, DEFAULT_VECTOR_FONT_FILENAME,\r
+ 30);\r
+ /*隐藏是否结束运动title*/\r
+ InitRollLabel(endnote, 56, 207, 360, 80, "label3", STR_END_THIS_MOVEMENT,\r
+ DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ endnote->SetVisible(false);\r
+\r
+ endView->Add(endnote);\r
+ endView->Add(endtitle);\r
+ endView->Add(notelabel);\r
+\r
+ InitButton(exit, 111, 299, 100, 100, BUTTONBACK);\r
+ exit->SetOnClickListener(static_cast<UIView::OnClickListener *>(\r
+ TraingCardPresenter::GetInstance()));\r
+ exit->SetImageSrc(NO_IMAGE, NO_IMAGE);\r
+ InitButton(back, 256, 299, 100, 100, BUTTONEXIT);\r
+ back->SetOnClickListener(static_cast<UIView::OnClickListener *>(\r
+ TraingCardPresenter::GetInstance()));\r
+ back->SetImageSrc(YES_IMAGE, YES_IMAGE);\r
+ endView->Add(exit);\r
+ endView->Add(back);\r
+ RootView::GetInstance()->Add(endView);\r
+ endView->SetDraggable(false);\r
+ endView->SetTouchable(true);\r
+ endView->SetVisible(false); // 界面隐藏\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowEndView end");\r
+}\r
+/*目标达成界面*/\r
+void TraingCardView::ShowGetTagView() {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowGetTagView");\r
+ getView = new UIScrollView();\r
+ if (getView == nullptr) {\r
+ return;\r
+ }\r
+ getView->SetPosition(0, 0);\r
+ getView->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);\r
+ getView->SetScrollBlankSize(20);\r
+ getView->SetReboundSize(50);\r
+ getView->SetDirection(1);\r
+\r
+ // 初始化Lable\r
+ InitRollLabel(labeltitle, 83, 50, 300, 35, "label1", STR_GOAL_ACHIEVED,\r
+ DEFAULT_VECTOR_FONT_FILENAME, 35);\r
+ getView->Add(labeltitle);\r
+ InitRollLabel(labelgettag, 103, 307, 200, 35, "label3", STR_ACCOMPLISH_GOAL,\r
+ DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ getView->Add(labelgettag);\r
+ InitLabel(labelpre, 233, 307, 160, 35, "label3", "100%",\r
+ DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ getView->Add(labelpre);\r
+\r
+ // 初始化按键\r
+ InitButtonExt(buttonok_, 0, 366, 466, 100, BUTTONWINOK, STR_OK, 30);\r
+ buttonok_->SetImageSrc(BUTTONOK_IMAGE, BUTTONOK_IMAGE);\r
+ buttonok_->SetOnClickListener(static_cast<UIView::OnClickListener *>(\r
+ TraingCardPresenter::GetInstance()));\r
+ getView->Add(buttonok_);\r
+\r
+ InitImageAnimator();\r
+ RootView::GetInstance()->Add(getView);\r
+ getView->SetDraggable(false);\r
+ getView->SetTouchable(true);\r
+ getView->SetVisible(false); // 界面隐藏\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowGetTagView end");\r
+}\r
+/*最高心率提醒弹窗*/\r
+void TraingCardView::ShowHeartView() {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowHeartView");\r
+ heartView = new UIScrollView();\r
+ if (heartView == nullptr) {\r
+ return;\r
+ }\r
+ heartView->SetPosition(0, 0);\r
+ heartView->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);\r
+ heartView->SetScrollBlankSize(20);\r
+ heartView->SetReboundSize(50);\r
+ heartView->SetDirection(1);\r
+\r
+ // 初始化Lable\r
+ InitRollLabel(hearttitle, 83, 50, 300, 35, "label1", STR_HEARTTITLE,\r
+ DEFAULT_VECTOR_FONT_FILENAME, 35);\r
+ heartView->Add(hearttitle);\r
+\r
+ int maxheart = ConfigModel::GetInstance()->get_configData_int(\r
+ ConfigModel::CONFIGMODEL_ITEM_TRAINING_HEART_MAX);\r
+ std::string heartStr = "当前心率高于" + std::to_string(maxheart) + "次/分钟";\r
+ InitLabel(labelnote, 53, 269, 360, 35, "label3", heartStr.c_str(),\r
+ DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ heartView->Add(labelnote);\r
+\r
+ InitImageView(heartiamge, 193, 149, 80, 80, "note", WARNING_IMAGE);\r
+ heartView->Add(heartiamge);\r
+\r
+ // 初始化按键\r
+ InitButtonExt(buttonnote_, 0, 366, 466, 100, BUTTONNOTE, STR_OK, 30);\r
+ buttonnote_->SetImageSrc(BUTTONOK_IMAGE, BUTTONOK_IMAGE);\r
+ buttonnote_->SetOnClickListener(static_cast<UIView::OnClickListener *>(\r
+ TraingCardPresenter::GetInstance()));\r
+ heartView->Add(buttonnote_);\r
+\r
+ RootView::GetInstance()->Add(heartView);\r
+ heartView->SetDraggable(false);\r
+ heartView->SetTouchable(true);\r
+ heartView->SetVisible(false); // 界面隐藏\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowHeartView end");\r
+}\r
+/*获取运动量结束弹窗界面刷新*/\r
+bool TraingCardView::RefreshEndView() {\r
+ // 获取训练卡路里判断运动量\r
+ momentumFlag = TraingModel::GetInstance()->GetMomentum();\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "momentumFlag %d", momentumFlag);\r
+\r
+ if (momentumFlag) {\r
+ // 正常结束\r
+ endnote->SetVisible(false);\r
+ endtitle->SetTextId(STR_END_MOVEMENT);\r
+ notelabel->SetTextId(STR_END_THIS_MOVEMENT);\r
+ } else {\r
+ endtitle->SetTextId(STR_LOOK_OUT);\r
+ notelabel->SetTextId(STR_INSUFFICIENT_EXERCISE_AMOUNT);\r
+ endnote->SetVisible(true);\r
+ }\r
+ return momentumFlag;\r
+}\r
+/*初始化动画以及Taglabel*/\r
+void TraingCardView::InitImageAnimator() {\r
+ int tag = TraingModel::GetInstance()->GetSportTag();\r
+ ExerciseTag tagType = TraingModel::GetInstance()->GetSportTagtype();\r
+ std::string tagString = std::to_string(tag);\r
+ switch (tagType) {\r
+ case ExerciseTag::Duration: {\r
+ int hours = tag / 60;\r
+ int minutes = tag % 60;\r
+ int seconds = 0;\r
+ // 将小时、分钟、秒转换为字符串,并在小于10时补零\r
+ std::string hoursStr =\r
+ (hours < 10) ? "0" + std::to_string(hours) : std::to_string(hours);\r
+ std::string minutesStr = (minutes < 10) ? "0" + std::to_string(minutes)\r
+ : std::to_string(minutes);\r
+ std::string secondsStr = (seconds < 10) ? "0" + std::to_string(seconds)\r
+ : std::to_string(seconds);\r
+ tagString = hoursStr + ":" + minutesStr + ":" + secondsStr;\r
+ break;\r
+ }\r
+ case ExerciseTag::Calories: {\r
+ tagString = tagString + "kcal";\r
+ break;\r
+ }\r
+ case ExerciseTag::Distance: {\r
+ tagString = tagString + "km";\r
+ break;\r
+ }\r
+ case ExerciseTag::Steps:\r
+ break;\r
+ default:\r
+ break;\r
+ }\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,\r
+ "tag[%d]-tagType[%d]-tagString[%s]\r\n", tag, tagType,\r
+ tagString.c_str());\r
+ InitLabel(labeltag, 70, 215, 326, 97, "label2", tagString.c_str(),\r
+ DEFAULT_VECTOR_FONT_FILENAME, 80);\r
+ labeltag->SetTextColor(Color::GetColorFromRGBA(0x4f, 0xc3, 0x4c, 0xff));\r
+ getView->Add(labeltag);\r
+\r
+ // 初始化图片数组以及动画\r
+ winimageInfos = CreateImageInfoArray(winbasePath.c_str(), 94);\r
+ InitImageAnimatorSource(imageAnimator, winimageAnimatorInfo, winimageInfos,\r
+ 94, 173, 100, 120, 120, "imageAnimator1", 10);\r
+ getView->Add(imageAnimator);\r
+}\r
+\r
+/*获取卡片View单例*/\r
+UICrossView *TraingCardView::GetTraingCrad() { return swipe_; }\r
+void TraingCardView::OnSetUpView() {\r
+ View<TraingCardPresenter>::OnSetUpView();\r
+ Draw();\r
+}\r
+\r
+void TraingCardView::OnTearDownView() {\r
+ View<TraingCardPresenter>::OnTearDownView();\r
+ return;\r
+}\r
+\r
+void TraingCardView::OnStop() {\r
+ View<TraingCardPresenter>::OnStop();\r
+ RootView::GetInstance()->RemoveAll();\r
+ return;\r
+}\r
+\r
+int TraingCardView::GetCurrentPage() {\r
+ return swipe_->GetCurrentPageId(0); // 获取水平页面\r
}\r
+UIImageAnimatorView *TraingCardView::GetAnimator() { return imageAnimator; }\r
+} // namespace OHOS\r
--- /dev/null
+#include "traing/include/TraingModel.h"
+#include "traing/training_card/include/TrainingControlView.h"
+#include "traing/training_card/include/TrainingDataView.h"
+#include "traing/training_card/include/TrainingDetailView.h"
+#include "wearable_log.h"
+
+namespace OHOS {
+
+static TraingDataAllView *g_pTraingDataAllView{nullptr};
+
+TraingDataAllView::TraingDataAllView() {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
+ "TraingDataAllView::TraingDataAllView");
+ SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
+ g_pTraingDataAllView = this;
+}
+
+TraingDataAllView::~TraingDataAllView() {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
+ "TraingDataAllView::~TraingDataAllView");
+ ClearAll();
+ g_pTraingDataAllView = nullptr;
+}
+
+TraingDataAllView *TraingDataAllView::GetInstance(void) {
+ return g_pTraingDataAllView;
+}
+
+void TraingDataAllView::ClearAll(void) {
+ for (int32_t i = 0; i < maxPage; i++) {
+ recordCard[i] = nullptr;
+ }
+
+ if (TraingDataAllSwipeViewList) {
+ TraingDataAllSwipeViewList->RemoveAll();
+ delete TraingDataAllSwipeViewList;
+ TraingDataAllSwipeViewList = nullptr;
+ }
+
+ delete trainingDataView;
+ trainingDataView = nullptr;
+
+ delete trainingDetailView;
+ trainingDetailView = nullptr;
+}
+
+UISwipeView *TraingDataAllView::TraingDataAllViewInit(void) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+ "TraingDataAllView::TraingDataAllViewInit");
+
+ TraingDataAllSwipeViewList = new UISwipeView(UISwipeView::VERTICAL);
+ if (!TraingDataAllSwipeViewList) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+ "Failed to create TraingDataAllSwipeViewList");
+ return nullptr;
+ }
+
+ TraingDataAllSwipeViewList->SetStyle(STYLE_BACKGROUND_COLOR,
+ Color::Black().full);
+ TraingDataAllSwipeViewList->SetPosition(0, 0, HORIZONTAL_RESOLUTION,
+ VERTICAL_RESOLUTION);
+ TraingDataAllSwipeViewList->SetDraggable(true);
+ TraingDataAllSwipeViewList->SetTouchable(true);
+
+ for (uint16_t i = 0; i < maxPage; i++) {
+ recordCard[i] = CreatePage(i);
+ if (!recordCard[i]) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "recordCard[%d] is nullptr", i);
+ return nullptr;
+ }
+ recordCard[i]->InitView(this);
+ TraingDataAllSwipeViewList->Add(recordCard[i]);
+ }
+
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingDataAllView InitPage complete");
+ return TraingDataAllSwipeViewList;
+}
+
+UISwipeView *TraingDataAllView::GetTraingDataAllPageView() {
+ return TraingDataAllViewInit();
+}
+
+TrainingDataView *TraingDataAllView::GetTrainingDataView(void) {
+ return trainingDataView;
+}
+
+TrainingDetailView *TraingDataAllView::GetTrainingDetailView(void) {
+ return trainingDetailView;
+}
+
+AppGroupView *TraingDataAllView::TraingDataPageInit(void) {
+ trainingDataView = new TrainingDataView();
+ if (!trainingDataView) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to create TrainingDataView");
+ return nullptr;
+ }
+ return trainingDataView;
+}
+
+AppGroupView *TraingDataAllView::TraingDetailPageInit(void) {
+ trainingDetailView = new TrainingDetailView();
+ if (!trainingDetailView) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+ "Failed to create TrainingDetailView");
+ return nullptr;
+ }
+ return trainingDetailView;
+}
+
+struct TraingDataAllViewMapper {
+ const int16_t viewId;
+ AppGroupView *(TraingDataAllView::*func)(void);
+};
+
+static const TraingDataAllViewMapper g_pageMapper[] = {
+ {TRAING_DATA_ALL_MAIN_VIEW, &TraingDataAllView::TraingDataPageInit},
+ {TRAING_DATA_ALL_DETAIL_VIEW, &TraingDataAllView::TraingDetailPageInit},
+};
+
+AppGroupView *TraingDataAllView::CreatePage(uint8_t TraingDataAllPageId) {
+ for (const auto &mapper : g_pageMapper) {
+ if (mapper.viewId == TraingDataAllPageId) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+ "Creating page for TraingDataAllPageId: %d",
+ TraingDataAllPageId);
+ return (this->*(mapper.func))();
+ }
+ }
+ return nullptr;
+}
+
+bool TraingDataAllView::InitView(void) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Initializing TraingDataAllView");
+
+ if (!trainingDataAllView) {
+ trainingDataAllView = new TraingDataAllView();
+ if (!trainingDataAllView) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+ "Failed to create TraingDataAllView");
+ return false;
+ }
+ }
+
+ traingDataAllPageView = dynamic_cast<UISwipeView *>(
+ trainingDataAllView->GetTraingDataAllPageView());
+ if (!traingDataAllPageView) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+ "GetTraingDataAllPageView returned nullptr");
+ return false;
+ }
+ traingDataAllPageView->SetDraggable(true);
+ traingDataAllPageView->SetTouchable(true);
+ Add(traingDataAllPageView);
+
+ return true;
+}
+
+void TraingDataAllView::PreLoad(void) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Preloading TraingDataAllView");
+ if (!viewiInitStatus && InitView()) {
+ viewiInitStatus = true;
+ }
+}
+
+void TraingDataAllView::UnLoad(void) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Unloading TraingDataAllView");
+}
+
+} // namespace OHOS
\ No newline at end of file
* @Date: 2024-04-15 10:55:58
* @LastEditors: Caisking 3449750381@qq.com
* @LastEditTime: 2024-08-02 09:35:58
- * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TrainingDataView.cpp
+ * @FilePath:
+ * /FD230/code/sdk/application/wearable/fd230app/nativeui/traing/training_card/src/TrainingDataView.cpp
*/
#include "traing/training_card/include/TrainingDataView.h"
#include "traing/training_card/include/TraingCardView.h"
-#include "common/image_cache_manager.h"
-#include "components/ui_label_ext.h"
-#include "ui_resource_string.h"
#include "UiConfig.h"
-#include "ui_resource_image.h"
-#include <ui_scroll_view.h>
+#include "common/image_cache_manager.h"
#include "components/ui_button.h"
+#include "components/ui_label_ext.h"
+#include "traing/Training_UiConfig.h"
#include "traing/include/TraingModel.h"
+#include "ui_resource_image.h"
+#include "ui_resource_string.h"
#include "uicomponents/UIComponents.h"
-#include "traing/Training_UiConfig.h"
+#include <ui_scroll_view.h>
+
+namespace OHOS {
-namespace OHOS
-{
-
- static TrainingDataView *g_pTrainingDataView{nullptr};
-
- TrainingDataView::TrainingDataView()
- {
- SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
- g_pTrainingDataView = this;
- }
-
- TrainingDataView::~TrainingDataView()
- {
- RemoveAll();
- DeInit();
- g_pTrainingDataView = nullptr;
- }
-
- TrainingDataView *TrainingDataView::GetInstance()
- {
- return g_pTrainingDataView;
- }
-
- /* InitView:初始化界面*/
- void TrainingDataView ::InitView()
- {
- // 初始化Image
- InitImageView(image_progress, 13, 13, 440, 386, "image1", PROGRESS_IMAGE);
- InitImageView(image_heart, 88, 295, 50, 50, "image2", SPORT_HEARTRATE_IMAGE);
- InitImageView(image_iconup, 225, 396, 16, 10, "image4", INCO_UP_IMAGE);
- InitImageView(image_iconpoint, 193, 421, 80, 20, "image5", DATA_POINT_IMAGE);
- Add(image_progress);
- Add(image_heart);
- Add(image_iconup);
- Add(image_iconpoint);
-
- // 初始化进度条
- circleProgress = new UICircleProgress();
- circleProgress->SetPosition(0, 0);
- circleProgress->Resize(466, 466);
- circleProgress->SetViewId("circleProgress");
- circleProgress->SetStyle(STYLE_BACKGROUND_OPA, 0x00);
- circleProgress->SetBackgroundStyle(STYLE_BACKGROUND_COLOR, 0xff000000);
- circleProgress->SetBackgroundStyle(STYLE_LINE_WIDTH, 12);
- circleProgress->SetForegroundStyle(STYLE_BACKGROUND_COLOR, 0xff2195F6);
- circleProgress->SetForegroundStyle(STYLE_BORDER_COLOR, 0xff000000);
- circleProgress->SetForegroundStyle(STYLE_LINE_COLOR, 0xff4fC34C);
- circleProgress->SetForegroundStyle(STYLE_LINE_WIDTH, 10);
- circleProgress->SetCenterPosition(235, 235);
- circleProgress->SetRadius(215);
- circleProgress->SetStartAngle(215);
- circleProgress->SetEndAngle(505);
- circleProgress->SetCapType(CAP_ROUND);
- circleProgress->SetValue(0);
- Add(circleProgress);
-
- // 初始化Lable
- UIResourceTextId sport_id = TraingModel::GetInstance()->GetSportEvent();
- InitLabelExt(sportlabel, 83, 120, 300, 35, "label2", sport_id, DEFAULT_VECTOR_FONT_FILENAME, 30);
- sportlabel->SetTextColor(Color::Gray());
-
- InitLabel(curtimelabel, 155, 60, 150, 50, "label1", "23:54", DEFAULT_VECTOR_FONT_FILENAME, 40);
-
- InitLabel(timerlabel, 0, 163, 466, 150, "label3", "00:00:00", DEFAULT_VECTOR_FONT_FILENAME, 80);
- InitLabel(heartlabel, 85, 284, 230, 80, "label4", "--", DEFAULT_VECTOR_FONT_FILENAME, 60);
- InitLabel(ubpmlabel, 218, 284, 230, 80, "label5", "bpm", DEFAULT_VECTOR_FONT_FILENAME, 60);
- ubpmlabel->SetTextColor(Color::Gray());
- Add(curtimelabel);
- Add(sportlabel);
- Add(timerlabel);
- Add(heartlabel);
- Add(ubpmlabel);
+static TrainingDataView *g_pTrainingDataView{nullptr};
+
+TrainingDataView::TrainingDataView() {
+ SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
+ g_pTrainingDataView = this;
+}
+
+TrainingDataView::~TrainingDataView() {
+ RemoveAll();
+ DeInit();
+ g_pTrainingDataView = nullptr;
+}
+
+TrainingDataView *TrainingDataView::GetInstance() {
+ return g_pTrainingDataView;
+}
+
+/* InitView:初始化界面*/
+bool TrainingDataView ::InitPage() {
+ // 初始化Image
+ InitImageView(image_progress, 13, 13, 440, 386, "image1", PROGRESS_IMAGE);
+ InitImageView(image_heart, 88, 295, 50, 50, "image2", SPORT_HEARTRATE_IMAGE);
+ InitImageView(image_iconup, 225, 396, 16, 10, "image4", INCO_UP_IMAGE);
+ InitImageView(image_iconpoint, 193, 421, 80, 20, "image5", DATA_POINT_IMAGE);
+ Add(image_progress);
+ Add(image_heart);
+ Add(image_iconup);
+ Add(image_iconpoint);
+
+ // 初始化进度条
+ circleProgress = new UICircleProgress();
+ circleProgress->SetPosition(0, 0);
+ circleProgress->Resize(466, 466);
+ circleProgress->SetViewId("circleProgress");
+ circleProgress->SetStyle(STYLE_BACKGROUND_OPA, 0x00);
+ circleProgress->SetBackgroundStyle(STYLE_BACKGROUND_COLOR, 0xff000000);
+ circleProgress->SetBackgroundStyle(STYLE_LINE_WIDTH, 12);
+ circleProgress->SetForegroundStyle(STYLE_BACKGROUND_COLOR, 0xff2195F6);
+ circleProgress->SetForegroundStyle(STYLE_BORDER_COLOR, 0xff000000);
+ circleProgress->SetForegroundStyle(STYLE_LINE_COLOR, 0xff4fC34C);
+ circleProgress->SetForegroundStyle(STYLE_LINE_WIDTH, 10);
+ circleProgress->SetCenterPosition(235, 235);
+ circleProgress->SetRadius(215);
+ circleProgress->SetStartAngle(215);
+ circleProgress->SetEndAngle(505);
+ circleProgress->SetCapType(CAP_ROUND);
+ circleProgress->SetValue(0);
+ Add(circleProgress);
+
+ // 初始化Lable
+ UIResourceTextId sport_id = TraingModel::GetInstance()->GetSportEvent();
+ InitLabelExt(sportlabel, 83, 120, 300, 35, "label2", sport_id,
+ DEFAULT_VECTOR_FONT_FILENAME, 30);
+ sportlabel->SetTextColor(Color::Gray());
+
+ InitLabel(curtimelabel, 155, 60, 150, 50, "label1", "23:54",
+ DEFAULT_VECTOR_FONT_FILENAME, 40);
+
+ InitLabel(timerlabel, 0, 163, 466, 150, "label3", "00:00:00",
+ DEFAULT_VECTOR_FONT_FILENAME, 80);
+ InitLabel(heartlabel, 85, 284, 230, 80, "label4", "--",
+ DEFAULT_VECTOR_FONT_FILENAME, 60);
+ InitLabel(ubpmlabel, 218, 284, 230, 80, "label5", "bpm",
+ DEFAULT_VECTOR_FONT_FILENAME, 60);
+ ubpmlabel->SetTextColor(Color::Gray());
+ Add(curtimelabel);
+ Add(sportlabel);
+ Add(timerlabel);
+ Add(heartlabel);
+ Add(ubpmlabel);
+
+ return true;
#if 0
// 初始化Button
buttonNote->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingCardPresenter::GetInstance()));
Add(buttonNote);
#endif
- // 增加上拉卡片
- SetCoverable(true);
- }
-
- /* DeInit:删除组件 */
- void TrainingDataView::DeInit()
- {
- RemoveAll();
- if (curtimelabel != nullptr)
- {
- curtimelabel = nullptr;
- }
- if (sportlabel != nullptr)
- {
- delete sportlabel;
- sportlabel = nullptr;
- }
- if (timerlabel != nullptr)
- {
- delete timerlabel;
- timerlabel = nullptr;
- }
- if (heartlabel != nullptr)
- {
- delete heartlabel;
- heartlabel = nullptr;
- }
- if (ubpmlabel != nullptr)
- {
- delete ubpmlabel;
- ubpmlabel = nullptr;
- }
- // 删除button
- if (buttonNote != nullptr)
- {
- delete buttonNote;
- buttonNote = nullptr;
- }
-
- // 删除Image
- if (image_lowIntensity != nullptr)
- {
- delete image_lowIntensity;
- image_lowIntensity = nullptr;
- }
- if (image_iconup != nullptr)
- {
- delete image_iconup;
- image_iconup = nullptr;
- }
- if (image_iconpoint != nullptr)
- {
- delete image_iconpoint;
- image_iconpoint = nullptr;
- }
- if (circleProgress != nullptr)
- {
- delete circleProgress;
- circleProgress = nullptr;
- }
- }
-
- void TrainingDataView::PreLoad(void)
- {
- if (!viewiInitStatus)
- {
- InitView();
- viewiInitStatus = true;
- }
- }
-
- void TrainingDataView::UnLoad(void) {}
- UILabelExt *TrainingDataView::GetTimeLabel()
- {
- return timerlabel;
- }
- UILabelExt *TrainingDataView::GetHeartLabel()
- {
- return heartlabel;
- }
- UICircleProgress *TrainingDataView::GetProgress()
- {
- return circleProgress;
- }
- /*更新当前时间*/
- void TrainingDataView::UpdataTime()
- {
- if (curtimelabel == nullptr) // 防止刷新空组件
- return;
-
- // 获取当前时间
- struct tm pTM;
- time_t seconds;
- time(&seconds);
- localtime_r(&seconds, &pTM);
-
- // 解析时间
- int hour = pTM.tm_hour;
- int minute = pTM.tm_min;
-
- // 将时间和日期转换为字符串
- std::string stringtime = (hour < 10 ? "0" : "") + std::to_string(hour) + ":" + (minute < 10 ? "0" : "") + std::to_string(minute);
- curtimelabel->SetText(stringtime.c_str());
- }
+ // 增加上拉卡片
+ // SetCoverable(true);
+}
+
+/* DeInit:删除组件 */
+void TrainingDataView::DeInit() {
+ RemoveAll();
+ if (curtimelabel != nullptr) {
+ curtimelabel = nullptr;
+ }
+ if (sportlabel != nullptr) {
+ delete sportlabel;
+ sportlabel = nullptr;
+ }
+ if (timerlabel != nullptr) {
+ delete timerlabel;
+ timerlabel = nullptr;
+ }
+ if (heartlabel != nullptr) {
+ delete heartlabel;
+ heartlabel = nullptr;
+ }
+ if (ubpmlabel != nullptr) {
+ delete ubpmlabel;
+ ubpmlabel = nullptr;
+ }
+ // 删除button
+ if (buttonNote != nullptr) {
+ delete buttonNote;
+ buttonNote = nullptr;
+ }
+
+ // 删除Image
+ if (image_lowIntensity != nullptr) {
+ delete image_lowIntensity;
+ image_lowIntensity = nullptr;
+ }
+ if (image_iconup != nullptr) {
+ delete image_iconup;
+ image_iconup = nullptr;
+ }
+ if (image_iconpoint != nullptr) {
+ delete image_iconpoint;
+ image_iconpoint = nullptr;
+ }
+ if (circleProgress != nullptr) {
+ delete circleProgress;
+ circleProgress = nullptr;
+ }
+}
+
+UILabelExt *TrainingDataView::GetTimeLabel() { return timerlabel; }
+UILabelExt *TrainingDataView::GetHeartLabel() { return heartlabel; }
+UICircleProgress *TrainingDataView::GetProgress() { return circleProgress; }
+/*更新当前时间*/
+void TrainingDataView::UpdataTime() {
+ if (curtimelabel == nullptr) // 防止刷新空组件
+ return;
+
+ // 获取当前时间
+ struct tm pTM;
+ time_t seconds;
+ time(&seconds);
+ localtime_r(&seconds, &pTM);
+
+ // 解析时间
+ int hour = pTM.tm_hour;
+ int minute = pTM.tm_min;
+
+ // 将时间和日期转换为字符串
+ std::string stringtime = (hour < 10 ? "0" : "") + std::to_string(hour) + ":" +
+ (minute < 10 ? "0" : "") + std::to_string(minute);
+ curtimelabel->SetText(stringtime.c_str());
+}
+
+bool TrainingDataView::InitView(void *caller) {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TrainingDataView InitView %p",
+ caller);
+ if (InitPage() == false) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TrainingDataView::InitPage fail");
+ return false;
+ }
+ SetDraggable(true);
+ SetTouchable(true);
+ // SleepDataRefresh();
+ return true;
}
+} // namespace OHOS
#include "traing/training_card/include/TrainingDetailView.h"
#include "traing/training_card/include/TraingCardView.h"
-#include "common/image_cache_manager.h"
-#include "components/ui_label_ext.h"
-#include "ui_resource_string.h"
#include "UiConfig.h"
-#include "ui_resource_image.h"
-#include <ui_scroll_view.h>
+#include "common/image_cache_manager.h"
#include "components/ui_button.h"
+#include "components/ui_label_ext.h"
+#include "traing/Training_UiConfig.h"
#include "traing/include/TraingModel.h"
+#include "ui_resource_image.h"
+#include "ui_resource_string.h"
#include "uicomponents/UIComponents.h"
-#include "traing/Training_UiConfig.h"
-
-namespace OHOS
-{
-
- static TrainingDetailView *g_pTrainingDetailView{nullptr};
-
- TrainingDetailView::TrainingDetailView()
- {
- SetPosition(0, 0, 466, 466);
- // SetStyle(STYLE_BACKGROUND_OPA, 0);
- // SetStyle(STYLE_BORDER_RADIUS, 466);
- g_pTrainingDetailView = this;
- }
- TrainingDetailView::~TrainingDetailView()
- {
- RemoveAll();
- DeInit();
- g_pTrainingDetailView = nullptr;
- }
-
- TrainingDetailView *TrainingDetailView::GetInstance()
- {
- return g_pTrainingDetailView;
- }
-
- /* InitView:初始化界面*/
- void TrainingDetailView ::InitView()
- {
- // 初始化Image
-
- InitImageView(progress_image, 0, 0, 100, 100, "image5", COLOR_PROGRESS_IMAGE);
- // InitImageView(lineimage2_, 225, 190, 0, 0, "image", LINE_2_IMAGE);
- if (lineimage2_ == nullptr)
- {
- lineimage2_ = new UIImageView();
- }
- lineimage2_->SetPosition(232, 191);
- lineimage2_->Resize(2, 82);
- lineimage2_->SetViewId("image2");
- lineimage2_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff333333);
- lineimage2_->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
- lineimage2_->SetVisible(true);
-
- Add(progress_image);
- Add(lineimage2_);
-
- // 初始化Lable
- InitLabelExt(u_milelabel, 16, 234, 220, 35, "label2", STR_RANGE_SETTING, DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitLabelExt(u_stepslabel, 73, 362, 320, 35, "label3", STR_STEP_NUMBER, DEFAULT_VECTOR_FONT_FILENAME, 30);
- InitLabelExt(u_calorielabel, 225, 235, 230, 35, "label4", STR_CALORIE_SETTING, DEFAULT_VECTOR_FONT_FILENAME, 30);
- u_milelabel->SetTextColor(Color::Gray());
- u_stepslabel->SetTextColor(Color::Gray());
- u_calorielabel->SetTextColor(Color::Gray());
-
- InitLabel(milelabel, 17, 160, 200, 80, "label6", "13.21", DEFAULT_VECTOR_FONT_FILENAME, 65);
- InitLabel(calorielabel, 230, 160, 200, 80, "label7", "28312", DEFAULT_VECTOR_FONT_FILENAME, 65);
- InitLabel(steplabel, 133, 285, 200, 80, "label8", "210.03", DEFAULT_VECTOR_FONT_FILENAME, 65);
- Add(u_milelabel);
- Add(u_stepslabel);
- Add(u_calorielabel);
- Add(milelabel);
- Add(steplabel);
- Add(calorielabel);
+#include <ui_scroll_view.h>
- InitButtonExt(intensity_button, 103, 70, 260, 80, "button", STR_LOWER_STRENGTH, 30);
- Add(intensity_button);
+namespace OHOS {
- SetTouchable(true);
- // SetIntercept(true);
- }
- /* DeInit:删除组件 */
- void TrainingDetailView::DeInit()
- {
- RemoveAll();
- if (u_milelabel != nullptr)
- {
- delete u_milelabel;
- u_milelabel = nullptr;
- }
- if (u_stepslabel != nullptr)
- {
- delete u_stepslabel;
- u_stepslabel = nullptr;
- }
- if (u_calorielabel != nullptr)
- {
- delete u_calorielabel;
- u_calorielabel = nullptr;
- }
- if (milelabel != nullptr)
- {
- delete milelabel;
- milelabel = nullptr;
- }
- if (steplabel != nullptr)
- {
- delete steplabel;
- steplabel = nullptr;
- }
- if (calorielabel != nullptr)
- {
- delete calorielabel;
- calorielabel = nullptr;
- }
+static TrainingDetailView *g_pTrainingDetailView{nullptr};
- if (progress_image != nullptr)
- {
- delete progress_image;
- progress_image = nullptr;
- }
- if (lineimage2_ != nullptr)
- {
- delete lineimage2_;
- lineimage2_ = nullptr;
- }
- if (intensity_button != nullptr)
- {
- delete intensity_button;
- intensity_button = nullptr;
- }
- }
+TrainingDetailView::TrainingDetailView() {
+ SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
+ // SetStyle(STYLE_BACKGROUND_OPA, 0);
+ // SetStyle(STYLE_BORDER_RADIUS, 466);
+ g_pTrainingDetailView = this;
+}
+TrainingDetailView::~TrainingDetailView() {
+ RemoveAll();
+ DeInit();
+ g_pTrainingDetailView = nullptr;
+}
- void TrainingDetailView::PreLoad(void)
- {
- if (!viewiInitStatus)
- {
- InitView();
- viewiInitStatus = true;
- }
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TrainingDetailView");
- }
+TrainingDetailView *TrainingDetailView::GetInstance() {
+ return g_pTrainingDetailView;
+}
- void TrainingDetailView::UnLoad(void) {}
+/* InitView:初始化界面*/
+bool TrainingDetailView ::InitPage() {
+ // 初始化Image
+ InitImageView(progress_image, 0, 0, 100, 100, "image5", COLOR_PROGRESS_IMAGE);
+ // InitImageView(lineimage2_, 225, 190, 0, 0, "image", LINE_2_IMAGE);
+ if (lineimage2_ == nullptr) {
+ lineimage2_ = new UIImageView();
+ }
+ lineimage2_->SetPosition(232, 191);
+ lineimage2_->Resize(2, 82);
+ lineimage2_->SetViewId("image2");
+ lineimage2_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff333333);
+ lineimage2_->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
+ lineimage2_->SetVisible(true);
+
+ Add(progress_image);
+ Add(lineimage2_);
+
+ // 初始化Lable
+ InitLabelExt(u_milelabel, 16, 234, 220, 35, "label2", STR_RANGE_SETTING,
+ DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabelExt(u_stepslabel, 73, 362, 320, 35, "label3", STR_STEP_NUMBER,
+ DEFAULT_VECTOR_FONT_FILENAME, 30);
+ InitLabelExt(u_calorielabel, 225, 235, 230, 35, "label4", STR_CALORIE_SETTING,
+ DEFAULT_VECTOR_FONT_FILENAME, 30);
+ u_milelabel->SetTextColor(Color::Gray());
+ u_stepslabel->SetTextColor(Color::Gray());
+ u_calorielabel->SetTextColor(Color::Gray());
+
+ InitLabel(milelabel, 17, 160, 200, 80, "label6", "13.21",
+ DEFAULT_VECTOR_FONT_FILENAME, 65);
+ InitLabel(calorielabel, 230, 160, 200, 80, "label7", "28312",
+ DEFAULT_VECTOR_FONT_FILENAME, 65);
+ InitLabel(steplabel, 133, 285, 200, 80, "label8", "210.03",
+ DEFAULT_VECTOR_FONT_FILENAME, 65);
+ Add(u_milelabel);
+ Add(u_stepslabel);
+ Add(u_calorielabel);
+ Add(milelabel);
+ Add(steplabel);
+ Add(calorielabel);
+
+ InitButtonExt(intensity_button, 103, 70, 260, 80, "button",
+ STR_LOWER_STRENGTH, 30);
+ Add(intensity_button);
+
+ SetTouchable(true);
+
+ return true;
+}
+/* DeInit:删除组件 */
+void TrainingDetailView::DeInit() {
+ RemoveAll();
+ if (u_milelabel != nullptr) {
+ delete u_milelabel;
+ u_milelabel = nullptr;
+ }
+ if (u_stepslabel != nullptr) {
+ delete u_stepslabel;
+ u_stepslabel = nullptr;
+ }
+ if (u_calorielabel != nullptr) {
+ delete u_calorielabel;
+ u_calorielabel = nullptr;
+ }
+ if (milelabel != nullptr) {
+ delete milelabel;
+ milelabel = nullptr;
+ }
+ if (steplabel != nullptr) {
+ delete steplabel;
+ steplabel = nullptr;
+ }
+ if (calorielabel != nullptr) {
+ delete calorielabel;
+ calorielabel = nullptr;
+ }
+
+ if (progress_image != nullptr) {
+ delete progress_image;
+ progress_image = nullptr;
+ }
+ if (lineimage2_ != nullptr) {
+ delete lineimage2_;
+ lineimage2_ = nullptr;
+ }
+ if (intensity_button != nullptr) {
+ delete intensity_button;
+ intensity_button = nullptr;
+ }
+}
- UILabelExt *TrainingDetailView::GetMileLabel()
- {
- return milelabel;
- }
- UILabelExt *TrainingDetailView::GetStepLabel()
- {
- return steplabel;
- }
- UILabelExt *TrainingDetailView::GetCalorieLabel()
- {
- return calorielabel;
- }
- UILabelButtonExt *TrainingDetailView::Get_Intensity_Button()
- {
- return intensity_button;
- }
+bool TrainingDetailView::InitView(void *caller) {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TrainingDetailView InitView %p",
+ caller);
+ if (InitPage() == false) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TrainingDetailView::InitPage fail");
+ return false;
+ }
+ SetDraggable(true);
+ SetTouchable(true);
+ // SleepDataRefresh();
+ return true;
+}
+UILabelExt *TrainingDetailView::GetMileLabel() { return milelabel; }
+UILabelExt *TrainingDetailView::GetStepLabel() { return steplabel; }
+UILabelExt *TrainingDetailView::GetCalorieLabel() { return calorielabel; }
+UILabelButtonExt *TrainingDetailView::Get_Intensity_Button() {
+ return intensity_button;
}
+} // namespace OHOS
TraingRecordView::~TraingRecordView()
{
- // DeInit();
- UIViewGroup *tmpGroup = dynamic_cast<UIViewGroup *>(container_);
- UIViewGroup::RemoveAndDeleteAllRecursively(tmpGroup);
+ // DeInit()
+ lackView->RemoveAll();
+ recordView->RemoveAll();
- g_pTraingRecordView = nullptr;
+ UIViewGroup *tmpGroup = dynamic_cast<UIViewGroup *>(container_);
+ UIViewGroup::RemoveAndDeleteAllRecursively(tmpGroup);
+
+ g_pTraingRecordView = nullptr;
}
TraingRecordView *TraingRecordView::GetInstance()