增加距离设置SubView,删除原Slice 42/1
authorCaisking <3449750381@qq.com>
Thu, 18 Apr 2024 07:30:11 +0000 (15:30 +0800)
committerCaisking <3449750381@qq.com>
Thu, 18 Apr 2024 07:30:11 +0000 (15:30 +0800)
13 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/include/TraingSetDistPresenter.h [deleted file]
code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetDistView.h [deleted file]
code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetView.h
code/sdk/application/wearable/fd230app/nativeui/traing/include/TrainingSetMileView.h
code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetDistPresenter.cpp [deleted file]
code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetDistView.cpp [deleted file]
code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetView.cpp
code/sdk/application/wearable/fd230app/nativeui/traing/src/TrainingSetMileView.cpp [new file with mode: 0644]

index 05d926f..a199cd3 100644 (file)
@@ -474,8 +474,6 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingNomalPresenter.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingSetView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingSetPresenter.cpp
-    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingSetDistView.cpp
-    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingSetDistPresenter.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingSetSeptView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingSetSeptPresenter.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingEnddataView.cpp
@@ -484,6 +482,7 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingWinPresenter.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TrainingSetCaluliView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TrainingSetTimeView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TrainingSetMileView.cpp
     
     #主界面训练卡片
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/training_card/src/Training_CardView.cpp
index 3fd8dcc..66737cf 100644 (file)
@@ -74,7 +74,6 @@ typedef enum : uint16_t
     VIEW_TRAINING,          // 训练
     VIEW_TRAININGNOMAL,     // 正常训练开始界面(除骑行,健走,跑步外)
     VIEW_TRAININGSET,       // 训练目标(时长,卡路里)
-    VIEW_TRAININGSETDIST,   // 设置训练路程
     VIEW_TRAININGSETSTEP,   // 设置训练步数
     VIEW_TRAININGCRAD,      // 训练控制卡片
     VIEW_TRAININGENDDATA,   // 训练结束详细数据
index 348dc09..eff8e92 100644 (file)
@@ -67,8 +67,7 @@ namespace OHOS
         void InitTraingSlice(void);
         void InitTraingNomalSlice(void);
         void InitTraingSetSlice(void);
-        void InitTraingSetDistSlice(void);
-        void InitTraingSetStepSlice(void);
+        void InitTraingSetStepSlice(void);        
         void InitTraingCardSlice(void);
         void InitTraingEnddataSlice(void);
         void InitTraingWinSlice(void);
index 6850a89..a216d7e 100644 (file)
 #include "traing/include/TraingNomalView.h"
 #include "traing/include/TraingSetPresenter.h"
 #include "traing/include/TraingSetView.h"
-#include "traing/include/TraingSetDistPresenter.h"
-#include "traing/include/TraingSetDistView.h"
 #include "traing/include/TraingSetSeptPresenter.h"
 #include "traing/include/TraingSetSeptView.h"
 #include "traing/include/TraingEnddataPresenter.h"
@@ -282,7 +280,6 @@ namespace OHOS
         {VIEW_TRAINING, &NativeLauncher::InitTraingSlice},                   // 训练
         {VIEW_TRAININGNOMAL, &NativeLauncher::InitTraingNomalSlice},         // 正常训练初始界面
         {VIEW_TRAININGSET, &NativeLauncher::InitTraingSetSlice},             // 训练目标设置界面
-        {VIEW_TRAININGSETDIST, &NativeLauncher::InitTraingSetDistSlice},     // 设置目标距离
         {VIEW_TRAININGSETSTEP, &NativeLauncher::InitTraingSetStepSlice},     // 设置目标步数
         {VIEW_TRAININGCRAD, &NativeLauncher::InitTraingCardSlice},           // 训练卡片
         {VIEW_TRAININGENDDATA, &NativeLauncher::InitTraingEnddataSlice},     // 训练结束详细数据
@@ -863,11 +860,6 @@ namespace OHOS
         SliceProxy *traingsetview = new AbilitySliceProxy<TraingSetView, TraingSetPresenter>;
         NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGSET, traingsetview);
     }
