From: Caisking <3449750381@qq.com> Date: Fri, 29 Mar 2024 07:49:56 +0000 (+0800) Subject: 增加休闲运动列表并且适配多国语言 X-Git-Tag: release_V1.2.70_20241020_135402~1241^2~19^2~1 X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=19d65740a8dc50ce2df1d62c7315c23ebfc4dd01;p=mirrors%2FFD230.git 增加休闲运动列表并且适配多国语言 --- diff --git a/code/sdk/application/wearable/fd230app/CMakeLists.txt b/code/sdk/application/wearable/fd230app/CMakeLists.txt index c311307a1..fb2a6c420 100644 --- a/code/sdk/application/wearable/fd230app/CMakeLists.txt +++ b/code/sdk/application/wearable/fd230app/CMakeLists.txt @@ -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 diff --git a/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h b/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h index dde6d96bd..2be45d78c 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h +++ b/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h @@ -91,6 +91,7 @@ typedef enum : uint16_t VIEW_TRAININGICE, // 冰上运动列表 VIEW_TRAININGFITNESS, // 健身运动列表 VIEW_TRAININGDANCE, // 舞蹈运动列表 + VIEW_TRAININGREST, // 休闲运动列表 /* ---------------------------------- GPS训练 --------------------------------- */ VIEW_TRAININGGPS, // GPS训练 VIEW_TRAININGGPSSET, // GPS训练目标(时长,距离,卡路里,步数) diff --git a/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h b/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h index 6674068f8..2b285f951 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h +++ b/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h @@ -84,6 +84,7 @@ namespace OHOS void InitTraingIceSlice(void); // 冰上训练 void InitTraingFitnessSlice(void); // 健身训练 void InitTraingDanceSlice(void); // 舞蹈训练 + void InitTraingRestSlice(void); // 休闲训练 void InitTraingRecordSlice(void); // 训练记录 diff --git a/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp b/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp index d1ba3b874..3a8cf5ba9 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp +++ b/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp @@ -201,6 +201,8 @@ #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; NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGDANCE, TraingDanceview); } + void NativeLauncher::InitTraingRestSlice(void) + { + SliceProxy *TraingRestview = new AbilitySliceProxy; + 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"); diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/include/TraingLimitItemView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/include/TraingLimitItemView.h index f6b28310a..d9c27ac33 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/include/TraingLimitItemView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/include/TraingLimitItemView.h @@ -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 */ diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/include/TraingLimitPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/include/TraingLimitPresenter.h index c94ee06c2..06c2e84d5 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/include/TraingLimitPresenter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/include/TraingLimitPresenter.h @@ -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 */ diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/include/TraingLimitView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/include/TraingLimitView.h index 19597cfab..077cb2d07 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/include/TraingLimitView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/include/TraingLimitView.h @@ -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 */ diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/src/TraingLimitModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/src/TraingLimitModel.cpp index 44808af05..fa1b6fc0d 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/src/TraingLimitModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_limit/src/TraingLimitModel.cpp @@ -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 diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_more/src/TraingMorePresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_more/src/TraingMorePresenter.cpp index fc22065bd..2475aa714 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_more/src/TraingMorePresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_more/src/TraingMorePresenter.cpp @@ -113,7 +113,7 @@ namespace OHOS } if (strcmp(view.GetViewId(), BUTTON_REST) == 0) { - NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGLIMIT); + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGREST); } if (strcmp(view.GetViewId(), BUTTON_SWIMMING) == 0) { 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 index e69de29bb..000000000 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 index e69de29bb..000000000 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 index 000000000..1906582b2 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/include/TraingRestAdapter.h @@ -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 +#include +#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 &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 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 index 000000000..7e65aa709 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/include/TraingRestItemView.h @@ -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 index 000000000..fb5eaf0ea --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/include/TraingRestModel.h @@ -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 +#include +#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 &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 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 index 000000000..e17fabd30 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/include/TraingRestPresenter.h @@ -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, + 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 index 000000000..b719db185 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/include/TraingRestView.h @@ -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, 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 index e69de29bb..000000000 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 index e69de29bb..000000000 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 index 000000000..cf46b930e --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/src/TraingRestAdapter.cpp @@ -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 &data) + { + if (!listData.empty()) + { + listData.clear(); + } + std::list::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::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(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 index 000000000..c3c9690bc --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/src/TraingRestItemView.cpp @@ -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 index 000000000..52e7c1632 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/src/TraingRestModel.cpp @@ -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 index 000000000..43fb13256 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/src/TraingRestPresenter.cpp @@ -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 +#include +#include +#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::OnStart(); + } + + void TraingRestPresenter::OnPause(void) + { + Presenter::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::OnResume(); + } + + void TraingRestPresenter::OnStop(void) + { + + Presenter::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(&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 index 000000000..4c99cbe41 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/training_list_rest/src/TraingRestView.cpp @@ -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(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::OnStart(); + BaseView::RootView(Color::Black().full); + PreLoad(); + } + + /// @brief 创建页面的视图。 + void TraingRestView::OnSetUpView() + { + View::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::OnTearDownView(); + return; + } + + /// @brief 页面结束时需要执行的销毁逻辑。 + void TraingRestView::OnStop() + { + View::OnStop(); + RootView::GetInstance()->RemoveAll(); + RootView::GetInstance()->ClearFocus(); + return; + } +} \ No newline at end of file