${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/training_list_rest/src/TraingRestItemView.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/training_list_rest/src/TraingRestModel.cpp
+ #球类训练
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/training_list_ball/src/TraingBallView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/training_list_ball/src/TraingBallPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/training_list_ball/src/TraingBallAdapter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/training_list_ball/src/TraingBallItemView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/training_list_ball/src/TraingBallModel.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_TRAININGFITNESS, // 健身运动列表
VIEW_TRAININGDANCE, // 舞蹈运动列表
VIEW_TRAININGREST, // 休闲运动列表
+ VIEW_TRAININGBALL, // 球类运动列表
/* ---------------------------------- GPS训练 --------------------------------- */
VIEW_TRAININGGPS, // GPS训练
VIEW_TRAININGGPSSET, // GPS训练目标(时长,距离,卡路里,步数)
void InitTraingFitnessSlice(void); // 健身训练
void InitTraingDanceSlice(void); // 舞蹈训练
void InitTraingRestSlice(void); // 休闲训练
+ void InitTraingBallSlice(void); // 球类训练
void InitTraingRecordSlice(void); // 训练记录
#include "traing/training_list_dance/include/TraingDanceView.h"
#include "traing/training_list_rest/include/TraingRestPresenter.h"
#include "traing/training_list_rest/include/TraingRestView.h"
+#include "traing/training_list_ball/include/TraingBallPresenter.h"
+#include "traing/training_list_ball/include/TraingBallView.h"
/* ---------------------------------- 主界面卡片 --------------------------------- */
#include "traing/training_card/include/TraingCardPresenter.h"
#include "traing/training_card/include/TraingCardView.h"
{VIEW_TRAININGICE, &NativeLauncher::InitTraingIceSlice}, // 冰上训练
{VIEW_TRAININGFITNESS, &NativeLauncher::InitTraingFitnessSlice}, // 健身训练
{VIEW_TRAININGDANCE, &NativeLauncher::InitTraingDanceSlice}, // 舞蹈训练
- {VIEW_TRAININGREST, &NativeLauncher::InitTraingRestSlice}, // 舞蹈训练
+ {VIEW_TRAININGREST, &NativeLauncher::InitTraingRestSlice}, // 休闲训练
+ {VIEW_TRAININGBALL, &NativeLauncher::InitTraingBallSlice}, // 球类训练
/* -------------------------------------------------------------------------- */
#ifdef SUPPORT_ALIPAY_SEC
SliceProxy *TraingRestview = new AbilitySliceProxy<TraingRestView, TraingRestPresenter>;
NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGREST, TraingRestview);
}
+ void NativeLauncher::InitTraingBallSlice(void)
+ {
+ SliceProxy *TraingBallview = new AbilitySliceProxy<TraingBallView, TraingBallPresenter>;
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGBALL, TraingBallview);
+ }
/* -------------------------------------------------------------------------- */
// 省电模式
--- /dev/null
+/***
+ * @Author: Caisking 3449750381@qq.com
+ * @Date: 2024-03-26 17:04:41
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-03-29 11:16:42
+ * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_Ball/include/TraingBallAdapter.h
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
+
+#ifndef TraingBall_ADAPTER_H
+#define TraingBall_ADAPTER_H
+#include <list>
+#include <string>
+#include "components/ui_list.h"
+#include "components/abstract_adapter.h"
+#include "components/ui_label.h"
+#include "components/ui_label_ext.h"
+#include "language/font/ui_resource_string.h"
+#include "components/ui_checkbox.h"
+#include "AppViewIDs.h"
+#include "components/ui_label_ext.h"
+
+
+// 列表的适配器
+namespace OHOS
+{
+
+ typedef struct
+ {
+ AppViewId id;
+ UIResourceTextId labelid; // 标签
+ } TraingBallItem;
+
+ class TraingBallAdapter : public AbstractAdapter
+ {
+ public:
+ explicit TraingBallAdapter();
+ virtual ~TraingBallAdapter();
+
+ void SetData(std::list<TraingBallItem> &data);
+
+ virtual uint16_t GetCount(void) override;
+
+ virtual UIView *GetView(UIView *inView, int16_t index) override;
+
+ virtual void AddItem(const TraingBallItem &item);
+
+ void SetItemClickListener(UIView::OnClickListener *itemclicklistener)
+ {
+ itemClickListener = itemclicklistener;
+ }
+
+ private:
+ std::list<TraingBallItem> listData;
+ UIView::OnClickListener *itemClickListener{nullptr};
+ };
+}
+
+#endif
\ No newline at end of file
--- /dev/null
+/***
+ * @Author: Caisking 3449750381@qq.com
+ * @Date: 2024-03-26 17:05:18
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-03-29 14:30:24
+ * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_Ball/include/TraingBallItemView.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_Ball/include/TraingBallItemView.h
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
+
+#ifndef TraingBall_ITEM_VIEW_H
+#define TraingBall_ITEM_VIEW_H
+
+#include "components/ui_label.h"
+#include "components/ui_label_ext.h"
+#include "language/font/ui_resource_string.h"
+#include "components/ui_view_group.h"
+#include "components/ui_checkbox.h"
+#include "components/ui_image_view.h"
+#include "traing/training_list_ball/include/TraingBallAdapter.h"
+#include "components/ui_label_button.h"
+#include "AppViewIDs.h"
+#include "components/ui_label_ext.h"
+#include "language/font/ui_resource_string.h"
+#include "ohos_types.h"
+
+namespace OHOS
+{
+ class TraingBallItemView : public UIViewGroup
+ {
+ public:
+ explicit TraingBallItemView();
+ virtual ~TraingBallItemView();
+ virtual void SetItemInfo(const TraingBallItem itemInfo);
+ virtual void SetUpChild();
+ AppViewId GetTraingBallIndex();
+ UIResourceTextId GetTraingBallId();
+
+ private:
+ TraingBallItemView(const TraingBallItemView &);
+ UIImageView sbackground; // 背景
+ UIImageView sicon; // 箭头
+ UILabelExt sLabel; // 标签
+ TraingBallItem sItemInfo = {VIEW_INVALID, STR_EXERCISE_GENERAL};
+ };
+
+}
+#endif
\ No newline at end of file
--- /dev/null
+/***
+ * @Author: Caisking 3449750381@qq.com
+ * @Date: 2024-03-29 15:18:34
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-03-29 16:08:21
+ * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_ball/include/TraingBallModel.h
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
+
+#ifndef TraingBall_MODEL_H
+#define TraingBall_MODEL_H
+
+#include <cstdint>
+#include <map>
+#include "AppViewIDs.h"
+#include "components/ui_label_ext.h"
+#include"language/font/ui_resource_string.h"
+#include "components/ui_label_ext.h"
+#include"language/font/ui_resource_string.h"
+#include "UiConfig.h"
+#include "TraingBallPresenter.h"
+#include "traing/training_list_ball/include/TraingBallAdapter.h"
+
+namespace OHOS
+{
+ class TraingBallModel
+ {
+ public:
+ static TraingBallModel &GetInstance(void);
+ void InitTraingBallListItem();
+ const TraingBallItem *GetTraingBalllistItems() const;
+ uint8_t GetTraingBallListNum() const;
+ // const std::map<TraingBallIndex, AppViewId> &GetTraingBallIdToViewId() const;
+
+ private:
+ TraingBallModel();
+ TraingBallModel(const TraingBallModel &);
+ TraingBallModel &operator=(const TraingBallModel &);
+ virtual ~TraingBallModel();
+ static const uint16_t TraingBallListMaxNum = 29;
+ TraingBallItem TraingBalls[TraingBallListMaxNum] = {VIEW_INVALID, STR_EXERCISE_GENERAL};
+ // std::map<int, AppViewId> TraingBallIdToViewId;
+ bool btConnectStatus{false};
+ };
+}
+
+#endif
--- /dev/null
+/***
+ * @Author: Caisking 3449750381@qq.com
+ * @Date: 2024-03-19 17:37:18
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-03-29 15:55:10
+ * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/include/TraingBallPresenter.h
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
+
+#ifndef _TraingBall_PRESENTER_H
+#define _TraingBall_PRESENTER_H
+
+#include "Presenter.h"
+#include "TraingBallView.h"
+
+namespace OHOS
+{
+ class TraingBallView;
+ class TraingBallModel;
+ class TraingBallPresenter : public Presenter<TraingBallView>,
+ public UIView::OnClickListener,
+ public UIView::OnDragListener
+ {
+ public:
+ TraingBallPresenter();
+ virtual ~TraingBallPresenter();
+
+ void OnStart() override;
+ void OnPause() override;
+ void OnResume() override;
+ void OnStop() override;
+
+ static TraingBallPresenter *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;
+
+ TraingBallModel *p_TraingBallModel{nullptr};
+ };
+} // namespace OHOS
+
+#endif // SLEEPDETAIL_PRESENTER_H
\ No newline at end of file
--- /dev/null
+/***
+ * @Author: Caisking 3449750381@qq.com
+ * @Date: 2024-03-19 17:37:18
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-03-27 11:15:59
+ * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_ball/include/TraingBallView.h
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
+
+#ifndef TraingBall_VIEW_H
+#define TraingBall_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_ball/include/TraingBallAdapter.h"
+#include "traing/training_list_ball/include/TraingBallModel.h"
+#include "components/ui_label_button_ext.h"
+#include "components/ui_label_ext.h"
+#include"language/font/ui_resource_string.h"
+
+namespace OHOS
+{
+ class TraingBallPresenter;
+ class TraingBallModel;
+ class TraingBallView : public View<TraingBallPresenter>, public UIViewGroup
+ {
+
+ public:
+ TraingBallView();
+ virtual ~TraingBallView();
+ static TraingBallView *GetInstance(void);
+
+ void OnStart() override;
+ void OnSetUpView() override;
+ void OnTearDownView() override;
+ void OnStop() override;
+
+ UIList *GetList();
+ void AddToTraingBallList(const TraingBallItem &item);
+
+ private:
+ void InitView(void);
+ void DeInitView(void);
+ void PreLoad(void);
+
+ private:
+ UIScrollView *scrollView = nullptr;
+ UILabelExt *title{nullptr};
+ TraingBallAdapter *p_TraingBallListAdapter{nullptr};
+ UIList *TraingBallList = nullptr;
+ UIView::OnDragListener *draglistener{nullptr};
+
+ TraingBallPresenter *g_TraingBallPresenter{nullptr};
+ TraingBallModel *g_TraingBallModel{nullptr};
+ bool viewInitStatus{false};
+ };
+} // namespace OHOS
+#endif
\ No newline at end of file
--- /dev/null
+#include "traing/training_list_ball/include/TraingBallAdapter.h"
+#include "traing/training_list_ball/include/TraingBallModel.h"
+#include "traing/training_list_ball/include/TraingBallItemView.h"
+
+#include "wearable_log.h"
+
+namespace OHOS
+{
+ TraingBallAdapter::TraingBallAdapter() {}
+
+ TraingBallAdapter::~TraingBallAdapter()
+ {
+ listData.clear();
+ }
+
+ uint16_t TraingBallAdapter::GetCount(void)
+ {
+ return listData.size();
+ }
+
+ void TraingBallAdapter::SetData(std::list<TraingBallItem> &data)
+ {
+ if (!listData.empty())
+ {
+ listData.clear();
+ }
+ std::list<TraingBallItem>::iterator it;
+ for (it = data.begin(); it != data.end(); it++)
+ {
+ listData.push_back(*it);
+ }
+ }
+
+ /// @brief 为列表的每一项创建一个视图
+ /// @param inView 一个指向已存在的视图对象的指
+ /// @param index 要创建的视图在列表中的索引l。
+ /// @return 返回该视图对象
+ UIView *TraingBallAdapter::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<TraingBallItem>::iterator it = listData.begin();
+ for (int i = 0; i < index; i++)
+ {
+ it++;
+ }
+ TraingBallItem itemData = *it;
+ TraingBallItemView *item = nullptr;
+ /*
+ 5.根据传入的inView参数是否已经存在一个视图对象,
+ 若为空则创建一个新的MessageItemView对象,
+ 否则将inView转换成MessageItemView类型的指针
+ */
+ if (inView == nullptr)
+ {
+ item = new TraingBallItemView();
+ }
+ else
+ {
+ item = static_cast<TraingBallItemView *>(inView);
+ }
+ item->SetItemInfo(itemData);
+ item->SetOnClickListener(itemClickListener);
+ return item;
+ }
+
+ void TraingBallAdapter::AddItem(const TraingBallItem &item)
+ {
+ listData.push_back(item);
+ }
+} // namespace OHOS
--- /dev/null
+/***
+ * @Author: Caisking 3449750381@qq.com
+ * @Date: 2024-03-29 15:19:06
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-03-29 15:55:49
+ * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_ball/src/TraingBallItemView.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 17:05:30
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-03-29 11:18:05
+ * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_ball/src/TraingBallItemView.cpp
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%A
+ */
+
+#include "traing/training_list_ball/include/TraingBallItemView.h"
+#include "traing/include/TraingModel.h"
+#include "traing/Training_UiConfig.h"
+#include "components/ui_label_ext.h"
+#include "language/font/ui_resource_string.h"
+#include "UiConfig.h"
+namespace OHOS
+{
+
+ TraingBallItemView::TraingBallItemView()
+ {
+ 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);
+ }
+
+ TraingBallItemView::~TraingBallItemView()
+ {
+ Remove(&sbackground);
+ Remove(&sicon);
+ Remove(&sLabel);
+ }
+
+ /// @brief 设置item的信息
+ /// @param itemInfo
+ void TraingBallItemView::SetItemInfo(const TraingBallItem itemInfo)
+ {
+ sItemInfo = itemInfo;
+ sLabel.SetTextId(itemInfo.labelid);
+ }
+
+ /// @brief 设置每一个itemview上的组件
+ void TraingBallItemView::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 TraingBallItemView::GetTraingBallIndex()
+ {
+ return sItemInfo.id;
+ }
+ UIResourceTextId TraingBallItemView::GetTraingBallId()
+ {
+ return sItemInfo.labelid;
+ }
+}
\ No newline at end of file
--- /dev/null
+
+
+#include "traing/training_list_ball/include/TraingBallModel.h"
+#include "common/image_cache_manager.h"
+#include "components/ui_label_ext.h"
+#include "language/font/ui_resource_string.h"
+#include "UiConfig.h"
+#include "ui_resource_image.h"
+#include "AppViewIDs.h"
+#include "components/ui_label_ext.h"
+#include "language/font/ui_resource_string.h"
+namespace OHOS
+{
+
+ TraingBallModel::TraingBallModel() {}
+
+ TraingBallModel::~TraingBallModel() {}
+
+ TraingBallModel &TraingBallModel::GetInstance()
+ {
+ static TraingBallModel instance;
+ return instance;
+ }
+
+ void TraingBallModel::InitTraingBallListItem()
+ {
+ TraingBallItem defaultItems[] = {
+ {VIEW_TRAININGNOMAL, STR_BALL_GAMES},
+ {VIEW_TRAININGNOMAL, STR_BALL_BADMINTON},
+ {VIEW_TRAININGNOMAL, STR_BALL_TABLETENNIS},
+ {VIEW_TRAININGNOMAL, STR_BALL_TENNIS},
+ {VIEW_TRAININGNOMAL, STR_BALL_BILLIARDS},
+ {VIEW_TRAININGNOMAL, STR_BALL_BOWLING},
+ {VIEW_TRAININGNOMAL, STR_BALL_VOLLEYBALL},
+ {VIEW_TRAININGNOMAL, STR_BALL_SHUTTLECOCK},
+ {VIEW_TRAININGNOMAL, STR_BALL_HANDBALL},
+ {VIEW_TRAININGNOMAL, STR_BALL_BASEBALL},
+ {VIEW_TRAININGNOMAL, STR_BALL_SOFTBALL},
+ {VIEW_TRAININGNOMAL, STR_BALL_CRICKET},
+ {VIEW_TRAININGNOMAL, STR_BALL_FOOTBALL},
+ {VIEW_TRAININGNOMAL, STR_BALL_BEACHSOCCER},
+ {VIEW_TRAININGNOMAL, STR_BALL_BEACHVOLLEYBALL},
+ {VIEW_TRAININGNOMAL, STR_BALL_CROQUET},
+ {VIEW_TRAININGNOMAL, STR_BALL_HOCKEY},
+ {VIEW_TRAININGNOMAL, STR_BALL_SQUASH},
+ {VIEW_TRAININGNOMAL, STR_BALL_SEPAKTAKRAW},
+ {VIEW_TRAININGNOMAL, STR_BALL_DODGEBALL},
+ {VIEW_TRAININGNOMAL, STR_BALL_BASKETBALL},
+ {VIEW_TRAININGNOMAL, STR_BALL_SOCCER},
+ {VIEW_TRAININGNOMAL, STR_BALL_GOLF},
+ {VIEW_TRAININGNOMAL, STR_BALL_POLO},
+ {VIEW_TRAININGNOMAL, STR_BALL_RACQUETBALL},
+ {VIEW_TRAININGNOMAL, STR_BALL_RUGBY},
+ {VIEW_TRAININGNOMAL, STR_BALL_GATEBALL},
+ {VIEW_TRAININGNOMAL, STR_BALL_PICKLEBALL},
+ {VIEW_TRAININGNOMAL, STR_BALL_LACROSSE}};
+
+ for (int i = 0; i < TraingBallListMaxNum; i++)
+ {
+ TraingBalls[i] = defaultItems[i];
+ }
+ }
+
+ const TraingBallItem *TraingBallModel::GetTraingBalllistItems() const
+ {
+ return TraingBalls;
+ }
+ uint8_t TraingBallModel::GetTraingBallListNum() const
+ {
+ return TraingBallListMaxNum;
+ }
+
+}
\ 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_ball/src/TraingBallPresenter.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/TraingBallPresenter.cpp
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
+
+#include "AppViewIDs.h"
+#include "components/ui_label_ext.h"
+#include "language/font/ui_resource_string.h"
+#include "NativeAbility.h"
+
+#include <iostream>
+#include <chrono>
+#include <thread>
+#include "traing/training_list_ball/include/TraingBallItemView.h"
+#include "traing/training_list_ball/include/TraingBallPresenter.h"
+#include "traing/training_list_ball/include/TraingBallView.h"
+#include "traing/include/TraingModel.h"
+// #include "TraingBallView.h"
+
+namespace OHOS
+{
+ extern const char *Ball_buttons[];
+ extern char *Ball_text[];
+
+ // 当前Presenter属性实例化的内存指针
+ static TraingBallPresenter *g_pTraingBallPresenter = nullptr;
+
+ TraingBallPresenter::TraingBallPresenter()
+ {
+ p_TraingBallModel = &TraingBallModel::GetInstance();
+ g_pTraingBallPresenter = this;
+ }
+
+ TraingBallPresenter::~TraingBallPresenter()
+ {
+
+ g_pTraingBallPresenter = nullptr;
+ }
+
+ TraingBallPresenter *TraingBallPresenter::GetInstance()
+ {
+
+ return g_pTraingBallPresenter;
+ }
+
+ void TraingBallPresenter::OnStart()
+ {
+ p_TraingBallModel->InitTraingBallListItem();
+ Presenter<TraingBallView>::OnStart();
+ }
+
+ void TraingBallPresenter::OnPause(void)
+ {
+ Presenter<TraingBallView>::OnPause();
+ }
+
+ void TraingBallPresenter::OnResume(void)
+ {
+ if (view_ == nullptr)
+ {
+ return;
+ }
+ const TraingBallItem *itemInfo = p_TraingBallModel->GetTraingBalllistItems();
+ for (int i = 0; i < p_TraingBallModel->GetTraingBallListNum(); i++)
+ {
+ view_->AddToTraingBallList(itemInfo[i]);
+ }
+ Presenter<TraingBallView>::OnResume();
+ }
+
+ void TraingBallPresenter::OnStop(void)
+ {
+
+ Presenter<TraingBallView>::OnStop();
+ }
+ bool TraingBallPresenter::OnDrag(UIView &view, const DragEvent &event)
+ {
+ return true;
+ }
+ bool TraingBallPresenter::OnDragEnd(UIView &view, const DragEvent &event)
+ {
+ if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)
+ {
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGMORE);
+ }
+ UNUSED(view);
+ return true;
+ }
+
+ bool TraingBallPresenter::OnClick(UIView &view, const ClickEvent &event)
+ {
+ UNUSED(event);
+ TraingBallItemView *itemView = static_cast<TraingBallItemView *>(&view);
+ AppViewId viewId = itemView->GetTraingBallIndex();
+ UIResourceTextId sportid = itemView->GetTraingBallId();
+ TraingModel::GetInstance()->SetSportEvent(sportid);
+ 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_ball/include/TraingBallView.h"
+#include "traing/training_list_ball/include/TraingBallPresenter.h"
+#include "traing/include/TraingModel.h"
+#include "traing/Training_UiConfig.h"
+
+#include "components/ui_label_ext.h"
+#include "language/font/ui_resource_string.h"
+#include "UiConfig.h"
+#include "wearable_log.h"
+
+namespace OHOS
+{
+ static constexpr uint8_t NUM_2 = 2;
+ static TraingBallView *g_pTraingBallView{nullptr};
+ /* --------------------------------- List --------------------------------- */
+ static constexpr int16_t Ball_LIST_POSITION_X = 43;
+ static constexpr int16_t Ball_LIST_POSITION_Y = 120;
+ static constexpr int16_t Ball_SCROLLBLANKSIZE = 35; // 设置此滚动视图的空白大小。
+ static constexpr int16 MAX_SCR_DIS = 1000;
+ static constexpr int16 LIST_POS = 20;
+ static constexpr int16 SNUM_2 = 2;
+
+ TraingBallView::TraingBallView()
+ {
+ g_pTraingBallView = this;
+ }
+
+ TraingBallView::~TraingBallView()
+ {
+ if (viewInitStatus == true)
+ {
+ DeInitView();
+ }
+ g_pTraingBallView = nullptr;
+ }
+
+ TraingBallView *TraingBallView::GetInstance()
+ {
+ return g_pTraingBallView;
+ }
+ /// @param item
+ void TraingBallView::AddToTraingBallList(const TraingBallItem &item)
+ {
+ p_TraingBallListAdapter->AddItem(item);
+ }
+ void TraingBallView::InitView()
+ {
+ if (scrollView == nullptr)
+ {
+ scrollView = new UIScrollView();
+ }
+ scrollView->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
+ // scrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
+ // scrollView->SetScrollBlankSize(20);
+ // scrollView->SetReboundSize(100);
+ scrollView->SetTouchable(true);
+ scrollView->SetDraggable(true);
+ scrollView->SetDirection(1);
+ draglistener = static_cast<UIView::OnDragListener *>(TraingBallPresenter::GetInstance());
+ scrollView->SetOnDragListener(draglistener);
+ scrollView->SetYScrollBarVisible(true); // 设置滑动滚动条
+ /* -------------------------------------------------------------------------- */
+ // 初始化Lable
+ TraingModel::GetInstance()->InitLabel(title, 173, 52, 200, 60, "label1", "极限运动", DEFAULT_VECTOR_FONT_FILENAME, 30);
+ scrollView->Add(title);
+ // UIList 的适配器
+ p_TraingBallListAdapter = new TraingBallAdapter();
+ p_TraingBallListAdapter->SetItemClickListener(presenter_);
+ if (TraingBallList == nullptr)
+ {
+ TraingBallList = new UIList();
+ }
+ TraingBallList->SetPosition(Ball_LIST_POSITION_X, Ball_LIST_POSITION_Y);
+ TraingBallList->Resize(HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
+ TraingBallList->SetScrollBlankSize(Ball_SCROLLBLANKSIZE);
+ TraingBallList->SetSelectPosition(HORIZONTAL_RESOLUTION / SNUM_2); // middle position
+ TraingBallList->SetDraggable(true);
+ TraingBallList->SetThrowDrag(false);
+ TraingBallList->EnableAutoAlign(true);
+ TraingBallList->SetElastic(true); // 设置回弹效果
+ TraingBallList->SetMaxScrollDistance(MAX_SCR_DIS);
+
+ // 增加表冠控制
+ TraingBallList->SetRotateFactor(2);
+ TraingBallList->RequestFocus();
+ }
+ UIList *TraingBallView::GetList()
+ {
+ return TraingBallList;
+ }
+ void TraingBallView::DeInitView()
+ {
+ // scrollView-> RemoveAll();
+ RemoveAll();
+ delete title;
+ title = nullptr;
+
+ delete TraingBallList;
+ TraingBallList = nullptr;
+
+ delete scrollView;
+ scrollView = nullptr;
+
+ delete draglistener;
+ draglistener = nullptr;
+ }
+
+ void TraingBallView::PreLoad(void)
+ {
+ if (!viewInitStatus)
+ {
+ InitView();
+ viewInitStatus = true;
+ }
+ }
+
+ /// @brief 页面启动时需要执行的代码逻辑
+ void TraingBallView::OnStart()
+ {
+ View<TraingBallPresenter>::OnStart();
+ BaseView::RootView(Color::Black().full);
+ PreLoad();
+ }
+
+ /// @brief 创建页面的视图。
+ void TraingBallView::OnSetUpView()
+ {
+ View<TraingBallPresenter>::OnSetUpView();
+ // scrollView->Add(title);
+ scrollView->Add(TraingBallList);
+ scrollView->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
+ RootView::GetInstance()->Add(scrollView);
+ TraingBallList->SetAdapter(p_TraingBallListAdapter);
+ // TraingBallList->RefreshList(); // 刷新列表
+ Draw();
+ }
+
+ /// @brief 销毁页面的视图。
+ void TraingBallView::OnTearDownView()
+ {
+ View<TraingBallPresenter>::OnTearDownView();
+ return;
+ }
+
+ /// @brief 页面结束时需要执行的销毁逻辑。
+ void TraingBallView::OnStop()
+ {
+ View<TraingBallPresenter>::OnStop();
+ RootView::GetInstance()->RemoveAll();
+ RootView::GetInstance()->ClearFocus();
+ return;
+ }
+}
\ No newline at end of file
#include "traing/Training_UiConfig.h"
#include "components/ui_label_ext.h"
-#include"language/font/ui_resource_string.h"
+#include "language/font/ui_resource_string.h"
#include "UiConfig.h"
#include "wearable_log.h"
}
scrollView->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
// scrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
- scrollView->SetScrollBlankSize(52);
+ // scrollView->SetScrollBlankSize(52);
// scrollView->SetReboundSize(100);
scrollView->SetTouchable(true);
scrollView->SetDraggable(true);
}
scrollView->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
// scrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
- scrollView->SetScrollBlankSize(52);
- scrollView->SetReboundSize(100);
+ // scrollView->SetScrollBlankSize(52);
+ // scrollView->SetReboundSize(100);
scrollView->SetTouchable(true);
scrollView->SetDraggable(true);
scrollView->SetDirection(1);
-/***
+/***
* @Author: Caisking 3449750381@qq.com
* @Date: 2024-03-26 09:46:17
* @LastEditors: Caisking 3449750381@qq.com
#include "traing/Training_UiConfig.h"
#include "components/ui_label_ext.h"
-#include"language/font/ui_resource_string.h"
+#include "language/font/ui_resource_string.h"
#include "UiConfig.h"
#include "wearable_log.h"
}
scrollView->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
// scrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
- scrollView->SetScrollBlankSize(52);
+ // scrollView->SetScrollBlankSize(52);
// scrollView->SetReboundSize(100);
scrollView->SetTouchable(true);
scrollView->SetDraggable(true);
#include "traing/Training_UiConfig.h"\r
\r
#include "components/ui_label_ext.h"\r
-#include"language/font/ui_resource_string.h"\r
+#include "language/font/ui_resource_string.h"\r
#include "UiConfig.h"\r
#include "wearable_log.h"\r
\r
}\r
scrollView->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
// scrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
- scrollView->SetScrollBlankSize(52);\r
+ // scrollView->SetScrollBlankSize(52);\r
// scrollView->SetReboundSize(100);\r
scrollView->SetTouchable(true);\r
scrollView->SetDraggable(true);\r
#include "AppViewIDs.h"\r
#include "components/ui_label_ext.h"\r
-#include"language/font/ui_resource_string.h"\r
+#include "language/font/ui_resource_string.h"\r
#include "NativeAbility.h"\r
\r
#include <iostream>\r
// 根据控件id查找是哪个控件触发了点击回调\r
if (strcmp(view.GetViewId(), BUTTON_BALL) == 0)\r
{\r
- NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGLIMIT);\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGBALL);\r
}\r
if (strcmp(view.GetViewId(), BUTTON_DANCE) == 0)\r
{\r
* @Author: Caisking 3449750381@qq.com
* @Date: 2024-03-26 17:05:18
* @LastEditors: Caisking 3449750381@qq.com
- * @LastEditTime: 2024-03-29 14:30:24
+ * @LastEditTime: 2024-03-29 15:54:57
* @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_Rest/include/TraingRestItemView.h
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
* @Author: Caisking 3449750381@qq.com
* @Date: 2024-03-29 15:18:34
* @LastEditors: Caisking 3449750381@qq.com
- * @LastEditTime: 2024-03-29 15:41:55
+ * @LastEditTime: 2024-03-29 15:55:09
* @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/include/TraingRestModel.h
* @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:18
* @LastEditors: Caisking 3449750381@qq.com
- * @LastEditTime: 2024-03-26 20:02:43
+ * @LastEditTime: 2024-03-29 15:55:20
* @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/include/TraingRestPresenter.h
* @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:18
* @LastEditors: Caisking 3449750381@qq.com
- * @LastEditTime: 2024-03-27 11:15:59
+ * @LastEditTime: 2024-03-29 15:55:33
* @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/include/TraingRestView.h
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
+/***
+ * @Author: Caisking 3449750381@qq.com
+ * @Date: 2024-03-29 15:19:06
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-03-29 15:56:04
+ * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/src/TraingRestItemView.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 17:05:30
}
scrollView->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
// scrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
- scrollView->SetScrollBlankSize(52);
+ //scrollView->SetScrollBlankSize(52);
// scrollView->SetReboundSize(100);
scrollView->SetTouchable(true);
scrollView->SetDraggable(true);