-    void NativeLauncher::InitTraingSetDistSlice(void)
-    {
-        SliceProxy *traingsetdistview = new AbilitySliceProxy<TraingSetDistView, TraingSetDistPresenter>;
-        NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGSETDIST, traingsetdistview);
-    }
     void NativeLauncher::InitTraingSetStepSlice(void)
     {
         SliceProxy *traingsetstepview = new AbilitySliceProxy<TraingSetSeptView, TraingSetSeptPresenter>;
diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetDistPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetDistPresenter.h
deleted file mode 100644 (file)
index 2d583fc..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-
-#ifndef _TraingSetDist_PRESENTER_H
-#define _TraingSetDist_PRESENTER_H
-
-#include "Presenter.h"
-#include "TraingSetDistView.h"
-
-namespace OHOS
-{
-    class TraingSetDistView;
-
-    class TraingSetDistPresenter : public Presenter<TraingSetDistView>,
-                                 public UIView::OnClickListener,
-                                 public UIView::OnDragListener
-    {
-    public:
-        TraingSetDistPresenter();
-        virtual ~TraingSetDistPresenter();
-
-        void OnStart() override;
-        void OnPause() override;
-        void OnResume() override;
-        void OnStop() override;
-
-        static TraingSetDistPresenter *GetInstance();
-
-    private:
-        // 因为继承了OnClickListener,所以有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;
-    };
-} // namespace OHOS
-
-#endif // SLEEPDETAIL_PRESENTER_H
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetDistView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetDistView.h
deleted file mode 100644 (file)
index b6bb000..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-
-#ifndef _TraingSetDist_VIEW_H
-#define _TraingSetDist_VIEW_H
-
-#include "BaseView.h"
-#include "View.h"
-#include <ui_scroll_view.h>
-#include "components/ui_view_group.h"
-#include "components/ui_label.h"
-#include "components/ui_label_ext.h"
-#include "components/ui_image_view.h"
-#include "components/ui_button.h"
-#include "components/ui_image_animator.h"
-#include "components/ui_label_button_ext.h"
-#include "components/ui_chart.h"
-#include "components/ui_list.h"
-#include "components/icon_adapter.h"
-#include "wearable_log.h"
-#include "ohos_types.h"
-#include "components/ui_card_page.h"
-#include "traing/include/TraingModel.h"
-#include "traing/Training_UiConfig.h"
-#include "components/ui_picker.h"
-
-#include "TraingSetDistPresenter.h"
-namespace OHOS
-{
-#define BUTTONOK "button1"
-
-
-    class TraingSetDistPresenter;
-    class TraingSetDistView : public View<TraingSetDistPresenter>
-    {
-
-    public:
-        TraingSetDistView();
-        virtual ~TraingSetDistView();
-        static TraingSetDistView *GetInstance(void);
-
-        void OnStart() override;
-        void OnSetUpView() override;
-        void OnTearDownView() override;
-        void OnStop() override;
-        void InitView();
-        void DeInit();
-       
-        void InitUIPicker(UIPicker *&picker, int x, int y, int width, int height, const char *viewId);
-        void InitList();
-        void PreLoad(void);
-
-    private:
-        UIView::OnDragListener *draglistener{nullptr};
-        TraingSetDistView(TraingSetDistView &&) = delete;
-        TraingSetDistView &operator=(TraingSetDistView &&) = delete;
-
-        UIViewGroup *container_ = nullptr;
-        UILabelExt *label1_ = nullptr;
-        UIButton *button1_ = nullptr;
-        UIPicker *uiPicker1_ = nullptr;
-
-        bool viewiInitStatus{false};
-    };
-} // namespace OHOS
-#endif // TraingSetDist_PRESENTER_H
index ea52a7c..2a6173a 100644 (file)
@@ -24,6 +24,8 @@
 
 #include "traing/include/TrainingSetCaluliView.h"
 #include "traing/include/TrainingSetTimeView.h"
+#include "traing/include/TrainingSetMileView.h"
+
 #include "TraingSetPresenter.h"
 namespace OHOS
 {
@@ -35,6 +37,7 @@ namespace OHOS
     class TraingSetPresenter;
     class TrainingSetCaluliView;
     class TrainingSetTimeView;
+    class TrainingSetMileView;
     class TraingSetView : public View<TraingSetPresenter>
     {
 
@@ -68,6 +71,7 @@ namespace OHOS
         UIScrollView *SetTagScrollView[4]{nullptr};
         TrainingSetCaluliView *setcalories{nullptr};
         TrainingSetTimeView *settime{nullptr};
+        TrainingSetMileView *setmile{nullptr};
 
         UILabelExt *labeltitle = nullptr;
 
index e69de29..907bbb7 100644 (file)
@@ -0,0 +1,56 @@
+/*** 
+ * @Date: 2024-04-18 11:59:51
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-04-18 15:09:42
+ * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traing/include/TrainingSetMileView.h
+ */
+/***
+ * @Date: 2024-04-18 10:57:45
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-04-18 11:00:03
+ * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traing/include/TrainingSetMileView.h
+ */
+#ifndef _Training_SetMile_VIEW_H
+#define _Training_SetMile_VIEW_H
+
+#include "BaseView.h"
+#include "View.h"
+#include "components/ui_label_ext.h"
+#include "components/ui_button.h"
+#include "components/ui_label_button_ext.h"
+#include "wearable_log.h"
+#include "traing/include/TraingModel.h"
+#include "traing/Training_UiConfig.h"
+#include "components/ui_picker.h"
+#include "components/ui_scroll_view.h"
+
+#include "traing/include/TraingSetPresenter.h"
+#include "traing/include/TrainingSetMileView.h"
+
+namespace OHOS
+{
+#define BUTTONMileOK "buttonMile"
+
+    class TraingSetPresenter;
+    class TrainingSetMileView : public View<TraingSetPresenter>
+    {
+
+    public:
+        TrainingSetMileView();
+        virtual ~TrainingSetMileView();
+        static TrainingSetMileView *GetInstance(void);
+        UIScrollView *SetMileViewInit();
+
+        void InitUIPicker(UIPicker *&picker, int x, int y, int width, int height, const char *viewId);
+
+    private:
+        UIView::OnDragListener *draglistener{nullptr};
+
+        UILabelExt *labeltitle_ = nullptr;
+        UILabelButtonExt*buttonok_ = nullptr;
+        UIPicker *calPicker_ = nullptr;
+
+        UIScrollView *SetMileScrollView;
+    };
+} // namespace OHOS
+#endif
diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetDistPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetDistPresenter.cpp
deleted file mode 100644 (file)
index 665ca44..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*** 
- * @Date: 2024-04-15 10:55:58
- * @LastEditors: Caisking 3449750381@qq.com
- * @LastEditTime: 2024-04-17 11:59:10
- * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetDistPresenter.cpp
- */
-#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/include/TraingSetDistPresenter.h"
-// #include "TraingSetDistView.h"
-
-namespace OHOS
-{
-
-    // 当前Presenter属性实例化的内存指针
-    static TraingSetDistPresenter *g_pTraingSetDistPresenter = nullptr;
-
-    TraingSetDistPresenter::TraingSetDistPresenter()
-    {
-
-        g_pTraingSetDistPresenter = this;
-    }
-
-    TraingSetDistPresenter::~TraingSetDistPresenter()
-    {
-
-        g_pTraingSetDistPresenter = nullptr;
-    }
-
-    TraingSetDistPresenter *TraingSetDistPresenter::GetInstance()
-    {
-
-        return g_pTraingSetDistPresenter;
-    }
-
-    void TraingSetDistPresenter::OnStart()
-    {
-
-        Presenter<TraingSetDistView>::OnStart();
-    }
-
-    void TraingSetDistPresenter::OnPause(void)
-    {
-
-        Presenter<TraingSetDistView>::OnPause();
-    }
-
-    void TraingSetDistPresenter::OnResume(void)
-    {
-
-        Presenter<TraingSetDistView>::OnResume();
-    }
-
-    void TraingSetDistPresenter::OnStop(void)
-    {
-
-        Presenter<TraingSetDistView>::OnStop();
-    }
-
-    bool TraingSetDistPresenter::OnDrag(UIView &view, const DragEvent &event)
-    {
-
-        // if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT &&
-        //     (event.GetDeltaX() > 20) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY()))))
-        // {
-        //     NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGSET);
-        // }
-        UNUSED(view);
-        return true;
-    }
-
-    bool TraingSetDistPresenter::OnClick(UIView &view, const ClickEvent &event)
-    {
-        // 根据控件id查找是哪个控件触发了点击回调
-        if (strcmp(view.GetViewId(), BUTTONOK) == 0)
-        {
-            NativeAbility::GetInstance().Back();
-        }
-        return true;
-    }
-}
diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetDistView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetDistView.cpp
deleted file mode 100644 (file)
index 35c0e9d..0000000
+++ /dev/null
@@ -1,219 +0,0 @@
-
-#include "traing/include/TraingSetDistView.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 <ui_scroll_view.h>
-#include "components/ui_button.h"
-#include "common/screen.h"
-#include <sstream>
-#include <string>
-#include <vector>
-#include "traing/include/TraingModel.h"
-#include "traing/Training_UiConfig.h"
-
-namespace OHOS
-{
-
-    /***************************************************************************************/
-    // 动态生成包含指定公里区间内所有公里的字符串数组
-    std::vector<std::string> GenerateDistValues(int minDist, int maxDist, int interval)
-    {
-        std::vector<std::string> values;
-        for (int i = minDist; i <= maxDist; i += interval)
-        {
-            values.push_back(std::to_string(i) + " 公里");
-        }
-        return values;
-    }
-    /***************************************************************************************/
-    static TraingSetDistView *g_pTraingSetDistView{nullptr};
-
-    TraingSetDistView::TraingSetDistView()
-    {
-        g_pTraingSetDistView = this;
-    }
-
-    TraingSetDistView::~TraingSetDistView()
-    {
-        DeInit();
-        g_pTraingSetDistView = nullptr;
-    }
-
-    TraingSetDistView *TraingSetDistView::GetInstance()
-    {
-
-        return g_pTraingSetDistView;
-    }
-
-    /*
-    InitUIPicker: 初始化UIPicker组件
-    @param picker: 指向UIPicker的指针
-    @param x: UIPicker的左边位置
-    @param y: UIPicker的顶部位置
-    @param width: UIPicker的宽度
-    @param height: UIPicker的高度
-    @param viewId: UIPicker的视图 ID
-    @param values: 选项数组
-    @param count: 选项数量
-    @param backgroundFontSize: 普通文本大小
-    @highlightFontSize: 高光文本大小
-    */
-    void TraingSetDistView::InitUIPicker(UIPicker *&picker, int x, int y, int width, int height, const char *viewId)
-    {
-        // 文本大小
-        constexpr uint8_t BACKGROUND_FONT = 40;
-        constexpr uint8_t HIGHTLIGHT_FONT = 60;
-        // 获取value数组
-        int minDist = 1;
-        int maxDist = 20;
-        int interval = 1;
-        std::vector<std::string> DistValues = GenerateDistValues(minDist, maxDist, interval);
-
-        const char **values = new const char *[DistValues.size()];
-        for (size_t i = 0; i < DistValues.size(); i++)
-        {
-            values[i] = DistValues[i].c_str();
-        }
-        // 创建 UIPicker
-        if (picker == nullptr)
-        {
-            picker = new UIPicker();
-        }
-
-        // 设置 UIPicker 的位置和大小
-        picker->SetPosition(x, y);
-        picker->Resize(width, height);
-        // 设置 UIPicker 的 ViewId
-        picker->SetViewId(viewId);
-        // 设置 UIPicker 的属性
-        picker->SetItemHeight(70);
-        picker->SetLoopState(true);
-        picker->SetTextColor(Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff), Color::GetColorFromRGBA(0x4f, 0xc3, 0x4c, 0xff));
-        picker->SetBackgroundFont(DEFAULT_VECTOR_FONT_FILENAME, BACKGROUND_FONT); // 设置普通文本大小
-        picker->SetHighlightFont(DEFAULT_VECTOR_FONT_FILENAME, HIGHTLIGHT_FONT);  // 设置高光文本大小
-        picker->SetValues(values, DistValues.size());
-        // 将 UIPicker 设置为显示
-        picker->SetVisible(true);
-    }
-
-    /* InitView:初始化界面*/
-    void TraingSetDistView ::InitView()
-    {
-        if (container_ == nullptr)
-        {
-            container_ = new UIViewGroup();
-            container_->SetPosition(0, 0, 466, 466);
-            container_->SetStyle(STYLE_BACKGROUND_OPA, 0);
-        }
-        // 初始化Lable
-        TraingModel::GetInstance()->InitLabel(label1_, 173, 52, 120, 35, "label1", "步数设定", DEFAULT_VECTOR_FONT_FILENAME, 30);
-        container_->Add(label1_);
-
-        // 初始化UIPicker
-        InitUIPicker(uiPicker1_, 43, 106, 380, 240, "uiPicker1");
-        container_->Add(uiPicker1_);
-        //  初始化Button
-        TraingModel::GetInstance()->InitButton(button1_, 0, 366, 466, 100, BUTTONOK);
-        // Set additional property
-        button1_->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingSetDistPresenter::GetInstance()));
-        button1_->SetImageSrc(BUTTONOK_IMAGE, BUTTONOK_IMAGE);
-        container_->Add(button1_);
-    }
-    /* DeInit:删除组件 */
-    void TraingSetDistView::DeInit()
-    {
-        container_->RemoveAll();
-        // 删除Label
-        if (label1_ != nullptr)
-        {
-            container_->Remove(label1_);
-            delete label1_;
-            label1_ = nullptr;
-        }
-        // 删除Button
-        if (button1_ != nullptr)
-        {
-            container_->Remove(button1_);
-            delete button1_;
-            button1_ = nullptr;
-        }
-
-        // 删除Image
-
-        // 删除滚动选择器
-        if (uiPicker1_ != nullptr)
-        {
-            container_->Remove(uiPicker1_);
-            delete uiPicker1_;
-            uiPicker1_ = nullptr;
-        }
-
-        // 删除容器
-        if (container_ != nullptr)
-        {
-            container_->RemoveAll(); // 移除容器中的所有组件
-            delete container_;
-            container_ = nullptr;
-        }
-    }
-
-    void TraingSetDistView::PreLoad(void)
-    {
-        if (!viewiInitStatus)
-        {
-            // printf("init TraingSetDistview\n");
-            InitView();
-            viewiInitStatus = true;
-        }
-    }
-    void TraingSetDistView::OnStart()
-    {
-        container_ = new UIViewGroup();
-        if (container_ == nullptr)
-        {
-            return;
-        }
-        container_->SetPosition(0, 0);
-        container_->SetWidth(Screen::GetInstance().GetWidth());
-        container_->SetHeight(Screen::GetInstance().GetHeight());
-
-        // 创建 draglistener 实例并设置为拖动监听器
-        UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(TraingSetDistPresenter::GetInstance());
-        if (draglistener == nullptr)
-        {
-            return;
-        }
-        container_->SetOnDragListener(draglistener);
-
-        container_->SetTouchable(true);
-        container_->SetDraggable(true);
-
-        PreLoad();
-        RootView::GetInstance()->Add(container_);
-    }
-
-    void TraingSetDistView::OnSetUpView()
-    {
-
-        View<TraingSetDistPresenter>::OnSetUpView();
-        Draw();
-    }
-
-    void TraingSetDistView::OnTearDownView()
-    {
-
-        View<TraingSetDistPresenter>::OnTearDownView();
-        return;
-    }
-
-    void TraingSetDistView::OnStop()
-    {
-        View<TraingSetDistPresenter>::OnStop();
-        RootView::GetInstance()->RemoveAll();
-        return;
-    }
-}
index f6628cc..ceb4b78 100644 (file)
@@ -90,6 +90,10 @@ namespace OHOS
         {\r
             TraingSetView::GetInstance()->ChangeView(SET_VIEW, SET_CALORIES);\r
         }\r
