增加休闲运动列表并且适配多国语言
authorCaisking <3449750381@qq.com>
Fri, 29 Mar 2024 07:49:56 +0000 (15:49 +0800)
committerCaisking <3449750381@qq.com>
Fri, 29 Mar 2024 07:49:56 +0000 (15:49 +0800)
23 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_limit/include/TraingLimitItemView.h
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/include/TraingLimitPresenter.h
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/include/TraingLimitView.h
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/src/TraingLimitModel.cpp
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_more/src/TraingMorePresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/include/TraingListRestPresenter.h [deleted file]
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/include/TraingListRestView.h [deleted file]
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/include/TraingRestAdapter.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/include/TraingRestItemView.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/include/TraingRestModel.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/include/TraingRestPresenter.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/include/TraingRestView.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/src/TraingListRestPresenter.cpp [deleted file]
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/src/TraingListRestView.cpp [deleted file]
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/src/TraingRestAdapter.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/src/TraingRestItemView.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/src/TraingRestModel.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/src/TraingRestPresenter.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/src/TraingRestView.cpp [new file with mode: 0644]

index c311307..fb2a6c4 100644 (file)
@@ -483,6 +483,12 @@ set(SOURCES
     ${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_rest/src/TraingRestView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/training_list_rest/src/TraingRestPresenter.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/training_list_rest/src/TraingRestAdapter.cpp
+    ${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_more/src/TraingMoreView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/training_list_more/src/TraingMorePresenter.cpp
index dde6d96..2be45d7 100644 (file)
@@ -91,6 +91,7 @@ typedef enum : uint16_t
     VIEW_TRAININGICE,     // 冰上运动列表
     VIEW_TRAININGFITNESS, // 健身运动列表
     VIEW_TRAININGDANCE,   // 舞蹈运动列表
+    VIEW_TRAININGREST,    // 休闲运动列表
     /* ---------------------------------- GPS训练 --------------------------------- */
     VIEW_TRAININGGPS,     // GPS训练
     VIEW_TRAININGGPSSET,  // GPS训练目标(时长,距离,卡路里,步数)
index 6674068..2b285f9 100644 (file)
@@ -84,6 +84,7 @@ namespace OHOS
         void InitTraingIceSlice(void);     // 冰上训练
         void InitTraingFitnessSlice(void); // 健身训练
         void InitTraingDanceSlice(void);   // 舞蹈训练
+        void InitTraingRestSlice(void);    // 休闲训练
 
         void InitTraingRecordSlice(void); // 训练记录
 
index d1ba3b8..3a8cf5b 100644 (file)
 #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_list_rest/include/TraingRestPresenter.h"
+#include "traing/training_list_rest/include/TraingRestView.h"
 /* ---------------------------------- 主界面卡片 --------------------------------- */
 #include "traing/training_card/include/TraingCardPresenter.h"
 #include "traing/training_card/include/TraingCardView.h"
@@ -249,7 +251,7 @@ namespace OHOS
         {VIEW_FAST_TRAINING_ATTENTION, &NativeLauncher::InitFastTrainingAttentionSlice},
 
         {VIEW_RECORD, &NativeLauncher::InitRecordingSlice}, // 录音实例化地址
-        {VIEW_FIND_PHONE,&NativeLauncher::InitFindPhoneSlice},
+        {VIEW_FIND_PHONE, &NativeLauncher::InitFindPhoneSlice},
         {VIEW_MESSAGE, &NativeLauncher::InitMessageSlice},
         {VIEW_ROTATE, &NativeLauncher::InitRotateSlice},
         {VIEW_DIALUPDATE, &NativeLauncher::InitDialUpdateSlice},
@@ -301,7 +303,7 @@ namespace OHOS
         {VIEW_TRAININGICE, &NativeLauncher::InitTraingIceSlice},         // 冰上训练
         {VIEW_TRAININGFITNESS, &NativeLauncher::InitTraingFitnessSlice}, // 健身训练
         {VIEW_TRAININGDANCE, &NativeLauncher::InitTraingDanceSlice},     // 舞蹈训练
-
+        {VIEW_TRAININGREST, &NativeLauncher::InitTraingRestSlice},       // 舞蹈训练
     /* -------------------------------------------------------------------------- */
 
 #ifdef SUPPORT_ALIPAY_SEC
@@ -1014,6 +1016,11 @@ namespace OHOS
         SliceProxy *TraingDanceview = new AbilitySliceProxy<TraingDanceView, TraingDancePresenter>;
         NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGDANCE, TraingDanceview);
     }
+    void NativeLauncher::InitTraingRestSlice(void)
+    {
+        SliceProxy *TraingRestview = new AbilitySliceProxy<TraingRestView, TraingRestPresenter>;
+        NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGREST, TraingRestview);
+    }
     /* -------------------------------------------------------------------------- */
 
     // 省电模式
