增加舞蹈运动列表
authorCaisking <3449750381@qq.com>
Wed, 27 Mar 2024 07:44:19 +0000 (15:44 +0800)
committerCaisking <3449750381@qq.com>
Wed, 27 Mar 2024 07:44:19 +0000 (15:44 +0800)
24 files changed:
code/sdk/application/wearable/fd230app/CMakeLists.txt
code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h
code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h
code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/include/TraingDanceAdapter.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/include/TraingDanceItemView.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/include/TraingDanceModel.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/include/TraingDancePresenter.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/include/TraingDanceView.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/include/TraingListDancePresenter.h [deleted file]
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/include/TraingListDanceView.h [deleted file]
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/src/TraingDanceAdapter.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/src/TraingDanceItemView.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/src/TraingDanceModel.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/src/TraingDancePresenter.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/src/TraingDanceView.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/src/TraingListDancePresenter.cpp [deleted file]
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_dance/src/TraingListDanceView.cpp [deleted file]
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingFitnessModel.h
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessModel.cpp
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessView.cpp
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/include/TraingIceAdapter.h
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_ice/src/TraingIceAdapter.cpp
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_more/src/TraingMorePresenter.cpp

index d99da85..f588ad4 100644 (file)
@@ -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
index 889477e..6084e0c 100644 (file)
@@ -89,6 +89,7 @@ typedef enum : uint16_t
     VIEW_TRAININGLIMIT,   // 极限运动列表
     VIEW_TRAININGICE,     // 冰上运动列表
     VIEW_TRAININGFITNESS, // 健身运动列表
+    VIEW_TRAININGDANCE,   // 舞蹈运动列表
     /* ---------------------------------- GPS训练 --------------------------------- */
     VIEW_TRAININGGPS,     // GPS训练
     VIEW_TRAININGGPSSET,  // GPS训练目标(时长,距离,卡路里,步数)
index 13f7b36..48a41d2 100644 (file)
@@ -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);
index 39afdc3..318b60c 100644 (file)
 #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<TraingFitnessView, TraingFitnessPresenter>;
         NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGFITNESS, TraingFitnessview);
     }
+    void NativeLauncher::InitTraingDanceSlice(void)
+    {
+        SliceProxy *TraingDanceview = new AbilitySliceProxy<TraingDanceView, TraingDancePresenter>;
+        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 (file)
index 0000000..379ee50
--- /dev/null
@@ -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 <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
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 (file)
index 0000000..a360995
--- /dev/null
@@ -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 (file)
index 0000000..bbb7296
--- /dev/null
@@ -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 <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
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 (file)
index 0000000..5549caa
--- /dev/null
@@ -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<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
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 (file)
index 0000000..be6094c
--- /dev/null
@@ -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<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
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 (file)
index e69de29..0000000
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 (file)
index e69de29..0000000
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 (file)
index 0000000..4faf50d
--- /dev/null
@@ -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<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
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 (file)
index 0000000..27095a0
--- /dev/null
@@ -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 (file)
index 0000000..02867ae
--- /dev/null
@@ -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 (file)
index 0000000..fe9cd72
--- /dev/null
@@ -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 <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;
+    }
+
+}
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 (file)
index 0000000..ec71410
--- /dev/null
@@ -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<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
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 (file)
index e69de29..0000000
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 (file)
index e69de29..0000000
index 3d1b515..ad24d37 100644 (file)
@@ -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<int, AppViewId> TraingFitnessIdToViewId;
         bool btConnectStatus{false};
index 4d36c2c..488deec 100644 (file)
@@ -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
index 5d12216..0600af8 100644 (file)
@@ -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);
index eda96ad..ac714dc 100644 (file)
@@ -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
  */
index ae848db..4416328 100644 (file)
@@ -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
  */
index c4a0eea..021f61b 100644 (file)
@@ -91,7 +91,7 @@ namespace OHOS
         }\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