+        if (strcmp(view.GetViewId(), BUTTONDISTANCE) == 0)\r
+        {\r
+            TraingSetView::GetInstance()->ChangeView(SET_VIEW, SET_DISTANCE);\r
+        }\r
         return true;\r
     }\r
 }\r
index 282b7fe..9098c66 100644 (file)
@@ -226,11 +226,11 @@ namespace OHOS
     {\r
         if (SetTagScrollView[thisview] == nullptr)\r
         {\r
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::ChangeBandoffView");\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingSetView::ChangeSetCaloriesView");\r
             setcalories = new TrainingSetCaluliView();\r
             if (setcalories == nullptr)\r
             {\r
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView:: new scrollView[%d] fail", thisview);\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingSetView:: new scrollView[%d] fail", thisview);\r
                 return false;\r
             }\r
             SetTagScrollView[thisview] = setcalories->SetCaluliViewInit();\r
@@ -242,11 +242,11 @@ namespace OHOS
     {\r
         if (SetTagScrollView[thisview] == nullptr)\r
         {\r
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::ChangeBandoffView");\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingSetView::ChangeSetDurationView");\r
             settime = new TrainingSetTimeView();\r
             if (settime == nullptr)\r
             {\r
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView:: new scrollView[%d] fail", thisview);\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingSetView:: new scrollView[%d] fail", thisview);\r
                 return false;\r
             }\r
             SetTagScrollView[thisview] = settime->SetTimeViewInit();\r
