From: Caisking <3449750381@qq.com> Date: Thu, 18 Apr 2024 07:50:44 +0000 (+0800) Subject: 增加设置步数SubView,删除原Slice X-Git-Tag: release_V1.2.70_20241020_135402~1171^2~8 X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=2a10fa1a5d7e5dd4e2f1c3210c3246dc2094c317;p=mirrors%2FFD230.git 增加设置步数SubView,删除原Slice --- diff --git a/code/sdk/application/wearable/fd230app/CMakeLists.txt b/code/sdk/application/wearable/fd230app/CMakeLists.txt index a199cd30f..6f0b8cee4 100644 --- a/code/sdk/application/wearable/fd230app/CMakeLists.txt +++ b/code/sdk/application/wearable/fd230app/CMakeLists.txt @@ -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/TraingSetSeptView.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingSetSeptPresenter.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingEnddataView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingEnddataPresenter.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingWinView.cpp @@ -483,6 +481,7 @@ set(SOURCES ${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/src/TrainingSetStepView.cpp #主界面训练卡片 ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/training_card/src/Training_CardView.cpp diff --git a/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h b/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h index 66737cfa6..dc4e127b9 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h +++ b/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h @@ -74,7 +74,6 @@ typedef enum : uint16_t VIEW_TRAINING, // 训练 VIEW_TRAININGNOMAL, // 正常训练开始界面(除骑行,健走,跑步外) VIEW_TRAININGSET, // 训练目标(时长,卡路里) - VIEW_TRAININGSETSTEP, // 设置训练步数 VIEW_TRAININGCRAD, // 训练控制卡片 VIEW_TRAININGENDDATA, // 训练结束详细数据 VIEW_TRAININGWIN, // 目标达成 diff --git a/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h b/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h index eff8e92f7..809a500a3 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h +++ b/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h @@ -66,8 +66,7 @@ namespace OHOS /* ----------------------------------- 训练 ----------------------------------- */ void InitTraingSlice(void); void InitTraingNomalSlice(void); - void InitTraingSetSlice(void); - void InitTraingSetStepSlice(void); + void InitTraingSetSlice(void); void InitTraingCardSlice(void); void InitTraingEnddataSlice(void); void InitTraingWinSlice(void); diff --git a/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp b/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp index a216d7ee9..b67117ab8 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp +++ b/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp @@ -163,8 +163,6 @@ #include "traing/include/TraingNomalView.h" #include "traing/include/TraingSetPresenter.h" #include "traing/include/TraingSetView.h" -#include "traing/include/TraingSetSeptPresenter.h" -#include "traing/include/TraingSetSeptView.h" #include "traing/include/TraingEnddataPresenter.h" #include "traing/include/TraingEnddataView.h" #include "traing/include/TraingWinPresenter.h" @@ -280,8 +278,6 @@ namespace OHOS {VIEW_TRAINING, &NativeLauncher::InitTraingSlice}, // 训练 {VIEW_TRAININGNOMAL, &NativeLauncher::InitTraingNomalSlice}, // 正常训练初始界面 {VIEW_TRAININGSET, &NativeLauncher::InitTraingSetSlice}, // 训练目标设置界面 - {VIEW_TRAININGSETSTEP, &NativeLauncher::InitTraingSetStepSlice}, // 设置目标步数 - {VIEW_TRAININGCRAD, &NativeLauncher::InitTraingCardSlice}, // 训练卡片 {VIEW_TRAININGENDDATA, &NativeLauncher::InitTraingEnddataSlice}, // 训练结束详细数据 {VIEW_TRAININGWIN, &NativeLauncher::InitTraingWinSlice}, // 训练目标达成 {VIEW_TRAINING_RECORD, &NativeLauncher::InitTraingRecordSlice}, // 训练目标达成 @@ -860,11 +856,6 @@ namespace OHOS SliceProxy *traingsetview = new AbilitySliceProxy; NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGSET, traingsetview); } - void NativeLauncher::InitTraingSetStepSlice(void) - { - SliceProxy *traingsetstepview = new AbilitySliceProxy; - NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGSETSTEP, traingsetstepview); - } void NativeLauncher::InitTraingCardSlice(void) { SliceProxy *traingcardview = new AbilitySliceProxy; diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetSeptPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetSeptPresenter.h deleted file mode 100644 index f2be67582..000000000 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetSeptPresenter.h +++ /dev/null @@ -1,35 +0,0 @@ - -#ifndef _TraingSetSept_PRESENTER_H -#define _TraingSetSept_PRESENTER_H - -#include "Presenter.h" -#include "TraingSetSeptView.h" - -namespace OHOS -{ - class TraingSetSeptView; - - class TraingSetSeptPresenter : public Presenter, - public UIView::OnClickListener, - public UIView::OnDragListener - { - public: - TraingSetSeptPresenter(); - virtual ~TraingSetSeptPresenter(); - - void OnStart() override; - void OnPause() override; - void OnResume() override; - void OnStop() override; - - static TraingSetSeptPresenter *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/TraingSetSeptView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetSeptView.h deleted file mode 100644 index d56e430e4..000000000 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetSeptView.h +++ /dev/null @@ -1,64 +0,0 @@ - -#ifndef _TraingSetSept_VIEW_H -#define _TraingSetSept_VIEW_H - -#include "BaseView.h" -#include "View.h" -#include -#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 "TraingSetSeptPresenter.h" -namespace OHOS -{ -#define BUTTONOK "button1" - - - class TraingSetSeptPresenter; - class TraingSetSeptView : public View - { - - public: - TraingSetSeptView(); - virtual ~TraingSetSeptView(); - static TraingSetSeptView *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}; - TraingSetSeptView(TraingSetSeptView &&) = delete; - TraingSetSeptView &operator=(TraingSetSeptView &&) = delete; - - UIViewGroup *container_ = nullptr; - UILabelExt *label1_ = nullptr; - UIButton *button1_ = nullptr; - UIPicker *uiPicker1_ = nullptr; - - bool viewiInitStatus{false}; - }; -} // namespace OHOS -#endif // TraingSetSept_PRESENTER_H diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetView.h index 2a6173a7d..8375af46a 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetView.h @@ -25,6 +25,7 @@ #include "traing/include/TrainingSetCaluliView.h" #include "traing/include/TrainingSetTimeView.h" #include "traing/include/TrainingSetMileView.h" +#include "traing/include/TrainingSetStepView.h" #include "TraingSetPresenter.h" namespace OHOS @@ -38,6 +39,7 @@ namespace OHOS class TrainingSetCaluliView; class TrainingSetTimeView; class TrainingSetMileView; + class TrainingSetStepView; class TraingSetView : public View { @@ -72,6 +74,7 @@ namespace OHOS TrainingSetCaluliView *setcalories{nullptr}; TrainingSetTimeView *settime{nullptr}; TrainingSetMileView *setmile{nullptr}; + TrainingSetStepView *setstep{nullptr}; UILabelExt *labeltitle = nullptr; diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TrainingSetSeptView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TrainingSetSeptView.h deleted file mode 100644 index e69de29bb..000000000 diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TrainingSetStepView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TrainingSetStepView.h new file mode 100644 index 000000000..0d6118169 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TrainingSetStepView.h @@ -0,0 +1,56 @@ +/*** + * @Date: 2024-04-18 11:59:25 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-04-18 15:34:22 + * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traing/include/TrainingSetSeptView.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/TrainingSetStepView.h + */ +#ifndef _Training_SetStep_VIEW_H +#define _Training_SetStep_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/TrainingSetStepView.h" + +namespace OHOS +{ +#define BUTTONStepOK "buttonStep" + + class TraingSetPresenter; + class TrainingSetStepView : public View + { + + public: + TrainingSetStepView(); + virtual ~TrainingSetStepView(); + static TrainingSetStepView *GetInstance(void); + UIScrollView *SetStepViewInit(); + + 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 *SetStepScrollView; + }; +} // namespace OHOS +#endif diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetPresenter.cpp index ceb4b78e2..0de53bd93 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetPresenter.cpp @@ -94,6 +94,10 @@ namespace OHOS { TraingSetView::GetInstance()->ChangeView(SET_VIEW, SET_DISTANCE); } + if (strcmp(view.GetViewId(), BUTTONSTEPS) == 0) + { + TraingSetView::GetInstance()->ChangeView(SET_VIEW, SET_STEPS); + } return true; } } diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetSeptPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetSeptPresenter.cpp deleted file mode 100644 index 84d7cfcf8..000000000 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetSeptPresenter.cpp +++ /dev/null @@ -1,81 +0,0 @@ -#include "AppViewIDs.h" -#include "components/ui_label_ext.h" -#include"language/font/ui_resource_string.h" -#include "NativeAbility.h" - -#include -#include -#include -#include "traing/include/TraingSetSeptPresenter.h" -// #include "TraingSetSeptView.h" - -namespace OHOS -{ - - // 当前Presenter属性实例化的内存指针 - static TraingSetSeptPresenter *g_pTraingSetSeptPresenter = nullptr; - - TraingSetSeptPresenter::TraingSetSeptPresenter() - { - - g_pTraingSetSeptPresenter = this; - } - - TraingSetSeptPresenter::~TraingSetSeptPresenter() - { - - g_pTraingSetSeptPresenter = nullptr; - } - - TraingSetSeptPresenter *TraingSetSeptPresenter::GetInstance() - { - - return g_pTraingSetSeptPresenter; - } - - void TraingSetSeptPresenter::OnStart() - { - - Presenter::OnStart(); - } - - void TraingSetSeptPresenter::OnPause(void) - { - - Presenter::OnPause(); - } - - void TraingSetSeptPresenter::OnResume(void) - { - - Presenter::OnResume(); - } - - void TraingSetSeptPresenter::OnStop(void) - { - - Presenter::OnStop(); - } - - bool TraingSetSeptPresenter::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 TraingSetSeptPresenter::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/TraingSetSeptView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetSeptView.cpp deleted file mode 100644 index b9f8df13f..000000000 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetSeptView.cpp +++ /dev/null @@ -1,218 +0,0 @@ - -#include "traing/include/TraingSetSeptView.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 -#include "components/ui_button.h" -#include "common/screen.h" -#include -#include -#include -#include "traing/include/TraingModel.h" -#include "traing/Training_UiConfig.h" -namespace OHOS -{ - - /***************************************************************************************/ - // 动态生成包含指定步数区间内所有步数的字符串数组 - std::vector GenerateSeptValues(int minSept, int maxSept, int interval) - { - std::vector values; - for (int i = minSept; i <= maxSept; i += interval) - { - values.push_back(std::to_string(i) + " æ­¥"); - } - return values; - } - /***************************************************************************************/ - static TraingSetSeptView *g_pTraingSetSeptView{nullptr}; - - TraingSetSeptView::TraingSetSeptView() - { - g_pTraingSetSeptView = this; - } - - TraingSetSeptView::~TraingSetSeptView() - { - DeInit(); - g_pTraingSetSeptView = nullptr; - } - - TraingSetSeptView *TraingSetSeptView::GetInstance() - { - - return g_pTraingSetSeptView; - } - - /* - 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 TraingSetSeptView::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 minSept = 500; - int maxSept = 50000; - int interval = 500; - std::vector SeptValues = GenerateSeptValues(minSept, maxSept, interval); - - const char **values = new const char *[SeptValues.size()]; - for (size_t i = 0; i < SeptValues.size(); i++) - { - values[i] = SeptValues[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, SeptValues.size()); - // 将 UIPicker 设置为显示 - picker->SetVisible(true); - } - - /* InitView:初始化界面*/ - void TraingSetSeptView ::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(TraingSetSeptPresenter::GetInstance())); - button1_->SetImageSrc(BUTTONOK_IMAGE, BUTTONOK_IMAGE); - container_->Add(button1_); - } - /* DeInit:删除组件 */ - void TraingSetSeptView::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 TraingSetSeptView::PreLoad(void) - { - if (!viewiInitStatus) - { - // printf("init TraingSetSeptview\n"); - InitView(); - viewiInitStatus = true; - } - } - void TraingSetSeptView::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(TraingSetSeptPresenter::GetInstance()); - if (draglistener == nullptr) - { - return; - } - container_->SetOnDragListener(draglistener); - - container_->SetTouchable(true); - container_->SetDraggable(true); - - PreLoad(); - RootView::GetInstance()->Add(container_); - } - - void TraingSetSeptView::OnSetUpView() - { - - View::OnSetUpView(); - Draw(); - } - - void TraingSetSeptView::OnTearDownView() - { - - View::OnTearDownView(); - return; - } - - void TraingSetSeptView::OnStop() - { - View::OnStop(); - RootView::GetInstance()->RemoveAll(); - return; - } -} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetView.cpp index 9098c66b0..7894824f4 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetView.cpp @@ -272,6 +272,19 @@ namespace OHOS } bool TraingSetView::ChangeSetStepsView(int16_t thisview) { + if (SetTagScrollView[thisview] == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingSetView::ChangeSetDistanceView"); + setstep = new TrainingSetStepView(); + if (setstep == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingSetView:: new scrollView[%d] fail", thisview); + return false; + } + SetTagScrollView[thisview] = setstep->SetStepViewInit(); + RootView::GetInstance()->Add(SetTagScrollView[thisview]); + } + return true; } /* -------------------------------------------------------------------------- */ // 1.MainStopWatchViewMapper:结构体定义了一个将视图ID映射到特定成员函数指针的映射表。 diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TrainingSetStepView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TrainingSetStepView.cpp new file mode 100644 index 000000000..8642d0929 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TrainingSetStepView.cpp @@ -0,0 +1,186 @@ +/*** + * @Date: 2024-04-18 10:57:22 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-04-18 15:50:37 + * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traing/src/TrainingSetStepView.cpp + */ + +#include "traing/include/TrainingSetStepView.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 +#include +#include +#include "traing/include/TraingModel.h" +#include "traing/Training_UiConfig.h" +namespace OHOS +{ + + /***************************************************************************************/ + // 动态生成包含指定卡路里区间内所有卡路里数的字符串数组 + std::vector GenerateStepValues(int minTime, int maxTime, int interval) + { + std::vector values; + for (int i = minTime; i <= maxTime; i += interval) + { + values.push_back(std::to_string(i)); + } + return values; + } + /***************************************************************************************/ + static TrainingSetStepView *g_pTraingSetStepView{nullptr}; + + TrainingSetStepView::TrainingSetStepView() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TrainingSetStepView::TrainingSetStepView"); + labeltitle_ = nullptr; + buttonok_ = nullptr; + calPicker_ = nullptr; + SetStepScrollView = nullptr; + g_pTraingSetStepView = this; + } + + TrainingSetStepView::~TrainingSetStepView() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TrainingSetStepView::~TrainingSetStepView"); + SetStepScrollView->RemoveAll(); + // 删除Label + if (labeltitle_ != nullptr) + { + SetStepScrollView->Remove(labeltitle_); + delete labeltitle_; + labeltitle_ = nullptr; + } + // 删除Button + if (buttonok_ != nullptr) + { + SetStepScrollView->Remove(buttonok_); + delete buttonok_; + buttonok_ = nullptr; + } + + // 删除滚动选择器 + if (calPicker_ != nullptr) + { + SetStepScrollView->Remove(calPicker_); + delete calPicker_; + calPicker_ = nullptr; + } + + // 删除容器 + if (SetStepScrollView != nullptr) + { + SetStepScrollView->RemoveAll(); // 移除容器中的所有组件 + delete SetStepScrollView; + SetStepScrollView = nullptr; + } + g_pTraingSetStepView = nullptr; + } + + TrainingSetStepView *TrainingSetStepView::GetInstance() + { + + return g_pTraingSetStepView; + } + + /* + 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 TrainingSetStepView::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 minStep = 500; + int maxStep = 50000; + int interval = 500; + std::vector StepValues = GenerateStepValues(minStep, maxStep, interval); + + const char **values = new const char *[StepValues.size()]; + for (size_t i = 0; i < StepValues.size(); i++) + { + values[i] = StepValues[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, StepValues.size()); + // 将 UIPicker 设置为显示 + picker->SetVisible(true); + } + + /* InitView:初始化界面*/ + UIScrollView *TrainingSetStepView ::SetStepViewInit() + { + /* -------------------------------------------------------------------------- */ + SetStepScrollView = new UIScrollView(); + if (SetStepScrollView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TrainingSetStepView::new SetStepScrollView fail"); + return nullptr; + } + SetStepScrollView->SetPosition(0, 0); + SetStepScrollView->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION); + SetStepScrollView->SetScrollBlankSize(35); + SetStepScrollView->SetReboundSize(50); + SetStepScrollView->SetDirection(1); + // 增加拖拽监听 + UIView::OnDragListener *draglistener = static_cast(new TraingSetPresenter()); + if (draglistener == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodView::draglistener can not be nullptr!"); + return nullptr; + } + SetStepScrollView->SetOnDragListener(draglistener); + SetStepScrollView->SetTouchable(true); + SetStepScrollView->SetDraggable(true); + SetStepScrollView->SetVerticalScrollState(false); // 禁止垂直滑动 + /* -------------------------------------------------------------------------- */ + // 初始化Lable + TraingModel::GetInstance()->InitLabel(labeltitle_, 83, 50, 300, 35, "label1", "步数(æ­¥)", DEFAULT_VECTOR_FONT_FILENAME, 30); + SetStepScrollView->Add(labeltitle_); + + // 初始化UIPicker + InitUIPicker(calPicker_, 43, 106, 380, 240, "uiPicker"); + SetStepScrollView->Add(calPicker_); + // 初始化Button + TraingModel::GetInstance()->InitButtonExt(buttonok_, 0, 366, 466, 100, BUTTONStepOK, STR_OK, 30); + // Set additional property + buttonok_->SetImageSrc(BUTTONOK_IMAGE, BUTTONOK_IMAGE); + buttonok_->SetOnClickListener(static_cast(TraingSetPresenter::GetInstance())); + SetStepScrollView->Add(buttonok_); + + return SetStepScrollView; + } +}