@@ -1041,7 +1048,7 @@ namespace OHOS
         NativeAbility::GetInstance().AddSliceProxy(VIEW_SAVEBAT, savebatview);
     }
 
-    //查找手机
+    // 查找手机
     void NativeLauncher::InitFindPhoneSlice(void)
     {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitFindPhoneSlice");
index f6b2831..d9c27ac 100644 (file)
@@ -2,7 +2,7 @@
  * @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:20:12
  * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/include/TraingLimitItemView.h
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
index c94ee06..06c2e84 100644 (file)
@@ -2,7 +2,7 @@
  * @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:20:50
  * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/include/TraingLimitPresenter.h
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
index 19597cf..077cb2d 100644 (file)
@@ -2,7 +2,7 @@
  * @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:21:13
  * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/include/TraingLimitView.h
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  */
index 44808af..fa1b6fc 100644 (file)
@@ -1,3 +1,11 @@
+/*** 
+ * @Author: Caisking 3449750381@qq.com
+ * @Date: 2024-03-26 18:34:15
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-03-29 15:21:46
+ * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/src/TraingLimitModel.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
index fc22065..2475aa7 100644 (file)
@@ -113,7 +113,7 @@ namespace OHOS
         }\r
         if (strcmp(view.GetViewId(), BUTTON_REST) == 0)\r
         {\r
-            NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGLIMIT);\r
+            NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGREST);\r
         }\r
         if (strcmp(view.GetViewId(), BUTTON_SWIMMING) == 0)\r
         {\r
diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/include/TraingListRestPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/include/TraingListRestPresenter.h
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/include/TraingListRestView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/include/TraingListRestView.h
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/include/TraingRestAdapter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/include/TraingRestAdapter.h
new file mode 100644 (file)
index 0000000..1906582
--- /dev/null
@@ -0,0 +1,59 @@
+/***
+ * @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_Rest/include/TraingRestAdapter.h
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
+
+#ifndef TraingRest_ADAPTER_H
+#define TraingRest_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; // 标签
+    } TraingRestItem;
+
+    class TraingRestAdapter : public AbstractAdapter
+    {
+    public:
+        explicit TraingRestAdapter();
+        virtual ~TraingRestAdapter();
+
+        void SetData(std::list<TraingRestItem> &data);
+
+        virtual uint16_t GetCount(void) override;
+
+        virtual UIView *GetView(UIView *inView, int16_t index) override;
+
+        virtual void AddItem(const TraingRestItem &item);
+
+        void SetItemClickListener(UIView::OnClickListener *itemclicklistener)
+        {
+            itemClickListener = itemclicklistener;
+        }
+
+    private:
+        std::list<TraingRestItem> listData;
+        UIView::OnClickListener *itemClickListener{nullptr};
+    };
+}
+
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/include/TraingRestItemView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/include/TraingRestItemView.h
new file mode 100644 (file)
index 0000000..7e65aa7
--- /dev/null
@@ -0,0 +1,55 @@
+/*** 
+ * @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_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-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_Rest/include/TraingRestItemView.h
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
+
+#ifndef TraingRest_ITEM_VIEW_H
+#define TraingRest_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_rest/include/TraingRestAdapter.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 TraingRestItemView : public UIViewGroup
+    {
+    public:
+        explicit TraingRestItemView();
+        virtual ~TraingRestItemView();
+        virtual void SetItemInfo(const TraingRestItem itemInfo);
+        virtual void SetUpChild();
+        AppViewId GetTraingRestIndex();
+        UIResourceTextId GetTraingRestId();
+
+    private:
+        TraingRestItemView(const TraingRestItemView &);
+        UIImageView sbackground; // 背景
+        UIImageView sicon;       // 箭头
+        UILabelExt sLabel;       // 标签
+        TraingRestItem sItemInfo = {VIEW_INVALID, STR_EXERCISE_GENERAL};
+    };
+
+}
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/include/TraingRestModel.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/include/TraingRestModel.h
new file mode 100644 (file)
index 0000000..fb5eaf0
--- /dev/null
@@ -0,0 +1,47 @@
+/*** 
+ * @Author: Caisking 3449750381@qq.com
+ * @Date: 2024-03-29 15:18:34
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-03-29 15:41:55
+ * @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
+ */
+
+#ifndef TraingRest_MODEL_H
+#define TraingRest_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 "TraingRestPresenter.h"
+#include "traing/training_list_rest/include/TraingRestAdapter.h"
+
+namespace OHOS
+{
+    class TraingRestModel
+    {
+    public:
+        static TraingRestModel &GetInstance(void);
+        void InitTraingRestListItem();
+        const TraingRestItem *GetTraingRestlistItems() const;
+        uint8_t GetTraingRestListNum() const;
+        // const std::map<TraingRestIndex, AppViewId> &GetTraingRestIdToViewId() const;
+
+    private:
+        TraingRestModel();
+        TraingRestModel(const TraingRestModel &);
+        TraingRestModel &operator=(const TraingRestModel &);
+        virtual ~TraingRestModel();
+        static const uint16_t TraingRestListMaxNum = 23;
+        TraingRestItem TraingRests[TraingRestListMaxNum] = {VIEW_INVALID, STR_EXERCISE_GENERAL};
+        // std::map<int, AppViewId> TraingRestIdToViewId;
+        bool btConnectStatus{false};
+    };
+}
+
+#endif
diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/include/TraingRestPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/include/TraingRestPresenter.h
new file mode 100644 (file)
index 0000000..e17fabd
--- /dev/null
@@ -0,0 +1,45 @@
+/*** 
+ * @Author: Caisking 3449750381@qq.com
+ * @Date: 2024-03-19 17:37:18
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-03-26 20:02:43
+ * @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
+ */
+
+#ifndef _TraingRest_PRESENTER_H
+#define _TraingRest_PRESENTER_H
+
+#include "Presenter.h"
+#include "TraingRestView.h"
+
+namespace OHOS
+{
+    class TraingRestView;
+    class TraingRestModel;
+    class TraingRestPresenter : public Presenter<TraingRestView>,
+                                 public UIView::OnClickListener,
+                                 public UIView::OnDragListener
+    {
+    public:
+        TraingRestPresenter();
+        virtual ~TraingRestPresenter();
+
+        void OnStart() override;
+        void OnPause() override;
+        void OnResume() override;
+        void OnStop() override;
+
+        static TraingRestPresenter *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;
+
+        TraingRestModel *p_TraingRestModel{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_rest/include/TraingRestView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/include/TraingRestView.h
new file mode 100644 (file)
index 0000000..b719db1
--- /dev/null
@@ -0,0 +1,61 @@
+/*** 
+ * @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_rest/include/TraingRestView.h
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
+
+#ifndef TraingRest_VIEW_H
+#define TraingRest_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_rest/include/TraingRestAdapter.h"
+#include "traing/training_list_rest/include/TraingRestModel.h"
+#include "components/ui_label_button_ext.h"
+#include "components/ui_label_ext.h"
+#include"language/font/ui_resource_string.h"
+
+namespace OHOS
+{
+    class TraingRestPresenter;
+    class TraingRestModel;
+    class TraingRestView : public View<TraingRestPresenter>, public UIViewGroup
+    {
+
+    public:
+        TraingRestView();
+        virtual ~TraingRestView();
+        static TraingRestView *GetInstance(void);
+
+        void OnStart() override;
+        void OnSetUpView() override;
+        void OnTearDownView() override;
+        void OnStop() override;
+
+        UIList *GetList();
+        void AddToTraingRestList(const TraingRestItem &item);
+
+    private:
+        void InitView(void);
+        void DeInitView(void);
+        void PreLoad(void);
+
+    private:
+        UIScrollView *scrollView = nullptr;
+        UILabelExt *title{nullptr};
+        TraingRestAdapter *p_TraingRestListAdapter{nullptr};
+        UIList *TraingRestList = nullptr;
+        UIView::OnDragListener *draglistener{nullptr};
+
+        TraingRestPresenter *g_TraingRestPresenter{nullptr};
+        TraingRestModel *g_TraingRestModel{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_rest/src/TraingListRestPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/src/TraingListRestPresenter.cpp
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/src/TraingListRestView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/src/TraingListRestView.cpp
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/src/TraingRestAdapter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/src/TraingRestAdapter.cpp
new file mode 100644 (file)
index 0000000..cf46b93
--- /dev/null
@@ -0,0 +1,87 @@
+#include "traing/training_list_rest/include/TraingRestAdapter.h"
+#include "traing/training_list_rest/include/TraingRestModel.h"
+#include "traing/training_list_rest/include/TraingRestItemView.h"
+
+#include "wearable_log.h"
+
+namespace OHOS
+{
+    TraingRestAdapter::TraingRestAdapter() {}
+
+    TraingRestAdapter::~TraingRestAdapter()
+    {
+        listData.clear();
+    }
+
+    uint16_t TraingRestAdapter::GetCount(void)
+    {
+        return listData.size();
+    }
+
+    void TraingRestAdapter::SetData(std::list<TraingRestItem> &data)
+    {
+        if (!listData.empty())
+        {
+            listData.clear();
+        }
+        std::list<TraingRestItem>::iterator it;
+        for (it = data.begin(); it != data.end(); it++)
+        {
+            listData.push_back(*it);
+        }
+    }
+
+    /// @brief 为列表的每一项创建一个视图
+    /// @param inView 一个指向已存在的视图对象的指
+    /// @param index 要创建的视图在列表中的索引l。
+    /// @return 返回该视图对象
+    UIView *TraingRestAdapter::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<TraingRestItem>::iterator it = listData.begin();
+        for (int i = 0; i < index; i++)
+        {
+            it++;
+        }
+        TraingRestItem itemData = *it;
+        TraingRestItemView *item = nullptr;
+        /*
+            5.根据传入的inView参数是否已经存在一个视图对象,
+            若为空则创建一个新的MessageItemView对象,
+           否则将inView转换成MessageItemView类型的指针
+        */
+        if (inView == nullptr)
+        {
+            item = new TraingRestItemView();
+        }
+        else
+        {
+            item = static_cast<TraingRestItemView *>(inView);
+        }
+        item->SetItemInfo(itemData);
+        item->SetOnClickListener(itemClickListener);
+        return item;
+    }
+
+    void TraingRestAdapter::AddItem(const TraingRestItem &item)
+    {
+        listData.push_back(item);
+    }
+} // namespace OHOS
diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/src/TraingRestItemView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/src/TraingRestItemView.cpp
new file mode 100644 (file)
index 0000000..c3c9690
--- /dev/null
@@ -0,0 +1,72 @@
+/***
+ * @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_rest/src/TraingRestItemView.cpp
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%A
+ */
+
+#include "traing/training_list_rest/include/TraingRestItemView.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
+{
+
+    TraingRestItemView::TraingRestItemView()
+    {
+        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);
+    }
+
+    TraingRestItemView::~TraingRestItemView()
+    {
+        Remove(&sbackground);
+        Remove(&sicon);
+        Remove(&sLabel);
+    }
+
+    /// @brief 设置item的信息
+    /// @param itemInfo
+    void TraingRestItemView::SetItemInfo(const TraingRestItem itemInfo)
+    {
+        sItemInfo = itemInfo;
+        sLabel.SetTextId(itemInfo.labelid);
+    }
+
+    /// @brief 设置每一个itemview上的组件
+    void TraingRestItemView::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 TraingRestItemView::GetTraingRestIndex()
+    {
+        return sItemInfo.id;
+    }
+    UIResourceTextId TraingRestItemView::GetTraingRestId()
+    {
+        return sItemInfo.labelid;
+    }
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/src/TraingRestModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/src/TraingRestModel.cpp
new file mode 100644 (file)
index 0000000..52e7c16
--- /dev/null
@@ -0,0 +1,67 @@
+
+
+#include "traing/training_list_rest/include/TraingRestModel.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
+{
+
+    TraingRestModel::TraingRestModel() {}
+
+    TraingRestModel::~TraingRestModel() {}
+
+    TraingRestModel &TraingRestModel::GetInstance()
+    {
+        static TraingRestModel instance;
+        return instance;
+    }
+
+    void TraingRestModel::InitTraingRestListItem()
+    {
+        TraingRestItem defaultItems[] = {
+            {VIEW_TRAININGNOMAL, STR_RECREATIONAL_SPORTS},
+            {VIEW_TRAININGNOMAL, STR_RECREATIONAL_SKATING},
+            {VIEW_TRAININGNOMAL, STR_RECREATIONAL_MARTIALARTS},
+            {VIEW_TRAININGNOMAL, STR_RECREATIONAL_TAICHI},
+            {VIEW_TRAININGNOMAL, STR_RECREATIONAL_HULAHOOP},
+            {VIEW_TRAININGNOMAL, STR_RECREATIONAL_DISCSPORT},
+            {VIEW_TRAININGNOMAL, STR_RECREATIONAL_DARTS},
+            {VIEW_TRAININGNOMAL, STR_RECREATIONAL_ARCHERY},
+            {VIEW_TRAININGNOMAL, STR_RECREATIONAL_HORSERIDING},
+            {VIEW_TRAININGNOMAL, STR_RECREATIONAL_KITE},
+            {VIEW_TRAININGNOMAL, STR_RECREATIONAL_TUGOFWAR},
+            {VIEW_TRAININGNOMAL, STR_RECREATIONAL_SWING},
+            {VIEW_TRAININGNOMAL, STR_RECREATIONAL_STAIRCLIMBING},
+            {VIEW_TRAININGNOMAL, STR_RECREATIONAL_OBSTACLERACE},
+            {VIEW_TRAININGNOMAL, STR_RECREATIONAL_FISHING},
+            {VIEW_TRAININGNOMAL, STR_RECREATIONAL_HUNTING},
+            {VIEW_TRAININGNOMAL, STR_RECREATIONAL_SCOOTERRIDING},
+            {VIEW_TRAININGNOMAL, STR_RECREATIONAL_PARAGLIDING},
+            {VIEW_TRAININGNOMAL, STR_RECREATIONAL_TEAMSPORTS},
+            {VIEW_TRAININGNOMAL, STR_RECREATIONAL_FINESSGAMING},
+            {VIEW_TRAININGNOMAL, STR_RECREATIONAL_HIKING},
+            {VIEW_TRAININGNOMAL, STR_RECREATIONAL_EQUESTRIANSPORTS},
+            {VIEW_TRAININGNOMAL, STR_RECREATIONAL_PLAY}};
+
+        for (int i = 0; i < TraingRestListMaxNum; i++)
+        {
+            TraingRests[i] = defaultItems[i];
+        }
+    }
+
+    const TraingRestItem *TraingRestModel::GetTraingRestlistItems() const
+    {
+        return TraingRests;
+    }
+    uint8_t TraingRestModel::GetTraingRestListNum() const
+    {
+        return TraingRestListMaxNum;
+    }
+
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/src/TraingRestPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/src/TraingRestPresenter.cpp
new file mode 100644 (file)
index 0000000..43fb132
--- /dev/null
@@ -0,0 +1,118 @@
+/***
+ * @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_rest/src/TraingRestPresenter.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/TraingRestPresenter.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_rest/include/TraingRestItemView.h"
+#include "traing/training_list_rest/include/TraingRestPresenter.h"
+#include "traing/training_list_rest/include/TraingRestView.h"
+#include "traing/include/TraingModel.h"
+// #include "TraingRestView.h"
+
+namespace OHOS
+{
+    extern const char *Rest_buttons[];
+    extern char *Rest_text[];
+
+    // 当前Presenter属性实例化的内存指针
+    static TraingRestPresenter *g_pTraingRestPresenter = nullptr;
+
+    TraingRestPresenter::TraingRestPresenter()
+    {
+        p_TraingRestModel = &TraingRestModel::GetInstance();
+        g_pTraingRestPresenter = this;
+    }
+
+    TraingRestPresenter::~TraingRestPresenter()
+    {
+
+        g_pTraingRestPresenter = nullptr;
+    }
+
+    TraingRestPresenter *TraingRestPresenter::GetInstance()
+    {
+
+        return g_pTraingRestPresenter;
+    }
+
+    void TraingRestPresenter::OnStart()
+    {
+        p_TraingRestModel->InitTraingRestListItem();
+        Presenter<TraingRestView>::OnStart();
+    }
+
+    void TraingRestPresenter::OnPause(void)
+    {
+        Presenter<TraingRestView>::OnPause();
+    }
+
+    void TraingRestPresenter::OnResume(void)
+    {
+        if (view_ == nullptr)
+        {
+            return;
+        }
+        const TraingRestItem *itemInfo = p_TraingRestModel->GetTraingRestlistItems();
+        for (int i = 0; i < p_TraingRestModel->GetTraingRestListNum(); i++)
+        {
+            view_->AddToTraingRestList(itemInfo[i]);
+        }
+        Presenter<TraingRestView>::OnResume();
+    }
+
+    void TraingRestPresenter::OnStop(void)
+    {
+
+        Presenter<TraingRestView>::OnStop();
+    }
+    bool TraingRestPresenter::OnDrag(UIView &view, const DragEvent &event)
+    {
+        return true;
+    }
+    bool TraingRestPresenter::OnDragEnd(UIView &view, const DragEvent &event)
+    {
+        if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)
+        {
+            NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGMORE);
+        }
+        UNUSED(view);
+        return true;
+    }
+
+    bool TraingRestPresenter::OnClick(UIView &view, const ClickEvent &event)
+    {
+        UNUSED(event);
+        TraingRestItemView *itemView = static_cast<TraingRestItemView *>(&view);
+        AppViewId viewId = itemView->GetTraingRestIndex();
+        UIResourceTextId sportid = itemView->GetTraingRestId();
+        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;
+    }
+
+}
diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/src/TraingRestView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/src/TraingRestView.cpp
new file mode 100644 (file)
index 0000000..4c99cbe
--- /dev/null
@@ -0,0 +1,153 @@
+#include "traing/training_list_rest/include/TraingRestView.h"
+#include "traing/training_list_rest/include/TraingRestPresenter.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 TraingRestView *g_pTraingRestView{nullptr};
+    /* --------------------------------- List --------------------------------- */
+    static constexpr int16_t Rest_LIST_POSITION_X = 43;
+    static constexpr int16_t Rest_LIST_POSITION_Y = 120;
+    static constexpr int16_t Rest_SCROLLBLANKSIZE = 35; // 设置此滚动视图的空白大小。
+    static constexpr int16 MAX_SCR_DIS = 1000;
+    static constexpr int16 LIST_POS = 20;
+    static constexpr int16 SNUM_2 = 2;
+
+    TraingRestView::TraingRestView()
+    {
+        g_pTraingRestView = this;
+    }
+
+    TraingRestView::~TraingRestView()
+    {
+        if (viewInitStatus == true)
+        {
+            DeInitView();
+        }
+        g_pTraingRestView = nullptr;
+    }
+
+    TraingRestView *TraingRestView::GetInstance()
+    {
+        return g_pTraingRestView;
+    }
+    /// @param item
+    void TraingRestView::AddToTraingRestList(const TraingRestItem &item)
+    {
+        p_TraingRestListAdapter->AddItem(item);
+    }
+    void TraingRestView::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 *>(TraingRestPresenter::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_TraingRestListAdapter = new TraingRestAdapter();
+        p_TraingRestListAdapter->SetItemClickListener(presenter_);
+        if (TraingRestList == nullptr)
+        {
+            TraingRestList = new UIList();
+        }
+        TraingRestList->SetPosition(Rest_LIST_POSITION_X, Rest_LIST_POSITION_Y);
+        TraingRestList->Resize(HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
+        TraingRestList->SetScrollBlankSize(Rest_SCROLLBLANKSIZE);
+        TraingRestList->SetSelectPosition(HORIZONTAL_RESOLUTION / SNUM_2); // middle position
+        TraingRestList->SetDraggable(true);
+        TraingRestList->SetThrowDrag(false);
+        TraingRestList->EnableAutoAlign(true);
+        TraingRestList->SetElastic(true); // 设置回弹效果
+        TraingRestList->SetMaxScrollDistance(MAX_SCR_DIS);
+
+        // 增加表冠控制
+        TraingRestList->SetRotateFactor(2);
+        TraingRestList->RequestFocus();
+    }
+    UIList *TraingRestView::GetList()
+    {
+        return TraingRestList;
+    }
+    void TraingRestView::DeInitView()
+    {
+        // scrollView-> RemoveAll();
+        RemoveAll();
+        delete title;
+        title = nullptr;
+
+        delete TraingRestList;
+        TraingRestList = nullptr;
+
+        delete scrollView;
+        scrollView = nullptr;
+
+        delete draglistener;
+        draglistener = nullptr;
+    }
+
+    void TraingRestView::PreLoad(void)
+    {
+        if (!viewInitStatus)
+        {
+            InitView();
+            viewInitStatus = true;
+        }
+    }
+
+    /// @brief 页面启动时需要执行的代码逻辑
+    void TraingRestView::OnStart()
+    {
+        View<TraingRestPresenter>::OnStart();
+        BaseView::RootView(Color::Black().full);
+        PreLoad();
+    }
+
+    /// @brief 创建页面的视图。
+    void TraingRestView::OnSetUpView()
+    {
+        View<TraingRestPresenter>::OnSetUpView();
+        // scrollView->Add(title);
+        scrollView->Add(TraingRestList);
+        scrollView->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
+        RootView::GetInstance()->Add(scrollView);
+        TraingRestList->SetAdapter(p_TraingRestListAdapter);
+        // TraingRestList->RefreshList(); // 刷新列表
+        Draw();
+    }
+
+    /// @brief 销毁页面的视图。
+    void TraingRestView::OnTearDownView()
+    {
+        View<TraingRestPresenter>::OnTearDownView();
+        return;
+    }
+
+    /// @brief 页面结束时需要执行的销毁逻辑。
+    void TraingRestView::OnStop()
+    {
+        View<TraingRestPresenter>::OnStop();
+        RootView::GetInstance()->RemoveAll();
+        RootView::GetInstance()->ClearFocus();
+        return;
+    }
+}
\ No newline at end of file