From: Caisking <3449750381@qq.com> Date: Tue, 19 Mar 2024 12:20:30 +0000 (+0800) Subject: 合并训练功能UI X-Git-Tag: release_V1.2.70_20241020_135402~1293^2~3 X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=b991d189f43459390217bb4facaebd1422882b6b;p=mirrors%2FFD230.git 合并训练功能UI --- diff --git a/code/sdk/application/wearable/fd230app/CMakeLists.txt b/code/sdk/application/wearable/fd230app/CMakeLists.txt index 943d8b151..ee47e6b82 100644 --- a/code/sdk/application/wearable/fd230app/CMakeLists.txt +++ b/code/sdk/application/wearable/fd230app/CMakeLists.txt @@ -44,6 +44,7 @@ set(PRIVATE_HEADER ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/InitComponent/include ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/uisample/uitest/framework/include ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/heart_blood/health_service/ + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/traing_card/ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/producttest/include @@ -249,9 +250,8 @@ set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/heart_blood/src/HeartCardView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/heart_blood/health_service/health_service.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingView.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/language/LanguageInit.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/language/LanguageInit.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/config/src/ConfigModel.cpp #天气 @@ -388,6 +388,60 @@ set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialStaticImgView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/parser/DialBinParser.cpp + #Training + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingPresenter.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingMoreView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingMorePresenter.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingLimitView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingLimitPresenter.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingNomalView.cpp + ${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/TraingGPSsetView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingGPSsetPresenter.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/TraingSetTimeView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingSetTimePresenter.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingSetCaluliView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingSetCaluliPresenter.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingControlView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingControlPresenter.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingCardView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingCardPresenter.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingDataView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingDataPresenter.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingDetailView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingDetailPresenter.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingEndnoteView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingEndnotePresenter.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingEndnote2View.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingEndnote2Presenter.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/TraingGPSView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingGPSPresenter.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingGPSlackView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingGPSlackPresenter.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingGPSnoteView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingGPSnotePresenter.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingStrongView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingStrongPresenter.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingGPSlostPresenter.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingGPSlostView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingGPSbackPresenter.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingGPSbackView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingWinView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingWinPresenter.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/traing_card/Traing_CardView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traingrecord/src/TraingRecordView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traingrecord/src/TraingRecordPresenter.cpp + + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/phone/src/PhoneView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/phone/src/PhonePresenter.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/phone/src/PhoneCallView.cpp diff --git a/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h b/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h index 0fbdd676c..eb0165092 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h +++ b/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h @@ -63,6 +63,32 @@ typedef enum : uint16_t VIEW_ROTATE, // 模拟表冠 VIEW_BLOODOXY, // 血氧饱和度界面 VIEW_HEART, // 心率监测 + /* ----------------------------------- 训练 ----------------------------------- */ + VIEW_TRAINING, // 训练 + VIEW_TRAININGMORE, // 更多训练 + VIEW_TRAININGLIMIT, // 极限运动子列表 + VIEW_TRAININGNOMAL, // 正常训练开始界面(除骑行,健走,跑步外) + VIEW_TRAININGSET, // 训练目标(时长,卡路里) + VIEW_TRAININGGPSSET, // GPS训练目标(时长,距离,卡路里,步数) + VIEW_TRAININGSETTIME, // 设置训练时长 + VIEW_TRAININGSETCALULI, // 设置训练卡路里 + VIEW_TRAININGSETDIST, // 设置训练路程 + VIEW_TRAININGSETSTEP, // 设置训练步数 + VIEW_TRAININGCRAD, // 训练卡片 + VIEW_TRAININGCONTROL, // 训练控制(包括结束,暂停,继续训练) + VIEW_TRAININGDATA, // 训练数据 + VIEW_TRAININGDETAIL, // 详细训练数据 + VIEW_TRAININGENDNOTE, // 结束训练提醒 + VIEW_TRAININGENDNOTE2, // 结束训练时间太短 + VIEW_TRAININGENDDATA, // 训练结束详细数据 + VIEW_TRAININGGPS, // GPS训练 + VIEW_TRAININGGPSLACK, // 缺少GPS + VIEW_TRAININGGPSNOTE, // 连接GPS提醒 + VIEW_TRAININGSTRONG, // 训练强度介绍 + VIEW_TRAININGGPSLOST, // GPS断联 + VIEW_TRAININGGPSBACK, // GPS回连 + VIEW_TRAININGWIN, // 目标达成 + VIEW_TRAINING_RECORD, // 训练记录 /* -------------------------------------------------------------------------- */ VIEW_MAIN_TEMP, // 体温界面(暂时不用) VIEW_OFFLINEVOICE, // 语音助手界面(暂时不用) @@ -76,7 +102,7 @@ typedef enum : uint16_t VIEW_PHONECALLUP, // 通话界面 VIEW_PHONEDIR, // 电话簿 - VIEW_TEST, //测试 + VIEW_TEST, // 测试 /* -------------------------------------------------------------------------- */ #ifdef SUPPORT_ALIPAY_SEC VIEW_MAIN_ALIPAY, @@ -84,8 +110,7 @@ typedef enum : uint16_t VIEW_MAX_INTER_APP, // 在此之前添加native应用ID. VIEW_EXTERN_APP = 0xFFFE, // 三方应用 VIEW_INVALIDE_APP = 0xFFFF, -} -AppViewId; +} AppViewId; /* * Slice页面优先级,越小优先级越高 diff --git a/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h b/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h index 5eb4ab50c..8f3d529ec 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h +++ b/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h @@ -54,6 +54,33 @@ namespace OHOS void InitHeartSlice(void); void InitMainAlipaySlice(void); void InitDialUpdateSlice(void); + /* ----------------------------------- 训练 ----------------------------------- */ + void InitTraingSlice(void); + void InitTraingMoreSlice(void); + void InitTraingLimitSlice(void); + void InitTraingNomalSlice(void); + void InitTraingSetSlice(void); + void InitTraingGPSSetSlice(void); + void InitTraingStrongSlice(void); + void InitTraingSetTimeSlice(void); + void InitTraingSetCaluliSlice(void); + void InitTraingSetDistSlice(void); + void InitTraingSetStepSlice(void); + void InitTraingControlSlice(void); + void InitTraingCardSlice(void); + void InitTraingDataSlice(void); + void InitTraingDetailSlice(void); + void InitTraingEndnoteSlice(void); + void InitTraingEndnote2Slice(void); + void InitTraingEnddataSlice(void); + void InitTraingGPSSlice(void); + void InitTraingGPSlackSlice(void); + void InitTraingGPSnoteSlice(void); + void InitTraingGPSlostSlice(void); + void InitTraingGPSbackSlice(void); + void InitTraingWinSlice(void); + /* -------------------------------------------------------------------------- */ + void InitTraingRecordSlice(void); /* -------------------------------------------------------------------------- */ void InitSecondaryFunction(void); void InitFastTrainingSlice(void); @@ -66,8 +93,8 @@ namespace OHOS void InitPhoneCallupSlice(void); void InitPhoneRingSlice(void); - void InittestSlice(void); + private: void InitAllNativeSlices(void); diff --git a/code/sdk/application/wearable/fd230app/nativelauncher/include/UiConfig.h b/code/sdk/application/wearable/fd230app/nativelauncher/include/UiConfig.h index cbbeccd84..85a4d8b5a 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/include/UiConfig.h +++ b/code/sdk/application/wearable/fd230app/nativelauncher/include/UiConfig.h @@ -146,76 +146,6 @@ namespace OHOS static constexpr const char *PNG_CHECK_TIME_IMAGE_19 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_20.bin"; static constexpr const char *PNG_CHECK_TIME_IMAGE_20 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_21.bin"; static constexpr const char *PNG_CHECK_TIME_IMAGE_21 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_22.bin"; -#if 0 - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_22 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_23.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_23 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_24.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_24 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_25.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_25 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_26.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_26 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_27.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_27 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_28.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_28 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_29.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_29 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_30.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_30 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_31.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_31 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_32.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_32 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_33.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_33 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_34.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_34 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_35.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_35 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_36.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_36 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_37.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_37 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_38.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_38 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_39.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_39 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_40.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_40 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_41.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_41 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_42.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_42 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_43.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_43 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_44.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_44 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_45.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_45 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_46.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_46 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_47.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_47 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_48.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_48 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_49.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_49 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_50.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_50 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_51.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_51 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_52.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_52 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_53.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_53 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_54.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_54 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_55.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_55 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_56.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_56 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_57.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_57 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_58.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_58 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_59.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_59 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_60.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_60 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_61.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_61 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_62.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_62 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_63.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_63 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_64.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_64 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_65.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_65 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_66.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_66 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_67.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_67 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_68.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_68 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_69.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_69 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_70.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_70 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_71.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_71 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_72.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_72 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_73.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_73 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_74.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_74 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_75.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_75 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_76.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_76 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_77.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_77 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_78.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_78 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_79.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_79 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_80.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_80 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_81.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_81 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_82.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_82 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_83.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_83 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_84.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_84 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_85.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_85 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_86.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_86 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_87.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_87 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_88.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_88 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_89.bin"; - static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_89 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_90.bin"; -#endif /* -------------------------------------------------------------------------- */ static constexpr const char *PNG_APPLIST_ALIPAY_IMAGE = APP_RES_PATH "/alipay/alipay_logo.bin"; // 支付宝 static constexpr const char *PNG_ALIPAY_BIND_FAILURE = APP_RES_PATH "/alipay/ALIPAY_BIND_FAILURE.bin"; @@ -278,15 +208,17 @@ namespace OHOS static constexpr const char *PNG_A019_095_IMAGE_PATH = APP_RES_PATH "/BLUETOOTH_IMAGE_16.bin"; static constexpr const char *PNG_BLUETOOTHEAR = APP_RES_PATH "/BLUETOOTHEAR.bin"; /* --------------------------------- AppList -------------------------------- */ - static constexpr const char *PNG_APPLIST_ALARM_IMAGE = APP_RES_PATH "/APPLIST_ALARM.bin"; // 闹钟 - static constexpr const char *PNG_APPLIST_SPO2_IMAGE = APP_RES_PATH "/APPLIST_SPO2.bin"; // 血氧 - static constexpr const char *PNG_APPLIST_HEART_IMAGE = APP_RES_PATH "/APPLIST_HEART.bin"; // 心率 - static constexpr const char *PNG_APPLIST_SETTING_IMAGE = APP_RES_PATH "/APPLIST_SETTING.bin"; // 设置 - static constexpr const char *PNG_APPLIST_CALLER_IMAGE = APP_RES_PATH "/APPLIST_CALLER_IMAGE.bin"; // 打电话 - static constexpr const char *PNG_APPLIST_CALLLOG_IMAGE = APP_RES_PATH "/APPLIST_CALLLOG.bin"; // 通话记录 - static constexpr const char *PNG_APPLIST_COMPASS_IMAGE = APP_RES_PATH "/APPLIST_COMPASS_IMAGE.bin"; // 指南针 - static constexpr const char *PNG_APPLIST_WEATHER_IMAGE = APP_RES_PATH "/APPLIST_WEATHER_IMAGE.bin"; // 天气 - static constexpr const char *PNG_APPLIST_RECORD_IMAGE = APP_RES_PATH "/APPLIST_RECORD_IMAGE.bin"; // 录音 + static constexpr const char *PNG_APPLIST_ALARM_IMAGE = APP_RES_PATH "/APPLIST_ALARM.bin"; // 闹钟 + static constexpr const char *PNG_APPLIST_SPO2_IMAGE = APP_RES_PATH "/APPLIST_SPO2.bin"; // 血氧 + static constexpr const char *PNG_APPLIST_HEART_IMAGE = APP_RES_PATH "/APPLIST_HEART.bin"; // 心率 + static constexpr const char *PNG_APPLIST_SETTING_IMAGE = APP_RES_PATH "/APPLIST_SETTING.bin"; // 设置 + static constexpr const char *PNG_APPLIST_CALLER_IMAGE = APP_RES_PATH "/APPLIST_CALLER_IMAGE.bin"; // 打电话 + static constexpr const char *PNG_APPLIST_CALLLOG_IMAGE = APP_RES_PATH "/APPLIST_CALLLOG.bin"; // 通话记录 + static constexpr const char *PNG_APPLIST_COMPASS_IMAGE = APP_RES_PATH "/APPLIST_COMPASS_IMAGE.bin"; // 指南针 + static constexpr const char *PNG_APPLIST_WEATHER_IMAGE = APP_RES_PATH "/APPLIST_WEATHER_IMAGE.bin"; // 天气 + static constexpr const char *PNG_APPLIST_RECORD_IMAGE = APP_RES_PATH "/APPLIST_RECORD_IMAGE.bin"; // 录音 + static constexpr const char *PNG_APPLIST_TRAINING_IMAGE = APP_RES_PATH "/APPLIST_TRAINING.bin"; // 训练 + static constexpr const char *PNG_APPLIST_TRAINING_RECORD_IMAGE = APP_RES_PATH "/APPLIST_TRAINING_RECORD.bin"; // 训练记录 /* ---------------------------------- 快速训练 ---------------------------------- */ static constexpr const char *PNG_TRAING_BOUTTONMORE_IMAGE = APP_RES_PATH "/Training/More.bin"; static constexpr const char *PNG_TRAING_BUTTONGRONG_IMAGE = APP_RES_PATH "/Training/Bouttonground.bin"; diff --git a/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp b/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp index d85469baa..e5d3dcc4c 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp +++ b/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp @@ -130,6 +130,59 @@ #include "producttest/include/testPresenter.h" #include "producttest/include/testView.h" +/* -------------------------------------------------------------------------- */ +#include "traing/include/TraingView.h" +#include "traing/include/TraingPresenter.h" +#include "traing/include/TraingMorePresenter.h" +#include "traing/include/TraingMoreView.h" +#include "traing/include/TraingLimitPresenter.h" +#include "traing/include/TraingLimitView.h" +#include "traing/include/TraingNomalPresenter.h" +#include "traing/include/TraingNomalView.h" +#include "traing/include/TraingSetPresenter.h" +#include "traing/include/TraingSetView.h" +#include "traing/include/TraingGPSsetPresenter.h" +#include "traing/include/TraingGPSsetView.h" +#include "traing/include/TraingSetTimePresenter.h" +#include "traing/include/TraingSetTimeView.h" +#include "traing/include/TraingSetCaluliPresenter.h" +#include "traing/include/TraingSetCaluliView.h" +#include "traing/include/TraingSetDistPresenter.h" +#include "traing/include/TraingSetDistView.h" +#include "traing/include/TraingSetSeptPresenter.h" +#include "traing/include/TraingSetSeptView.h" +#include "traing/include/TraingControlPresenter.h" +#include "traing/include/TraingControlView.h" +#include "traing/include/TraingCardPresenter.h" +#include "traing/include/TraingCardView.h" +#include "traing/include/TraingDataPresenter.h" +#include "traing/include/TraingDataView.h" +#include "traing/include/TraingDetailPresenter.h" +#include "traing/include/TraingDetailView.h" +#include "traing/include/TraingEndnotePresenter.h" +#include "traing/include/TraingEndnoteView.h" +#include "traing/include/TraingEndnote2Presenter.h" +#include "traing/include/TraingEndnote2View.h" +#include "traing/include/TraingEnddataPresenter.h" +#include "traing/include/TraingEnddataView.h" +#include "traing/include/TraingGPSPresenter.h" +#include "traing/include/TraingGPSView.h" +#include "traing/include/TraingGPSlackPresenter.h" +#include "traing/include/TraingGPSlackView.h" +#include "traing/include/TraingGPSnotePresenter.h" +#include "traing/include/TraingGPSnoteView.h" +#include "traing/include/TraingStrongPresenter.h" +#include "traing/include/TraingStrongView.h" +#include "traing/include/TraingGPSlostPresenter.h" +#include "traing/include/TraingGPSlostView.h" +#include "traing/include/TraingGPSbackPresenter.h" +#include "traing/include/TraingGPSbackView.h" +#include "traing/include/TraingWinPresenter.h" +#include "traing/include/TraingWinView.h" + +#include "traingrecord/include/TraingRecordView.h" +#include "traingrecord/include/TraingRecordPresenter.h" +/* -------------------------------------------------------------------------- */ #ifdef SUPPORT_ALIPAY_SEC #include "AlipayMainView.h" @@ -175,14 +228,14 @@ namespace OHOS {VIEW_FAST_TRAINING_ATTENTION, &NativeLauncher::InitFastTrainingAttentionSlice}, {VIEW_RECORD, &NativeLauncher::InitRecordingSlice}, // 录音实例化地址 - + {VIEW_MESSAGE, &NativeLauncher::InitMessageSlice}, {VIEW_ROTATE, &NativeLauncher::InitRotateSlice}, {VIEW_DIALUPDATE, &NativeLauncher::InitDialUpdateSlice}, {VIEW_BLOODOXY, &NativeLauncher::InitMainBloodOxyView}, {VIEW_HEART, &NativeLauncher::InitHeartSlice}, - {VIEW_PHONE, &NativeLauncher::InitPhoneSlice}, //电话 + {VIEW_PHONE, &NativeLauncher::InitPhoneSlice}, // 电话 {VIEW_PHONECALL, &NativeLauncher::InitPhoneCallSlice}, {VIEW_PHONEDIR, &NativeLauncher::InitPhoneDirSlice}, {VIEW_PHONECALLING, &NativeLauncher::InitPhoneCallingSlice}, @@ -190,7 +243,36 @@ namespace OHOS {VIEW_PHONERING, &NativeLauncher::InitPhoneRingSlice}, {VIEW_TEST, &NativeLauncher::InittestSlice}, - + + /* ----------------------------------- 训练 ----------------------------------- */ + {VIEW_TRAINING, &NativeLauncher::InitTraingSlice}, // 训练 + {VIEW_TRAININGMORE, &NativeLauncher::InitTraingMoreSlice}, // 更多训练 + {VIEW_TRAININGLIMIT, &NativeLauncher::InitTraingLimitSlice}, // 极限训练 + {VIEW_TRAININGNOMAL, &NativeLauncher::InitTraingNomalSlice}, // 正常训练初始界面 + {VIEW_TRAININGSET, &NativeLauncher::InitTraingSetSlice}, // 训练目标设置界面 + {VIEW_TRAININGGPSSET, &NativeLauncher::InitTraingGPSSetSlice}, // 训练GPS目标设置界面 + {VIEW_TRAININGSETTIME, &NativeLauncher::InitTraingSetTimeSlice}, // 设置目标时长 + {VIEW_TRAININGSETCALULI, &NativeLauncher::InitTraingSetCaluliSlice}, // 设置目标卡路里 + {VIEW_TRAININGSETDIST, &NativeLauncher::InitTraingSetDistSlice}, // 设置目标距离 + {VIEW_TRAININGSETSTEP, &NativeLauncher::InitTraingSetStepSlice}, // 设置目标步数 + {VIEW_TRAININGCONTROL, &NativeLauncher::InitTraingControlSlice}, // 训练控制 + {VIEW_TRAININGCRAD, &NativeLauncher::InitTraingCardSlice}, // 训练卡片 + {VIEW_TRAININGDATA, &NativeLauncher::InitTraingDataSlice}, // 训练数据 + {VIEW_TRAININGDETAIL, &NativeLauncher::InitTraingDetailSlice}, // 详细训练数据 + {VIEW_TRAININGENDNOTE, &NativeLauncher::InitTraingEndnoteSlice}, // 训练结束提醒 + {VIEW_TRAININGENDNOTE2, &NativeLauncher::InitTraingEndnote2Slice}, // 训练结束时间太短提醒 + {VIEW_TRAININGENDDATA, &NativeLauncher::InitTraingEnddataSlice}, // 训练结束详细数据 + {VIEW_TRAININGGPS, &NativeLauncher::InitTraingGPSSlice}, // GPS训练 + {VIEW_TRAININGGPSLACK, &NativeLauncher::InitTraingGPSlackSlice}, // GPS缺少 + {VIEW_TRAININGGPSNOTE, &NativeLauncher::InitTraingGPSnoteSlice}, // 提醒连接GPS + {VIEW_TRAININGSTRONG, &NativeLauncher::InitTraingStrongSlice}, // 训练强度介绍 + {VIEW_TRAININGGPSLOST, &NativeLauncher::InitTraingGPSlostSlice}, // GPS断联 + {VIEW_TRAININGGPSBACK, &NativeLauncher::InitTraingGPSbackSlice}, // GPS回连 + {VIEW_TRAININGWIN, &NativeLauncher::InitTraingWinSlice}, // 训练目标达成 + + {VIEW_TRAINING_RECORD, &NativeLauncher::InitTraingRecordSlice}, // 训练目标达成 + /* -------------------------------------------------------------------------- */ + #ifdef SUPPORT_ALIPAY_SEC {VIEW_MAIN_ALIPAY, &NativeLauncher::InitMainAlipaySlice}, #endif @@ -218,8 +300,7 @@ namespace OHOS {VIEW_PHONE, "phoneview"}, {VIEW_INDOORWALK, "IndoorWalkView"}, {VIEW_SHUTDOWN_OR_REBOOT, "RebootView"}, - {VIEW_TEST, "testView"} - }; + {VIEW_TEST, "testView"}}; NativeLauncher::NativeLauncher() {} NativeLauncher::~NativeLauncher() {} @@ -665,89 +746,215 @@ namespace OHOS NativeAbility::GetInstance().AddSliceProxy(VIEW_RECORD, record); } - void NativeLauncher::InitPhoneSlice(void) -{ - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitPhoneSlice"); - SliceProxy *phoneview = new AbilitySliceProxy; - if (phoneview == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneview"); - return; + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitPhoneSlice"); + SliceProxy *phoneview = new AbilitySliceProxy; + if (phoneview == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneview"); + return; + } + NativeAbility::GetInstance().AddSliceProxy(VIEW_PHONE, phoneview); } - NativeAbility::GetInstance().AddSliceProxy(VIEW_PHONE, phoneview); -} -void NativeLauncher::InitPhoneCallSlice(void) -{ - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitPhoneCallSlice"); - SliceProxy *phonecallview = new AbilitySliceProxy; - if (phonecallview == nullptr) + void NativeLauncher::InitPhoneCallSlice(void) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phonecallview"); - return; + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitPhoneCallSlice"); + SliceProxy *phonecallview = new AbilitySliceProxy; + if (phonecallview == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phonecallview"); + return; + } + NativeAbility::GetInstance().AddSliceProxy(VIEW_PHONECALL, phonecallview); } - NativeAbility::GetInstance().AddSliceProxy(VIEW_PHONECALL, phonecallview); -} -void NativeLauncher::InitPhoneDirSlice(void) -{ - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitPhoneCallSlice"); - SliceProxy *phonedirview = new AbilitySliceProxy; - if (phonedirview == nullptr) + void NativeLauncher::InitPhoneDirSlice(void) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phonedirview"); - return; + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitPhoneCallSlice"); + SliceProxy *phonedirview = new AbilitySliceProxy; + if (phonedirview == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phonedirview"); + return; + } + NativeAbility::GetInstance().AddSliceProxy(VIEW_PHONEDIR, phonedirview); } - NativeAbility::GetInstance().AddSliceProxy(VIEW_PHONEDIR, phonedirview); -} -void NativeLauncher::InitPhoneCallingSlice(void) -{ - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitPhoneCallingSlice"); - SliceProxy *phonecallingview = new AbilitySliceProxy; - if (phonecallingview == nullptr) + void NativeLauncher::InitPhoneCallingSlice(void) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phonecallingview"); - return; + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitPhoneCallingSlice"); + SliceProxy *phonecallingview = new AbilitySliceProxy; + if (phonecallingview == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phonecallingview"); + return; + } + NativeAbility::GetInstance().AddSliceProxy(VIEW_PHONECALLING, phonecallingview); } - NativeAbility::GetInstance().AddSliceProxy(VIEW_PHONECALLING, phonecallingview); -} -void NativeLauncher::InitPhoneCallupSlice(void) -{ - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitPhoneCallupSlice"); - SliceProxy *phonecallupview = new AbilitySliceProxy; - if (phonecallupview == nullptr) + void NativeLauncher::InitPhoneCallupSlice(void) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phonecallview"); - return; + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitPhoneCallupSlice"); + SliceProxy *phonecallupview = new AbilitySliceProxy; + if (phonecallupview == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phonecallview"); + return; + } + NativeAbility::GetInstance().AddSliceProxy(VIEW_PHONECALLUP, phonecallupview); } - NativeAbility::GetInstance().AddSliceProxy(VIEW_PHONECALLUP, phonecallupview); -} -void NativeLauncher::InitPhoneRingSlice(void) -{ - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitPhoneRingSlice"); - SliceProxy *phoneringview = new AbilitySliceProxy; - if (phoneringview == nullptr) + void NativeLauncher::InitPhoneRingSlice(void) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneringview"); - return; + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitPhoneRingSlice"); + SliceProxy *phoneringview = new AbilitySliceProxy; + if (phoneringview == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneringview"); + return; + } + NativeAbility::GetInstance().AddSliceProxy(VIEW_PHONERING, phoneringview); } - NativeAbility::GetInstance().AddSliceProxy(VIEW_PHONERING, phoneringview); -} -void NativeLauncher::InittestSlice(void) -{ - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitestSlice"); - SliceProxy *testview = new AbilitySliceProxy; - if (testview == nullptr) + void NativeLauncher::InittestSlice(void) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneringview"); - return; + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitestSlice"); + SliceProxy *testview = new AbilitySliceProxy; + if (testview == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "phoneringview"); + return; + } + NativeAbility::GetInstance().AddSliceProxy(VIEW_TEST, testview); } - NativeAbility::GetInstance().AddSliceProxy(VIEW_TEST, testview); -} - + /* ---------------------------------- 训练UI ---------------------------------- */ + // 体能训练 + void NativeLauncher::InitTraingSlice(void) + { + SliceProxy *traingview = new AbilitySliceProxy; + NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAINING, traingview); + } + void NativeLauncher::InitTraingMoreSlice(void) + { + SliceProxy *traingmoreview = new AbilitySliceProxy; + NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGMORE, traingmoreview); + } + void NativeLauncher::InitTraingLimitSlice(void) + { + SliceProxy *trainglimitview = new AbilitySliceProxy; + NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGLIMIT, trainglimitview); + } + void NativeLauncher::InitTraingNomalSlice(void) + { + SliceProxy *traingnomalview = new AbilitySliceProxy; + NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGNOMAL, traingnomalview); + } + void NativeLauncher::InitTraingSetSlice(void) + { + SliceProxy *traingsetview = new AbilitySliceProxy; + NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGSET, traingsetview); + } + void NativeLauncher::InitTraingGPSSetSlice(void) + { + SliceProxy *traingGPSsetview = new AbilitySliceProxy; + NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGGPSSET, traingGPSsetview); + } + void NativeLauncher::InitTraingSetTimeSlice(void) + { + SliceProxy *traingsettimeview = new AbilitySliceProxy; + NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGSETTIME, traingsettimeview); + } + void NativeLauncher::InitTraingSetCaluliSlice(void) + { + SliceProxy *traingsetcaluliview = new AbilitySliceProxy; + NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGSETCALULI, traingsetcaluliview); + } + void NativeLauncher::InitTraingSetDistSlice(void) + { + SliceProxy *traingsetdistview = new AbilitySliceProxy; + NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGSETDIST, traingsetdistview); + } + void NativeLauncher::InitTraingSetStepSlice(void) + { + SliceProxy *traingsetstepview = new AbilitySliceProxy; + NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGSETSTEP, traingsetstepview); + } + void NativeLauncher::InitTraingControlSlice(void) + { + SliceProxy *traingcontrolview = new AbilitySliceProxy; + NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGCONTROL, traingcontrolview); + } + void NativeLauncher::InitTraingCardSlice(void) + { + SliceProxy *traingcardview = new AbilitySliceProxy; + NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGCRAD, traingcardview); + } + void NativeLauncher::InitTraingDataSlice(void) + { + SliceProxy *traingdataview = new AbilitySliceProxy; + NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGDATA, traingdataview); + } + void NativeLauncher::InitTraingDetailSlice(void) + { + SliceProxy *traingdetailview = new AbilitySliceProxy; + NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGDETAIL, traingdetailview); + } + void NativeLauncher::InitTraingEndnoteSlice(void) + { + SliceProxy *traingendnoteview = new AbilitySliceProxy; + NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGENDNOTE, traingendnoteview); + } + void NativeLauncher::InitTraingEndnote2Slice(void) + { + SliceProxy *traingendnote2view = new AbilitySliceProxy; + NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGENDNOTE2, traingendnote2view); + } + void NativeLauncher::InitTraingEnddataSlice(void) + { + SliceProxy *traingenddataview = new AbilitySliceProxy; + NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGENDDATA, traingenddataview); + } + void NativeLauncher::InitTraingGPSSlice(void) + { + SliceProxy *traingGPSview = new AbilitySliceProxy; + NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGGPS, traingGPSview); + } + void NativeLauncher::InitTraingGPSlackSlice(void) + { + SliceProxy *traingGPSlackview = new AbilitySliceProxy; + NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGGPSLACK, traingGPSlackview); + } + void NativeLauncher::InitTraingGPSnoteSlice(void) + { + SliceProxy *traingGPSnoteview = new AbilitySliceProxy; + NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGGPSNOTE, traingGPSnoteview); + } + void NativeLauncher::InitTraingStrongSlice(void) + { + SliceProxy *traingStrongview = new AbilitySliceProxy; + NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGSTRONG, traingStrongview); + } + void NativeLauncher::InitTraingGPSlostSlice(void) + { + SliceProxy *traingGPSlostview = new AbilitySliceProxy; + NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGGPSLOST, traingGPSlostview); + } + void NativeLauncher::InitTraingGPSbackSlice(void) + { + SliceProxy *traingGPSbackview = new AbilitySliceProxy; + NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGGPSBACK, traingGPSbackview); + } + void NativeLauncher::InitTraingWinSlice(void) + { + SliceProxy *traingwinview = new AbilitySliceProxy; + NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGWIN, traingwinview); + } + void NativeLauncher::InitTraingRecordSlice(void) + { + SliceProxy *traingrecordview = new AbilitySliceProxy; + NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAINING_RECORD, traingrecordview); + } + /* -------------------------------------------------------------------------- */ } diff --git a/code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistModel.cpp index 254aed53e..149ca8f27 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistModel.cpp @@ -25,6 +25,8 @@ namespace OHOS {VIEW_COMPASS, PNG_APPLIST_COMPASS_IMAGE, PNG_APPLIST_COMPASS_IMAGE, "指南针", nullptr}, {VIEW_INDOORWALK, PNG_APPLIST_WALK_IMAGE, PNG_APPLIST_WALK_IMAGE, "室内步行", nullptr}, {VIEW_WEATHER, PNG_APPLIST_WEATHER_IMAGE, PNG_APPLIST_WEATHER_IMAGE, "天气", nullptr}, + {VIEW_TRAINING, PNG_APPLIST_TRAINING_IMAGE, PNG_APPLIST_TRAINING_IMAGE, "体能训练", nullptr}, + {VIEW_TRAINING_RECORD, PNG_APPLIST_TRAINING_RECORD_IMAGE, PNG_APPLIST_TRAINING_RECORD_IMAGE, "训练记录", nullptr}, {VIEW_HEART, PNG_APPLIST_HEART_IMAGE, PNG_APPLIST_HEART_IMAGE, "心率检测", nullptr}, {VIEW_RECORD, PNG_APPLIST_RECORD_IMAGE, PNG_APPLIST_RECORD_IMAGE, "录音", nullptr}, {VIEW_SETTING, PNG_APPLIST_SETTING_IMAGE, PNG_APPLIST_SETTING_IMAGE, "设置", nullptr}, diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/MainViewSample.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/MainViewSample.h index c124cf087..7c16fdfaa 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/main/include/MainViewSample.h +++ b/code/sdk/application/wearable/fd230app/nativeui/main/include/MainViewSample.h @@ -34,7 +34,7 @@ #include "components/ui_cross_view.h" #include "heart_blood/include/BloodCardView.h" -#include "traing/include/TraingView.h" +#include "traing/traing_card/Traing_CardView.h" #include "ApplistCardView.h" #include "weather/include/WeatherControlView.h" #include "message/include/MessageCardView.h" @@ -113,7 +113,7 @@ namespace OHOS HeartRateView *heartRateView{nullptr}; BloodCardView *bloodView{nullptr}; WeatherControlView *weatherControlView{nullptr}; - TraingView *traingView{nullptr}; + Traing_CardView *traingView{nullptr}; ApplistCardView *applistCardView{nullptr}; UIButton *changebut{nullptr}; /* -------------------------------------------------------------------------- */ diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/MainViewSample.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/MainViewSample.cpp index a7c4fcb8b..27540aaf6 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/main/src/MainViewSample.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/main/src/MainViewSample.cpp @@ -32,7 +32,7 @@ namespace OHOS {BloodOxygen, &MainViewSample::InitBloodOxygenPage}, {TRAINING, &MainViewSample::InitTrainingPage}, {COMPASS, &MainViewSample::InitCompassPage}, - {WEATHER, &MainViewSample::InitWeatherPage}, + //{WEATHER, &MainViewSample::InitWeatherPage}, {MUSIC_PLAYER, &MainViewSample::InitMusicPlayerPage}, #if 0 {APPLIST,&MainViewSample::InitApplistPage} @@ -417,7 +417,7 @@ namespace OHOS // 主界面训练卡片 UICardPage *MainViewSample::InitTrainingPage(void) { - traingView = new TraingView(); + traingView = new Traing_CardView(); if (traingView == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "traingView new fail"); diff --git a/code/sdk/application/wearable/fd230app/nativeui/screensetting/include/ScreenModels.h b/code/sdk/application/wearable/fd230app/nativeui/screensetting/include/ScreenModels.h index b91515d43..ccb600aca 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/screensetting/include/ScreenModels.h +++ b/code/sdk/application/wearable/fd230app/nativeui/screensetting/include/ScreenModels.h @@ -21,7 +21,7 @@ namespace OHOS TRAINING, BloodOxygen, COMPASS, - WEATHER, + // WEATHER, MUSIC_PLAYER, // APPLIST, MAX_CARD, diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingCardPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingCardPresenter.h new file mode 100644 index 000000000..d011868a8 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingCardPresenter.h @@ -0,0 +1,32 @@ +#ifndef _TraingCard_PRESENTER_H +#define _TraingCard_PRESENTER_H + +#include "Presenter.h" +#include "TraingCardView.h" + +namespace OHOS +{ + class TraingCardView; + + class TraingCardPresenter : public Presenter, + public UIView::OnClickListener, + public UIView::OnDragListener + { + public: + TraingCardPresenter(); + virtual ~TraingCardPresenter(); + + void OnStart() override; + void OnPause() override; + void OnResume() override; + void OnStop() override; + static TraingCardPresenter *GetInstance(); + + private: + // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承; + bool OnClick(UIView &view, const ClickEvent &event) override; + bool OnDrag(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/TraingCardView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingCardView.h new file mode 100644 index 000000000..bdf142e10 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingCardView.h @@ -0,0 +1,63 @@ +#ifndef _TraingCard_VIEW_H +#define _TraingCard_VIEW_H + +#include "BaseView.h" +#include "View.h" +#include +#include "components/ui_view_group.h" +#include "components/ui_label.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 "components/ui_swipe_view.h" + +#include "TraingCardPresenter.h" +namespace OHOS +{ + class TraingCardPresenter; + class TraingCardView : public View + { + + public: + TraingCardView(); + virtual ~TraingCardView(); + static TraingCardView *GetInstance(void); + + void OnStart() override; + void OnSetUpView() override; + void OnTearDownView() override; + void OnStop() override; + void InitView(); + void DeInit(); + void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize); + void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId); + void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath); + void InitList(); + void PreLoad(void); + + // 通过函数改变 + void SetLabel(); + void SetButton(); + + private: + UIView::OnDragListener *draglistener{nullptr}; + TraingCardView(TraingCardView &&) = delete; + TraingCardView &operator=(TraingCardView &&) = delete; + + UISwipeView *swipe_ = nullptr; + + UILabel *label1_ = nullptr; + UILabel *label2_ = nullptr; + UILabel *label3_ = nullptr; + + bool viewiInitStatus{false}; + }; +} // namespace OHOS +#endif // TraingCard_PRESENTER_H diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingControlPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingControlPresenter.h new file mode 100644 index 000000000..c1ebbfd72 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingControlPresenter.h @@ -0,0 +1,33 @@ +#ifndef _TraingControl_PRESENTER_H +#define _TraingControl_PRESENTER_H + +#include "Presenter.h" +#include "TraingControlView.h" + +namespace OHOS +{ + class TraingControlView; + + class TraingControlPresenter : public Presenter, + public UIView::OnClickListener, + public UIView::OnDragListener + { + public: + TraingControlPresenter(); + virtual ~TraingControlPresenter(); + + void OnStart() override; + void OnPause() override; + void OnResume() override; + void OnStop() override; + std::string test = "暂停"; + static TraingControlPresenter *GetInstance(); + + private: + // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承; + bool OnClick(UIView &view, const ClickEvent &event) override; + bool OnDrag(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/TraingControlView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingControlView.h new file mode 100644 index 000000000..e96e78183 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingControlView.h @@ -0,0 +1,76 @@ +#ifndef _TraingControl_VIEW_H +#define _TraingControl_VIEW_H + +#include "BaseView.h" +#include "View.h" +#include +#include "components/ui_view_group.h" +#include "components/ui_label.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 "TraingControlPresenter.h" +namespace OHOS +{ +#define BUTTONSTOP "button1" +#define BUTTONPAUSE "button2" +#define BUTTONCONTINUE "button3" + +#define BUTTON_PAUSE_IMG_SRC "/user/res/Training/sport-pause.bin" +#define BUTTON_STOP_IMG_SRC "/user/res/Training/sport-stop.bin" +#define BUTTON_CONTINUE_IMG_SRC "/user/res/Training/sport-continue.bin" + + class TraingControlPresenter; + class TraingControlView : public View + { + + public: + TraingControlView(); + virtual ~TraingControlView(); + static TraingControlView *GetInstance(void); + + void OnStart() override; + void OnSetUpView() override; + void OnTearDownView() override; + void OnStop() override; + void InitView(); + void DeInit(); + void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize); + void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId); + void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath); + void InitList(); + void PreLoad(void); + + //通过函数改变 + void SetLabel(); + void SetButton(); + + private: + UIView::OnDragListener *draglistener{nullptr}; + TraingControlView(TraingControlView &&) = delete; + TraingControlView &operator=(TraingControlView &&) = delete; + + UIViewGroup *container_ = nullptr; + + UILabel *label1_ = nullptr; + UILabel *label2_ = nullptr; + UILabel *label3_ = nullptr; + UILabel *label4_ = nullptr; + + UIImageView *image1_ = nullptr; + + UIButton *button1_ = nullptr; + UIButton *button2_ = nullptr; + + bool viewiInitStatus{false}; + }; +} // namespace OHOS +#endif // TraingControl_PRESENTER_H diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingDataPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingDataPresenter.h new file mode 100644 index 000000000..256325ee3 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingDataPresenter.h @@ -0,0 +1,32 @@ +#ifndef _TraingData_PRESENTER_H +#define _TraingData_PRESENTER_H + +#include "Presenter.h" +#include "TraingDataView.h" + +namespace OHOS +{ + class TraingDataView; + + class TraingDataPresenter : public Presenter, + public UIView::OnClickListener, + public UIView::OnDragListener + { + public: + TraingDataPresenter(); + virtual ~TraingDataPresenter(); + + void OnStart() override; + void OnPause() override; + void OnResume() override; + void OnStop() override; + static TraingDataPresenter *GetInstance(); + + private: + // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承; + bool OnClick(UIView &view, const ClickEvent &event) override; + bool OnDrag(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/TraingDataView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingDataView.h new file mode 100644 index 000000000..c782f9480 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingDataView.h @@ -0,0 +1,75 @@ +#ifndef _TraingData_VIEW_H +#define _TraingData_VIEW_H + +#include "BaseView.h" +#include "View.h" +#include +#include "components/ui_view_group.h" +#include "components/ui_label.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 "TraingDataPresenter.h" +namespace OHOS +{ +#define BUTTONNOTE "button1" + + + class TraingDataPresenter; + class TraingDataView : public View + { + + public: + TraingDataView(); + virtual ~TraingDataView(); + static TraingDataView *GetInstance(void); + + void OnStart() override; + void OnSetUpView() override; + void OnTearDownView() override; + void OnStop() override; + void InitView(); + void DeInit(); + void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize); + void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId); + void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath); + void InitList(); + void PreLoad(void); + + // 通过函数改变 + void SetLabel(); + void SetButton(); + + private: + UIView::OnDragListener *draglistener{nullptr}; + TraingDataView(TraingDataView &&) = delete; + TraingDataView &operator=(TraingDataView &&) = delete; + + UIViewGroup *container_ = nullptr; + + UILabel *label1_ = nullptr; + UILabel *label2_ = nullptr; + UILabel *label3_ = nullptr; + UILabel *label4_ = nullptr; + UILabel *label5_ = nullptr; + + UIImageView *image1_ = nullptr; + UIImageView *image2_ = nullptr; + UIImageView *image3_ = nullptr; + UIImageView *image4_ = nullptr; + UIImageView *image5_ = nullptr; + UIImageView *image6_ = nullptr; + + UIButton *button1_ = nullptr; + bool viewiInitStatus{false}; + }; +} // namespace OHOS +#endif // TraingData_PRESENTER_H diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingDetailPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingDetailPresenter.h new file mode 100644 index 000000000..351c7e398 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingDetailPresenter.h @@ -0,0 +1,32 @@ +#ifndef _TraingDetail_PRESENTER_H +#define _TraingDetail_PRESENTER_H + +#include "Presenter.h" +#include "TraingDetailView.h" + +namespace OHOS +{ + class TraingDetailView; + + class TraingDetailPresenter : public Presenter, + public UIView::OnClickListener, + public UIView::OnDragListener + { + public: + TraingDetailPresenter(); + virtual ~TraingDetailPresenter(); + + void OnStart() override; + void OnPause() override; + void OnResume() override; + void OnStop() override; + static TraingDetailPresenter *GetInstance(); + + private: + // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承; + bool OnClick(UIView &view, const ClickEvent &event) override; + bool OnDrag(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/TraingDetailView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingDetailView.h new file mode 100644 index 000000000..735c9975a --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingDetailView.h @@ -0,0 +1,75 @@ +#ifndef _TraingDetail_VIEW_H +#define _TraingDetail_VIEW_H + +#include "BaseView.h" +#include "View.h" +#include +#include "components/ui_view_group.h" +#include "components/ui_label.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 "TraingDetailPresenter.h" +namespace OHOS +{ + class TraingDetailPresenter; + class TraingDetailView : public View + { + + public: + TraingDetailView(); + virtual ~TraingDetailView(); + static TraingDetailView *GetInstance(void); + + void OnStart() override; + void OnSetUpView() override; + void OnTearDownView() override; + void OnStop() override; + void InitView(); + void DeInit(); + void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize); + void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId); + void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath); + void InitList(); + void PreLoad(void); + + // 通过函数改变 + void SetLabel(); + void SetButton(); + + private: + UIView::OnDragListener *draglistener{nullptr}; + TraingDetailView(TraingDetailView &&) = delete; + TraingDetailView &operator=(TraingDetailView &&) = delete; + + UIViewGroup *container_ = nullptr; + + UILabel *label1_ = nullptr; + UILabel *label2_ = nullptr; + UILabel *label3_ = nullptr; + UILabel *label4_ = nullptr; + UILabel *label5_ = nullptr; + UILabel *label6_ = nullptr; + UILabel *label7_ = nullptr; + UILabel *label8_ = nullptr; + + UIImageView *image1_ = nullptr; + UIImageView *image2_ = nullptr; + UIImageView *image3_ = nullptr; + UIImageView *image4_ = nullptr; + UIImageView *image5_ = nullptr; + UIImageView *image6_ = nullptr; + UIImageView *image7_ = nullptr; + + bool viewiInitStatus{false}; + }; +} // namespace OHOS +#endif // TraingDetail_PRESENTER_H diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingEnddataPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingEnddataPresenter.h new file mode 100644 index 000000000..c7877fb81 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingEnddataPresenter.h @@ -0,0 +1,32 @@ +#ifndef _TraingEnddata_PRESENTER_H +#define _TraingEnddata_PRESENTER_H + +#include "Presenter.h" +#include "TraingEnddataView.h" + +namespace OHOS +{ + class TraingEnddataView; + + class TraingEnddataPresenter : public Presenter, + public UIView::OnClickListener, + public UIView::OnDragListener + { + public: + TraingEnddataPresenter(); + virtual ~TraingEnddataPresenter(); + + void OnStart() override; + void OnPause() override; + void OnResume() override; + void OnStop() override; + static TraingEnddataPresenter *GetInstance(); + + private: + // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承; + bool OnClick(UIView &view, const ClickEvent &event) override; + bool OnDrag(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/TraingEnddataView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingEnddataView.h new file mode 100644 index 000000000..56c9294ba --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingEnddataView.h @@ -0,0 +1,95 @@ +#ifndef _TraingEnddata_VIEW_H +#define _TraingEnddata_VIEW_H + +#include "BaseView.h" +#include "View.h" +#include +#include "components/ui_view_group.h" +#include "components/ui_label.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 "TraingEnddataPresenter.h" +namespace OHOS +{ +#define BUTTONBACK "button1" + + class TraingEnddataPresenter; + class TraingEnddataView : public View + { + + public: + TraingEnddataView(); + virtual ~TraingEnddataView(); + static TraingEnddataView *GetInstance(void); + + void OnStart() override; + void OnSetUpView() override; + void OnTearDownView() override; + void OnStop() override; + void InitView(); + void DeInit(); + void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize); + void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId); + void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath); + void InitList(); + void PreLoad(void); + + // 通过函数改变 + void SetLabel(); + void SetButton(); + + private: + UIView::OnDragListener *draglistener{nullptr}; + TraingEnddataView(TraingEnddataView &&) = delete; + TraingEnddataView &operator=(TraingEnddataView &&) = delete; + + UIViewGroup *container_ = nullptr; + UIScrollView *scrollView1_ = nullptr; + + UILabel *label1_ = nullptr; + UILabel *label2_ = nullptr; + UILabel *label3_ = nullptr; + UILabel *label4_ = nullptr; + UILabel *label5_ = nullptr; + UILabel *label6_ = nullptr; + UILabel *label7_ = nullptr; + UILabel *label8_ = nullptr; + UILabel *label9_ = nullptr; + UILabel *label10_ = nullptr; + UILabel *label11_ = nullptr; + UILabel *label12_ = nullptr; + UILabel *label13_ = nullptr; + UILabel *label14_ = nullptr; + UILabel *label15_ = nullptr; + UILabel *label16_ = nullptr; + UILabel *label17_ = nullptr; + UILabel *label18_ = nullptr; + UILabel *label19_ = nullptr; + + UIButton *button1_ = nullptr; + + UIImageView *image1_ = nullptr; + UIImageView *image2_ = nullptr; + UIImageView *image3_ = nullptr; + UIImageView *image4_ = nullptr; + UIImageView *image5_ = nullptr; + UIImageView *image6_ = nullptr; + UIImageView *image7_ = nullptr; + UIImageView *image8_ = nullptr; + UIImageView *image9_ = nullptr; + UIImageView *image10_ = nullptr; + UIImageView *image11_ = nullptr; + + bool viewiInitStatus{false}; + }; +} // namespace OHOS +#endif // TraingEnddata_PRESENTER_H diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingEndnote2Presenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingEndnote2Presenter.h new file mode 100644 index 000000000..4b4ef7bff --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingEndnote2Presenter.h @@ -0,0 +1,32 @@ +#ifndef _TraingEndnote2_PRESENTER_H +#define _TraingEndnote2_PRESENTER_H + +#include "Presenter.h" +#include "TraingEndnote2View.h" + +namespace OHOS +{ + class TraingEndnote2View; + + class TraingEndnote2Presenter : public Presenter, + public UIView::OnClickListener, + public UIView::OnDragListener + { + public: + TraingEndnote2Presenter(); + virtual ~TraingEndnote2Presenter(); + + void OnStart() override; + void OnPause() override; + void OnResume() override; + void OnStop() override; + static TraingEndnote2Presenter *GetInstance(); + + private: + // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承; + bool OnClick(UIView &view, const ClickEvent &event) override; + bool OnDrag(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/TraingEndnote2View.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingEndnote2View.h new file mode 100644 index 000000000..baee7a423 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingEndnote2View.h @@ -0,0 +1,66 @@ +#ifndef _TraingEndnote2_VIEW_H +#define _TraingEndnote2_VIEW_H + +#include "BaseView.h" +#include "View.h" +#include +#include "components/ui_view_group.h" +#include "components/ui_label.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 "TraingEndnote2Presenter.h" +namespace OHOS +{ +#define BUTTONNO "button1" +#define BUTTONYES "button2" + + class TraingEndnote2Presenter; + class TraingEndnote2View : public View + { + + public: + TraingEndnote2View(); + virtual ~TraingEndnote2View(); + static TraingEndnote2View *GetInstance(void); + + void OnStart() override; + void OnSetUpView() override; + void OnTearDownView() override; + void OnStop() override; + void InitView(); + void DeInit(); + void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize); + void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId); + void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath); + void InitList(); + void PreLoad(void); + + // 通过函数改变 + void SetLabel(); + void SetButton(); + + private: + UIView::OnDragListener *draglistener{nullptr}; + TraingEndnote2View(TraingEndnote2View &&) = delete; + TraingEndnote2View &operator=(TraingEndnote2View &&) = delete; + + UIViewGroup *container_ = nullptr; + + UILabel *label1_ = nullptr; + UILabel *label2_ = nullptr; + + UIButton *button1_ = nullptr; + UIButton *button2_ = nullptr; + bool viewiInitStatus{false}; + }; +} // namespace OHOS +#endif // TraingEndnote2_PRESENTER_H diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingEndnotePresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingEndnotePresenter.h new file mode 100644 index 000000000..428b3d038 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingEndnotePresenter.h @@ -0,0 +1,32 @@ +#ifndef _TraingEndnote_PRESENTER_H +#define _TraingEndnote_PRESENTER_H + +#include "Presenter.h" +#include "TraingEndnoteView.h" + +namespace OHOS +{ + class TraingEndnoteView; + + class TraingEndnotePresenter : public Presenter, + public UIView::OnClickListener, + public UIView::OnDragListener + { + public: + TraingEndnotePresenter(); + virtual ~TraingEndnotePresenter(); + + void OnStart() override; + void OnPause() override; + void OnResume() override; + void OnStop() override; + static TraingEndnotePresenter *GetInstance(); + + private: + // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承; + bool OnClick(UIView &view, const ClickEvent &event) override; + bool OnDrag(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/TraingEndnoteView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingEndnoteView.h new file mode 100644 index 000000000..243b52157 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingEndnoteView.h @@ -0,0 +1,66 @@ +#ifndef _TraingEndnote_VIEW_H +#define _TraingEndnote_VIEW_H + +#include "BaseView.h" +#include "View.h" +#include +#include "components/ui_view_group.h" +#include "components/ui_label.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 "TraingEndnotePresenter.h" +namespace OHOS +{ +#define BUTTONNO "button1" +#define BUTTONYES "button2" + + class TraingEndnotePresenter; + class TraingEndnoteView : public View + { + + public: + TraingEndnoteView(); + virtual ~TraingEndnoteView(); + static TraingEndnoteView *GetInstance(void); + + void OnStart() override; + void OnSetUpView() override; + void OnTearDownView() override; + void OnStop() override; + void InitView(); + void DeInit(); + void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize); + void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId); + void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath); + void InitList(); + void PreLoad(void); + + // 通过函数改变 + void SetLabel(); + void SetButton(); + + private: + UIView::OnDragListener *draglistener{nullptr}; + TraingEndnoteView(TraingEndnoteView &&) = delete; + TraingEndnoteView &operator=(TraingEndnoteView &&) = delete; + + UIViewGroup *container_ = nullptr; + + UILabel *label1_ = nullptr; + UILabel *label2_ = nullptr; + + UIButton *button1_ = nullptr; + UIButton *button2_ = nullptr; + bool viewiInitStatus{false}; + }; +} // namespace OHOS +#endif // TraingEndnote_PRESENTER_H diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingGPSPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingGPSPresenter.h new file mode 100644 index 000000000..aa6055eec --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingGPSPresenter.h @@ -0,0 +1,33 @@ +#ifndef _TraingGPS_PRESENTER_H +#define _TraingGPS_PRESENTER_H + +#include "Presenter.h" +#include "TraingGPSView.h" + +namespace OHOS +{ + class TraingGPSView; + + class TraingGPSPresenter : public Presenter, + public UIView::OnClickListener, + public UIView::OnDragListener + { + public: + TraingGPSPresenter(); + virtual ~TraingGPSPresenter(); + + void OnStart() override; + void OnPause() override; + void OnResume() override; + void OnStop() override; + + static TraingGPSPresenter *GetInstance(); + + private: + // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承; + bool OnClick(UIView &view, const ClickEvent &event) override; + bool OnDrag(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/TraingGPSView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingGPSView.h new file mode 100644 index 000000000..4fa461646 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingGPSView.h @@ -0,0 +1,64 @@ +#ifndef _TraingGPS_VIEW_H +#define _TraingGPS_VIEW_H + +#include "BaseView.h" +#include "View.h" +#include +#include "components/ui_view_group.h" +#include "components/ui_label.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 "TraingGPSPresenter.h" +namespace OHOS +{ +#define BUTTONGO "button1" +#define BUTTONSET "button2" + + class TraingGPSPresenter; + class TraingGPSView : public View + { + + public: + TraingGPSView(); + virtual ~TraingGPSView(); + static TraingGPSView *GetInstance(void); + + void OnStart() override; + void OnSetUpView() override; + void OnTearDownView() override; + void OnStop() override; + void InitView(); + void DeInit(); + void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize); + void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId); + void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath); + void InitList(); + void PreLoad(void); + + private: + UIView::OnDragListener *draglistener{nullptr}; + TraingGPSView(TraingGPSView &&) = delete; + TraingGPSView &operator=(TraingGPSView &&) = delete; + + UIViewGroup *container_ = nullptr; + UILabel *label1_ = nullptr; + UILabel *label2_ = nullptr; + UILabel *label3_ = nullptr; + UILabel *label4_ = nullptr; + UIButton *button1_ = nullptr; + UIButton *button2_ = nullptr; + UIImageView *image1_ = nullptr; + UIImageView *image2_ = nullptr; + bool viewiInitStatus{false}; + }; +} // namespace OHOS +#endif // TraingGPS_PRESENTER_H diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingGPSbackPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingGPSbackPresenter.h new file mode 100644 index 000000000..306df225a --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingGPSbackPresenter.h @@ -0,0 +1,33 @@ +#ifndef _TraingGPSback_PRESENTER_H +#define _TraingGPSback_PRESENTER_H + +#include "Presenter.h" +#include "TraingGPSbackView.h" + +namespace OHOS +{ + class TraingGPSbackView; + + class TraingGPSbackPresenter : public Presenter, + public UIView::OnClickListener, + public UIView::OnDragListener + { + public: + TraingGPSbackPresenter(); + virtual ~TraingGPSbackPresenter(); + + void OnStart() override; + void OnPause() override; + void OnResume() override; + void OnStop() override; + + static TraingGPSbackPresenter *GetInstance(); + + private: + // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承; + bool OnClick(UIView &view, const ClickEvent &event) override; + bool OnDrag(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/TraingGPSbackView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingGPSbackView.h new file mode 100644 index 000000000..cf28aa9a8 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingGPSbackView.h @@ -0,0 +1,59 @@ +#ifndef _TraingGPSback_VIEW_H +#define _TraingGPSback_VIEW_H + +#include "BaseView.h" +#include "View.h" +#include +#include "components/ui_view_group.h" +#include "components/ui_label.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 "TraingGPSbackPresenter.h" +namespace OHOS +{ +#define BUTTONOK "button1" + + + class TraingGPSbackPresenter; + class TraingGPSbackView : public View + { + + public: + TraingGPSbackView(); + virtual ~TraingGPSbackView(); + static TraingGPSbackView *GetInstance(void); + + void OnStart() override; + void OnSetUpView() override; + void OnTearDownView() override; + void OnStop() override; + void InitView(); + void DeInit(); + void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize); + void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId); + void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath); + void InitList(); + void PreLoad(void); + + private: + UIView::OnDragListener *draglistener{nullptr}; + TraingGPSbackView(TraingGPSbackView &&) = delete; + TraingGPSbackView &operator=(TraingGPSbackView &&) = delete; + UIViewGroup *container_ = nullptr; + UILabel *label1_ = nullptr; + UILabel *label2_ = nullptr; + UIButton *button1_ = nullptr; + UIImageView *image1_ = nullptr; + bool viewiInitStatus{false}; + }; +} // namespace OHOS +#endif // TraingGPSback_PRESENTER_H diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingGPSlackPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingGPSlackPresenter.h new file mode 100644 index 000000000..21713d7ac --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingGPSlackPresenter.h @@ -0,0 +1,33 @@ +#ifndef _TraingGPSlack_PRESENTER_H +#define _TraingGPSlack_PRESENTER_H + +#include "Presenter.h" +#include "TraingGPSlackView.h" + +namespace OHOS +{ + class TraingGPSlackView; + + class TraingGPSlackPresenter : public Presenter, + public UIView::OnClickListener, + public UIView::OnDragListener + { + public: + TraingGPSlackPresenter(); + virtual ~TraingGPSlackPresenter(); + + void OnStart() override; + void OnPause() override; + void OnResume() override; + void OnStop() override; + + static TraingGPSlackPresenter *GetInstance(); + + private: + // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承; + bool OnClick(UIView &view, const ClickEvent &event) override; + bool OnDrag(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/TraingGPSlackView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingGPSlackView.h new file mode 100644 index 000000000..c96f41e18 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingGPSlackView.h @@ -0,0 +1,64 @@ +#ifndef _TraingGPSlack_VIEW_H +#define _TraingGPSlack_VIEW_H + +#include "BaseView.h" +#include "View.h" +#include +#include "components/ui_view_group.h" +#include "components/ui_label.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 "TraingGPSlackPresenter.h" +namespace OHOS +{ +#define BUTTONGO "button1" +#define BUTTONSET "button2" + + class TraingGPSlackPresenter; + class TraingGPSlackView : public View + { + + public: + TraingGPSlackView(); + virtual ~TraingGPSlackView(); + static TraingGPSlackView *GetInstance(void); + + void OnStart() override; + void OnSetUpView() override; + void OnTearDownView() override; + void OnStop() override; + void InitView(); + void DeInit(); + void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize); + void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId); + void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath); + void InitList(); + void PreLoad(void); + + private: + UIView::OnDragListener *draglistener{nullptr}; + TraingGPSlackView(TraingGPSlackView &&) = delete; + TraingGPSlackView &operator=(TraingGPSlackView &&) = delete; + + UIViewGroup *container_ = nullptr; + UILabel *label1_ = nullptr; + UILabel *label2_ = nullptr; + UILabel *label3_ = nullptr; + UILabel *label4_ = nullptr; + UIButton *button1_ = nullptr; + UIButton *button2_ = nullptr; + UIImageView *image1_ = nullptr; + UIImageView *image2_ = nullptr; + bool viewiInitStatus{false}; + }; +} // namespace OHOS +#endif // TraingGPSlack_PRESENTER_H diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingGPSlostPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingGPSlostPresenter.h new file mode 100644 index 000000000..c757e23cb --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingGPSlostPresenter.h @@ -0,0 +1,33 @@ +#ifndef _TraingGPSlost_PRESENTER_H +#define _TraingGPSlost_PRESENTER_H + +#include "Presenter.h" +#include "TraingGPSlostView.h" + +namespace OHOS +{ + class TraingGPSlostView; + + class TraingGPSlostPresenter : public Presenter, + public UIView::OnClickListener, + public UIView::OnDragListener + { + public: + TraingGPSlostPresenter(); + virtual ~TraingGPSlostPresenter(); + + void OnStart() override; + void OnPause() override; + void OnResume() override; + void OnStop() override; + + static TraingGPSlostPresenter *GetInstance(); + + private: + // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承; + bool OnClick(UIView &view, const ClickEvent &event) override; + bool OnDrag(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/TraingGPSlostView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingGPSlostView.h new file mode 100644 index 000000000..d61e398eb --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingGPSlostView.h @@ -0,0 +1,59 @@ +#ifndef _TraingGPSlost_VIEW_H +#define _TraingGPSlost_VIEW_H + +#include "BaseView.h" +#include "View.h" +#include +#include "components/ui_view_group.h" +#include "components/ui_label.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 "TraingGPSlostPresenter.h" +namespace OHOS +{ +#define BUTTONOK "button1" + + + class TraingGPSlostPresenter; + class TraingGPSlostView : public View + { + + public: + TraingGPSlostView(); + virtual ~TraingGPSlostView(); + static TraingGPSlostView *GetInstance(void); + + void OnStart() override; + void OnSetUpView() override; + void OnTearDownView() override; + void OnStop() override; + void InitView(); + void DeInit(); + void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize); + void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId); + void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath); + void InitList(); + void PreLoad(void); + + private: + UIView::OnDragListener *draglistener{nullptr}; + TraingGPSlostView(TraingGPSlostView &&) = delete; + TraingGPSlostView &operator=(TraingGPSlostView &&) = delete; + UIViewGroup *container_ = nullptr; + UILabel *label1_ = nullptr; + UILabel *label2_ = nullptr; + UIButton *button1_ = nullptr; + UIImageView *image1_ = nullptr; + bool viewiInitStatus{false}; + }; +} // namespace OHOS +#endif // TraingGPSlost_PRESENTER_H diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingGPSnotePresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingGPSnotePresenter.h new file mode 100644 index 000000000..cbaf8eafa --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingGPSnotePresenter.h @@ -0,0 +1,33 @@ +#ifndef _TraingGPSnote_PRESENTER_H +#define _TraingGPSnote_PRESENTER_H + +#include "Presenter.h" +#include "TraingGPSnoteView.h" + +namespace OHOS +{ + class TraingGPSnoteView; + + class TraingGPSnotePresenter : public Presenter, + public UIView::OnClickListener, + public UIView::OnDragListener + { + public: + TraingGPSnotePresenter(); + virtual ~TraingGPSnotePresenter(); + + void OnStart() override; + void OnPause() override; + void OnResume() override; + void OnStop() override; + + static TraingGPSnotePresenter *GetInstance(); + + private: + // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承; + bool OnClick(UIView &view, const ClickEvent &event) override; + bool OnDrag(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/TraingGPSnoteView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingGPSnoteView.h new file mode 100644 index 000000000..555f4c4ca --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingGPSnoteView.h @@ -0,0 +1,68 @@ +#ifndef _TraingGPSnote_VIEW_H +#define _TraingGPSnote_VIEW_H + +#include "BaseView.h" +#include "View.h" +#include +#include "components/ui_view_group.h" +#include "components/ui_label.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 "TraingGPSnotePresenter.h" +namespace OHOS +{ +#define BUTTONBACK "button1" +#define BUTTONGO "button2" + + class TraingGPSnotePresenter; + class TraingGPSnoteView : public View + { + + public: + TraingGPSnoteView(); + virtual ~TraingGPSnoteView(); + static TraingGPSnoteView *GetInstance(void); + + void OnStart() override; + void OnSetUpView() override; + void OnTearDownView() override; + void OnStop() override; + void InitView(); + void DeInit(); + void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize); + void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId); + void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath); + void InitList(); + void PreLoad(void); + + private: + UIView::OnDragListener *draglistener{nullptr}; + TraingGPSnoteView(TraingGPSnoteView &&) = delete; + TraingGPSnoteView &operator=(TraingGPSnoteView &&) = delete; + + UIViewGroup *container_ = nullptr; + UIScrollView *scrollView1_ = nullptr; + + UILabel *label1_ = nullptr; + UILabel *label2_ = nullptr; + UILabel *label3_ = nullptr; + UILabel *label4_ = nullptr; + + UIButton *button1_ = nullptr; + UIButton *button2_ = nullptr; + + UIImageView *image1_ = nullptr; + UIImageView *image2_ = nullptr; + bool viewiInitStatus{false}; + }; +} // namespace OHOS +#endif // TraingGPSnote_PRESENTER_H diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingGPSsetPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingGPSsetPresenter.h new file mode 100644 index 000000000..99e9c48e1 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingGPSsetPresenter.h @@ -0,0 +1,33 @@ +#ifndef _TraingGPSset_PRESENTER_H +#define _TraingGPSset_PRESENTER_H + +#include "Presenter.h" +#include "TraingGPSsetView.h" + +namespace OHOS +{ + class TraingGPSsetView; + + class TraingGPSsetPresenter : public Presenter, + public UIView::OnClickListener, + public UIView::OnDragListener + { + public: + TraingGPSsetPresenter(); + virtual ~TraingGPSsetPresenter(); + + void OnStart() override; + void OnPause() override; + void OnResume() override; + void OnStop() override; + + static TraingGPSsetPresenter *GetInstance(); + + private: + // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承; + bool OnClick(UIView &view, const ClickEvent &event) override; + bool OnDrag(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/TraingGPSsetView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingGPSsetView.h new file mode 100644 index 000000000..550339843 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingGPSsetView.h @@ -0,0 +1,79 @@ +#ifndef _TraingGPSset_VIEW_H +#define _TraingGPSset_VIEW_H + +#include "BaseView.h" +#include "View.h" +#include +#include "components/ui_view_group.h" +#include "components/ui_label.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 "TraingGPSsetPresenter.h" +namespace OHOS +{ +#define BUTTONTIME "button1" +#define BUTTONMIL "button2" +#define BUTTONCALULI "button3" +#define BUTTONWALK "button4" + + class TraingGPSsetPresenter; + class TraingGPSsetView : public View + { + + public: + TraingGPSsetView(); + virtual ~TraingGPSsetView(); + static TraingGPSsetView *GetInstance(void); + + void OnStart() override; + void OnSetUpView() override; + void OnTearDownView() override; + void OnStop() override; + void InitView(); + void DeInit(); + void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize); + void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId); + void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath); + void InitList(); + void PreLoad(void); + + private: + UIView::OnDragListener *draglistener{nullptr}; + TraingGPSsetView(TraingGPSsetView &&) = delete; + TraingGPSsetView &operator=(TraingGPSsetView &&) = delete; + + UIViewGroup *container_ = nullptr; + UIScrollView *scrollView1_ = nullptr; + + UILabel *label1_ = nullptr; + UILabel *label2_ = nullptr; + UILabel *label3_ = nullptr; + UILabel *label4_ = nullptr; + UILabel *label5_ = nullptr; + + UIButton *button1_ = nullptr; + UIButton *button2_ = nullptr; + UIButton *button3_ = nullptr; + UIButton *button4_ = nullptr; + + UIImageView *image1_ = nullptr; + UIImageView *image2_ = nullptr; + UIImageView *image3_ = nullptr; + UIImageView *image4_ = nullptr; + + UIList *list1_ = nullptr; + IconAdapter *list1adapter_ = nullptr; + List *list1data_ = nullptr; + bool viewiInitStatus{false}; + }; +} // namespace OHOS +#endif // TraingGPSset_PRESENTER_H diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingLimitPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingLimitPresenter.h new file mode 100644 index 000000000..6a2099113 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingLimitPresenter.h @@ -0,0 +1,33 @@ +#ifndef _TraingLimit_PRESENTER_H +#define _TraingLimit_PRESENTER_H + +#include "Presenter.h" +#include "TraingLimitView.h" + +namespace OHOS +{ + class TraingLimitView; + + class TraingLimitPresenter : public Presenter, + public UIView::OnClickListener, + public UIView::OnDragListener + { + public: + TraingLimitPresenter(); + virtual ~TraingLimitPresenter(); + + void OnStart() override; + void OnPause() override; + void OnResume() override; + void OnStop() override; + + static TraingLimitPresenter *GetInstance(); + + private: + // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承; + bool OnClick(UIView &view, const ClickEvent &event) override; + bool OnDrag(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/TraingLimitView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingLimitView.h new file mode 100644 index 000000000..604050d87 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingLimitView.h @@ -0,0 +1,83 @@ +#ifndef _TraingLimit_VIEW_H +#define _TraingLimit_VIEW_H + +#include "BaseView.h" +#include "View.h" +#include +#include "components/ui_view_group.h" +#include "components/ui_label.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 "TraingLimitPresenter.h" +namespace OHOS +{ +#define BUTTON1 "button1" +#define BUTTON2 "button2" +#define BUTTON3 "button3" +#define BUTTON4 "button4" +#define BUTTON5 "button5" +#define BUTTON6 "button6" +#define BUTTON7 "button7" +#define BUTTON8 "button8" + + class TraingLimitPresenter; + class TraingLimitView : public View + { + + public: + TraingLimitView(); + virtual ~TraingLimitView(); + static TraingLimitView *GetInstance(void); + + void OnStart() override; + void OnSetUpView() override; + void OnTearDownView() override; + void OnStop() override; + void InitView(); + void DeInit(); + void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize); + void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId); + void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath); + void InitList(); + void PreLoad(void); + + private: + UIView::OnDragListener *draglistener{nullptr}; + TraingLimitView(TraingLimitView &&) = delete; + TraingLimitView &operator=(TraingLimitView &&) = delete; + + UIViewGroup *container_ = nullptr; + UIScrollView *scrollView1_ = nullptr; + UILabel *label1_ = nullptr; + UIImageView *image1_ = nullptr; + UIImageView *image2_ = nullptr; + UIImageView *image3_ = nullptr; + UIImageView *image4_ = nullptr; + UIImageView *image5_ = nullptr; + UIImageView *image6_ = nullptr; + UIImageView *image7_ = nullptr; + UIImageView *image8_ = nullptr; + UIButton *button1_ = nullptr; + UIButton *button2_ = nullptr; + UIButton *button3_ = nullptr; + UIButton *button4_ = nullptr; + UIButton *button5_ = nullptr; + UIButton *button6_ = nullptr; + UIButton *button7_ = nullptr; + UIButton *button8_ = nullptr; + UIList *list1_ = nullptr; + IconAdapter *list1adapter_ = nullptr; + List *list1data_ = nullptr; + bool viewiInitStatus{false}; + }; +} // namespace OHOS +#endif // TraingLimit_PRESENTER_H diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingMorePresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingMorePresenter.h new file mode 100644 index 000000000..8685e839e --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingMorePresenter.h @@ -0,0 +1,33 @@ +#ifndef _TraingMore_PRESENTER_H +#define _TraingMore_PRESENTER_H + +#include "Presenter.h" +#include "TraingMoreView.h" + +namespace OHOS +{ + class TraingMoreView; + + class TraingMorePresenter : public Presenter, + public UIView::OnClickListener, + public UIView::OnDragListener + { + public: + TraingMorePresenter(); + virtual ~TraingMorePresenter(); + + void OnStart() override; + void OnPause() override; + void OnResume() override; + void OnStop() override; + + static TraingMorePresenter *GetInstance(); + + private: + // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承; + bool OnClick(UIView &view, const ClickEvent &event) override; + bool OnDrag(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/TraingMoreView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingMoreView.h new file mode 100644 index 000000000..5e17f88c2 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingMoreView.h @@ -0,0 +1,83 @@ +#ifndef _TraingMore_VIEW_H +#define _TraingMore_VIEW_H + +#include "BaseView.h" +#include "View.h" +#include +#include "components/ui_view_group.h" +#include "components/ui_label.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 "TraingMorePresenter.h" +namespace OHOS +{ +#define BUTTON_FITNESS "button1" // 健身 +#define BUTTON_DANCE "button2" // 舞蹈 +#define BUTTON_REST "button3" // 休闲运动 +#define BUTTON_BALL "button4" // 球类 +#define BUTTON_SWIMMING "button5" // 水上运动 +#define BUTTON_ICE "button6" // 冰上运动 +#define BUTTON_LIMIT "button7" // 极限运动 +#define BUTTON_OTHER "button8" // 其他 + + class TraingMorePresenter; + class TraingMoreView : public View + { + + public: + TraingMoreView(); + virtual ~TraingMoreView(); + static TraingMoreView *GetInstance(void); + + void OnStart() override; + void OnSetUpView() override; + void OnTearDownView() override; + void OnStop() override; + void InitView(); + void DeInit(); + void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize); + void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId); + void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath); + void InitList(); + void PreLoad(void); + + private: + UIView::OnDragListener *draglistener{nullptr}; + TraingMoreView(TraingMoreView &&) = delete; + TraingMoreView &operator=(TraingMoreView &&) = delete; + + UIViewGroup *container_ = nullptr; + UIScrollView *scrollView1_ = nullptr; + UILabel *label1_ = nullptr; + UIImageView *image1_ = nullptr; + UIImageView *image2_ = nullptr; + UIImageView *image3_ = nullptr; + UIImageView *image4_ = nullptr; + UIImageView *image5_ = nullptr; + UIImageView *image6_ = nullptr; + UIImageView *image7_ = nullptr; + UIImageView *image8_ = nullptr; + UIButton *button1_ = nullptr; + UIButton *button2_ = nullptr; + UIButton *button3_ = nullptr; + UIButton *button4_ = nullptr; + UIButton *button5_ = nullptr; + UIButton *button6_ = nullptr; + UIButton *button7_ = nullptr; + UIButton *button8_ = nullptr; + UIList *list1_ = nullptr; + IconAdapter *list1adapter_ = nullptr; + List *list1data_ = nullptr; + bool viewiInitStatus{false}; + }; +} // namespace OHOS +#endif // TraingMore_PRESENTER_H diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingNomalPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingNomalPresenter.h new file mode 100644 index 000000000..9d3d9bb7b --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingNomalPresenter.h @@ -0,0 +1,33 @@ +#ifndef _TraingNomal_PRESENTER_H +#define _TraingNomal_PRESENTER_H + +#include "Presenter.h" +#include "TraingNomalView.h" + +namespace OHOS +{ + class TraingNomalView; + + class TraingNomalPresenter : public Presenter, + public UIView::OnClickListener, + public UIView::OnDragListener + { + public: + TraingNomalPresenter(); + virtual ~TraingNomalPresenter(); + + void OnStart() override; + void OnPause() override; + void OnResume() override; + void OnStop() override; + + static TraingNomalPresenter *GetInstance(); + + private: + // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承; + bool OnClick(UIView &view, const ClickEvent &event) override; + bool OnDrag(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/TraingNomalView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingNomalView.h new file mode 100644 index 000000000..0d6ba03fd --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingNomalView.h @@ -0,0 +1,60 @@ +#ifndef _TraingNomal_VIEW_H +#define _TraingNomal_VIEW_H + +#include "BaseView.h" +#include "View.h" +#include +#include "components/ui_view_group.h" +#include "components/ui_label.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 "TraingNomalPresenter.h" +namespace OHOS +{ +#define BUTTONGO "button1" +#define BUTTONSET "button2" + + class TraingNomalPresenter; + class TraingNomalView : public View + { + + public: + TraingNomalView(); + virtual ~TraingNomalView(); + static TraingNomalView *GetInstance(void); + + void OnStart() override; + void OnSetUpView() override; + void OnTearDownView() override; + void OnStop() override; + void InitView(); + void DeInit(); + void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize); + void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId); + void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath); + void InitList(); + void PreLoad(void); + + private: + UIView::OnDragListener *draglistener{nullptr}; + TraingNomalView(TraingNomalView &&) = delete; + TraingNomalView &operator=(TraingNomalView &&) = delete; + + UIViewGroup *container_ = nullptr; + UILabel *label1_ = nullptr; + UILabel *label2_ = nullptr; + UIButton *button1_ = nullptr; + UIButton *button2_ = nullptr; + bool viewiInitStatus{false}; + }; +} // namespace OHOS +#endif // TraingNomal_PRESENTER_H diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingPresenter.h new file mode 100644 index 000000000..6759a3bc8 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingPresenter.h @@ -0,0 +1,33 @@ +#ifndef _Traing_PRESENTER_H +#define _Traing_PRESENTER_H + +#include "Presenter.h" +#include "TraingView.h" + +namespace OHOS +{ + class TraingView; + + class TraingPresenter : public Presenter, + public UIView::OnClickListener, + public UIView::OnDragListener + { + public: + TraingPresenter(); + virtual ~TraingPresenter(); + + void OnStart() override; + void OnPause() override; + void OnResume() override; + void OnStop() override; + + static TraingPresenter *GetInstance(); + + private: + // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承; + bool OnClick(UIView &view, const ClickEvent &event) override; + bool OnDrag(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/TraingSetCaluliPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetCaluliPresenter.h new file mode 100644 index 000000000..5706845a7 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetCaluliPresenter.h @@ -0,0 +1,33 @@ +#ifndef _TraingSetCaluli_PRESENTER_H +#define _TraingSetCaluli_PRESENTER_H + +#include "Presenter.h" +#include "TraingSetCaluliView.h" + +namespace OHOS +{ + class TraingSetCaluliView; + + class TraingSetCaluliPresenter : public Presenter, + public UIView::OnClickListener, + public UIView::OnDragListener + { + public: + TraingSetCaluliPresenter(); + virtual ~TraingSetCaluliPresenter(); + + void OnStart() override; + void OnPause() override; + void OnResume() override; + void OnStop() override; + + static TraingSetCaluliPresenter *GetInstance(); + + private: + // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承; + bool OnClick(UIView &view, const ClickEvent &event) override; + bool OnDrag(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/TraingSetCaluliView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetCaluliView.h new file mode 100644 index 000000000..2b9f128b3 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetCaluliView.h @@ -0,0 +1,62 @@ +#ifndef _TraingSetCaluli_VIEW_H +#define _TraingSetCaluli_VIEW_H + +#include "BaseView.h" +#include "View.h" +#include +#include "components/ui_view_group.h" +#include "components/ui_label.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 "components/ui_picker.h" + +#include "TraingSetCaluliPresenter.h" +namespace OHOS +{ +#define BUTTONOK "button1" + + + class TraingSetCaluliPresenter; + class TraingSetCaluliView : public View + { + + public: + TraingSetCaluliView(); + virtual ~TraingSetCaluliView(); + static TraingSetCaluliView *GetInstance(void); + + void OnStart() override; + void OnSetUpView() override; + void OnTearDownView() override; + void OnStop() override; + void InitView(); + void DeInit(); + void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize); + void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId); + void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath); + 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}; + TraingSetCaluliView(TraingSetCaluliView &&) = delete; + TraingSetCaluliView &operator=(TraingSetCaluliView &&) = delete; + + UIViewGroup *container_ = nullptr; + UILabel *label1_ = nullptr; + UIButton *button1_ = nullptr; + UIPicker *uiPicker1_ = nullptr; + + bool viewiInitStatus{false}; + }; +} // namespace OHOS +#endif // TraingSetCaluli_PRESENTER_H diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetDistPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetDistPresenter.h new file mode 100644 index 000000000..23af5de59 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetDistPresenter.h @@ -0,0 +1,33 @@ +#ifndef _TraingSetDist_PRESENTER_H +#define _TraingSetDist_PRESENTER_H + +#include "Presenter.h" +#include "TraingSetDistView.h" + +namespace OHOS +{ + class TraingSetDistView; + + class TraingSetDistPresenter : public Presenter, + 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; + }; +} // 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 new file mode 100644 index 000000000..93807d2b9 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetDistView.h @@ -0,0 +1,63 @@ + +#ifndef _TraingSetDist_VIEW_H +#define _TraingSetDist_VIEW_H + +#include "BaseView.h" +#include "View.h" +#include +#include "components/ui_view_group.h" +#include "components/ui_label.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 "components/ui_picker.h" + +#include "TraingSetDistPresenter.h" +namespace OHOS +{ +#define BUTTONOK "button1" + + + class TraingSetDistPresenter; + class TraingSetDistView : public View + { + + 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 InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize); + void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId); + void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath); + 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; + UILabel *label1_ = nullptr; + UIButton *button1_ = nullptr; + UIPicker *uiPicker1_ = nullptr; + + bool viewiInitStatus{false}; + }; +} // namespace OHOS +#endif // TraingSetDist_PRESENTER_H diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetPresenter.h new file mode 100644 index 000000000..7e650aa3c --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetPresenter.h @@ -0,0 +1,33 @@ +#ifndef _TraingSet_PRESENTER_H +#define _TraingSet_PRESENTER_H + +#include "Presenter.h" +#include "TraingSetView.h" + +namespace OHOS +{ + class TraingSetView; + + class TraingSetPresenter : public Presenter, + public UIView::OnClickListener, + public UIView::OnDragListener + { + public: + TraingSetPresenter(); + virtual ~TraingSetPresenter(); + + void OnStart() override; + void OnPause() override; + void OnResume() override; + void OnStop() override; + + static TraingSetPresenter *GetInstance(); + + private: + // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承; + bool OnClick(UIView &view, const ClickEvent &event) override; + bool OnDrag(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/TraingSetSeptPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetSeptPresenter.h new file mode 100644 index 000000000..74034c068 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetSeptPresenter.h @@ -0,0 +1,33 @@ +#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; + }; +} // 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 new file mode 100644 index 000000000..a57c92d66 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetSeptView.h @@ -0,0 +1,63 @@ + +#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_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 "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 InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize); + void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId); + void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath); + 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; + UILabel *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/TraingSetTimePresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetTimePresenter.h new file mode 100644 index 000000000..cacd63a8c --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetTimePresenter.h @@ -0,0 +1,33 @@ +#ifndef _TraingSetTime_PRESENTER_H +#define _TraingSetTime_PRESENTER_H + +#include "Presenter.h" +#include "TraingSetTimeView.h" + +namespace OHOS +{ + class TraingSetTimeView; + + class TraingSetTimePresenter : public Presenter, + public UIView::OnClickListener, + public UIView::OnDragListener + { + public: + TraingSetTimePresenter(); + virtual ~TraingSetTimePresenter(); + + void OnStart() override; + void OnPause() override; + void OnResume() override; + void OnStop() override; + + static TraingSetTimePresenter *GetInstance(); + + private: + // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承; + bool OnClick(UIView &view, const ClickEvent &event) override; + bool OnDrag(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/TraingSetTimeView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetTimeView.h new file mode 100644 index 000000000..2256e9896 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetTimeView.h @@ -0,0 +1,62 @@ +#ifndef _TraingSetTime_VIEW_H +#define _TraingSetTime_VIEW_H + +#include "BaseView.h" +#include "View.h" +#include +#include "components/ui_view_group.h" +#include "components/ui_label.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 "components/ui_picker.h" + +#include "TraingSetTimePresenter.h" +namespace OHOS +{ +#define BUTTONOK "button1" + + + class TraingSetTimePresenter; + class TraingSetTimeView : public View + { + + public: + TraingSetTimeView(); + virtual ~TraingSetTimeView(); + static TraingSetTimeView *GetInstance(void); + + void OnStart() override; + void OnSetUpView() override; + void OnTearDownView() override; + void OnStop() override; + void InitView(); + void DeInit(); + void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize); + void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId); + void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath); + 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}; + TraingSetTimeView(TraingSetTimeView &&) = delete; + TraingSetTimeView &operator=(TraingSetTimeView &&) = delete; + + UIViewGroup *container_ = nullptr; + UILabel *label1_ = nullptr; + UIButton *button1_ = nullptr; + UIPicker *uiPicker1_ = nullptr; + + bool viewiInitStatus{false}; + }; +} // namespace OHOS +#endif // TraingSetTime_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 new file mode 100644 index 000000000..a78a94198 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingSetView.h @@ -0,0 +1,71 @@ +#ifndef _TraingSet_VIEW_H +#define _TraingSet_VIEW_H + +#include "BaseView.h" +#include "View.h" +#include +#include "components/ui_view_group.h" +#include "components/ui_label.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 "TraingSetPresenter.h" +namespace OHOS +{ +#define BUTTONTIME "button1" +#define BUTTONCALULI "button2" + + class TraingSetPresenter; + class TraingSetView : public View + { + + public: + TraingSetView(); + virtual ~TraingSetView(); + static TraingSetView *GetInstance(void); + + void OnStart() override; + void OnSetUpView() override; + void OnTearDownView() override; + void OnStop() override; + void InitView(); + void DeInit(); + void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize); + void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId); + void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath); + void InitList(); + void PreLoad(void); + + private: + UIView::OnDragListener *draglistener{nullptr}; + TraingSetView(TraingSetView &&) = delete; + TraingSetView &operator=(TraingSetView &&) = delete; + + UIViewGroup *container_ = nullptr; + + UILabel *label1_ = nullptr; + UILabel *label2_ = nullptr; + UILabel *label3_ = nullptr; + UILabel *label4_ = nullptr; + UILabel *label5_ = nullptr; + + UIImageView *image1_ = nullptr; + UIImageView *image2_ = nullptr; + UIImageView *image3_ = nullptr; + UIImageView *image4_ = nullptr; + + UIButton *button1_ = nullptr; + UIButton *button2_ = nullptr; + + bool viewiInitStatus{false}; + }; +} // namespace OHOS +#endif // TraingSet_PRESENTER_H diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingStrongPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingStrongPresenter.h new file mode 100644 index 000000000..b69a7c6cb --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingStrongPresenter.h @@ -0,0 +1,33 @@ +#ifndef _TraingStrong_PRESENTER_H +#define _TraingStrong_PRESENTER_H + +#include "Presenter.h" +#include "TraingStrongView.h" + +namespace OHOS +{ + class TraingStrongView; + + class TraingStrongPresenter : public Presenter, + public UIView::OnClickListener, + public UIView::OnDragListener + { + public: + TraingStrongPresenter(); + virtual ~TraingStrongPresenter(); + + void OnStart() override; + void OnPause() override; + void OnResume() override; + void OnStop() override; + + static TraingStrongPresenter *GetInstance(); + + private: + // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承; + bool OnClick(UIView &view, const ClickEvent &event) override; + bool OnDrag(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/TraingStrongView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingStrongView.h new file mode 100644 index 000000000..8cf7ba91d --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingStrongView.h @@ -0,0 +1,74 @@ +#ifndef _TraingStrong_VIEW_H +#define _TraingStrong_VIEW_H + +#include "BaseView.h" +#include "View.h" +#include +#include "components/ui_view_group.h" +#include "components/ui_label.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 "TraingStrongPresenter.h" +namespace OHOS +{ +#define BUTTONNO "button1" +#define BUTTONYES "button2" + + class TraingStrongPresenter; + class TraingStrongView : public View + { + + public: + TraingStrongView(); + virtual ~TraingStrongView(); + static TraingStrongView *GetInstance(void); + + void OnStart() override; + void OnSetUpView() override; + void OnTearDownView() override; + void OnStop() override; + void InitView(); + void DeInit(); + void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize); + void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId); + void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath); + void InitList(); + void PreLoad(void); + + // 通过函数改变 + void SetLabel(); + void SetButton(); + + private: + UIView::OnDragListener *draglistener{nullptr}; + TraingStrongView(TraingStrongView &&) = delete; + TraingStrongView &operator=(TraingStrongView &&) = delete; + + UIViewGroup *container_ = nullptr; + UIScrollView *scrollView1_ = nullptr; + + UILabel *label1_ = nullptr; + UILabel *label2_ = nullptr; + UILabel *label3_ = nullptr; + UILabel *label4_ = nullptr; + UILabel *label5_ = nullptr; + UILabel *label6_ = nullptr; + + UIImageView *image1_ = nullptr; + UIImageView *image2_ = nullptr; + UIImageView *image3_ = nullptr; + UIImageView *image4_ = nullptr; + UIImageView *image5_ = nullptr; + bool viewiInitStatus{false}; + }; +} // namespace OHOS +#endif // TraingStrong_PRESENTER_H diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingView.h index e52c83238..7ab6f6a33 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingView.h @@ -15,6 +15,7 @@ #include "ohos_types.h" #include "components/ui_card_page.h" +#include "TraingPresenter.h" namespace OHOS { #define BUTTON1 "button1" // 按键1 @@ -22,7 +23,8 @@ namespace OHOS #define BUTTON3 "button3" // 按键3 #define BUTTONMORE "button4" // 按键 更多 - class TraingView : public UICardPage + class TraingPresenter; + class TraingView : public View { public: @@ -30,37 +32,32 @@ namespace OHOS virtual ~TraingView(); static TraingView *GetInstance(void); - bool InitView(); + void OnStart() override; + void OnSetUpView() override; + void OnTearDownView() override; + void OnStop() override; + void Init(); void DeInit(); - bool AddButton(); - bool InitImage(); - bool InitLable(); - - void PreLoad(void) override; - void UnLoad(void) override; - - bool LoadImage(UIImageView *view, uint32_t resId); - bool LoadImage(UILabelButtonExt *view, uint32_t resId); + UIView *GetView(); private: UIView::OnDragListener *draglistener{nullptr}; TraingView(TraingView &&) = delete; TraingView &operator=(TraingView &&) = delete; - UILabelButtonExt *Button1 = nullptr; - UILabelButtonExt *Button2 = nullptr; - UILabelButtonExt *Button3 = nullptr; - UILabelButtonExt *ButtonMore = nullptr; - - UILabel *titleLabel = nullptr; - UIImageView *image1 = nullptr; - UIImageView *image2 = nullptr; - UIImageView *image3 = nullptr; - UIImageView *imagemore = nullptr; - - bool viewiInitStatus{false}; - bool resLoadStatus{false}; + UIViewGroup *container_ = nullptr; + UILabel *label1_ = nullptr; + UIButton *button3_ = nullptr; + UIButton *button4_ = nullptr; + UIButton *button1_ = nullptr; + UIButton *button2_ = nullptr; + UIImageView *image1_ = nullptr; + UILabel *label2_ = nullptr; + UIImageView *image3_ = nullptr; + UILabel *label3_ = nullptr; + UIImageView *image5_ = nullptr; + UILabel *label4_ = nullptr; }; } // namespace OHOS #endif // Traing_PRESENTER_H diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingWinPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingWinPresenter.h new file mode 100644 index 000000000..a034c77fa --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingWinPresenter.h @@ -0,0 +1,33 @@ +#ifndef _TraingWin_PRESENTER_H +#define _TraingWin_PRESENTER_H + +#include "Presenter.h" +#include "TraingWinView.h" + +namespace OHOS +{ + class TraingWinView; + + class TraingWinPresenter : public Presenter, + public UIView::OnClickListener, + public UIView::OnDragListener + { + public: + TraingWinPresenter(); + virtual ~TraingWinPresenter(); + + void OnStart() override; + void OnPause() override; + void OnResume() override; + void OnStop() override; + + static TraingWinPresenter *GetInstance(); + + private: + // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承; + bool OnClick(UIView &view, const ClickEvent &event) override; + bool OnDrag(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/TraingWinView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingWinView.h new file mode 100644 index 000000000..0fc9d8fda --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/include/TraingWinView.h @@ -0,0 +1,64 @@ +#ifndef _TraingWin_VIEW_H +#define _TraingWin_VIEW_H + +#include "BaseView.h" +#include "View.h" +#include +#include "components/ui_view_group.h" +#include "components/ui_label.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 "TraingWinPresenter.h" +namespace OHOS +{ +#define BUTTONOK "button1" + + class TraingWinPresenter; + class TraingWinView : public View + { + + public: + TraingWinView(); + virtual ~TraingWinView(); + static TraingWinView *GetInstance(void); + + void OnStart() override; + void OnSetUpView() override; + void OnTearDownView() override; + void OnStop() override; + void InitView(); + void DeInit(); + + void InitImageAnimatorSource(UIImageAnimatorView *&imageAnimator, const char **imagePaths, int numFrames, int left, int top, int width, int height, const char *viewId,int time); + void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize); + void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId); + void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath); + void InitList(); + void PreLoad(void); + + private: + UIView::OnDragListener *draglistener{nullptr}; + TraingWinView(TraingWinView &&) = delete; + TraingWinView &operator=(TraingWinView &&) = delete; + UIViewGroup *container_ = nullptr; + UILabel *label1_ = nullptr; + UILabel *label2_ = nullptr; + UILabel *label3_ = nullptr; + UILabel *label4_ = nullptr; + UIButton *button1_ = nullptr; + UIImageView *image1_ = nullptr; + UIImageAnimatorView *imageAnimator; + bool viewiInitStatus{false}; + }; + +} // namespace OHOS +#endif // TraingWin_PRESENTER_H diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingCardPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingCardPresenter.cpp new file mode 100644 index 000000000..cac32c0ac --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingCardPresenter.cpp @@ -0,0 +1,79 @@ +#include "AppViewIDs.h" +#include "NativeAbility.h" + +#include +#include +#include +#include "traing/include/TraingCardPresenter.h" +// #include "TraingCardView.h" + +namespace OHOS +{ + + // 当前Presenter属性实例化的内存指针 + static TraingCardPresenter *g_pTraingCardPresenter = nullptr; + + TraingCardPresenter::TraingCardPresenter() + { + + g_pTraingCardPresenter = this; + } + + TraingCardPresenter::~TraingCardPresenter() + { + + g_pTraingCardPresenter = nullptr; + } + + TraingCardPresenter *TraingCardPresenter::GetInstance() + { + + return g_pTraingCardPresenter; + } + + void TraingCardPresenter::OnStart() + { + + Presenter::OnStart(); + } + + void TraingCardPresenter::OnPause(void) + { + + Presenter::OnPause(); + } + + void TraingCardPresenter::OnResume(void) + { + + Presenter::OnResume(); + } + + void TraingCardPresenter::OnStop(void) + { + + Presenter::OnStop(); + } + + bool TraingCardPresenter::OnDrag(UIView &view, const DragEvent &event) + { + + if (event.GetDragDirection() == DragEvent::DIRECTION_BOTTOM_TO_TOP) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGNOMAL); + } + UNUSED(view); + return true; + } + + bool TraingCardPresenter::OnClick(UIView &view, const ClickEvent &event) + { + // 根据控件id查找是哪个控件触发了点击回调 + // if (strcmp(view.GetViewId(), BUTTONSTOP) == 0) + // { + // NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGNOMAL); + // NativeAbility::GetInstance(). + // } + return true; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingCardView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingCardView.cpp new file mode 100644 index 000000000..422454bac --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingCardView.cpp @@ -0,0 +1,224 @@ + +#include "traing/include/TraingCardView.h" +#include "common/image_cache_manager.h" +#include "UiConfig.h" +#include "ui_resource_image.h" +#include +#include "components/ui_button.h" + +#include "common/screen.h" +#include "components/ui_digital_clock.h" +#include "components/ui_label.h" +#include "font/ui_font.h" +namespace OHOS +{ + static const uint16_t LABEL_FONT_SIZE = 200; + static const uint32_t BACK_GROUND_COLOR = 0xfff6f6f6; + static const uint32_t CARD_PAGE_COLOR = 0xffd0d0d0; + + static TraingCardView *g_pTraingCardView{nullptr}; + + TraingCardView::TraingCardView() + { + g_pTraingCardView = this; + } + + TraingCardView::~TraingCardView() + { + DeInit(); + g_pTraingCardView = nullptr; + } + + TraingCardView *TraingCardView::GetInstance() + { + + return g_pTraingCardView; + } + /* + InitLabel:初始化标签 + @param label 标签指针 + @param left 标签左边位置 + @param top 标签顶部位置 + @param width 标签宽度 + @param height 标签高度 + @param viewId 标签的视图 ID + @param text 标签显示的文本 + @param fontName 字体名称 + @param fontSize 字体大小 + */ + void TraingCardView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize) + { + // 检查标签指针是否为空 + if (label == nullptr) + { + label = new UILabel(); + } + // 设置标签的位置和大小 + label->SetPosition(left, top); + label->Resize(width, height); + // 设置标签的视图 ID + label->SetViewId(viewId); + // 设置标签的样式 + label->SetStyle(STYLE_TEXT_FONT, fontSize); + label->SetFont(fontName, fontSize); + // 设置标签的文本和其他属性 + label->SetText(text); + label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label->SetTextColor(Color::GetColorFromRGBA(0x4f, 0xc3, 0x43, 0xff)); + label->SetRollSpeed(0); + // 设置标签可见 + label->SetVisible(true); + } + /* + InitButton:初始化按钮 + @param button 按钮指针 + @param left 按钮左边位置 + @param top 按钮顶部位置 + @param width 按钮宽度 + @param height 按钮高度 + @param viewId 按钮的视图 ID + */ + void TraingCardView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId) + { + // 设置按钮的背景颜色 + uint32_t backgroundColor = 0xff191919; // 默认背景颜色 + uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色 + uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色 + // 创建新按钮(如果当前按钮为空) + if (button == nullptr) + { + button = new UIButton(); + } + button->SetPosition(left, top); + button->Resize(width, height); + button->SetViewId(viewId); + button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor); + button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED); + button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED); + // 设置按钮的点击事件监听器为 TraingCardPresenter 的实例 + button->SetOnClickListener(static_cast(TraingCardPresenter::GetInstance())); + // 设置按钮可见 + button->SetVisible(true); + } + /* + InitImageView:初始化图片 + @param imageView 图片指针 + @param left 图片左边位置 + @param top 图片顶部位置 + @param width 图片宽度 + @param height 图片高度 + @param viewId 图片的视图 ID + @param imagePath 图片路径 + */ + void TraingCardView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath) + { + if (imageView == nullptr) + { + imageView = new UIImageView(); + } + imageView->SetPosition(left, top); + imageView->Resize(width, height); + imageView->SetViewId(viewId); + imageView->SetSrc(imagePath); + imageView->SetVisible(true); + } + + /* InitView:初始化界面*/ + void TraingCardView ::InitView() + { + if (swipe_ == nullptr) + { + swipe_ = new UISwipeView(UISwipeView::HORIZONTAL); + swipe_->SetPosition(0, 0, 466, 466); + swipe_->SetStyle(STYLE_BACKGROUND_OPA, 0); + } + + // 初始化Lable + InitLabel(label1_, 0, 55, 466, 466, "label1", "训练", DEFAULT_VECTOR_FONT_FILENAME, 200); + InitLabel(label2_, 0, 55, 466, 466, "label2", "暂停", DEFAULT_VECTOR_FONT_FILENAME, 200); + InitLabel(label3_, 0, 55, 466, 466, "label3", "结束", DEFAULT_VECTOR_FONT_FILENAME, 200); + + swipe_->Add(label1_); + swipe_->Add(label2_); + swipe_->Add(label3_); + } + + /* DeInit:删除组件 */ + void TraingCardView::DeInit() + { + UIView *view = static_cast(swipe_)->GetChildrenHead(); + while (view != nullptr) + { + UIView *tempView = view; + view = view->GetNextSibling(); + if (tempView->GetParent()) + { + static_cast(tempView->GetParent())->Remove(tempView); + } + delete tempView; + } + delete swipe_; + swipe_ = nullptr; + } + + void TraingCardView::PreLoad(void) + { + if (!viewiInitStatus) + { + InitView(); + viewiInitStatus = true; + } + } + void TraingCardView::OnStart() + { + swipe_ = new UISwipeView(UISwipeView::HORIZONTAL); + if (swipe_ == nullptr) + { + return; + } + swipe_->SetPosition(0, 0); + swipe_->SetWidth(Screen::GetInstance().GetWidth()); + swipe_->SetHeight(Screen::GetInstance().GetHeight()); + + // 创建 draglistener 实例并设置为拖动监听器 + UIView::OnDragListener *draglistener = static_cast(TraingCardPresenter::GetInstance()); + if (draglistener == nullptr) + { + return; + } + swipe_->SetOnDragListener(draglistener); + + swipe_->SetTouchable(true); + swipe_->SetDraggable(true); + swipe_->SetStyle(STYLE_BACKGROUND_COLOR, BACK_GROUND_COLOR); + swipe_->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE); + swipe_->SetBlankSize(0); + swipe_->SetReboundSize(200); // 200: rebound size + swipe_->SetElastic(true); + + PreLoad(); + RootView::GetInstance()->Add(swipe_); + } + + void TraingCardView::OnSetUpView() + { + + View::OnSetUpView(); + Draw(); + } + + void TraingCardView::OnTearDownView() + { + View::OnTearDownView(); + return; + } + + void TraingCardView::OnStop() + { + View::OnStop(); + RootView::GetInstance()->RemoveAll(); + return; + } + +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingControlPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingControlPresenter.cpp new file mode 100644 index 000000000..a499f437d --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingControlPresenter.cpp @@ -0,0 +1,100 @@ +#include "AppViewIDs.h" +#include "NativeAbility.h" + +#include +#include +#include +#include "traing/include/TraingControlPresenter.h" +// #include "TraingControlView.h" + +namespace OHOS +{ + + // 当前Presenter属性实例化的内存指针 + static TraingControlPresenter *g_pTraingControlPresenter = nullptr; + + TraingControlPresenter::TraingControlPresenter() + { + + g_pTraingControlPresenter = this; + } + + TraingControlPresenter::~TraingControlPresenter() + { + + g_pTraingControlPresenter = nullptr; + } + + TraingControlPresenter *TraingControlPresenter::GetInstance() + { + + return g_pTraingControlPresenter; + } + + void TraingControlPresenter::OnStart() + { + + Presenter::OnStart(); + } + + void TraingControlPresenter::OnPause(void) + { + + Presenter::OnPause(); + } + + void TraingControlPresenter::OnResume(void) + { + + Presenter::OnResume(); + } + + void TraingControlPresenter::OnStop(void) + { + + Presenter::OnStop(); + } + + bool TraingControlPresenter::OnDrag(UIView &view, const DragEvent &event) + { + + if (event.GetDragDirection() == DragEvent::DIRECTION_RIGHT_TO_LEFT) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGDATA); + } + UNUSED(view); + return true; + } + + bool TraingControlPresenter::OnClick(UIView &view, const ClickEvent &event) + { + // 根据控件id查找是哪个控件触发了点击回调 + if (strcmp(view.GetViewId(), BUTTONSTOP) == 0) + { + // 模拟训练 + int random = rand() % 100; // 生成一个0~99的随机数 + if (random < 70) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGENDNOTE2); + } + else + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGENDNOTE); + } + } + + printf("********* test:%s\n", test.c_str()); + if (strcmp(view.GetViewId(), BUTTONPAUSE) == 0) + { + // 改变lable文字,button背景图片 + // test如果等于继续那就变为暂停,反之; + test == "ç»§ç»­" ? test = "暂停" : test = "ç»§ç»­"; + TraingControlView::GetInstance()->SetLabel(); + TraingControlView::GetInstance()->SetButton(); + } + printf("********* test:%s\n", test.c_str()); + // TraingControlView::GetInstance()->InitView(); + + return true; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingControlView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingControlView.cpp new file mode 100644 index 000000000..70123e696 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingControlView.cpp @@ -0,0 +1,301 @@ + +#include "traing/include/TraingControlView.h" + +#include "common/image_cache_manager.h" +#include "UiConfig.h" +#include "ui_resource_image.h" +#include +#include "components/ui_button.h" +namespace OHOS +{ + static const char *imagePath_point = "/user/res/Training/control_point.bin"; + + static TraingControlView *g_pTraingControlView{nullptr}; + + TraingControlView::TraingControlView() + { + g_pTraingControlView = this; + } + + TraingControlView::~TraingControlView() + { + DeInit(); + g_pTraingControlView = nullptr; + } + + TraingControlView *TraingControlView::GetInstance() + { + + return g_pTraingControlView; + } + /* + InitLabel:初始化标签 + @param label 标签指针 + @param left 标签左边位置 + @param top 标签顶部位置 + @param width 标签宽度 + @param height 标签高度 + @param viewId 标签的视图 ID + @param text 标签显示的文本 + @param fontName 字体名称 + @param fontSize 字体大小 + */ + void TraingControlView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize) + { + // 检查标签指针是否为空 + if (label == nullptr) + { + label = new UILabel(); + } + // 设置标签的位置和大小 + label->SetPosition(left, top); + label->Resize(width, height); + // 设置标签的视图 ID + label->SetViewId(viewId); + // 设置标签的样式 + label->SetStyle(STYLE_TEXT_FONT, fontSize); + label->SetFont(fontName, fontSize); + // 设置标签的文本和其他属性 + label->SetText(text); + label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label->SetRollSpeed(0); + // 设置标签可见 + label->SetVisible(true); + } + /* + InitButton:初始化按钮 + @param button 按钮指针 + @param left 按钮左边位置 + @param top 按钮顶部位置 + @param width 按钮宽度 + @param height 按钮高度 + @param viewId 按钮的视图 ID + */ + void TraingControlView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId) + { + // 设置按钮的背景颜色 + uint32_t backgroundColor = 0xff191919; // 默认背景颜色 + uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色 + uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色 + // 创建新按钮(如果当前按钮为空) + if (button == nullptr) + { + button = new UIButton(); + } + button->SetPosition(left, top); + button->Resize(width, height); + button->SetViewId(viewId); + button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor); + button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED); + button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED); + // 设置按钮的点击事件监听器为 TraingControlPresenter 的实例 + button->SetOnClickListener(static_cast(TraingControlPresenter::GetInstance())); + // 设置按钮可见 + button->SetVisible(true); + } + /* + InitImageView:初始化图片 + @param imageView 图片指针 + @param left 图片左边位置 + @param top 图片顶部位置 + @param width 图片宽度 + @param height 图片高度 + @param viewId 图片的视图 ID + @param imagePath 图片路径 + */ + void TraingControlView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath) + { + if (imageView == nullptr) + { + imageView = new UIImageView(); + } + imageView->SetPosition(left, top); + imageView->Resize(width, height); + imageView->SetViewId(viewId); + imageView->SetSrc(imagePath); + imageView->SetVisible(true); + } + /* InitView:初始化界面*/ + void TraingControlView ::InitView() + { + if (container_ == nullptr) + { + container_ = new UIViewGroup(); + container_->SetPosition(0, 0, 466, 466); + container_->SetStyle(STYLE_BACKGROUND_OPA, 0); + } + + // 初始化Button + InitButton(button1_, 100, 202, 100, 100, BUTTONSTOP); + // Set additional property + char *button1defaultImgSrc = BUTTON_STOP_IMG_SRC; + char *button1triggeredImgSrc = nullptr; + button1_->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc); + container_->Add(button1_); + + InitButton(button2_, 255, 202, 100, 100, BUTTONPAUSE); + // Set additional property + char *button2defaultImgSrc = BUTTON_PAUSE_IMG_SRC; + char *button2triggeredImgSrc = nullptr; + button2_->SetImageSrc(button2defaultImgSrc, button2triggeredImgSrc); + container_->Add(button2_); + + // 初始化Lable + InitLabel(label1_, 188, 52, 90, 35, "label1", "训练中", DEFAULT_VECTOR_FONT_FILENAME, 30); + InitLabel(label2_, 98, 110, 60, 35, "label2", "00:00:00", DEFAULT_VECTOR_FONT_FILENAME, 65); + InitLabel(label3_, 125, 324, 60, 40, "label3", "结束", DEFAULT_VECTOR_FONT_FILENAME, 20); + InitLabel(label4_, 280, 324, 60, 40, "label4", "暂停", DEFAULT_VECTOR_FONT_FILENAME, 20); + container_->Add(label1_); + container_->Add(label2_); + container_->Add(label3_); + container_->Add(label4_); + + // 初始化Image + InitImageView(image1_, 193, 421, 80, 20, "image1", imagePath_point); + container_->Add(image1_); + } + + /******************************************************************************************************/ + void TraingControlView::SetLabel() + { + if (TraingControlPresenter::GetInstance()->test == "ç»§ç»­") + { + label4_->SetText("ç»§ç»­"); + } + else + { + label4_->SetText("暂停"); + } + } + + void TraingControlView::SetButton() + { + if (TraingControlPresenter::GetInstance()->test == "ç»§ç»­") + { + //button2_->SetViewId(BUTTONCONTINUE); + button2_->SetImageSrc(BUTTON_CONTINUE_IMG_SRC, nullptr); + } + if (TraingControlPresenter::GetInstance()->test == "暂停") + { + //button2_->SetViewId(BUTTONPAUSE); + button2_->SetImageSrc(BUTTON_PAUSE_IMG_SRC, nullptr); + } + } + /******************************************************************************************************/ + + /* DeInit:删除组件 */ + void TraingControlView::DeInit() + { + // 删除Label + if (label1_ != nullptr) + { + container_->Remove(label1_); + delete label1_; + label1_ = nullptr; + } + if (label2_ != nullptr) + { + container_->Remove(label2_); + delete label2_; + label2_ = nullptr; + } + if (label3_ != nullptr) + { + container_->Remove(label3_); + delete label3_; + label3_ = nullptr; + } + if (label4_ != nullptr) + { + container_->Remove(label4_); + delete label4_; + label4_ = nullptr; + } + + // 删除Button + if (button1_ != nullptr) + { + container_->Remove(button1_); + delete button1_; + button1_ = nullptr; + } + if (button2_ != nullptr) + { + container_->Remove(button2_); + delete button2_; + button2_ = nullptr; + } + + // 删除Image + if (image1_ != nullptr) + { + container_->Remove(image1_); + delete image1_; + image1_ = nullptr; + } + + // 删除容器 + if (container_ != nullptr) + { + container_->RemoveAll(); // 移除容器中的所有组件 + delete container_; + container_ = nullptr; + } + } + + void TraingControlView::PreLoad(void) + { + if (!viewiInitStatus) + { + InitView(); + viewiInitStatus = true; + } + } + void TraingControlView::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(TraingControlPresenter::GetInstance()); + if (draglistener == nullptr) + { + return; + } + container_->SetOnDragListener(draglistener); + + container_->SetTouchable(true); + container_->SetDraggable(true); + + PreLoad(); + RootView::GetInstance()->Add(container_); + } + + void TraingControlView::OnSetUpView() + { + + View::OnSetUpView(); + Draw(); + } + + void TraingControlView::OnTearDownView() + { + + View::OnTearDownView(); + return; + } + + void TraingControlView::OnStop() + { + View::OnStop(); + RootView::GetInstance()->RemoveAll(); + return; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingDataPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingDataPresenter.cpp new file mode 100644 index 000000000..6078f2cfa --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingDataPresenter.cpp @@ -0,0 +1,76 @@ +#include "AppViewIDs.h" +#include "NativeAbility.h" + +#include +#include +#include +#include "traing/include/TraingDataPresenter.h" +// #include "TraingDataView.h" + +namespace OHOS +{ + + // 当前Presenter属性实例化的内存指针 + static TraingDataPresenter *g_pTraingDataPresenter = nullptr; + + TraingDataPresenter::TraingDataPresenter() + { + g_pTraingDataPresenter = this; + } + + TraingDataPresenter::~TraingDataPresenter() + { + g_pTraingDataPresenter = nullptr; + } + + TraingDataPresenter *TraingDataPresenter::GetInstance() + { + return g_pTraingDataPresenter; + } + + void TraingDataPresenter::OnStart() + { + Presenter::OnStart(); + } + + void TraingDataPresenter::OnPause(void) + { + Presenter::OnPause(); + } + + void TraingDataPresenter::OnResume(void) + { + Presenter::OnResume(); + } + + void TraingDataPresenter::OnStop(void) + { + Presenter::OnStop(); + } + + bool TraingDataPresenter::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_TRAININGCONTROL); + } + if (event.GetDragDirection() == DragEvent::DIRECTION_BOTTOM_TO_TOP) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGDETAIL); + } + UNUSED(view); + return true; + } + + bool TraingDataPresenter::OnClick(UIView &view, const ClickEvent &event) + { + // 根据控件id查找是哪个控件触发了点击回调 + if (strcmp(view.GetViewId(), BUTTONNOTE) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGSTRONG); + } + return true; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingDataView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingDataView.cpp new file mode 100644 index 000000000..8a184e79b --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingDataView.cpp @@ -0,0 +1,237 @@ + +#include "traing/include/TraingDataView.h" + +#include "common/image_cache_manager.h" +#include "UiConfig.h" +#include "ui_resource_image.h" +#include +#include "components/ui_button.h" +namespace OHOS +{ + static const char *imagePath_point = "/user/res/Training/data_point.bin"; + static const char *imagePath_progress = "/user/res/Training/progress.bin"; + static const char *imagePath_incoup = "/user/res/Training/inco_up.bin"; + static const char *imagePath_arrows = "/user/res/Training/arrows.bin"; + static const char *imagePath_strength = "/user/res/Training/sport-strength.bin"; + static const char *imagePath_note = "/user/res/Training/note.bin"; + + static TraingDataView *g_pTraingDataView{nullptr}; + + TraingDataView::TraingDataView() + { + g_pTraingDataView = this; + } + + TraingDataView::~TraingDataView() + { + DeInit(); + g_pTraingDataView = nullptr; + } + + TraingDataView *TraingDataView::GetInstance() + { + + return g_pTraingDataView; + } + /* + InitLabel:初始化标签 + @param label 标签指针 + @param left 标签左边位置 + @param top 标签顶部位置 + @param width 标签宽度 + @param height 标签高度 + @param viewId 标签的视图 ID + @param text 标签显示的文本 + @param fontName 字体名称 + @param fontSize 字体大小 + */ + void TraingDataView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize) + { + // 检查标签指针是否为空 + if (label == nullptr) + { + label = new UILabel(); + } + // 设置标签的位置和大小 + label->SetPosition(left, top); + label->Resize(width, height); + // 设置标签的视图 ID + label->SetViewId(viewId); + // 设置标签的样式 + label->SetStyle(STYLE_TEXT_FONT, fontSize); + label->SetFont(fontName, fontSize); + // 设置标签的文本和其他属性 + label->SetText(text); + label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label->SetRollSpeed(0); + // 设置标签可见 + label->SetVisible(true); + } + /* + InitButton:初始化按钮 + @param button 按钮指针 + @param left 按钮左边位置 + @param top 按钮顶部位置 + @param width 按钮宽度 + @param height 按钮高度 + @param viewId 按钮的视图 ID + */ + void TraingDataView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId) + { + // 设置按钮的背景颜色 + uint32_t backgroundColor = 0xff191919; // 默认背景颜色 + uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色 + uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色 + // 创建新按钮(如果当前按钮为空) + if (button == nullptr) + { + button = new UIButton(); + } + button->SetPosition(left, top); + button->Resize(width, height); + button->SetViewId(viewId); + button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor); + button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED); + button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED); + // 设置按钮的点击事件监听器为 TraingDataPresenter 的实例 + button->SetOnClickListener(static_cast(TraingDataPresenter::GetInstance())); + // 设置按钮可见 + button->SetVisible(true); + } + /* + InitImageView:初始化图片 + @param imageView 图片指针 + @param left 图片左边位置 + @param top 图片顶部位置 + @param width 图片宽度 + @param height 图片高度 + @param viewId 图片的视图 ID + @param imagePath 图片路径 + */ + void TraingDataView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath) + { + if (imageView == nullptr) + { + imageView = new UIImageView(); + } + imageView->SetPosition(left, top); + imageView->Resize(width, height); + imageView->SetViewId(viewId); + imageView->SetSrc(imagePath); + imageView->SetVisible(true); + } + /* InitView:初始化界面*/ + void TraingDataView ::InitView() + { + if (container_ == nullptr) + { + container_ = new UIViewGroup(); + container_->SetPosition(0, 0, 466, 466); + container_->SetStyle(STYLE_BACKGROUND_OPA, 0); + } + + // 初始化Image + InitImageView(image1_, 13, 13, 440, 386, "image1", imagePath_progress); + InitImageView(image2_, 208, 297, 20, 20, "image2", imagePath_arrows); + InitImageView(image3_, 98, 314, 270, 20, "image3", imagePath_strength); + InitImageView(image4_, 225, 396, 16, 10, "image4", imagePath_incoup); + InitImageView(image5_, 193, 421, 80, 20, "image5", imagePath_point); + container_->Add(image1_); + container_->Add(image2_); + container_->Add(image3_); + container_->Add(image4_); + container_->Add(image5_); + // 初始化Lable + InitLabel(label1_, 185, 60, 90, 35, "label1", "23:54", DEFAULT_VECTOR_FONT_FILENAME, 40); + InitLabel(label2_, 158, 120, 150, 35, "label2", "跳绳运动中", DEFAULT_VECTOR_FONT_FILENAME, 30); + InitLabel(label3_, 90, 175, 60, 40, "label3", "00:31:26", DEFAULT_VECTOR_FONT_FILENAME, 80); + InitLabel(label4_, 150, 276, 60, 40, "label4", "144", DEFAULT_VECTOR_FONT_FILENAME, 23); + InitLabel(label5_, 167, 350, 60, 40, "label4", "中等强度", DEFAULT_VECTOR_FONT_FILENAME, 26); + container_->Add(label1_); + container_->Add(label2_); + container_->Add(label3_); + container_->Add(label4_); + container_->Add(label5_); + // 初始化Button + InitButton(button1_, 275, 350, 26, 26, BUTTONNOTE); + // Set additional property + static const char *button1defaultImgSrc = imagePath_note; + char *button1triggeredImgSrc = nullptr; + button1_->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc); + container_->Add(button1_); + } + + /* DeInit:删除组件 */ + void TraingDataView::DeInit() + { + UIView *view = static_cast(container_)->GetChildrenHead(); + while (view != nullptr) + { + UIView *tempView = view; + view = view->GetNextSibling(); + if (tempView->GetParent()) + { + static_cast(tempView->GetParent())->Remove(tempView); + } + delete tempView; + } + delete container_; + container_ = nullptr; + } + + void TraingDataView::PreLoad(void) + { + if (!viewiInitStatus) + { + InitView(); + viewiInitStatus = true; + } + } + void TraingDataView::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(TraingDataPresenter::GetInstance()); + if (draglistener == nullptr) + { + return; + } + container_->SetOnDragListener(draglistener); + + container_->SetTouchable(true); + container_->SetDraggable(true); + + PreLoad(); + RootView::GetInstance()->Add(container_); + } + + void TraingDataView::OnSetUpView() + { + + View::OnSetUpView(); + Draw(); + } + + void TraingDataView::OnTearDownView() + { + + View::OnTearDownView(); + return; + } + + void TraingDataView::OnStop() + { + View::OnStop(); + RootView::GetInstance()->RemoveAll(); + return; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingDetailPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingDetailPresenter.cpp new file mode 100644 index 000000000..f473ff119 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingDetailPresenter.cpp @@ -0,0 +1,74 @@ +#include "AppViewIDs.h" +#include "NativeAbility.h" + +#include +#include +#include +#include "traing/include/TraingDetailPresenter.h" +// #include "TraingDetailView.h" + +namespace OHOS +{ + + // 当前Presenter属性实例化的内存指针 + static TraingDetailPresenter *g_pTraingDetailPresenter = nullptr; + + TraingDetailPresenter::TraingDetailPresenter() + { + + g_pTraingDetailPresenter = this; + } + + TraingDetailPresenter::~TraingDetailPresenter() + { + + g_pTraingDetailPresenter = nullptr; + } + + TraingDetailPresenter *TraingDetailPresenter::GetInstance() + { + + return g_pTraingDetailPresenter; + } + + void TraingDetailPresenter::OnStart() + { + + Presenter::OnStart(); + } + + void TraingDetailPresenter::OnPause(void) + { + + Presenter::OnPause(); + } + + void TraingDetailPresenter::OnResume(void) + { + + Presenter::OnResume(); + } + + void TraingDetailPresenter::OnStop(void) + { + + Presenter::OnStop(); + } + + bool TraingDetailPresenter::OnDrag(UIView &view, const DragEvent &event) + { + + if (event.GetDragDirection() == DragEvent::DIRECTION_TOP_TO_BOTTOM) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGDATA); + } + UNUSED(view); + return true; + } + + bool TraingDetailPresenter::OnClick(UIView &view, const ClickEvent &event) + { + // 根据控件id查找是哪个控件触发了点击回调 + return true; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingDetailView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingDetailView.cpp new file mode 100644 index 000000000..2f086718f --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingDetailView.cpp @@ -0,0 +1,240 @@ + +#include "traing/include/TraingDetailView.h" + +#include "common/image_cache_manager.h" +#include "UiConfig.h" +#include "ui_resource_image.h" +#include +#include "components/ui_button.h" +namespace OHOS +{ + static const char *imagePath_heartrate = "/user/res/Training/heartrat_30.bin"; + static const char *imagePath_mileage = "/user/res/Training/mileage_30.bin"; + static const char *imagePath_step = "/user/res/Training/step_30.bin"; + static const char *imagePath_calories = "/user/res/Training/calories_30.bin"; + static const char *imagePath_line1 = "/user/res/Training/Line 1.bin"; + static const char *imagePath_line2 = "/user/res/Training/Line 2.bin"; + + static TraingDetailView *g_pTraingDetailView{nullptr}; + + TraingDetailView::TraingDetailView() + { + g_pTraingDetailView = this; + } + + TraingDetailView::~TraingDetailView() + { + DeInit(); + g_pTraingDetailView = nullptr; + } + + TraingDetailView *TraingDetailView::GetInstance() + { + + return g_pTraingDetailView; + } + /* + InitLabel:初始化标签 + @param label 标签指针 + @param left 标签左边位置 + @param top 标签顶部位置 + @param width 标签宽度 + @param height 标签高度 + @param viewId 标签的视图 ID + @param text 标签显示的文本 + @param fontName 字体名称 + @param fontSize 字体大小 + */ + void TraingDetailView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize) + { + // 检查标签指针是否为空 + if (label == nullptr) + { + label = new UILabel(); + } + // 设置标签的位置和大小 + label->SetPosition(left, top); + label->Resize(width, height); + // 设置标签的视图 ID + label->SetViewId(viewId); + // 设置标签的样式 + label->SetStyle(STYLE_TEXT_FONT, fontSize); + label->SetFont(fontName, fontSize); + // 设置标签的文本和其他属性 + label->SetText(text); + label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label->SetRollSpeed(0); + // 设置标签可见 + label->SetVisible(true); + } + /* + InitButton:初始化按钮 + @param button 按钮指针 + @param left 按钮左边位置 + @param top 按钮顶部位置 + @param width 按钮宽度 + @param height 按钮高度 + @param viewId 按钮的视图 ID + */ + void TraingDetailView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId) + { + // 设置按钮的背景颜色 + uint32_t backgroundColor = 0xff191919; // 默认背景颜色 + uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色 + uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色 + // 创建新按钮(如果当前按钮为空) + if (button == nullptr) + { + button = new UIButton(); + } + button->SetPosition(left, top); + button->Resize(width, height); + button->SetViewId(viewId); + button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor); + button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED); + button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED); + // 设置按钮的点击事件监听器为 TraingDetailPresenter 的实例 + button->SetOnClickListener(static_cast(TraingDetailPresenter::GetInstance())); + // 设置按钮可见 + button->SetVisible(true); + } + /* + InitImageView:初始化图片 + @param imageView 图片指针 + @param left 图片左边位置 + @param top 图片顶部位置 + @param width 图片宽度 + @param height 图片高度 + @param viewId 图片的视图 ID + @param imagePath 图片路径 + */ + void TraingDetailView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath) + { + if (imageView == nullptr) + { + imageView = new UIImageView(); + } + imageView->SetPosition(left, top); + imageView->Resize(width, height); + imageView->SetViewId(viewId); + imageView->SetSrc(imagePath); + imageView->SetVisible(true); + } + /* InitView:初始化界面*/ + void TraingDetailView ::InitView() + { + if (container_ == nullptr) + { + container_ = new UIViewGroup(); + container_->SetPosition(0, 0, 466, 466); + container_->SetStyle(STYLE_BACKGROUND_OPA, 0); + } + + // 初始化Image + InitImageView(image1_, 134, 58, 30, 30, "image1", imagePath_heartrate); + InitImageView(image2_, 44, 189, 30, 30, "image2", imagePath_mileage); + InitImageView(image3_, 297, 189, 30, 30, "image3", imagePath_step); + InitImageView(image4_, 129, 335, 30, 30, "image4", imagePath_calories); + InitImageView(image5_, 0, 160, 10, 466, "image5", imagePath_line1); + InitImageView(image6_, 233, 193, 80, 20, "image5", imagePath_line2); + InitImageView(image7_, 0, 306, 10, 466, "image5", imagePath_line1); + container_->Add(image1_); + container_->Add(image2_); + container_->Add(image3_); + container_->Add(image4_); + container_->Add(image5_); + container_->Add(image6_); + container_->Add(image7_); + // 初始化Lable + InitLabel(label1_, 174, 60, 90, 35, "label1", "心率(次/分)", DEFAULT_VECTOR_FONT_FILENAME, 26); + InitLabel(label2_, 80, 190, 60, 40, "label2", "距离(公里)", DEFAULT_VECTOR_FONT_FILENAME, 26); + InitLabel(label3_, 332, 189, 60, 40, "label3", "步数", DEFAULT_VECTOR_FONT_FILENAME, 26); + InitLabel(label4_, 167, 336, 60, 40, "label4", "卡路里(千卡)", DEFAULT_VECTOR_FONT_FILENAME, 26); + InitLabel(label5_, 202, 94, 60, 40, "label5", "144", DEFAULT_VECTOR_FONT_FILENAME, 40); + InitLabel(label6_, 76, 233, 60, 40, "label6", "13.21", DEFAULT_VECTOR_FONT_FILENAME, 40); + InitLabel(label7_, 300, 233, 60, 40, "label7", "28312", DEFAULT_VECTOR_FONT_FILENAME, 40); + InitLabel(label8_, 175, 376, 60, 40, "label8", "210.03", DEFAULT_VECTOR_FONT_FILENAME, 40); + container_->Add(label1_); + container_->Add(label2_); + container_->Add(label3_); + container_->Add(label4_); + container_->Add(label5_); + container_->Add(label6_); + container_->Add(label7_); + container_->Add(label8_); + } + + /* DeInit:删除组件 */ + void TraingDetailView::DeInit() + { + UIView *view = static_cast(container_)->GetChildrenHead(); + while (view != nullptr) + { + UIView *tempView = view; + view = view->GetNextSibling(); + if (tempView->GetParent()) + { + static_cast(tempView->GetParent())->Remove(tempView); + } + delete tempView; + } + delete container_; + container_ = nullptr; + } + + void TraingDetailView::PreLoad(void) + { + if (!viewiInitStatus) + { + InitView(); + viewiInitStatus = true; + } + } + void TraingDetailView::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(TraingDetailPresenter::GetInstance()); + if (draglistener == nullptr) + { + return; + } + container_->SetOnDragListener(draglistener); + + container_->SetTouchable(true); + container_->SetDraggable(true); + + PreLoad(); + RootView::GetInstance()->Add(container_); + } + + void TraingDetailView::OnSetUpView() + { + + View::OnSetUpView(); + Draw(); + } + + void TraingDetailView::OnTearDownView() + { + + View::OnTearDownView(); + return; + } + + void TraingDetailView::OnStop() + { + View::OnStop(); + RootView::GetInstance()->RemoveAll(); + return; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEnddataPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEnddataPresenter.cpp new file mode 100644 index 000000000..f469d6de9 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEnddataPresenter.cpp @@ -0,0 +1,79 @@ +#include "AppViewIDs.h" +#include "NativeAbility.h" + +#include +#include +#include +#include "traing/include/TraingEnddataPresenter.h" +// #include "TraingEnddataView.h" + +namespace OHOS +{ + + // 当前Presenter属性实例化的内存指针 + static TraingEnddataPresenter *g_pTraingEnddataPresenter = nullptr; + + TraingEnddataPresenter::TraingEnddataPresenter() + { + + g_pTraingEnddataPresenter = this; + } + + TraingEnddataPresenter::~TraingEnddataPresenter() + { + + g_pTraingEnddataPresenter = nullptr; + } + + TraingEnddataPresenter *TraingEnddataPresenter::GetInstance() + { + + return g_pTraingEnddataPresenter; + } + + void TraingEnddataPresenter::OnStart() + { + + Presenter::OnStart(); + } + + void TraingEnddataPresenter::OnPause(void) + { + + Presenter::OnPause(); + } + + void TraingEnddataPresenter::OnResume(void) + { + + Presenter::OnResume(); + } + + void TraingEnddataPresenter::OnStop(void) + { + + Presenter::OnStop(); + } + + bool TraingEnddataPresenter::OnDrag(UIView &view, const DragEvent &event) + { + + // if (event.GetDragDirection() == DragEvent::DIRECTION_TOP_TO_BOTTOM) + // { + // NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGDATA); + // } + UNUSED(view); + return true; + } + + bool TraingEnddataPresenter::OnClick(UIView &view, const ClickEvent &event) + { + + // 根据控件id查找是哪个控件触发了点击回调 + if (strcmp(view.GetViewId(), BUTTONBACK) == 0) + { + //NativeAbility::GetInstance().ChangeSlice(VIEW_TRAINING); + } + return true; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEnddataView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEnddataView.cpp new file mode 100644 index 000000000..db4f86561 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEnddataView.cpp @@ -0,0 +1,319 @@ + +#include "traing/include/TraingEnddataView.h" + +#include "common/image_cache_manager.h" +#include "UiConfig.h" +#include "ui_resource_image.h" +#include +#include "components/ui_button.h" +namespace OHOS +{ + static const char *imagePath_path = "/user/res/Training/path.bin"; + static const char *imagePath_bubble = "/user/res/Training/bubble.bin"; + static const char *imagePath_bubblepiont = "/user/res/Training/bubble_piont.bin"; + static const char *imagePath_Line = "/user/res/Training/Line.bin"; + static const char *imagePath_spot = "/user/res/Training/Walking_54.bin"; + static const char *imagePath_incoup = "/user/res/Training/inco_up_40.bin"; + + static TraingEnddataView *g_pTraingEnddataView{nullptr}; + + TraingEnddataView::TraingEnddataView() + { + g_pTraingEnddataView = this; + } + + TraingEnddataView::~TraingEnddataView() + { + DeInit(); + g_pTraingEnddataView = nullptr; + } + + TraingEnddataView *TraingEnddataView::GetInstance() + { + + return g_pTraingEnddataView; + } + + /* + InitLabel:初始化标签 + @param label 标签指针 + @param left 标签左边位置 + @param top 标签顶部位置 + @param width 标签宽度 + @param height 标签高度 + @param viewId 标签的视图 ID + @param text 标签显示的文本 + @param fontName 字体名称 + @param fontSize 字体大小 + */ + void TraingEnddataView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize) + { + // 检查标签指针是否为空 + if (label == nullptr) + { + label = new UILabel(); + } + // 设置标签的位置和大小 + label->SetPosition(left, top); + label->Resize(width, height); + // 设置标签的视图 ID + label->SetViewId(viewId); + // 设置标签的样式 + label->SetStyle(STYLE_TEXT_FONT, fontSize); + label->SetFont(fontName, fontSize); + // 设置标签的文本和其他属性 + label->SetText(text); + label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + label1_->SetTextColor(Color::GetColorFromRGBA(0x22, 0x9d, 0xd3, 0xff)); + label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label->SetRollSpeed(0); + // 设置标签可见 + label->SetVisible(true); + } + /* + InitButton:初始化按钮 + @param button 按钮指针 + @param left 按钮左边位置 + @param top 按钮顶部位置 + @param width 按钮宽度 + @param height 按钮高度 + @param viewId 按钮的视图 ID + */ + void TraingEnddataView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId) + { + // 设置按钮的背景颜色 + uint32_t backgroundColor = 0xff191919; // 默认背景颜色 + uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色 + uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色 + // 创建新按钮(如果当前按钮为空) + if (button == nullptr) + { + button = new UIButton(); + } + button->SetPosition(left, top); + button->Resize(width, height); + button->SetViewId(viewId); + button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor); + button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED); + button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED); + // 设置按钮的点击事件监听器为 TraingEnddataPresenter 的实例 + button->SetOnClickListener(static_cast(TraingEnddataPresenter::GetInstance())); + // 设置按钮可见 + button->SetVisible(true); + } + /* + InitImageView:初始化图片 + @param imageView 图片指针 + @param left 图片左边位置 + @param top 图片顶部位置 + @param width 图片宽度 + @param height 图片高度 + @param viewId 图片的视图 ID + @param imagePath 图片路径 + */ + void TraingEnddataView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath) + { + if (imageView == nullptr) + { + imageView = new UIImageView(); + } + imageView->SetPosition(left, top); + imageView->Resize(width, height); + imageView->SetViewId(viewId); + imageView->SetSrc(imagePath); + imageView->SetVisible(true); + } + /* InitView:初始化界面*/ + void TraingEnddataView ::InitView() + { + if (container_ == nullptr) + { + container_ = new UIViewGroup(); + container_->SetPosition(0, 0, 466, 466); + container_->SetStyle(STYLE_BACKGROUND_OPA, 0); + } + + // Add ScrollView to App + if (scrollView1_ == nullptr) + { + scrollView1_ = new UIScrollView(); + } + scrollView1_->SetPosition(0, 0); // widget's left position and top position + scrollView1_->Resize(466, 466); // widget's width and height + scrollView1_->SetViewId("scrollView1"); // Set style + scrollView1_->SetReboundSize(100); + scrollView1_->SetScrollBlankSize(35); + scrollView1_->SetHorizontalScrollState(false); + // Add to rootView + container_->Add(scrollView1_); + scrollView1_->SetVisible(true); + + // 初始化Image + InitImageView(image1_, 200, 131, 80, 48, "image1", imagePath_bubble); + InitImageView(image2_, 230, 183, 20, 20, "image2", imagePath_bubblepiont); + InitImageView(image3_, 96, 118, 271, 233, "image3", imagePath_path); + InitImageView(image4_, 212, 402, 40, 40, "image4", imagePath_incoup); + InitImageView(image5_, 80, 470, 54, 80, "image5", imagePath_spot); + InitImageView(image6_, 97, 552, 80, 20, "image6", imagePath_Line); + InitImageView(image8_, 97, 682, 80, 20, "image6", imagePath_Line); + InitImageView(image9_, 97, 812, 80, 20, "image6", imagePath_Line); + InitImageView(image10_, 97, 942, 80, 20, "image6", imagePath_Line); + InitImageView(image11_, 97, 1072, 80, 20, "image6", imagePath_Line); + + scrollView1_->Add(image3_); + scrollView1_->Add(image6_); + scrollView1_->Add(image8_); + scrollView1_->Add(image9_); + scrollView1_->Add(image10_); + scrollView1_->Add(image11_); + scrollView1_->Add(image1_); + scrollView1_->Add(image2_); + scrollView1_->Add(image4_); + scrollView1_->Add(image5_); + + // 初始化button + InitButton(button1_, 42, 1319, 380, 100, BUTTONBACK); + scrollView1_->Add(button1_); + + // 初始化Lable + InitLabel(label1_, 188, 52, 90, 35, "label1", "健身类", DEFAULT_VECTOR_FONT_FILENAME, 30); + InitLabel(label2_, 220, 140, 60, 40, "label2", "达标", DEFAULT_VECTOR_FONT_FILENAME, 20); + InitLabel(label3_, 114, 252, 60, 40, "label3", "终", DEFAULT_VECTOR_FONT_FILENAME, 20); + InitLabel(label4_, 172, 284, 60, 40, "label4", "èµ·", DEFAULT_VECTOR_FONT_FILENAME, 20); + InitLabel(label5_, 155, 372, 60, 40, "label5", "距离:8.3KM", DEFAULT_VECTOR_FONT_FILENAME, 30); + InitLabel(label6_, 146, 478, 60, 40, "label6", "健走", DEFAULT_VECTOR_FONT_FILENAME, 30); + InitLabel(label7_, 146, 517, 60, 40, "label7", "13:00:22-15:00:12", DEFAULT_VECTOR_FONT_FILENAME, 28); + + InitLabel(label8_, 146, 590, 60, 40, "label8", "目标完成度", DEFAULT_VECTOR_FONT_FILENAME, 26); + InitLabel(label9_, 146, 720, 60, 40, "label9", "训练时长", DEFAULT_VECTOR_FONT_FILENAME, 26); + InitLabel(label10_, 146, 850, 60, 40, "label10", "距离(ç±³)", DEFAULT_VECTOR_FONT_FILENAME, 26); + InitLabel(label11_, 146, 980, 60, 40, "label11", "平均心率(次/分)", DEFAULT_VECTOR_FONT_FILENAME, 26); + InitLabel(label12_, 146, 1110, 60, 40, "label2", "训练强度", DEFAULT_VECTOR_FONT_FILENAME, 26); + InitLabel(label18_, 155, 1232, 60, 40, "label8", "更多数据请前往手机\nAPP“小希爱玩”查看", DEFAULT_VECTOR_FONT_FILENAME, 26); + + label7_->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f)); + label8_->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f)); + label9_->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f)); + label10_->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f)); + label11_->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f)); + label12_->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f)); + label18_->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f)); + + InitLabel(label13_, 146, 626, 60, 40, "label18", "226%", DEFAULT_VECTOR_FONT_FILENAME, 40); + label13_->SetTextColor(Color::GetColorFromRGBA(0x4f, 0xc3, 0x4c, 0xff)); + InitLabel(label14_, 146, 756, 60, 40, "label14", "05:45:46", DEFAULT_VECTOR_FONT_FILENAME, 40); + label14_->SetTextColor(Color::GetColorFromRGBA(0xff, 0x8a, 0x36, 0xff)); + InitLabel(label15_, 146, 886, 60, 40, "label15", "8,301", DEFAULT_VECTOR_FONT_FILENAME, 40); + label15_->SetTextColor(Color::GetColorFromRGBA(0x36, 0x4a, 0xff, 0xff)); + InitLabel(label16_, 146, 1016, 60, 40, "label16", "144", DEFAULT_VECTOR_FONT_FILENAME, 40); + label16_->SetTextColor(Color::GetColorFromRGBA(0xff, 0x5a, 0x36, 0xff)); + InitLabel(label17_, 146, 1146, 60, 40, "label17", "中等强度", DEFAULT_VECTOR_FONT_FILENAME, 40); + label17_->SetTextColor(Color::GetColorFromRGBA(0xff, 0x5a, 0x36, 0xff)); + InitLabel(label19_, 201, 1348, 60, 40, "label19", "关闭", DEFAULT_VECTOR_FONT_FILENAME, 31); + + scrollView1_->Add(label1_); + scrollView1_->Add(label2_); + scrollView1_->Add(label3_); + scrollView1_->Add(label4_); + scrollView1_->Add(label5_); + scrollView1_->Add(label6_); + scrollView1_->Add(label7_); + scrollView1_->Add(label8_); + scrollView1_->Add(label9_); + scrollView1_->Add(label10_); + scrollView1_->Add(label11_); + scrollView1_->Add(label12_); + scrollView1_->Add(label13_); + scrollView1_->Add(label14_); + scrollView1_->Add(label15_); + scrollView1_->Add(label16_); + scrollView1_->Add(label17_); + scrollView1_->Add(label18_); + scrollView1_->Add(label19_); + + // Add ImageView to App + if (image7_ == nullptr) + { + image7_ = new UIImageView(); + } + image7_->SetPosition(188, 1460); // widget's left position and top position + image7_->Resize(100, 100); // widget's width and height + image7_->SetViewId("image7"); // Set style + // Add to rootView + scrollView1_->Add(image7_); + image7_->SetVisible(true); + } + + /* DeInit:删除组件 */ + void TraingEnddataView::DeInit() + { + UIView *view = static_cast(container_)->GetChildrenHead(); + while (view != nullptr) + { + UIView *tempView = view; + view = view->GetNextSibling(); + if (tempView->GetParent()) + { + static_cast(tempView->GetParent())->Remove(tempView); + } + delete tempView; + } + delete container_; + container_ = nullptr; + } + + void TraingEnddataView::PreLoad(void) + { + if (!viewiInitStatus) + { + InitView(); + viewiInitStatus = true; + } + } + void TraingEnddataView::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(TraingEnddataPresenter::GetInstance()); + if (draglistener == nullptr) + { + return; + } + container_->SetOnDragListener(draglistener); + + container_->SetTouchable(true); + container_->SetDraggable(true); + + PreLoad(); + RootView::GetInstance()->Add(container_); + } + + void TraingEnddataView::OnSetUpView() + { + + View::OnSetUpView(); + Draw(); + } + + void TraingEnddataView::OnTearDownView() + { + + View::OnTearDownView(); + return; + } + + void TraingEnddataView::OnStop() + { + View::OnStop(); + RootView::GetInstance()->RemoveAll(); + return; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEndnote2Presenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEndnote2Presenter.cpp new file mode 100644 index 000000000..ae8c85959 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEndnote2Presenter.cpp @@ -0,0 +1,83 @@ +#include "AppViewIDs.h" +#include "NativeAbility.h" + +#include +#include +#include +#include "traing/include/TraingEndnote2Presenter.h" +// #include "TraingEndnote2View.h" + +namespace OHOS +{ + + // 当前Presenter属性实例化的内存指针 + static TraingEndnote2Presenter *g_pTraingEndnote2Presenter = nullptr; + + TraingEndnote2Presenter::TraingEndnote2Presenter() + { + + g_pTraingEndnote2Presenter = this; + } + + TraingEndnote2Presenter::~TraingEndnote2Presenter() + { + + g_pTraingEndnote2Presenter = nullptr; + } + + TraingEndnote2Presenter *TraingEndnote2Presenter::GetInstance() + { + + return g_pTraingEndnote2Presenter; + } + + void TraingEndnote2Presenter::OnStart() + { + + Presenter::OnStart(); + } + + void TraingEndnote2Presenter::OnPause(void) + { + + Presenter::OnPause(); + } + + void TraingEndnote2Presenter::OnResume(void) + { + + Presenter::OnResume(); + } + + void TraingEndnote2Presenter::OnStop(void) + { + + Presenter::OnStop(); + } + + bool TraingEndnote2Presenter::OnDrag(UIView &view, const DragEvent &event) + { + + // if (event.GetDragDirection() == DragEvent::DIRECTION_TOP_TO_BOTTOM) + // { + // NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGDATA); + // } + UNUSED(view); + return true; + } + + bool TraingEndnote2Presenter::OnClick(UIView &view, const ClickEvent &event) + { + + // 根据控件id查找是哪个控件触发了点击回调 + if (strcmp(view.GetViewId(), BUTTONNO) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGCONTROL); + } + if (strcmp(view.GetViewId(), BUTTONYES) == 0) + { + //NativeAbility::GetInstance().ChangeSlice(VIEW_TRAINING); + } + return true; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEndnote2View.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEndnote2View.cpp new file mode 100644 index 000000000..0285ef22f --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEndnote2View.cpp @@ -0,0 +1,225 @@ + +#include "traing/include/TraingEndnote2View.h" + +#include "common/image_cache_manager.h" +#include "UiConfig.h" +#include "ui_resource_image.h" +#include +#include "components/ui_button.h" +namespace OHOS +{ + static const char *imagePath_no = "/user/res/Training/no.bin"; + static const char *imagePath_yes = "/user/res/Training/yes.bin"; + + static TraingEndnote2View *g_pTraingEndnote2View{nullptr}; + + TraingEndnote2View::TraingEndnote2View() + { + g_pTraingEndnote2View = this; + } + + TraingEndnote2View::~TraingEndnote2View() + { + DeInit(); + g_pTraingEndnote2View = nullptr; + } + + TraingEndnote2View *TraingEndnote2View::GetInstance() + { + + return g_pTraingEndnote2View; + } + /* + InitLabel:初始化标签 + @param label 标签指针 + @param left 标签左边位置 + @param top 标签顶部位置 + @param width 标签宽度 + @param height 标签高度 + @param viewId 标签的视图 ID + @param text 标签显示的文本 + @param fontName 字体名称 + @param fontSize 字体大小 + */ + void TraingEndnote2View::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize) + { + // 检查标签指针是否为空 + if (label == nullptr) + { + label = new UILabel(); + } + // 设置标签的位置和大小 + label->SetPosition(left, top); + label->Resize(width, height); + // 设置标签的视图 ID + label->SetViewId(viewId); + // 设置标签的样式 + label->SetStyle(STYLE_TEXT_FONT, fontSize); + label->SetFont(fontName, fontSize); + // 设置标签的文本和其他属性 + label->SetText(text); + label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label->SetRollSpeed(0); + // 设置标签可见 + label->SetVisible(true); + } + /* + InitButton:初始化按钮 + @param button 按钮指针 + @param left 按钮左边位置 + @param top 按钮顶部位置 + @param width 按钮宽度 + @param height 按钮高度 + @param viewId 按钮的视图 ID + */ + void TraingEndnote2View::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId) + { + // 设置按钮的背景颜色 + uint32_t backgroundColor = 0xff191919; // 默认背景颜色 + uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色 + uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色 + // 创建新按钮(如果当前按钮为空) + if (button == nullptr) + { + button = new UIButton(); + } + button->SetPosition(left, top); + button->Resize(width, height); + button->SetViewId(viewId); + button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor); + button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED); + button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED); + // 设置按钮的点击事件监听器为 TraingEndnote2Presenter 的实例 + button->SetOnClickListener(static_cast(TraingEndnote2Presenter::GetInstance())); + // 设置按钮可见 + button->SetVisible(true); + } + /* + InitImageView:初始化图片 + @param imageView 图片指针 + @param left 图片左边位置 + @param top 图片顶部位置 + @param width 图片宽度 + @param height 图片高度 + @param viewId 图片的视图 ID + @param imagePath 图片路径 + */ + void TraingEndnote2View::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath) + { + if (imageView == nullptr) + { + imageView = new UIImageView(); + } + imageView->SetPosition(left, top); + imageView->Resize(width, height); + imageView->SetViewId(viewId); + imageView->SetSrc(imagePath); + imageView->SetVisible(true); + } + /* InitView:初始化界面*/ + void TraingEndnote2View ::InitView() + { + if (container_ == nullptr) + { + container_ = new UIViewGroup(); + container_->SetPosition(0, 0, 466, 466); + container_->SetStyle(STYLE_BACKGROUND_OPA, 0); + } + + // 初始化Lable + InitLabel(label1_, 203, 52, 90, 35, "label1", "注意", DEFAULT_VECTOR_FONT_FILENAME, 30); + InitLabel(label2_, 56, 167, 60, 40, "label2", "当前运动量太小,无法记录\n是否结束运动", DEFAULT_VECTOR_FONT_FILENAME, 30); + + container_->Add(label1_); + container_->Add(label2_); + + InitButton(button1_, 111, 299, 100, 100, BUTTONNO); + // Set additional property + const char *button1defaultImgSrc = imagePath_no; + char *button1triggeredImgSrc = nullptr; + button1_->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc); + + InitButton(button2_, 256, 299, 100, 100, BUTTONYES); + // Set additional property + const char *button2defaultImgSrc = imagePath_yes; + char *button2triggeredImgSrc = nullptr; + button2_->SetImageSrc(button2defaultImgSrc, button2triggeredImgSrc); + + container_->Add(button1_); + container_->Add(button2_); + } + + /* DeInit:删除组件 */ + void TraingEndnote2View::DeInit() + { + UIView *view = static_cast(container_)->GetChildrenHead(); + while (view != nullptr) + { + UIView *tempView = view; + view = view->GetNextSibling(); + if (tempView->GetParent()) + { + static_cast(tempView->GetParent())->Remove(tempView); + } + delete tempView; + } + delete container_; + container_ = nullptr; + } + + void TraingEndnote2View::PreLoad(void) + { + if (!viewiInitStatus) + { + InitView(); + viewiInitStatus = true; + } + } + void TraingEndnote2View::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(TraingEndnote2Presenter::GetInstance()); + if (draglistener == nullptr) + { + return; + } + container_->SetOnDragListener(draglistener); + + container_->SetTouchable(true); + container_->SetDraggable(true); + + PreLoad(); + RootView::GetInstance()->Add(container_); + } + + void TraingEndnote2View::OnSetUpView() + { + + View::OnSetUpView(); + Draw(); + } + + void TraingEndnote2View::OnTearDownView() + { + + View::OnTearDownView(); + return; + } + + void TraingEndnote2View::OnStop() + { + View::OnStop(); + RootView::GetInstance()->RemoveAll(); + return; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEndnotePresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEndnotePresenter.cpp new file mode 100644 index 000000000..80c7f151d --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEndnotePresenter.cpp @@ -0,0 +1,83 @@ +#include "AppViewIDs.h" +#include "NativeAbility.h" + +#include +#include +#include +#include "traing/include/TraingEndnotePresenter.h" +// #include "TraingEndnoteView.h" + +namespace OHOS +{ + + // 当前Presenter属性实例化的内存指针 + static TraingEndnotePresenter *g_pTraingEndnotePresenter = nullptr; + + TraingEndnotePresenter::TraingEndnotePresenter() + { + + g_pTraingEndnotePresenter = this; + } + + TraingEndnotePresenter::~TraingEndnotePresenter() + { + + g_pTraingEndnotePresenter = nullptr; + } + + TraingEndnotePresenter *TraingEndnotePresenter::GetInstance() + { + + return g_pTraingEndnotePresenter; + } + + void TraingEndnotePresenter::OnStart() + { + + Presenter::OnStart(); + } + + void TraingEndnotePresenter::OnPause(void) + { + + Presenter::OnPause(); + } + + void TraingEndnotePresenter::OnResume(void) + { + + Presenter::OnResume(); + } + + void TraingEndnotePresenter::OnStop(void) + { + + Presenter::OnStop(); + } + + bool TraingEndnotePresenter::OnDrag(UIView &view, const DragEvent &event) + { + + // if (event.GetDragDirection() == DragEvent::DIRECTION_TOP_TO_BOTTOM) + // { + // NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGDATA); + // } + UNUSED(view); + return true; + } + + bool TraingEndnotePresenter::OnClick(UIView &view, const ClickEvent &event) + { + + // 根据控件id查找是哪个控件触发了点击回调 + if (strcmp(view.GetViewId(), BUTTONNO) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGCONTROL); + } + if (strcmp(view.GetViewId(), BUTTONYES) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGWIN); + } + return true; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEndnoteView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEndnoteView.cpp new file mode 100644 index 000000000..e2c1d810b --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingEndnoteView.cpp @@ -0,0 +1,225 @@ + +#include "traing/include/TraingEndnoteView.h" + +#include "common/image_cache_manager.h" +#include "UiConfig.h" +#include "ui_resource_image.h" +#include +#include "components/ui_button.h" +namespace OHOS +{ + static const char *imagePath_no = "/user/res/Training/no.bin"; + static const char *imagePath_yes = "/user/res/Training/yes.bin"; + + static TraingEndnoteView *g_pTraingEndnoteView{nullptr}; + + TraingEndnoteView::TraingEndnoteView() + { + g_pTraingEndnoteView = this; + } + + TraingEndnoteView::~TraingEndnoteView() + { + DeInit(); + g_pTraingEndnoteView = nullptr; + } + + TraingEndnoteView *TraingEndnoteView::GetInstance() + { + + return g_pTraingEndnoteView; + } + /* + InitLabel:初始化标签 + @param label 标签指针 + @param left 标签左边位置 + @param top 标签顶部位置 + @param width 标签宽度 + @param height 标签高度 + @param viewId 标签的视图 ID + @param text 标签显示的文本 + @param fontName 字体名称 + @param fontSize 字体大小 + */ + void TraingEndnoteView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize) + { + // 检查标签指针是否为空 + if (label == nullptr) + { + label = new UILabel(); + } + // 设置标签的位置和大小 + label->SetPosition(left, top); + label->Resize(width, height); + // 设置标签的视图 ID + label->SetViewId(viewId); + // 设置标签的样式 + label->SetStyle(STYLE_TEXT_FONT, fontSize); + label->SetFont(fontName, fontSize); + // 设置标签的文本和其他属性 + label->SetText(text); + label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label->SetRollSpeed(0); + // 设置标签可见 + label->SetVisible(true); + } + /* + InitButton:初始化按钮 + @param button 按钮指针 + @param left 按钮左边位置 + @param top 按钮顶部位置 + @param width 按钮宽度 + @param height 按钮高度 + @param viewId 按钮的视图 ID + */ + void TraingEndnoteView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId) + { + // 设置按钮的背景颜色 + uint32_t backgroundColor = 0xff191919; // 默认背景颜色 + uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色 + uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色 + // 创建新按钮(如果当前按钮为空) + if (button == nullptr) + { + button = new UIButton(); + } + button->SetPosition(left, top); + button->Resize(width, height); + button->SetViewId(viewId); + button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor); + button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED); + button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED); + // 设置按钮的点击事件监听器为 TraingEndnotePresenter 的实例 + button->SetOnClickListener(static_cast(TraingEndnotePresenter::GetInstance())); + // 设置按钮可见 + button->SetVisible(true); + } + /* + InitImageView:初始化图片 + @param imageView 图片指针 + @param left 图片左边位置 + @param top 图片顶部位置 + @param width 图片宽度 + @param height 图片高度 + @param viewId 图片的视图 ID + @param imagePath 图片路径 + */ + void TraingEndnoteView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath) + { + if (imageView == nullptr) + { + imageView = new UIImageView(); + } + imageView->SetPosition(left, top); + imageView->Resize(width, height); + imageView->SetViewId(viewId); + imageView->SetSrc(imagePath); + imageView->SetVisible(true); + } + /* InitView:初始化界面*/ + void TraingEndnoteView ::InitView() + { + if (container_ == nullptr) + { + container_ = new UIViewGroup(); + container_->SetPosition(0, 0, 466, 466); + container_->SetStyle(STYLE_BACKGROUND_OPA, 0); + } + + // 初始化Lable + InitLabel(label1_, 173, 52, 90, 35, "label1", "结束运动", DEFAULT_VECTOR_FONT_FILENAME, 30); + InitLabel(label2_, 116, 187, 60, 40, "label2", "是否结束本次运动", DEFAULT_VECTOR_FONT_FILENAME, 26); + + container_->Add(label1_); + container_->Add(label2_); + + InitButton(button1_, 111, 299, 100, 100, BUTTONNO); + // Set additional property + const char *button1defaultImgSrc = imagePath_no; + char *button1triggeredImgSrc = nullptr; + button1_->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc); + + InitButton(button2_, 256, 299, 100, 100, BUTTONYES); + // Set additional property + const char *button2defaultImgSrc = imagePath_yes; + char *button2triggeredImgSrc = nullptr; + button2_->SetImageSrc(button2defaultImgSrc, button2triggeredImgSrc); + + container_->Add(button1_); + container_->Add(button2_); + } + + /* DeInit:删除组件 */ + void TraingEndnoteView::DeInit() + { + UIView *view = static_cast(container_)->GetChildrenHead(); + while (view != nullptr) + { + UIView *tempView = view; + view = view->GetNextSibling(); + if (tempView->GetParent()) + { + static_cast(tempView->GetParent())->Remove(tempView); + } + delete tempView; + } + delete container_; + container_ = nullptr; + } + + void TraingEndnoteView::PreLoad(void) + { + if (!viewiInitStatus) + { + InitView(); + viewiInitStatus = true; + } + } + void TraingEndnoteView::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(TraingEndnotePresenter::GetInstance()); + if (draglistener == nullptr) + { + return; + } + container_->SetOnDragListener(draglistener); + + container_->SetTouchable(true); + container_->SetDraggable(true); + + PreLoad(); + RootView::GetInstance()->Add(container_); + } + + void TraingEndnoteView::OnSetUpView() + { + + View::OnSetUpView(); + Draw(); + } + + void TraingEndnoteView::OnTearDownView() + { + + View::OnTearDownView(); + return; + } + + void TraingEndnoteView::OnStop() + { + View::OnStop(); + RootView::GetInstance()->RemoveAll(); + return; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSPresenter.cpp new file mode 100644 index 000000000..8bb2633bc --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSPresenter.cpp @@ -0,0 +1,84 @@ +#include "AppViewIDs.h" +#include "NativeAbility.h" + +#include +#include +#include +#include "traing/include/TraingGPSPresenter.h" +// #include "TraingGPSView.h" + +namespace OHOS +{ + + // 当前Presenter属性实例化的内存指针 + static TraingGPSPresenter *g_pTraingGPSPresenter = nullptr; + + TraingGPSPresenter::TraingGPSPresenter() + { + + g_pTraingGPSPresenter = this; + } + + TraingGPSPresenter::~TraingGPSPresenter() + { + + g_pTraingGPSPresenter = nullptr; + } + + TraingGPSPresenter *TraingGPSPresenter::GetInstance() + { + + return g_pTraingGPSPresenter; + } + + void TraingGPSPresenter::OnStart() + { + + Presenter::OnStart(); + } + + void TraingGPSPresenter::OnPause(void) + { + + Presenter::OnPause(); + } + + void TraingGPSPresenter::OnResume(void) + { + + Presenter::OnResume(); + } + + void TraingGPSPresenter::OnStop(void) + { + + Presenter::OnStop(); + } + + bool TraingGPSPresenter::OnDrag(UIView &view, const DragEvent &event) + { + + if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && + (event.GetDeltaX() > 40) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY())))) + { + uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId(); + //NativeAbility::GetInstance().ChangeSlice(VIEW_TRAINING); + } + UNUSED(view); + return true; + } + + bool TraingGPSPresenter::OnClick(UIView &view, const ClickEvent &event) + { + // 根据控件id查找是哪个控件触发了点击回调 + if (strcmp(view.GetViewId(), BUTTONSET) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGGPSSET); + } + if (strcmp(view.GetViewId(), BUTTONGO) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGCONTROL); + } + return true; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSView.cpp new file mode 100644 index 000000000..46d4807c6 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSView.cpp @@ -0,0 +1,231 @@ + +#include "traing/include/TraingGPSView.h" + +#include "common/image_cache_manager.h" +#include "UiConfig.h" +#include "ui_resource_image.h" +#include +#include "components/ui_button.h" +namespace OHOS +{ + static const char *imagePath_heartrate = "/user/res/Training/heartrate_1.bin"; + static const char *imagePath_GPS = "/user/res/Training/GPS_1.bin"; + static TraingGPSView *g_pTraingGPSView{nullptr}; + + TraingGPSView::TraingGPSView() + { + g_pTraingGPSView = this; + } + + TraingGPSView::~TraingGPSView() + { + DeInit(); + g_pTraingGPSView = nullptr; + } + + TraingGPSView *TraingGPSView::GetInstance() + { + + return g_pTraingGPSView; + } + /* + InitLabel:初始化标签 + @param label 标签指针 + @param left 标签左边位置 + @param top 标签顶部位置 + @param width 标签宽度 + @param height 标签高度 + @param viewId 标签的视图 ID + @param text 标签显示的文本 + @param fontName 字体名称 + @param fontSize 字体大小 + */ + void TraingGPSView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize) + { + // 检查标签指针是否为空 + if (label == nullptr) + { + label = new UILabel(); + } + // 设置标签的位置和大小 + label->SetPosition(left, top); + label->Resize(width, height); + // 设置标签的视图 ID + label->SetViewId(viewId); + // 设置标签的样式 + label->SetStyle(STYLE_TEXT_FONT, fontSize); + label->SetFont(fontName, fontSize); + // 设置标签的文本和其他属性 + label->SetText(text); + label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label->SetRollSpeed(0); + // 设置标签可见 + label->SetVisible(true); + } + /* + InitButton:初始化按钮 + @param button 按钮指针 + @param left 按钮左边位置 + @param top 按钮顶部位置 + @param width 按钮宽度 + @param height 按钮高度 + @param viewId 按钮的视图 ID + */ + void TraingGPSView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId) + { + // 设置按钮的背景颜色 + uint32_t backgroundColor = 0xff191919; // 默认背景颜色 + uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色 + uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色 + // 创建新按钮(如果当前按钮为空) + if (button == nullptr) + { + button = new UIButton(); + } + button->SetPosition(left, top); + button->Resize(width, height); + button->SetViewId(viewId); + button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor); + button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED); + button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED); + // 设置按钮的点击事件监听器为 TraingGPSPresenter 的实例 + button->SetOnClickListener(static_cast(TraingGPSPresenter::GetInstance())); + // 设置按钮可见 + button->SetVisible(true); + } + /* + InitImageView:初始化图片 + @param imageView 图片指针 + @param left 图片左边位置 + @param top 图片顶部位置 + @param width 图片宽度 + @param height 图片高度 + @param viewId 图片的视图 ID + @param imagePath 图片路径 + */ + void TraingGPSView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath) + { + if (imageView == nullptr) + { + imageView = new UIImageView(); + } + imageView->SetPosition(left, top); + imageView->Resize(width, height); + imageView->SetViewId(viewId); + imageView->SetSrc(imagePath); + imageView->SetVisible(true); + } + + /* InitView:初始化界面*/ + void TraingGPSView ::InitView() + { + if (container_ == nullptr) + { + container_ = new UIViewGroup(); + container_->SetPosition(0, 0, 466, 466); + container_->SetStyle(STYLE_BACKGROUND_OPA, 0); + } + + // 初始化Lable + InitLabel(label1_, 203, 52, 195, 35, "label1", "骑行", DEFAULT_VECTOR_FONT_FILENAME, 30); + container_->Add(label1_); + InitLabel(label2_, 160, 370, 146, 35, "label2", "设定目标 >", DEFAULT_VECTOR_FONT_FILENAME, 30); + container_->Add(label2_); + InitLabel(label3_, 41, 237, 54, 41, "lable3", "144", DEFAULT_VECTOR_FONT_FILENAME, 35); + container_->Add(label3_); + InitLabel(label4_, 361, 237, 54, 41, "lable4", "GPS", DEFAULT_VECTOR_FONT_FILENAME, 35); + container_->Add(label4_); + // 初始化image + InitImageView(image1_, 48, 193, 40, 40, "image1", imagePath_heartrate); + InitImageView(image2_, 375, 193, 40, 40, "image2", imagePath_GPS); + container_->Add(image1_); + container_->Add(image2_); + // 初始化Button + InitButton(button1_, 133, 133, 200, 200, BUTTONGO); + // Set additional property + char *button1defaultImgSrc = "/user/res/Training/Go.bin"; + char *button1triggeredImgSrc = nullptr; + button1_->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc); + + InitButton(button2_, 160, 370, 146, 35, BUTTONSET); + button2_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000); // 设置为透明按键 + button2_->SetStyle(STYLE_BACKGROUND_OPA, 0x00); + button2_->SetStyleForState(STYLE_BACKGROUND_OPA, 0x80, UIButton::PRESSED); // 设置按下时的透明度为半透明 + + container_->Add(button1_); + container_->Add(button2_); + } + /* DeInit:删除组件*/ + void TraingGPSView::DeInit() + { + UIView *view = static_cast(container_)->GetChildrenHead(); + while (view != nullptr) + { + UIView *tempView = view; + view = view->GetNextSibling(); + if (tempView->GetParent()) + { + static_cast(tempView->GetParent())->Remove(tempView); + } + delete tempView; + } + delete container_; + container_ = nullptr; + } + + void TraingGPSView::PreLoad(void) + { + if (!viewiInitStatus) + { + InitView(); + viewiInitStatus = true; + } + } + void TraingGPSView::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(TraingGPSPresenter::GetInstance()); + if (draglistener == nullptr) + { + return; + } + container_->SetOnDragListener(draglistener); + + container_->SetTouchable(true); + container_->SetDraggable(true); + + PreLoad(); + RootView::GetInstance()->Add(container_); + } + + void TraingGPSView::OnSetUpView() + { + + View::OnSetUpView(); + Draw(); + } + + void TraingGPSView::OnTearDownView() + { + + View::OnTearDownView(); + return; + } + + void TraingGPSView::OnStop() + { + View::OnStop(); + RootView::GetInstance()->RemoveAll(); + return; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSbackPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSbackPresenter.cpp new file mode 100644 index 000000000..06be1922c --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSbackPresenter.cpp @@ -0,0 +1,80 @@ +#include "AppViewIDs.h" +#include "NativeAbility.h" + +#include +#include +#include +#include "traing/include/TraingGPSbackPresenter.h" +// #include "TraingGPSbackView.h" + +namespace OHOS +{ + + // 当前Presenter属性实例化的内存指针 + static TraingGPSbackPresenter *g_pTraingGPSbackPresenter = nullptr; + + TraingGPSbackPresenter::TraingGPSbackPresenter() + { + + g_pTraingGPSbackPresenter = this; + } + + TraingGPSbackPresenter::~TraingGPSbackPresenter() + { + + g_pTraingGPSbackPresenter = nullptr; + } + + TraingGPSbackPresenter *TraingGPSbackPresenter::GetInstance() + { + + return g_pTraingGPSbackPresenter; + } + + void TraingGPSbackPresenter::OnStart() + { + + Presenter::OnStart(); + } + + void TraingGPSbackPresenter::OnPause(void) + { + + Presenter::OnPause(); + } + + void TraingGPSbackPresenter::OnResume(void) + { + + Presenter::OnResume(); + } + + void TraingGPSbackPresenter::OnStop(void) + { + + Presenter::OnStop(); + } + + bool TraingGPSbackPresenter::OnDrag(UIView &view, const DragEvent &event) + { + + // if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && + // (event.GetDeltaX() > 40) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY())))) + // { + // uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId(); + // NativeAbility::GetInstance().ChangeSlice(preSlice); + // } + UNUSED(view); + return true; + } + + bool TraingGPSbackPresenter::OnClick(UIView &view, const ClickEvent &event) + { + // 根据控件id查找是哪个控件触发了点击回调 + if (strcmp(view.GetViewId(), BUTTONOK) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGCONTROL); + } + return true; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSbackView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSbackView.cpp new file mode 100644 index 000000000..2244133b6 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSbackView.cpp @@ -0,0 +1,220 @@ + +#include "traing/include/TraingGPSbackView.h" + +#include "common/image_cache_manager.h" +#include "UiConfig.h" +#include "ui_resource_image.h" +#include +#include "components/ui_button.h" +namespace OHOS +{ + static const char *imagePath_warning = "/user/res/Training/back.bin"; + static TraingGPSbackView *g_pTraingGPSbackView{nullptr}; + + TraingGPSbackView::TraingGPSbackView() + { + g_pTraingGPSbackView = this; + } + + TraingGPSbackView::~TraingGPSbackView() + { + DeInit(); + g_pTraingGPSbackView = nullptr; + } + + TraingGPSbackView *TraingGPSbackView::GetInstance() + { + + return g_pTraingGPSbackView; + } + /* + InitLabel:初始化标签 + @param label 标签指针 + @param left 标签左边位置 + @param top 标签顶部位置 + @param width 标签宽度 + @param height 标签高度 + @param viewId 标签的视图 ID + @param text 标签显示的文本 + @param fontName 字体名称 + @param fontSize 字体大小 + */ + void TraingGPSbackView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize) + { + // 检查标签指针是否为空 + if (label == nullptr) + { + label = new UILabel(); + } + // 设置标签的位置和大小 + label->SetPosition(left, top); + label->Resize(width, height); + // 设置标签的视图 ID + label->SetViewId(viewId); + // 设置标签的样式 + label->SetStyle(STYLE_TEXT_FONT, fontSize); + label->SetFont(fontName, fontSize); + // 设置标签的文本和其他属性 + label->SetText(text); + label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label->SetRollSpeed(0); + // 设置标签可见 + label->SetVisible(true); + } + /* + InitButton:初始化按钮 + @param button 按钮指针 + @param left 按钮左边位置 + @param top 按钮顶部位置 + @param width 按钮宽度 + @param height 按钮高度 + @param viewId 按钮的视图 ID + */ + void TraingGPSbackView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId) + { + // 设置按钮的背景颜色 + uint32_t backgroundColor = 0xff191919; // 默认背景颜色 + uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色 + uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色 + // 创建新按钮(如果当前按钮为空) + if (button == nullptr) + { + button = new UIButton(); + } + button->SetPosition(left, top); + button->Resize(width, height); + button->SetViewId(viewId); + button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor); + button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED); + button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED); + // 设置按钮的点击事件监听器为 TraingGPSbackPresenter 的实例 + button->SetOnClickListener(static_cast(TraingGPSbackPresenter::GetInstance())); + // 设置按钮可见 + button->SetVisible(true); + } + /* + InitImageView:初始化图片 + @param imageView 图片指针 + @param left 图片左边位置 + @param top 图片顶部位置 + @param width 图片宽度 + @param height 图片高度 + @param viewId 图片的视图 ID + @param imagePath 图片路径 + */ + void TraingGPSbackView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath) + { + if (imageView == nullptr) + { + imageView = new UIImageView(); + } + imageView->SetPosition(left, top); + imageView->Resize(width, height); + imageView->SetViewId(viewId); + imageView->SetSrc(imagePath); + imageView->SetVisible(true); + } + + /* InitView:初始化界面*/ + void TraingGPSbackView ::InitView() + { + if (container_ == nullptr) + { + container_ = new UIViewGroup(); + container_->SetPosition(0, 0, 466, 466); + container_->SetStyle(STYLE_BACKGROUND_OPA, 0); + } + + // 初始化Lable + InitLabel(label1_, 175, 52, 195, 35, "label1", "GPS连接", DEFAULT_VECTOR_FONT_FILENAME, 35); + container_->Add(label1_); + InitLabel(label2_, 55, 253, 146, 35, "label2", "GPS已连接,当前信号正常", DEFAULT_VECTOR_FONT_FILENAME, 30); + container_->Add(label2_); + + // 初始化image + InitImageView(image1_, 193, 140, 40, 40, "image1", imagePath_warning); + container_->Add(image1_); + + // 初始化Button + InitButton(button1_, 0, 366, 466, 100, BUTTONOK); + // Set additional property + char *button1defaultImgSrc = "/user/res/Training/buttonok.bin"; + char *button1triggeredImgSrc = nullptr; + button1_->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc); + container_->Add(button1_); + + } + /* DeInit:删除组件*/ + void TraingGPSbackView::DeInit() + { + UIView *view = static_cast(container_)->GetChildrenHead(); + while (view != nullptr) + { + UIView *tempView = view; + view = view->GetNextSibling(); + if (tempView->GetParent()) + { + static_cast(tempView->GetParent())->Remove(tempView); + } + delete tempView; + } + delete container_; + container_ = nullptr; + } + + void TraingGPSbackView::PreLoad(void) + { + if (!viewiInitStatus) + { + InitView(); + viewiInitStatus = true; + } + } + void TraingGPSbackView::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(TraingGPSbackPresenter::GetInstance()); + if (draglistener == nullptr) + { + return; + } + container_->SetOnDragListener(draglistener); + + container_->SetTouchable(true); + container_->SetDraggable(true); + + PreLoad(); + RootView::GetInstance()->Add(container_); + } + + void TraingGPSbackView::OnSetUpView() + { + + View::OnSetUpView(); + Draw(); + } + + void TraingGPSbackView::OnTearDownView() + { + + View::OnTearDownView(); + return; + } + + void TraingGPSbackView::OnStop() + { + View::OnStop(); + RootView::GetInstance()->RemoveAll(); + return; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSlackPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSlackPresenter.cpp new file mode 100644 index 000000000..8887c5338 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSlackPresenter.cpp @@ -0,0 +1,94 @@ +/*** + * @Author: Caisking 3449750381@qq.com + * @Date: 2023-12-12 16:55:28 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-01-16 15:44:47 + * @FilePath: /1.FD230/FD230/code/sdk/application/wearable/nativeapp/nativeui/traing/src/TraingGPSlackPresenter.cpp + * @Description: + * @ + * @Copyright (c) 2024 by Caisking , All Rights Reserved. + */ +#include "AppViewIDs.h" +#include "NativeAbility.h" + +#include +#include +#include +#include "traing/include/TraingGPSlackPresenter.h" +// #include "TraingGPSlackView.h" + +namespace OHOS +{ + + // 当前Presenter属性实例化的内存指针 + static TraingGPSlackPresenter *g_pTraingGPSlackPresenter = nullptr; + + TraingGPSlackPresenter::TraingGPSlackPresenter() + { + + g_pTraingGPSlackPresenter = this; + } + + TraingGPSlackPresenter::~TraingGPSlackPresenter() + { + + g_pTraingGPSlackPresenter = nullptr; + } + + TraingGPSlackPresenter *TraingGPSlackPresenter::GetInstance() + { + + return g_pTraingGPSlackPresenter; + } + + void TraingGPSlackPresenter::OnStart() + { + + Presenter::OnStart(); + } + + void TraingGPSlackPresenter::OnPause(void) + { + + Presenter::OnPause(); + } + + void TraingGPSlackPresenter::OnResume(void) + { + + Presenter::OnResume(); + } + + void TraingGPSlackPresenter::OnStop(void) + { + + Presenter::OnStop(); + } + + bool TraingGPSlackPresenter::OnDrag(UIView &view, const DragEvent &event) + { + + if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && + (event.GetDeltaX() > 40) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY())))) + { + uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId(); + //NativeAbility::GetInstance().ChangeSlice(VIEW_TRAINING); + } + UNUSED(view); + return true; + } + + bool TraingGPSlackPresenter::OnClick(UIView &view, const ClickEvent &event) + { + // 根据控件id查找是哪个控件触发了点击回调 + if (strcmp(view.GetViewId(), BUTTONSET) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGSET); + } + if (strcmp(view.GetViewId(), BUTTONGO) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGGPSNOTE); + } + return true; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSlackView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSlackView.cpp new file mode 100644 index 000000000..383e6a654 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSlackView.cpp @@ -0,0 +1,231 @@ + +#include "traing/include/TraingGPSlackView.h" + +#include "common/image_cache_manager.h" +#include "UiConfig.h" +#include "ui_resource_image.h" +#include +#include "components/ui_button.h" +namespace OHOS +{ + static const char *imagePath_heartrate = "/user/res/Training/heartrate_2.bin"; + static const char *imagePath_GPS = "/user/res/Training/GPS_2.bin"; + static TraingGPSlackView *g_pTraingGPSlackView{nullptr}; + + TraingGPSlackView::TraingGPSlackView() + { + g_pTraingGPSlackView = this; + } + + TraingGPSlackView::~TraingGPSlackView() + { + DeInit(); + g_pTraingGPSlackView = nullptr; + } + + TraingGPSlackView *TraingGPSlackView::GetInstance() + { + + return g_pTraingGPSlackView; + } + /* + InitLabel:初始化标签 + @param label 标签指针 + @param left 标签左边位置 + @param top 标签顶部位置 + @param width 标签宽度 + @param height 标签高度 + @param viewId 标签的视图 ID + @param text 标签显示的文本 + @param fontName 字体名称 + @param fontSize 字体大小 + */ + void TraingGPSlackView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize) + { + // 检查标签指针是否为空 + if (label == nullptr) + { + label = new UILabel(); + } + // 设置标签的位置和大小 + label->SetPosition(left, top); + label->Resize(width, height); + // 设置标签的视图 ID + label->SetViewId(viewId); + // 设置标签的样式 + label->SetStyle(STYLE_TEXT_FONT, fontSize); + label->SetFont(fontName, fontSize); + // 设置标签的文本和其他属性 + label->SetText(text); + label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label->SetRollSpeed(0); + // 设置标签可见 + label->SetVisible(true); + } + /* + InitButton:初始化按钮 + @param button 按钮指针 + @param left 按钮左边位置 + @param top 按钮顶部位置 + @param width 按钮宽度 + @param height 按钮高度 + @param viewId 按钮的视图 ID + */ + void TraingGPSlackView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId) + { + // 设置按钮的背景颜色 + uint32_t backgroundColor = 0xff191919; // 默认背景颜色 + uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色 + uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色 + // 创建新按钮(如果当前按钮为空) + if (button == nullptr) + { + button = new UIButton(); + } + button->SetPosition(left, top); + button->Resize(width, height); + button->SetViewId(viewId); + button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor); + button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED); + button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED); + // 设置按钮的点击事件监听器为 TraingGPSlackPresenter 的实例 + button->SetOnClickListener(static_cast(TraingGPSlackPresenter::GetInstance())); + // 设置按钮可见 + button->SetVisible(true); + } + /* + InitImageView:初始化图片 + @param imageView 图片指针 + @param left 图片左边位置 + @param top 图片顶部位置 + @param width 图片宽度 + @param height 图片高度 + @param viewId 图片的视图 ID + @param imagePath 图片路径 + */ + void TraingGPSlackView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath) + { + if (imageView == nullptr) + { + imageView = new UIImageView(); + } + imageView->SetPosition(left, top); + imageView->Resize(width, height); + imageView->SetViewId(viewId); + imageView->SetSrc(imagePath); + imageView->SetVisible(true); + } + + /* InitView:初始化界面*/ + void TraingGPSlackView ::InitView() + { + if (container_ == nullptr) + { + container_ = new UIViewGroup(); + container_->SetPosition(0, 0, 466, 466); + container_->SetStyle(STYLE_BACKGROUND_OPA, 0); + } + + // 初始化Lable + InitLabel(label1_, 203, 52, 195, 35, "label1", "骑行", DEFAULT_VECTOR_FONT_FILENAME, 30); + container_->Add(label1_); + InitLabel(label2_, 160, 370, 146, 35, "label2", "设定目标 >", DEFAULT_VECTOR_FONT_FILENAME, 30); + container_->Add(label2_); + InitLabel(label3_, 41, 237, 54, 41, "lable3", "--", DEFAULT_VECTOR_FONT_FILENAME, 35); + container_->Add(label3_); + InitLabel(label4_, 361, 237, 54, 41, "lable4", "--", DEFAULT_VECTOR_FONT_FILENAME, 35); + container_->Add(label4_); + // 初始化image + InitImageView(image1_, 48, 193, 40, 40, "image1", imagePath_heartrate); + InitImageView(image2_, 375, 193, 40, 40, "image2", imagePath_GPS); + container_->Add(image1_); + container_->Add(image2_); + // 初始化Button + InitButton(button1_, 133, 133, 200, 200, BUTTONGO); + // Set additional property + char *button1defaultImgSrc = "/user/res/Training/Go_2.bin"; + char *button1triggeredImgSrc = nullptr; + button1_->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc); + + InitButton(button2_, 160, 370, 146, 35, BUTTONSET); + button2_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000); // 设置为透明按键 + button2_->SetStyle(STYLE_BACKGROUND_OPA, 0x00); + button2_->SetStyleForState(STYLE_BACKGROUND_OPA, 0x80, UIButton::PRESSED); // 设置按下时的透明度为半透明 + + container_->Add(button1_); + container_->Add(button2_); + } + /* DeInit:删除组件*/ + void TraingGPSlackView::DeInit() + { + UIView *view = static_cast(container_)->GetChildrenHead(); + while (view != nullptr) + { + UIView *tempView = view; + view = view->GetNextSibling(); + if (tempView->GetParent()) + { + static_cast(tempView->GetParent())->Remove(tempView); + } + delete tempView; + } + delete container_; + container_ = nullptr; + } + + void TraingGPSlackView::PreLoad(void) + { + if (!viewiInitStatus) + { + InitView(); + viewiInitStatus = true; + } + } + void TraingGPSlackView::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(TraingGPSlackPresenter::GetInstance()); + if (draglistener == nullptr) + { + return; + } + container_->SetOnDragListener(draglistener); + + container_->SetTouchable(true); + container_->SetDraggable(true); + + PreLoad(); + RootView::GetInstance()->Add(container_); + } + + void TraingGPSlackView::OnSetUpView() + { + + View::OnSetUpView(); + Draw(); + } + + void TraingGPSlackView::OnTearDownView() + { + + View::OnTearDownView(); + return; + } + + void TraingGPSlackView::OnStop() + { + View::OnStop(); + RootView::GetInstance()->RemoveAll(); + return; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSlostPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSlostPresenter.cpp new file mode 100644 index 000000000..1f895c790 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSlostPresenter.cpp @@ -0,0 +1,80 @@ +#include "AppViewIDs.h" +#include "NativeAbility.h" + +#include +#include +#include +#include "traing/include/TraingGPSlostPresenter.h" +// #include "TraingGPSlostView.h" + +namespace OHOS +{ + + // 当前Presenter属性实例化的内存指针 + static TraingGPSlostPresenter *g_pTraingGPSlostPresenter = nullptr; + + TraingGPSlostPresenter::TraingGPSlostPresenter() + { + + g_pTraingGPSlostPresenter = this; + } + + TraingGPSlostPresenter::~TraingGPSlostPresenter() + { + + g_pTraingGPSlostPresenter = nullptr; + } + + TraingGPSlostPresenter *TraingGPSlostPresenter::GetInstance() + { + + return g_pTraingGPSlostPresenter; + } + + void TraingGPSlostPresenter::OnStart() + { + + Presenter::OnStart(); + } + + void TraingGPSlostPresenter::OnPause(void) + { + + Presenter::OnPause(); + } + + void TraingGPSlostPresenter::OnResume(void) + { + + Presenter::OnResume(); + } + + void TraingGPSlostPresenter::OnStop(void) + { + + Presenter::OnStop(); + } + + bool TraingGPSlostPresenter::OnDrag(UIView &view, const DragEvent &event) + { + + // if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && + // (event.GetDeltaX() > 40) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY())))) + // { + // uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId(); + // NativeAbility::GetInstance().ChangeSlice(preSlice); + // } + UNUSED(view); + return true; + } + + bool TraingGPSlostPresenter::OnClick(UIView &view, const ClickEvent &event) + { + // 根据控件id查找是哪个控件触发了点击回调 + if (strcmp(view.GetViewId(), BUTTONOK) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGGPSBACK); + } + return true; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSlostView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSlostView.cpp new file mode 100644 index 000000000..aa275c63d --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSlostView.cpp @@ -0,0 +1,220 @@ + +#include "traing/include/TraingGPSlostView.h" + +#include "common/image_cache_manager.h" +#include "UiConfig.h" +#include "ui_resource_image.h" +#include +#include "components/ui_button.h" +namespace OHOS +{ + static const char *imagePath_warning = "/user/res/Training/warning.bin"; + static TraingGPSlostView *g_pTraingGPSlostView{nullptr}; + + TraingGPSlostView::TraingGPSlostView() + { + g_pTraingGPSlostView = this; + } + + TraingGPSlostView::~TraingGPSlostView() + { + DeInit(); + g_pTraingGPSlostView = nullptr; + } + + TraingGPSlostView *TraingGPSlostView::GetInstance() + { + + return g_pTraingGPSlostView; + } + /* + InitLabel:初始化标签 + @param label 标签指针 + @param left 标签左边位置 + @param top 标签顶部位置 + @param width 标签宽度 + @param height 标签高度 + @param viewId 标签的视图 ID + @param text 标签显示的文本 + @param fontName 字体名称 + @param fontSize 字体大小 + */ + void TraingGPSlostView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize) + { + // 检查标签指针是否为空 + if (label == nullptr) + { + label = new UILabel(); + } + // 设置标签的位置和大小 + label->SetPosition(left, top); + label->Resize(width, height); + // 设置标签的视图 ID + label->SetViewId(viewId); + // 设置标签的样式 + label->SetStyle(STYLE_TEXT_FONT, fontSize); + label->SetFont(fontName, fontSize); + // 设置标签的文本和其他属性 + label->SetText(text); + label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label->SetRollSpeed(0); + // 设置标签可见 + label->SetVisible(true); + } + /* + InitButton:初始化按钮 + @param button 按钮指针 + @param left 按钮左边位置 + @param top 按钮顶部位置 + @param width 按钮宽度 + @param height 按钮高度 + @param viewId 按钮的视图 ID + */ + void TraingGPSlostView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId) + { + // 设置按钮的背景颜色 + uint32_t backgroundColor = 0xff191919; // 默认背景颜色 + uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色 + uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色 + // 创建新按钮(如果当前按钮为空) + if (button == nullptr) + { + button = new UIButton(); + } + button->SetPosition(left, top); + button->Resize(width, height); + button->SetViewId(viewId); + button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor); + button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED); + button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED); + // 设置按钮的点击事件监听器为 TraingGPSlostPresenter 的实例 + button->SetOnClickListener(static_cast(TraingGPSlostPresenter::GetInstance())); + // 设置按钮可见 + button->SetVisible(true); + } + /* + InitImageView:初始化图片 + @param imageView 图片指针 + @param left 图片左边位置 + @param top 图片顶部位置 + @param width 图片宽度 + @param height 图片高度 + @param viewId 图片的视图 ID + @param imagePath 图片路径 + */ + void TraingGPSlostView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath) + { + if (imageView == nullptr) + { + imageView = new UIImageView(); + } + imageView->SetPosition(left, top); + imageView->Resize(width, height); + imageView->SetViewId(viewId); + imageView->SetSrc(imagePath); + imageView->SetVisible(true); + } + + /* InitView:初始化界面*/ + void TraingGPSlostView ::InitView() + { + if (container_ == nullptr) + { + container_ = new UIViewGroup(); + container_->SetPosition(0, 0, 466, 466); + container_->SetStyle(STYLE_BACKGROUND_OPA, 0); + } + + // 初始化Lable + InitLabel(label1_, 175, 52, 195, 35, "label1", "GPS丢失", DEFAULT_VECTOR_FONT_FILENAME, 35); + container_->Add(label1_); + InitLabel(label2_, 55, 253, 146, 35, "label2", "当前位置搜索不到GPS信号", DEFAULT_VECTOR_FONT_FILENAME, 30); + container_->Add(label2_); + + // 初始化image + InitImageView(image1_, 193, 140, 40, 40, "image1", imagePath_warning); + container_->Add(image1_); + + // 初始化Button + InitButton(button1_, 0, 366, 466, 100, BUTTONOK); + // Set additional property + char *button1defaultImgSrc = "/user/res/Training/buttonok.bin"; + char *button1triggeredImgSrc = nullptr; + button1_->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc); + container_->Add(button1_); + + } + /* DeInit:删除组件*/ + void TraingGPSlostView::DeInit() + { + UIView *view = static_cast(container_)->GetChildrenHead(); + while (view != nullptr) + { + UIView *tempView = view; + view = view->GetNextSibling(); + if (tempView->GetParent()) + { + static_cast(tempView->GetParent())->Remove(tempView); + } + delete tempView; + } + delete container_; + container_ = nullptr; + } + + void TraingGPSlostView::PreLoad(void) + { + if (!viewiInitStatus) + { + InitView(); + viewiInitStatus = true; + } + } + void TraingGPSlostView::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(TraingGPSlostPresenter::GetInstance()); + if (draglistener == nullptr) + { + return; + } + container_->SetOnDragListener(draglistener); + + container_->SetTouchable(true); + container_->SetDraggable(true); + + PreLoad(); + RootView::GetInstance()->Add(container_); + } + + void TraingGPSlostView::OnSetUpView() + { + + View::OnSetUpView(); + Draw(); + } + + void TraingGPSlostView::OnTearDownView() + { + + View::OnTearDownView(); + return; + } + + void TraingGPSlostView::OnStop() + { + View::OnStop(); + RootView::GetInstance()->RemoveAll(); + return; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSnotePresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSnotePresenter.cpp new file mode 100644 index 000000000..dc9666373 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSnotePresenter.cpp @@ -0,0 +1,84 @@ +#include "AppViewIDs.h" +#include "NativeAbility.h" + +#include +#include +#include +#include "traing/include/TraingGPSnotePresenter.h" +// #include "TraingGPSnoteView.h" + +namespace OHOS +{ + + // 当前Presenter属性实例化的内存指针 + static TraingGPSnotePresenter *g_pTraingGPSnotePresenter = nullptr; + + TraingGPSnotePresenter::TraingGPSnotePresenter() + { + + g_pTraingGPSnotePresenter = this; + } + + TraingGPSnotePresenter::~TraingGPSnotePresenter() + { + + g_pTraingGPSnotePresenter = nullptr; + } + + TraingGPSnotePresenter *TraingGPSnotePresenter::GetInstance() + { + + return g_pTraingGPSnotePresenter; + } + + void TraingGPSnotePresenter::OnStart() + { + + Presenter::OnStart(); + } + + void TraingGPSnotePresenter::OnPause(void) + { + + Presenter::OnPause(); + } + + void TraingGPSnotePresenter::OnResume(void) + { + + Presenter::OnResume(); + } + + void TraingGPSnotePresenter::OnStop(void) + { + + Presenter::OnStop(); + } + + bool TraingGPSnotePresenter::OnDrag(UIView &view, const DragEvent &event) + { + + if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && + (event.GetDeltaX() > 40) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY())))) + { + uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId(); + NativeAbility::GetInstance().ChangeSlice(preSlice); + } + UNUSED(view); + return true; + } + + bool TraingGPSnotePresenter::OnClick(UIView &view, const ClickEvent &event) + { + // 根据控件id查找是哪个控件触发了点击回调 + if (strcmp(view.GetViewId(), BUTTONBACK) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGGPSLACK); + } + if (strcmp(view.GetViewId(), BUTTONGO) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGGPSLOST); + } + return true; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSnoteView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSnoteView.cpp new file mode 100644 index 000000000..34c4f75fa --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSnoteView.cpp @@ -0,0 +1,254 @@ + +#include "traing/include/TraingGPSnoteView.h" + +#include "common/image_cache_manager.h" +#include "UiConfig.h" +#include "ui_resource_image.h" +#include +#include "components/ui_button.h" +namespace OHOS +{ + static const char *imagePath_warning = "/user/res/Training/warning.bin"; + + static TraingGPSnoteView *g_pTraingGPSnoteView{nullptr}; + + TraingGPSnoteView::TraingGPSnoteView() + { + g_pTraingGPSnoteView = this; + } + + TraingGPSnoteView::~TraingGPSnoteView() + { + DeInit(); + g_pTraingGPSnoteView = nullptr; + } + + TraingGPSnoteView *TraingGPSnoteView::GetInstance() + { + + return g_pTraingGPSnoteView; + } + + /* + InitLabel:初始化标签 + @param label 标签指针 + @param left 标签左边位置 + @param top 标签顶部位置 + @param width 标签宽度 + @param height 标签高度 + @param viewId 标签的视图 ID + @param text 标签显示的文本 + @param fontName 字体名称 + @param fontSize 字体大小 + */ + void TraingGPSnoteView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize) + { + // 检查标签指针是否为空 + if (label == nullptr) + { + label = new UILabel(); + } + // 设置标签的位置和大小 + label->SetPosition(left, top); + label->Resize(width, height); + // 设置标签的视图 ID + label->SetViewId(viewId); + // 设置标签的样式 + label->SetStyle(STYLE_TEXT_FONT, fontSize); + label->SetFont(fontName, fontSize); + // 设置标签的文本和其他属性 + label->SetText(text); + label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + label1_->SetTextColor(Color::GetColorFromRGBA(0x22, 0x9d, 0xd3, 0xff)); + label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label->SetRollSpeed(0); + // 设置标签可见 + label->SetVisible(true); + } + /* + InitButton:初始化按钮 + @param button 按钮指针 + @param left 按钮左边位置 + @param top 按钮顶部位置 + @param width 按钮宽度 + @param height 按钮高度 + @param viewId 按钮的视图 ID + */ + void TraingGPSnoteView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId) + { + // 设置按钮的背景颜色 + uint32_t backgroundColor = 0xff191919; // 默认背景颜色 + uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色 + uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色 + // 创建新按钮(如果当前按钮为空) + if (button == nullptr) + { + button = new UIButton(); + } + button->SetPosition(left, top); + button->Resize(width, height); + button->SetViewId(viewId); + button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor); + button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED); + button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED); + // 设置按钮的点击事件监听器为 TraingGPSnotePresenter 的实例 + button->SetOnClickListener(static_cast(TraingGPSnotePresenter::GetInstance())); + // 设置按钮可见 + button->SetVisible(true); + } + /* + InitImageView:初始化图片 + @param imageView 图片指针 + @param left 图片左边位置 + @param top 图片顶部位置 + @param width 图片宽度 + @param height 图片高度 + @param viewId 图片的视图 ID + @param imagePath 图片路径 + */ + void TraingGPSnoteView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath) + { + if (imageView == nullptr) + { + imageView = new UIImageView(); + } + imageView->SetPosition(left, top); + imageView->Resize(width, height); + imageView->SetViewId(viewId); + imageView->SetSrc(imagePath); + imageView->SetVisible(true); + } + /* InitView:初始化界面*/ + void TraingGPSnoteView ::InitView() + { + if (container_ == nullptr) + { + container_ = new UIViewGroup(); + container_->SetPosition(0, 0, 466, 466); + container_->SetStyle(STYLE_BACKGROUND_OPA, 0); + } + + // Add ScrollView to App + if (scrollView1_ == nullptr) + { + scrollView1_ = new UIScrollView(); + } + scrollView1_->SetPosition(0, 0); // widget's left position and top position + scrollView1_->Resize(466, 466); // widget's width and height + scrollView1_->SetViewId("scrollView1"); // Set style + scrollView1_->SetReboundSize(100); + scrollView1_->SetScrollBlankSize(52); + scrollView1_->SetHorizontalScrollState(false); + // Add to rootView + container_->Add(scrollView1_); + scrollView1_->SetVisible(true); + + // 初始化Image + InitImageView(image1_, 193, 111, 80, 80, "image1", imagePath_warning); + scrollView1_->Add(image1_); + + // 初始化button + InitButton(button1_, 118, 334, 230, 80, BUTTONBACK); + button1_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff4fc34c); + scrollView1_->Add(button1_); + + InitButton(button2_, 118, 434, 230, 80, BUTTONGO); + scrollView1_->Add(button2_); + + // 初始化Lable + InitLabel(label1_, 160, 52, 90, 35, "label1", "GPS未准备", DEFAULT_VECTOR_FONT_FILENAME, 30); + InitLabel(label2_, 33, 215, 60, 40, "label2", "GPS仍在定位,建议等待定位\n完成后再开始训练", DEFAULT_VECTOR_FONT_FILENAME, 30); + InitLabel(label3_, 181, 357, 60, 40, "label3", "继续等待", DEFAULT_VECTOR_FONT_FILENAME, 30); + InitLabel(label4_, 181, 457, 60, 40, "label4", "直接开始", DEFAULT_VECTOR_FONT_FILENAME, 30); + + scrollView1_->Add(label1_); + scrollView1_->Add(label2_); + scrollView1_->Add(label3_); + scrollView1_->Add(label4_); + + // Add ImageView to App + if (image2_ == nullptr) + { + image2_ = new UIImageView(); + } + image2_->SetPosition(181, 500); // widget's left position and top position + image2_->Resize(100, 100); // widget's width and height + image2_->SetViewId("image7"); // Set style + // Add to rootView + scrollView1_->Add(image2_); + image2_->SetVisible(true); + } + + /* DeInit:删除组件 */ + void TraingGPSnoteView::DeInit() + { + UIView *view = static_cast(container_)->GetChildrenHead(); + while (view != nullptr) + { + UIView *tempView = view; + view = view->GetNextSibling(); + if (tempView->GetParent()) + { + static_cast(tempView->GetParent())->Remove(tempView); + } + delete tempView; + } + delete container_; + container_ = nullptr; + } + + void TraingGPSnoteView::PreLoad(void) + { + if (!viewiInitStatus) + { + InitView(); + viewiInitStatus = true; + } + } + void TraingGPSnoteView::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(TraingGPSnotePresenter::GetInstance()); + if (draglistener == nullptr) + { + return; + } + container_->SetOnDragListener(draglistener); + + container_->SetTouchable(true); + container_->SetDraggable(true); + + PreLoad(); + RootView::GetInstance()->Add(container_); + } + + void TraingGPSnoteView::OnSetUpView() + { + + View::OnSetUpView(); + Draw(); + } + + void TraingGPSnoteView::OnTearDownView() + { + + View::OnTearDownView(); + return; + } + + void TraingGPSnoteView::OnStop() + { + View::OnStop(); + RootView::GetInstance()->RemoveAll(); + return; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSsetPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSsetPresenter.cpp new file mode 100644 index 000000000..706a1243b --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSsetPresenter.cpp @@ -0,0 +1,92 @@ +#include "AppViewIDs.h" +#include "NativeAbility.h" + +#include +#include +#include +#include "traing/include/TraingGPSsetPresenter.h" +// #include "TraingGPSsetView.h" + +namespace OHOS +{ + + // 当前Presenter属性实例化的内存指针 + static TraingGPSsetPresenter *g_pTraingGPSsetPresenter = nullptr; + + TraingGPSsetPresenter::TraingGPSsetPresenter() + { + + g_pTraingGPSsetPresenter = this; + } + + TraingGPSsetPresenter::~TraingGPSsetPresenter() + { + + g_pTraingGPSsetPresenter = nullptr; + } + + TraingGPSsetPresenter *TraingGPSsetPresenter::GetInstance() + { + + return g_pTraingGPSsetPresenter; + } + + void TraingGPSsetPresenter::OnStart() + { + + Presenter::OnStart(); + } + + void TraingGPSsetPresenter::OnPause(void) + { + + Presenter::OnPause(); + } + + void TraingGPSsetPresenter::OnResume(void) + { + + Presenter::OnResume(); + } + + void TraingGPSsetPresenter::OnStop(void) + { + + Presenter::OnStop(); + } + + bool TraingGPSsetPresenter::OnDrag(UIView &view, const DragEvent &event) + { + + if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && + (event.GetDeltaX() > 40) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY())))) + { + uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId(); + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGGPS); + } + UNUSED(view); + return true; + } + + bool TraingGPSsetPresenter::OnClick(UIView &view, const ClickEvent &event) + { + // 根据控件id查找是哪个控件触发了点击回调 + if (strcmp(view.GetViewId(), BUTTONTIME) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGSETTIME); + } + if (strcmp(view.GetViewId(), BUTTONMIL) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGSETDIST); + } + if (strcmp(view.GetViewId(), BUTTONCALULI) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGSETCALULI); + } + if (strcmp(view.GetViewId(), BUTTONWALK) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGSETSTEP); + } + return true; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSsetView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSsetView.cpp new file mode 100644 index 000000000..bd19af445 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingGPSsetView.cpp @@ -0,0 +1,301 @@ + +#include "traing/include/TraingGPSsetView.h" + +#include "common/image_cache_manager.h" +#include "UiConfig.h" +#include "ui_resource_image.h" +#include +#include "components/ui_button.h" +namespace OHOS +{ + // 定义全局变量 + static char *imagePaths[] = {"/user/res/Training/time.bin", + "/user/res/Training/mileage.bin", + "/user/res/Training/calories.bin", + "/user/res/Training/walking.bin"}; + + static char *text[] = {"时长", "距离", "卡路里", "步数"}; + static const char *imagePath_iocn = "/user/res/Training/icon.bin"; + static TraingGPSsetView *g_pTraingGPSsetView{nullptr}; + + TraingGPSsetView::TraingGPSsetView() + { + g_pTraingGPSsetView = this; + } + + TraingGPSsetView::~TraingGPSsetView() + { + DeInit(); + g_pTraingGPSsetView = nullptr; + } + + TraingGPSsetView *TraingGPSsetView::GetInstance() + { + + return g_pTraingGPSsetView; + } + /* + InitLabel:初始化标签 + @param label 标签指针 + @param left 标签左边位置 + @param top 标签顶部位置 + @param width 标签宽度 + @param height 标签高度 + @param viewId 标签的视图 ID + @param text 标签显示的文本 + @param fontName 字体名称 + @param fontSize 字体大小 + */ + void TraingGPSsetView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize) + { + // 检查标签指针是否为空 + if (label == nullptr) + { + label = new UILabel(); + } + // 设置标签的位置和大小 + label->SetPosition(left, top); + label->Resize(width, height); + // 设置标签的视图 ID + label->SetViewId(viewId); + // 设置标签的样式 + label->SetStyle(STYLE_TEXT_FONT, fontSize); + label->SetFont(fontName, fontSize); + // 设置标签的文本和其他属性 + label->SetText(text); + label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label->SetRollSpeed(0); + // 设置标签可见 + label->SetVisible(true); + } + /* + InitButton:初始化按钮 + @param button 按钮指针 + @param left 按钮左边位置 + @param top 按钮顶部位置 + @param width 按钮宽度 + @param height 按钮高度 + @param viewId 按钮的视图 ID + */ + void TraingGPSsetView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId) + { + // 设置按钮的背景颜色 + uint32_t backgroundColor = 0xff191919; // 默认背景颜色 + uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色 + uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色 + // 创建新按钮(如果当前按钮为空) + if (button == nullptr) + { + button = new UIButton(); + } + button->SetPosition(left, top); + button->Resize(width, height); + button->SetViewId(viewId); + button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor); + button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED); + button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED); + // 设置按钮的点击事件监听器为 TraingGPSsetPresenter 的实例 + button->SetOnClickListener(static_cast(TraingGPSsetPresenter::GetInstance())); + // 设置按钮可见 + button->SetVisible(true); + } + /* + InitImageView:初始化图片 + @param imageView 图片指针 + @param left 图片左边位置 + @param top 图片顶部位置 + @param width 图片宽度 + @param height 图片高度 + @param viewId 图片的视图 ID + @param imagePath 图片路径 + */ + void TraingGPSsetView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath) + { + if (imageView == nullptr) + { + imageView = new UIImageView(); + } + imageView->SetPosition(left, top); + imageView->Resize(width, height); + imageView->SetViewId(viewId); + imageView->SetSrc(imagePath); + imageView->SetVisible(true); + } + /* Traing:初始化list */ + void TraingGPSsetView::InitList() + { + // Add List to App + if (list1_ == nullptr) + { + list1_ = new UIList(); + } + list1_->SetPosition(60, 110); // widget's left position and top position + list1_->Resize(300, 530); // widget's width and height + list1_->SetViewId("list1"); // Set style + list1_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000); + list1_->SetStyle(STYLE_BACKGROUND_OPA, 0x00); + + // Set additional property + if (list1data_ == nullptr) + { + list1data_ = new List(); + } + + // 使用全局变量来初始化列表项 + for (int i = 0; i < 4; ++i) + { + IconItemNode *listData = new IconItemNode(); + listData->imagePath = imagePaths[i]; + listData->txt = text[i]; + list1data_->PushBack(listData); + } + + if (list1adapter_ == nullptr) + { + list1adapter_ = new IconAdapter(); + } + list1adapter_->SetItemSize(190, 120); + list1adapter_->SetImageSize(70, 120); + list1adapter_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + list1adapter_->SetData(list1data_); + list1_->SetAdapter(list1adapter_); + + // Add to scrollView1 + // scrollView1_->Add(list1_); + list1_->SetVisible(true); + } + /* InitView:初始化界面*/ + void TraingGPSsetView ::InitView() + { + if (container_ == nullptr) + { + container_ = new UIViewGroup(); + container_->SetPosition(0, 0, 466, 466); + container_->SetStyle(STYLE_BACKGROUND_OPA, 0); + } + // Add ScrollView to App + if (scrollView1_ == nullptr) + { + scrollView1_ = new UIScrollView(); + } + scrollView1_->SetPosition(0, 0); // widget's left position and top position + scrollView1_->Resize(466, 466); // widget's width and height + scrollView1_->SetViewId("scrollView1"); // Set style + scrollView1_->SetStyle(STYLE_BACKGROUND_OPA, 0xff); + scrollView1_->SetReboundSize(100); + scrollView1_->SetScrollBlankSize(52); + scrollView1_->SetHorizontalScrollState(false); + // Add to rootView + container_->Add(scrollView1_); + scrollView1_->SetVisible(true); + + // 初始化Button + InitButton(button1_, 43, 120, 380, 100, BUTTONTIME); + InitButton(button2_, 43, 240, 380, 100, BUTTONMIL); + InitButton(button3_, 43, 360, 380, 100, BUTTONCALULI); + InitButton(button4_, 43, 480, 380, 100, BUTTONWALK); + scrollView1_->Add(button1_); + scrollView1_->Add(button2_); + scrollView1_->Add(button3_); + scrollView1_->Add(button4_); + + // 初始化Image + InitImageView(image1_, 380, 160, 100, 100, "image1", imagePath_iocn); + InitImageView(image2_, 380, 280, 100, 100, "image2", imagePath_iocn); + InitImageView(image3_, 380, 400, 100, 100, "image3", imagePath_iocn); + InitImageView(image4_, 380, 520, 100, 100, "image4", imagePath_iocn); + scrollView1_->Add(image1_); + scrollView1_->Add(image2_); + scrollView1_->Add(image3_); + scrollView1_->Add(image4_); + + // 初始化Lable + InitLabel(label1_, 203, 52, 120, 35, "label1", "骑行", DEFAULT_VECTOR_FONT_FILENAME, 30); + InitLabel(label2_, 300, 160, 60, 35, "label2", "30 分钟", DEFAULT_VECTOR_FONT_FILENAME, 20); + InitLabel(label3_, 300, 280, 69, 23, "label3", "5 公里", DEFAULT_VECTOR_FONT_FILENAME, 20); + InitLabel(label4_, 300, 400, 60, 35, "label4", "500 千卡", DEFAULT_VECTOR_FONT_FILENAME, 20); + InitLabel(label5_, 300, 520, 60, 35, "label5", "2000 æ­¥", DEFAULT_VECTOR_FONT_FILENAME, 20); + scrollView1_->Add(label1_); + scrollView1_->Add(label2_); + scrollView1_->Add(label3_); + scrollView1_->Add(label4_); + scrollView1_->Add(label5_); + + // 初始化list + InitList(); + scrollView1_->Add(list1_); + } + /* DeInit:删除组件 */ + void TraingGPSsetView::DeInit() + { + UIView *view = static_cast(container_)->GetChildrenHead(); + while (view != nullptr) + { + UIView *tempView = view; + view = view->GetNextSibling(); + if (tempView->GetParent()) + { + static_cast(tempView->GetParent())->Remove(tempView); + } + delete tempView; + } + delete container_; + container_ = nullptr; + } + + void TraingGPSsetView::PreLoad(void) + { + if (!viewiInitStatus) + { + InitView(); + viewiInitStatus = true; + } + } + void TraingGPSsetView::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(TraingGPSsetPresenter::GetInstance()); + if (draglistener == nullptr) + { + return; + } + container_->SetOnDragListener(draglistener); + + container_->SetTouchable(true); + container_->SetDraggable(true); + + PreLoad(); + RootView::GetInstance()->Add(container_); + } + + void TraingGPSsetView::OnSetUpView() + { + + View::OnSetUpView(); + Draw(); + } + + void TraingGPSsetView::OnTearDownView() + { + + View::OnTearDownView(); + return; + } + + void TraingGPSsetView::OnStop() + { + View::OnStop(); + RootView::GetInstance()->RemoveAll(); + return; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingLimitPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingLimitPresenter.cpp new file mode 100644 index 000000000..745fc09ae --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingLimitPresenter.cpp @@ -0,0 +1,107 @@ +#include "AppViewIDs.h" +#include "NativeAbility.h" + +#include +#include +#include +#include "traing/include/TraingLimitPresenter.h" +// #include "TraingLimitView.h" + +namespace OHOS +{ + + // 当前Presenter属性实例化的内存指针 + static TraingLimitPresenter *g_pTraingLimitPresenter = nullptr; + + TraingLimitPresenter::TraingLimitPresenter() + { + + g_pTraingLimitPresenter = this; + } + + TraingLimitPresenter::~TraingLimitPresenter() + { + + g_pTraingLimitPresenter = nullptr; + } + + TraingLimitPresenter *TraingLimitPresenter::GetInstance() + { + + return g_pTraingLimitPresenter; + } + + void TraingLimitPresenter::OnStart() + { + + Presenter::OnStart(); + } + + void TraingLimitPresenter::OnPause(void) + { + + Presenter::OnPause(); + } + + void TraingLimitPresenter::OnResume(void) + { + + Presenter::OnResume(); + } + + void TraingLimitPresenter::OnStop(void) + { + + Presenter::OnStop(); + } + + bool TraingLimitPresenter::OnDrag(UIView &view, const DragEvent &event) + { + + if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && + (event.GetDeltaX() > 30) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY())))) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGMORE); + } + UNUSED(view); + return true; + } + + bool TraingLimitPresenter::OnClick(UIView &view, const ClickEvent &event) + { + // 根据控件id查找是哪个控件触发了点击回调 + if (strcmp(view.GetViewId(), BUTTON1) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGNOMAL); + } + if (strcmp(view.GetViewId(), BUTTON2) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGNOMAL); + } + if (strcmp(view.GetViewId(), BUTTON3) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGNOMAL); + } + if (strcmp(view.GetViewId(), BUTTON4) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGNOMAL); + } + if (strcmp(view.GetViewId(), BUTTON5) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGNOMAL); + } + if (strcmp(view.GetViewId(), BUTTON6) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGNOMAL); + } + if (strcmp(view.GetViewId(), BUTTON7) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGNOMAL); + } + if (strcmp(view.GetViewId(), BUTTON8) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGNOMAL); + } + return true; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingLimitView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingLimitView.cpp new file mode 100644 index 000000000..5ebde5cf3 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingLimitView.cpp @@ -0,0 +1,400 @@ + +#include "traing/include/TraingLimitView.h" + +#include "common/image_cache_manager.h" +#include "UiConfig.h" +#include "ui_resource_image.h" +#include +#include "components/ui_button.h" +namespace OHOS +{ + + static char *text[] = {"一般极限运动", "滑板", "高空弹跳/蹦极", "跑酷", "BMX", "定向越野", "跳伞", "铁人三项运动"}; + static const char *imagePath_iocn = "/user/res/Training/icon.bin"; + + static TraingLimitView *g_pTraingLimitView{nullptr}; + + TraingLimitView::TraingLimitView() + { + g_pTraingLimitView = this; + } + + TraingLimitView::~TraingLimitView() + { + DeInit(); + g_pTraingLimitView = nullptr; + } + + TraingLimitView *TraingLimitView::GetInstance() + { + + return g_pTraingLimitView; + } + /* + InitLabel:初始化标签 + @param label 标签指针 + @param left 标签左边位置 + @param top 标签顶部位置 + @param width 标签宽度 + @param height 标签高度 + @param viewId 标签的视图 ID + @param text 标签显示的文本 + @param fontName 字体名称 + @param fontSize 字体大小 + */ + void TraingLimitView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize) + { + // 检查标签指针是否为空 + if (label == nullptr) + { + label = new UILabel(); + } + // 设置标签的位置和大小 + label->SetPosition(left, top); + label->Resize(width, height); + // 设置标签的视图 ID + label->SetViewId(viewId); + // 设置标签的样式 + label->SetStyle(STYLE_TEXT_FONT, fontSize); + label->SetFont(fontName, fontSize); + // 设置标签的文本和其他属性 + label->SetText(text); + label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label->SetRollSpeed(0); + // 设置标签可见 + label->SetVisible(true); + } + /* + InitButton:初始化按钮 + @param button 按钮指针 + @param left 按钮左边位置 + @param top 按钮顶部位置 + @param width 按钮宽度 + @param height 按钮高度 + @param viewId 按钮的视图 ID + */ + void TraingLimitView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId) + { + // 设置按钮的背景颜色 + uint32_t backgroundColor = 0xff191919; // 默认背景颜色 + uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色 + uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色 + // 创建新按钮(如果当前按钮为空) + if (button == nullptr) + { + button = new UIButton(); + } + button->SetPosition(left, top); + button->Resize(width, height); + button->SetViewId(viewId); + button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor); + button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED); + button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED); + // 设置按钮的点击事件监听器为 TraingLimitPresenter 的实例 + button->SetOnClickListener(static_cast(TraingLimitPresenter::GetInstance())); + // 设置按钮可见 + button->SetVisible(true); + } + + /* + InitImageView:初始化图片 + @param imageView 图片指针 + @param left 图片左边位置 + @param top 图片顶部位置 + @param width 图片宽度 + @param height 图片高度 + @param viewId 图片的视图 ID + @param imagePath 图片路径 + */ + void TraingLimitView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath) + { + if (imageView == nullptr) + { + imageView = new UIImageView(); + } + imageView->SetPosition(left, top); + imageView->Resize(width, height); + imageView->SetViewId(viewId); + imageView->SetSrc(imagePath); + imageView->SetVisible(true); + } + + /* Traing:初始化list */ + void TraingLimitView::InitList() + { + // Add List to App + if (list1_ == nullptr) + { + list1_ = new UIList(); + } + list1_->SetPosition(35, 110); // widget's left position and top position + list1_->Resize(300, 1100); // widget's width and height + list1_->SetViewId("list1"); // Set style + list1_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000); + list1_->SetStyle(STYLE_BACKGROUND_OPA, 0x00); + + // Set additional property + if (list1data_ == nullptr) + { + list1data_ = new List(); + } + + // 使用全局变量来初始化列表项 + for (int i = 0; i < 8; ++i) + { + IconItemNode *listData = new IconItemNode(); + //listData->imagePath = imagePaths[i]; + listData->txt = text[i]; + list1data_->PushBack(listData); + } + + if (list1adapter_ == nullptr) + { + list1adapter_ = new IconAdapter(); + } + list1adapter_->SetItemSize(250, 120); + list1adapter_->SetImageSize(130, 120); + list1adapter_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + list1adapter_->SetData(list1data_); + list1_->SetAdapter(list1adapter_); + + // Add to scrollView1 + // scrollView1_->Add(list1_); + list1_->SetVisible(true); + } + /* InitView:初始化界面*/ + void TraingLimitView ::InitView() + { + if (container_ == nullptr) + { + container_ = new UIViewGroup(); + container_->SetPosition(0, 0, 466, 466); + container_->SetStyle(STYLE_BACKGROUND_OPA, 0); + } + // Add ScrollView to App + if (scrollView1_ == nullptr) + { + scrollView1_ = new UIScrollView(); + } + scrollView1_->SetPosition(0, 0); // widget's left position and top position + scrollView1_->Resize(466, 466); // widget's width and height + scrollView1_->SetViewId("scrollView1"); // Set style + scrollView1_->SetStyle(STYLE_BACKGROUND_OPA, 0xff); + // Add to rootView + container_->Add(scrollView1_); + scrollView1_->SetVisible(true); + + // 初始化Lable + InitLabel(label1_, 173, 52, 200, 60, "label1", "极限训练", DEFAULT_VECTOR_FONT_FILENAME, 30); + scrollView1_->Add(label1_); + // 初始化Button + InitButton(button1_, 43, 120, 380, 100, BUTTON1); + InitButton(button2_, 43, 240, 380, 100, BUTTON2); + InitButton(button3_, 43, 360, 380, 100, BUTTON3); + InitButton(button4_, 43, 480, 380, 100, BUTTON4); + InitButton(button5_, 43, 600, 380, 100, BUTTON5); + InitButton(button6_, 43, 720, 380, 100, BUTTON6); + InitButton(button7_, 43, 840, 380, 100, BUTTON7); + InitButton(button8_, 43, 960, 380, 100, BUTTON8); + scrollView1_->Add(button1_); + scrollView1_->Add(button2_); + scrollView1_->Add(button3_); + scrollView1_->Add(button4_); + scrollView1_->Add(button5_); + scrollView1_->Add(button6_); + scrollView1_->Add(button7_); + scrollView1_->Add(button8_); + // 初始化image + InitImageView(image1_, 360, 160, 100, 100, "image1", imagePath_iocn); + InitImageView(image2_, 360, 280, 100, 100, "image2", imagePath_iocn); + InitImageView(image3_, 360, 400, 100, 100, "image3", imagePath_iocn); + InitImageView(image4_, 360, 520, 100, 100, "image4", imagePath_iocn); + InitImageView(image5_, 360, 640, 100, 100, "image5", imagePath_iocn); + InitImageView(image6_, 360, 760, 100, 100, "image6", imagePath_iocn); + InitImageView(image7_, 360, 880, 100, 100, "image7", imagePath_iocn); + InitImageView(image8_, 360, 1000, 100, 100, "image8", imagePath_iocn); + scrollView1_->Add(image1_); + scrollView1_->Add(image2_); + scrollView1_->Add(image3_); + scrollView1_->Add(image4_); + scrollView1_->Add(image5_); + scrollView1_->Add(image6_); + scrollView1_->Add(image7_); + scrollView1_->Add(image8_); + // 初始化list + InitList(); + scrollView1_->Add(list1_); + } + /* DeInit:删除组件*/ + void TraingLimitView::DeInit() + { + if (label1_ != nullptr) + { + delete label1_; + label1_ = nullptr; + } + if (button1_ != nullptr) + { + delete button1_; + button1_ = nullptr; + } + if (button8_ != nullptr) + { + delete button8_; + button8_ = nullptr; + } + if (button7_ != nullptr) + { + delete button7_; + button7_ = nullptr; + } + if (button6_ != nullptr) + { + delete button6_; + button6_ = nullptr; + } + if (button5_ != nullptr) + { + delete button5_; + button5_ = nullptr; + } + if (button4_ != nullptr) + { + delete button4_; + button4_ = nullptr; + } + if (button3_ != nullptr) + { + delete button3_; + button3_ = nullptr; + } + if (button2_ != nullptr) + { + delete button2_; + button2_ = nullptr; + } + if (image1_ != nullptr) + { + delete image1_; + image1_ = nullptr; + } + if (image2_ != nullptr) + { + delete image2_; + image2_ = nullptr; + } + if (image3_ != nullptr) + { + delete image3_; + image3_ = nullptr; + } + if (image4_ != nullptr) + { + delete image4_; + image4_ = nullptr; + } + if (image5_ != nullptr) + { + delete image5_; + image5_ = nullptr; + } + if (image6_ != nullptr) + { + delete image6_; + image6_ = nullptr; + } + if (image7_ != nullptr) + { + delete image7_; + image7_ = nullptr; + } + if (image8_ != nullptr) + { + delete image8_; + image8_ = nullptr; + } + if (list1_ != nullptr) + { + delete list1_; + list1_ = nullptr; + } + if (list1adapter_ != nullptr) + { + delete list1adapter_; + list1adapter_ = nullptr; + } + if (list1data_ != nullptr) + { + list1data_->Clear(); + delete list1data_; + list1data_ = nullptr; + } + if (scrollView1_ != nullptr) + { + delete scrollView1_; + scrollView1_ = nullptr; + } + if (container_ != nullptr) + { + container_->RemoveAll(); + delete container_; + container_ = nullptr; + } + } + + void TraingLimitView::PreLoad(void) + { + if (!viewiInitStatus) + { + InitView(); + viewiInitStatus = true; + } + } + void TraingLimitView::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(TraingLimitPresenter::GetInstance()); + if (draglistener == nullptr) + { + return; + } + container_->SetOnDragListener(draglistener); + + container_->SetTouchable(true); + container_->SetDraggable(true); + + PreLoad(); + RootView::GetInstance()->Add(container_); + } + + void TraingLimitView::OnSetUpView() + { + + View::OnSetUpView(); + Draw(); + } + + void TraingLimitView::OnTearDownView() + { + + View::OnTearDownView(); + return; + } + + void TraingLimitView::OnStop() + { + View::OnStop(); + RootView::GetInstance()->RemoveAll(); + return; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingMorePresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingMorePresenter.cpp new file mode 100644 index 000000000..44119bfec --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingMorePresenter.cpp @@ -0,0 +1,107 @@ +#include "AppViewIDs.h" +#include "NativeAbility.h" + +#include +#include +#include +#include "traing/include/TraingMorePresenter.h" +// #include "TraingMoreView.h" + +namespace OHOS +{ + + // 当前Presenter属性实例化的内存指针 + static TraingMorePresenter *g_pTraingMorePresenter = nullptr; + + TraingMorePresenter::TraingMorePresenter() + { + + g_pTraingMorePresenter = this; + } + + TraingMorePresenter::~TraingMorePresenter() + { + + g_pTraingMorePresenter = nullptr; + } + + TraingMorePresenter *TraingMorePresenter::GetInstance() + { + + return g_pTraingMorePresenter; + } + + void TraingMorePresenter::OnStart() + { + + Presenter::OnStart(); + } + + void TraingMorePresenter::OnPause(void) + { + + Presenter::OnPause(); + } + + void TraingMorePresenter::OnResume(void) + { + + Presenter::OnResume(); + } + + void TraingMorePresenter::OnStop(void) + { + + Presenter::OnStop(); + } + + bool TraingMorePresenter::OnDrag(UIView &view, const DragEvent &event) + { + + if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && + (event.GetDeltaX() > 40) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY())))) + { + //NativeAbility::GetInstance().ChangeSlice(VIEW_TRAINING); + } + UNUSED(view); + return true; + } + + bool TraingMorePresenter::OnClick(UIView &view, const ClickEvent &event) + { + // 根据控件id查找是哪个控件触发了点击回调 + if (strcmp(view.GetViewId(), BUTTON_BALL) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGLIMIT); + } + if (strcmp(view.GetViewId(), BUTTON_DANCE) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGLIMIT); + } + if (strcmp(view.GetViewId(), BUTTON_FITNESS) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGLIMIT); + } + if (strcmp(view.GetViewId(), BUTTON_ICE) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGLIMIT); + } + if (strcmp(view.GetViewId(), BUTTON_LIMIT) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGLIMIT); + } + if (strcmp(view.GetViewId(), BUTTON_OTHER) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGLIMIT); + } + if (strcmp(view.GetViewId(), BUTTON_REST) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGLIMIT); + } + if (strcmp(view.GetViewId(), BUTTON_SWIMMING) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGLIMIT); + } + return true; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingMoreView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingMoreView.cpp new file mode 100644 index 000000000..f8210771a --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingMoreView.cpp @@ -0,0 +1,411 @@ + +#include "traing/include/TraingMoreView.h" + +#include "common/image_cache_manager.h" +#include "UiConfig.h" +#include "ui_resource_image.h" +#include +#include "components/ui_button.h" +namespace OHOS +{ + // 定义全局变量 + static char *imagePaths[] = {"/user/res/Training/Fitness.bin", + "/user/res/Training/Dance.bin", + "/user/res/Training/Rest.bin", + "/user/res/Training/Ball.bin", + "/user/res/Training/Swimming.bin", + "/user/res/Training/Ice.bin", + "/user/res/Training/Limit.bin", + "/user/res/Training/Other.bin"}; + + static char *text[] = {"健身类", "舞蹈类", "休闲运动", "球类", "水上运动", "冰上运动", "极限运动", "其他"}; + static const char *imagePath_iocn = "/user/res/Training/icon.bin"; + + static TraingMoreView *g_pTraingMoreView{nullptr}; + + TraingMoreView::TraingMoreView() + { + g_pTraingMoreView = this; + } + + TraingMoreView::~TraingMoreView() + { + DeInit(); + g_pTraingMoreView = nullptr; + } + + TraingMoreView *TraingMoreView::GetInstance() + { + + return g_pTraingMoreView; + } + /* + InitLabel:初始化标签 + @param label 标签指针 + @param left 标签左边位置 + @param top 标签顶部位置 + @param width 标签宽度 + @param height 标签高度 + @param viewId 标签的视图 ID + @param text 标签显示的文本 + @param fontName 字体名称 + @param fontSize 字体大小 + */ + void TraingMoreView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize) + { + // 检查标签指针是否为空 + if (label == nullptr) + { + label = new UILabel(); + } + // 设置标签的位置和大小 + label->SetPosition(left, top); + label->Resize(width, height); + // 设置标签的视图 ID + label->SetViewId(viewId); + // 设置标签的样式 + label->SetStyle(STYLE_TEXT_FONT, fontSize); + label->SetFont(fontName, fontSize); + // 设置标签的文本和其他属性 + label->SetText(text); + label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label->SetRollSpeed(0); + // 设置标签可见 + label->SetVisible(true); + } + /* + InitButton:初始化按钮 + @param button 按钮指针 + @param left 按钮左边位置 + @param top 按钮顶部位置 + @param width 按钮宽度 + @param height 按钮高度 + @param viewId 按钮的视图 ID + */ + void TraingMoreView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId) + { + // 设置按钮的背景颜色 + uint32_t backgroundColor = 0xff191919; // 默认背景颜色 + uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色 + uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色 + // 创建新按钮(如果当前按钮为空) + if (button == nullptr) + { + button = new UIButton(); + } + button->SetPosition(left, top); + button->Resize(width, height); + button->SetViewId(viewId); + button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor); + button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED); + button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED); + // 设置按钮的点击事件监听器为 TraingMorePresenter 的实例 + button->SetOnClickListener(static_cast(TraingMorePresenter::GetInstance())); + // 设置按钮可见 + button->SetVisible(true); + } + + /* + InitImageView:初始化图片 + @param imageView 图片指针 + @param left 图片左边位置 + @param top 图片顶部位置 + @param width 图片宽度 + @param height 图片高度 + @param viewId 图片的视图 ID + @param imagePath 图片路径 + */ + void TraingMoreView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath) + { + if (imageView == nullptr) + { + imageView = new UIImageView(); + } + imageView->SetPosition(left, top); + imageView->Resize(width, height); + imageView->SetViewId(viewId); + imageView->SetSrc(imagePath); + imageView->SetVisible(true); + } + + /* Traing:初始化list */ + void TraingMoreView::InitList() + { + // Add List to App + if (list1_ == nullptr) + { + list1_ = new UIList(); + } + list1_->SetPosition(35, 110); // widget's left position and top position + list1_->Resize(300, 1100); // widget's width and height + list1_->SetViewId("list1"); // Set style + list1_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000); + list1_->SetStyle(STYLE_BACKGROUND_OPA, 0x00); + + // Set additional property + if (list1data_ == nullptr) + { + list1data_ = new List(); + } + + // 使用全局变量来初始化列表项 + for (int i = 0; i < 8; ++i) + { + IconItemNode *listData = new IconItemNode(); + listData->imagePath = imagePaths[i]; + listData->txt = text[i]; + list1data_->PushBack(listData); + } + + if (list1adapter_ == nullptr) + { + list1adapter_ = new IconAdapter(); + } + list1adapter_->SetItemSize(250, 120); + list1adapter_->SetImageSize(130, 120); + list1adapter_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + list1adapter_->SetData(list1data_); + list1_->SetAdapter(list1adapter_); + + // Add to scrollView1 + // scrollView1_->Add(list1_); + list1_->SetVisible(true); + } + /* InitView:初始化界面*/ + void TraingMoreView ::InitView() + { + if (container_ == nullptr) + { + container_ = new UIViewGroup(); + container_->SetPosition(0, 0, 466, 466); + container_->SetStyle(STYLE_BACKGROUND_OPA, 0); + } + // Add ScrollView to App + if (scrollView1_ == nullptr) + { + scrollView1_ = new UIScrollView(); + } + scrollView1_->SetPosition(0, 0); // widget's left position and top position + scrollView1_->Resize(466, 466); // widget's width and height + scrollView1_->SetViewId("scrollView1"); // Set style + scrollView1_->SetStyle(STYLE_BACKGROUND_OPA, 0xff); + // Add to rootView + container_->Add(scrollView1_); + scrollView1_->SetVisible(true); + + // 初始化Lable + InitLabel(label1_, 203, 52, 200, 60, "label1", "训练", DEFAULT_VECTOR_FONT_FILENAME, 30); + scrollView1_->Add(label1_); + // 初始化Button + InitButton(button1_, 43, 120, 380, 100, BUTTON_FITNESS); + InitButton(button2_, 43, 240, 380, 100, BUTTON_DANCE); + InitButton(button1_, 43, 120, 380, 100, BUTTON_FITNESS); + InitButton(button2_, 43, 240, 380, 100, BUTTON_DANCE); + InitButton(button3_, 43, 360, 380, 100, BUTTON_REST); + InitButton(button4_, 43, 480, 380, 100, BUTTON_BALL); + InitButton(button5_, 43, 600, 380, 100, BUTTON_SWIMMING); + InitButton(button6_, 43, 720, 380, 100, BUTTON_ICE); + InitButton(button7_, 43, 840, 380, 100, BUTTON_LIMIT); + InitButton(button8_, 43, 960, 380, 100, BUTTON_OTHER); + scrollView1_->Add(button1_); + scrollView1_->Add(button2_); + scrollView1_->Add(button3_); + scrollView1_->Add(button4_); + scrollView1_->Add(button5_); + scrollView1_->Add(button6_); + scrollView1_->Add(button7_); + scrollView1_->Add(button8_); + // 初始化image + InitImageView(image1_, 360, 160, 100, 100, "image1", imagePath_iocn); + InitImageView(image2_, 360, 280, 100, 100, "image2", imagePath_iocn); + InitImageView(image3_, 360, 400, 100, 100, "image3", imagePath_iocn); + InitImageView(image4_, 360, 520, 100, 100, "image4", imagePath_iocn); + InitImageView(image5_, 360, 640, 100, 100, "image5", imagePath_iocn); + InitImageView(image6_, 360, 760, 100, 100, "image6", imagePath_iocn); + InitImageView(image7_, 360, 880, 100, 100, "image7", imagePath_iocn); + InitImageView(image8_, 360, 1000, 100, 100, "image8", imagePath_iocn); + scrollView1_->Add(image1_); + scrollView1_->Add(image2_); + scrollView1_->Add(image3_); + scrollView1_->Add(image4_); + scrollView1_->Add(image5_); + scrollView1_->Add(image6_); + scrollView1_->Add(image7_); + scrollView1_->Add(image8_); + // 初始化list + InitList(); + scrollView1_->Add(list1_); + } + /* DeInit:删除组件*/ + void TraingMoreView::DeInit() + { + if (label1_ != nullptr) + { + delete label1_; + label1_ = nullptr; + } + if (button1_ != nullptr) + { + delete button1_; + button1_ = nullptr; + } + if (button8_ != nullptr) + { + delete button8_; + button8_ = nullptr; + } + if (button7_ != nullptr) + { + delete button7_; + button7_ = nullptr; + } + if (button6_ != nullptr) + { + delete button6_; + button6_ = nullptr; + } + if (button5_ != nullptr) + { + delete button5_; + button5_ = nullptr; + } + if (button4_ != nullptr) + { + delete button4_; + button4_ = nullptr; + } + if (button3_ != nullptr) + { + delete button3_; + button3_ = nullptr; + } + if (button2_ != nullptr) + { + delete button2_; + button2_ = nullptr; + } + if (image1_ != nullptr) + { + delete image1_; + image1_ = nullptr; + } + if (image2_ != nullptr) + { + delete image2_; + image2_ = nullptr; + } + if (image3_ != nullptr) + { + delete image3_; + image3_ = nullptr; + } + if (image4_ != nullptr) + { + delete image4_; + image4_ = nullptr; + } + if (image5_ != nullptr) + { + delete image5_; + image5_ = nullptr; + } + if (image6_ != nullptr) + { + delete image6_; + image6_ = nullptr; + } + if (image7_ != nullptr) + { + delete image7_; + image7_ = nullptr; + } + if (image8_ != nullptr) + { + delete image8_; + image8_ = nullptr; + } + if (list1_ != nullptr) + { + delete list1_; + list1_ = nullptr; + } + if (list1adapter_ != nullptr) + { + delete list1adapter_; + list1adapter_ = nullptr; + } + if (list1data_ != nullptr) + { + list1data_->Clear(); + delete list1data_; + list1data_ = nullptr; + } + if (scrollView1_ != nullptr) + { + delete scrollView1_; + scrollView1_ = nullptr; + } + if (container_ != nullptr) + { + container_->RemoveAll(); + delete container_; + container_ = nullptr; + } + } + + void TraingMoreView::PreLoad(void) + { + if (!viewiInitStatus) + { + InitView(); + viewiInitStatus = true; + } + } + void TraingMoreView::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(TraingMorePresenter::GetInstance()); + if (draglistener == nullptr) + { + return; + } + container_->SetOnDragListener(draglistener); + + container_->SetTouchable(true); + container_->SetDraggable(true); + + PreLoad(); + RootView::GetInstance()->Add(container_); + } + + void TraingMoreView::OnSetUpView() + { + + View::OnSetUpView(); + Draw(); + } + + void TraingMoreView::OnTearDownView() + { + + View::OnTearDownView(); + return; + } + + void TraingMoreView::OnStop() + { + View::OnStop(); + RootView::GetInstance()->RemoveAll(); + return; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingNomalPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingNomalPresenter.cpp new file mode 100644 index 000000000..49c769326 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingNomalPresenter.cpp @@ -0,0 +1,83 @@ +#include "AppViewIDs.h" +#include "NativeAbility.h" + +#include +#include +#include +#include "traing/include/TraingNomalPresenter.h" +// #include "TraingNomalView.h" + +namespace OHOS +{ + + // 当前Presenter属性实例化的内存指针 + static TraingNomalPresenter *g_pTraingNomalPresenter = nullptr; + + TraingNomalPresenter::TraingNomalPresenter() + { + + g_pTraingNomalPresenter = this; + } + + TraingNomalPresenter::~TraingNomalPresenter() + { + + g_pTraingNomalPresenter = nullptr; + } + + TraingNomalPresenter *TraingNomalPresenter::GetInstance() + { + + return g_pTraingNomalPresenter; + } + + void TraingNomalPresenter::OnStart() + { + + Presenter::OnStart(); + } + + void TraingNomalPresenter::OnPause(void) + { + + Presenter::OnPause(); + } + + void TraingNomalPresenter::OnResume(void) + { + + Presenter::OnResume(); + } + + void TraingNomalPresenter::OnStop(void) + { + + Presenter::OnStop(); + } + + bool TraingNomalPresenter::OnDrag(UIView &view, const DragEvent &event) + { + + if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && + (event.GetDeltaX() > 40) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY())))) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGMORE); + } + UNUSED(view); + return true; + } + + bool TraingNomalPresenter::OnClick(UIView &view, const ClickEvent &event) + { + // 根据控件id查找是哪个控件触发了点击回调 + if (strcmp(view.GetViewId(), BUTTONSET) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGSET); + } + if (strcmp(view.GetViewId(), BUTTONGO) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGCONTROL); + } + return true; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingNomalView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingNomalView.cpp new file mode 100644 index 000000000..0ffafd017 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingNomalView.cpp @@ -0,0 +1,206 @@ + +#include "traing/include/TraingNomalView.h" + +#include "common/image_cache_manager.h" +#include "UiConfig.h" +#include "ui_resource_image.h" +#include +#include "components/ui_button.h" +namespace OHOS +{ + + static TraingNomalView *g_pTraingNomalView{nullptr}; + + TraingNomalView::TraingNomalView() + { + g_pTraingNomalView = this; + } + + TraingNomalView::~TraingNomalView() + { + DeInit(); + g_pTraingNomalView = nullptr; + } + + TraingNomalView *TraingNomalView::GetInstance() + { + + return g_pTraingNomalView; + } + /* + InitLabel:初始化标签 + @param label 标签指针 + @param left 标签左边位置 + @param top 标签顶部位置 + @param width 标签宽度 + @param height 标签高度 + @param viewId 标签的视图 ID + @param text 标签显示的文本 + @param fontName 字体名称 + @param fontSize 字体大小 + */ + void TraingNomalView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize) + { + // 检查标签指针是否为空 + if (label == nullptr) + { + label = new UILabel(); + } + // 设置标签的位置和大小 + label->SetPosition(left, top); + label->Resize(width, height); + // 设置标签的视图 ID + label->SetViewId(viewId); + // 设置标签的样式 + label->SetStyle(STYLE_TEXT_FONT, fontSize); + label->SetFont(fontName, fontSize); + // 设置标签的文本和其他属性 + label->SetText(text); + label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label->SetRollSpeed(0); + // 设置标签可见 + label->SetVisible(true); + } + /* + InitButton:初始化按钮 + @param button 按钮指针 + @param left 按钮左边位置 + @param top 按钮顶部位置 + @param width 按钮宽度 + @param height 按钮高度 + @param viewId 按钮的视图 ID + */ + void TraingNomalView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId) + { + // 设置按钮的背景颜色 + uint32_t backgroundColor = 0xff191919; // 默认背景颜色 + uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色 + uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色 + // 创建新按钮(如果当前按钮为空) + if (button == nullptr) + { + button = new UIButton(); + } + button->SetPosition(left, top); + button->Resize(width, height); + button->SetViewId(viewId); + button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor); + button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED); + button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED); + // 设置按钮的点击事件监听器为 TraingNomalPresenter 的实例 + button->SetOnClickListener(static_cast(TraingNomalPresenter::GetInstance())); + // 设置按钮可见 + button->SetVisible(true); + } + /* InitView:初始化界面*/ + void TraingNomalView ::InitView() + { + if (container_ == nullptr) + { + container_ = new UIViewGroup(); + container_->SetPosition(0, 0, 466, 466); + container_->SetStyle(STYLE_BACKGROUND_OPA, 0); + } + + // 初始化Lable + InitLabel(label1_, 137, 52, 195, 35, "label1", "高空弹跳/蹦极", DEFAULT_VECTOR_FONT_FILENAME, 30); + container_->Add(label1_); + InitLabel(label2_, 160, 370, 146, 35, "label2", "设定目标 >", DEFAULT_VECTOR_FONT_FILENAME, 30); + container_->Add(label2_); + // 初始化Button + InitButton(button1_, 133, 133, 200, 200, BUTTONGO); + // Set additional property + char *button1defaultImgSrc = "/user/res/Training/Go.bin"; + char *button1triggeredImgSrc = nullptr; + button1_->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc); + + InitButton(button2_, 160, 370, 146, 35, BUTTONSET); + button2_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);//设置为透明按键 + button2_->SetStyle(STYLE_BACKGROUND_OPA, 0x00); + button2_->SetStyleForState(STYLE_BACKGROUND_OPA, 0x80, UIButton::PRESSED); // 设置按下时的透明度为半透明 + + container_->Add(button1_); + container_->Add(button2_); + } + /* DeInit:删除组件*/ + void TraingNomalView::DeInit() + { + if (label1_ != nullptr) + { + delete label1_; + label1_ = nullptr; + } + if (button1_ != nullptr) + { + delete button1_; + button1_ = nullptr; + } + if (button2_ != nullptr) + { + delete button2_; + button2_ = nullptr; + } + if (container_ != nullptr) + { + container_->RemoveAll(); + delete container_; + container_ = nullptr; + } + } + + void TraingNomalView::PreLoad(void) + { + if (!viewiInitStatus) + { + InitView(); + viewiInitStatus = true; + } + } + void TraingNomalView::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(TraingNomalPresenter::GetInstance()); + if (draglistener == nullptr) + { + return; + } + container_->SetOnDragListener(draglistener); + + container_->SetTouchable(true); + container_->SetDraggable(true); + + PreLoad(); + RootView::GetInstance()->Add(container_); + } + + void TraingNomalView::OnSetUpView() + { + + View::OnSetUpView(); + Draw(); + } + + void TraingNomalView::OnTearDownView() + { + + View::OnTearDownView(); + return; + } + + void TraingNomalView::OnStop() + { + View::OnStop(); + RootView::GetInstance()->RemoveAll(); + return; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingPresenter.cpp new file mode 100644 index 000000000..7a4bbc234 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingPresenter.cpp @@ -0,0 +1,84 @@ +#include "AppViewIDs.h" +#include "NativeAbility.h" + +#include +#include +#include +#include "traing/include/TraingPresenter.h" +//#include "TraingView.h" + +namespace OHOS +{ + + // 当前Presenter属性实例化的内存指针 + static TraingPresenter *g_pTraingPresenter = nullptr; + + TraingPresenter::TraingPresenter() + { + + g_pTraingPresenter = this; + } + + TraingPresenter::~TraingPresenter() + { + + g_pTraingPresenter = nullptr; + } + + TraingPresenter *TraingPresenter::GetInstance() + { + + return g_pTraingPresenter; + } + + void TraingPresenter::OnStart() + { + + Presenter::OnStart(); + } + + void TraingPresenter::OnPause(void) + { + + Presenter::OnPause(); + } + + void TraingPresenter::OnResume(void) + { + + Presenter::OnResume(); + } + + void TraingPresenter::OnStop(void) + { + + Presenter::OnStop(); + } + + bool TraingPresenter::OnDrag(UIView &view, const DragEvent &event) + { + + if (event.GetDragDirection() == DragEvent::DIRECTION_RIGHT_TO_LEFT) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST); + } + UNUSED(view); + return true; + } + + bool TraingPresenter::OnClick(UIView &view, const ClickEvent &event) + { + // 根据控件id查找是哪个控件触发了点击回调 + if (strcmp(view.GetViewId(), BUTTON1) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST); + } + if (strcmp(view.GetViewId(), "Remind") == 0) + { + // 模拟心率监测,等待20秒 + //std::this_thread::sleep_for(std::chrono::seconds(20)); + //NativeAbility::GetInstance().ChangeSlice(VIEW_TraingREMIND); + } + return true; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetCaluliPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetCaluliPresenter.cpp new file mode 100644 index 000000000..1d41ef508 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetCaluliPresenter.cpp @@ -0,0 +1,80 @@ +#include "AppViewIDs.h" +#include "NativeAbility.h" + +#include +#include +#include +#include "traing/include/TraingSetCaluliPresenter.h" +// #include "TraingSetCaluliView.h" + +namespace OHOS +{ + + // 当前Presenter属性实例化的内存指针 + static TraingSetCaluliPresenter *g_pTraingSetCaluliPresenter = nullptr; + + TraingSetCaluliPresenter::TraingSetCaluliPresenter() + { + + g_pTraingSetCaluliPresenter = this; + } + + TraingSetCaluliPresenter::~TraingSetCaluliPresenter() + { + + g_pTraingSetCaluliPresenter = nullptr; + } + + TraingSetCaluliPresenter *TraingSetCaluliPresenter::GetInstance() + { + + return g_pTraingSetCaluliPresenter; + } + + void TraingSetCaluliPresenter::OnStart() + { + + Presenter::OnStart(); + } + + void TraingSetCaluliPresenter::OnPause(void) + { + + Presenter::OnPause(); + } + + void TraingSetCaluliPresenter::OnResume(void) + { + + Presenter::OnResume(); + } + + void TraingSetCaluliPresenter::OnStop(void) + { + + Presenter::OnStop(); + } + + bool TraingSetCaluliPresenter::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 TraingSetCaluliPresenter::OnClick(UIView &view, const ClickEvent &event) + { + // 根据控件id查找是哪个控件触发了点击回调 + if (strcmp(view.GetViewId(), BUTTONOK) == 0) + { + uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId(); + NativeAbility::GetInstance().ChangeSlice(preSlice); + } + return true; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetCaluliView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetCaluliView.cpp new file mode 100644 index 000000000..5d5ff2a63 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetCaluliView.cpp @@ -0,0 +1,280 @@ + +#include "traing/include/TraingSetCaluliView.h" + +#include "common/image_cache_manager.h" +#include "UiConfig.h" +#include "ui_resource_image.h" +#include +#include "components/ui_button.h" +#include "common/screen.h" +#include +#include +#include + +namespace OHOS +{ + + /***************************************************************************************/ + // 动态生成包含指定卡路里区间内所有卡路里数的字符串数组 + std::vector GenerateCaluliValues(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 TraingSetCaluliView *g_pTraingSetCaluliView{nullptr}; + + TraingSetCaluliView::TraingSetCaluliView() + { + g_pTraingSetCaluliView = this; + } + + TraingSetCaluliView::~TraingSetCaluliView() + { + DeInit(); + g_pTraingSetCaluliView = nullptr; + } + + TraingSetCaluliView *TraingSetCaluliView::GetInstance() + { + + return g_pTraingSetCaluliView; + } + /* + InitLabel:初始化标签 + @param label 标签指针 + @param left 标签左边位置 + @param top 标签顶部位置 + @param width 标签宽度 + @param height 标签高度 + @param viewId 标签的视图 ID + @param text 标签显示的文本 + @param fontName 字体名称 + @param fontSize 字体大小 + */ + void TraingSetCaluliView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize) + { + // 检查标签指针是否为空 + if (label == nullptr) + { + label = new UILabel(); + } + // 设置标签的位置和大小 + label->SetPosition(left, top); + label->Resize(width, height); + // 设置标签的视图 ID + label->SetViewId(viewId); + // 设置标签的样式 + label->SetStyle(STYLE_TEXT_FONT, fontSize); + label->SetFont(fontName, fontSize); + // 设置标签的文本和其他属性 + label->SetText(text); + label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label->SetRollSpeed(0); + // 设置标签可见 + label->SetVisible(true); + } + /* + InitButton:初始化按钮 + @param button 按钮指针 + @param left 按钮左边位置 + @param top 按钮顶部位置 + @param width 按钮宽度 + @param height 按钮高度 + @param viewId 按钮的视图 ID + */ + void TraingSetCaluliView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId) + { + // 设置按钮的背景颜色 + uint32_t backgroundColor = 0xff191919; // 默认背景颜色 + uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色 + uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色 + // 创建新按钮(如果当前按钮为空) + if (button == nullptr) + { + button = new UIButton(); + } + button->SetPosition(left, top); + button->Resize(width, height); + button->SetViewId(viewId); + button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor); + button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED); + button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED); + // 设置按钮的点击事件监听器为 TraingSetCaluliPresenter 的实例 + button->SetOnClickListener(static_cast(TraingSetCaluliPresenter::GetInstance())); + // 设置按钮可见 + button->SetVisible(true); + } + /* + 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 TraingSetCaluliView::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 minCaluli = 100; + int maxCaluli = 1000; + int interval = 100; + std::vector caluliValues = GenerateCaluliValues(minCaluli, maxCaluli, interval); + + const char **values = new const char *[caluliValues.size()]; + for (size_t i = 0; i < caluliValues.size(); i++) + { + values[i] = caluliValues[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, caluliValues.size()); + // 将 UIPicker 设置为显示 + picker->SetVisible(true); + } + + /* InitView:初始化界面*/ + void TraingSetCaluliView ::InitView() + { + if (container_ == nullptr) + { + container_ = new UIViewGroup(); + container_->SetPosition(0, 0, 466, 466); + container_->SetStyle(STYLE_BACKGROUND_OPA, 0); + } + // 初始化Lable + 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 + InitButton(button1_, 0, 366, 466, 100, BUTTONOK); + // Set additional property + char *button1defaultImgSrc = "/user/res/Training/buttonok.bin"; + char *button1triggeredImgSrc = nullptr; + button1_->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc); + container_->Add(button1_); + } + /* DeInit:删除组件 */ + void TraingSetCaluliView::DeInit() + { + // 删除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 TraingSetCaluliView::PreLoad(void) + { + if (!viewiInitStatus) + { + //printf("init traingsetcaluliview\n"); + InitView(); + viewiInitStatus = true; + } + } + void TraingSetCaluliView::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(TraingSetCaluliPresenter::GetInstance()); + if (draglistener == nullptr) + { + return; + } + container_->SetOnDragListener(draglistener); + + container_->SetTouchable(true); + container_->SetDraggable(true); + + PreLoad(); + RootView::GetInstance()->Add(container_); + } + + void TraingSetCaluliView::OnSetUpView() + { + + View::OnSetUpView(); + Draw(); + } + + void TraingSetCaluliView::OnTearDownView() + { + + View::OnTearDownView(); + return; + } + + void TraingSetCaluliView::OnStop() + { + View::OnStop(); + RootView::GetInstance()->RemoveAll(); + return; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetDistPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetDistPresenter.cpp new file mode 100644 index 000000000..0fb5cf850 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetDistPresenter.cpp @@ -0,0 +1,80 @@ +#include "AppViewIDs.h" +#include "NativeAbility.h" + +#include +#include +#include +#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::OnStart(); + } + + void TraingSetDistPresenter::OnPause(void) + { + + Presenter::OnPause(); + } + + void TraingSetDistPresenter::OnResume(void) + { + + Presenter::OnResume(); + } + + void TraingSetDistPresenter::OnStop(void) + { + + Presenter::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) + { + uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId(); + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGGPSSET); + } + 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 new file mode 100644 index 000000000..634ea19e9 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetDistView.cpp @@ -0,0 +1,280 @@ + +#include "traing/include/TraingSetDistView.h" + +#include "common/image_cache_manager.h" +#include "UiConfig.h" +#include "ui_resource_image.h" +#include +#include "components/ui_button.h" +#include "common/screen.h" +#include +#include +#include + +namespace OHOS +{ + + /***************************************************************************************/ + // 动态生成包含指定公里区间内所有公里的字符串数组 + std::vector GenerateDistValues(int minDist, int maxDist, int interval) + { + std::vector 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; + } + /* + InitLabel:初始化标签 + @param label 标签指针 + @param left 标签左边位置 + @param top 标签顶部位置 + @param width 标签宽度 + @param height 标签高度 + @param viewId 标签的视图 ID + @param text 标签显示的文本 + @param fontName 字体名称 + @param fontSize 字体大小 + */ + void TraingSetDistView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize) + { + // 检查标签指针是否为空 + if (label == nullptr) + { + label = new UILabel(); + } + // 设置标签的位置和大小 + label->SetPosition(left, top); + label->Resize(width, height); + // 设置标签的视图 ID + label->SetViewId(viewId); + // 设置标签的样式 + label->SetStyle(STYLE_TEXT_FONT, fontSize); + label->SetFont(fontName, fontSize); + // 设置标签的文本和其他属性 + label->SetText(text); + label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label->SetRollSpeed(0); + // 设置标签可见 + label->SetVisible(true); + } + /* + InitButton:初始化按钮 + @param button 按钮指针 + @param left 按钮左边位置 + @param top 按钮顶部位置 + @param width 按钮宽度 + @param height 按钮高度 + @param viewId 按钮的视图 ID + */ + void TraingSetDistView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId) + { + // 设置按钮的背景颜色 + uint32_t backgroundColor = 0xff191919; // 默认背景颜色 + uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色 + uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色 + // 创建新按钮(如果当前按钮为空) + if (button == nullptr) + { + button = new UIButton(); + } + button->SetPosition(left, top); + button->Resize(width, height); + button->SetViewId(viewId); + button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor); + button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED); + button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED); + // 设置按钮的点击事件监听器为 TraingSetDistPresenter 的实例 + button->SetOnClickListener(static_cast(TraingSetDistPresenter::GetInstance())); + // 设置按钮可见 + button->SetVisible(true); + } + /* + 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 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 + 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 + InitButton(button1_, 0, 366, 466, 100, BUTTONOK); + // Set additional property + char *button1defaultImgSrc = "/user/res/Training/buttonok.bin"; + char *button1triggeredImgSrc = nullptr; + button1_->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc); + container_->Add(button1_); + } + /* DeInit:删除组件 */ + void TraingSetDistView::DeInit() + { + // 删除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(TraingSetDistPresenter::GetInstance()); + if (draglistener == nullptr) + { + return; + } + container_->SetOnDragListener(draglistener); + + container_->SetTouchable(true); + container_->SetDraggable(true); + + PreLoad(); + RootView::GetInstance()->Add(container_); + } + + void TraingSetDistView::OnSetUpView() + { + + View::OnSetUpView(); + Draw(); + } + + void TraingSetDistView::OnTearDownView() + { + + View::OnTearDownView(); + return; + } + + void TraingSetDistView::OnStop() + { + View::OnStop(); + RootView::GetInstance()->RemoveAll(); + return; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetPresenter.cpp new file mode 100644 index 000000000..79af641af --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetPresenter.cpp @@ -0,0 +1,84 @@ +#include "AppViewIDs.h" +#include "NativeAbility.h" + +#include +#include +#include +#include "traing/include/TraingSetPresenter.h" +// #include "TraingSetView.h" + +namespace OHOS +{ + + // 当前Presenter属性实例化的内存指针 + static TraingSetPresenter *g_pTraingSetPresenter = nullptr; + + TraingSetPresenter::TraingSetPresenter() + { + + g_pTraingSetPresenter = this; + } + + TraingSetPresenter::~TraingSetPresenter() + { + + g_pTraingSetPresenter = nullptr; + } + + TraingSetPresenter *TraingSetPresenter::GetInstance() + { + + return g_pTraingSetPresenter; + } + + void TraingSetPresenter::OnStart() + { + + Presenter::OnStart(); + } + + void TraingSetPresenter::OnPause(void) + { + + Presenter::OnPause(); + } + + void TraingSetPresenter::OnResume(void) + { + + Presenter::OnResume(); + } + + void TraingSetPresenter::OnStop(void) + { + + Presenter::OnStop(); + } + + bool TraingSetPresenter::OnDrag(UIView &view, const DragEvent &event) + { + + if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && + (event.GetDeltaX() > 40) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY())))) + { + //uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId(); + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGNOMAL); + } + UNUSED(view); + return true; + } + + bool TraingSetPresenter::OnClick(UIView &view, const ClickEvent &event) + { + // 根据控件id查找是哪个控件触发了点击回调 + if (strcmp(view.GetViewId(), BUTTONTIME) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGSETTIME); + } + if (strcmp(view.GetViewId(), BUTTONCALULI) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGSETCALULI); + } + 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 new file mode 100644 index 000000000..5841d3d58 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetSeptPresenter.cpp @@ -0,0 +1,80 @@ +#include "AppViewIDs.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) + { + uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId(); + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGGPSSET); + } + 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 new file mode 100644 index 000000000..8bd73c1e0 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetSeptView.cpp @@ -0,0 +1,280 @@ + +#include "traing/include/TraingSetSeptView.h" + +#include "common/image_cache_manager.h" +#include "UiConfig.h" +#include "ui_resource_image.h" +#include +#include "components/ui_button.h" +#include "common/screen.h" +#include +#include +#include + +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; + } + /* + InitLabel:初始化标签 + @param label 标签指针 + @param left 标签左边位置 + @param top 标签顶部位置 + @param width 标签宽度 + @param height 标签高度 + @param viewId 标签的视图 ID + @param text 标签显示的文本 + @param fontName 字体名称 + @param fontSize 字体大小 + */ + void TraingSetSeptView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize) + { + // 检查标签指针是否为空 + if (label == nullptr) + { + label = new UILabel(); + } + // 设置标签的位置和大小 + label->SetPosition(left, top); + label->Resize(width, height); + // 设置标签的视图 ID + label->SetViewId(viewId); + // 设置标签的样式 + label->SetStyle(STYLE_TEXT_FONT, fontSize); + label->SetFont(fontName, fontSize); + // 设置标签的文本和其他属性 + label->SetText(text); + label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label->SetRollSpeed(0); + // 设置标签可见 + label->SetVisible(true); + } + /* + InitButton:初始化按钮 + @param button 按钮指针 + @param left 按钮左边位置 + @param top 按钮顶部位置 + @param width 按钮宽度 + @param height 按钮高度 + @param viewId 按钮的视图 ID + */ + void TraingSetSeptView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId) + { + // 设置按钮的背景颜色 + uint32_t backgroundColor = 0xff191919; // 默认背景颜色 + uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色 + uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色 + // 创建新按钮(如果当前按钮为空) + if (button == nullptr) + { + button = new UIButton(); + } + button->SetPosition(left, top); + button->Resize(width, height); + button->SetViewId(viewId); + button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor); + button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED); + button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED); + // 设置按钮的点击事件监听器为 TraingSetSeptPresenter 的实例 + button->SetOnClickListener(static_cast(TraingSetSeptPresenter::GetInstance())); + // 设置按钮可见 + button->SetVisible(true); + } + /* + 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 + 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 + InitButton(button1_, 0, 366, 466, 100, BUTTONOK); + // Set additional property + char *button1defaultImgSrc = "/user/res/Training/buttonok.bin"; + char *button1triggeredImgSrc = nullptr; + button1_->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc); + container_->Add(button1_); + } + /* DeInit:删除组件 */ + void TraingSetSeptView::DeInit() + { + // 删除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/TraingSetTimePresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetTimePresenter.cpp new file mode 100644 index 000000000..124473c74 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetTimePresenter.cpp @@ -0,0 +1,86 @@ +#include "AppViewIDs.h" +#include "NativeAbility.h" + +#include +#include +#include +#include "traing/include/TraingSetTimePresenter.h" +// #include "TraingSetTimeView.h" + +namespace OHOS +{ + + // 当前Presenter属性实例化的内存指针 + static TraingSetTimePresenter *g_pTraingSetTimePresenter = nullptr; + + TraingSetTimePresenter::TraingSetTimePresenter() + { + + g_pTraingSetTimePresenter = this; + } + + TraingSetTimePresenter::~TraingSetTimePresenter() + { + + g_pTraingSetTimePresenter = nullptr; + } + + TraingSetTimePresenter *TraingSetTimePresenter::GetInstance() + { + + return g_pTraingSetTimePresenter; + } + + void TraingSetTimePresenter::OnStart() + { + + Presenter::OnStart(); + } + + void TraingSetTimePresenter::OnPause(void) + { + + Presenter::OnPause(); + } + + void TraingSetTimePresenter::OnResume(void) + { + + Presenter::OnResume(); + } + + void TraingSetTimePresenter::OnStop(void) + { + + Presenter::OnStop(); + } + + bool TraingSetTimePresenter::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 TraingSetTimePresenter::OnClick(UIView &view, const ClickEvent &event) + { + // 根据控件id查找是哪个控件触发了点击回调 + if (strcmp(view.GetViewId(), BUTTONOK) == 0) + { + uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId(); + NativeAbility::GetInstance().ChangeSlice(preSlice); + } + if (strcmp(view.GetViewId(), "Remind") == 0) + { + // 模拟心率监测,等待20秒 + // std::this_thread::sleep_for(std::chrono::seconds(20)); + // NativeAbility::GetInstance().ChangeSlice(VIEW_TraingSetTimeREMIND); + } + return true; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetTimeView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetTimeView.cpp new file mode 100644 index 000000000..e123b4e5a --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetTimeView.cpp @@ -0,0 +1,279 @@ + +#include "traing/include/TraingSetTimeView.h" + +#include "common/image_cache_manager.h" +#include "UiConfig.h" +#include "ui_resource_image.h" +#include +#include "components/ui_button.h" +#include "common/screen.h" +#include +#include +#include + +namespace OHOS +{ + + /***************************************************************************************/ + // 动态生成包含指定时间区间内所有分钟数的字符串数组 + std::vector GenerateTimeValues(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 TraingSetTimeView *g_pTraingSetTimeView{nullptr}; + + TraingSetTimeView::TraingSetTimeView() + { + g_pTraingSetTimeView = this; + } + + TraingSetTimeView::~TraingSetTimeView() + { + DeInit(); + g_pTraingSetTimeView = nullptr; + } + + TraingSetTimeView *TraingSetTimeView::GetInstance() + { + + return g_pTraingSetTimeView; + } + /* + InitLabel:初始化标签 + @param label 标签指针 + @param left 标签左边位置 + @param top 标签顶部位置 + @param width 标签宽度 + @param height 标签高度 + @param viewId 标签的视图 ID + @param text 标签显示的文本 + @param fontName 字体名称 + @param fontSize 字体大小 + */ + void TraingSetTimeView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize) + { + // 检查标签指针是否为空 + if (label == nullptr) + { + label = new UILabel(); + } + // 设置标签的位置和大小 + label->SetPosition(left, top); + label->Resize(width, height); + // 设置标签的视图 ID + label->SetViewId(viewId); + // 设置标签的样式 + label->SetStyle(STYLE_TEXT_FONT, fontSize); + label->SetFont(fontName, fontSize); + // 设置标签的文本和其他属性 + label->SetText(text); + label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label->SetRollSpeed(0); + // 设置标签可见 + label->SetVisible(true); + } + /* + InitButton:初始化按钮 + @param button 按钮指针 + @param left 按钮左边位置 + @param top 按钮顶部位置 + @param width 按钮宽度 + @param height 按钮高度 + @param viewId 按钮的视图 ID + */ + void TraingSetTimeView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId) + { + // 设置按钮的背景颜色 + uint32_t backgroundColor = 0xff191919; // 默认背景颜色 + uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色 + uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色 + // 创建新按钮(如果当前按钮为空) + if (button == nullptr) + { + button = new UIButton(); + } + button->SetPosition(left, top); + button->Resize(width, height); + button->SetViewId(viewId); + button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor); + button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED); + button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED); + // 设置按钮的点击事件监听器为 TraingSetTimePresenter 的实例 + button->SetOnClickListener(static_cast(TraingSetTimePresenter::GetInstance())); + // 设置按钮可见 + button->SetVisible(true); + } + /* + 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 TraingSetTimeView::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 minTime = 10; + int maxTime = 600; + int interval = 10; + std::vector timeValues = GenerateTimeValues(minTime, maxTime, interval); + + const char **values = new const char *[timeValues.size()]; + for (size_t i = 0; i < timeValues.size(); i++) + { + values[i] = timeValues[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, timeValues.size()); + // 将 UIPicker 设置为显示 + picker->SetVisible(true); + } + + /* InitView:初始化界面*/ + void TraingSetTimeView ::InitView() + { + if (container_ == nullptr) + { + container_ = new UIViewGroup(); + container_->SetPosition(0, 0, 466, 466); + container_->SetStyle(STYLE_BACKGROUND_OPA, 0); + } + // 初始化Lable + 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 + InitButton(button1_, 0, 366, 466, 100, BUTTONOK); + // Set additional property + char *button1defaultImgSrc = "/user/res/Training/buttonok.bin"; + char *button1triggeredImgSrc = nullptr; + button1_->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc); + container_->Add(button1_); + } + /* DeInit:删除组件 */ + void TraingSetTimeView::DeInit() + { + // 删除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 TraingSetTimeView::PreLoad(void) + { + if (!viewiInitStatus) + { + InitView(); + viewiInitStatus = true; + } + } + void TraingSetTimeView::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(TraingSetTimePresenter::GetInstance()); + if (draglistener == nullptr) + { + return; + } + container_->SetOnDragListener(draglistener); + + container_->SetTouchable(true); + container_->SetDraggable(true); + + PreLoad(); + RootView::GetInstance()->Add(container_); + } + + void TraingSetTimeView::OnSetUpView() + { + + View::OnSetUpView(); + Draw(); + } + + void TraingSetTimeView::OnTearDownView() + { + + View::OnTearDownView(); + return; + } + + void TraingSetTimeView::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 new file mode 100644 index 000000000..02a111438 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingSetView.cpp @@ -0,0 +1,297 @@ + +#include "traing/include/TraingSetView.h" + +#include "common/image_cache_manager.h" +#include "UiConfig.h" +#include "ui_resource_image.h" +#include +#include "components/ui_button.h" +namespace OHOS +{ + static const char *imagePath_iocn = "/user/res/Training/icon.bin"; + static const char *imagePath_time = "/user/res/Training/time.bin"; + static const char *imagePath_calories = "/user/res/Training/calories.bin"; + + static TraingSetView *g_pTraingSetView{nullptr}; + + TraingSetView::TraingSetView() + { + g_pTraingSetView = this; + } + + TraingSetView::~TraingSetView() + { + DeInit(); + g_pTraingSetView = nullptr; + } + + TraingSetView *TraingSetView::GetInstance() + { + + return g_pTraingSetView; + } + /* + InitLabel:初始化标签 + @param label 标签指针 + @param left 标签左边位置 + @param top 标签顶部位置 + @param width 标签宽度 + @param height 标签高度 + @param viewId 标签的视图 ID + @param text 标签显示的文本 + @param fontName 字体名称 + @param fontSize 字体大小 + */ + void TraingSetView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize) + { + // 检查标签指针是否为空 + if (label == nullptr) + { + label = new UILabel(); + } + // 设置标签的位置和大小 + label->SetPosition(left, top); + label->Resize(width, height); + // 设置标签的视图 ID + label->SetViewId(viewId); + // 设置标签的样式 + label->SetStyle(STYLE_TEXT_FONT, fontSize); + label->SetFont(fontName, fontSize); + // 设置标签的文本和其他属性 + label->SetText(text); + label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label->SetRollSpeed(0); + // 设置标签可见 + label->SetVisible(true); + } + /* + InitButton:初始化按钮 + @param button 按钮指针 + @param left 按钮左边位置 + @param top 按钮顶部位置 + @param width 按钮宽度 + @param height 按钮高度 + @param viewId 按钮的视图 ID + */ + void TraingSetView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId) + { + // 设置按钮的背景颜色 + uint32_t backgroundColor = 0xff191919; // 默认背景颜色 + uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色 + uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色 + // 创建新按钮(如果当前按钮为空) + if (button == nullptr) + { + button = new UIButton(); + } + button->SetPosition(left, top); + button->Resize(width, height); + button->SetViewId(viewId); + button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor); + button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED); + button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED); + // 设置按钮的点击事件监听器为 TraingSetPresenter 的实例 + button->SetOnClickListener(static_cast(TraingSetPresenter::GetInstance())); + // 设置按钮可见 + button->SetVisible(true); + } + /* + InitImageView:初始化图片 + @param imageView 图片指针 + @param left 图片左边位置 + @param top 图片顶部位置 + @param width 图片宽度 + @param height 图片高度 + @param viewId 图片的视图 ID + @param imagePath 图片路径 + */ + void TraingSetView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath) + { + if (imageView == nullptr) + { + imageView = new UIImageView(); + } + imageView->SetPosition(left, top); + imageView->Resize(width, height); + imageView->SetViewId(viewId); + imageView->SetSrc(imagePath); + imageView->SetVisible(true); + } + /* InitView:初始化界面*/ + void TraingSetView ::InitView() + { + if (container_ == nullptr) + { + container_ = new UIViewGroup(); + container_->SetPosition(0, 0, 466, 466); + container_->SetStyle(STYLE_BACKGROUND_OPA, 0); + } + + // 初始化Button + InitButton(button1_, 43, 120, 380, 100, BUTTONTIME); + InitButton(button2_, 43, 240, 380, 100, BUTTONCALULI); + container_->Add(button1_); + container_->Add(button2_); + + // 初始化Lable + InitLabel(label1_, 173, 52, 120, 35, "label1", "极限运动", DEFAULT_VECTOR_FONT_FILENAME, 30); + InitLabel(label2_, 130, 150, 60, 35, "label2", "时长", DEFAULT_VECTOR_FONT_FILENAME, 30); + InitLabel(label3_, 270, 155, 69, 23, "label3", "30 分钟", DEFAULT_VECTOR_FONT_FILENAME, 20); + InitLabel(label4_, 130, 270, 60, 35, "label4", "卡路里", DEFAULT_VECTOR_FONT_FILENAME, 30); + InitLabel(label5_, 270, 275, 60, 35, "label5", "1000 千卡", DEFAULT_VECTOR_FONT_FILENAME, 20); + container_->Add(label1_); + container_->Add(label2_); + container_->Add(label3_); + container_->Add(label4_); + container_->Add(label5_); + + // 初始化Image + InitImageView(image1_, 70, 150, 100, 100, "image1", imagePath_time); + InitImageView(image2_, 70, 270, 100, 100, "image2", imagePath_calories); + InitImageView(image3_, 380, 160, 100, 100, "image3", imagePath_iocn); + InitImageView(image4_, 380, 280, 100, 100, "image4", imagePath_iocn); + container_->Add(image1_); + container_->Add(image2_); + container_->Add(image3_); + container_->Add(image4_); + } + /* DeInit:删除组件 */ + void TraingSetView::DeInit() + { + // 删除Label + if (label1_ != nullptr) + { + container_->Remove(label1_); + delete label1_; + label1_ = nullptr; + } + if (label2_ != nullptr) + { + container_->Remove(label2_); + delete label2_; + label2_ = nullptr; + } + if (label3_ != nullptr) + { + container_->Remove(label3_); + delete label3_; + label3_ = nullptr; + } + if (label4_ != nullptr) + { + container_->Remove(label4_); + delete label4_; + label4_ = nullptr; + } + if (label5_ != nullptr) + { + container_->Remove(label5_); + delete label5_; + label5_ = nullptr; + } + + // 删除Button + if (button1_ != nullptr) + { + container_->Remove(button1_); + delete button1_; + button1_ = nullptr; + } + if (button2_ != nullptr) + { + container_->Remove(button2_); + delete button2_; + button2_ = nullptr; + } + + // 删除Image + if (image1_ != nullptr) + { + container_->Remove(image1_); + delete image1_; + image1_ = nullptr; + } + if (image2_ != nullptr) + { + container_->Remove(image2_); + delete image2_; + image2_ = nullptr; + } + if (image3_ != nullptr) + { + container_->Remove(image3_); + delete image3_; + image3_ = nullptr; + } + if (image4_ != nullptr) + { + container_->Remove(image4_); + delete image4_; + image4_ = nullptr; + } + + // 删除容器 + if (container_ != nullptr) + { + container_->RemoveAll(); // 移除容器中的所有组件 + delete container_; + container_ = nullptr; + } + } + + void TraingSetView::PreLoad(void) + { + if (!viewiInitStatus) + { + InitView(); + viewiInitStatus = true; + } + } + void TraingSetView::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(TraingSetPresenter::GetInstance()); + if (draglistener == nullptr) + { + return; + } + container_->SetOnDragListener(draglistener); + + container_->SetTouchable(true); + container_->SetDraggable(true); + + PreLoad(); + RootView::GetInstance()->Add(container_); + } + + void TraingSetView::OnSetUpView() + { + + View::OnSetUpView(); + Draw(); + } + + void TraingSetView::OnTearDownView() + { + + View::OnTearDownView(); + return; + } + + void TraingSetView::OnStop() + { + View::OnStop(); + RootView::GetInstance()->RemoveAll(); + return; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingStrongPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingStrongPresenter.cpp new file mode 100644 index 000000000..f0fb44b23 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingStrongPresenter.cpp @@ -0,0 +1,81 @@ +#include "AppViewIDs.h" +#include "NativeAbility.h" + +#include +#include +#include +#include "traing/include/TraingStrongPresenter.h" +// #include "TraingStrongView.h" + +namespace OHOS +{ + + // 当前Presenter属性实例化的内存指针 + static TraingStrongPresenter *g_pTraingStrongPresenter = nullptr; + + TraingStrongPresenter::TraingStrongPresenter() + { + + g_pTraingStrongPresenter = this; + } + + TraingStrongPresenter::~TraingStrongPresenter() + { + + g_pTraingStrongPresenter = nullptr; + } + + TraingStrongPresenter *TraingStrongPresenter::GetInstance() + { + + return g_pTraingStrongPresenter; + } + + void TraingStrongPresenter::OnStart() + { + + Presenter::OnStart(); + } + + void TraingStrongPresenter::OnPause(void) + { + + Presenter::OnPause(); + } + + void TraingStrongPresenter::OnResume(void) + { + + Presenter::OnResume(); + } + + void TraingStrongPresenter::OnStop(void) + { + + Presenter::OnStop(); + } + + bool TraingStrongPresenter::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_TRAININGDATA); + } + UNUSED(view); + return true; + } + + bool TraingStrongPresenter::OnClick(UIView &view, const ClickEvent &event) + { + // 根据控件id查找是哪个控件触发了点击回调 + if (strcmp(view.GetViewId(), "Remind") == 0) + { + // 模拟心率监测,等待20秒 + // std::this_thread::sleep_for(std::chrono::seconds(20)); + // NativeAbility::GetInstance().ChangeSlice(VIEW_TraingStrongREMIND); + } + return true; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingStrongView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingStrongView.cpp new file mode 100644 index 000000000..e9b58b828 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingStrongView.cpp @@ -0,0 +1,260 @@ + +#include "traing/include/TraingStrongView.h" + +#include "common/image_cache_manager.h" +#include "UiConfig.h" +#include "ui_resource_image.h" +#include +#include "components/ui_button.h" +namespace OHOS +{ + static const char *imagePath_blue = "/user/res/Training/bule.bin"; + static const char *imagePath_yellow = "/user/res/Training/yellow.bin"; + static const char *imagePath_orange = "/user/res/Training/orange.bin"; + static const char *imagePath_green = "/user/res/Training/green.bin"; + + static TraingStrongView *g_pTraingStrongView{nullptr}; + + TraingStrongView::TraingStrongView() + { + g_pTraingStrongView = this; + } + + TraingStrongView::~TraingStrongView() + { + DeInit(); + g_pTraingStrongView = nullptr; + } + + TraingStrongView *TraingStrongView::GetInstance() + { + + return g_pTraingStrongView; + } + /* + InitLabel:初始化标签 + @param label 标签指针 + @param left 标签左边位置 + @param top 标签顶部位置 + @param width 标签宽度 + @param height 标签高度 + @param viewId 标签的视图 ID + @param text 标签显示的文本 + @param fontName 字体名称 + @param fontSize 字体大小 + */ + void TraingStrongView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize) + { + // 检查标签指针是否为空 + if (label == nullptr) + { + label = new UILabel(); + } + // 设置标签的位置和大小 + label->SetPosition(top, left); + label->Resize(width, height); + // 设置标签的视图 ID + label->SetViewId(viewId); + // 设置标签的样式 + label->SetStyle(STYLE_LINE_HEIGHT, 40); + label->SetStyle(STYLE_TEXT_FONT, fontSize); + label->SetFont(fontName, fontSize); + // 设置标签的文本和其他属性 + label->SetText(text); + label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + // 设置中心对齐,这里先屏蔽一下 + // label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label->SetRollSpeed(0); + // 设置标签可见 + label->SetVisible(true); + } + /* + InitButton:初始化按钮 + @param button 按钮指针 + @param left 按钮左边位置 + @param top 按钮顶部位置 + @param width 按钮宽度 + @param height 按钮高度 + @param viewId 按钮的视图 ID + */ + void TraingStrongView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId) + { + // 设置按钮的背景颜色 + uint32_t backgroundColor = 0xff191919; // 默认背景颜色 + uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色 + uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色 + // 创建新按钮(如果当前按钮为空) + if (button == nullptr) + { + button = new UIButton(); + } + button->SetPosition(left, top); + button->Resize(width, height); + button->SetViewId(viewId); + button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor); + button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED); + button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED); + // 设置按钮的点击事件监听器为 TraingStrongPresenter 的实例 + button->SetOnClickListener(static_cast(TraingStrongPresenter::GetInstance())); + // 设置按钮可见 + button->SetVisible(true); + } + /* + InitImageView:初始化图片 + @param imageView 图片指针 + @param left 图片左边位置 + @param top 图片顶部位置 + @param width 图片宽度 + @param height 图片高度 + @param viewId 图片的视图 ID + @param imagePath 图片路径 + */ + void TraingStrongView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath) + { + if (imageView == nullptr) + { + imageView = new UIImageView(); + } + imageView->SetPosition(top, left); + imageView->Resize(width, height); + imageView->SetViewId(viewId); + imageView->SetSrc(imagePath); + imageView->SetVisible(true); + } + /* InitView:初始化界面*/ + void TraingStrongView ::InitView() + { + if (container_ == nullptr) + { + container_ = new UIViewGroup(); + container_->SetPosition(0, 0, 466, 466); + container_->SetStyle(STYLE_BACKGROUND_OPA, 0); + } + // Add ScrollView to App + if (scrollView1_ == nullptr) + { + scrollView1_ = new UIScrollView(); + } + scrollView1_->SetPosition(0, 0); // widget's left position and top position + scrollView1_->Resize(466, 466); // widget's width and height + scrollView1_->SetViewId("scrollView1"); // Set style + scrollView1_->SetStyle(STYLE_BACKGROUND_OPA, 0xff); + scrollView1_->SetReboundSize(100); + scrollView1_->SetScrollBlankSize(52); + scrollView1_->SetHorizontalScrollState(false); + // Set additional property + // Add to rootView + container_->Add(scrollView1_); + scrollView1_->SetVisible(true); + + // 初始化Lable + InitLabel(label1_, 52, 173, 120, 35, "label1", "训练强度", DEFAULT_VECTOR_FONT_FILENAME, 30); + InitLabel(label2_, 133, 33, 60, 35, "label2", "训练强度用于判断是否训练不足或\n者训练太过,到底使心率增加多少\n的运动强度才是最合适的。", DEFAULT_VECTOR_FONT_FILENAME, 26); + InitLabel(label3_, 305, 33, 69, 23, "label3", "该强度区间是对应靶心率(由个人\n基本资料计算得出)强弱的实时状\n态显示,有助于提高训练质量。", DEFAULT_VECTOR_FONT_FILENAME, 26); + InitLabel(label4_, 465, 33, 60, 35, "label4", "训练状态代表的意义:", DEFAULT_VECTOR_FONT_FILENAME, 26); + InitLabel(label5_, 505, 97, 60, 35, "label5", "较低强度-热身运动\n中等强度-燃脂区\n高等强度-提升心肺机能\n超高强度-专业运动员", DEFAULT_VECTOR_FONT_FILENAME, 26); + InitLabel(label6_, 740, 51, 60, 35, "label5", "注:该训练强度并非专业运动评\n估,数据仅供参考。", DEFAULT_VECTOR_FONT_FILENAME, 26); + label6_->SetTextColor(Color::GetColorFromRGBA(0xff, 0x8a, 0x36, 0xff)); + scrollView1_->Add(label1_); + scrollView1_->Add(label2_); + scrollView1_->Add(label3_); + scrollView1_->Add(label4_); + scrollView1_->Add(label5_); + scrollView1_->Add(label6_); + + // 初始化Image + InitImageView(image1_, 510, 60, 100, 100, "image1", imagePath_blue); + InitImageView(image2_, 550, 60, 100, 100, "image2", imagePath_green); + InitImageView(image3_, 590, 60, 100, 100, "image3", imagePath_orange); + InitImageView(image4_, 630, 60, 100, 100, "image4", imagePath_yellow); + scrollView1_->Add(image1_); + scrollView1_->Add(image2_); + scrollView1_->Add(image3_); + scrollView1_->Add(image4_); + + // Add ImageView to App + if (image5_ == nullptr) + { + image5_ = new UIImageView(); + } + image5_->SetPosition(183, 813); // widget's left position and top position + image5_->Resize(100, 100); // widget's width and height + image5_->SetViewId("image3"); // Set style + // Set additional property + // Add to scrollView2 + scrollView1_->Add(image5_); + image5_->SetVisible(true); + } + /* DeInit:删除组件 */ + void TraingStrongView::DeInit() + { + UIView *view = static_cast(container_)->GetChildrenHead(); + while (view != nullptr) + { + UIView *tempView = view; + view = view->GetNextSibling(); + if (tempView->GetParent()) + { + static_cast(tempView->GetParent())->Remove(tempView); + } + delete tempView; + } + delete container_; + container_ = nullptr; + } + + void TraingStrongView::PreLoad(void) + { + if (!viewiInitStatus) + { + InitView(); + viewiInitStatus = true; + } + } + void TraingStrongView::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(TraingStrongPresenter::GetInstance()); + if (draglistener == nullptr) + { + return; + } + container_->SetOnDragListener(draglistener); + + container_->SetTouchable(true); + container_->SetDraggable(true); + + PreLoad(); + RootView::GetInstance()->Add(container_); + } + + void TraingStrongView::OnSetUpView() + { + + View::OnSetUpView(); + Draw(); + } + + void TraingStrongView::OnTearDownView() + { + + View::OnTearDownView(); + return; + } + + void TraingStrongView::OnStop() + { + View::OnStop(); + RootView::GetInstance()->RemoveAll(); + return; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingView.cpp index f447c9d48..30006862e 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingView.cpp @@ -6,236 +6,420 @@ #include "ui_resource_image.h" #include #include "components/ui_button.h" -#include "components/ui_view_group.h" -#include "common/image_cache_manager.h" - namespace OHOS { static TraingView *g_pTraingView{nullptr}; TraingView::TraingView() { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingView::TraingView"); - SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION); + g_pTraingView = this; } TraingView::~TraingView() { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingView::~TraingView"); - RemoveAll(); DeInit(); g_pTraingView = nullptr; } TraingView *TraingView::GetInstance() { + return g_pTraingView; } - bool TraingView::InitLable() - { - // 检查标签指针是否为空 - if (titleLabel == nullptr) - { - titleLabel = new UILabel(); - } - // 设置标签的位置和大小 - titleLabel->SetPosition(173, 52); - titleLabel->Resize(200, 60); - // 设置标签的视图 ID - titleLabel->SetViewId("titleLabel"); - // 设置标签的样式 - titleLabel->SetStyle(STYLE_TEXT_FONT, 30); - titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); - // 设置标签的文本和其他属性 - titleLabel->SetText("快速训练"); - titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); - titleLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); - titleLabel->SetRollSpeed(0); - Add(titleLabel); - - return true; - } - /* -------------------------------------------------------------------------- */ - // 加载图片函数(针对UILabelButtonExt) - bool TraingView::LoadImage(UILabelButtonExt *view, uint32_t resId) + + void TraingView::Init() { - std::string file = TRAINING_IAMGES; - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TrainingView LoadImage: %s, resID=0x%x", TRAINING_IAMGES, resId); - ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(resId, file); - if (image == nullptr) + if (container_ == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingView::LoadImage %x fail", resId); - return false; + container_ = new UIViewGroup(); + container_->SetPosition(0, 0, 466, 466); + container_->SetStyle(STYLE_BACKGROUND_OPA, 0); } - // Assuming SetImageSrc is the correct function for UILabelButtonExt - view->SetImageSrc(image, nullptr); - return true; - } - // 加载图片函数(针对UIImageView) - bool TraingView::LoadImage(UIImageView *view, uint32_t resId) - { - std::string file = TRAINING_IAMGES; - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TrainingView LoadImage: %s, resID=0x%x", TRAINING_IAMGES, resId); - ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(resId, file); - if (image == nullptr) + // Add Label to App + if (label1_ == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingView::LoadImage %x fail", resId); - return false; + label1_ = new UILabel(); } - view->SetSrc(image); // Assuming SetSrc is the correct function for UIImageView - return true; - } + label1_->SetPosition(173, 52); // widget's left position and top position + label1_->Resize(200, 60); // widget's width and height + label1_->SetViewId("label1"); // Set style + label1_->SetStyle(STYLE_TEXT_FONT, 30); - bool TraingView::AddButton() - { - struct ButtonInfo - { - std::string text; - uint32_t defaultImgSrc; - UILabelButtonExt *button; - uint16_t posX; - uint16_t posY; - }; - - ButtonInfo buttons[] = { - {"健走", TRAINING_BUTTONGROUND2, Button1, 86, 118}, - {"骑行", TRAINING_BOUTTONGROUND, Button2, 236, 118}, - {"跑步", TRAINING_BOUTTONGROUND, Button3, 86, 268}, - {"更多", TRAINING_MORE, ButtonMore, 236, 268}}; - - for (auto &buttonInfo : buttons) - { - if (buttonInfo.button == nullptr) - { - buttonInfo.button = new UILabelButtonExt(); - } - - if (!LoadImage(buttonInfo.button, buttonInfo.defaultImgSrc)) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d], triangulation load fail", __LINE__); - return false; - } - - buttonInfo.button->SetPosition(buttonInfo.posX, buttonInfo.posY); - buttonInfo.button->Resize(140, 140); - buttonInfo.button->SetText(buttonInfo.text.c_str()); - buttonInfo.button->SetLabelPosition(0, 70); - buttonInfo.button->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 20); - buttonInfo.button->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff19ff41, UIButton::PRESSED); - buttonInfo.button->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED); - - Add(buttonInfo.button); - } - - return true; - } + // Set additional property + label1_->SetText("快速训练"); + label1_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + label1_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label1_->SetRollSpeed(0); + label1_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); - bool TraingView::InitImage() - { - struct ImageInfo - { - UIImageView *image; - const int imagePath; - uint16_t posX; - uint16_t posY; - const char *viewId; - }; - - ImageInfo images[] = { - {image1, TRAINING_WALKING_BIG, 126, 298, "image3"}, - {image2, TRAINING_RIDING_BIG2, 276, 148, "image2"}, - {image3, TRAINING_RUNNING_BIG, 126, 148, "image1"}}; - - for (auto &imageInfo : images) - { - if (imageInfo.image == nullptr) - { - imageInfo.image = new UIImageView(); - } - imageInfo.image->SetPosition(imageInfo.posX, imageInfo.posY); - imageInfo.image->Resize(100, 100); - if (!LoadImage(imageInfo.image, imageInfo.imagePath)) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d], triangulation load fail", __LINE__); - return false; - } - imageInfo.image->SetViewId(imageInfo.viewId); - Add(imageInfo.image); - } - - return true; - } - /* -------------------------------------------------------------------------- */ - bool TraingView::InitView() - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingView::InitView()"); - if (!InitLable()) + // Add to rootView + container_->Add(label1_); + label1_->SetVisible(true); + + // Add Button to App + if (button3_ == nullptr) { - printf("InitLable error!\n"); - }; - if (!AddButton()) + button3_ = new UIButton(); + } + button3_->SetPosition(236, 268); // widget's left position and top position + button3_->Resize(140, 140); // widget's width and height + button3_->SetViewId(BUTTONMORE); // Set style + button3_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000); + button3_->SetStyle(STYLE_BACKGROUND_OPA, 0x00); + + // Set additional property +#ifdef _WIN32 + char *button3defaultImgSrc = "c:/Users/caiking/project/image_converter_tool/output/Training/More.bin"; +#else + const char *button3defaultImgSrc = PNG_TRAING_BOUTTONMORE_IMAGE; +#endif + char *button3triggeredImgSrc = nullptr; + button3_->SetImageSrc(button3defaultImgSrc, button3triggeredImgSrc); + button3_->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff33df1c, UIButton::PRESSED); + button3_->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED); + button3_->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED); + + // Add the CallBack about events + UIView::OnClickListener *button3Click = static_cast(TraingPresenter::GetInstance()); + button3_->SetOnClickListener(button3Click); + // Add to rootView + container_->Add(button3_); + button3_->SetVisible(true); + + // Add Button to App + if (button4_ == nullptr) { - printf("AddButton error!\n"); - }; - if (!InitImage()) + button4_ = new UIButton(); + } + button4_->SetPosition(86, 118); // widget's left position and top position + button4_->Resize(140, 140); // widget's width and height + button4_->SetViewId(BUTTON2); // Set style + button4_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000); + button4_->SetStyle(STYLE_BACKGROUND_OPA, 0x00); + + // Set additional property +#ifdef _WIN32 + char *button4defaultImgSrc = "c:/Users/caiking/project/image_converter_tool/output/Training/Buttonground2.bin"; +#else + const char *button4defaultImgSrc = PNG_TRAING_BUTTONGRONG2_IMAGE; +#endif + char *button4triggeredImgSrc = nullptr; + button4_->SetImageSrc(button4defaultImgSrc, button4triggeredImgSrc); + button4_->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff33df1c, UIButton::PRESSED); + button4_->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED); + button4_->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED); + + // Add the CallBack about events + UIView::OnClickListener *button4Click = static_cast(TraingPresenter::GetInstance()); + button4_->SetOnClickListener(button4Click); + // Add to rootView + container_->Add(button4_); + button4_->SetVisible(true); + + // Add Button to App + if (button1_ == nullptr) { - printf("InitImage error!\n"); - }; - // SetCoverable(true); - return true; - } + button1_ = new UIButton(); + } + button1_->SetPosition(86, 268); // widget's left position and top position + button1_->Resize(140, 140); // widget's width and height + button1_->SetViewId(BUTTON3); // Set style + button1_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000); + button1_->SetStyle(STYLE_BACKGROUND_OPA, 0x00); - void TraingView::DeInit() - { - UIImageView *imageViews[] = {image1, image2, image3}; - UIButton *buttons[] = {ButtonMore, Button1, Button3, Button2}; + // Set additional property +#ifdef _WIN32 + char *button1defaultImgSrc = "c:/Users/caiking/project/image_converter_tool/output/Training/Bouttonground.bin"; +#else + const char *button1defaultImgSrc = PNG_TRAING_BUTTONGRONG_IMAGE; +#endif + char *button1triggeredImgSrc = nullptr; + button1_->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc); + button1_->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff33df1c, UIButton::PRESSED); + button1_->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED); + button1_->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED); + + // Add the CallBack about events + UIView::OnClickListener *button1Click = static_cast(TraingPresenter::GetInstance()); + button1_->SetOnClickListener(button1Click); + // Add to rootView + container_->Add(button1_); + button1_->SetVisible(true); - for (auto &imageView : imageViews) + // Add Button to App + if (button2_ == nullptr) { - if (imageView != nullptr) - { - delete imageView; - imageView = nullptr; - } + button2_ = new UIButton(); } + button2_->SetPosition(236, 118); // widget's left position and top position + button2_->Resize(140, 140); // widget's width and height + button2_->SetViewId(BUTTON1); // Set style + button2_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000); + button2_->SetStyle(STYLE_BACKGROUND_OPA, 0x00); - for (auto &button : buttons) + // Set additional property +#ifdef _WIN32 + char *button2defaultImgSrc = "c:/Users/caiking/project/image_converter_tool/output/Training/Bouttonground.bin"; +#else + const char *button2defaultImgSrc = PNG_TRAING_BUTTONGRONG_IMAGE; +#endif + char *button2triggeredImgSrc = nullptr; + button2_->SetImageSrc(button2defaultImgSrc, button2triggeredImgSrc); + button2_->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff33df1c, UIButton::PRESSED); + button2_->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED); + button2_->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED); + + // Add the CallBack about events + UIView::OnClickListener *button2Click = static_cast(TraingPresenter::GetInstance()); + button2_->SetOnClickListener(button2Click); + // Add to rootView + container_->Add(button2_); + button2_->SetVisible(true); + + // Add ImageView to App + if (image1_ == nullptr) { - if (button != nullptr) - { - delete button; - button = nullptr; - } + image1_ = new UIImageView(); } + image1_->SetPosition(276, 148); // widget's left position and top position + image1_->Resize(100, 100); // widget's width and height + image1_->SetViewId("image2"); // Set style + + // Set additional property +#ifdef _WIN32 + char *image1imagesPath = "c:/Users/caiking/project/image_converter_tool/output/Training/riding-big2.bin"; +#else + const char *image1imagesPath = PNG_TRAING_RIDINGBIG_IMAGE; +#endif + image1_->SetSrc(image1imagesPath); + + // Add to rootView + container_->Add(image1_); + image1_->SetVisible(true); + + // Add Label to App + if (label2_ == nullptr) + { + label2_ = new UILabel(); + } + label2_->SetPosition(286, 210); // widget's left position and top position + label2_->Resize(200, 60); // widget's width and height + label2_->SetViewId("label2"); // Set style + label2_->SetStyle(STYLE_TEXT_FONT, 20); + + // Set additional property + label2_->SetText("骑行"); + label2_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + label2_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label2_->SetRollSpeed(0); + label2_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 20); + + // Add to rootView + container_->Add(label2_); + label2_->SetVisible(true); - if (titleLabel != nullptr) + // Add ImageView to App + if (image3_ == nullptr) { - delete titleLabel; - titleLabel = nullptr; + image3_ = new UIImageView(); } + image3_->SetPosition(126, 298); // widget's left position and top position + image3_->Resize(100, 100); // widget's width and height + image3_->SetViewId("image3"); // Set style + + // Set additional property +#ifdef _WIN32 + char *image3imagesPath = "c:/Users/caiking/project/image_converter_tool/output/Training/running-big.bin"; +#else + const char *image3imagesPath = PNG_TRAING_RUNNINGBIG_IMAGE; +#endif + image3_->SetSrc(image3imagesPath); + + // Add to rootView + container_->Add(image3_); + image3_->SetVisible(true); + + // Add Label to App + if (label3_ == nullptr) + { + label3_ = new UILabel(); + } + label3_->SetPosition(135, 210); // widget's left position and top position + label3_->Resize(200, 60); // widget's width and height + label3_->SetViewId("label3"); // Set style + label3_->SetStyle(STYLE_TEXT_FONT, 20); + + // Set additional property + label3_->SetText("健走"); + label3_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + label3_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label3_->SetRollSpeed(0); + label3_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 20); + + // Add to rootView + container_->Add(label3_); + label3_->SetVisible(true); + + // Add ImageView to App + if (image5_ == nullptr) + { + image5_ = new UIImageView(); + } + image5_->SetPosition(126, 148); // widget's left position and top position + image5_->Resize(100, 100); // widget's width and height + image5_->SetViewId("image1"); // Set style + + // Set additional property +#ifdef _WIN32 + char *image5imagesPath = "c:/Users/caiking/project/image_converter_tool/output/Training/walking-big.bin"; +#else + const char *image5imagesPath = PNG_TRAING_WALKINGBIG_IMAGE; +#endif + image5_->SetSrc(image5imagesPath); + + // Add to rootView + container_->Add(image5_); + image5_->SetVisible(true); + + // Add Label to App + if (label4_ == nullptr) + { + label4_ = new UILabel(); + } + label4_->SetPosition(131, 365); // widget's left position and top position + label4_->Resize(200, 60); // widget's width and height + label4_->SetViewId("label4"); // Set style + label4_->SetStyle(STYLE_TEXT_FONT, 20); + + // Set additional property + label4_->SetText("跑步"); + label4_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + label4_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label4_->SetRollSpeed(0); + label4_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 20); + + // Add to rootView + container_->Add(label4_); + label4_->SetVisible(true); } - void TraingView::PreLoad(void) + void TraingView::DeInit() { - if (!viewiInitStatus) + if (container_ != nullptr) { - InitView(); - viewiInitStatus = true; + container_->RemoveAll(); + delete container_; + container_ = nullptr; } - // if (!resLoadStatus) - // { - // resLoadStatus = true; - // } + if (label1_ != nullptr) + { + delete label1_; + label1_ = nullptr; + } + if (button3_ != nullptr) + { + delete button3_; + button3_ = nullptr; + } + if (button4_ != nullptr) + { + delete button4_; + button4_ = nullptr; + } + if (button1_ != nullptr) + { + delete button1_; + button1_ = nullptr; + } + if (button2_ != nullptr) + { + delete button2_; + button2_ = nullptr; + } + if (image1_ != nullptr) + { + delete image1_; + image1_ = nullptr; + } + if (label2_ != nullptr) + { + delete label2_; + label2_ = nullptr; + } + if (image3_ != nullptr) + { + delete image3_; + image3_ = nullptr; + } + if (label3_ != nullptr) + { + delete label3_; + label3_ = nullptr; + } + if (image5_ != nullptr) + { + delete image5_; + image5_ = nullptr; + } + if (label4_ != nullptr) + { + delete label4_; + label4_ = nullptr; + } + } + + UIView *TraingView::GetView() + { + Init(); + return container_; + } + + void TraingView::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(TraingPresenter::GetInstance()); + if (draglistener == nullptr) + { + return; + } + container_->SetOnDragListener(draglistener); + + container_->SetTouchable(true); + container_->SetDraggable(true); + + GetView(); + RootView::GetInstance()->Add(container_); + } + + void TraingView::OnSetUpView() + { + + View::OnSetUpView(); + Draw(); + } + + void TraingView::OnTearDownView() + { + + View::OnTearDownView(); + return; } - void TraingView::UnLoad(void) + void TraingView::OnStop() { - // if (resLoadStatus) - // { - // //ImageCacheManager::GetInstance().UnloadAllInMultiRes(TRAINING_IAMGES); - // resLoadStatus = false; - // } + View::OnStop(); + RootView::GetInstance()->RemoveAll(); + return; } } diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingWinPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingWinPresenter.cpp new file mode 100644 index 000000000..76fe50586 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingWinPresenter.cpp @@ -0,0 +1,79 @@ +#include "AppViewIDs.h" +#include "NativeAbility.h" + +#include +#include +#include +#include "traing/include/TraingWinPresenter.h" +// #include "TraingWinView.h" + +namespace OHOS +{ + + // 当前Presenter属性实例化的内存指针 + static TraingWinPresenter *g_pTraingWinPresenter = nullptr; + + TraingWinPresenter::TraingWinPresenter() + { + + g_pTraingWinPresenter = this; + } + + TraingWinPresenter::~TraingWinPresenter() + { + g_pTraingWinPresenter = nullptr; + } + + TraingWinPresenter *TraingWinPresenter::GetInstance() + { + + return g_pTraingWinPresenter; + } + + void TraingWinPresenter::OnStart() + { + + Presenter::OnStart(); + } + + void TraingWinPresenter::OnPause(void) + { + + Presenter::OnPause(); + } + + void TraingWinPresenter::OnResume(void) + { + + Presenter::OnResume(); + } + + void TraingWinPresenter::OnStop(void) + { + + Presenter::OnStop(); + } + + bool TraingWinPresenter::OnDrag(UIView &view, const DragEvent &event) + { + + // if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && + // (event.GetDeltaX() > 40) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY())))) + // { + // uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId(); + // NativeAbility::GetInstance().ChangeSlice(preSlice); + // } + UNUSED(view); + return true; + } + + bool TraingWinPresenter::OnClick(UIView &view, const ClickEvent &event) + { + // 根据控件id查找是哪个控件触发了点击回调 + if (strcmp(view.GetViewId(), BUTTONOK) == 0) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_TRAININGENDDATA); + } + return true; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingWinView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingWinView.cpp new file mode 100644 index 000000000..6b16ccd90 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingWinView.cpp @@ -0,0 +1,317 @@ + +#include "traing/include/TraingWinView.h" + +#include "common/image_cache_manager.h" +#include "UiConfig.h" +#include "ui_resource_image.h" +#include +#include "components/ui_button.h" + +namespace OHOS +{ + static const char *imagePath_win = "/user/res/Training/win.bin"; + static TraingWinView *g_pTraingWinView{nullptr}; + TraingWinView::TraingWinView() + { + g_pTraingWinView = this; + } + + TraingWinView::~TraingWinView() + { + DeInit(); + g_pTraingWinView = nullptr; + } + TraingWinView *TraingWinView::GetInstance() + { + + return g_pTraingWinView; + } + + /** + * 创建包含图片文件路径的数组 + * @param basePath 包含图片文件的基本路径 + * @param fileExtension 图片文件的扩展名 + * @param numImages 图片文件的数量 + * @return 返回包含图片文件路径的数组 + */ + const char **CreateImagePathsArray(const char *basePath, const char *fileExtension, int numImages) + { + const char **imagePaths = new const char *[numImages]; + char buffer[256]; + for (int i = 0; i < numImages; i++) + { + snprintf(buffer, sizeof(buffer), "%s/%d.%s", basePath, i + 1, fileExtension); + imagePaths[i] = strdup(buffer); + } + return imagePaths; + } + + /** + * 释放图片文件路径数组占用的内存 + * @param imagePaths 图片文件路径数组 + * @param numImages 图片文件的数量 + */ + void FreeImagePathsArray(const char **imagePaths, int numImages) + { + for (int i = 0; i < numImages; i++) + { + free((void *)imagePaths[i]); + } + delete[] imagePaths; + } + /**************************************************/ + /** + InitLabel:初始化标签 + @param label 标签指针 + @param left 标签左边位置 + @param top 标签顶部位置 + @param width 标签宽度 + @param height 标签高度 + @param viewId 标签的视图 ID + @param text 标签显示的文本 + @param fontName 字体名称 + @param fontSize 字体大小 + */ + void TraingWinView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize) + { + // 检查标签指针是否为空 + if (label == nullptr) + { + label = new UILabel(); + } + // 设置标签的位置和大小 + label->SetPosition(left, top); + label->Resize(width, height); + // 设置标签的视图 ID + label->SetViewId(viewId); + // 设置标签的样式 + label->SetStyle(STYLE_TEXT_FONT, fontSize); + label->SetFont(fontName, fontSize); + // 设置标签的文本和其他属性 + label->SetText(text); + label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label->SetRollSpeed(0); + // 设置标签可见 + label->SetVisible(true); + } + /** + InitButton:初始化按钮 + @param button 按钮指针 + @param left 按钮左边位置 + @param top 按钮顶部位置 + @param width 按钮宽度 + @param height 按钮高度 + @param viewId 按钮的视图 ID + */ + void TraingWinView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId) + { + // 设置按钮的背景颜色 + uint32_t backgroundColor = 0xff191919; // 默认背景颜色 + uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色 + uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色 + // 创建新按钮(如果当前按钮为空) + if (button == nullptr) + { + button = new UIButton(); + } + button->SetPosition(left, top); + button->Resize(width, height); + button->SetViewId(viewId); + button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor); + button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED); + button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED); + // 设置按钮的点击事件监听器为 TraingWinPresenter 的实例 + button->SetOnClickListener(static_cast(TraingWinPresenter::GetInstance())); + // 设置按钮可见 + button->SetVisible(true); + } + + /** + * 初始化图片视图 + * @param imageView 图片视图指针 + * @param left 图片左边位置 + * @param top 图片顶部位置 + * @param width 图片宽度 + * @param height 图片高度 + * @param viewId 图片的视图 ID + * @param imagePath 图片路径 + */ + void TraingWinView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath) + { + if (imageView == nullptr) + { + imageView = new UIImageView(); + } + imageView->SetPosition(left, top); + imageView->Resize(width, height); + imageView->SetViewId(viewId); + imageView->SetSrc(imagePath); + imageView->SetVisible(true); + } + + /** + * @brief 初始化UIImageAnimatorView,并设置为GIF动画。 + * + * 该函数用于使用提供的GIF图像和属性初始化UIImageAnimatorView。 + * + * @param imageAnimator 要初始化的UIImageAnimatorView对象的引用。 + * @param paths GIF图像文件路径的数组。 + * @param numFrames GIF中的帧数。 + * @param left 视图的左侧位置。 + * @param top 视图的顶部位置。 + * @param width 视图的宽度。 + * @param height 视图的高度。 + * @param viewId 视图的ID。 + * @param time 视图的帧速 + * @return 如果初始化成功则返回true,否则返回false。 + */ + void TraingWinView::InitImageAnimatorSource(UIImageAnimatorView *&imageAnimator, const char **imagePaths, int numFrames, int left, int top, int width, int height, const char *viewId, int time) + { + if (imageAnimator == nullptr) + { + imageAnimator = new UIImageAnimatorView(); + } + imageAnimator->SetPosition(left, top); + imageAnimator->Resize(width, height); + imageAnimator->SetViewId(viewId); + imageAnimator->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff); + imageAnimator->SetStyle(STYLE_BACKGROUND_OPA, 0xff); + + ImageAnimatorInfo *imageAnimatorInfo = new ImageAnimatorInfo[numFrames]; + for (int i = 0; i < numFrames; i++) + { + imageAnimatorInfo[i].imagePath = imagePaths[i]; + imageAnimatorInfo[i].pos.x = left; + imageAnimatorInfo[i].pos.y = top; + imageAnimatorInfo[i].width = width; + imageAnimatorInfo[i].height = height; + imageAnimatorInfo[i].imageType = IMG_SRC_FILE_PATH; + } + + imageAnimator->SetImageAnimatorSrc(imageAnimatorInfo, numFrames, time); // 200 is the default delay time + imageAnimator->SetTimeOfPause(time); + imageAnimator->SetRepeatTimes(1); + imageAnimator->SetReverse(true); + imageAnimator->SetVisible(true); + } + /* InitView:初始化界面*/ + void TraingWinView ::InitView() + { + if (container_ == nullptr) + { + container_ = new UIViewGroup(); + container_->SetPosition(0, 0, 466, 466); + container_->SetStyle(STYLE_BACKGROUND_OPA, 0); + } + + // 初始化Lable + InitLabel(label1_, 155, 52, 195, 35, "label1", "目标已达成", DEFAULT_VECTOR_FONT_FILENAME, 35); + container_->Add(label1_); + InitLabel(label2_, 108, 215, 146, 35, "label2", "10,000", DEFAULT_VECTOR_FONT_FILENAME, 80); + label2_->SetTextColor(Color::GetColorFromRGBA(0x4f, 0xc3, 0x4c, 0xff)); + container_->Add(label2_); + InitLabel(label3_, 132, 307, 146, 35, "label3", "完成目标", DEFAULT_VECTOR_FONT_FILENAME, 30); + container_->Add(label3_); + InitLabel(label4_, 280, 307, 146, 35, "label3", "100%", DEFAULT_VECTOR_FONT_FILENAME, 30); + label4_->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f)); + container_->Add(label4_); + + /* + 初始化image + InitImageView(image1_, 173, 100, 120, 120, "image1", imagePath_win); + container_->Add(image1_); + */ + + // 初始化图片数组 + const char *basePath = "/user/res/Training/win/"; + const char *fileExtension = "bin"; + const char **imagePaths = CreateImagePathsArray(basePath, fileExtension, 94); + InitImageAnimatorSource(imageAnimator, imagePaths, 94, 173, 100, 120, 120, "imageAnimator1", 10); + container_->Add(imageAnimator); + // FreeImagePathsArray(imagePaths, 94); //删除数组,释放内存 + + // 初始化Button + InitButton(button1_, 0, 366, 466, 100, BUTTONOK); + // Set additional property + char *button1defaultImgSrc = "/user/res/Training/buttonok.bin"; + char *button1triggeredImgSrc = nullptr; + button1_->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc); + container_->Add(button1_); + } + + /* DeInit:删除组件*/ + void TraingWinView::DeInit() + { + UIView *view = static_cast(container_)->GetChildrenHead(); + while (view != nullptr) + { + UIView *tempView = view; + view = view->GetNextSibling(); + if (tempView->GetParent()) + { + static_cast(tempView->GetParent())->Remove(tempView); + } + delete tempView; + } + delete container_; + container_ = nullptr; + } + + void TraingWinView::PreLoad(void) + { + if (!viewiInitStatus) + { + InitView(); + imageAnimator->Start(); + viewiInitStatus = true; + } + } + void TraingWinView::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(TraingWinPresenter::GetInstance()); + if (draglistener == nullptr) + { + return; + } + container_->SetOnDragListener(draglistener); + + container_->SetTouchable(true); + container_->SetDraggable(true); + + PreLoad(); + RootView::GetInstance()->Add(container_); + } + + void TraingWinView::OnSetUpView() + { + + View::OnSetUpView(); + Draw(); + } + + void TraingWinView::OnTearDownView() + { + + View::OnTearDownView(); + return; + } + + void TraingWinView::OnStop() + { + View::OnStop(); + imageAnimator->Stop(); + RootView::GetInstance()->RemoveAll(); + return; + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/traing_card/Traing_CardView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/traing_card/Traing_CardView.cpp new file mode 100644 index 000000000..e514a9d09 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/traing_card/Traing_CardView.cpp @@ -0,0 +1,241 @@ + +#include "traing/traing_card/Traing_CardView.h" + +#include "common/image_cache_manager.h" +#include "UiConfig.h" +#include "ui_resource_image.h" +#include +#include "components/ui_button.h" +#include "components/ui_view_group.h" +#include "common/image_cache_manager.h" + +namespace OHOS +{ + static Traing_CardView *g_pTraing_CardView{nullptr}; + + Traing_CardView::Traing_CardView() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Traing_CardView::Traing_CardView"); + SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION); + g_pTraing_CardView = this; + } + + Traing_CardView::~Traing_CardView() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Traing_CardView::~Traing_CardView"); + RemoveAll(); + DeInit(); + g_pTraing_CardView = nullptr; + } + + Traing_CardView *Traing_CardView::GetInstance() + { + return g_pTraing_CardView; + } + bool Traing_CardView::InitLable() + { + // 检查标签指针是否为空 + if (titleLabel == nullptr) + { + titleLabel = new UILabel(); + } + // 设置标签的位置和大小 + titleLabel->SetPosition(173, 52); + titleLabel->Resize(200, 60); + // 设置标签的视图 ID + titleLabel->SetViewId("titleLabel"); + // 设置标签的样式 + titleLabel->SetStyle(STYLE_TEXT_FONT, 30); + titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + // 设置标签的文本和其他属性 + titleLabel->SetText("快速训练"); + titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + titleLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + titleLabel->SetRollSpeed(0); + Add(titleLabel); + + return true; + } + /* -------------------------------------------------------------------------- */ + // 加载图片函数(针对UILabelButtonExt) + bool Traing_CardView::LoadImage(UILabelButtonExt *view, uint32_t resId) + { + std::string file = TRAINING_IAMGES; + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TrainingView LoadImage: %s, resID=0x%x", TRAINING_IAMGES, resId); + ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(resId, file); + if (image == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Traing_CardView::LoadImage %x fail", resId); + return false; + } + // Assuming SetImageSrc is the correct function for UILabelButtonExt + view->SetImageSrc(image, nullptr); + return true; + } + + // 加载图片函数(针对UIImageView) + bool Traing_CardView::LoadImage(UIImageView *view, uint32_t resId) + { + std::string file = TRAINING_IAMGES; + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TrainingView LoadImage: %s, resID=0x%x", TRAINING_IAMGES, resId); + ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(resId, file); + if (image == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Traing_CardView::LoadImage %x fail", resId); + return false; + } + view->SetSrc(image); // Assuming SetSrc is the correct function for UIImageView + return true; + } + + bool Traing_CardView::AddButton() + { + struct ButtonInfo + { + std::string text; + uint32_t defaultImgSrc; + UILabelButtonExt *button; + uint16_t posX; + uint16_t posY; + }; + + ButtonInfo buttons[] = { + {"健走", TRAINING_BUTTONGROUND2, Button1, 86, 118}, + {"骑行", TRAINING_BOUTTONGROUND, Button2, 236, 118}, + {"跑步", TRAINING_BOUTTONGROUND, Button3, 86, 268}, + {"更多", TRAINING_MORE, ButtonMore, 236, 268}}; + + for (auto &buttonInfo : buttons) + { + if (buttonInfo.button == nullptr) + { + buttonInfo.button = new UILabelButtonExt(); + } + + if (!LoadImage(buttonInfo.button, buttonInfo.defaultImgSrc)) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d], triangulation load fail", __LINE__); + return false; + } + + buttonInfo.button->SetPosition(buttonInfo.posX, buttonInfo.posY); + buttonInfo.button->Resize(140, 140); + buttonInfo.button->SetText(buttonInfo.text.c_str()); + buttonInfo.button->SetLabelPosition(0, 70); + buttonInfo.button->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 20); + buttonInfo.button->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff19ff41, UIButton::PRESSED); + buttonInfo.button->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED); + + Add(buttonInfo.button); + } + + return true; + } + + bool Traing_CardView::InitImage() + { + struct ImageInfo + { + UIImageView *image; + const int imagePath; + uint16_t posX; + uint16_t posY; + const char *viewId; + }; + + ImageInfo images[] = { + {image1, TRAINING_WALKING_BIG, 126, 298, "image3"}, + {image2, TRAINING_RIDING_BIG2, 276, 148, "image2"}, + {image3, TRAINING_RUNNING_BIG, 126, 148, "image1"}}; + + for (auto &imageInfo : images) + { + if (imageInfo.image == nullptr) + { + imageInfo.image = new UIImageView(); + } + imageInfo.image->SetPosition(imageInfo.posX, imageInfo.posY); + imageInfo.image->Resize(100, 100); + if (!LoadImage(imageInfo.image, imageInfo.imagePath)) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[%d], triangulation load fail", __LINE__); + return false; + } + imageInfo.image->SetViewId(imageInfo.viewId); + Add(imageInfo.image); + } + + return true; + } + /* -------------------------------------------------------------------------- */ + bool Traing_CardView::InitView() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Traing_CardView::InitView()"); + if (!InitLable()) + { + printf("InitLable error!\n"); + }; + if (!AddButton()) + { + printf("AddButton error!\n"); + }; + if (!InitImage()) + { + printf("InitImage error!\n"); + }; + // SetCoverable(true); + return true; + } + + void Traing_CardView::DeInit() + { + UIImageView *imageViews[] = {image1, image2, image3}; + UIButton *buttons[] = {ButtonMore, Button1, Button3, Button2}; + + for (auto &imageView : imageViews) + { + if (imageView != nullptr) + { + delete imageView; + imageView = nullptr; + } + } + + for (auto &button : buttons) + { + if (button != nullptr) + { + delete button; + button = nullptr; + } + } + + if (titleLabel != nullptr) + { + delete titleLabel; + titleLabel = nullptr; + } + } + + void Traing_CardView::PreLoad(void) + { + if (!viewiInitStatus) + { + InitView(); + viewiInitStatus = true; + } + // if (!resLoadStatus) + // { + // resLoadStatus = true; + // } + } + + void Traing_CardView::UnLoad(void) + { + // if (resLoadStatus) + // { + // //ImageCacheManager::GetInstance().UnloadAllInMultiRes(TRAINING_IAMGES); + // resLoadStatus = false; + // } + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/traing_card/Traing_CardView.h b/code/sdk/application/wearable/fd230app/nativeui/traing/traing_card/Traing_CardView.h new file mode 100644 index 000000000..b5dea02a5 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/traing_card/Traing_CardView.h @@ -0,0 +1,66 @@ +#ifndef _Traing_CARD_VIEW_H +#define _Traing_CARD_VIEW_H + +#include "BaseView.h" +#include "View.h" +#include +#include "components/ui_view_group.h" +#include "components/ui_label.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 "wearable_log.h" +#include "ohos_types.h" +#include "components/ui_card_page.h" + +namespace OHOS +{ +#define BUTTON1 "button1" // 按键1 +#define BUTTON2 "button2" // 按键2 +#define BUTTON3 "button3" // 按键3 +#define BUTTONMORE "button4" // 按键 更多 + + class Traing_CardView : public UICardPage + { + + public: + Traing_CardView(); + virtual ~Traing_CardView(); + static Traing_CardView *GetInstance(void); + + bool InitView(); + void DeInit(); + + bool AddButton(); + bool InitImage(); + bool InitLable(); + + void PreLoad(void) override; + void UnLoad(void) override; + + bool LoadImage(UIImageView *view, uint32_t resId); + bool LoadImage(UILabelButtonExt *view, uint32_t resId); + + private: + UIView::OnDragListener *draglistener{nullptr}; + Traing_CardView(Traing_CardView &&) = delete; + Traing_CardView &operator=(Traing_CardView &&) = delete; + + UILabelButtonExt *Button1 = nullptr; + UILabelButtonExt *Button2 = nullptr; + UILabelButtonExt *Button3 = nullptr; + UILabelButtonExt *ButtonMore = nullptr; + + UILabel *titleLabel = nullptr; + UIImageView *image1 = nullptr; + UIImageView *image2 = nullptr; + UIImageView *image3 = nullptr; + UIImageView *imagemore = nullptr; + + bool viewiInitStatus{false}; + bool resLoadStatus{false}; + }; +} // namespace OHOS +#endif // Traing_PRESENTER_H diff --git a/code/sdk/application/wearable/fd230app/nativeui/traingrecord/include/TraingRecordPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/traingrecord/include/TraingRecordPresenter.h new file mode 100644 index 000000000..1c5a0758b --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traingrecord/include/TraingRecordPresenter.h @@ -0,0 +1,32 @@ +#ifndef _TraingRecord_PRESENTER_H +#define _TraingRecord_PRESENTER_H + +#include "Presenter.h" +#include "TraingRecordView.h" + +namespace OHOS +{ + class TraingRecordView; + + class TraingRecordPresenter : public Presenter, + public UIView::OnClickListener, + public UIView::OnDragListener + { + public: + TraingRecordPresenter(); + virtual ~TraingRecordPresenter(); + + void OnStart() override; + void OnPause() override; + void OnResume() override; + void OnStop() override; + static TraingRecordPresenter *GetInstance(); + + private: + // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承; + bool OnClick(UIView &view, const ClickEvent &event) override; + bool OnDrag(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/traingrecord/include/TraingRecordView.h b/code/sdk/application/wearable/fd230app/nativeui/traingrecord/include/TraingRecordView.h new file mode 100644 index 000000000..d1df3457b --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traingrecord/include/TraingRecordView.h @@ -0,0 +1,62 @@ +#ifndef _TraingRecord_VIEW_H +#define _TraingRecord_VIEW_H + +#include "BaseView.h" +#include "View.h" +#include +#include "components/ui_view_group.h" +#include "components/ui_label.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 "TraingRecordPresenter.h" +namespace OHOS +{ +#define BUTTONNOTE "button1" + + class TraingRecordPresenter; + class TraingRecordView : public View + { + + public: + TraingRecordView(); + virtual ~TraingRecordView(); + static TraingRecordView *GetInstance(void); + + void OnStart() override; + void OnSetUpView() override; + void OnTearDownView() override; + void OnStop() override; + void InitView(); + void DeInit(); + void InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize); + void InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId); + void InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath); + void InitList(); + void PreLoad(void); + + // 通过函数改变 + void SetLabel(); + void SetButton(); + + private: + UIView::OnDragListener *draglistener{nullptr}; + TraingRecordView(TraingRecordView &&) = delete; + TraingRecordView &operator=(TraingRecordView &&) = delete; + + UIViewGroup *container_ = nullptr; + UILabel *label1_ = nullptr; + UILabel *label2_ = nullptr; + + bool viewiInitStatus{false}; + }; +} // namespace OHOS +#endif // TraingRecord_PRESENTER_H diff --git a/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordPresenter.cpp new file mode 100644 index 000000000..ab838e20f --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordPresenter.cpp @@ -0,0 +1,64 @@ +#include "AppViewIDs.h" +#include "NativeAbility.h" + +#include +#include +#include +#include "traingrecord/include/TraingRecordPresenter.h" +// #include "TraingRecordView.h" + +namespace OHOS +{ + + // 当前Presenter属性实例化的内存指针 + static TraingRecordPresenter *g_pTraingRecordPresenter = nullptr; + + TraingRecordPresenter::TraingRecordPresenter() + { + g_pTraingRecordPresenter = this; + } + + TraingRecordPresenter::~TraingRecordPresenter() + { + g_pTraingRecordPresenter = nullptr; + } + + TraingRecordPresenter *TraingRecordPresenter::GetInstance() + { + return g_pTraingRecordPresenter; + } + + void TraingRecordPresenter::OnStart() + { + Presenter::OnStart(); + } + + void TraingRecordPresenter::OnPause(void) + { + Presenter::OnPause(); + } + + void TraingRecordPresenter::OnResume(void) + { + Presenter::OnResume(); + } + + void TraingRecordPresenter::OnStop(void) + { + Presenter::OnStop(); + } + + bool TraingRecordPresenter::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_APPLIST); + } + } + + bool TraingRecordPresenter::OnClick(UIView &view, const ClickEvent &event) + { + } +} diff --git a/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordView.cpp b/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordView.cpp new file mode 100644 index 000000000..169885ef8 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordView.cpp @@ -0,0 +1,244 @@ + +#include "traingrecord/include/TraingRecordView.h" + +#include "common/image_cache_manager.h" +#include "UiConfig.h" +#include "ui_resource_image.h" +#include +#include "components/ui_button.h" +namespace OHOS +{ + + static TraingRecordView *g_pTraingRecordView{nullptr}; + + TraingRecordView::TraingRecordView() + { + g_pTraingRecordView = this; + } + + TraingRecordView::~TraingRecordView() + { + DeInit(); + g_pTraingRecordView = nullptr; + } + + TraingRecordView *TraingRecordView::GetInstance() + { + + return g_pTraingRecordView; + } + /* + InitLabel:初始化标签 + @param label 标签指针 + @param left 标签左边位置 + @param top 标签顶部位置 + @param width 标签宽度 + @param height 标签高度 + @param viewId 标签的视图 ID + @param text 标签显示的文本 + @param fontName 字体名称 + @param fontSize 字体大小 + */ + void TraingRecordView::InitLabel(UILabel *&label, int left, int top, int width, int height, const char *viewId, const char *text, const char *fontName, int fontSize) + { + // 检查标签指针是否为空 + if (label == nullptr) + { + label = new UILabel(); + } + // 设置标签的位置和大小 + label->SetPosition(left, top); + label->Resize(width, height); + // 设置标签的视图 ID + label->SetViewId(viewId); + // 设置标签的样式 + label->SetStyle(STYLE_TEXT_FONT, fontSize); + label->SetFont(fontName, fontSize); + // 设置标签的文本和其他属性 + label->SetText(text); + label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label->SetRollSpeed(0); + // 设置标签可见 + label->SetVisible(true); + } + /* + InitButton:初始化按钮 + @param button 按钮指针 + @param left 按钮左边位置 + @param top 按钮顶部位置 + @param width 按钮宽度 + @param height 按钮高度 + @param viewId 按钮的视图 ID + */ + void TraingRecordView::InitButton(UIButton *&button, int left, int top, int width, int height, const char *viewId) + { + // 设置按钮的背景颜色 + uint32_t backgroundColor = 0xff191919; // 默认背景颜色 + uint32_t pressedBackgroundColor = 0xff249115; // 按下时的背景颜色 + uint32_t pressedBorderColor = 0xff0b1928; // 按下时的边框颜色 + // 创建新按钮(如果当前按钮为空) + if (button == nullptr) + { + button = new UIButton(); + } + button->SetPosition(left, top); + button->Resize(width, height); + button->SetViewId(viewId); + button->SetStyle(STYLE_BACKGROUND_COLOR, backgroundColor); + button->SetStyleForState(STYLE_BACKGROUND_COLOR, pressedBackgroundColor, UIButton::PRESSED); + button->SetStyleForState(STYLE_BORDER_COLOR, pressedBorderColor, UIButton::PRESSED); + // 设置按钮的点击事件监听器为 TraingRecordPresenter 的实例 + button->SetOnClickListener(static_cast(TraingRecordPresenter::GetInstance())); + // 设置按钮可见 + button->SetVisible(true); + } + /* + InitImageView:初始化图片 + @param imageView 图片指针 + @param left 图片左边位置 + @param top 图片顶部位置 + @param width 图片宽度 + @param height 图片高度 + @param viewId 图片的视图 ID + @param imagePath 图片路径 + */ + void TraingRecordView::InitImageView(UIImageView *&imageView, int left, int top, int width, int height, const char *viewId, const char *imagePath) + { + if (imageView == nullptr) + { + imageView = new UIImageView(); + } + imageView->SetPosition(left, top); + imageView->Resize(width, height); + imageView->SetViewId(viewId); + imageView->SetSrc(imagePath); + imageView->SetVisible(true); + } + /* InitView:初始化界面*/ + void TraingRecordView ::InitView() + { + if (container_ == nullptr) + { + container_ = new UIViewGroup(); + container_->SetPosition(0, 0, 466, 466); + container_->SetStyle(STYLE_BACKGROUND_OPA, 0); + } + // 初始化Lable + // Add Label to App + if (label1_ == nullptr) + { + label1_ = new UILabel(); + } + label1_->SetPosition(181, 52); // widget's left position and top position + label1_->Resize(200, 60); // widget's width and height + label1_->SetViewId("label1"); // Set style + label1_->SetStyle(STYLE_TEXT_FONT, 26); + + // Set additional property + label1_->SetText("训练记录"); + label1_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + label1_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label1_->SetRollSpeed(0); + label1_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 26); + + // Add to rootView + container_->Add(label1_); + label1_->SetVisible(true); + + // Add Label to App + if (label2_ == nullptr) + { + label2_ = new UILabel(); + } + label2_->SetPosition(188, 217); // widget's left position and top position + label2_->Resize(200, 60); // widget's width and height + label2_->SetViewId("label2"); // Set style + label2_->SetStyle(STYLE_TEXT_FONT, 30); + + // Set additional property + label2_->SetText("无记录"); + label2_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); + label2_->SetTextColor(Color::GetColorFromRGBA(0x28, 0xbc, 0x0c, 0xff)); + label2_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label2_->SetRollSpeed(0); + label2_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + + // Add to rootView + container_->Add(label2_); + label2_->SetVisible(true); + } + + /* DeInit:删除组件 */ + void TraingRecordView::DeInit() + { + UIView *view = static_cast(container_)->GetChildrenHead(); + while (view != nullptr) + { + UIView *tempView = view; + view = view->GetNextSibling(); + if (tempView->GetParent()) + { + static_cast(tempView->GetParent())->Remove(tempView); + } + delete tempView; + } + delete container_; + container_ = nullptr; + } + + void TraingRecordView::PreLoad(void) + { + if (!viewiInitStatus) + { + InitView(); + viewiInitStatus = true; + } + } + void TraingRecordView::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(TraingRecordPresenter::GetInstance()); + if (draglistener == nullptr) + { + return; + } + container_->SetOnDragListener(draglistener); + + container_->SetTouchable(true); + container_->SetDraggable(true); + + PreLoad(); + RootView::GetInstance()->Add(container_); + } + + void TraingRecordView::OnSetUpView() + { + + View::OnSetUpView(); + Draw(); + } + + void TraingRecordView::OnTearDownView() + { + + View::OnTearDownView(); + return; + } + + void TraingRecordView::OnStop() + { + View::OnStop(); + RootView::GetInstance()->RemoveAll(); + return; + } +} diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/APPLIST_TRAINING.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/APPLIST_TRAINING.bin new file mode 100644 index 000000000..1c8d1456b Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/APPLIST_TRAINING.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/APPLIST_TRAINING_RECORD.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/APPLIST_TRAINING_RECORD.bin new file mode 100644 index 000000000..2d76136e5 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/APPLIST_TRAINING_RECORD.bin differ