${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
VIEW_TRAININGLIMIT, // 极限运动列表
VIEW_TRAININGICE, // 冰上运动列表
VIEW_TRAININGFITNESS, // 健身运动列表
+ VIEW_TRAININGDANCE, // 舞蹈运动列表
/* ---------------------------------- GPS训练 --------------------------------- */
VIEW_TRAININGGPS, // GPS训练
VIEW_TRAININGGPSSET, // GPS训练目标(时长,距离,卡路里,步数)
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);
#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"
{VIEW_TRAININGLIMIT, &NativeLauncher::InitTraingLimitSlice}, // 极限训练
{VIEW_TRAININGICE, &NativeLauncher::InitTraingIceSlice}, // 冰上训练
{VIEW_TRAININGFITNESS, &NativeLauncher::InitTraingFitnessSlice}, // 健身训练
+ {VIEW_TRAININGDANCE, &NativeLauncher::InitTraingDanceSlice}, // 舞蹈训练
/* -------------------------------------------------------------------------- */
SliceProxy *TraingFitnessview = new AbilitySliceProxy<TraingFitnessView, TraingFitnessPresenter>;
NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGFITNESS, TraingFitnessview);
}
+ void NativeLauncher::InitTraingDanceSlice(void)
+ {
+ SliceProxy *TraingDanceview = new AbilitySliceProxy<TraingDanceView, TraingDancePresenter>;
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGDANCE, TraingDanceview);
+ }
/* -------------------------------------------------------------------------- */
// 省电模式
--- /dev/null
+/***
+ * @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 <list>
+#include <string>
+#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<TraingDanceItem> &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<TraingDanceItem> listData;
+ UIView::OnClickListener *itemClickListener{nullptr};
+ };
+}
+
+#endif
\ No newline at end of file
--- /dev/null
+
+
+#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
--- /dev/null
+/***
+ * @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 <cstdint>
+#include <map>
+#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<TraingDanceIndex, AppViewId> &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<int, AppViewId> TraingDanceIdToViewId;
+ bool btConnectStatus{false};
+ };
+}
+
+#endif
\ No newline at end of file
--- /dev/null
+/***
+ * @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<TraingDanceView>,
+ 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
--- /dev/null
+
+#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<TraingDancePresenter>, 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
--- /dev/null
+/***
+ * @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<TraingDanceItem> &data)
+ {
+ if (!listData.empty())
+ {
+ listData.clear();
+ }
+ std::list<TraingDanceItem>::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<TraingDanceItem>::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<TraingDanceItemView *>(inView);
+ }
+ item->SetItemInfo(itemData);
+ item->SetOnClickListener(itemClickListener);
+ return item;
+ }
+
+ void TraingDanceAdapter::AddItem(const TraingDanceItem &item)
+ {
+ listData.push_back(item);
+ }
+} // namespace OHOS
--- /dev/null
+
+#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
--- /dev/null
+/***
+ * @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
--- /dev/null
+/***
+ * @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 <iostream>
+#include <chrono>
+#include <thread>
+#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<TraingDanceView>::OnStart();
+ }
+
+ void TraingDancePresenter::OnPause(void)
+ {
+ Presenter<TraingDanceView>::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<TraingDanceView>::OnResume();
+ }
+
+ void TraingDancePresenter::OnStop(void)
+ {
+
+ Presenter<TraingDanceView>::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<TraingDanceItemView *>(&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;
+ }
+
+}
--- /dev/null
+#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<UIView::OnDragListener *>(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<TraingDancePresenter>::OnStart();
+ BaseView::RootView(Color::Black().full);
+ PreLoad();
+ }
+
+ /// @brief 创建页面的视图。
+ void TraingDanceView::OnSetUpView()
+ {
+ View<TraingDancePresenter>::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<TraingDancePresenter>::OnTearDownView();
+ return;
+ }
+
+ /// @brief 页面结束时需要执行的销毁逻辑。
+ void TraingDanceView::OnStop()
+ {
+ View<TraingDancePresenter>::OnStop();
+ RootView::GetInstance()->RemoveAll();
+ RootView::GetInstance()->ClearFocus();
+ return;
+ }
+}
\ No newline at end of file
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<int, AppViewId> TraingFitnessIdToViewId;
bool btConnectStatus{false};
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
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);
* @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
*/
* @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
*/
}\r
if (strcmp(view.GetViewId(), BUTTON_DANCE) == 0)\r
{\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGLIMIT);\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGDANCE);\r
}\r
if (strcmp(view.GetViewId(), BUTTON_FITNESS) == 0)\r
{\r