From 5166e059d24eba11595c551a0eef3209e8bf273c Mon Sep 17 00:00:00 2001 From: Caisking <3449750381@qq.com> Date: Sat, 5 Oct 2024 13:14:03 +0800 Subject: [PATCH] =?utf8?q?=E8=AE=AD=E7=BB=83=EF=BC=9A=E4=BF=AE=E6=94=B9?= =?utf8?q?=E2=80=9D=E5=81=A5=E8=BA=AB=E7=B1=BB=E2=80=9C=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../include/TraingFitnessModel.h | 54 +-- .../include/TraingFitnessView.h | 94 +++--- .../src/TraingFitnessModel.cpp | 2 +- .../src/TraingFitnessView.cpp | 308 ++++++++---------- 4 files changed, 199 insertions(+), 259 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingFitnessModel.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingFitnessModel.h index 28f683763..8780384f5 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingFitnessModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingFitnessModel.h @@ -1,42 +1,42 @@ -/*** +/*** * @Date: 2024-04-15 10:55:58 * @LastEditors: Caisking 3449750381@qq.com * @LastEditTime: 2024-09-06 18:47:14 - * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingFitnessModel.h + * @FilePath: + * /FD230/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingFitnessModel.h */ #ifndef TraingFitness_MODEL_H #define TraingFitness_MODEL_H -#include -#include #include "AppViewIDs.h" -#include "UiConfig.h" #include "TraingFitnessPresenter.h" +#include "UiConfig.h" #include "traing/training_list_fitness/include/TraingFitnessAdapter.h" +#include +#include + +namespace OHOS { +class TraingFitnessModel { +public: + static TraingFitnessModel &GetInstance(void); + void InitTraingFitnessListItem(); + const TraingFitnessItem *GetTraingFitnesslistItems() const; + uint8_t GetTraingFitnessListNum() const; + // const std::map &GetTraingFitnessIdToViewId() + // const; -namespace OHOS -{ - class TraingFitnessModel - { - public: - static TraingFitnessModel &GetInstance(void); - void InitTraingFitnessListItem(); - const TraingFitnessItem *GetTraingFitnesslistItems() const; - uint8_t GetTraingFitnessListNum() const; - // const std::map &GetTraingFitnessIdToViewId() const; +private: + TraingFitnessModel(); + TraingFitnessModel(const TraingFitnessModel &); + TraingFitnessModel &operator=(const TraingFitnessModel &); + virtual ~TraingFitnessModel(); + static const uint16_t TraingFitnessListMaxNum = 60; - private: - TraingFitnessModel(); - TraingFitnessModel(const TraingFitnessModel &); - TraingFitnessModel &operator=(const TraingFitnessModel &); - virtual ~TraingFitnessModel(); - static const uint16_t TraingFitnessListMaxNum = 59; - - TraingFitnessItem TraingFitnesss[TraingFitnessListMaxNum] = {VIEW_INVALID, STR_EXERCISE_GENERAL}; - // std::map TraingFitnessIdToViewId; - bool btConnectStatus{false}; - }; -} + TraingFitnessItem TraingFitnesss[TraingFitnessListMaxNum] = { + VIEW_INVALID, STR_EXERCISE_GENERAL}; + bool btConnectStatus{false}; +}; +} // namespace OHOS #endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingFitnessView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingFitnessView.h index 8ce359299..361b0c6ad 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingFitnessView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingFitnessView.h @@ -1,63 +1,53 @@ -/*** - * @Author: Caisking 3449750381@qq.com - * @Date: 2024-03-26 09:39:13 - * @LastEditors: Caisking 3449750381@qq.com - * @LastEditTime: 2024-03-29 17:07:10 - * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/include/TraingFitnessView.h - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ + #ifndef TraingFitness_VIEW_H #define TraingFitness_VIEW_H #include "BaseView.h" #include "View.h" -#include "components/ui_view_group.h" -#include "components/ui_scroll_view.h" +#include "components/ui_label_button_ext.h" +#include "components/ui_label_ext.h" #include "components/ui_list.h" +#include "components/ui_scroll_view.h" +#include "components/ui_view_group.h" #include "traing/training_list_fitness/include/TraingFitnessAdapter.h" #include "traing/training_list_fitness/include/TraingFitnessModel.h" -#include "components/ui_label_button_ext.h" -#include "components/ui_label_ext.h" -#include"ui_resource_string.h" - -namespace OHOS -{ - class TraingFitnessPresenter; - class TraingFitnessModel; - class TraingFitnessView : public View, public UIViewGroup - { - - public: - TraingFitnessView(); - virtual ~TraingFitnessView(); - static TraingFitnessView *GetInstance(void); - - void OnStart() override; - void OnSetUpView() override; - void OnTearDownView() override; - void OnStop() override; - - UIList *GetList(); - UIScrollView *GetScrollView(); - - void AddToTraingFitnessList(const TraingFitnessItem &item); - - private: - void InitView(void); - void DeInitView(void); - void PreLoad(void); - - private: - UIScrollView *scrollView = nullptr; - // UILabelExt *title{nullptr}; - TraingFitnessAdapter *p_TraingFitnessListAdapter{nullptr}; - UIList *TraingFitnessList = nullptr; - UIView::OnDragListener *draglistener{nullptr}; - - TraingFitnessPresenter *g_TraingFitnessPresenter{nullptr}; - TraingFitnessModel *g_TraingFitnessModel{nullptr}; - bool viewInitStatus{false}; - }; +#include "ui_resource_string.h" + +namespace OHOS { +class TraingFitnessPresenter; +class TraingFitnessModel; +class TraingFitnessView : public View, + public UIViewGroup { + +public: + TraingFitnessView(); + virtual ~TraingFitnessView(); + static TraingFitnessView *GetInstance(void); + + void OnStart() override; + void OnSetUpView() override; + void OnTearDownView() override; + void OnStop() override; + + UIList *GetList(); + UIScrollView *GetScrollView(); + + void AddToTraingFitnessList(const TraingFitnessItem &item); + +private: + void InitView(void); + void DeInitView(void); + void InitList(); + void InitScrollView(); + void SetKeyActListener(void); + void PreLoad(void); + +private: + UIScrollView *scrollView = nullptr; + TraingFitnessAdapter *p_TraingFitnessListAdapter{nullptr}; + UIList *TraingFitnessList = 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_fitness/src/TraingFitnessModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessModel.cpp index cf580c3f7..d96370640 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessModel.cpp @@ -88,7 +88,7 @@ UIResourceTextId text[] = { }; void TraingFitnessModel::InitTraingFitnessListItem() { - for (int i = 0; i < 59; ++i) // 更新循环以适应 57 个元素 + for (int i = 0; i < TraingFitnessListMaxNum; ++i) // 更新循环以适应 59 个元素 { TraingFitnesss[i] = {VIEW_TRAININGNOMAL, text[i]}; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessView.cpp index c7225b950..9ab3e4951 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_fitness/src/TraingFitnessView.cpp @@ -1,189 +1,139 @@ #include "traing/training_list_fitness/include/TraingFitnessView.h" -#include "traing/training_list_fitness/include/TraingFitnessPresenter.h" +#include "UiConfig.h" +#include "components/ui_label_ext.h" +#include "traing/Training_UiConfig.h" #include "traing/include/TraingModel.h" +#include "traing/training_list_fitness/include/TraingFitnessPresenter.h" +#include "ui_resource_string.h" #include "uicomponents/UIComponents.h" -#include "traing/Training_UiConfig.h" - -#include "UiConfig.h" #include "wearable_log.h" - -namespace OHOS -{ - static constexpr uint8_t NUM_2 = 2; - static TraingFitnessView *g_pTraingFitnessView{nullptr}; - - static constexpr int16_t Fitness_LIST_POSITION_X = 43; - static constexpr int16_t Fitness_LIST_POSITION_Y = 120; - static constexpr int16_t Fitness_SCROLLBLANKSIZE = 35; // 设置此滚动视图的空白大小。 - static constexpr int16 MAX_SCR_DIS = 1000; - static constexpr int16 LIST_POS = 20; - static constexpr int16 SNUM_2 = 2; - - TraingFitnessView::TraingFitnessView() - { - g_pTraingFitnessView = this; - } - - TraingFitnessView::~TraingFitnessView() - { - if (viewInitStatus == true) - { - DeInitView(); - } - g_pTraingFitnessView = nullptr; - } - - TraingFitnessView *TraingFitnessView::GetInstance() - { - return g_pTraingFitnessView; - } - /// @param item - void TraingFitnessView::AddToTraingFitnessList(const TraingFitnessItem &item) - { - p_TraingFitnessListAdapter->AddItem(item); - } - - static void SetKeyActListener() - { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetKeyActListener"); - // 增加按键监听 - RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::TraingFitnessPresenter::GetInstance(); - RootView::GetInstance()->SetOnKeyActListener(keyactListener); - } - void TraingFitnessView::InitView() - { - if (scrollView == nullptr) - { - scrollView = new UIScrollView(); - if (scrollView == nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "scrollView new fail!"); - return; - } - scrollView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight()); - // scrollView->SetScrollBlankSize(50); - // // scrollView->SetReboundSize(35); - scrollView->SetHorizontalScrollState(false); - // scrollView->RequestFocus(); - // scrollView->SetRotateFactor(1.0); - scrollView->SetMaxScrollDistance(1000); - scrollView->SetDragACCLevel(5); - scrollView->SetSwipeACCLevel(800); /*设置手指抬起屏幕后的补偿距离。*/ - scrollView->SetTouchable(true); - scrollView->SetDraggable(true); - container_->Add(scrollView); - } - /* -------------------------------------------------------------------------- */ - // // 初始化Lable 暂时不添加 - // if (title == nullptr) - // { - // InitLabelExt(title, 135, 52, 200, 60, "label1", STR_EXERCISE_TITLE, DEFAULT_VECTOR_FONT_FILENAME, 30); - // title->SetStyle(STYLE_TEXT_COLOR, Color::Green().full); - // scrollView->Add(title); - // } - // UIList 的适配器 - if (p_TraingFitnessListAdapter == nullptr) - { - p_TraingFitnessListAdapter = new TraingFitnessAdapter(); - p_TraingFitnessListAdapter->SetItemClickListener(presenter_); +#include + +namespace OHOS { +static TraingFitnessView *g_pTraingFitnessView{nullptr}; + +TraingFitnessView::TraingFitnessView() { g_pTraingFitnessView = this; } + +TraingFitnessView::~TraingFitnessView() { g_pTraingFitnessView = nullptr; } + +TraingFitnessView *TraingFitnessView::GetInstance() { + return g_pTraingFitnessView; +} + +void TraingFitnessView::AddToTraingFitnessList(const TraingFitnessItem &item) { + if (p_TraingFitnessListAdapter) { + p_TraingFitnessListAdapter->AddItem(item); + } +} + +void TraingFitnessView::SetKeyActListener() { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetKeyActListener"); + auto keyActListener = static_cast( + TraingFitnessPresenter::GetInstance()); + RootView::GetInstance()->SetOnKeyActListener(keyActListener); +} + +void TraingFitnessView::InitScrollView() { + if (scrollView == nullptr) { + scrollView = new UIScrollView(); + } + scrollView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), + Screen::GetInstance().GetHeight()); + scrollView->SetTouchable(true); + scrollView->SetDraggable(true); + scrollView->SetDirection(1); + scrollView->SetHorizontalScrollState(false); + scrollView->SetOnDragListener(presenter_); + scrollView->SetYScrollBarVisible(true); +} + +void TraingFitnessView::InitList() { + if (p_TraingFitnessListAdapter == nullptr) { + p_TraingFitnessListAdapter = new TraingFitnessAdapter(); + } + p_TraingFitnessListAdapter->SetItemClickListener(presenter_); + + if (TraingFitnessList == nullptr) { + TraingFitnessList = new UIList(); + } + TraingFitnessList->SetPosition(43, 0, HORIZONTAL_RESOLUTION, + VERTICAL_RESOLUTION); + TraingFitnessList->SetThrowDrag(true); + TraingFitnessList->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT); + TraingFitnessList->SetMaxScrollDistance(1000); + TraingFitnessList->SetSwipeACCLevel(800); + TraingFitnessList->SetDragACCLevel(5); + TraingFitnessList->SetRotateFactor(1); + TraingFitnessList->RequestFocus(); +} + +void TraingFitnessView::InitView() { + InitScrollView(); + InitList(); + SetKeyActListener(); +} + +void TraingFitnessView::DeInitView() { + if (viewInitStatus) { + if (container_) { + container_->RemoveAll(); + if (scrollView) { + scrollView->RemoveAll(); + if (p_TraingFitnessListAdapter) { + delete p_TraingFitnessListAdapter; + p_TraingFitnessListAdapter = nullptr; } - // 初始化列表 - if (TraingFitnessList == nullptr) - { - TraingFitnessList = new UIList(); - TraingFitnessList->SetPosition(43, 0, 466, 466); - TraingFitnessList->SetThrowDrag(true); - TraingFitnessList->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT); - TraingFitnessList->SetMaxScrollDistance(1000); - TraingFitnessList->SetSwipeACCLevel(800); - TraingFitnessList->SetDragACCLevel(5); - // 增加表冠控制 - TraingFitnessList->SetRotateFactor(1.0); - TraingFitnessList->RequestFocus(); + if (TraingFitnessList) { + delete TraingFitnessList; + TraingFitnessList = nullptr; } - } - UIList *TraingFitnessView::GetList() - { - return TraingFitnessList; - } - UIScrollView *TraingFitnessView::GetScrollView() - { - return scrollView; - } - void TraingFitnessView::DeInitView() - { - // scrollView-> RemoveAll(); - scrollView->RemoveAll(); - - // delete title; - // title = nullptr; - - delete TraingFitnessList; - TraingFitnessList = nullptr; - delete scrollView; scrollView = nullptr; - - delete draglistener; - draglistener = nullptr; - } - - void TraingFitnessView::PreLoad(void) - { - if (!viewInitStatus) - { - InitView(); - viewInitStatus = true; - } + } } - - /// @brief 页面启动时需要执行的代码逻辑 - void TraingFitnessView::OnStart() - { - View::OnStart(); - BaseView::RootView(Color::Black().full); - SetContainerView(new UIViewGroup()); - container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight()); - container_->SetOnDragListener(presenter_); - container_->SetTouchable(true); - container_->SetDraggable(true); - PreLoad(); - RootView::GetInstance()->SetOnKeyActListener(presenter_); - } - - /// @brief 创建页面的视图。 - void TraingFitnessView::OnSetUpView() - { - View::OnSetUpView(); - if (TraingFitnessList != nullptr && p_TraingFitnessListAdapter != nullptr) - { - scrollView->Add(TraingFitnessList); - scrollView->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT); - RootView::GetInstance()->Add(scrollView); - TraingFitnessList->SetAdapter(p_TraingFitnessListAdapter); - } - Draw(); - } - - /// @brief 销毁页面的视图。 - void TraingFitnessView::OnTearDownView() - { - View::OnTearDownView(); - return; - } - - /// @brief 页面结束时需要执行的销毁逻辑。 - void TraingFitnessView::OnStop() - { - View::OnStop(); - if (container_ != nullptr) - { - container_->RemoveAll(); - delete container_; - container_ = nullptr; - } - RootView::GetInstance()->ClearOnKeyActListener(); - RootView::GetInstance()->RemoveAll(); - return; + delete container_; + container_ = nullptr; + } +} + +void TraingFitnessView::PreLoad() { + if (!viewInitStatus) { + InitView(); + viewInitStatus = true; + } +} + +void TraingFitnessView::OnStart() { + View::OnStart(); + SetContainerView(new UIViewGroup()); + container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), + Screen::GetInstance().GetHeight()); + BaseView::RootView(Color::Black().full); + PreLoad(); + SetContainerView(container_); +} + +void TraingFitnessView::OnSetUpView() { + View::OnSetUpView(); + if (scrollView && TraingFitnessList) { + scrollView->Add(TraingFitnessList); + scrollView->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT); + container_->Add(scrollView); + if (p_TraingFitnessListAdapter) { + TraingFitnessList->SetAdapter(p_TraingFitnessListAdapter); } -} \ No newline at end of file + Draw(); + } +} + +void TraingFitnessView::OnTearDownView() { + View::OnTearDownView(); +} + +void TraingFitnessView::OnStop() { + View::OnStop(); + RootView::GetInstance()->ClearOnKeyActListener(); + DeInitView(); + RootView::GetInstance()->RemoveAll(); +} +} // namespace OHOS \ No newline at end of file -- 2.17.1