From: Caisking <3449750381@qq.com> Date: Wed, 27 Mar 2024 07:44:19 +0000 (+0800) Subject: 增加舞蹈运动列表 X-Git-Tag: release_V1.2.70_20241020_135402~1254 X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=8391dd84cb39ad256d757fc64c2735dc8c4858b2;p=mirrors%2FFD230.git 增加舞蹈运动列表 --- diff --git a/code/sdk/application/wearable/fd230app/CMakeLists.txt b/code/sdk/application/wearable/fd230app/CMakeLists.txt index d99da851f..f588ad444 100644 --- a/code/sdk/application/wearable/fd230app/CMakeLists.txt +++ b/code/sdk/application/wearable/fd230app/CMakeLists.txt @@ -471,6 +471,13 @@ set(SOURCES ${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_dance/src/TraingDanceView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/training_list_dance/src/TraingDancePresenter.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/training_list_dance/src/TraingDanceAdapter.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/training_list_dance/src/TraingDanceItemView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/training_list_dance/src/TraingDanceModel.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 889477eb1..6084e0cd0 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h +++ b/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h @@ -89,6 +89,7 @@ typedef enum : uint16_t VIEW_TRAININGLIMIT, // 极限运动列表 VIEW_TRAININGICE, // 冰上运动列表 VIEW_TRAININGFITNESS, // 健身运动列表 + VIEW_TRAININGDANCE, // 舞蹈运动列表 /* ---------------------------------- 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 13f7b3642..48a41d2b9 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h +++ b/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h @@ -81,10 +81,11 @@ namespace OHOS void InitTraingMoreSlice(void); // 更多训练 void InitTraingLimitSlice(void); // 极限训练 void InitTraingIceSlice(void); // 冰上训练 - void InitTraingFitnessSlice(void); // 冰上训练 + void InitTraingFitnessSlice(void); // 健身训练 + void InitTraingDanceSlice(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 39afdc3c1..318b60c46 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp +++ b/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp @@ -196,6 +196,8 @@ #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_list_dance/include/TraingDancePresenter.h" +#include "traing/training_list_dance/include/TraingDanceView.h" /* ---------------------------------- 主界面卡片 --------------------------------- */ #include "traing/training_card/include/TraingCardPresenter.h" #include "traing/training_card/include/TraingCardView.h" @@ -295,6 +297,7 @@ namespace OHOS {VIEW_TRAININGLIMIT, &NativeLauncher::InitTraingLimitSlice}, // 极限训练 {VIEW_TRAININGICE, &NativeLauncher::InitTraingIceSlice}, // 冰上训练 {VIEW_TRAININGFITNESS, &NativeLauncher::InitTraingFitnessSlice}, // 健身训练 + {VIEW_TRAININGDANCE, &NativeLauncher::InitTraingDanceSlice}, // 舞蹈训练 /* -------------------------------------------------------------------------- */ @@ -1009,6 +1012,11 @@ namespace OHOS SliceProxy *TraingFitnessview = new AbilitySliceProxy; NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGFITNESS, TraingFitnessview); } + void NativeLauncher::InitTraingDanceSlice(void) + { + SliceProxy *TraingDanceview = new AbilitySliceProxy; + NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGDANCE, TraingDanceview); + } /* -------------------------------------------------------------------------- */ // 省电模式 diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/include/TraingDanceAdapter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/include/TraingDanceAdapter.h new file mode 100644 index 000000000..379ee505c --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/include/TraingDanceAdapter.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:20:36 + * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/include/TraingDanceAdapter.h + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ + +#ifndef TraingDance_ADAPTER_H +#define TraingDance_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; // 标签 + } TraingDanceItem; + + class TraingDanceAdapter : public AbstractAdapter + { + public: + explicit TraingDanceAdapter(); + virtual ~TraingDanceAdapter(); + + void SetData(std::list &data); + + virtual uint16_t GetCount(void) override; + + virtual UIView *GetView(UIView *inView, int16_t index) override; + + virtual void AddItem(const TraingDanceItem &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_dance/include/TraingDanceItemView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/include/TraingDanceItemView.h new file mode 100644 index 000000000..a3609957e --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/include/TraingDanceItemView.h @@ -0,0 +1,35 @@ + + +#ifndef TraingDance_ITEM_VIEW_H +#define TraingDance_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_dance/include/TraingDanceAdapter.h" +#include "components/ui_label_button.h" +#include "AppViewIDs.h" +#include "ohos_types.h" + +namespace OHOS +{ + class TraingDanceItemView : public UIViewGroup + { + public: + explicit TraingDanceItemView(); + virtual ~TraingDanceItemView(); + virtual void SetItemInfo(const TraingDanceItem itemInfo); + virtual void SetUpChild(); + AppViewId GetTraingDanceIndex(); + + private: + TraingDanceItemView(const TraingDanceItemView &); + UIImageView sbackground; // 背景 + UIImageView sicon; // 箭头 + UILabel sLabel; // 标签 + TraingDanceItem sItemInfo = {VIEW_INVALID, nullptr}; + }; + +} +#endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/include/TraingDanceModel.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/include/TraingDanceModel.h new file mode 100644 index 000000000..bbb7296a6 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/include/TraingDanceModel.h @@ -0,0 +1,43 @@ +/*** + * @Author: Caisking 3449750381@qq.com + * @Date: 2024-03-27 15:23:46 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-03-27 15:36:18 + * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/include/TraingDanceModel.h + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ + +#ifndef TraingDance_MODEL_H +#define TraingDance_MODEL_H + +#include +#include +#include "AppViewIDs.h" +#include "UiConfig.h" +#include "TraingDancePresenter.h" +#include "traing/training_list_dance/include/TraingDanceAdapter.h" + +namespace OHOS +{ + class TraingDanceModel + { + public: + static TraingDanceModel &GetInstance(void); + void InitTraingDanceListItem(); + const TraingDanceItem *GetTraingDancelistItems() const; + uint8_t GetTraingDanceListNum() const; + // const std::map &GetTraingDanceIdToViewId() const; + + private: + TraingDanceModel(); + TraingDanceModel(const TraingDanceModel &); + TraingDanceModel &operator=(const TraingDanceModel &); + virtual ~TraingDanceModel(); + static const uint16_t TraingDanceListMaxNum = 10; + TraingDanceItem TraingDances[TraingDanceListMaxNum] = {VIEW_INVALID, nullptr}; + // std::map TraingDanceIdToViewId; + bool btConnectStatus{false}; + }; +} + +#endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/include/TraingDancePresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/include/TraingDancePresenter.h new file mode 100644 index 000000000..5549caaf8 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/include/TraingDancePresenter.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 14:22:01 + * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/include/TraingDancePresenter.h + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ + + +#ifndef _TraingDance_PRESENTER_H +#define _TraingDance_PRESENTER_H + +#include "Presenter.h" +#include "TraingDanceView.h" + +namespace OHOS +{ + class TraingDanceView; + class TraingDanceModel; + class TraingDancePresenter : public Presenter, + public UIView::OnClickListener, + public UIView::OnDragListener + { + public: + TraingDancePresenter(); + virtual ~TraingDancePresenter(); + + void OnStart() override; + void OnPause() override; + void OnResume() override; + void OnStop() override; + + static TraingDancePresenter *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; + + TraingDanceModel *p_TraingDanceModel{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_dance/include/TraingDanceView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/include/TraingDanceView.h new file mode 100644 index 000000000..be6094c01 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/include/TraingDanceView.h @@ -0,0 +1,52 @@ + +#ifndef TraingDance_VIEW_H +#define TraingDance_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_dance/include/TraingDanceAdapter.h" +#include "traing/training_list_dance/include/TraingDanceModel.h" +#include "components/ui_label_button_ext.h" +#include "components/ui_label_ext.h" + +namespace OHOS +{ + class TraingDancePresenter; + class TraingDanceModel; + class TraingDanceView : public View, public UIViewGroup + { + + public: + TraingDanceView(); + virtual ~TraingDanceView(); + static TraingDanceView *GetInstance(void); + + void OnStart() override; + void OnSetUpView() override; + void OnTearDownView() override; + void OnStop() override; + + UIList *GetList(); + void AddToTraingDanceList(const TraingDanceItem &item); + + private: + void InitView(void); + void DeInitView(void); + void PreLoad(void); + + private: + UIScrollView *scrollView = nullptr; + UILabelExt *title{nullptr}; + TraingDanceAdapter *p_TraingDanceListAdapter{nullptr}; + UIList *TraingDanceList = nullptr; + UIView::OnDragListener *draglistener{nullptr}; + + TraingDancePresenter *g_TraingDancePresenter{nullptr}; + TraingDanceModel *g_TraingDanceModel{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_dance/include/TraingListDancePresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/include/TraingListDancePresenter.h deleted file mode 100644 index e69de29bb..000000000 diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/include/TraingListDanceView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/include/TraingListDanceView.h deleted file mode 100644 index e69de29bb..000000000 diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/src/TraingDanceAdapter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/src/TraingDanceAdapter.cpp new file mode 100644 index 000000000..4faf50d45 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/src/TraingDanceAdapter.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 15:27:47 + * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/src/TraingDanceAdapter.cpp + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ +#include "traing/training_list_dance/include/TraingDanceAdapter.h" +#include "traing/training_list_dance/include/TraingDanceModel.h" +#include "traing/training_list_dance/include/TraingDanceItemView.h" + +#include "wearable_log.h" + +namespace OHOS +{ + TraingDanceAdapter::TraingDanceAdapter() {} + + TraingDanceAdapter::~TraingDanceAdapter() + { + listData.clear(); + } + + uint16_t TraingDanceAdapter::GetCount(void) + { + return listData.size(); + } + + void TraingDanceAdapter::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 *TraingDanceAdapter::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++; + } + TraingDanceItem itemData = *it; + TraingDanceItemView *item = nullptr; + /* + 5.根据传入的inView参数是否已经存在一个视图对象, + 若为空则创建一个新的MessageItemView对象, + 否则将inView转换成MessageItemView类型的指针 + */ + if (inView == nullptr) + { + item = new TraingDanceItemView(); + } + else + { + item = static_cast(inView); + } + item->SetItemInfo(itemData); + item->SetOnClickListener(itemClickListener); + return item; + } + + void TraingDanceAdapter::AddItem(const TraingDanceItem &item) + { + listData.push_back(item); + } +} // namespace OHOS diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/src/TraingDanceItemView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/src/TraingDanceItemView.cpp new file mode 100644 index 000000000..27095a06c --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/src/TraingDanceItemView.cpp @@ -0,0 +1,59 @@ + +#include "traing/training_list_dance/include/TraingDanceItemView.h" +#include "traing/include/TraingModel.h" +#include "traing/Training_UiConfig.h" +#include "UiConfig.h" +namespace OHOS +{ + + TraingDanceItemView::TraingDanceItemView() + { + 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); + } + + TraingDanceItemView::~TraingDanceItemView() + { + Remove(&sbackground); + Remove(&sicon); + Remove(&sLabel); + } + + /// @brief 设置item的信息 + /// @param itemInfo + void TraingDanceItemView::SetItemInfo(const TraingDanceItem itemInfo) + { + sItemInfo = itemInfo; + sLabel.SetText(itemInfo.label); + } + + /// @brief 设置每一个itemview上的组件 + void TraingDanceItemView::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 TraingDanceItemView::GetTraingDanceIndex() + { + return sItemInfo.id; + } + +} \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/src/TraingDanceModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/src/TraingDanceModel.cpp new file mode 100644 index 000000000..02867ae52 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/src/TraingDanceModel.cpp @@ -0,0 +1,61 @@ +/*** + * @Author: Caisking 3449750381@qq.com + * @Date: 2024-03-27 15:25:17 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-03-27 15:42:56 + * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/src/TraingDanceModel.cpp + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ +/*** + * @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_dance/src/TraingDanceModel.cpp + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ + +#include "traing/training_list_dance/include/TraingDanceModel.h" +#include "common/image_cache_manager.h" +#include "UiConfig.h" +#include "ui_resource_image.h" +#include "AppViewIDs.h" +namespace OHOS +{ + + TraingDanceModel::TraingDanceModel() {} + + TraingDanceModel::~TraingDanceModel() {} + + TraingDanceModel &TraingDanceModel::GetInstance() + { + static TraingDanceModel instance; + return instance; + } + + static char *text[] = {"一般舞蹈", "肚皮舞", "爵士舞", "拉丁舞", "芭蕾", "街舞", "广场舞", "尊巴", "社交舞", "踢踏舞"}; + + void TraingDanceModel::InitTraingDanceListItem() + { + TraingDances[0] = {VIEW_TRAININGNOMAL, "一般舞蹈"}; + TraingDances[1] = {VIEW_TRAININGNOMAL, "肚皮舞"}; + TraingDances[2] = {VIEW_TRAININGNOMAL, "爵士舞"}; + TraingDances[3] = {VIEW_TRAININGNOMAL, "拉丁舞"}; + TraingDances[4] = {VIEW_TRAININGNOMAL, "芭蕾"}; + TraingDances[5] = {VIEW_TRAININGNOMAL, "街舞"}; + TraingDances[6] = {VIEW_TRAININGNOMAL, "广场舞"}; + TraingDances[7] = {VIEW_TRAININGNOMAL, "尊巴"}; + TraingDances[8] = {VIEW_TRAININGNOMAL, "社交舞"}; + TraingDances[9] = {VIEW_TRAININGNOMAL, "踢踏舞"}; + } + + const TraingDanceItem *TraingDanceModel::GetTraingDancelistItems() const + { + return TraingDances; + } + uint8_t TraingDanceModel::GetTraingDanceListNum() const + { + return TraingDanceListMaxNum; + } + +} \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/src/TraingDancePresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/src/TraingDancePresenter.cpp new file mode 100644 index 000000000..fe9cd72c0 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/src/TraingDancePresenter.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_dance/src/TraingDancePresenter.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/TraingDancePresenter.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_dance/include/TraingDanceItemView.h" +#include "traing/training_list_dance/include/TraingDancePresenter.h" +#include "traing/training_list_dance/include/TraingDanceView.h" +// #include "TraingDanceView.h" + +namespace OHOS +{ + extern const char *Dance_buttons[]; + extern char *Dance_text[]; + + // 当前Presenter属性实例化的内存指针 + static TraingDancePresenter *g_pTraingDancePresenter = nullptr; + + TraingDancePresenter::TraingDancePresenter() + { + p_TraingDanceModel = &TraingDanceModel::GetInstance(); + g_pTraingDancePresenter = this; + } + + TraingDancePresenter::~TraingDancePresenter() + { + + g_pTraingDancePresenter = nullptr; + } + + TraingDancePresenter *TraingDancePresenter::GetInstance() + { + + return g_pTraingDancePresenter; + } + + void TraingDancePresenter::OnStart() + { + p_TraingDanceModel->InitTraingDanceListItem(); + Presenter::OnStart(); + } + + void TraingDancePresenter::OnPause(void) + { + Presenter::OnPause(); + } + + void TraingDancePresenter::OnResume(void) + { + if (view_ == nullptr) + { + return; + } + const TraingDanceItem *itemInfo = p_TraingDanceModel->GetTraingDancelistItems(); + for (int i = 0; i < p_TraingDanceModel->GetTraingDanceListNum(); i++) + { + view_->AddToTraingDanceList(itemInfo[i]); + } + Presenter::OnResume(); + } + + void TraingDancePresenter::OnStop(void) + { + + Presenter::OnStop(); + } + bool TraingDancePresenter::OnDrag(UIView &view, const DragEvent &event) + { + return true; + } + bool TraingDancePresenter::OnDragEnd(UIView &view, const DragEvent &event) + { + if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGMORE); + } + UNUSED(view); + return true; + } + + bool TraingDancePresenter::OnClick(UIView &view, const ClickEvent &event) + { + UNUSED(event); + TraingDanceItemView *itemView = static_cast(&view); + AppViewId viewId = itemView->GetTraingDanceIndex(); + 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_dance/src/TraingDanceView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/src/TraingDanceView.cpp new file mode 100644 index 000000000..ec71410cc --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/src/TraingDanceView.cpp @@ -0,0 +1,151 @@ +#include "traing/training_list_dance/include/TraingDanceView.h" +#include "traing/training_list_dance/include/TraingDancePresenter.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 TraingDanceView *g_pTraingDanceView{nullptr}; + /* --------------------------------- List --------------------------------- */ + static constexpr int16_t Dance_LIST_POSITION_X = 43; + static constexpr int16_t Dance_LIST_POSITION_Y = 120; + static constexpr int16_t Dance_SCROLLBLANKSIZE = 35; // 设置此滚动视图的空白大小。 + static constexpr int16 MAX_SCR_DIS = 1000; + static constexpr int16 LIST_POS = 20; + static constexpr int16 SNUM_2 = 2; + + TraingDanceView::TraingDanceView() + { + g_pTraingDanceView = this; + } + + TraingDanceView::~TraingDanceView() + { + if (viewInitStatus == true) + { + DeInitView(); + } + g_pTraingDanceView = nullptr; + } + + TraingDanceView *TraingDanceView::GetInstance() + { + return g_pTraingDanceView; + } + /// @param item + void TraingDanceView::AddToTraingDanceList(const TraingDanceItem &item) + { + p_TraingDanceListAdapter->AddItem(item); + } + void TraingDanceView::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(TraingDancePresenter::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_TraingDanceListAdapter = new TraingDanceAdapter(); + p_TraingDanceListAdapter->SetItemClickListener(presenter_); + if (TraingDanceList == nullptr) + { + TraingDanceList = new UIList(); + } + TraingDanceList->SetPosition(Dance_LIST_POSITION_X, Dance_LIST_POSITION_Y); + TraingDanceList->Resize(HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION); + TraingDanceList->SetScrollBlankSize(Dance_SCROLLBLANKSIZE); + TraingDanceList->SetSelectPosition(HORIZONTAL_RESOLUTION / SNUM_2); // middle position + TraingDanceList->SetDraggable(true); + TraingDanceList->SetThrowDrag(false); + TraingDanceList->EnableAutoAlign(true); + TraingDanceList->SetElastic(true); // 设置回弹效果 + TraingDanceList->SetMaxScrollDistance(MAX_SCR_DIS); + + // 增加表冠控制 + TraingDanceList->SetRotateFactor(2); + TraingDanceList->RequestFocus(); + } + UIList *TraingDanceView::GetList() + { + return TraingDanceList; + } + void TraingDanceView::DeInitView() + { + // scrollView-> RemoveAll(); + RemoveAll(); + delete title; + title = nullptr; + + delete TraingDanceList; + TraingDanceList = nullptr; + + delete scrollView; + scrollView = nullptr; + + delete draglistener; + draglistener = nullptr; + } + + void TraingDanceView::PreLoad(void) + { + if (!viewInitStatus) + { + InitView(); + viewInitStatus = true; + } + } + + /// @brief 页面启动时需要执行的代码逻辑 + void TraingDanceView::OnStart() + { + View::OnStart(); + BaseView::RootView(Color::Black().full); + PreLoad(); + } + + /// @brief 创建页面的视图。 + void TraingDanceView::OnSetUpView() + { + View::OnSetUpView(); + // scrollView->Add(title); + scrollView->Add(TraingDanceList); + scrollView->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT); + RootView::GetInstance()->Add(scrollView); + TraingDanceList->SetAdapter(p_TraingDanceListAdapter); + // TraingDanceList->RefreshList(); // 刷新列表 + Draw(); + } + + /// @brief 销毁页面的视图。 + void TraingDanceView::OnTearDownView() + { + View::OnTearDownView(); + return; + } + + /// @brief 页面结束时需要执行的销毁逻辑。 + void TraingDanceView::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_dance/src/TraingListDancePresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/src/TraingListDancePresenter.cpp deleted file mode 100644 index e69de29bb..000000000 diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/src/TraingListDanceView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/src/TraingListDanceView.cpp deleted file mode 100644 index e69de29bb..000000000 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 index 3d1b515f8..ad24d3796 100644 --- 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 @@ -25,7 +25,7 @@ namespace OHOS TraingFitnessModel(const TraingFitnessModel &); TraingFitnessModel &operator=(const TraingFitnessModel &); virtual ~TraingFitnessModel(); - static const uint16_t TraingFitnessListMaxNum = 65; + static const uint16_t TraingFitnessListMaxNum = 58; TraingFitnessItem TraingFitnesss[TraingFitnessListMaxNum] = {VIEW_INVALID, nullptr}; // std::map TraingFitnessIdToViewId; bool btConnectStatus{false}; 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 index 4d36c2c42..488deec26 100644 --- 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 @@ -144,13 +144,6 @@ namespace OHOS 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 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 index 5d1221688..0600af81e 100644 --- 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 @@ -71,7 +71,7 @@ namespace OHOS TraingFitnessList->SetPosition(Fitness_LIST_POSITION_X, Fitness_LIST_POSITION_Y); TraingFitnessList->Resize(HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION); TraingFitnessList->SetScrollBlankSize(Fitness_SCROLLBLANKSIZE); - TraingFitnessList->SetReboundSize(100); + // TraingFitnessList->SetReboundSize(100); TraingFitnessList->SetSelectPosition(HORIZONTAL_RESOLUTION / SNUM_2); // middle position TraingFitnessList->SetDraggable(true); TraingFitnessList->SetThrowDrag(false); 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 eda96ad39..ac714dc3c 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 14:20:36 + * @LastEditTime: 2024-03-27 15:25:46 * @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/src/TraingIceAdapter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/src/TraingIceAdapter.cpp index ae848dbf8..44163282f 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 14:22:47 + * @LastEditTime: 2024-03-27 15:27:45 * @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 c4a0eeaea..021f61b0b 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 @@ -91,7 +91,7 @@ namespace OHOS } if (strcmp(view.GetViewId(), BUTTON_DANCE) == 0) { - NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGLIMIT); + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGDANCE); } if (strcmp(view.GetViewId(), BUTTON_FITNESS) == 0) {