From: Caisking <3449750381@qq.com> Date: Wed, 27 Mar 2024 07:16:31 +0000 (+0800) Subject: 增加健身训练列表 X-Git-Tag: release_V1.2.70_20241020_135402~1255 X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=fe12e73e0a762b8915838b1c30f843c82675e3a0;p=mirrors%2FFD230.git 增加健身训练列表 --- diff --git a/code/sdk/application/wearable/fd230app/CMakeLists.txt b/code/sdk/application/wearable/fd230app/CMakeLists.txt index 62948b0f4..d99da851f 100644 --- a/code/sdk/application/wearable/fd230app/CMakeLists.txt +++ b/code/sdk/application/wearable/fd230app/CMakeLists.txt @@ -464,6 +464,13 @@ set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/training_list_ice/src/TraingIceItemView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/training_list_ice/src/TraingIceModel.cpp + #健身运动 + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/training_list_fitness/src/TraingFitnessView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/training_list_fitness/src/TraingFitnessPresenter.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/training_list_fitness/src/TraingFitnessAdapter.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/training_list_fitness/src/TraingFitnessItemView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/training_list_fitness/src/TraingFitnessModel.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/training_list_more/src/TraingMoreView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/training_list_more/src/TraingMorePresenter.cpp diff --git a/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h b/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h index ebb75cbcd..889477eb1 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h +++ b/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h @@ -85,9 +85,10 @@ typedef enum : uint16_t VIEW_TRAININGWIN, // 目标达成 VIEW_TRAINING_RECORD, // 训练记录 /* ---------------------------------- 训练列表 ---------------------------------- */ - VIEW_TRAININGMORE, // 更多训练 - VIEW_TRAININGLIMIT, // 极限运动列表 - VIEW_TRAININGICE, // 冰上运动列表 + VIEW_TRAININGMORE, // 更多训练 + VIEW_TRAININGLIMIT, // 极限运动列表 + VIEW_TRAININGICE, // 冰上运动列表 + VIEW_TRAININGFITNESS, // 健身运动列表 /* ---------------------------------- GPS训练 --------------------------------- */ VIEW_TRAININGGPS, // GPS训练 VIEW_TRAININGGPSSET, // GPS训练目标(时长,距离,卡路里,步数) diff --git a/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h b/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h index 0758d450a..13f7b3642 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h +++ b/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h @@ -78,12 +78,13 @@ namespace OHOS void InitTraingGPSlostSlice(void); void InitTraingGPSbackSlice(void); - void InitTraingMoreSlice(void); // 更多训练 - void InitTraingLimitSlice(void); // 极限训练 - void InitTraingIceSlice(void); // 冰上训练 + void InitTraingMoreSlice(void); // 更多训练 + void InitTraingLimitSlice(void); // 极限训练 + void InitTraingIceSlice(void); // 冰上训练 + void InitTraingFitnessSlice(void); // 冰上训练 void InitTraingRecordSlice(void); // 训练记录 - /* -------------------------------------------------------------------------- */ + /* -------------------------------------------------------------------------- */ void InitSecondaryFunction(void); void InitFastTrainingSlice(void); void InitFastTrainingAttentionSlice(void); diff --git a/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp b/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp index 710cb073b..39afdc3c1 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp +++ b/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp @@ -194,6 +194,8 @@ #include "traing/training_list_limit/include/TraingLimitView.h" #include "traing/training_list_ice/include/TraingIcePresenter.h" #include "traing/training_list_ice/include/TraingIceView.h" +#include "traing/training_list_fitness/include/TraingFitnessPresenter.h" +#include "traing/training_list_fitness/include/TraingFitnessView.h" /* ---------------------------------- 主界面卡片 --------------------------------- */ #include "traing/training_card/include/TraingCardPresenter.h" #include "traing/training_card/include/TraingCardView.h" @@ -289,9 +291,10 @@ namespace OHOS {VIEW_TRAININGGPSLOST, &NativeLauncher::InitTraingGPSlostSlice}, // GPS断联 {VIEW_TRAININGGPSBACK, &NativeLauncher::InitTraingGPSbackSlice}, // GPS回连 - {VIEW_TRAININGMORE, &NativeLauncher::InitTraingMoreSlice}, // 更多训练 - {VIEW_TRAININGLIMIT, &NativeLauncher::InitTraingLimitSlice}, // 极限训练 - {VIEW_TRAININGICE, &NativeLauncher::InitTraingIceSlice}, // 冰上训练 + {VIEW_TRAININGMORE, &NativeLauncher::InitTraingMoreSlice}, // 更多训练 + {VIEW_TRAININGLIMIT, &NativeLauncher::InitTraingLimitSlice}, // 极限训练 + {VIEW_TRAININGICE, &NativeLauncher::InitTraingIceSlice}, // 冰上训练 + {VIEW_TRAININGFITNESS, &NativeLauncher::InitTraingFitnessSlice}, // 健身训练 /* -------------------------------------------------------------------------- */ @@ -1001,6 +1004,11 @@ namespace OHOS SliceProxy *TraingIceview = new AbilitySliceProxy; NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGICE, TraingIceview); } + void NativeLauncher::InitTraingFitnessSlice(void) + { + SliceProxy *TraingFitnessview = new AbilitySliceProxy; + NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGFITNESS, TraingFitnessview); + } /* -------------------------------------------------------------------------- */ // 省电模式 diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingFitnessAdapter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingFitnessAdapter.h new file mode 100644 index 000000000..0d9dabe24 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingFitnessAdapter.h @@ -0,0 +1,55 @@ +/*** + * @Author: Caisking 3449750381@qq.com + * @Date: 2024-03-27 11:09:52 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-03-27 14:21:09 + * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/include/TraingFitnessAdapter.h + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ + +#ifndef TraingFitness_ADAPTER_H +#define TraingFitness_ADAPTER_H +#include +#include +#include "components/ui_list.h" +#include "components/abstract_adapter.h" +#include "components/ui_label.h" +#include "components/ui_checkbox.h" +#include "AppViewIDs.h" + +// 列表的适配器 +namespace OHOS +{ + + typedef struct + { + AppViewId id; + const char *label; // 标签 + } TraingFitnessItem; + + class TraingFitnessAdapter : public AbstractAdapter + { + public: + explicit TraingFitnessAdapter(); + virtual ~TraingFitnessAdapter(); + + void SetData(std::list &data); + + virtual uint16_t GetCount(void) override; + + virtual UIView *GetView(UIView *inView, int16_t index) override; + + virtual void AddItem(const TraingFitnessItem &item); + + void SetItemClickListener(UIView::OnClickListener *itemclicklistener) + { + itemClickListener = itemclicklistener; + } + + private: + std::list listData; + UIView::OnClickListener *itemClickListener{nullptr}; + }; +} + +#endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingFitnessItemView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingFitnessItemView.h new file mode 100644 index 000000000..113732c19 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingFitnessItemView.h @@ -0,0 +1,35 @@ + + +#ifndef TraingFitness_ITEM_VIEW_H +#define TraingFitness_ITEM_VIEW_H + +#include "components/ui_label.h" +#include "components/ui_view_group.h" +#include "components/ui_checkbox.h" +#include "components/ui_image_view.h" +#include "traing/training_list_fitness/include/TraingFitnessAdapter.h" +#include "components/ui_label_button.h" +#include "AppViewIDs.h" +#include "ohos_types.h" + +namespace OHOS +{ + class TraingFitnessItemView : public UIViewGroup + { + public: + explicit TraingFitnessItemView(); + virtual ~TraingFitnessItemView(); + virtual void SetItemInfo(const TraingFitnessItem itemInfo); + virtual void SetUpChild(); + AppViewId GetTraingFitnessIndex(); + + private: + TraingFitnessItemView(const TraingFitnessItemView &); + UIImageView sbackground; // 背景 + UIImageView sicon; // 箭头 + UILabel sLabel; // 标签 + TraingFitnessItem sItemInfo = {VIEW_INVALID, nullptr}; + }; + +} +#endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingFitnessModel.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingFitnessModel.h new file mode 100644 index 000000000..3d1b515f8 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingFitnessModel.h @@ -0,0 +1,35 @@ + +#ifndef TraingFitness_MODEL_H +#define TraingFitness_MODEL_H + +#include +#include +#include "AppViewIDs.h" +#include "UiConfig.h" +#include "TraingFitnessPresenter.h" +#include "traing/training_list_fitness/include/TraingFitnessAdapter.h" + +namespace OHOS +{ + class TraingFitnessModel + { + public: + static TraingFitnessModel &GetInstance(void); + void InitTraingFitnessListItem(); + const TraingFitnessItem *GetTraingFitnesslistItems() const; + uint8_t GetTraingFitnessListNum() const; + // const std::map &GetTraingFitnessIdToViewId() const; + + private: + TraingFitnessModel(); + TraingFitnessModel(const TraingFitnessModel &); + TraingFitnessModel &operator=(const TraingFitnessModel &); + virtual ~TraingFitnessModel(); + static const uint16_t TraingFitnessListMaxNum = 65; + TraingFitnessItem TraingFitnesss[TraingFitnessListMaxNum] = {VIEW_INVALID, nullptr}; + // std::map TraingFitnessIdToViewId; + bool btConnectStatus{false}; + }; +} + +#endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingFitnessPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingFitnessPresenter.h new file mode 100644 index 000000000..2d4f902b9 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingFitnessPresenter.h @@ -0,0 +1,46 @@ +/*** + * @Author: Caisking 3449750381@qq.com + * @Date: 2024-03-26 09:44:11 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-03-27 11:29:03 + * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/include/TraingFitnessPresenter.h + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ + + +#ifndef _TraingFitness_PRESENTER_H +#define _TraingFitness_PRESENTER_H + +#include "Presenter.h" +#include "TraingFitnessView.h" + +namespace OHOS +{ + class TraingFitnessView; + class TraingFitnessModel; + class TraingFitnessPresenter : public Presenter, + public UIView::OnClickListener, + public UIView::OnDragListener + { + public: + TraingFitnessPresenter(); + virtual ~TraingFitnessPresenter(); + + void OnStart() override; + void OnPause() override; + void OnResume() override; + void OnStop() override; + + static TraingFitnessPresenter *GetInstance(); + + private: + // 因为继承了OnClickener,所以有OnClick属性,至于参数,原函数也这样直接继承; + bool OnClick(UIView &view, const ClickEvent &event) override; + bool OnDrag(UIView &view, const DragEvent &event) override; + bool OnDragEnd(UIView &view, const DragEvent &event) override; + + TraingFitnessModel *p_TraingFitnessModel{nullptr}; + }; +} // namespace OHOS + +#endif // SLEEPDETAIL_PRESENTER_H \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingFitnessView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingFitnessView.h new file mode 100644 index 000000000..557378db5 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingFitnessView.h @@ -0,0 +1,52 @@ + +#ifndef TraingFitness_VIEW_H +#define TraingFitness_VIEW_H + +#include "BaseView.h" +#include "View.h" +#include "components/ui_view_group.h" +#include "components/ui_scroll_view.h" +#include "components/ui_list.h" +#include "traing/training_list_fitness/include/TraingFitnessAdapter.h" +#include "traing/training_list_fitness/include/TraingFitnessModel.h" +#include "components/ui_label_button_ext.h" +#include "components/ui_label_ext.h" + +namespace OHOS +{ + class TraingFitnessPresenter; + class TraingFitnessModel; + class TraingFitnessView : public View, public UIViewGroup + { + + public: + TraingFitnessView(); + virtual ~TraingFitnessView(); + static TraingFitnessView *GetInstance(void); + + void OnStart() override; + void OnSetUpView() override; + void OnTearDownView() override; + void OnStop() override; + + UIList *GetList(); + void AddToTraingFitnessList(const TraingFitnessItem &item); + + private: + void InitView(void); + void DeInitView(void); + void PreLoad(void); + + private: + UIScrollView *scrollView = nullptr; + UILabelExt *title{nullptr}; + TraingFitnessAdapter *p_TraingFitnessListAdapter{nullptr}; + UIList *TraingFitnessList = nullptr; + UIView::OnDragListener *draglistener{nullptr}; + + TraingFitnessPresenter *g_TraingFitnessPresenter{nullptr}; + TraingFitnessModel *g_TraingFitnessModel{nullptr}; + bool viewInitStatus{false}; + }; +} // namespace OHOS +#endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingListFitnessPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingListFitnessPresenter.h deleted file mode 100644 index e69de29bb..000000000 diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingListFitnessView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingListFitnessView.h deleted file mode 100644 index e69de29bb..000000000 diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessAdapter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessAdapter.cpp new file mode 100644 index 000000000..36cbba2a0 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessAdapter.cpp @@ -0,0 +1,95 @@ +/*** + * @Author: Caisking 3449750381@qq.com + * @Date: 2024-03-27 11:12:53 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-03-27 11:16:09 + * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessAdapter.cpp + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ +#include "traing/training_list_fitness/include/TraingFitnessAdapter.h" +#include "traing/training_list_fitness/include/TraingFitnessModel.h" +#include "traing/training_list_fitness/include/TraingFitnessItemView.h" + +#include "wearable_log.h" + +namespace OHOS +{ + TraingFitnessAdapter::TraingFitnessAdapter() {} + + TraingFitnessAdapter::~TraingFitnessAdapter() + { + listData.clear(); + } + + uint16_t TraingFitnessAdapter::GetCount(void) + { + return listData.size(); + } + + void TraingFitnessAdapter::SetData(std::list &data) + { + if (!listData.empty()) + { + listData.clear(); + } + std::list::iterator it; + for (it = data.begin(); it != data.end(); it++) + { + listData.push_back(*it); + } + } + + /// @brief 为列表的每一项创建一个视图 + /// @param inView 一个指向已存在的视图对象的指 + /// @param index 要创建的视图在列表中的索引l。 + /// @return 返回该视图对象 + UIView *TraingFitnessAdapter::GetView(UIView *inView, int16_t index) + { + + // 1.先检查列表数据是否为空,若为空则返回空指针 + if (listData.empty()) + { + return nullptr; + } + // 2.接着检查索引是否小于0,若小于0则返回空指针 + if (index < 0) + { + return nullptr; + } + // 3.检查是否超出列表数据大小,若超出则返回空指针 + size_t uindex = index; + if (uindex >= listData.size()) + { + return nullptr; + } + // 4.通过迭代器访问列表中指定索引位置的元素,将其赋值给itemData变量 + std::list::iterator it = listData.begin(); + for (int i = 0; i < index; i++) + { + it++; + } + TraingFitnessItem itemData = *it; + TraingFitnessItemView *item = nullptr; + /* + 5.根据传入的inView参数是否已经存在一个视图对象, + 若为空则创建一个新的MessageItemView对象, + 否则将inView转换成MessageItemView类型的指针 + */ + if (inView == nullptr) + { + item = new TraingFitnessItemView(); + } + else + { + item = static_cast(inView); + } + item->SetItemInfo(itemData); + item->SetOnClickListener(itemClickListener); + return item; + } + + void TraingFitnessAdapter::AddItem(const TraingFitnessItem &item) + { + listData.push_back(item); + } +} // namespace OHOS diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessItemView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessItemView.cpp new file mode 100644 index 000000000..1f579e02f --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessItemView.cpp @@ -0,0 +1,69 @@ + + +/*** + * @Author: Caisking 3449750381@qq.com + * @Date: 2024-03-27 14:18:24 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-03-27 14:22:59 + * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessAdapter.cpp + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ + +#include "traing/training_list_fitness/include/TraingFitnessItemView.h" +#include "traing/include/TraingModel.h" +#include "traing/Training_UiConfig.h" +#include "UiConfig.h" +namespace OHOS +{ + + TraingFitnessItemView::TraingFitnessItemView() + { + SetPosition(0, 0, 380, 120); // 每一个itemview宽高要配置好,因为加到list都是以这个视图为基准 + SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full); + SetStyle(STYLE_BACKGROUND_OPA, 255); + SetTouchable(true); + SetUpChild(); + Add(&sbackground); + Add(&sicon); + Add(&sLabel); + } + + TraingFitnessItemView::~TraingFitnessItemView() + { + Remove(&sbackground); + Remove(&sicon); + Remove(&sLabel); + } + + /// @brief 设置item的信息 + /// @param itemInfo + void TraingFitnessItemView::SetItemInfo(const TraingFitnessItem itemInfo) + { + sItemInfo = itemInfo; + sLabel.SetText(itemInfo.label); + } + + /// @brief 设置每一个itemview上的组件 + void TraingFitnessItemView::SetUpChild() + { + sbackground.SetSrc(PNG_SETTING_BACKGROUND_IMAGE); + + sicon.SetPosition(330, 40); + sicon.SetSrc(ICON_IMAGE); + sicon.SetStyle(STYLE_IMAGE_OPA, OPA_OPAQUE); + + sLabel.SetPosition(50, 10, 300, 80); + sLabel.SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS); + sLabel.SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + sLabel.SetRollSpeed(0); + sLabel.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + } + + /// @brief 获取list的中每个组件的在list的下标 + /// @return 返回下标 + AppViewId TraingFitnessItemView::GetTraingFitnessIndex() + { + return sItemInfo.id; + } + +} \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessModel.cpp new file mode 100644 index 000000000..4d36c2c42 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessModel.cpp @@ -0,0 +1,165 @@ +/*** + * @Author: Caisking 3449750381@qq.com + * @Date: 2024-03-26 18:34:15 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-03-26 18:36:25 + * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessModel.cpp + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ + +#include "traing/training_list_fitness/include/TraingFitnessModel.h" +#include "common/image_cache_manager.h" +#include "UiConfig.h" +#include "ui_resource_image.h" +#include "AppViewIDs.h" +namespace OHOS +{ + + TraingFitnessModel::TraingFitnessModel() {} + + TraingFitnessModel::~TraingFitnessModel() {} + + TraingFitnessModel &TraingFitnessModel::GetInstance() + { + static TraingFitnessModel instance; + return instance; + } + static char *text[] = { + "一般锻炼", + "自由训练", + "肌力训练", + "飞轮车/室内健身车", + "踏步机", + "漫步机", + "HIIT/高强度间歇训练", + "健身", + "团体操", + "瑜珈", + "瑜珈猫式", + "瑜珈牛式", + "瑜珈眼镜蛇式", + "瑜珈英雄式1", + "瑜珈英雄式2", + "瑜珈英雄式3", + "瑜珈滚轮", + "室外走路", + "室外跑步", + "室内走路", + "室内跑步", + "室外骑行", + "跳绳", + "皮拉提斯", + "混合健身", + "功能性训练", + "体能训练", + "跆拳道/踢拳", + "拳击", + "自由搏击", + "空手道", + "击剑", + "核心训练", + "拳击有氧", + "剑道", + "单杠", + "双杠", + "循环训练", + "有氧运动", + "健美操", + "P90X", + "壶铃训练", + "综合格斗", + "爬楼梯机", + "举重", + "Barre", + "手轮", + "田径", + "角力", + "身心运动", + "柔软操", + "混和有氧", + "传统肌力训练", + "交叉训练", + "体操", + "阶梯训练", + "椭圆机", + "划船机"}; + + void TraingFitnessModel::InitTraingFitnessListItem() + { + TraingFitnesss[0] = {VIEW_TRAININGNOMAL, text[0]}; + TraingFitnesss[1] = {VIEW_TRAININGNOMAL, text[1]}; + TraingFitnesss[2] = {VIEW_TRAININGNOMAL, text[2]}; + TraingFitnesss[3] = {VIEW_TRAININGNOMAL, text[3]}; + TraingFitnesss[4] = {VIEW_TRAININGNOMAL, text[4]}; + TraingFitnesss[5] = {VIEW_TRAININGNOMAL, text[5]}; + TraingFitnesss[6] = {VIEW_TRAININGNOMAL, text[6]}; + TraingFitnesss[7] = {VIEW_TRAININGNOMAL, text[7]}; + TraingFitnesss[8] = {VIEW_TRAININGNOMAL, text[8]}; + TraingFitnesss[9] = {VIEW_TRAININGNOMAL, text[9]}; + TraingFitnesss[10] = {VIEW_TRAININGNOMAL, text[10]}; + TraingFitnesss[11] = {VIEW_TRAININGNOMAL, text[11]}; + TraingFitnesss[12] = {VIEW_TRAININGNOMAL, text[12]}; + TraingFitnesss[13] = {VIEW_TRAININGNOMAL, text[13]}; + TraingFitnesss[14] = {VIEW_TRAININGNOMAL, text[14]}; + TraingFitnesss[15] = {VIEW_TRAININGNOMAL, text[15]}; + TraingFitnesss[16] = {VIEW_TRAININGNOMAL, text[16]}; + TraingFitnesss[17] = {VIEW_TRAININGNOMAL, text[17]}; + TraingFitnesss[18] = {VIEW_TRAININGNOMAL, text[18]}; + TraingFitnesss[19] = {VIEW_TRAININGNOMAL, text[19]}; + TraingFitnesss[20] = {VIEW_TRAININGNOMAL, text[20]}; + TraingFitnesss[21] = {VIEW_TRAININGNOMAL, text[21]}; + TraingFitnesss[22] = {VIEW_TRAININGNOMAL, text[22]}; + TraingFitnesss[23] = {VIEW_TRAININGNOMAL, text[23]}; + TraingFitnesss[24] = {VIEW_TRAININGNOMAL, text[24]}; + TraingFitnesss[25] = {VIEW_TRAININGNOMAL, text[25]}; + TraingFitnesss[26] = {VIEW_TRAININGNOMAL, text[26]}; + TraingFitnesss[27] = {VIEW_TRAININGNOMAL, text[27]}; + TraingFitnesss[28] = {VIEW_TRAININGNOMAL, text[28]}; + TraingFitnesss[29] = {VIEW_TRAININGNOMAL, text[29]}; + TraingFitnesss[30] = {VIEW_TRAININGNOMAL, text[30]}; + TraingFitnesss[31] = {VIEW_TRAININGNOMAL, text[31]}; + TraingFitnesss[32] = {VIEW_TRAININGNOMAL, text[32]}; + TraingFitnesss[33] = {VIEW_TRAININGNOMAL, text[33]}; + TraingFitnesss[34] = {VIEW_TRAININGNOMAL, text[34]}; + TraingFitnesss[35] = {VIEW_TRAININGNOMAL, text[35]}; + TraingFitnesss[36] = {VIEW_TRAININGNOMAL, text[36]}; + TraingFitnesss[37] = {VIEW_TRAININGNOMAL, text[37]}; + TraingFitnesss[38] = {VIEW_TRAININGNOMAL, text[38]}; + TraingFitnesss[39] = {VIEW_TRAININGNOMAL, text[39]}; + TraingFitnesss[40] = {VIEW_TRAININGNOMAL, text[40]}; + TraingFitnesss[41] = {VIEW_TRAININGNOMAL, text[41]}; + TraingFitnesss[42] = {VIEW_TRAININGNOMAL, text[42]}; + TraingFitnesss[43] = {VIEW_TRAININGNOMAL, text[43]}; + TraingFitnesss[44] = {VIEW_TRAININGNOMAL, text[44]}; + TraingFitnesss[45] = {VIEW_TRAININGNOMAL, text[45]}; + TraingFitnesss[46] = {VIEW_TRAININGNOMAL, text[46]}; + TraingFitnesss[47] = {VIEW_TRAININGNOMAL, text[47]}; + TraingFitnesss[48] = {VIEW_TRAININGNOMAL, text[48]}; + TraingFitnesss[49] = {VIEW_TRAININGNOMAL, text[49]}; + TraingFitnesss[50] = {VIEW_TRAININGNOMAL, text[50]}; + TraingFitnesss[51] = {VIEW_TRAININGNOMAL, text[51]}; + TraingFitnesss[52] = {VIEW_TRAININGNOMAL, text[52]}; + TraingFitnesss[53] = {VIEW_TRAININGNOMAL, text[53]}; + TraingFitnesss[54] = {VIEW_TRAININGNOMAL, text[54]}; + TraingFitnesss[55] = {VIEW_TRAININGNOMAL, text[55]}; + TraingFitnesss[56] = {VIEW_TRAININGNOMAL, text[56]}; + TraingFitnesss[57] = {VIEW_TRAININGNOMAL, text[57]}; + TraingFitnesss[58] = {VIEW_TRAININGNOMAL, text[58]}; + TraingFitnesss[59] = {VIEW_TRAININGNOMAL, text[59]}; + TraingFitnesss[60] = {VIEW_TRAININGNOMAL, text[60]}; + TraingFitnesss[61] = {VIEW_TRAININGNOMAL, text[61]}; + TraingFitnesss[62] = {VIEW_TRAININGNOMAL, text[62]}; + TraingFitnesss[63] = {VIEW_TRAININGNOMAL, text[63]}; + TraingFitnesss[64] = {VIEW_TRAININGNOMAL, text[64]}; + } + + const TraingFitnessItem *TraingFitnessModel::GetTraingFitnesslistItems() const + { + return TraingFitnesss; + } + uint8_t TraingFitnessModel::GetTraingFitnessListNum() const + { + return TraingFitnessListMaxNum; + } + +} \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessPresenter.cpp new file mode 100644 index 000000000..3cf31fe1e --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessPresenter.cpp @@ -0,0 +1,113 @@ +/*** + * @Author: Caisking 3449750381@qq.com + * @Date: 2024-03-19 17:37:19 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-03-26 19:51:06 + * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessPresenter.cpp + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ +/*** + * @Author: Caisking 3449750381@qq.com + * @Date: 2024-03-19 17:37:19 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-03-26 14:23:32 + * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/src/TraingFitnessPresenter.cpp + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ + +#include "AppViewIDs.h" +#include "NativeAbility.h" + +#include +#include +#include +#include "traing/training_list_fitness/include/TraingFitnessItemView.h" +#include "traing/training_list_fitness/include/TraingFitnessPresenter.h" +#include "traing/training_list_fitness/include/TraingFitnessView.h" +// #include "TraingFitnessView.h" + +namespace OHOS +{ + extern const char *Fitness_buttons[]; + extern char *Fitness_text[]; + + // 当前Presenter属性实例化的内存指针 + static TraingFitnessPresenter *g_pTraingFitnessPresenter = nullptr; + + TraingFitnessPresenter::TraingFitnessPresenter() + { + p_TraingFitnessModel = &TraingFitnessModel::GetInstance(); + g_pTraingFitnessPresenter = this; + } + + TraingFitnessPresenter::~TraingFitnessPresenter() + { + + g_pTraingFitnessPresenter = nullptr; + } + + TraingFitnessPresenter *TraingFitnessPresenter::GetInstance() + { + + return g_pTraingFitnessPresenter; + } + + void TraingFitnessPresenter::OnStart() + { + p_TraingFitnessModel->InitTraingFitnessListItem(); + Presenter::OnStart(); + } + + void TraingFitnessPresenter::OnPause(void) + { + Presenter::OnPause(); + } + + void TraingFitnessPresenter::OnResume(void) + { + if (view_ == nullptr) + { + return; + } + const TraingFitnessItem *itemInfo = p_TraingFitnessModel->GetTraingFitnesslistItems(); + for (int i = 0; i < p_TraingFitnessModel->GetTraingFitnessListNum(); i++) + { + view_->AddToTraingFitnessList(itemInfo[i]); + } + Presenter::OnResume(); + } + + void TraingFitnessPresenter::OnStop(void) + { + + Presenter::OnStop(); + } + bool TraingFitnessPresenter::OnDrag(UIView &view, const DragEvent &event) + { + return true; + } + bool TraingFitnessPresenter::OnDragEnd(UIView &view, const DragEvent &event) + { + if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGMORE); + } + UNUSED(view); + return true; + } + + bool TraingFitnessPresenter::OnClick(UIView &view, const ClickEvent &event) + { + UNUSED(event); + TraingFitnessItemView *itemView = static_cast(&view); + AppViewId viewId = itemView->GetTraingFitnessIndex(); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistPresenter::OnClick viewid = %d\n", viewId); + if (viewId < VIEW_MAX_INTER_APP) + { + NativeAbility::GetInstance().ChangeSlice(viewId); + return true; + } + return false; + } + +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessView.cpp new file mode 100644 index 000000000..5d1221688 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessView.cpp @@ -0,0 +1,152 @@ +#include "traing/training_list_fitness/include/TraingFitnessView.h" +#include "traing/training_list_fitness/include/TraingFitnessPresenter.h" +#include "traing/include/TraingModel.h" +#include "traing/Training_UiConfig.h" + +#include "UiConfig.h" +#include "wearable_log.h" + +namespace OHOS +{ + static constexpr uint8_t NUM_2 = 2; + static TraingFitnessView *g_pTraingFitnessView{nullptr}; + + static constexpr int16_t Fitness_LIST_POSITION_X = 43; + static constexpr int16_t Fitness_LIST_POSITION_Y = 120; + static constexpr int16_t Fitness_SCROLLBLANKSIZE = 35; // 设置此滚动视图的空白大小。 + static constexpr int16 MAX_SCR_DIS = 1000; + static constexpr int16 LIST_POS = 20; + static constexpr int16 SNUM_2 = 2; + + TraingFitnessView::TraingFitnessView() + { + g_pTraingFitnessView = this; + } + + TraingFitnessView::~TraingFitnessView() + { + if (viewInitStatus == true) + { + DeInitView(); + } + g_pTraingFitnessView = nullptr; + } + + TraingFitnessView *TraingFitnessView::GetInstance() + { + return g_pTraingFitnessView; + } + /// @param item + void TraingFitnessView::AddToTraingFitnessList(const TraingFitnessItem &item) + { + p_TraingFitnessListAdapter->AddItem(item); + } + void TraingFitnessView::InitView() + { + if (scrollView == nullptr) + { + scrollView = new UIScrollView(); + } + scrollView->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION); + // scrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff); + scrollView->SetScrollBlankSize(52); + scrollView->SetReboundSize(100); + scrollView->SetTouchable(true); + scrollView->SetDraggable(true); + scrollView->SetDirection(1); + draglistener = static_cast(TraingFitnessPresenter::GetInstance()); + scrollView->SetOnDragListener(draglistener); + scrollView->SetYScrollBarVisible(true); // 设置滑动滚动条 + /* -------------------------------------------------------------------------- */ + // 初始化Lable + TraingModel::GetInstance()->InitLabelExt(title, 173, 52, 200, 60, "label1", "健身运动", DEFAULT_VECTOR_FONT_FILENAME, 30); + scrollView->Add(title); + // UIList 的适配器 + p_TraingFitnessListAdapter = new TraingFitnessAdapter(); + p_TraingFitnessListAdapter->SetItemClickListener(presenter_); + if (TraingFitnessList == nullptr) + { + TraingFitnessList = new UIList(); + } + TraingFitnessList->SetPosition(Fitness_LIST_POSITION_X, Fitness_LIST_POSITION_Y); + TraingFitnessList->Resize(HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION); + TraingFitnessList->SetScrollBlankSize(Fitness_SCROLLBLANKSIZE); + TraingFitnessList->SetReboundSize(100); + TraingFitnessList->SetSelectPosition(HORIZONTAL_RESOLUTION / SNUM_2); // middle position + TraingFitnessList->SetDraggable(true); + TraingFitnessList->SetThrowDrag(false); + TraingFitnessList->EnableAutoAlign(true); + TraingFitnessList->SetElastic(true); // 设置回弹效果 + TraingFitnessList->SetMaxScrollDistance(MAX_SCR_DIS); + + // 增加表冠控制 + TraingFitnessList->SetRotateFactor(2); + TraingFitnessList->RequestFocus(); + } + UIList *TraingFitnessView::GetList() + { + return TraingFitnessList; + } + void TraingFitnessView::DeInitView() + { + // scrollView-> RemoveAll(); + RemoveAll(); + delete title; + title = nullptr; + + delete TraingFitnessList; + TraingFitnessList = nullptr; + + delete scrollView; + scrollView = nullptr; + + delete draglistener; + draglistener = nullptr; + } + + void TraingFitnessView::PreLoad(void) + { + if (!viewInitStatus) + { + InitView(); + viewInitStatus = true; + } + } + + /// @brief 页面启动时需要执行的代码逻辑 + void TraingFitnessView::OnStart() + { + View::OnStart(); + BaseView::RootView(Color::Black().full); + PreLoad(); + } + + /// @brief 创建页面的视图。 + void TraingFitnessView::OnSetUpView() + { + View::OnSetUpView(); + // scrollView->Add(title); + scrollView->Add(TraingFitnessList); + scrollView->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT); + RootView::GetInstance()->Add(scrollView); + TraingFitnessList->SetAdapter(p_TraingFitnessListAdapter); + // TraingFitnessList->RefreshList(); // 刷新列表 + Draw(); + } + + /// @brief 销毁页面的视图。 + void TraingFitnessView::OnTearDownView() + { + View::OnTearDownView(); + return; + } + + /// @brief 页面结束时需要执行的销毁逻辑。 + void TraingFitnessView::OnStop() + { + View::OnStop(); + RootView::GetInstance()->RemoveAll(); + RootView::GetInstance()->ClearFocus(); + return; + } +} \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingListFitnessPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingListFitnessPresenter.cpp deleted file mode 100644 index e69de29bb..000000000 diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingListFitnessView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingListFitnessView.cpp deleted file mode 100644 index e69de29bb..000000000 diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/include/TraingIceAdapter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/include/TraingIceAdapter.h index 4cea6fed1..eda96ad39 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/include/TraingIceAdapter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/include/TraingIceAdapter.h @@ -2,7 +2,7 @@ * @Author: Caisking 3449750381@qq.com * @Date: 2024-03-27 11:09:52 * @LastEditors: Caisking 3449750381@qq.com - * @LastEditTime: 2024-03-27 11:14:03 + * @LastEditTime: 2024-03-27 14:20:36 * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/include/TraingIceAdapter.h * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/include/TraingIceItemView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/include/TraingIceItemView.h index 97c96d764..62eccfd98 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/include/TraingIceItemView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/include/TraingIceItemView.h @@ -1,19 +1,4 @@ -/*** - * @Author: Caisking 3449750381@qq.com - * @Date: 2024-03-27 11:12:32 - * @LastEditors: Caisking 3449750381@qq.com - * @LastEditTime: 2024-03-27 11:14:36 - * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/include/TraingIceItemView.h - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ -/*** - * @Author: Caisking 3449750381@qq.com - * @Date: 2024-03-26 17:05:18 - * @LastEditors: Caisking 3449750381@qq.com - * @LastEditTime: 2024-03-26 18:24:58 - * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/include/TraingIceItemView.h - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ + #ifndef TraingIce_ITEM_VIEW_H #define TraingIce_ITEM_VIEW_H diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/include/TraingIcePresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/include/TraingIcePresenter.h index c599bf3ce..58935d6bb 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/include/TraingIcePresenter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/include/TraingIcePresenter.h @@ -2,7 +2,7 @@ * @Author: Caisking 3449750381@qq.com * @Date: 2024-03-26 09:44:11 * @LastEditors: Caisking 3449750381@qq.com - * @LastEditTime: 2024-03-27 11:29:03 + * @LastEditTime: 2024-03-27 14:22:01 * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/include/TraingIcePresenter.h * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/src/TraingIceAdapter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/src/TraingIceAdapter.cpp index af9e02526..ae848dbf8 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/src/TraingIceAdapter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/src/TraingIceAdapter.cpp @@ -2,7 +2,7 @@ * @Author: Caisking 3449750381@qq.com * @Date: 2024-03-27 11:12:53 * @LastEditors: Caisking 3449750381@qq.com - * @LastEditTime: 2024-03-27 11:16:09 + * @LastEditTime: 2024-03-27 14:22:47 * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/src/TraingIceAdapter.cpp * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_more/src/TraingMorePresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_more/src/TraingMorePresenter.cpp index c84ccf79d..c4a0eeaea 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_more/src/TraingMorePresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_more/src/TraingMorePresenter.cpp @@ -95,7 +95,7 @@ namespace OHOS } if (strcmp(view.GetViewId(), BUTTON_FITNESS) == 0) { - NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGLIMIT); + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGFITNESS); } if (strcmp(view.GetViewId(), BUTTON_ICE) == 0) {