@@ -254,8 +254,25 @@ namespace OHOS
         }\r
         return true;\r
     }\r
-    bool TraingSetView::ChangeSetStepsView(int16_t thisview) {}\r
-    bool TraingSetView::ChangeSetDistanceView(int16_t thisview) {}\r
+    bool TraingSetView::ChangeSetDistanceView(int16_t thisview)\r
+    {\r
+        if (SetTagScrollView[thisview] == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingSetView::ChangeSetDistanceView");\r
+            setmile = new TrainingSetMileView();\r
+            if (setmile == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingSetView:: new scrollView[%d] fail", thisview);\r
+                return false;\r
+            }\r
+            SetTagScrollView[thisview] = setmile->SetMileViewInit();\r
+            RootView::GetInstance()->Add(SetTagScrollView[thisview]);\r
+        }\r
+        return true;\r
+    }\r
+    bool TraingSetView::ChangeSetStepsView(int16_t thisview)\r
+    {\r
+    }\r
     /* -------------------------------------------------------------------------- */\r
     // 1.MainStopWatchViewMapper:结构体定义了一个将视图ID映射到特定成员函数指针的映射表。\r
     struct BloodViewMapper\r
diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TrainingSetMileView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TrainingSetMileView.cpp
new file mode 100644 (file)
index 0000000..6e7a8a3
--- /dev/null
@@ -0,0 +1,186 @@
+/***
+ * @Date: 2024-04-18 10:57:22
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-04-18 15:10:10
+ * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traing/src/TrainingSetMileView.cpp
+ */
+
+#include "traing/include/TrainingSetMileView.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 "components/ui_button.h"
+#include "common/screen.h"
+#include <sstream>
+#include <string>
+#include <vector>
+#include "traing/include/TraingModel.h"
+#include "traing/Training_UiConfig.h"
+namespace OHOS
+{
+
+    /***************************************************************************************/
+    // 动态生成包含指定卡路里区间内所有卡路里数的字符串数组
+    std::vector<std::string> GenerateMileValues(int minTime, int maxTime, int interval)
+    {
+        std::vector<std::string> values;
+        for (int i = minTime; i <= maxTime; i += interval)
+        {
+            values.push_back(std::to_string(i));
+        }
+        return values;
+    }
+    /***************************************************************************************/
+    static TrainingSetMileView *g_pTraingSetMileView{nullptr};
+
+    TrainingSetMileView::TrainingSetMileView()
+    {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TrainingSetMileView::TrainingSetMileView");
+        labeltitle_ = nullptr;
+        buttonok_ = nullptr;
+        calPicker_ = nullptr;
+        SetMileScrollView = nullptr;
+        g_pTraingSetMileView = this;
+    }
+
+    TrainingSetMileView::~TrainingSetMileView()
+    {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TrainingSetMileView::~TrainingSetMileView");
+        SetMileScrollView->RemoveAll();
+        // 删除Label
+        if (labeltitle_ != nullptr)
+        {
+            SetMileScrollView->Remove(labeltitle_);
+            delete labeltitle_;
+            labeltitle_ = nullptr;
+        }
+        // 删除Button
+        if (buttonok_ != nullptr)
+        {
+            SetMileScrollView->Remove(buttonok_);
+            delete buttonok_;
+            buttonok_ = nullptr;
+        }
+
+        // 删除滚动选择器
+        if (calPicker_ != nullptr)
+        {
+            SetMileScrollView->Remove(calPicker_);
+            delete calPicker_;
+            calPicker_ = nullptr;
+        }
+
+        // 删除容器
+        if (SetMileScrollView != nullptr)
+        {
+            SetMileScrollView->RemoveAll(); // 移除容器中的所有组件
+            delete SetMileScrollView;
+            SetMileScrollView = nullptr;
+        }
+        g_pTraingSetMileView = nullptr;
+    }
+
+    TrainingSetMileView *TrainingSetMileView::GetInstance()
+    {
+
+        return g_pTraingSetMileView;
+    }
+
+    /*
+    InitUIPicker: 初始化UIPicker组件
+    @param picker: 指向UIPicker的指针
+    @param x: UIPicker的左边位置
+    @param y: UIPicker的顶部位置
+    @param width: UIPicker的宽度
+    @param height: UIPicker的高度
+    @param viewId: UIPicker的视图 ID
+    @param values: 选项数组
+    @param count: 选项数量
+    @param backgroundFontSize: 普通文本大小
+    @highlightFontSize: 高光文本大小
+    */
+    void TrainingSetMileView::InitUIPicker(UIPicker *&picker, int x, int y, int width, int height, const char *viewId)
+    {
+        // 文本大小
+        constexpr uint8_t BACKGROUND_FONT = 40;
+        constexpr uint8_t HIGHTLIGHT_FONT = 60;
+        // 获取value数组
+        int minMile = 1;
+        int maxMile = 20;
+        int interval = 1;
+        std::vector<std::string> MileValues = GenerateMileValues(minMile, maxMile, interval);
+
+        const char **values = new const char *[MileValues.size()];
+        for (size_t i = 0; i < MileValues.size(); i++)
+        {
+            values[i] = MileValues[i].c_str();
+        }
+        // 创建 UIPicker
+        if (picker == nullptr)
+        {
+            picker = new UIPicker();
+        }
+
+        // 设置 UIPicker 的位置和大小
+        picker->SetPosition(x, y);
+        picker->Resize(width, height);
+        // 设置 UIPicker 的 ViewId
+        picker->SetViewId(viewId);
+        // 设置 UIPicker 的属性
+        picker->SetItemHeight(70);
+        picker->SetLoopState(true);
+        picker->SetTextColor(Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff), Color::GetColorFromRGBA(0x4f, 0xc3, 0x4c, 0xff));
+        picker->SetBackgroundFont(DEFAULT_VECTOR_FONT_FILENAME, BACKGROUND_FONT); // 设置普通文本大小
+        picker->SetHighlightFont(DEFAULT_VECTOR_FONT_FILENAME, HIGHTLIGHT_FONT);  // 设置高光文本大小
+        picker->SetValues(values, MileValues.size());
+        // 将 UIPicker 设置为显示
+        picker->SetVisible(true);
+    }
+
+    /* InitView:初始化界面*/
+    UIScrollView *TrainingSetMileView ::SetMileViewInit()
+    {
+        /* -------------------------------------------------------------------------- */
+        SetMileScrollView = new UIScrollView();
+        if (SetMileScrollView == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TrainingSetMileView::new SetMileScrollView fail");
+            return nullptr;
+        }
+        SetMileScrollView->SetPosition(0, 0);
+        SetMileScrollView->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);
+        SetMileScrollView->SetScrollBlankSize(35);
+        SetMileScrollView->SetReboundSize(50);
+        SetMileScrollView->SetDirection(1);
+        // 增加拖拽监听
+        UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(new TraingSetPresenter());
+        if (draglistener == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodView::draglistener can not be nullptr!");
+            return nullptr;
+        }
+        SetMileScrollView->SetOnDragListener(draglistener);
+        SetMileScrollView->SetTouchable(true);
+        SetMileScrollView->SetDraggable(true);
+        SetMileScrollView->SetVerticalScrollState(false); // 禁止垂直滑动
+        /* -------------------------------------------------------------------------- */
+        // 初始化Lable
+        TraingModel::GetInstance()->InitLabel(labeltitle_, 83, 50, 300, 35, "label1", "距离(公里)", DEFAULT_VECTOR_FONT_FILENAME, 30);
+        SetMileScrollView->Add(labeltitle_);
+
+        // 初始化UIPicker
+        InitUIPicker(calPicker_, 43, 106, 380, 240, "uiPicker");
+        SetMileScrollView->Add(calPicker_);
+        //  初始化Button
+        TraingModel::GetInstance()->InitButtonExt(buttonok_, 0, 366, 466, 100, BUTTONMileOK, STR_OK, 30);
+        // Set additional property
+        buttonok_->SetImageSrc(BUTTONOK_IMAGE, BUTTONOK_IMAGE);
+        buttonok_->SetOnClickListener(static_cast<UIView::OnClickListener *>(TraingSetPresenter::GetInstance()));
+        SetMileScrollView->Add(buttonok_);
+
+        return SetMileScrollView;
+    }
+}