--- /dev/null
- ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/blood/src/BloodView.cpp
+set(COMPONENT_NAME "fd230launcher")
+set(MODULE_NAME "app")
+set(AUTO_DEF_FILE_ID TRUE)
+set(UI_SAMPLE_ROOT ${ROOT_DIR}/middleware/services/gui/uikit/sample/uitest)
+
+set(PUBLIC_HEADER
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativelauncher/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/screennotify/include
+
+)
+
+set(PRIVATE_HEADER
+ ${ROOT_DIR}/open_source/openharmony/foundation/ace/ace_engine_lite/interfaces/base
+ ${ROOT_DIR}/open_source/openharmony/third_party/cJSON
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/clock/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bloodoxygen/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bluetooth/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/indoorwalk/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/rebootdevice/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/activity/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/heartrate/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/callerlog/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/makephone/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/rtcservice/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/compass/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/connectnewphone/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/alarmclockmanage/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/alarmclocktimerconfig/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/alarm/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/temperature/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/offlinevoice/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/settings/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/key/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/player/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/applist/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/phoneservice/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/screensetting/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/uiservice/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/uisample/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/UIInitializer/
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/InitComponent/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/uisample/uitest/framework/include
+ ${UI_SAMPLE_ROOT}/components
+ ${CMAKE_CURRENT_SOURCE_DIR}/../service/smart_voice/smart_voice_service/interfaces/innerkits/native_c/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/../service/smart_voice/voice_engine_hal/interfaces/innerkits/native_c/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/../ohos_deps
+ ${CMAKE_CURRENT_SOURCE_DIR}/../../battery
+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../drivers/drivers/driver/rtc_unified
+ ${CMAKE_CURRENT_SOURCE_DIR}/../../../kernel/liteos/liteos_v207.1.0/Huawei_LiteOS/compat/linux/include/uapi/linux/
+
+ ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/src/utils/innerkits
+ ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/include
+ ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/src/ui/frameworks
+ ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/include/service
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/innerkits
+ ${ROOT_DIR}/middleware/services/gui/lvgl/src/hal
+
+ ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/kits
+ ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/kits/gfx_utils
+ ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/innerkits
+ ${ROOT_DIR}/middleware/services/gui/uikit/surface/interfaces/kits
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/kits
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/kits/components
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/kits/events
+ ${ROOT_DIR}/middleware/services/gui/uikit/ui/frameworks/
+
+
+ ${ROOT_DIR}/open_source/openharmony/foundation/graphic/ui/interfaces/kits/events
+ ${ROOT_DIR}/open_source/openharmony/foundation/graphic/ui/interfaces/kits
+ ${ROOT_DIR}/open_source/openharmony/foundation/graphic/utils/interfaces/kits
+ ${ROOT_DIR}/open_source/openharmony/foundation/graphic/utils/interfaces/kits/gfx_utils
+ ${ROOT_DIR}/open_source/openharmony/foundation/graphic/utils/interfaces/innerkits
+ ${ROOT_DIR}/open_source/openharmony/foundation/graphic/ui/interfaces/innerkits
+ ${ROOT_DIR}/open_source/openharmony/foundation/graphic/ui/frameworks
+ ${ROOT_DIR}/open_source/openharmony/foundation/graphic/surface/interfaces/kits
+ ${ROOT_DIR}/open_source/openharmony/foundation/graphic/ui/interfaces/kits/components
+ ${ROOT_DIR}/open_source/openharmony/foundation/multimedia/player/interfaces/kits/
+
+ ${ROOT_DIR}/include/middleware/services/bts/common
+ ${ROOT_DIR}/include/middleware/services/bts/ble
+ ${ROOT_DIR}/include/middleware/services/bts/br
+
+ ${ROOT_DIR}/open_source/openharmony/drivers/peripheral/display/interfaces/include
+ ${ROOT_DIR}/open_source/openharmony/foundation/distributedschedule/samgr_lite/interfaces/kits/samgr
+
+
+)
+
+set(SOURCES
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativelauncher/src/NativeLauncher.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/MainViewSample.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/MainPresenterSample.cpp
+
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/ModelListenerSample.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/PresenterTask.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/HealthModel.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/PullUpDownView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/applist/src/AppItemView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/applist/src/ApplistAdapter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/applist/src/ApplistModel.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/applist/src/ApplistPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/applist/src/ApplistView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/applist/src/ApplistCardView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/clock/src/MainClockView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bloodoxygen/src/BloodOxygenView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bloodoxygen/src/BloodBandoffView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bloodoxygen/src/BloodOxygenPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bloodoxygen/src/BloodOxygenModel.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bluetooth/src/BluetoothDeviceCaseListAdapter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bluetooth/src/BluetoothDeviceListView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bluetooth/src/BluetoothPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bluetooth/src/BluetoothHeadsetEvent.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bluetooth/src/BluetoothModel.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bluetooth/src/MainBluetoothView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bluetooth/src/BluetoothEarPhoneView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bluetooth/src/TipsConnFailMessageView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bluetooth/src/TipsFailMessageView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bluetooth/src/TipsSuccMessageView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bluetooth/src/BluetoothEarListView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bluetooth/src/BluetoothOptionsView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bluetooth/src/BluetoothReconnectView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bluetooth/src/BluetoothItemView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bluetooth/src/BluetoothCaseListAdapter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/indoorwalk/src/IndoorWalkView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/indoorwalk/src/IndoorWalkPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/indoorwalk/src/IndoorWalkModel.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/indoorwalk/src/IndoorWalkPreparedView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/indoorwalk/src/IndoorWalkMotionView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/indoorwalk/src/MotionPageFirst.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/indoorwalk/src/MotionPageSecond.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/indoorwalk/src/MotionPageThird.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/indoorwalk/src/MotionPageFourth.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/indoorwalk/src/MotionPageFifth.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/indoorwalk/src/CustomizationView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/indoorwalk/src/IndoorWalkEndView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/connectnewphone/src/ConnectPhoneView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/connectnewphone/src/ConnectSelectView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/connectnewphone/src/ConnectOpenView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/connectnewphone/src/ConnectPhonePresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/rebootdevice/src/RebootView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/rebootdevice/src/RebootPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/rebootdevice/src/RebootModel.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/rebootdevice/src/RebootDeviceView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/rebootdevice/src/ShutdownDeviceView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/callerlog/src/CallerLogView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/callerlog/src/CallerLogPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/callerlog/src/CallerLogModel.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/callerlog/src/CallerItemView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/makephone/src/CallerDisplayView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/makephone/src/WaitingHintsView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/makephone/src/CallingView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/makephone/src/MainCallingPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/makephone/src/DialingScreenView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/makephone/src/MainCallingView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/VolumeSettingView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/VolumeSettingPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/player/src/BluetoothView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/player/src/PlayersView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/player/src/PlayersPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/player/src/PlayersModel.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/player/src/PlayersCaseListAdapter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/player/src/PlayerListDelSongView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/player/src/PlayerListitemView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/activity/src/MainActivityView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/activity/src/ActivityWeekView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/activity/src/ActivityPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/activity/src/ActivityModel.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/heartrate/src/HeartRateView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/heartrate/src/HeartModel.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/alarm/src/AlarmClockModel.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/alarm/src/MainAlarmView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/alarm/src/AlarmConfigView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/alarm/src/AlarmPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/alarm/src/AlarmSetTimeView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/alarm/src/AlarmSetWeekView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/alarm/src/AlarmJudgeView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/alarm/src/AlarmPopUpView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/alarm/src/AlarmRingView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/alarm/src/AlarmCloseRingView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/alarm/src/AlarmNewTimeView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/alarm/src/AlarmPopUpPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/alarm/src/AlarmMaxClock.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/temperature/src/TempJoinStudy.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/temperature/src/TempMainView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/temperature/src/TempModel.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/temperature/src/TempPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/temperature/src/TempMeasure.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/temperature/src/TempExitInter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/temperature/src/TempPromptWear.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/temperature/src/TempClickMea.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/temperature/src/TempRemindWear.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/temperature/src/TempMeaProcess.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/temperature/src/TempInitInter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/temperature/src/TempWarn.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/temperature/src/TempLittleTip.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/temperature/src/TempExitPrompt.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/temperature/src/TempStudyAbout.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/temperature/src/TempContinueWarn.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/temperature/src/TempReport.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/settings/src/SettingAdapter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/settings/src/SettingPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/settings/src/SettingView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/settings/src/SettingModel.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/settings/src/SettingItemView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/key/src/KeyInputListener.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/screennotify/src/ui_screennotify.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/system/src/SystemFactoryResetPresenter.cpp
++ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/blood/src/BloodCardView.cpp
+
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/dial/src/Digital_clockView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/dial/src/DialView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/dial/src/DialPresenter.cpp
+
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingView.cpp
+
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/weather/src/MainWeatherPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/weather/src/MainWeatherView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/weather/src/WeatherReportPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/weather/src/WeatherReportView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/weather/src/FutureWeatherPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/weather/src/FutureWeatherView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/weather/src/GetWeatherDataErrorPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/weather/src/GetWeatherDataErrorView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/weather/src/WeatherControlView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/weather/src/WeatherView.cpp
+
+ #系统
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/system/src/SystemPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/system/src/SystemView.cpp
++ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/system/src/SystemModel.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/system/src/SystemAboutTheWatchView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/system/src/SystemSuperviseView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/system/src/SystemLanguageView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/system/src/SystemFactoryResetView.cpp
+
+ #声音与震动
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/soundandvibration/src/SoundAndVibrationPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/soundandvibration/src/SoundAndVibrationView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/soundandvibration/src/SystemVolumePresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/soundandvibration/src/SystemVolumeView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/soundandvibration/src/CallVolumePresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/soundandvibration/src/CallVolumeView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/soundandvibration/src/MediaVolumePresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/soundandvibration/src/MediaVolumeView.cpp
+
+ #显示与亮度
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/displaybrightness/src/DisplayBrightnessModel.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/displaybrightness/src/DisplayBrightnessPresent.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/displaybrightness/src/DisplayBrightnessView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/displaybrightness/src/BrightnessControlPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/displaybrightness/src/BrightnessControlView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/displaybrightness/src/ScreenDurationPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/displaybrightness/src/ScreenDurationView.cpp
+
+ #辅助功能
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/secondaryfunction/src/SecondaryFunctionPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/secondaryfunction/src/SecondaryFunctionView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/secondaryfunction/src/FastTrainingAttentionPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/secondaryfunction/src/FastTrainingAttentionView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/secondaryfunction/src/FastTrainingPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/secondaryfunction/src/FastTrainingView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/secondaryfunction/src/QuickAccessPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/secondaryfunction/src/QuickAccessView.cpp
+
+ #指南针
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/compass/src/CompassControlView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/compass/src/CompassCalibrationView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/compass/src/CompassModel.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/compass/src/CompassPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/compass/src/CompassView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/compass/src/MainCompassView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/compass/src/MainCompassPresenter.cpp
+
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/message/src/MessageAdapter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/message/src/MessageItemView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/message/src/MessageModel.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/message/src/MessagePresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/message/src/MessageView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/message/src/MessageCardView.cpp
+
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/phoneservice/src/PhoneService.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/phoneservice/src/PhoneAudio.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/offlinevoice/src/VocassistModel.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/offlinevoice/src/VocassistPresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/offlinevoice/src/VocassistView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/offlinevoice/src/MainVocassistView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/screensetting/src/ScreenModels.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/alarmclockmanage/src/AlarmClockManage.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/alarmclocktimerconfig/src/AlarmClockTimerConfig.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/rtcservice/src/RtcService.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/uiservice/src/ui_service.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/uisample/src/UISampleView.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/uisample/src/UISamplePresenter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/uisample/src/UISampleModel.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/uisample/uitest/framework/src/test_case_list_adapter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/uisample/uitest/framework/src/ui_test_group.cpp
+
+ ${UI_SAMPLE_ROOT}/components/ui_test_tiger/tiger_view.cpp
+ ${UI_SAMPLE_ROOT}/components/ui_test_tiger/ui_test_tiger.cpp
+ ${UI_SAMPLE_ROOT}/components/ui_test_running_ball/ui_test_running_ball.cpp
+ ${UI_SAMPLE_ROOT}/components/ui_test_breath/ui_test_breath.cpp
+ ${UI_SAMPLE_ROOT}/components/ui_test_card_switch/ui_test_card_switch.cpp
+ ${UI_SAMPLE_ROOT}/components/ui_test_countdown/ui_test_countdown.cpp
+ ${UI_SAMPLE_ROOT}/components/ui_test_list_fps/image_text_adapter.cpp
+ ${UI_SAMPLE_ROOT}/components/ui_test_list_fps/ui_test_list_fps.cpp
+ ${UI_SAMPLE_ROOT}/components/ui_test_message/ui_test_message.cpp
+ ${UI_SAMPLE_ROOT}/components/ui_test_cube_rotate/cube_rotate_view.cpp
+ ${UI_SAMPLE_ROOT}/components/ui_test_cube_rotate/ui_test_cube_rotate.cpp
+ ${UI_SAMPLE_ROOT}/components/ui_test_video_play/ui_test_video_play.cpp
+ # ${UI_SAMPLE_ROOT}/components/ui_test_video_play/media_video_play.cpp
+)
+
+set(COMPONENT_PUBLIC_CCFLAGS
+)
+
+set(COMPONENT_CCFLAGS
+ -std=c++11
+ -Wno-error
+ -Wno-unused-parameter
+ -fno-exceptions
+ -fno-unwind-tables
+ -fno-asynchronous-unwind-tables
+ -Wno-undef
+ -Wno-bitwise-op-parentheses
+ -Wno-shift-op-parentheses
+ -nostdlibinc
+ -nostdinc
+ -nostdlib
+ -Wno-c++11-narrowing
+ -Wno-error=unused-function
+)
+
+set(WHOLE_LINK
+ true
+)
+
+set(MAIN_COMPONENT
+ false
+)
+
+set(PUBLIC_DEFINES
+ SUPPORT_NATIVE_UI
+)
+
+set(PRIVATE_DEFINES
+)
+
+build_component()
--- /dev/null
- VIEW_DIAL, // 切换表盘
+
+/*
+ * Copyright (c) 2020-2021 CompanyNameMagicTag.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef APP_VIEW_IDS_H
+#define APP_VIEW_IDS_H
+
+#include <cstdint>
+
+/*
+ * 基础应用的view id,与MVP的V一一对应
+ * 枚举命名要求:参考View名字,名字尽量简短
+ */
+typedef enum : uint16_t
+{
+ VIEW_INVALID = 0, // 无效视图
+ /* ----------------------------- 每一个id对应一个slice ----------------------------- */
+ VIEW_MAIN = 1, // 主界面
+ VIEW_SETTING, // 设置
+ VIEW_APPLIST, // App应用
+ VIEW_MAIN_ALARM, // 闹钟
+ VIEW_ALARM_POP_UP, // 闹铃界面
+ VIEW_BLUETOOTH_EARPHONE, // 连接蓝牙耳机界面
+ VIEW_CALLER_LOG, // 通话记录界面
+ VIEW_INCOMING_CALL, // 来电界面
+ VIEW_BLOODOXY, // 血氧饱和度界面
+ VIEW_COMPASS, // 指南针界面
+ VIEW_CONNECT_PHONE, // 连接手机界面
+ VIEW_INDOORWALK, // 室内步行
+ VIEW_SHUTDOWN_OR_REBOOT, // 关机或重启界面
- VIEW_SYSTEM_FACTORY_RESET, // 系统:恢复出厂设置
+ VIEW_WEATHER, // 天气
+ VIEW_WEATHER_REPORT, // 气象报告
+ VIEW_FUTURE_WEATHER, // 未来天气
+ VIEW_GET_WEATHER_DATA_ERROR, // 获取天气数据失败
+ VIEW_SYSTEM, // 系统
+ VIEW_SOUND_VIBRATION, // 声音与震动
+ VIEW_SYSTEM_VOLUME, // 系统音量
+ VIEW_CALL_VOLUME, // 通话音量
+ VIEW_MEDIA_VOLUME, // 媒体音量
+ VIEW_DISPLAY_BRIGHTNESS, // 屏幕与亮度
+ VIEW_BRIGHTNESS_CONTROL, // 亮度调节
+ VIEW_SCREEN_DURATION, // 亮屏时长
+ VIEW_SECONDARY_FUNCTION, // 辅助功能
+ VIEW_QUICK_ACCESS, // 快速访问
+ VIEW_FAST_TRAINING, // 快速训练
+ VIEW_FAST_TRAINING_ATTENTION,// 快速训练项目选择超出提示
+ /* ---------------------------------- 测试界面 ---------------------------------- */
++ VIEW_DIAL, // 切换表盘
+ VIEW_MESSAGE, // 信息通知
++ VIEW_BLOODO, // 血氧监测
+ /* -------------------------------------------------------------------------- */
+ VIEW_MAIN_TEMP, // 体温界面(暂时不用)
+ VIEW_OFFLINEVOICE, // 语音助手界面(暂时不用)
+ VIEW_MAIN_ACTIVITY, // 记录步数界面(暂时不用)
+ VIEW_UISAMPLE, // 示例(暂时不用)
+ /* -------------------------------------------------------------------------- */
+ VIEW_MAX_INTER_APP, // 在此之前添加native应用ID.
+ VIEW_EXTERN_APP = 0xFFFE, // 三方应用
+ VIEW_INVALIDE_APP = 0xFFFF,
+} AppViewId;
+
+/*
+ * Slice页面优先级,越小优先级越高
+ */
+typedef enum : uint16_t
+{
+ PRIO_0 = 0,
+ PRIO_1,
+ PRIO_2,
+ PRIO_3,
+ PRIO_4
+} AppPriority;
+
+#endif
--- /dev/null
- void InitDialSlice(void);
+
+/***
+ * @Author: Caisking 3449750381@qq.com
+ * @Date: 2023-12-13 19:33:14
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-01-22 16:32:42
+ * @FilePath: /FD230/code/sdk/application/wearable/nativeapp/nativelauncher/include/NativeLauncher.h
+ * @Description:
+ * @Description:
+ * @
+ * @Copyright (c) 2024 by Caisking , All Rights Reserved.
+ * @Copyright (c) 2024 by Caisking , All Rights Reserved.
+ */
+
+#ifndef NATIVE_LAUNCHER_H
+#define NATIVE_LAUNCHER_H
+#include "AppViewIDs.h"
+
+namespace OHOS
+{
+ class NativeLauncher
+ {
+ public:
+ static NativeLauncher &GetInstance(void);
+ void InitNativeLauncher(void);
+ void InitMainSampleSlice(void);
+ void InitSettingSlice(void);
+ void InitApplistSlice(void);
+ void InitMainAlarmSlice(void);
+ void InitAlarmPopUpSlice(void);
+ void InitActivitySlice(void);
+ void InitWeekStepSlice(void);
+ void InitBluetoothSlice(void);
+ void InitWifiView(void);
+ void InitMainBloodOxyView(void);
+ void InitMainCallerLogView(void);
+ void InitMainMakePhoneView(void);
+ void InitCompassSlice(void);
+ void InitOfflineVoice(void);
+ void InitConnectPhoneSlice(void);
+ void InitMainTempSlice(void);
+ void InitIndoorWalkSlice(void);
+ void InitRebootSlice(void);
+ void InitUISampleSlice(void);
- void InitSystemFactoryResetSlice(void);
+ /* ----------------------------------- 天气 ----------------------------------- */
+ void InitWeatherSlice(void);
+ void InitWeatherReportSlice(void);
+ void InitFutureWeatherSlice(void);
+ void InitGetWeatherDataErrorSlice(void);
+ /* -------------------------------------------------------------------------- */
+ void InitSystemSlice(void);
+ /* -------------------------------------------------------------------------- */
+ void InitSoundAndVibrationSlice(void);
+ void InitSystemVolumeSlice(void);
+ void InitCallVolumeSlice(void);
+ void InitMediaVolumeSlice(void);
+ void InitMessageSlice(void);
+ /* -------------------------------------------------------------------------- */
+ void InitUIDisplayBrightnessSlice(void);
+ void InitBrightnessControlSlice(void);
+ void InitScreenDurationSlice(void);
++ /* --------------------------------测试界面------------------------------------ */
++ void InitDialSlice(void);
++ void InitBloodSlice(void);
+ /* -------------------------------------------------------------------------- */
+ void InitSecondaryFunction(void);
+ void InitQuickAccessSlice(void);
+ void InitFastTrainingSlice(void);
+ void InitFastTrainingAttentionSlice(void);
+
+ private:
+ void InitAllNativeSlices(void);
+
+ NativeLauncher();
+ NativeLauncher(const NativeLauncher &);
+ NativeLauncher &operator=(const NativeLauncher &);
+ ~NativeLauncher();
+ };
+}
+#endif // NATIVE_LAUNCHER_H
--- /dev/null
- /* -------------------------------- 血氧倒计时动画图片 ------------------------------- */
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_0 = APP_RES_PATH "/COUNTDOWN_IMAGE_01.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_1 = APP_RES_PATH "/COUNTDOWN_IMAGE_02.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_2 = APP_RES_PATH "/COUNTDOWN_IMAGE_03.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_3 = APP_RES_PATH "/COUNTDOWN_IMAGE_04.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_4 = APP_RES_PATH "/COUNTDOWN_IMAGE_05.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_5 = APP_RES_PATH "/COUNTDOWN_IMAGE_06.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_6 = APP_RES_PATH "/COUNTDOWN_IMAGE_07.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_7 = APP_RES_PATH "/COUNTDOWN_IMAGE_08.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_8 = APP_RES_PATH "/COUNTDOWN_IMAGE_09.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_9 = APP_RES_PATH "/COUNTDOWN_IMAGE_10.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_10 = APP_RES_PATH "/COUNTDOWN_IMAGE_11.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_11 = APP_RES_PATH "/COUNTDOWN_IMAGE_12.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_12 = APP_RES_PATH "/COUNTDOWN_IMAGE_13.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_13 = APP_RES_PATH "/COUNTDOWN_IMAGE_14.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_14 = APP_RES_PATH "/COUNTDOWN_IMAGE_15.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_15 = APP_RES_PATH "/COUNTDOWN_IMAGE_16.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_16 = APP_RES_PATH "/COUNTDOWN_IMAGE_17.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_17 = APP_RES_PATH "/COUNTDOWN_IMAGE_18.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_18 = APP_RES_PATH "/COUNTDOWN_IMAGE_19.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_19 = APP_RES_PATH "/COUNTDOWN_IMAGE_20.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_20 = APP_RES_PATH "/COUNTDOWN_IMAGE_21.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_21 = APP_RES_PATH "/COUNTDOWN_IMAGE_22.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_22 = APP_RES_PATH "/COUNTDOWN_IMAGE_23.bin";
- static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_23 = APP_RES_PATH "/COUNTDOWN_IMAGE_24.bin";
+/*
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
+ * Description: UiConfig for application resource
+ * Author:
+ * Create: 2021-12-03
+ */
+
+#ifndef UI_CONFIG_H
+#define UI_CONFIG_H
+
+#include <cstdint>
+#include "ohos_types.h"
+#include "graphic_config.h"
+
+namespace OHOS
+{
+#ifndef UNUSED
+#define UNUSED(x) ((void)(x))
+#endif
+
+#define LA_HORIZONTAL_RESOLUTION 400 // watch width
+#define LA_VERTICAL_RESOLUTION 400 // watch height
+#define NORMAL_BUTTON_WIDTH 100 // normal button width
+#define NORMAL_BUTTON_HEIGHT 50 // normal button height
+#define NORMAL_MARGIN 5 // normal margin
+#define DIAL_SQUARE 250 // watch plate sauqre
+#define SETTING_ITEM_HEIGHT 100 // setting item height
+#define UN_OPACITY 255 // UN_OPACITY
+
+#define MILLESECOND 1
+#define SECOND 1000 // 1s 1000ms
+#define MINUTE (60 * SECOND) // 1min 60s
+#define HOUR (60 * MINUTE) // 1hour 60min
+
+#define FONT_COMMON 20 // 20px
+#define X_DRAG_OFFSET 20
+#define DOUBLES 2
+
+#define APP_RES_PATH "/user/res"
+#define APP_MUSIC_PATH "/user/music"
+#define APP_VIDEO_PATH "/user/video"
+
+ static constexpr const char *CARD_CONFIG_PATH = "/user/cardconfig.bin";
+ static constexpr const char *CLOCK_IAMGES = APP_RES_PATH "/clock/clock.bin";
+ static constexpr const char *PLAYER_IAMGES = APP_RES_PATH "/player/player.bin";
+ static constexpr const char *COMPASS_IAMGES = APP_RES_PATH "/compass/compass.bin";
+ static constexpr const char *DROPDOWN_IAMGES = APP_RES_PATH "/dropdown/dropdown.bin";
+ static constexpr const char *HEART_IAMGES = APP_RES_PATH "/heart/heart.bin";
+ /* ----------------------------------- 打电话图片 ---------------------------------- */
+ static constexpr const char *PNG_AGREEING_IMAGE_PATH = APP_RES_PATH "/AGREEING.bin";
+ static constexpr const char *PNG_DISSGREE_IMAGE_PATH = APP_RES_PATH "/DISSGREE.bin";
+ static constexpr const char *PNG_BLUETOOTH_HINTS_PATH = APP_RES_PATH "/BLUETOOTH_HINTS.bin";
+ static constexpr const char *PNG_MICROPHONE_OPEN_IMAGE_PATH = APP_RES_PATH "/MICRO_PHONE_OPEN.bin";
+ static constexpr const char *PNG_MICROPHONE_CLOSE_IMAGE_PATH = APP_RES_PATH "/MICRO_PHONE_CLOSE.bin";
+ static constexpr const char *PNG_HANDUP_IMAGE_PATH = APP_RES_PATH "/HANDUP.bin";
+ static constexpr const char *PNG_ANSWER_TMAGE_PATH = APP_RES_PATH "/ANSWER_PHONE.bin";
+ static constexpr const char *PNG_CALLING_TMAGE_PATH = APP_RES_PATH "/CALLING_PHONE.bin";
+ static constexpr const char *PNG_CALLER_TMAGE_PATH = APP_RES_PATH "/CALLER_LOG_IMAGE.bin";
+ static constexpr const char *PNG_NO_CALLER_LOG_IMAGE = APP_RES_PATH "/NO_CALLER_LOG_IMAGE.bin";
+ static constexpr const char *PNG_SOUNDBUTTON2 = APP_RES_PATH "/SOUND_IMAGE.bin";
+ /* ---------------------------------- 血氧中图片 --------------------------------- */
+ static constexpr const char *PNG_BLOODOXYGEN_IMAGE_PATH = APP_RES_PATH "/BLOODOXYGEN_VIEW.bin";
+ static constexpr const char *PNG_PULLBUTTON_FACE_IMAGE = APP_RES_PATH "/BLOOD_FLOW_IMAGE_01.bin";
+ static constexpr const char *PNG_BLOOD_ICON_ENTER = APP_RES_PATH "/BLOOD_ICON_ENTER.bin";
+ static constexpr const char *PNG_PROGRESS_BAR_TMAGE = APP_RES_PATH "/PROGRESS_BAR_TMAGE.bin";
+ /* --------------------------------- 血氧动画图片 --------------------------------- */
+ static constexpr const char *PNG_BLOOD_FLOW_IMAGE_0 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_02.bin";
+ static constexpr const char *PNG_BLOOD_FLOW_IMAGE_1 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_03.bin";
+ static constexpr const char *PNG_BLOOD_FLOW_IMAGE_2 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_04.bin";
+ static constexpr const char *PNG_BLOOD_FLOW_IMAGE_3 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_05.bin";
+ static constexpr const char *PNG_BLOOD_FLOW_IMAGE_4 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_06.bin";
+ static constexpr const char *PNG_BLOOD_FLOW_IMAGE_5 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_07.bin";
+ static constexpr const char *PNG_BLOOD_FLOW_IMAGE_6 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_08.bin";
+ static constexpr const char *PNG_BLOOD_FLOW_IMAGE_7 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_09.bin";
+ static constexpr const char *PNG_BLOOD_FLOW_IMAGE_8 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_10.bin";
+ static constexpr const char *PNG_BLOOD_FLOW_IMAGE_9 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_11.bin";
+ static constexpr const char *PNG_BLOOD_FLOW_IMAGE_10 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_12.bin";
+ static constexpr const char *PNG_BLOOD_FLOW_IMAGE_11 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_13.bin";
+ static constexpr const char *PNG_BLOOD_FLOW_IMAGE_12 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_14.bin";
+ static constexpr const char *PNG_BLOOD_FLOW_IMAGE_13 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_15.bin";
+ static constexpr const char *PNG_BLOOD_FLOW_IMAGE_14 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_16.bin";
+ static constexpr const char *PNG_BLOOD_FLOW_IMAGE_15 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_17.bin";
+ static constexpr const char *PNG_BLOOD_FLOW_IMAGE_16 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_18.bin";
+ static constexpr const char *PNG_BLOOD_FLOW_IMAGE_17 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_19.bin";
+ static constexpr const char *PNG_BLOOD_FLOW_IMAGE_18 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_20.bin";
+ static constexpr const char *PNG_BLOOD_FLOW_IMAGE_19 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_21.bin";
+ static constexpr const char *PNG_BLOOD_FLOW_IMAGE_20 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_22.bin";
+ static constexpr const char *PNG_BLOOD_FLOW_IMAGE_21 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_23.bin";
+ static constexpr const char *PNG_BLOOD_FLOW_IMAGE_22 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_24.bin";
+ static constexpr const char *PNG_BLOOD_FLOW_IMAGE_23 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_25.bin";
+ static constexpr const char *PNG_BLOOD_FLOW_IMAGE_24 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_26.bin";
+ static constexpr const char *PNG_BLOOD_FLOW_IMAGE_25 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_27.bin";
+ static constexpr const char *PNG_BLOOD_FLOW_IMAGE_26 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_28.bin";
+ static constexpr const char *PNG_BLOOD_FLOW_IMAGE_27 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_29.bin";
+ static constexpr const char *PNG_BLOOD_FLOW_IMAGE_28 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_30.bin";
+ static constexpr const char *PNG_BLOOD_FLOW_IMAGE_29 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_31.bin";
+ static constexpr const char *PNG_BLOOD_FLOW_IMAGE_30 = APP_RES_PATH "/BLOOD_FLOW_IMAGE_32.bin";
++ /* -------------------------------- 血氧动画 ------------------------------------------------- */
++ static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_0 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_1.bin";
++ static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_1 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_2.bin";
++ static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_2 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_3.bin";
++ static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_3 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_4.bin";
++ static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_4 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_5.bin";
++ static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_5 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_6.bin";
++ static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_6 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_7.bin";
++ static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_7 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_8.bin";
++ static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_8 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_9.bin";
++ static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_9 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_10.bin";
++ static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_10 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_11.bin";
++ static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_11 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_12.bin";
++ static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_12 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_13.bin";
++ static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_13 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_14.bin";
++ static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_14 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_15.bin";
++ static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_15 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_16.bin";
++ static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_16 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_17.bin";
++ static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_17 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_18.bin";
++ static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_18 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_19.bin";
++ static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_19 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_20.bin";
++ static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_20 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_21.bin";
++ static constexpr const char *PNG_COUNTDOWN_TIME_IMAGE_21 = APP_RES_PATH "/Blood/SPO2H/BLOOD_IMAGE_22.bin";
++ 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";
++
+ /* ---------------------------------- 闹钟图片 ---------------------------------- */
+ static constexpr const char *ALARM_ADD_BUTTON_PATH = APP_RES_PATH "/BLUE_ADD.bin";
+ static constexpr const char *ALARM_CLOCK_CLOSE_ADD_PATH = APP_RES_PATH "/CLOSE_RING_CLOCK.bin";
+ static constexpr const char *ALARM_CLOCK_ADD_PATH = APP_RES_PATH "/POP_UP_CLOCK.bin";
+ static constexpr const char *ALARM_CLOCK_POP_ADD_PATH = APP_RES_PATH "/RING_CLOCK.bin";
+ static constexpr const char *ALARM_DELETE_ADD_PATH = APP_RES_PATH "/DELETE.bin";
+ static constexpr const char *ALARM_TRUE_ADD_PATH = APP_RES_PATH "/TRUE_ADD.bin";
+ /* ---------------------------------- 心率动画图片 ---------------------------------- */
+ static constexpr const char *PNG_A004_070_IMAGE_PATH = APP_RES_PATH "/HEARTBEAT_IMAGE_01.bin";
+ static constexpr const char *PNG_A004_071_IMAGE_PATH = APP_RES_PATH "/HEARTBEAT_IMAGE_02.bin";
+ static constexpr const char *PNG_A004_072_IMAGE_PATH = APP_RES_PATH "/HEARTBEAT_IMAGE_03.bin";
+ static constexpr const char *PNG_A004_073_IMAGE_PATH = APP_RES_PATH "/HEARTBEAT_IMAGE_04.bin";
+ static constexpr const char *PNG_A004_074_IMAGE_PATH = APP_RES_PATH "/HEARTBEAT_IMAGE_05.bin";
+ static constexpr const char *PNG_A004_075_IMAGE_PATH = APP_RES_PATH "/HEARTBEAT_IMAGE_06.bin";
+ static constexpr const char *PNG_A004_076_IMAGE_PATH = APP_RES_PATH "/HEARTBEAT_IMAGE_07.bin";
+ static constexpr const char *PNG_A004_077_IMAGE_PATH = APP_RES_PATH "/HEARTBEAT_IMAGE_08.bin";
+ static constexpr const char *PNG_A004_078_IMAGE_PATH = APP_RES_PATH "/HEARTBEAT_IMAGE_09.bin";
+ static constexpr const char *PNG_A004_079_IMAGE_PATH = APP_RES_PATH "/HEARTBEAT_IMAGE_10.bin";
+ static constexpr const char *PNG_A004_080_IMAGE_PATH = APP_RES_PATH "/HEARTBEAT_IMAGE_11.bin";
+ static constexpr const char *PNG_A004_081_IMAGE_PATH = APP_RES_PATH "/HEARTBEAT_IMAGE_12.bin";
+ static constexpr const char *PNG_A004_082_IMAGE_PATH = APP_RES_PATH "/HEARTBEAT_IMAGE_13.bin";
+ static constexpr const char *PNG_A004_083_IMAGE_PATH = APP_RES_PATH "/HEARTBEAT_IMAGE_14.bin";
+ static constexpr const char *PNG_A004_084_IMAGE_PATH = APP_RES_PATH "/HEARTBEAT_IMAGE_15.bin";
+ static constexpr const char *PNG_A004_085_IMAGE_PATH = APP_RES_PATH "/HEARTBEAT_IMAGE_16.bin";
+ static constexpr const char *PNG_A004_086_IMAGE_PATH = APP_RES_PATH "/HEARTBEAT_IMAGE_17.bin";
+ static constexpr const char *PNG_A004_087_IMAGE_PATH = APP_RES_PATH "/HEARTBEAT_IMAGE_18.bin";
+ static constexpr const char *PNG_A004_088_IMAGE_PATH = APP_RES_PATH "/HEARTBEAT_IMAGE_19.bin";
+ /* -------------------------------- 蓝牙搜索的动画图片 ------------------------------- */
+ static constexpr const char *PNG_A019_080_IMAGE_PATH = APP_RES_PATH "/BLUETOOTH_IMAGE_01.bin";
+ static constexpr const char *PNG_A019_081_IMAGE_PATH = APP_RES_PATH "/BLUETOOTH_IMAGE_02.bin";
+ static constexpr const char *PNG_A019_082_IMAGE_PATH = APP_RES_PATH "/BLUETOOTH_IMAGE_03.bin";
+ static constexpr const char *PNG_A019_083_IMAGE_PATH = APP_RES_PATH "/BLUETOOTH_IMAGE_04.bin";
+ static constexpr const char *PNG_A019_084_IMAGE_PATH = APP_RES_PATH "/BLUETOOTH_IMAGE_05.bin";
+ static constexpr const char *PNG_A019_085_IMAGE_PATH = APP_RES_PATH "/BLUETOOTH_IMAGE_06.bin";
+ static constexpr const char *PNG_A019_086_IMAGE_PATH = APP_RES_PATH "/BLUETOOTH_IMAGE_07.bin";
+ static constexpr const char *PNG_A019_087_IMAGE_PATH = APP_RES_PATH "/BLUETOOTH_IMAGE_08.bin";
+ static constexpr const char *PNG_A019_088_IMAGE_PATH = APP_RES_PATH "/BLUETOOTH_IMAGE_09.bin";
+ static constexpr const char *PNG_A019_089_IMAGE_PATH = APP_RES_PATH "/BLUETOOTH_IMAGE_10.bin";
+ static constexpr const char *PNG_A019_090_IMAGE_PATH = APP_RES_PATH "/BLUETOOTH_IMAGE_11.bin";
+ static constexpr const char *PNG_A019_091_IMAGE_PATH = APP_RES_PATH "/BLUETOOTH_IMAGE_12.bin";
+ static constexpr const char *PNG_A019_092_IMAGE_PATH = APP_RES_PATH "/BLUETOOTH_IMAGE_13.bin";
+ static constexpr const char *PNG_A019_093_IMAGE_PATH = APP_RES_PATH "/BLUETOOTH_IMAGE_14.bin";
+ static constexpr const char *PNG_A019_094_IMAGE_PATH = APP_RES_PATH "/BLUETOOTH_IMAGE_15.bin";
+ 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_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_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_TRAING_BOUTTONMORE_IMAGE = APP_RES_PATH "/Training/More.bin";
+ static constexpr const char *PNG_TRAING_BUTTONGRONG_IMAGE = APP_RES_PATH "/Training/Bouttonground.bin";
+ static constexpr const char *PNG_TRAING_BUTTONGRONG2_IMAGE = APP_RES_PATH "/Training/Buttonground2.bin";
+ static constexpr const char *PNG_TRAING_RIDINGBIG_IMAGE = APP_RES_PATH "/Training/riding-big2.bin";
+ static constexpr const char *PNG_TRAING_RUNNINGBIG_IMAGE = APP_RES_PATH "/Training/running-big.bin";
+ static constexpr const char *PNG_TRAING_WALKINGBIG_IMAGE = APP_RES_PATH "/Training/walking-big.bin";
+ /* ---------------------------------- 室内步行 ---------------------------------- */
+ static constexpr const char *PNG_APPLIST_WALK_IMAGE = APP_RES_PATH "/APPLIST_WALK.bin"; // Applist图标
+ static constexpr const char *PNG_WALK_BACK_GROUND = APP_RES_PATH "/WALK_BACK_GROUND.bin";
+ static constexpr const char *PNG_WALK_IMAGE = APP_RES_PATH "/INDOORWALK.bin";
+ static constexpr const char *PNG_AEROBIC_IMAGE = APP_RES_PATH "/AEROBIC.bin";
+ static constexpr const char *PNG_ANAEROBIC_IMAGE = APP_RES_PATH "/ANAEROBIC.bin";
+ static constexpr const char *PNG_OPTIONS_BOX1_IMAGE = APP_RES_PATH "/OPTIONS_BOX1.bin";
+ static constexpr const char *PNG_OPTIONS_BOX2_IMAGE = APP_RES_PATH "/OPTIONS_BOX2.bin";
+ static constexpr const char *PNG_OPTIONS_BOX3_IMAGE = APP_RES_PATH "/OPTIONS_BOX3.bin";
+ static constexpr const char *PNG_OPTIONS_BOX4_IMAGE = APP_RES_PATH "/OPTIONS_BOX4.bin";
+ static constexpr const char *PNG_WALK_TIME_IMAGE = APP_RES_PATH "/TIME_IMAGE.bin";
+ static constexpr const char *PNG_WALK_DISTANCES_IMAGE = APP_RES_PATH "/DISTANCES_IMAGE.bin";
+ static constexpr const char *PNG_WALK_HEART_IMAGE = APP_RES_PATH "/HEART_IMAGE.bin";
+ static constexpr const char *PNG_WALK_SPEED_IMAGE = APP_RES_PATH "/SPEED_IMAGE.bin";
+ static constexpr const char *PNG_WALK_STEPS_IMAGE = APP_RES_PATH "/STEPS_IMAGE.bin";
+ /* ----------------------------------- 设置 ----------------------------------- */
+ static constexpr const char *PNG_SETTINGS_DISPLAY_BRIGHTNESS = APP_RES_PATH "/settings/SETTINGS_DISPLAY_BRIGHTNESS.bin"; // 显示与亮度
+ static constexpr const char *PNG_SETTINGS_BLUETOOTH = APP_RES_PATH "/settings/SETTINGS_BLUETOOTH.bin"; // 蓝牙
+ static constexpr const char *PNG_SETTINGS_SOUND_VIBRATION = APP_RES_PATH "/settings/SETTINGS_SOUND_VIBRATION.bin"; // 声音与震动
+ static constexpr const char *PNG_SETTINGS_SECONDARY_FUNCTION = APP_RES_PATH "/settings/SETTINGS_QUICK_ACCESS.bin"; // 辅助功能
+ static constexpr const char *PNG_SETTINGS_SYSTEM = APP_RES_PATH "/settings/SETTINGS_SYSTEM.bin"; // 系统
+ static constexpr const char *PNG_SETTINGS_SETTINGS_POWER_CONTROL = APP_RES_PATH "/settings/SETTINGS_POWER_CONTROL.bin"; // 关机和重启
+ /* ---------------------------------- 消息中心 ---------------------------------- */
+ static constexpr const char *PNG_Message_System = APP_RES_PATH "/message/system-icon.bin"; // 系统消息
+ static constexpr const char *PNG_Message_Note = APP_RES_PATH "/message/message-icon.bin"; // 短信
+ static constexpr const char *PNG_Message_Wechat = APP_RES_PATH "/message/WeChat-icon.bin"; // 微信消息
+ static constexpr const char *PNG_Message_QQ = APP_RES_PATH "/message/QQ-icon.bin"; // QQ消息
+ /* ---------------------------------- 通用图片 ---------------------------------- */
+ static constexpr const char *PNG_CHECKBOX_OFF_IMAGE = APP_RES_PATH "/CHECKBOX_OFF.bin"; // checkbox未选中图片
+ static constexpr const char *PNG_CHECKBOX_ON_IMAGE = APP_RES_PATH "/CHECKBOX_ON.bin"; // checkbox选中图片
+ static constexpr const char *PNG_SETTING_NEXT_IMAGE = APP_RES_PATH "/SETTING_NEXT.bin"; // 箭头图片
+ static constexpr const char *PNG_SETTING_BACKGROUND_IMAGE = APP_RES_PATH "/SETTING_BACKGROUND.bin"; // 按钮的背景图片
+ static constexpr const char *PNG_VOLUME_CONTROL_VECTOR = APP_RES_PATH "/VolumeControlVector.bin"; // 调节音量图片
+ static constexpr const char *PNG_BRIGHTNESS_CONTROL_VECTOR = APP_RES_PATH "/BringhtnessContuolVector.bin"; // 调节亮度图片
+ static constexpr const char *PNG_SYSTEM_CHECK_ON_IMAGE = APP_RES_PATH "/SYSTEM_CheckOn.bin"; // 勾
+ static constexpr const char *PNG_SYSTEM_CHECK_OFF_IMAGE = APP_RES_PATH "/SYSTEM_CheckOff.bin"; // 叉
+ static constexpr const char *PNG_TOGGLEBUTTON_OFF_IMAGE = APP_RES_PATH "/TOGGLEBUTTON_OFF.bin"; // togglebuttton未选中图片
+ static constexpr const char *PNG_TOGGLEBUTTON_ON_IMAGE = APP_RES_PATH "/TOGGLEBUTTON_ON.bin"; // togglebuttton选中图片
+ static constexpr const char *PNG_SYSTEM_VOLUME_IMAGE = APP_RES_PATH "/SYSTEM_VOLUME.bin"; // 系统音量
+ static constexpr const char *PNG_CALL_VOLUME_IMAGE = APP_RES_PATH "/CALL_VOLUME.bin"; // 通话音量
+ static constexpr const char *PNG_MEDIA_VOLUME_IMAGE = APP_RES_PATH "/MEDIA_VOLUME.bin"; // 媒体音量
+ static constexpr const char *PNG_ORANGE_ATTENTION_VECTOR_IMAGE = APP_RES_PATH "/OrangeAttentionVector.bin"; // 橘黄色感叹号图标
+ static constexpr const char *PNG_ANIMATOR1_IMAGE = APP_RES_PATH "/Record/animator1.bin";
+ static constexpr const char *PNG_ANIMATOR2_IMAGE = APP_RES_PATH "/Record/animator2.bin";
+ /* -------------------------------- 已删除的不必要图片 ------------------------------- */
+ static constexpr const char *PNG_APPLIST_UI_SAMPLE_IMAGE = APP_RES_PATH "/APPLIST_UI_SAMPLE.bin"; // Applist图标
+ static constexpr const char *PNG_APPLIST_TEMP_IMAGE = APP_RES_PATH "/TEMP_IMAGE.bin";
+ static constexpr const char *TEMP_MEASURE = APP_RES_PATH "/TEMP_MEASURE.bin";
+ static constexpr const char *TEMP_UP_DROP = APP_RES_PATH "/TEMP_UP_DROP.bin";
+ static constexpr const char *TEMP_EXIT = APP_RES_PATH "/TEMP_EXIT.bin";
+ static constexpr const char *TEMP_ROTATE = APP_RES_PATH "/TEMP_ROTATE.bin";
+ static constexpr const char *TEMP_ICON_ENTER = APP_RES_PATH "/TEMP_ICON_ENTER.bin";
+ static constexpr const char *TEMP_BACKGROUND = APP_RES_PATH "/TEMP_BACKGROUND.bin";
+ static constexpr const char *TEMP_WARN = APP_RES_PATH "/TEMP_WARN.bin";
+ static constexpr const char *TEMP_LITTLE_MEASURE = APP_RES_PATH "/TEMP_LITTLE_MEASURE.bin";
+ static constexpr const char *TEMP_HOT = APP_RES_PATH "/TEMP_HOT.bin";
+ static constexpr const char *TEMP_COLD = APP_RES_PATH "/TEMP_COLD.bin";
+ static constexpr const char *TEMP_LIT_TIP = APP_RES_PATH "/TEMP_LIT_TIP.bin";
+ static constexpr const char *TEMP_ABOUT_STUDY = APP_RES_PATH "/TEMP_ABOUT_STUDY.bin";
+ static constexpr const char *TEMP_TRUE = APP_RES_PATH "/TEMP_TRUE.bin";
+ static constexpr const char *TEMP_DELETE = APP_RES_PATH "/TEMP_DELETE.bin";
+ static constexpr const char *TEMP_WAITING = APP_RES_PATH "/TEMP_WAITING.bin";
+ static constexpr const char *TEMP_REPORT = APP_RES_PATH "/TEMP_REPORT.bin";
+ static constexpr const char *TEMP_POINT = APP_RES_PATH "/TEMP_POINT.bin";
+ static constexpr const char *TEMP_REV_POINTER = APP_RES_PATH "/TEMP_REV_POINTER.bin";
+ static constexpr const char *PNG_MAIN_FACE_IMAGE = APP_RES_PATH "/MAIN_FACE_IMAGE.bin";
+ static constexpr const char *B024_009_IMAGE_PATH = APP_RES_PATH "/HOURHAND.bin";
+ static constexpr const char *B024_010_IMAGE_PATH = APP_RES_PATH "/SECONDHAND.bin";
+ static constexpr const char *B024_011_IMAGE_PATH = APP_RES_PATH "/MINUTEHAND.bin";
+ /* -------------------------------------------------------------------------- */
+ static constexpr const char *PNG_NEW_WLAN_WIFI = APP_RES_PATH "/FULL_SIGNAL_OPEN.bin";
+ static constexpr const char *FULL_SIGNAL_ENCRYPTION = APP_RES_PATH "/FULL_SIGNAL_ENCRYPTION.bin";
+ /* ------------------------------- 不确定是否要删除的图片 ------------------------------ */
+ static constexpr const char *COMPASS_CALIBRATE_IMAGE = APP_RES_PATH "/COMPASS_CALIBRATE_IMAGE.bin";
+ static constexpr const char *PNG_STEP_SHOE_IMAGE_PATH = APP_RES_PATH "/SHOE_IMAGE.bin";
+ static constexpr const char *PNG_SETTTING_BUTTON_IMAGE = APP_RES_PATH "/SETTTING_BUTTON.bin";
+ static constexpr const char *PNG_REBOOT_BUTTON_IMAGE = APP_RES_PATH "/REBOOT_BUTTON.bin";
+ static constexpr const char *PNG_SHUTDOWN_BUTTON_IMAGE = APP_RES_PATH "/SHUTDOWN_BUTTON.bin";
+ static constexpr const char *PNG_SETTTING_REBOOT_IMAGE = APP_RES_PATH "/SETTTING_REBOOT.bin";
+ static constexpr const char *PNG_SETTTING_SHUTDOWN_IMAGE = APP_RES_PATH "/SETTTING_SHUTDOWN.bin";
+ static constexpr const char *PNG_CONNECT_PHONE_IMAGE = APP_RES_PATH "/CONNECT_PHONE.bin";
+ static constexpr const char *PNG_BLUETOOTH_STITLE = APP_RES_PATH "/BLUETOOTH_TITLE.bin";
+ static constexpr const char *PNG_NEW_DEVICE = APP_RES_PATH "/NEW_DEVICE.bin";
+ static constexpr const char *PNG_BT_LIST = APP_RES_PATH "/BT_LIST.bin";
+ static constexpr const char *PNG_SELECTION_BOX = APP_RES_PATH "/SELECTION_BOX.bin";
+ static constexpr const char *PNG_GANTAN = APP_RES_PATH "/GANTAN.bin";
+ static constexpr const char *PNG_RIGHT = APP_RES_PATH "/RIGHT.bin";
+}
+
+#endif // UI_CONFIG_H
--- /dev/null
- #include "system/include/SystemFactoryResetPresenter.h"
- #include "system/include/SystemFactoryResetView.h"
+/*
+ * Copyright (c) 2020-2021 CompanyNameMagicTag.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "NativeLauncher.h"
+#include "SliceProxy.h"
+#include "AbilitySliceProxy.h"
+#include "wearable_log.h"
+#include "MainViewSample.h"
+#include "MainPresenterSample.h"
+#include "SettingView.h"
+#include "SettingPresenter.h"
+#include "ApplistView.h"
+#include "ApplistPresenter.h"
+#include "BloodOxygenView.h"
+#include "BloodOxygenPresenter.h"
+#include "CallerLogView.h"
+#include "CallerLogPresenter.h"
+#include "MainCallingView.h"
+#include "MainCallingPresenter.h"
+#include "ActivityPresenter.h"
+#include "MainAlarmView.h"
+#include "AlarmPresenter.h"
+#include "AlarmPopUpPresenter.h"
+#include "AlarmPopUpView.h"
+#include "MainBluetoothView.h"
+#include "BluetoothPresenter.h"
+#include "PlayersModel.h"
+#include "HealthModel.h"
+#include "PresenterTask.h"
+#include "MainCompassPresenter.h"
+#include "MainCompassView.h"
+#include "CallerLogModel.h"
+#include "VocassistPresenter.h"
+#include "MainVocassistView.h"
+#include "VocassistModel.h"
+#include "ConnectPhonePresenter.h"
+#include "ConnectPhoneView.h"
+#include "ScreenModels.h"
+#include "TempMainView.h"
+#include "TempPresenter.h"
+#include "IndoorWalkPresenter.h"
+#include "IndoorWalkView.h"
+#include "RebootView.h"
+#include "RebootPresenter.h"
+#include "UISampleView.h"
+#include "UISamplePresenter.h"
+
+#include "dial/include/DialPresenter.h"
+#include "dial/include/DialView.h"
++#include "blood/include/BloodCardView.h"
++
+
+#include "weather/include/MainWeatherPresenter.h"
+#include "weather/include/MainWeatherView.h"
+#include "weather/include/WeatherReportPresenter.h"
+#include "weather/include/WeatherReportView.h"
+#include "weather/include/FutureWeatherPresenter.h"
+#include "weather/include/FutureWeatherView.h"
+#include "weather/include/GetWeatherDataErrorPresenter.h"
+#include "weather/include/GetWeatherDataErrorView.h"
+
+#include "system/include/SystemPresenter.h"
+#include "system/include/SystemView.h"
- {VIEW_SYSTEM_FACTORY_RESET, &NativeLauncher::InitSystemFactoryResetSlice}, // 系统:恢复出厂设置实例化地址
+
+#include "soundandvibration/include/SoundAndVibrationPresenter.h"
+#include "soundandvibration/include/SoundAndVibrationView.h"
+#include "soundandvibration/include/SystemVolumePresenter.h"
+#include "soundandvibration/include/SystemVolumeView.h"
+
+#include "displaybrightness/include/DisplayBrightnessPresenter.h"
+#include "displaybrightness/include/DisplayBrightnessView.h"
+#include "displaybrightness/include/BrightnessControlPresenter.h"
+#include "displaybrightness/include/BrightnessControlView.h"
+#include "displaybrightness/include/ScreenDurationPresenter.h"
+#include "displaybrightness/include/ScreenDurationView.h"
+
+#include "message/include/MessageAdapter.h"
+#include "message/include/MessageView.h"
+#include "message/include/MessageItemView.h"
+#include "message/include/MessageModel.h"
+#include "message/include/MessagePresenter.h"
+
+#include "secondaryfunction/include/SecondaryFunctionPresenter.h"
+#include "secondaryfunction/include/SecondaryFunctionView.h"
+#include "secondaryfunction/include/FastTrainingPresenter.h"
+#include "secondaryfunction/include/FastTrainingView.h"
+#include "secondaryfunction/include/FastTrainingAttentionPresenter.h"
+#include "secondaryfunction/include/FastTrainingAttentionView.h"
+#include "secondaryfunction/include/QuickAccessPresenter.h"
+#include "secondaryfunction/include/QuickAccessView.h"
+
+#include "BluetoothHeadsetEvent.h"
+#include "graphic_hardware_config.h"
+#include "graphic_service.h"
+#include "common/graphic_startup.h"
+
+namespace OHOS
+{
+ struct AppViewMapper
+ {
+ AppViewId id;
+ void (NativeLauncher::*func)(void);
+ };
+
+ struct ViewIdToString
+ {
+ AppViewId id;
+ char idForUikit[256];
+ };
+
+ static const AppViewMapper SLICE_MAPPER[] = {
+ {VIEW_MAIN, &NativeLauncher::InitMainSampleSlice},
+ {VIEW_SETTING, &NativeLauncher::InitSettingSlice},
+ {VIEW_APPLIST, &NativeLauncher::InitApplistSlice},
+ {VIEW_MAIN_ALARM, &NativeLauncher::InitMainAlarmSlice},
+ {VIEW_ALARM_POP_UP, &NativeLauncher::InitAlarmPopUpSlice},
+ {VIEW_BLUETOOTH_EARPHONE, &NativeLauncher::InitBluetoothSlice},
+ {VIEW_CALLER_LOG, &NativeLauncher::InitMainCallerLogView},
+ {VIEW_INCOMING_CALL, &NativeLauncher::InitMainMakePhoneView},
+ {VIEW_BLOODOXY, &NativeLauncher::InitMainBloodOxyView},
+ {VIEW_COMPASS, &NativeLauncher::InitCompassSlice},
+ {VIEW_CONNECT_PHONE, &NativeLauncher::InitConnectPhoneSlice},
+ {VIEW_INDOORWALK, &NativeLauncher::InitIndoorWalkSlice},
+ {VIEW_SHUTDOWN_OR_REBOOT, &NativeLauncher::InitRebootSlice},
+ {VIEW_DIAL, &NativeLauncher::InitDialSlice},
+ {VIEW_WEATHER, &NativeLauncher::InitWeatherSlice}, // 天气
+ {VIEW_WEATHER_REPORT, &NativeLauncher::InitWeatherReportSlice}, // 气象报告
+ {VIEW_FUTURE_WEATHER, &NativeLauncher::InitFutureWeatherSlice}, // 未来天气
+ {VIEW_GET_WEATHER_DATA_ERROR, &NativeLauncher::InitGetWeatherDataErrorSlice}, // 获取天气数据失败
+ {VIEW_SYSTEM, &NativeLauncher::InitSystemSlice}, // 系统实例化地址
- void NativeLauncher::InitSystemFactoryResetSlice(void) // 系统:恢复出厂设置
- {
- SliceProxy *systemfactoryreset = new AbilitySliceProxy<SystemFactoryResetView, SystemFactoryResetPresenter>;
- if (systemfactoryreset == nullptr)
- {
- return;
- }
- NativeAbility::GetInstance().AddSliceProxy(VIEW_SYSTEM_FACTORY_RESET, systemfactoryreset);
- }
-
+ {VIEW_SOUND_VIBRATION, &NativeLauncher::InitSoundAndVibrationSlice}, // 声音与震动实例化地址
+ {VIEW_SYSTEM_VOLUME, &NativeLauncher::InitSystemVolumeSlice}, // 系统音量
+
+ {VIEW_DISPLAY_BRIGHTNESS, &NativeLauncher::InitUIDisplayBrightnessSlice}, // 显示与亮度的实例化地址
+ {VIEW_BRIGHTNESS_CONTROL, &NativeLauncher::InitBrightnessControlSlice}, // 调节亮度的实例化地址
+ {VIEW_SCREEN_DURATION, &NativeLauncher::InitScreenDurationSlice}, // 亮屏时长实例化地址
+
+ {VIEW_SECONDARY_FUNCTION, &NativeLauncher::InitSecondaryFunction},
+ {VIEW_QUICK_ACCESS,&NativeLauncher::InitQuickAccessSlice}, //快速访问实例化地址
+ {VIEW_FAST_TRAINING, &NativeLauncher::InitFastTrainingSlice},
+ {VIEW_FAST_TRAINING_ATTENTION, &NativeLauncher::InitFastTrainingAttentionSlice},
+
+ {VIEW_MESSAGE, &NativeLauncher::InitMessageSlice},
+
+#if 0
+ {VIEW_MAIN_ACTIVITY, &NativeLauncher::InitActivitySlice},
+ {VIEW_OFFLINEVOICE, &NativeLauncher::InitOfflineVoice},
+ {VIEW_MAIN_TEMP, &NativeLauncher::InitMainTempSlice},
+ {VIEW_UISAMPLE, &NativeLauncher::InitUISampleSlice}
+#endif
+ };
+
+ static const ViewIdToString VIEW_MAPPER[] = {
+ {VIEW_MAIN, "mainView"},
+ {VIEW_SETTING, "setting"},
+ {VIEW_APPLIST, "applist"},
+ {VIEW_MAIN_ALARM, "mainAlarmView"},
+ {VIEW_ALARM_POP_UP, "alarmPopUpView"},
+ {VIEW_BLUETOOTH_EARPHONE, "mainBluetoothView"},
+ {VIEW_CALLER_LOG, "callerLogView"},
+ {VIEW_INCOMING_CALL, "makePhoneView"},
+ {VIEW_BLOODOXY, "bloodOxygenView"},
+ {VIEW_COMPASS, "mainCompassView"},
+ {VIEW_CONNECT_PHONE, "ConnectPhoneView"},
+ {VIEW_INDOORWALK, "IndoorWalkView"},
+ {VIEW_SHUTDOWN_OR_REBOOT, "RebootView"}};
+
+ NativeLauncher::NativeLauncher() {}
+ NativeLauncher::~NativeLauncher() {}
+
+ NativeLauncher &NativeLauncher::GetInstance(void)
+ {
+ static NativeLauncher instance;
+ return instance;
+ }
+
+ void NativeLauncher::InitNativeLauncher()
+ {
+ GraphicStartUp::InitFontEngine(MEM_POOL_UI_FONT, MEM_POOL_UI_FONT_SIZE, OHOS::VECTOR_FONT_DIR, DEFAULT_VECTOR_FONT_FILENAME);
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_LAUNCHER_FWK, "NativeLauncher::InitNativeLauncher");
+ // 初始化所有预加载slice
+ InitBtHeadsetEvent(); // 蓝牙ct和tg适配初始化
+ InitAllNativeSlices();
+ CallerLogModel::GetInstance()->InitPhoneService();
+ PresenterTask::GetInstance()->Init();
+ PlayersModel::GetInstance()->AudioInit();
+ ActivityModel::GetInstance()->Init();
+ ScreenModels::GetInstance()->InitCardConfig();
+ VocassistModel::GetInstance()->Init();
+ HeartModel::GetInstance()->Init();
+ BluetoothModel::GetInstance()->Init();
+ // 初始化默认首页
+ ScreenModels::GetInstance()->PreLoadAppimages();
+ NativeAbility::GetInstance().SetDefaultSliceId(VIEW_MAIN);
+ }
+
+ void NativeLauncher::InitAllNativeSlices(void)
+ {
+ uint16_t size = sizeof(SLICE_MAPPER) / sizeof(SLICE_MAPPER[0]);
+ for (int index = 0; index < size; index++)
+ {
+ if ((SLICE_MAPPER[index].id >= VIEW_MAX_INTER_APP))
+ {
+ continue;
+ }
+ (this->*(SLICE_MAPPER[index].func))();
+ }
+ return;
+ }
+
+ void NativeLauncher::InitMainSampleSlice(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitMainSampleSlice");
+ SliceProxy *mainViewSample = new AbilitySliceProxy<MainViewSample, MainPresenterSample>;
+ if (mainViewSample == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mainViewSample is nullptr");
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_MAIN, mainViewSample);
+ }
+
+ void NativeLauncher::InitMainAlarmSlice(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitMainAlarmSlice");
+ SliceProxy *mainAlarmView = new AbilitySliceProxy<MainAlarmView, AlarmPresenter>;
+ if (mainAlarmView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mainAlarmView is nullptr");
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_MAIN_ALARM, mainAlarmView);
+ }
+
+ void NativeLauncher::InitMainTempSlice(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitMainTempSlice");
+ SliceProxy *mainTempView = new AbilitySliceProxy<TempMainView, TempPresenter>;
+ if (mainTempView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mainTempView is nullptr");
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_MAIN_TEMP, mainTempView);
+ }
+
+ void NativeLauncher::InitCompassSlice(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::MainCompassView");
+ SliceProxy *mainCompassView = new AbilitySliceProxy<MainCompassView, MainCompassPresenter>;
+ if (mainCompassView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mainCompassView is nullptr");
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_COMPASS, mainCompassView);
+ }
+
+ void NativeLauncher::InitIndoorWalkSlice(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::IndoorWalkView");
+ SliceProxy *indoorWalkView = new AbilitySliceProxy<IndoorWalkView, IndoorWalkPresenter>;
+ if (indoorWalkView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "indoorWalkView is nullptr");
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_INDOORWALK, indoorWalkView);
+ }
+
+ void NativeLauncher::InitRebootSlice(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::RebootView");
+ SliceProxy *rebootView = new AbilitySliceProxy<RebootView, RebootPresenter>;
+ if (rebootView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "rebootView is nullptr");
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_SHUTDOWN_OR_REBOOT, rebootView);
+ }
+
+ void NativeLauncher::InitConnectPhoneSlice(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::ConnectPhoneView");
+ SliceProxy *connectPhoneView = new AbilitySliceProxy<ConnectPhoneView, ConnectPhonePresenter>;
+ if (connectPhoneView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "connectPhoneView is nullptr");
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_CONNECT_PHONE, connectPhoneView);
+ }
+
+ void NativeLauncher::InitAlarmPopUpSlice(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitAlarmPopUpSlice");
+ SliceProxy *alarmPopUpView = new AbilitySliceProxy<AlarmPopUpView, AlarmPopUpPresenter>;
+ if (alarmPopUpView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mainAlarmView is nullptr");
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_ALARM_POP_UP, alarmPopUpView);
+ }
+
+ void NativeLauncher::InitMainBloodOxyView(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitMainBloodOxyView");
+ SliceProxy *bloodOxygenView = new AbilitySliceProxy<BloodOxygenView, BloodOxygenPresenter>;
+ if (bloodOxygenView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bloodOxygenView is nullptr");
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_BLOODOXY, bloodOxygenView);
+ }
+
+ void NativeLauncher::InitMainMakePhoneView(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitMainMakePhoneView");
+ SliceProxy *makePhoneView = new AbilitySliceProxy<MainCallingView, MainCallingPresenter>;
+ if (makePhoneView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "makePhoneView is nullptr");
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_INCOMING_CALL, makePhoneView);
+ }
+
+ void NativeLauncher::InitMainCallerLogView(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitMainCallerLogView");
+ SliceProxy *callerLogView = new AbilitySliceProxy<CallerLogView, CallerLogPresenter>;
+ if (callerLogView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "callerLogView is nullptr");
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_CALLER_LOG, callerLogView);
+ }
+
+ void NativeLauncher::InitActivitySlice(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitWeekStepSlice");
+ SliceProxy *mainActivityView = new AbilitySliceProxy<MainActivityView, ActivityPresenter>;
+ if (mainActivityView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mainActivityView is nullptr");
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_MAIN_ACTIVITY, mainActivityView);
+ }
+
+ void NativeLauncher::InitBluetoothSlice(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeAbility::InitBluetoothSlice");
+ SliceProxy *mainBluetoothView = new AbilitySliceProxy<MainBluetoothView, BluetoothPresenter>;
+ if (mainBluetoothView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mainBluetoothView is nullptr");
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_BLUETOOTH_EARPHONE, mainBluetoothView);
+ }
+
+ void NativeLauncher::InitSettingSlice(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitSettingSlice");
+ SliceProxy *settingView = new AbilitySliceProxy<SettingView, SettingPresenter>;
+ if (settingView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "settingView is nullptr");
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_SETTING, settingView);
+ }
+
+ void NativeLauncher::InitApplistSlice(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitApplistSlice");
+ SliceProxy *applistView = new AbilitySliceProxy<ApplistView, ApplistPresenter>;
+ if (applistView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "applistView is nullptr");
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_APPLIST, applistView);
+ }
+
+ void NativeLauncher::InitOfflineVoice(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitOfflineVoice");
+ SliceProxy *offlineVoiceView = new AbilitySliceProxy<MainVocassistView, VocassistPresenter>;
+ if (offlineVoiceView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "offlineVoiceView is nullptr");
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_OFFLINEVOICE, offlineVoiceView);
+ }
+
+ void NativeLauncher::InitUISampleSlice(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitUISampleSlice");
+ SliceProxy *uisampleView = new AbilitySliceProxy<UISampleView, UISamplePresenter>;
+ if (uisampleView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "uisampleView");
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_UISAMPLE, uisampleView);
+ }
+ void NativeLauncher::InitDialSlice(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitDialSlice");
+ SliceProxy *dialview = new AbilitySliceProxy<DialView, DialPresenter>;
+ if (dialview == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dialview");
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_DIAL, dialview);
+ }
+
+ void NativeLauncher::InitWeatherSlice(void) // 天气
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitWeatherSlice");
+ SliceProxy *mainweather = new AbilitySliceProxy<MainWeatherView, MainWeatherPresenter>;
+ if (mainweather == nullptr)
+ {
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_WEATHER, mainweather);
+ }
+
+ void NativeLauncher::InitWeatherReportSlice(void) // 气象报告
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitWeatherReportSlice");
+ SliceProxy *weatherreport = new AbilitySliceProxy<WeatherReportView, WeatherReportPresenter>;
+ if (weatherreport == nullptr)
+ {
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_WEATHER_REPORT, weatherreport);
+ }
+
+ void NativeLauncher::InitFutureWeatherSlice(void) // 未来天气
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitFutureWeatherSlice");
+ SliceProxy *futureweather = new AbilitySliceProxy<FutureWeatherView, FutureWeatherPresenter>;
+ if (futureweather == nullptr)
+ {
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_FUTURE_WEATHER, futureweather);
+ }
+
+ void NativeLauncher::InitGetWeatherDataErrorSlice(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitGetWeatherDataErrorSlice");
+ SliceProxy *getweatherdataerror = new AbilitySliceProxy<GetWeatherDataErrorView, GetWeatherDataErrorPresenter>;
+ if (getweatherdataerror == nullptr)
+ {
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_GET_WEATHER_DATA_ERROR, getweatherdataerror);
+ }
+
+ void NativeLauncher::InitSystemSlice(void) // 系统
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitSystemSlice");
+ SliceProxy *system = new AbilitySliceProxy<SystemView, SystemPresenter>;
+ if (system == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "system is nullptr!");
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_SYSTEM, system);
+ }
+
+ void NativeLauncher::InitMessageSlice(void) // 消息中心
+ {
+ SliceProxy *messageview = new AbilitySliceProxy<MessageView, MessagePresenter>;
+ if (messageview == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MessageView is nullptr");
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_MESSAGE, messageview);
+ }
+
+ void NativeLauncher::InitSoundAndVibrationSlice(void) // 声音与震动
+ {
+ SliceProxy *SoundAndVibration = new AbilitySliceProxy<SoundAndVibrationView, SoundAndVibrationPresenter>;
+ if (SoundAndVibration == nullptr)
+ {
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_SOUND_VIBRATION, SoundAndVibration);
+ }
+
+ void NativeLauncher::InitSystemVolumeSlice(void) // 系统音量
+ {
+ SliceProxy *systemvolume = new AbilitySliceProxy<SystemVolumeView, SystemVolumePresenter>;
+ if (systemvolume == nullptr)
+ {
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_SYSTEM_VOLUME, systemvolume);
+ }
+
+ // DisplayBrightness的实例化
+ void NativeLauncher::InitUIDisplayBrightnessSlice(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitUISampleSlice");
+ SliceProxy *uidisplaybrightnessView = new AbilitySliceProxy<DisplayBrightnessView, DisplayBrightnessPresenter>;
+ if (uidisplaybrightnessView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "uidisplaybrightnessView");
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_DISPLAY_BRIGHTNESS, uidisplaybrightnessView);
+ }
+
+ void NativeLauncher::InitBrightnessControlSlice(void)
+ {
+ SliceProxy *brightnesscontrol = new AbilitySliceProxy<BrightnessControlView, BrightnessControlPresenter>;
+ if (brightnesscontrol == nullptr)
+ {
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_BRIGHTNESS_CONTROL, brightnesscontrol);
+ }
+
+ void NativeLauncher::InitScreenDurationSlice(void)
+ {
+ SliceProxy *ScreenDuration = new AbilitySliceProxy<ScreenDurationView, ScreenDurationPresenter>;
+ if (ScreenDuration == nullptr)
+ {
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_SCREEN_DURATION, ScreenDuration);
+ }
+
+ void NativeLauncher::InitSecondaryFunction(void) // 辅助功能
+ {
+ SliceProxy *secondaryfunction = new AbilitySliceProxy<SecondaryFunctionView, SecondaryFunctionPresenter>;
+ if (secondaryfunction == nullptr)
+ {
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_SECONDARY_FUNCTION, secondaryfunction);
+ }
+
+ void NativeLauncher::InitQuickAccessSlice(void) // 快速访问
+ {
+ SliceProxy *QuickAccess = new AbilitySliceProxy<QuickAccessView, QuickAccessPresenter>;
+ if (QuickAccess == nullptr)
+ {
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_QUICK_ACCESS, QuickAccess);
+ }
+
+ void NativeLauncher::InitFastTrainingSlice(void)
+ {
+ SliceProxy *fasttraining = new AbilitySliceProxy<FastTrainingView, FastTrainingPresenter>;
+ if (fasttraining == nullptr)
+ {
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_FAST_TRAINING, fasttraining);
+ }
+
+ void NativeLauncher::InitFastTrainingAttentionSlice(void)
+ {
+ SliceProxy *fasttrainingattention = new AbilitySliceProxy<FastTrainingAttentionView, FastTrainingAttentionPresenter>;
+ if (fasttrainingattention == nullptr)
+ {
+ return;
+ }
+ NativeAbility::GetInstance().AddSliceProxy(VIEW_FAST_TRAINING_ATTENTION, fasttrainingattention);
+ }
+
+}
--- /dev/null
- namespace OHOS {
- class BloodBandoffView {
- public:
- BloodBandoffView();
- virtual ~BloodBandoffView();
++/***
++ * @Author: Caisking 3449750381@qq.com
++ * @Date: 2023-12-13 19:33:14
++ * @LastEditors: Caisking 3449750381@qq.com
++ * @LastEditTime: 2024-01-26 18:24:46
++ * @FilePath: /FD230/code/sdk/application/wearable/nativeapp/nativeui/bloodoxygen/include/BloodBandoffView.h
++ * @Description:
++ * @
++ * @Copyright (c) 2024 by Caisking , All Rights Reserved.
++ */
+/*
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
+ * Description: bloodBandoff view
+ * Author:
+ * Create: 2021-08-01
+ */
+
+#ifndef BLOOD_BANDOFF_VIEW_H
+#define BLOOD_BANDOFF_VIEW_H
+
+#include "components/ui_label.h"
+#include "components/ui_view_group.h"
+#include "components/ui_image_animator.h"
++#include "components/ui_button.h"
++#include "components/ui_label_button.h"
+#include "BaseView.h"
+#include "View.h"
+#include "ohos_types.h"
+
- UIViewGroup *CreateUIViewGroup();
- static BloodBandoffView *GetInstance(void);
++namespace OHOS
++{
++ class BloodBandoffView
++ {
++ public:
++ BloodBandoffView();
++ virtual ~BloodBandoffView();
+
- UIViewGroup *GetBandoffViewGroup();
- UIImageAnimatorView *GetImageAnimator();
- private:
- UILabel *label;
- UIViewGroup *group;
- UIImageView *imageView;
- UIImageAnimatorView *imageAnimator;
- };
- }
++ UIViewGroup *CreateUIViewGroup();
++ static BloodBandoffView *GetInstance(void);
+
- #endif // 血氧跳转界面
++ UIViewGroup *GetBandoffViewGroup();
++ UIImageAnimatorView *GetImageAnimator();
+
++ private:
++ UILabel *label;
++ UILabelButton *testButton;
++ UIViewGroup *group;
++ UIImageView *imageView;
++ UIImageAnimatorView *imageAnimator;
++ };
++}
+
++#endif // 血氧跳转界面
--- /dev/null
- namespace OHOS {
- // 动态显示图片设置
- static constexpr uint16_t IMAGE_SIZE = 96;
- static constexpr uint16_t IMAGE_POSITION_Y = 276;
- static constexpr uint16_t IMAGE_POSITION_X = 179;
- static constexpr uint16_t IMAGEANIMATOERVIEW_SIZE = 24;
- static constexpr uint16_t IMAGEANIMATOERVIEW_SPEED = 40;
-
- // 标签设置
- static constexpr uint16_t LABEL_POSITION_X = 87;
- static constexpr uint16_t LABEL_POSITION_Y = 200;
- static constexpr uint16_t LABEL_POSITION_WIDTH = 288;
- static constexpr uint16_t LABEL_POSITION_HEIGHT = 50;
-
- // 图片设置
- static constexpr uint16_t IMAGE_ENTER_POSITION_X = 131;
- static constexpr uint16_t IMAGE_ENTER_POSITION_Y = 70;
-
- static constexpr uint16_t TITLE_LABEL_DEFAULT_HEIGHT = 30;
- static constexpr uint16_t FONT_DEFAULT_SIZE = 25;
- static constexpr uint16_t VIEW_DISTANCE_TO_LEFT_SIDE = 48;
- static constexpr uint16_t TEXT_DISTANCE_TO_LEFT_SIDE = 50;
- static constexpr uint16_t TEXT_DISTANCE_TO_TOP_SIDE = 11;
-
- static ImageAnimatorInfo g_imageAnimatorInfo_Time[IMAGEANIMATOERVIEW_SIZE] = {
- {PNG_COUNTDOWN_TIME_IMAGE_0, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_COUNTDOWN_TIME_IMAGE_1, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_COUNTDOWN_TIME_IMAGE_2, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_COUNTDOWN_TIME_IMAGE_3, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_COUNTDOWN_TIME_IMAGE_4, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_COUNTDOWN_TIME_IMAGE_5, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_COUNTDOWN_TIME_IMAGE_6, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_COUNTDOWN_TIME_IMAGE_7, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_COUNTDOWN_TIME_IMAGE_8, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_COUNTDOWN_TIME_IMAGE_9, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_COUNTDOWN_TIME_IMAGE_10, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_COUNTDOWN_TIME_IMAGE_11, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_COUNTDOWN_TIME_IMAGE_12, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_COUNTDOWN_TIME_IMAGE_13, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_COUNTDOWN_TIME_IMAGE_14, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_COUNTDOWN_TIME_IMAGE_15, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_COUNTDOWN_TIME_IMAGE_16, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_COUNTDOWN_TIME_IMAGE_17, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_COUNTDOWN_TIME_IMAGE_18, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_COUNTDOWN_TIME_IMAGE_19, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_COUNTDOWN_TIME_IMAGE_20, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_COUNTDOWN_TIME_IMAGE_21, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_COUNTDOWN_TIME_IMAGE_22, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_COUNTDOWN_TIME_IMAGE_23, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- };
- static BloodBandoffView *g_pMainView = nullptr;
- BloodBandoffView::BloodBandoffView()
+/*
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
+ * Description: bloodBandoff view
+ * Author:
+ * Create: 2021-08-01
+ */
+#include "UiConfig.h"
+#include "wearable_log.h"
+#include "BloodBandoffView.h"
+#include "BloodOxygenModel.h"
+
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::BloodBandoffView");
- label = nullptr;
- imageView = nullptr;
- group = nullptr;
- imageAnimator = nullptr;
- g_pMainView = this;
- }
++namespace OHOS
+{
- BloodBandoffView::~BloodBandoffView()
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::~BloodBandoffView");
- group->RemoveAll();
- delete label;
- delete imageView;
- delete group;
- delete imageAnimator;
- label = nullptr;
- imageView = nullptr;
- group = nullptr;
- imageAnimator = nullptr;
- g_pMainView = nullptr;
- }
++ // 动态显示图片设置
++ static constexpr uint16_t IMAGE_SIZE = 180;
++ static constexpr uint16_t IMAGE_POSITION_Y = 134;
++ static constexpr uint16_t IMAGE_POSITION_X = 150;
++ static constexpr uint16_t IMAGEANIMATOERVIEW_SIZE = 90;
++ static constexpr uint16_t IMAGEANIMATOERVIEW_SPEED = 30;
+
- BloodBandoffView *BloodBandoffView::GetInstance(void)
- {
- return g_pMainView;
- }
++ // 标签设置
++ static constexpr uint16_t LABEL_POSITION_X = 173;
++ static constexpr uint16_t LABEL_POSITION_Y = 52;
++ static constexpr uint16_t LABEL_POSITION_WIDTH = 120;
++ static constexpr uint16_t LABEL_POSITION_HEIGHT = 35;
+
- UIViewGroup *BloodBandoffView::GetBandoffViewGroup()
- {
- return group;
- }
++ // 图片设置
++ static constexpr uint16_t IMAGE_ENTER_POSITION_X = 131;
++ static constexpr uint16_t IMAGE_ENTER_POSITION_Y = 70;
+
- UIImageAnimatorView *BloodBandoffView::GetImageAnimator()
- {
- return imageAnimator;
- }
++ static constexpr uint16_t TITLE_LABEL_DEFAULT_HEIGHT = 30;
++ static constexpr uint16_t FONT_DEFAULT_SIZE = 30;
++ static constexpr uint16_t VIEW_DISTANCE_TO_LEFT_SIDE = 48;
++ static constexpr uint16_t TEXT_DISTANCE_TO_LEFT_SIDE = 50;
++ static constexpr uint16_t TEXT_DISTANCE_TO_TOP_SIDE = 11;
+
- UIViewGroup *BloodBandoffView::CreateUIViewGroup()
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::CreateUIViewGroup");
- group = new UIViewGroup();
- if (group == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::new group fail");
- return nullptr;
++ static ImageAnimatorInfo g_imageAnimatorInfo_Time[IMAGEANIMATOERVIEW_SIZE] = {
++ {PNG_COUNTDOWN_TIME_IMAGE_0, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_1, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_2, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_3, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_4, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_5, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_6, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_7, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_8, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_9, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_10, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_11, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_12, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_13, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_14, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_15, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_16, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_17, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_18, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_19, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_20, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_21, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_22, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_23, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_24, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_25, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_26, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_27, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_28, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_29, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_30, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_31, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_32, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_33, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_34, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_35, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_36, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_37, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_38, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_39, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_40, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_41, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_42, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_43, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_44, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_45, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_46, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_47, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_48, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_49, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_50, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_51, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_52, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_53, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_54, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_55, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_56, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_57, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_58, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_59, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_60, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_61, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_62, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_63, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_64, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_65, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_66, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_67, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_68, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_69, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_70, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_71, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_72, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_73, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_74, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_75, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_76, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_77, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_78, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_79, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_80, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_81, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_82, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_83, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_84, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_85, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_86, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_87, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_88, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_COUNTDOWN_TIME_IMAGE_89, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ };
++ static BloodBandoffView *g_pMainView = nullptr;
++ BloodBandoffView::BloodBandoffView()
++ {
++ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::BloodBandoffView");
++ label = nullptr;
++ imageView = nullptr;
++ group = nullptr;
++ imageAnimator = nullptr;
++ g_pMainView = this;
++ }
+
- group->SetPosition(0, 0);
- group->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);
++ BloodBandoffView::~BloodBandoffView()
++ {
++ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::~BloodBandoffView");
++ group->RemoveAll();
++ delete label;
++ delete imageView;
++ delete group;
++ delete imageAnimator;
++ label = nullptr;
++ imageView = nullptr;
++ group = nullptr;
++ imageAnimator = nullptr;
++ g_pMainView = nullptr;
+ }
- label = new UILabel();
- if (label == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::new Label fail");
- return nullptr;
+
- group->Add(label);
- label->SetPosition(LABEL_POSITION_X, LABEL_POSITION_Y, LABEL_POSITION_WIDTH, LABEL_POSITION_HEIGHT);
- label->SetText("偏紧佩戴,保持静止");
- label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_DEFAULT_SIZE);
- label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
++ BloodBandoffView *BloodBandoffView::GetInstance(void)
++ {
++ return g_pMainView;
+ }
- imageAnimator = new UIImageAnimatorView();
- if (imageAnimator == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::new UIImageAnimatorView fail");
- return nullptr;
+
- imageAnimator->SetImageAnimatorSrc(g_imageAnimatorInfo_Time, IMAGEANIMATOERVIEW_SIZE, IMAGEANIMATOERVIEW_SPEED);
- imageAnimator->Start();
- imageAnimator->SetRepeat(false);
- group->Add(imageAnimator);
++ UIViewGroup *BloodBandoffView::GetBandoffViewGroup()
++ {
++ return group;
+ }
-
- return group;
- }
+
++ UIImageAnimatorView *BloodBandoffView::GetImageAnimator()
++ {
++ return imageAnimator;
++ }
++
++ UIViewGroup *BloodBandoffView::CreateUIViewGroup()
++ {
++ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::CreateUIViewGroup");
++ group = new UIViewGroup();
++ if (group == nullptr)
++ {
++ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::new group fail");
++ return nullptr;
++ }
++ group->SetPosition(0, 0);
++ group->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);
++
++ label = new UILabel();
++ if (label == nullptr)
++ {
++ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::new Label fail");
++ return nullptr;
++ }
++ group->Add(label);
++ label->SetPosition(LABEL_POSITION_X, LABEL_POSITION_Y, LABEL_POSITION_WIDTH, LABEL_POSITION_HEIGHT);
++ label->SetText("正在检测");
++ label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_DEFAULT_SIZE);
++ label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
++
++ imageAnimator = new UIImageAnimatorView();
++ if (imageAnimator == nullptr)
++ {
++ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::new UIImageAnimatorView fail");
++ return nullptr;
++ }
++ imageAnimator->SetImageAnimatorSrc(g_imageAnimatorInfo_Time, IMAGEANIMATOERVIEW_SIZE, IMAGEANIMATOERVIEW_SPEED);
++ imageAnimator->Start();
++ imageAnimator->SetRepeat(false);
++ group->Add(imageAnimator);
++
++ if (testButton == nullptr)
++ {
++ testButton = new UILabelButton();
++ }
++ testButton->SetPosition(118, 336); // widget's left position and top position
++ testButton->Resize(230, 80); // widget's width and height
++ testButton->SetViewId("labelButton"); // Set style
++ testButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);
++
++ // Set additional property
++ testButton->SetText("停止检测");
++ testButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 26);
++ testButton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);
++ group->Add(testButton);
++
++#if 0
+ imageView = new UIImageView();
+ if (imageView == nullptr) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodBandoffView::new UIImageView fail");
+ return nullptr;
+ }
+ imageView->SetPosition(IMAGE_ENTER_POSITION_X, IMAGE_ENTER_POSITION_Y); // 30 : offset
+ imageView->SetSrc(PNG_BLOOD_ICON_ENTER);
+ group->Add(imageView);
++#endif
++ return group;
++ }
+}
--- /dev/null
- uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
+/*
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
+ * Description: bloodOxygen view
+ * Author:
+ * Create: 2021-08-01
+ */
+
+#include "BloodOxygenPresenter.h"
+#include "common/task_manager.h"
+#include "BloodOxygenView.h"
+#include "BloodOxygenModel.h"
+#include "components/ui_label.h"
+#include "BloodBandoffView.h"
+#include "ChangeSliceListener.h"
+
+namespace OHOS {
+static BloodOxygenPresenter *g_pMainView = nullptr;
+static constexpr uint16_t PROGRESS_VALUE_MIN = 0;
+static constexpr uint16_t PROGRESS_VALUE_MAX = 100;
+
+BloodOxygenPresenter::BloodOxygenPresenter()
+{
+ count = PROGRESS_VALUE_MAX;
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenPresenter::new BloodOxygenPresenter");
+ g_pMainView = this;
+}
+
+BloodOxygenPresenter::~BloodOxygenPresenter()
+{
+ g_pMainView = nullptr;
+}
+
+BloodOxygenPresenter* BloodOxygenPresenter::GetInstance()
+{
+ return g_pMainView;
+}
+
+void BloodOxygenPresenter::OnStart()
+{
+ Presenter<BloodOxygenView>::OnStart();
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenPresenter::On Start ");
+}
+
+void BloodOxygenPresenter::OnPause(void) {}
+
+void BloodOxygenPresenter::OnResume(void) {}
+
+void BloodOxygenPresenter::OnStop(void) {}
+
+bool BloodOxygenPresenter::CheckPointersValue()
+{
+ if (BloodOxygenView::GetInstance() == nullptr) {
+ return false;
+ }
+
+ if (BloodBandoffView::GetInstance() == nullptr) {
+ return false;
+ }
+
+ if (BloodOxygenModel::GetInstance() == nullptr) {
+ return false;
+ }
+ return true;
+}
+
+
+bool BloodOxygenPresenter::OnDrag(UIView& view, const DragEvent& event)
+{
+ UNUSED(view);
+ if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {
+ BloodOxygenModel::GetInstance()->SetBloodOxygenViewStatus(false);
+ BloodOxygenView::GetInstance()->GetTestButton()->SetTouchable(true);
+ NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
+ }
+ return false;
+}
+
+
+bool BloodOxygenPresenter::OnClick(UIView& view, const ClickEvent& event)
+{
+ UNUSED(view);
+ UNUSED(event);
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenPresenter::OnClick");
+ if (CheckPointersValue() == false) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenPresenter::Pointers is empty");
+ return false;
+ }
+ BloodOxygenView::GetInstance()->GetPercent()->SetText("");
+ BloodOxygenView::GetInstance()->GetBloodOxygenGroup()->SetVisible(false);
+ BloodBandoffView::GetInstance()->GetBandoffViewGroup()->SetVisible(true);
+ BloodBandoffView::GetInstance()->GetImageAnimator()->Stop();
+ BloodBandoffView::GetInstance()->GetImageAnimator()->SetRepeat(false);
+ BloodBandoffView::GetInstance()->GetImageAnimator()->Start();
+ BloodOxygenModel::GetInstance()->SetBloodBandoffViewStatus(true);
+ BloodOxygenView::GetInstance()->GetTestButton()->SetTouchable(false);
+ return true;
+}
+
+//增加按键事件
+bool BloodOxygenPresenter::OnKeyAct(UIView& view, const KeyEvent& event)
+{
+ WEARABLE_LOGD("","into the view is: %s\n", typeid(view).name());
+ uint16 keyID = event.GetKeyId();
+ WEARABLE_LOGD("","into key! keyID %u\n",keyID);
+ //如果是power键就返回上一级
+ if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER))
+ {
++ //uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
+ NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
+ }
+ return true;
+}
+void BloodOxygenPresenter::ProgressNotify(void)
+{
+ if (CheckPointersValue() == false) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenPresenter::Pointers is empty");
+ return;
+ }
+
+ if (BloodOxygenModel::GetInstance()->GetBloodOxygenViewStatus() == true) {
+ count--;
+ BloodOxygenView::GetInstance()->GetCircleProgress()->SetValue(count);
+ if (count == PROGRESS_VALUE_MIN) {
+ BloodOxygenView::GetInstance()->GetPercent()->SetText("98%");
+ BloodOxygenModel::GetInstance()->SetBloodOxygenViewStatus(false);
+ count = PROGRESS_VALUE_MAX;
+ BloodOxygenView::GetInstance()->GetCircleProgress()->SetValue(count);
+ BloodOxygenView::GetInstance()->GetTestButton()->SetTouchable(true);
+ }
+ }
+}
+
+void BloodOxygenPresenter::ReturnInterface()
+{
+ if (BloodOxygenModel::GetInstance()->GetBloodBandoffViewStatus() == true) {
+ if (BloodBandoffView::GetInstance()->GetImageAnimator()->GetState() == false) {
+ BloodOxygenModel::GetInstance()->SetBloodBandoffViewStatus(false);
+ BloodOxygenModel::GetInstance()->SetBloodOxygenViewStatus(true);
+
+ BloodBandoffView::GetInstance()->GetBandoffViewGroup()->SetVisible(false);
+ BloodOxygenView::GetInstance()->GetBloodOxygenGroup()->SetVisible(true);
+ }
+ }
+}
+
+void BloodOxygenPresenter::Notify(void)
+{
+ ProgressNotify();
+ ReturnInterface();
+}
+}
--- /dev/null
- namespace OHOS {
- // 按钮设置
- static constexpr uint16_t TESTBUTTON_ZERO = 0;
- static constexpr uint16_t TESTBUTTON_X = 167;
- static constexpr uint16_t TESTBUTTON_Y = 360;
-
- // 进度条参数设置
- static constexpr uint16_t CIRCLE_PROGRESS_VALUE = 100;
- static constexpr uint16_t CIRCLE_PROGRESS_RADIUS = 43;
- static constexpr uint16_t CIRCLE_PROGRESS_STARTANGLE = 360;
- static constexpr uint16_t CIRCLE_PROGRESS_ENDANGLE = 0;
- static constexpr uint16_t CIRCLE_PROGRESS_WIDTH = 10;
- static constexpr uint16_t CIRCLE_PROGRESS_POSITION_X = 10;
- static constexpr uint16_t CIRCLE_PROGRESS_POSITION_Y = 10;
- static constexpr uint16_t CIRCLE_PROGRESS_CENTER_X = 195;
- static constexpr uint16_t CIRCLE_PROGRESS_CENTER_Y = 37;
- static constexpr uint16_t CIRCLE_PROGRESS_POSITION_WIDTH = 275;
- static constexpr uint16_t CIRCLE_PROGRESS_POSITION_HEIGHT = 130;
- static constexpr uint16_t CIRCLE_PROGRESS_LEFT = 10;
- static constexpr uint16_t CIRCLE_PROGRESS_TOP = 5;
-
- // 动态刷新设置
- static constexpr uint16_t IMAGE_SIZE = 60;
- static constexpr uint16_t IMAGE_POSITION_X = 186;
- static constexpr uint16_t IMAGE_POSITION_Y = 23;
- static constexpr uint16_t IMAGEANIMATORVIEW_SIZE = 31;
- static constexpr uint16_t IMAGEANIMATORVIEW_SPEED = 40;
-
- // 血氧主图设置
- static constexpr uint16_t IMAGE_PROGRESS_POSITION_X = 176;
- static constexpr uint16_t IMAGE_PROGRESS_POSITION_Y = 13;
-
- // 血氧%显示
- static constexpr uint16_t LABEL_PERCENT_POSITION_X = 258;
- static constexpr uint16_t LABEL_PERCENT_POSITION_Y = 40;
-
- // 血氧柱状图
- static constexpr int16 VIEW_MAX_X = 415;
- static constexpr int16 VIEW_MIN_X = 35;
- static constexpr int16 VIEW_MAX_Y = 150;
- static constexpr int16 VIEW_MIN_Y = 0;
- static constexpr int16 VIEW_WIDTH = 7;
- static constexpr int16 VIEW_HEIGHT = 300;
- static constexpr uint16_t VIEW_BACKGROUND_OPA = 127;
- static constexpr uint16_t VIEW_BORDER_RADIUS = 5;
- static constexpr uint16_t BORDER_OPA = 127;
- static constexpr uint16_t BORDER_WIDTH = 20;
-
- static constexpr uint16_t TITLE_LABEL_DEFAULT_HEIGHT = 30;
- static constexpr uint16_t FONT_DEFAULT_SIZE = 20;
- static constexpr uint16_t VIEW_DISTANCE_TO_LEFT_SIDE = 48;
- static constexpr uint16_t TEXT_DISTANCE_TO_LEFT_SIDE = 50;
- static constexpr uint16_t TEXT_DISTANCE_TO_TOP_SIDE = 11;
- static constexpr uint16_t BUTTON_LABEL_SIZE = 40;
- static constexpr uint8_t BUTTON_STYLE_BORDER_RADIUS_VALUE = 20;
- static constexpr uint32 BUTTON_STYLE_BACKGROUND_COLOR_VALUE = 0xFFFFFF;
- static constexpr uint16_t BUTTON_WIDHT2 = 120;
- static constexpr uint16_t BUTTON_HEIGHT2 = 60;
-
- // 字体大小
- static constexpr uint16_t PERCENT_FONT_SIZE = 25;
-
- static constexpr uint16_t MATH_ZERO = 0;
-
- static BloodOxygenView *g_pMainView = nullptr;
- static ImageAnimatorInfo g_imageAnimatorInfo_new[31] = {
- {PNG_BLOOD_FLOW_IMAGE_0, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_1, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_2, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_3, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_4, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_5, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_6, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_7, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_8, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_9, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_10, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_11, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_12, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_13, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_14, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_15, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_16, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_17, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_18, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_19, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_20, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_21, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_22, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_23, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_24, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_25, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_26, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_27, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_28, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_29, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- {PNG_BLOOD_FLOW_IMAGE_30, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
- };
-
- BloodOxygenView::BloodOxygenView()
+/*
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
+ * Description: bloodOxygen view
+ * Author:
+ * Create: 2021-08-01
+ */
+
+#include "BloodOxygenView.h"
+#include "BloodOxygenModel.h"
+
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::BloodOxygenView");
- imageViewMain = nullptr;
- imageViewProgress = nullptr;
- group = nullptr;
- percent = nullptr;
- testButton = nullptr;
- circleProgress = nullptr;
- imageAnimator = nullptr;
- g_pMainView = this;
- bloodbandoff = new BloodBandoffView();
- if (bloodbandoff == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new BloodBandoffView fail");
++namespace OHOS
+{
- }
-
- BloodOxygenView::~BloodOxygenView()
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::~BloodOxygenView");
- group->RemoveAll();
- delete imageViewMain;
- delete imageViewProgress;
- delete group;
- delete testButton;
- delete percent;
- delete circleProgress;
- delete imageAnimator;
- delete bloodbandoff;
- imageViewMain = nullptr;
- imageViewProgress = nullptr;
- group = nullptr;
- percent = nullptr;
- testButton = nullptr;
- circleProgress = nullptr;
- imageAnimator = nullptr;
- g_pMainView = nullptr;
- bloodbandoff = nullptr;
- }
-
- BloodOxygenView *BloodOxygenView::GetInstance(void)
- {
- return g_pMainView;
- }
-
- UILabel *BloodOxygenView::GetPercent()
- {
- return percent;
- }
-
- UIViewGroup *BloodOxygenView::GetBloodOxygenGroup()
- {
- return group;
- }
-
- UILabelButton *BloodOxygenView::GetTestButton()
- {
- return testButton;
- }
++ // 按钮设置
++ static constexpr uint16_t TESTBUTTON_ZERO = 0;
++ static constexpr uint16_t TESTBUTTON_X = 118;
++ static constexpr uint16_t TESTBUTTON_Y = 336;
++
++ // 进度条参数设置
++ static constexpr uint16_t CIRCLE_PROGRESS_VALUE = 100;
++ static constexpr uint16_t CIRCLE_PROGRESS_RADIUS = 43;
++ static constexpr uint16_t CIRCLE_PROGRESS_STARTANGLE = 360;
++ static constexpr uint16_t CIRCLE_PROGRESS_ENDANGLE = 0;
++ static constexpr uint16_t CIRCLE_PROGRESS_WIDTH = 10;
++ static constexpr uint16_t CIRCLE_PROGRESS_POSITION_X = 10;
++ static constexpr uint16_t CIRCLE_PROGRESS_POSITION_Y = 10;
++ static constexpr uint16_t CIRCLE_PROGRESS_CENTER_X = 195;
++ static constexpr uint16_t CIRCLE_PROGRESS_CENTER_Y = 37;
++ static constexpr uint16_t CIRCLE_PROGRESS_POSITION_WIDTH = 275;
++ static constexpr uint16_t CIRCLE_PROGRESS_POSITION_HEIGHT = 130;
++ static constexpr uint16_t CIRCLE_PROGRESS_LEFT = 10;
++ static constexpr uint16_t CIRCLE_PROGRESS_TOP = 5;
++
++ // 动态刷新设置
++ static constexpr uint16_t IMAGE_SIZE = 60;
++ static constexpr uint16_t IMAGE_POSITION_X = 186;
++ static constexpr uint16_t IMAGE_POSITION_Y = 23;
++ static constexpr uint16_t IMAGEANIMATORVIEW_SIZE = 31;
++ static constexpr uint16_t IMAGEANIMATORVIEW_SPEED = 40;
++
++ // 血氧主图设置
++ static constexpr uint16_t IMAGE_PROGRESS_POSITION_X = 176;
++ static constexpr uint16_t IMAGE_PROGRESS_POSITION_Y = 13;
++
++ // 血氧%显示
++ static constexpr uint16_t LABEL_PERCENT_POSITION_X = 258;
++ static constexpr uint16_t LABEL_PERCENT_POSITION_Y = 40;
++
++ // 血氧柱状图
++ static constexpr int16 VIEW_MAX_X = 415;
++ static constexpr int16 VIEW_MIN_X = 35;
++ static constexpr int16 VIEW_MAX_Y = 150;
++ static constexpr int16 VIEW_MIN_Y = 0;
++ static constexpr int16 VIEW_WIDTH = 7;
++ static constexpr int16 VIEW_HEIGHT = 300;
++ static constexpr uint16_t VIEW_BACKGROUND_OPA = 127;
++ static constexpr uint16_t VIEW_BORDER_RADIUS = 5;
++ static constexpr uint16_t BORDER_OPA = 127;
++ static constexpr uint16_t BORDER_WIDTH = 20;
++
++ static constexpr uint16_t TITLE_LABEL_DEFAULT_HEIGHT = 30;
++ static constexpr uint16_t FONT_DEFAULT_SIZE = 20;
++ static constexpr uint16_t VIEW_DISTANCE_TO_LEFT_SIDE = 48;
++ static constexpr uint16_t TEXT_DISTANCE_TO_LEFT_SIDE = 50;
++ static constexpr uint16_t TEXT_DISTANCE_TO_TOP_SIDE = 11;
++ static constexpr uint16_t BUTTON_LABEL_SIZE = 26;
++ static constexpr uint8_t BUTTON_STYLE_BORDER_RADIUS_VALUE = 20;
++ static constexpr uint32 BUTTON_STYLE_BACKGROUND_COLOR_VALUE = 0xff0b1928;
++ static constexpr uint16_t BUTTON_WIDHT2 = 230;
++ static constexpr uint16_t BUTTON_HEIGHT2 = 80;
++
++ // 字体大小
++ static constexpr uint16_t PERCENT_FONT_SIZE = 25;
++
++ static constexpr uint16_t MATH_ZERO = 0;
++
++ static BloodOxygenView *g_pMainView = nullptr;
++ static ImageAnimatorInfo g_imageAnimatorInfo_new[31] = {
++ {PNG_BLOOD_FLOW_IMAGE_0, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_BLOOD_FLOW_IMAGE_1, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_BLOOD_FLOW_IMAGE_2, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_BLOOD_FLOW_IMAGE_3, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_BLOOD_FLOW_IMAGE_4, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_BLOOD_FLOW_IMAGE_5, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_BLOOD_FLOW_IMAGE_6, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_BLOOD_FLOW_IMAGE_7, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_BLOOD_FLOW_IMAGE_8, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_BLOOD_FLOW_IMAGE_9, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_BLOOD_FLOW_IMAGE_10, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_BLOOD_FLOW_IMAGE_11, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_BLOOD_FLOW_IMAGE_12, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_BLOOD_FLOW_IMAGE_13, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_BLOOD_FLOW_IMAGE_14, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_BLOOD_FLOW_IMAGE_15, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_BLOOD_FLOW_IMAGE_16, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_BLOOD_FLOW_IMAGE_17, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_BLOOD_FLOW_IMAGE_18, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_BLOOD_FLOW_IMAGE_19, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_BLOOD_FLOW_IMAGE_20, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_BLOOD_FLOW_IMAGE_21, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_BLOOD_FLOW_IMAGE_22, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_BLOOD_FLOW_IMAGE_23, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_BLOOD_FLOW_IMAGE_24, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_BLOOD_FLOW_IMAGE_25, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_BLOOD_FLOW_IMAGE_26, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_BLOOD_FLOW_IMAGE_27, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_BLOOD_FLOW_IMAGE_28, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_BLOOD_FLOW_IMAGE_29, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ {PNG_BLOOD_FLOW_IMAGE_30, {IMAGE_POSITION_X, IMAGE_POSITION_Y}, IMAGE_SIZE, IMAGE_SIZE, IMG_SRC_FILE_PATH},
++ };
++
++ BloodOxygenView::BloodOxygenView()
++ {
++ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::BloodOxygenView");
++ imageViewMain = nullptr;
++ imageViewProgress = nullptr;
++ group = nullptr;
++ percent = nullptr;
++ testButton = nullptr;
++ circleProgress = nullptr;
++ imageAnimator = nullptr;
++ g_pMainView = this;
++ bloodbandoff = new BloodBandoffView();
++ if (bloodbandoff == nullptr)
++ {
++ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new BloodBandoffView fail");
++ }
+ }
- UICircleProgress *BloodOxygenView::GetCircleProgress()
- {
- return circleProgress;
- }
-
- UILabelButton *BloodOxygenView::CreateAndSetUIButton(const char *title)
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::CreateAndSetUIButton");
- UILabelButton* btn = new UILabelButton();
- if (btn == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new UILabelButton fail");
- return nullptr;
+
- btn->SetPosition(TESTBUTTON_X, TESTBUTTON_Y, BUTTON_WIDHT2, BUTTON_HEIGHT2);
- btn->SetText(title);
- btn->SetTextColor(Color::Red());
- btn->SetFont(DEFAULT_VECTOR_FONT_FILENAME, BUTTON_LABEL_SIZE);
- btn->SetAlign(TEXT_ALIGNMENT_CENTER);
- btn->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::RELEASED);
- btn->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::PRESSED);
- btn->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::INACTIVE);
- btn->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::RELEASED);
- btn->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::PRESSED);
- btn->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::INACTIVE);
- UIView::OnClickListener* clickLeftListener = (UIView::OnClickListener*)OHOS::BloodOxygenPresenter::GetInstance();
- if (clickLeftListener == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new clickLeftListener fail");
- return nullptr;
- }
- btn->SetOnClickListener(clickLeftListener);
- return btn;
- }
++ BloodOxygenView::~BloodOxygenView()
++ {
++ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::~BloodOxygenView");
++ group->RemoveAll();
++ delete imageViewMain;
++ delete imageViewProgress;
++ delete group;
++ delete testButton;
++ delete percent;
++ delete circleProgress;
++ delete imageAnimator;
++ delete bloodbandoff;
++ imageViewMain = nullptr;
++ imageViewProgress = nullptr;
++ group = nullptr;
++ percent = nullptr;
++ testButton = nullptr;
++ circleProgress = nullptr;
++ imageAnimator = nullptr;
++ g_pMainView = nullptr;
++ bloodbandoff = nullptr;
+ }
-
- bool BloodOxygenView::SetOnDragListener()
- {
- UIView::OnDragListener *dragListener = (UIView::OnDragListener*)OHOS::BloodOxygenPresenter::GetInstance();
- if (dragListener == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnDragListener fail");
- return false;
+
- group->SetDraggable(true);
- group->SetTouchable(true);
- group->SetOnDragListener(dragListener);
- return true;
- }
++ BloodOxygenView *BloodOxygenView::GetInstance(void)
++ {
++ return g_pMainView;
+ }
- UIView *BloodOxygenView::CreateAndSetUIView(int16 x, int16 y) const
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::CreateAndSetUIView");
- UIView* view = new UIView();
- if (view == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new View fail");
- return nullptr;
- }
- if (x > VIEW_MAX_X || x < VIEW_MIN_X) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::X error");
- return nullptr;
- }
- if (y < VIEW_MIN_Y || y >VIEW_MAX_Y) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::Y error");
- return nullptr;
+
- view->SetStyle(STYLE_BACKGROUND_COLOR, Color::Green().full);
- view->SetStyle(STYLE_BACKGROUND_OPA, VIEW_BACKGROUND_OPA); // 127 : background opacity
- view->SetStyle(STYLE_BORDER_RADIUS, VIEW_BORDER_RADIUS); // 5 : radius value
- view->SetStyle(STYLE_BORDER_COLOR, Color::Gray().full);
- view->SetStyle(STYLE_BORDER_OPA, BORDER_OPA); // 127 : border opacity
- view->SetStyle(STYLE_BORDER_WIDTH, BORDER_WIDTH); // 20 : border width
- view->SetStyle(STYLE_PADDING_LEFT, MATH_ZERO);
- view->SetStyle(STYLE_PADDING_RIGHT, MATH_ZERO);
- view->SetStyle(STYLE_PADDING_TOP, MATH_ZERO);
- view->SetStyle(STYLE_PADDING_BOTTOM, MATH_ZERO);
- view->SetStyle(STYLE_MARGIN_LEFT, MATH_ZERO);
- view->SetStyle(STYLE_MARGIN_RIGHT, MATH_ZERO);
- view->SetStyle(STYLE_MARGIN_TOP, MATH_ZERO);
- view->SetStyle(STYLE_MARGIN_BOTTOM, MATH_ZERO);
-
- view->SetPosition(x, VIEW_HEIGHT - y);
- view->SetStyle(STYLE_BORDER_WIDTH, MATH_ZERO);
- view->SetStyle(STYLE_BORDER_RADIUS, MATH_ZERO); // 2 : half width 10 : offset
- view->Resize(VIEW_WIDTH, y);
- return view;
- }
++ UILabel *BloodOxygenView::GetPercent()
++ {
++ return percent;
+ }
- UICircleProgress *BloodOxygenView::CreateAndSetUICircleProgress()
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::CreateAndSetUICircleProgress");
- UICircleProgress *circle = new UICircleProgress();
- circle->SetPosition(CIRCLE_PROGRESS_POSITION_X, CIRCLE_PROGRESS_POSITION_Y,
- CIRCLE_PROGRESS_POSITION_WIDTH, CIRCLE_PROGRESS_POSITION_HEIGHT);
- circle->SetCenterPosition(CIRCLE_PROGRESS_CENTER_X, CIRCLE_PROGRESS_CENTER_Y);
- circle->SetRadius(CIRCLE_PROGRESS_RADIUS);
- circle->SetValue(CIRCLE_PROGRESS_VALUE);
- circle->SetBackgroundStyle(STYLE_LINE_WIDTH,
- circle->GetBackgroundStyle(STYLE_LINE_WIDTH) + CIRCLE_PROGRESS_WIDTH);
- circle->SetForegroundStyle(STYLE_LINE_WIDTH,
- circle->GetForegroundStyle(STYLE_LINE_WIDTH) + CIRCLE_PROGRESS_WIDTH);
- circle->SetStyle(STYLE_PADDING_LEFT, CIRCLE_PROGRESS_LEFT);
- circle->SetStyle(STYLE_PADDING_TOP, CIRCLE_PROGRESS_TOP);
- circle->SetStartAngle(CIRCLE_PROGRESS_STARTANGLE);
- circle->SetEndAngle(CIRCLE_PROGRESS_ENDANGLE);
- circle->SetImage(nullptr, PNG_PROGRESS_BAR_TMAGE);
- circle->SetLineColor(Color::Black());
-
- return circle;
- }
-
- bool BloodOxygenView::InitImageDisplay()
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::InitImageDisplay");
- imageViewMain = new UIImageView();
- if (imageViewMain == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new UIImageView fail");
- return false;
- }
- imageViewMain->SetPosition(MATH_ZERO, MATH_ZERO); // 30 : offset
- imageViewMain->SetSrc(PNG_BLOODOXYGEN_IMAGE_PATH);
- group->Add(imageViewMain);
-
- imageAnimator = new UIImageAnimatorView();
- if (imageAnimator == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new UIImageAnimatorView fail");
- return false;
- }
- imageAnimator->SetImageAnimatorSrc(g_imageAnimatorInfo_new, IMAGEANIMATORVIEW_SIZE, IMAGEANIMATORVIEW_SPEED);
- imageAnimator->Start();
- imageAnimator->SetRepeat(true);
- group->Add(imageAnimator);
-
- imageViewProgress = new UIImageView();
- if (imageViewProgress == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new UIImageView fail");
- return false;
+
- imageViewProgress->SetPosition(IMAGE_PROGRESS_POSITION_X, IMAGE_PROGRESS_POSITION_Y); // 30 : offset
- imageViewProgress->SetSrc(PNG_PROGRESS_BAR_TMAGE);
- group->Add(imageViewProgress);
++ UIViewGroup *BloodOxygenView::GetBloodOxygenGroup()
++ {
++ return group;
+ }
- return true;
- }
+
- void BloodOxygenView::OnStart()
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnStart");
- View<BloodOxygenPresenter>::OnStart();
++ UILabelButton *BloodOxygenView::GetTestButton()
++ {
++ return testButton;
++ }
+
- group = new UIViewGroup();
- if (group == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new group fail");
- return;
++ UICircleProgress *BloodOxygenView::GetCircleProgress()
++ {
++ return circleProgress;
++ }
+
++ UILabelButton *BloodOxygenView::CreateAndSetUIButton(const char *title)
++ {
++ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::CreateAndSetUIButton");
++ UILabelButton *btn = new UILabelButton();
++ if (btn == nullptr)
++ {
++ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new UILabelButton fail");
++ return nullptr;
++ }
++ btn->SetPosition(TESTBUTTON_X, TESTBUTTON_Y, BUTTON_WIDHT2, BUTTON_HEIGHT2);
++ btn->SetText(title);
++ btn->SetTextColor(Color::White());
++ btn->SetFont(DEFAULT_VECTOR_FONT_FILENAME, BUTTON_LABEL_SIZE);
++ btn->SetAlign(TEXT_ALIGNMENT_CENTER);
++ btn->SetStyle(STYLE_BACKGROUND_COLOR, 0xffCD492C);
++ btn->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::INACTIVE);
++#if 0
++ btn->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::RELEASED);
++ btn->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::PRESSED);
++ btn->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::INACTIVE);
++ btn->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::RELEASED);
++ btn->SetStyleForState(STYLE_BACKGROUND_COLOR, BUTTON_STYLE_BACKGROUND_COLOR_VALUE, UIButton::PRESSED);
++#endif
++ UIView::OnClickListener *clickLeftListener = (UIView::OnClickListener *)OHOS::BloodOxygenPresenter::GetInstance();
++ if (clickLeftListener == nullptr)
++ {
++ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new clickLeftListener fail");
++ return nullptr;
++ }
++ btn->SetOnClickListener(clickLeftListener);
++ return btn;
++ }
+
- group->SetPosition(MATH_ZERO, MATH_ZERO);
- group->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);
++ bool BloodOxygenView::SetOnDragListener()
++ {
++ UIView::OnDragListener *dragListener = (UIView::OnDragListener *)OHOS::BloodOxygenPresenter::GetInstance();
++ if (dragListener == nullptr)
++ {
++ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnDragListener fail");
++ return false;
++ }
++ group->SetDraggable(true);
++ group->SetTouchable(true);
++ group->SetOnDragListener(dragListener);
++ return true;
+ }
- //增加按键监听
- RootView::OnKeyActListener*keyactListener = (RootView::OnKeyActListener*)OHOS::BloodOxygenPresenter::GetInstance();
- RootView::GetInstance()->SetOnKeyActListener(keyactListener);
+
- if (InitImageDisplay() == false) {
- return;
++ UIView *BloodOxygenView::CreateAndSetUIView(int16 x, int16 y) const
++ {
++ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::CreateAndSetUIView");
++ UIView *view = new UIView();
++ if (view == nullptr)
++ {
++ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new View fail");
++ return nullptr;
++ }
++ if (x > VIEW_MAX_X || x < VIEW_MIN_X)
++ {
++ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::X error");
++ return nullptr;
++ }
++ if (y < VIEW_MIN_Y || y > VIEW_MAX_Y)
++ {
++ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::Y error");
++ return nullptr;
++ }
++ view->SetStyle(STYLE_BACKGROUND_COLOR, Color::Green().full);
++ view->SetStyle(STYLE_BACKGROUND_OPA, VIEW_BACKGROUND_OPA); // 127 : background opacity
++ view->SetStyle(STYLE_BORDER_RADIUS, VIEW_BORDER_RADIUS); // 5 : radius value
++ view->SetStyle(STYLE_BORDER_COLOR, Color::Gray().full);
++ view->SetStyle(STYLE_BORDER_OPA, BORDER_OPA); // 127 : border opacity
++ view->SetStyle(STYLE_BORDER_WIDTH, BORDER_WIDTH); // 20 : border width
++ view->SetStyle(STYLE_PADDING_LEFT, MATH_ZERO);
++ view->SetStyle(STYLE_PADDING_RIGHT, MATH_ZERO);
++ view->SetStyle(STYLE_PADDING_TOP, MATH_ZERO);
++ view->SetStyle(STYLE_PADDING_BOTTOM, MATH_ZERO);
++ view->SetStyle(STYLE_MARGIN_LEFT, MATH_ZERO);
++ view->SetStyle(STYLE_MARGIN_RIGHT, MATH_ZERO);
++ view->SetStyle(STYLE_MARGIN_TOP, MATH_ZERO);
++ view->SetStyle(STYLE_MARGIN_BOTTOM, MATH_ZERO);
++
++ view->SetPosition(x, VIEW_HEIGHT - y);
++ view->SetStyle(STYLE_BORDER_WIDTH, MATH_ZERO);
++ view->SetStyle(STYLE_BORDER_RADIUS, MATH_ZERO); // 2 : half width 10 : offset
++ view->Resize(VIEW_WIDTH, y);
++ return view;
++ }
+
- if (SetOnDragListener() == false) {
- return;
++ UICircleProgress *BloodOxygenView::CreateAndSetUICircleProgress()
++ {
++ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::CreateAndSetUICircleProgress");
++ UICircleProgress *circle = new UICircleProgress();
++ circle->SetPosition(CIRCLE_PROGRESS_POSITION_X, CIRCLE_PROGRESS_POSITION_Y,
++ CIRCLE_PROGRESS_POSITION_WIDTH, CIRCLE_PROGRESS_POSITION_HEIGHT);
++ circle->SetCenterPosition(CIRCLE_PROGRESS_CENTER_X, CIRCLE_PROGRESS_CENTER_Y);
++ circle->SetRadius(CIRCLE_PROGRESS_RADIUS);
++ circle->SetValue(CIRCLE_PROGRESS_VALUE);
++ circle->SetBackgroundStyle(STYLE_LINE_WIDTH,
++ circle->GetBackgroundStyle(STYLE_LINE_WIDTH) + CIRCLE_PROGRESS_WIDTH);
++ circle->SetForegroundStyle(STYLE_LINE_WIDTH,
++ circle->GetForegroundStyle(STYLE_LINE_WIDTH) + CIRCLE_PROGRESS_WIDTH);
++ circle->SetStyle(STYLE_PADDING_LEFT, CIRCLE_PROGRESS_LEFT);
++ circle->SetStyle(STYLE_PADDING_TOP, CIRCLE_PROGRESS_TOP);
++ circle->SetStartAngle(CIRCLE_PROGRESS_STARTANGLE);
++ circle->SetEndAngle(CIRCLE_PROGRESS_ENDANGLE);
++ circle->SetImage(nullptr, PNG_PROGRESS_BAR_TMAGE);
++ circle->SetLineColor(Color::Black());
++
++ return circle;
+ }
+
- circleProgress = CreateAndSetUICircleProgress();
- if (circleProgress == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new circleProgress fail");
- return;
++ bool BloodOxygenView::InitImageDisplay()
++ {
++ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::InitImageDisplay");
++ imageViewMain = new UIImageView();
++ if (imageViewMain == nullptr)
++ {
++ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new UIImageView fail");
++ return false;
++ }
++ imageViewMain->SetPosition(MATH_ZERO, MATH_ZERO); // 30 : offset
++ imageViewMain->SetSrc(PNG_BLOODOXYGEN_IMAGE_PATH);
++ group->Add(imageViewMain);
++
++ imageAnimator = new UIImageAnimatorView();
++ if (imageAnimator == nullptr)
++ {
++ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new UIImageAnimatorView fail");
++ return false;
++ }
++ imageAnimator->SetImageAnimatorSrc(g_imageAnimatorInfo_new, IMAGEANIMATORVIEW_SIZE, IMAGEANIMATORVIEW_SPEED);
++ imageAnimator->Start();
++ imageAnimator->SetRepeat(true);
++ group->Add(imageAnimator);
++
++ imageViewProgress = new UIImageView();
++ if (imageViewProgress == nullptr)
++ {
++ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new UIImageView fail");
++ return false;
++ }
++ imageViewProgress->SetPosition(IMAGE_PROGRESS_POSITION_X, IMAGE_PROGRESS_POSITION_Y); // 30 : offset
++ imageViewProgress->SetSrc(PNG_PROGRESS_BAR_TMAGE);
++ group->Add(imageViewProgress);
++
++ return true;
+ }
+
- group->Add(circleProgress);
++ void BloodOxygenView::OnStart()
++ {
++ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnStart");
++ View<BloodOxygenPresenter>::OnStart();
++
++ group = new UIViewGroup();
++ if (group == nullptr)
++ {
++ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new group fail");
++ return;
++ }
++ group->SetPosition(MATH_ZERO, MATH_ZERO);
++ group->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);
++
++ // 增加按键监听
++ RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::BloodOxygenPresenter::GetInstance();
++ RootView::GetInstance()->SetOnKeyActListener(keyactListener);
++
++ if (InitImageDisplay() == false)
++ {
++ return;
++ }
++
++ if (SetOnDragListener() == false)
++ {
++ return;
++ }
++
++ circleProgress = CreateAndSetUICircleProgress();
++ if (circleProgress == nullptr)
++ {
++ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new circleProgress fail");
++ return;
++ }
++ group->Add(circleProgress);
++
++ percent = new UILabel();
++ if (percent == nullptr)
++ {
++ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new Label fail");
++ return;
++ }
++ percent->SetPosition(LABEL_PERCENT_POSITION_X, LABEL_PERCENT_POSITION_Y,
++ VIEW_DISTANCE_TO_LEFT_SIDE, TITLE_LABEL_DEFAULT_HEIGHT);
++ percent->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);
++ percent->SetText("%97");
++ percent->SetFont(DEFAULT_VECTOR_FONT_FILENAME, PERCENT_FONT_SIZE);
++ percent->SetTextColor(Color::White());
++ group->Add(percent);
++
++ testButton = CreateAndSetUIButton("开始检测");
++ if (testButton == nullptr)
++ {
++ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new Button fail");
++ return;
++ }
++ group->Add(testButton);
++
++ if (OHOS::BloodOxygenModel::GetInstance()->GetBloodOxygenViewStatus() == true)
++ {
++ testButton->SetTouchable(false);
++ percent->SetText("");
++ }
++
++ BloodBandoffView::GetInstance()->CreateUIViewGroup();
++
++ RootView::GetInstance()->Add(group);
++ RootView::GetInstance()->Add(BloodBandoffView::GetInstance()->GetBandoffViewGroup());
++ BloodBandoffView::GetInstance()->GetBandoffViewGroup()->SetVisible(false);
+ }
- percent = new UILabel();
- if (percent == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new Label fail");
- return;
+
- percent->SetPosition(LABEL_PERCENT_POSITION_X, LABEL_PERCENT_POSITION_Y,
- VIEW_DISTANCE_TO_LEFT_SIDE, TITLE_LABEL_DEFAULT_HEIGHT);
- percent->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);
- percent->SetText("%97");
- percent->SetFont(DEFAULT_VECTOR_FONT_FILENAME, PERCENT_FONT_SIZE);
- percent->SetTextColor(Color::Red());
- group->Add(percent);
-
- testButton = CreateAndSetUIButton("测试");
- if (testButton == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::new Button fail");
++ void BloodOxygenView::OnSetUpView()
++ {
++ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnSetUpView");
++ View<BloodOxygenPresenter>::OnSetUpView();
++ Draw();
+ }
- group->Add(testButton);
++
++ void BloodOxygenView::OnTearDownView()
++ {
++ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnTearDownView");
++ View<BloodOxygenPresenter>::OnTearDownView();
+ return;
+ }
- if (OHOS::BloodOxygenModel::GetInstance()->GetBloodOxygenViewStatus() == true) {
- testButton->SetTouchable(false);
- percent->SetText("");
+
-
- BloodBandoffView::GetInstance()->CreateUIViewGroup();
-
- RootView::GetInstance()->Add(group);
- RootView::GetInstance()->Add(BloodBandoffView::GetInstance()->GetBandoffViewGroup());
- BloodBandoffView::GetInstance()->GetBandoffViewGroup()->SetVisible(false);
- }
-
- void BloodOxygenView::OnSetUpView()
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnSetUpView");
- View<BloodOxygenPresenter>::OnSetUpView();
- Draw();
- }
-
-
- void BloodOxygenView::OnTearDownView()
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnTearDownView");
- View<BloodOxygenPresenter>::OnTearDownView();
- return;
- }
-
- void BloodOxygenView::OnStop()
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnStop");
- View<BloodOxygenPresenter>::OnStop();
- RootView::GetInstance()->RemoveAll();
- return;
- }
++ void BloodOxygenView::OnStop()
++ {
++ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BloodOxygenView::OnStop");
++ View<BloodOxygenPresenter>::OnStop();
++ RootView::GetInstance()->RemoveAll();
++ return;
+ }
+}
--- /dev/null
- #include "blood/include/BloodView.h"
+/*
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
+ * Description: MainViewSample
+ * Author:
+ * Create:
+ */
+
+#ifndef MAIN_VIEW_SAMPLE_H
+#define MAIN_VIEW_SAMPLE_H
+
+#include <string>
+#include "View.h"
+#include "window/window.h"
+#include "components/root_view.h"
+#include "swipe_effect/zoom_effect.h"
+#include "BaseView.h"
+#include "ChangeSliceListener.h"
+#include "font/ui_font.h"
+#include "graphic_config.h"
+#include "ModelListenerSample.h"
+#include "ScreenModels.h"
+#include "ActivityWeekView.h"
+#include "compass/include/CompassControlView.h"
+#include "MainClockView.h"
+#include "PlayersView.h"
+#include "MainPresenterSample.h"
+#include "HeartRateView.h"
+#include "components/ui_card_page.h"
+#include "PullUpDownView.h"
+#include "components/ui_cross_view.h"
+#include "dial/include/Digital_clockView.h"
- BloodView *bloodView{nullptr};
++#include "blood/include/BloodCardView.h"
+#include "traing/include/TraingView.h"
+#include "ApplistCardView.h"
+#include "weather/include/WeatherControlView.h"
+#include "message/include/MessageCardView.h"
+namespace OHOS
+{
+ class MainPresenterSample;
+ class MainViewSample : public View<MainPresenterSample>
+ {
+ public:
+ MainViewSample();
+ virtual ~MainViewSample();
+ static MainViewSample *GetInstance(void);
+ void OnStart() override;
+ void OnSetUpView() override;
+ void OnTearDownView() override;
+ void OnStop() override;
+ UICardPage *InitWatchFacePage(void);
+ UICardPage *InitHeartRatePage(void);
+ UICardPage *InitActivityPage(void);
+ UICardPage *InitCompassPage(void);
+ UICardPage *InitMusicPlayerPage(void);
+ UICardPage *InitBloodOxygenPage(void);
+ UICardPage *InitWeatherPage(void);
+ UICardPage *InitTrainingPage(void);
+ UICardPage *InitApplistPage(void);
+ void AnimatorStart(int pageIndex);
+ void AnimatorStop(void);
+ uint16_t GetHorCurrentPage() const
+ {
+ return mainSwipeGroup->GetCurrentPageId(UISwipeView::HORIZONTAL); // 0: horizontal; 1: vertical
+ }
+
+ UIView *GetMainViewGroup(void) const
+ {
+ return mainSwipeGroup;
+ }
+
+ bool IsMainView(void);
+ void SetDragFg(bool continFg);
+ bool GetDragFg(void);
+
+ private:
+ int16_t maxPage{0};
+ bool continuDragFg{false};
+ PullUpDownView *dropDownView{nullptr};
+ /* -------------------------------------------------------------------------- */
+ MessageCardView *messageView{nullptr};
+ UILabel *MessageLable = nullptr;
+ UIList *Messagelist = nullptr;
+ IconAdapter *list1adapter_ = nullptr;
+ List<IconItemNode *> *Messagelistdate = nullptr;
+ /* -------------------------------------------------------------------------- */
+ Digital_clockView *mainClockView{nullptr};
+ ActivityWeekView *activityWeekView{nullptr};
+ PlayersView *playersView{nullptr};
+ CompassControlView *compassControlView{nullptr};
+ HeartRateView *heartRateView{nullptr};
+ Digital_clockView *dialView{nullptr};
++ BloodCardView *bloodView{nullptr};
+ WeatherControlView *weatherControlView{nullptr};
+ TraingView *traingView{nullptr};
+ ApplistCardView *applistCardView{nullptr};
+ /* -------------------------------------------------------------------------- */
+ UICardPage *recordCard[MAX_CARD]{nullptr};
+ bool pageStatus[MAX_CARD]{false};
+ UICrossView *mainSwipeGroup{nullptr};
+ ZoomEffect *callback{nullptr};
+
+ bool HorizontalViewInit(void);
+ void VerticalViewInit(void);
+ void VertViewLoad(void);
+ void HorViewLoad(void);
+ UICardPage *CreatePage(int32_t cardId);
+ };
+} // namespace OHOS
+#endif // MAIN_VIEW_SAMPLE_H
--- /dev/null
- messageView->PreLoad();
+/*
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
+ * Description: MainViewSample
+ * Author:
+ * Create: 2021-10-18
+ */
+#include "wearable_log.h"
+#include "MainViewSample.h"
+#include "graphic_service.h"
+
+namespace OHOS
+{
+
+ static MainViewSample *g_pMainView = nullptr;
+ static constexpr uint16_t MESLABLE_X_TMP = 177;
+ static constexpr uint16_t MESLABLE_Y_TMP = 212;
+ static constexpr uint16_t MESLABLE_WIDTH_TMP = 100;
+ static constexpr uint16_t MESLABLE_HEIGHT_TMP = 30;
+ static constexpr uint8_t FONT_SIZE_TMP = 24;
+ static constexpr uint8_t PULL_MIDDLE_VIEW_OPA = 0;
+
+ struct MainViewMapper
+ {
+ CardId id;
+ UICardPage *(MainViewSample::*func)(void);
+ };
+
+ static const MainViewMapper PageMapper[] = {
+ {NEW_DAIL, &MainViewSample::InitWatchFacePage},
+ {HEART_RATE, &MainViewSample::InitHeartRatePage},
+ {BloodOxygen, &MainViewSample::InitBloodOxygenPage},
+ {TRAINING, &MainViewSample::InitTrainingPage},
+ {COMPASS, &MainViewSample::InitCompassPage},
+ {WEATHER, &MainViewSample::InitWeatherPage},
+ {PLAYER, &MainViewSample::InitMusicPlayerPage},
+#if 0
+ {APPLIST,&MainViewSample::InitApplistPage}
+#endif
+ };
+
+ MainViewSample::MainViewSample()
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::MainViewSample");
+ g_pMainView = this;
+ }
+
+ MainViewSample::~MainViewSample()
+ {
+ dropDownView->ClearBackgroundBlur();
+ messageView->ClearBackgroundBlur();
+
+ for (int32_t i = 0; i < maxPage; i++)
+ {
+ recordCard[i] = nullptr;
+ pageStatus[i] = false;
+ }
+ mainSwipeGroup->RemoveAll();
+ /* -------------------------------------------------------------------------- */
+#if 0
+ UIView *view = static_cast<UICrossView *>(MainViewSample::mainSwipeGroup)->GetChildrenHead();
+ while (view != nullptr)
+ {
+ printf("delete\n");
+ UIView *tempView = view;
+ view = view->GetNextSibling();
+ if (tempView->GetParent())
+ {
+ static_cast<UICardPage *>(tempView->GetParent())->Remove(tempView);
+ }
+ delete tempView;
+ }
+#endif
+ /* -------------------------------------------------------------------------- */
+ if (activityWeekView != nullptr)
+ {
+ delete activityWeekView;
+ activityWeekView = nullptr;
+ }
+
+ if (playersView != nullptr)
+ {
+ delete playersView;
+ playersView = nullptr;
+ }
+
+ if (heartRateView != nullptr)
+ {
+ delete heartRateView;
+ heartRateView = nullptr;
+ }
+ if (dropDownView != nullptr)
+ {
+ delete dropDownView;
+ dropDownView = nullptr;
+ }
+ /* -------------------------------------------------------------------------- */
+ if (messageView != nullptr)
+ {
+ messageView->RemoveAll();
+ delete messageView;
+ messageView = nullptr;
+ }
+ if (MessageLable != nullptr)
+ {
+ delete MessageLable;
+ MessageLable = nullptr;
+ }
+ if (Messagelist != nullptr)
+ {
+ delete Messagelist;
+ Messagelist = nullptr;
+ }
+ if (list1adapter_ != nullptr)
+ {
+ delete list1adapter_;
+ list1adapter_ = nullptr;
+ }
+ /* -------------------------------------------------------------------------- */
+ if (compassControlView != nullptr)
+ {
+ delete compassControlView;
+ compassControlView = nullptr;
+ }
+ /* -------------------------------------------------------------------------- */
+ if (mainClockView != nullptr)
+ {
+ // mainClockView->RemoveAll();
+ delete mainClockView;
+ mainClockView = nullptr;
+ }
+ if (dialView != nullptr)
+ {
+ delete dialView;
+ dialView = nullptr;
+ }
+ if (bloodView != nullptr)
+ {
+ // bloodView->RemoveAll();
+ delete bloodView;
+ bloodView = nullptr;
+ }
+ if (traingView != nullptr)
+ {
+ // traingView->RemoveAll();
+ delete traingView;
+ traingView = nullptr;
+ }
+ if (applistCardView != nullptr)
+ {
+ delete applistCardView;
+ applistCardView = nullptr;
+ }
+ /* -------------------------------------------------------------------------- */
+ if (mainSwipeGroup != nullptr)
+ {
+ delete mainSwipeGroup;
+ mainSwipeGroup = nullptr;
+ }
+
+ g_pMainView = nullptr;
+ }
+
+ MainViewSample *MainViewSample::GetInstance(void)
+ {
+ return g_pMainView;
+ }
+
+ void MainViewSample::OnStart()
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::OnStart");
+ View<MainPresenterSample>::OnStart();
+ BaseView::RootView(Color::Black().full);
+
+ mainSwipeGroup = new UICrossView();
+ if (mainSwipeGroup == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mainSwipeGroup new fail");
+ return;
+ }
+
+ if (callback == nullptr)
+ {
+ callback = new ZoomEffect();
+ if (callback == nullptr)
+ {
+ delete mainSwipeGroup;
+ mainSwipeGroup = nullptr;
+ GRAPHIC_LOGE("SwipeCallback new fail\n");
+ return;
+ }
+ }
+
+ HorizontalViewInit();
+ HorViewLoad();
+ VerticalViewInit();
+ VertViewLoad();
+ mainSwipeGroup->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
+ mainSwipeGroup->SetAnimatorTime(50); // 50: animator drag time(ms);
+ mainSwipeGroup->SetLoopState(true);
+ mainSwipeGroup->EnableScreenCap(true);
+ mainSwipeGroup->RegisterSwipeCallback(callback);
+ // 卡片切换
+ mainSwipeGroup->SetHorCurrentPage(mainClockView->GetViewIndex());
+ SetContainerView(mainSwipeGroup);
+ }
+
+ bool MainViewSample::HorizontalViewInit(void)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::HorizontalViewInit");
+ UISwipeView::OnSwipeListener *listener = nullptr;
+
+ maxPage = ScreenModels::GetInstance()->GetMaxCard();
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::HorizontalViewInit1");
+
+ for (int16_t i = 0; i < maxPage; i++)
+ {
+ recordCard[i] = CreatePage(i);
+ if (recordCard[i] == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainViewSample:: recordCard %d error", i);
+ return false;
+ }
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample:: recordCard[%d]:%p", i, recordCard[i]);
+ }
+
+ listener = static_cast<UISwipeView::OnSwipeListener *>(MainPresenterSample::GetInstance());
+ if (listener == nullptr)
+ {
+ return false;
+ }
+ MainPresenterSample::GetInstance()->setCallback(callback);
+ mainSwipeGroup->SetOnSwipeListener(listener);
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::InitPage over");
+ return true;
+ }
+
+ void MainViewSample::HorViewLoad(void)
+ {
+ for (int16_t i = 0; i < maxPage; i++)
+ {
+ mainSwipeGroup->HorAdd(recordCard[i]);
+ }
+ }
+
+ void MainViewSample::VerticalViewInit(void)
+ {
+ dropDownView = new PullUpDownView();
+ if (dropDownView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dropDownView new fail");
+ return;
+ }
+ dropDownView->PreLoad();
+ dropDownView->SetViewId("dropDownView");
+ dropDownView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
+ dropDownView->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
+#if 1
+ messageView = new MessageCardView();
+ if (messageView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "messageView new fail");
+ return;
+ }
+ if (MessageLable == nullptr)
+ {
+ MessageLable = new UILabel();
+ }
+ MessageLable->SetPosition(173, 52, 120, 35);
+ MessageLable->Resize(120, 35);
+ MessageLable->SetStyle(STYLE_TEXT_FONT, 30);
+ MessageLable->SetStyle(STYLE_LINE_HEIGHT, 36);
+ MessageLable->SetText("信息通知");
+ MessageLable->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS);
+ MessageLable->SetStyle(STYLE_TEXT_COLOR, Color::White().full);
+ MessageLable->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+ messageView->Add(MessageLable);
+ /* -------------------------------------------------------------------------- */
- bloodView = new BloodView();
++
+ messageView->SetViewId("messageView");
+ messageView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
+ messageView->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
++ messageView->PreLoad();
+ messageView->SetDraggable(false);
++ messageView->SetIntercept(true);
+#endif
+/* -------------------------------------------------------------------------- */
+#if 0
+ messageView = new UICardPage();
+ if (messageView == nullptr)
+ {
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "messageView new fail");
+ return;
+ }
+ }
+ messageView->SetPosition(0, 0);
+ messageView->SetWidth(Screen::GetInstance().GetWidth());
+ messageView->SetHeight(Screen::GetInstance().GetHeight());
+ messageView->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
+ messageView->SetViewId("messageView");
+ messageView->SetTouchable(true);
+ messageView->SetIntercept(true);
+ MessageLable = new UILabel();
+ if (MessageLable == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "messageLable new fail");
+ return;
+ }
+ MessageLable->SetPosition(MESLABLE_X_TMP, MESLABLE_Y_TMP, MESLABLE_WIDTH_TMP, MESLABLE_HEIGHT_TMP);
+ MessageLable->SetText("无消息");
+ MessageLable->SetAlign(TEXT_ALIGNMENT_CENTER);
+ MessageLable->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_SIZE_TMP);
+ MessageLable->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);
+ messageView->Add(MessageLable);
+#endif
+ }
+
+ void MainViewSample::VertViewLoad(void)
+ {
+ mainSwipeGroup->VerAdd(dropDownView, UICrossView::VPage::UP_PAGE);
+ mainSwipeGroup->VerAdd(messageView, UICrossView::VPage::DOWN_PAGE);
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::PullViewLoad::Pull View Load complete");
+ }
+
+ void MainViewSample::OnSetUpView()
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::OnSetUpView");
+ View<MainPresenterSample>::OnSetUpView();
+
+ // show timerView
+ Draw();
+ }
+
+ void MainViewSample::OnTearDownView()
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::OnTearDownView");
+ View<MainPresenterSample>::OnTearDownView();
+ return;
+ }
+
+ void MainViewSample::OnStop()
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::OnStop");
+ View<MainPresenterSample>::OnStop();
+ container_ = nullptr;
+
+ messageView->RemoveAll();
+ RootView::GetInstance()->ClearOnKeyActListener();
+ RootView::GetInstance()->RemoveAll();
+ return;
+ }
+
+ UICardPage *MainViewSample::InitWatchFacePage(void)
+ {
+ mainClockView = new Digital_clockView();
+ if (mainClockView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainClockView new fail");
+ return nullptr;
+ }
+ return mainClockView;
+ }
+
+ UICardPage *MainViewSample::InitHeartRatePage(void)
+ {
+ heartRateView = new HeartRateView();
+ if (heartRateView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "heartRateView new fail");
+ return nullptr;
+ }
+ return heartRateView;
+ }
+
+ UICardPage *MainViewSample::InitActivityPage(void)
+ {
+ activityWeekView = new ActivityWeekView();
+ if (activityWeekView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "activityWeekView new fail");
+ return nullptr;
+ }
+ return activityWeekView;
+ }
+ // 主界面音乐界面
+ UICardPage *MainViewSample::InitMusicPlayerPage(void)
+ {
+ playersView = new PlayersView();
+ if (playersView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersView new fail");
+ return nullptr;
+ }
+ return playersView;
+ }
+ // 主界面指南针卡片
+ UICardPage *MainViewSample::InitCompassPage(void)
+ {
+ compassControlView = new CompassControlView();
+ if (compassControlView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "compassControlView new fail");
+ return nullptr;
+ }
+ return compassControlView;
+ }
+ // 主界面血氧卡片
+ UICardPage *MainViewSample::InitBloodOxygenPage(void)
+ {
++ bloodView = new BloodCardView();
+ if (bloodView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BloodView new fail");
+ return nullptr;
+ }
+ return bloodView;
+ }
+ // 主界面训练卡片
+ UICardPage *MainViewSample::InitTrainingPage(void)
+ {
+ traingView = new TraingView();
+ if (traingView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "traingView new fail");
+ return nullptr;
+ }
+ return traingView;
+ }
+
+ // 主界面天气卡片
+ UICardPage *MainViewSample::InitWeatherPage(void)
+ {
+ weatherControlView = new WeatherControlView();
+ if (weatherControlView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mainweatherView new fail");
+ return nullptr;
+ }
+ return weatherControlView;
+ }
+
+ // 主界面功能列表界面
+ UICardPage *MainViewSample::InitApplistPage(void)
+ {
+ applistCardView = new ApplistCardView();
+ if (applistCardView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "applistCardView new fail");
+ return nullptr;
+ }
+ return applistCardView;
+ }
+
+ UICardPage *MainViewSample::CreatePage(int32_t StreamId)
+ {
+ uint16_t i;
+ UICardPage *view = nullptr;
+ int32_t cardId = ScreenModels::GetInstance()->GetCardPage(StreamId);
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CreatePage cardId:%d", cardId);
+ for (i = 0; i < sizeof(PageMapper) / sizeof(PageMapper[0]); i++)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainViewSample::CreatePage PageMapper[i].id=%d, cardId=%d, StreamId=%d", PageMapper[i].id, cardId, StreamId);
+ //("MainViewSample::CreatePage PageMapper[i].id=%d, cardId=%d, StreamId=%d\n", PageMapper[i].id, cardId, StreamId);
+ if (PageMapper[i].id == cardId)
+ {
+ view = (this->*(PageMapper[i].func))();
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CreatePage view:%p", view);
+ return view;
+ }
+ }
+
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreatePage view error!");
+ return nullptr;
+ }
+
+ void MainViewSample::AnimatorStart(int pageIndex)
+ {
+ if (heartRateView != nullptr && pageIndex == ScreenModels::GetInstance()->GetCardPage(HEART_RATE))
+ {
+ heartRateView->HeartbeatImageAnimatorStart();
+ }
+ if (dialView != nullptr && pageIndex == ScreenModels::GetInstance()->GetCardPage(NEW_DAIL))
+ {
+ dialView->ClockAnimatorStart();
+ }
+ }
+
+ void MainViewSample::AnimatorStop(void)
+ {
+ if (heartRateView != nullptr)
+ {
+ heartRateView->HeartbeatImageAnimatorStop();
+ }
+ if (dialView != nullptr)
+ {
+ dialView->ClockAnimatorStop();
+ }
+ }
+
+ bool MainViewSample::IsMainView(void)
+ {
+
+ if (mainSwipeGroup->GetCurrentPageId(0) == ScreenModels::GetInstance()->GetCardPage(NEW_DAIL) &&
+ mainSwipeGroup->GetCurrentPageId(1) == 1)
+ { // 0: horizontal; 1: vertical
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ void MainViewSample::SetDragFg(bool continFg)
+ {
+ continuDragFg = continFg;
+ }
+
+ bool MainViewSample::GetDragFg(void)
+ {
+ return continuDragFg;
+ }
+}
- /*\r
- * Copyright (c) 2020 Huawei Device Co., Ltd.\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
- \r
- #include "parameter.h"\r
- #include "param_adaptor.h"\r
- #include "hal_sys_param.h"\r
- #include "sysparam_errno.h"\r
- #include "utils_file.h"\r
- #include "ohos_errno.h"\r
- #include <ctype.h>\r
- #include <securec.h>\r
- \r
- static const char OHOS_PRODUCT_TYPE[] = {"****"};\r
- static const char OHOS_MANUFACTURE[] = {"****"};\r
- static const char OHOS_BRAND[] = {"****"};\r
- static const char OHOS_MARKET_NAME[] = {"OpenHarmony 3.2"};\r
- static const char OHOS_PRODUCT_SERIES[] = {"****"};\r
- static const char OHOS_PRODUCT_MODEL[] = {"****"};\r
- static const char OHOS_SOFTWARE_MODEL[] = {"****"};\r
- static const char OHOS_HARDWARE_MODEL[] = {"****"};\r
- static const char OHOS_HARDWARE_PROFILE[] = {"aout:true,display:true"};\r
- static const char OHOS_BOOTLOADER_VERSION[] = {"bootloader"};\r
- static const char OHOS_SECURITY_PATCH_TAG[] = {"2023/03/01"};\r
- static const char OHOS_ABI_LIST[] = {"****"};\r
- static const char OHOS_SERIAL[] = {"1234567890"}; // provided by OEM.\r
- const char g_roBuildOs[] = {"OpenHarmony"};\r
- const char g_roBuildVerShow[] = {"OpenHarmony 3.2.11.9"};\r
- const int g_roFirstApiLevel = 1;\r
- const char INCREMENTAL_VERSION[] = {"version"};\r
- const char BUILD_TYPE[] = {"BUILD_TYPE"};\r
- const char BUILD_USER[] = {"BUILD_USER"};\r
- const char BUILD_HOST[] = {"BUILD_HOST"};\r
- const char BUILD_TIME[] = {"BUILD_TIME"};\r
- const char BUILD_ROOTHASH[] = {"BUILD_ROOTHASH"};\r
- \r
- #define DATA_PATH "/user/res/"\r
- #define MAX_KEY_PATH 128\r
- \r
- static boolean IsValidChar(const char ch)\r
- {\r
- if (islower(ch) || isdigit(ch) || (ch == '_') || (ch == '.')) {\r
- return TRUE;\r
- }\r
- return FALSE;\r
- }\r
- \r
- static boolean IsValidValue(const char* value, unsigned int len)\r
- {\r
- if ((value == NULL) || (*value == '\0') || (strlen(value) >= len)) {\r
- return FALSE;\r
- }\r
- return TRUE;\r
- }\r
- \r
- static boolean IsValidKey(const char* key)\r
- {\r
- size_t keyLen = strlen(key);\r
- if (!IsValidValue(key, MAX_KEY_LEN)) {\r
- return FALSE;\r
- }\r
- if (key[0] == '.' || key[keyLen - 1] == '.') {\r
- return FALSE;\r
- }\r
- \r
- for (size_t i = 0; i < keyLen; i++) {\r
- if (key[i] == '.') {\r
- if (key[i - 1] == '.') {\r
- return FALSE;\r
- }\r
- continue;\r
- }\r
- if (!IsValidChar(key[i])) {\r
- return FALSE;\r
- }\r
- }\r
- \r
- return TRUE;\r
- }\r
- \r
- int GetSysParam(const char* key, char* value, unsigned int len)\r
- {\r
- if (key == NULL || (value == NULL) || (len > MAX_GET_VALUE_LEN)) {\r
- return EC_INVALID;\r
- }\r
- if (!IsValidKey(key)) {\r
- return EC_FAILURE;\r
- }\r
- \r
- unsigned int valueLen = 0;\r
- char* keyPath = (char *)malloc(MAX_KEY_PATH + 1);\r
- if (keyPath == NULL) {\r
- return EC_FAILURE;\r
- }\r
- \r
- if (sprintf_s(keyPath, MAX_KEY_PATH + 1, "%s%s", DATA_PATH, key) < 0) {\r
- free(keyPath);\r
- return EC_FAILURE;\r
- }\r
- \r
- if (UtilsFileStat(keyPath, &valueLen) != EC_SUCCESS) {\r
- return SYSPARAM_NOT_FOUND;\r
- }\r
- \r
- if (valueLen >= len) {\r
- return EC_INVALID;\r
- }\r
- \r
- int fd = UtilsFileOpen(keyPath, O_RDONLY_FS, 0);\r
- free(keyPath);\r
- keyPath = NULL;\r
- if (fd < 0) {\r
- return EC_FAILURE;\r
- }\r
- \r
- int ret = UtilsFileRead(fd, value, valueLen);\r
- UtilsFileClose(fd);\r
- fd = -1;\r
- if (ret < 0) {\r
- return EC_FAILURE;\r
- }\r
- value[valueLen] = '\0';\r
- \r
- return valueLen;\r
- }\r
- \r
- int SetSysParam(const char* key, const char* value)\r
- {\r
- if (!IsValidKey(key) || !IsValidValue(value, MAX_VALUE_LEN)) {\r
- return EC_INVALID;\r
- }\r
- \r
- char* keyPath = (char *)malloc(MAX_KEY_PATH + 1);\r
- if (keyPath == NULL) {\r
- return EC_FAILURE;\r
- }\r
- if (sprintf_s(keyPath, MAX_KEY_PATH + 1, "%s%s", DATA_PATH, key) < 0) {\r
- free(keyPath);\r
- return EC_FAILURE;\r
- }\r
- \r
- int fd = UtilsFileOpen(keyPath, O_RDWR_FS | O_CREAT_FS | O_TRUNC_FS, 0);\r
- free(keyPath);\r
- keyPath = NULL;\r
- if (fd < 0) {\r
- return EC_FAILURE;\r
- }\r
- \r
- int ret = UtilsFileWrite(fd, value, strlen(value));\r
- UtilsFileClose(fd);\r
- fd = -1;\r
- return (ret < 0) ? EC_FAILURE : EC_SUCCESS;\r
- }\r
- \r
- char* HalGetProductType(void)\r
- {\r
- char* value = (char*)malloc(strlen(OHOS_PRODUCT_TYPE) + 1);\r
- if (value == NULL) {\r
- return NULL;\r
- }\r
- if (strcpy_s(value, strlen(OHOS_PRODUCT_TYPE) + 1, OHOS_PRODUCT_TYPE) != 0) {\r
- free(value);\r
- return NULL;\r
- }\r
- return value;\r
- }\r
- \r
- char* HalGetManufacture(void)\r
- {\r
- char* value = (char*)malloc(strlen(OHOS_MANUFACTURE) + 1);\r
- if (value == NULL) {\r
- return NULL;\r
- }\r
- if (strcpy_s(value, strlen(OHOS_MANUFACTURE) + 1, OHOS_MANUFACTURE) != 0) {\r
- free(value);\r
- return NULL;\r
- }\r
- return value;\r
- }\r
- \r
- char* HalGetBrand(void)\r
- {\r
- char* value = (char*)malloc(strlen(OHOS_BRAND) + 1);\r
- if (value == NULL) {\r
- return NULL;\r
- }\r
- if (strcpy_s(value, strlen(OHOS_BRAND) + 1, OHOS_BRAND) != 0) {\r
- free(value);\r
- return NULL;\r
- }\r
- return value;\r
- }\r
- \r
- char* HalGetMarketName(void)\r
- {\r
- char* value = (char*)malloc(strlen(OHOS_MARKET_NAME) + 1);\r
- if (value == NULL) {\r
- return NULL;\r
- }\r
- if (strcpy_s(value, strlen(OHOS_MARKET_NAME) + 1, OHOS_MARKET_NAME) != 0) {\r
- free(value);\r
- return NULL;\r
- }\r
- return value;\r
- }\r
- \r
- char* HalGetProductSeries(void)\r
- {\r
- char* value = (char*)malloc(strlen(OHOS_PRODUCT_SERIES) + 1);\r
- if (value == NULL) {\r
- return NULL;\r
- }\r
- if (strcpy_s(value, strlen(OHOS_PRODUCT_SERIES) + 1, OHOS_PRODUCT_SERIES) != 0) {\r
- free(value);\r
- return NULL;\r
- }\r
- return value;\r
- }\r
- \r
- char* HalGetProductModel(void)\r
- {\r
- char* value = (char*)malloc(strlen(OHOS_PRODUCT_MODEL) + 1);\r
- if (value == NULL) {\r
- return NULL;\r
- }\r
- if (strcpy_s(value, strlen(OHOS_PRODUCT_MODEL) + 1, OHOS_PRODUCT_MODEL) != 0) {\r
- free(value);\r
- return NULL;\r
- }\r
- return value;\r
- }\r
- \r
- char* HalGetSoftwareModel(void)\r
- {\r
- char* value = (char*)malloc(strlen(OHOS_SOFTWARE_MODEL) + 1);\r
- if (value == NULL) {\r
- return NULL;\r
- }\r
- if (strcpy_s(value, strlen(OHOS_SOFTWARE_MODEL) + 1, OHOS_SOFTWARE_MODEL) != 0) {\r
- free(value);\r
- return NULL;\r
- }\r
- return value;\r
- }\r
- \r
- char* HalGetHardwareModel(void)\r
- {\r
- char* value = (char*)malloc(strlen(OHOS_HARDWARE_MODEL) + 1);\r
- if (value == NULL) {\r
- return NULL;\r
- }\r
- if (strcpy_s(value, strlen(OHOS_HARDWARE_MODEL) + 1, OHOS_HARDWARE_MODEL) != 0) {\r
- free(value);\r
- return NULL;\r
- }\r
- return value;\r
- }\r
- \r
- char* HalGetHardwareProfile(void)\r
- {\r
- char* value = (char*)malloc(strlen(OHOS_HARDWARE_PROFILE) + 1);\r
- if (value == NULL) {\r
- return NULL;\r
- }\r
- if (strcpy_s(value, strlen(OHOS_HARDWARE_PROFILE) + 1, OHOS_HARDWARE_PROFILE) != 0) {\r
- free(value);\r
- return NULL;\r
- }\r
- return value;\r
- }\r
- \r
- char* HalGetSerial(void)\r
- {\r
- char* value = (char*)malloc(strlen(OHOS_SERIAL) + 1);\r
- if (value == NULL) {\r
- return NULL;\r
- }\r
- if (strcpy_s(value, strlen(OHOS_SERIAL) + 1, OHOS_SERIAL) != 0) {\r
- free(value);\r
- return NULL;\r
- }\r
- return value;\r
- }\r
- \r
- char* HalGetBootloaderVersion(void)\r
- {\r
- char* value = (char*)malloc(strlen(OHOS_BOOTLOADER_VERSION) + 1);\r
- if (value == NULL) {\r
- return NULL;\r
- }\r
- if (strcpy_s(value, strlen(OHOS_BOOTLOADER_VERSION) + 1, OHOS_BOOTLOADER_VERSION) != 0) {\r
- free(value);\r
- return NULL;\r
- }\r
- return value;\r
- }\r
- \r
- char* HalGetSecurityPatchTag(void)\r
- {\r
- char* value = (char*)malloc(strlen(OHOS_SECURITY_PATCH_TAG) + 1);\r
- if (value == NULL) {\r
- return NULL;\r
- }\r
- if (strcpy_s(value, strlen(OHOS_SECURITY_PATCH_TAG) + 1, OHOS_SECURITY_PATCH_TAG) != 0) {\r
- free(value);\r
- return NULL;\r
- }\r
- return value;\r
- }\r
- \r
- char* HalGetAbiList(void)\r
- {\r
- char* value = (char*)malloc(strlen(OHOS_ABI_LIST) + 1);\r
- if (value == NULL) {\r
- return NULL;\r
- }\r
- if (strcpy_s(value, strlen(OHOS_ABI_LIST) + 1, OHOS_ABI_LIST) != 0) {\r
- free(value);\r
- return NULL;\r
- }\r
- return value;\r
- }\r
- \r
- int HalGetFirstApiVersion(void)\r
- {\r
- return g_roFirstApiLevel;\r
- }\r
+ /*
+ * Copyright (c) 2020 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ #include "parameter.h"
+ #include "param_adaptor.h"
+ #include "hal_sys_param.h"
+ #include "sysparam_errno.h"
+ #include "utils_file.h"
+ #include "ohos_errno.h"
+ #include <ctype.h>
+ #include <securec.h>
+
+ static const char OHOS_PRODUCT_TYPE[] = {"litewearable"};
+ static const char OHOS_MANUFACTURE[] = {"Tenxinbona"};
+ static const char OHOS_BRAND[] = {"KUMI"};
+ static const char OHOS_MARKET_NAME[] = {"KUMI WATCH Soar"};
+ static const char OHOS_PRODUCT_SERIES[] = {"KUMI WATCH Soar"};
+ static const char OHOS_PRODUCT_MODEL[] = {"Watch Soar"};
+ static const char OHOS_SOFTWARE_MODEL[] = {"1.0.0"};
+ static const char OHOS_HARDWARE_MODEL[] = {"FD230V10"};
+ static const char OHOS_HARDWARE_PROFILE[] = {"aout:true,display:true"};
+ static const char OHOS_BOOTLOADER_VERSION[] = {"bootloader"};
+ static const char OHOS_SECURITY_PATCH_TAG[] = {"2023/03/01"};
-static const char OHOS_ABI_LIST[] = {"riscv-liteos"};
++static const char OHOS_ABI_LIST[] = {"****"};
+ static const char OHOS_SERIAL[] = {"1234567890"}; // provided by OEM.
-const char g_roBuildOs[] = {"OpenHarmony-3.2.11.9"};
-const char g_roBuildVerShow[] = {"1.0.0"};
++const char g_roBuildOs[] = {"OpenHarmony"};
++const char g_roBuildVerShow[] = {"OpenHarmony 3.2.11.9"};
+ const int g_roFirstApiLevel = 1;
+ const char INCREMENTAL_VERSION[] = {"version"};
-const char BUILD_TYPE[] = {"release"};
-const char BUILD_USER[] = {"luozheng"};
-const char BUILD_HOST[] = {"linux"};
-const char BUILD_TIME[] = {"20240125"};
-const char BUILD_ROOTHASH[] = {"default"};
++const char BUILD_TYPE[] = {"BUILD_TYPE"};
++const char BUILD_USER[] = {"BUILD_USER"};
++const char BUILD_HOST[] = {"BUILD_HOST"};
++const char BUILD_TIME[] = {"BUILD_TIME"};
++const char BUILD_ROOTHASH[] = {"BUILD_ROOTHASH"};
+
+ #define DATA_PATH "/user/res/"
+ #define MAX_KEY_PATH 128
+
+ static boolean IsValidChar(const char ch)
+ {
+ if (islower(ch) || isdigit(ch) || (ch == '_') || (ch == '.')) {
+ return TRUE;
+ }
+ return FALSE;
+ }
+
+ static boolean IsValidValue(const char* value, unsigned int len)
+ {
+ if ((value == NULL) || (*value == '\0') || (strlen(value) >= len)) {
+ return FALSE;
+ }
+ return TRUE;
+ }
+
+ static boolean IsValidKey(const char* key)
+ {
+ size_t keyLen = strlen(key);
+ if (!IsValidValue(key, MAX_KEY_LEN)) {
+ return FALSE;
+ }
+ if (key[0] == '.' || key[keyLen - 1] == '.') {
+ return FALSE;
+ }
+
- for (int i = 0; i < keyLen; i++) {
++ for (size_t i = 0; i < keyLen; i++) {
+ if (key[i] == '.') {
+ if (key[i - 1] == '.') {
+ return FALSE;
+ }
+ continue;
+ }
+ if (!IsValidChar(key[i])) {
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+ }
+
+ int GetSysParam(const char* key, char* value, unsigned int len)
+ {
+ if (key == NULL || (value == NULL) || (len > MAX_GET_VALUE_LEN)) {
+ return EC_INVALID;
+ }
+ if (!IsValidKey(key)) {
+ return EC_FAILURE;
+ }
+
+ unsigned int valueLen = 0;
+ char* keyPath = (char *)malloc(MAX_KEY_PATH + 1);
+ if (keyPath == NULL) {
+ return EC_FAILURE;
+ }
+
+ if (sprintf_s(keyPath, MAX_KEY_PATH + 1, "%s%s", DATA_PATH, key) < 0) {
+ free(keyPath);
+ return EC_FAILURE;
+ }
+
+ if (UtilsFileStat(keyPath, &valueLen) != EC_SUCCESS) {
+ return SYSPARAM_NOT_FOUND;
+ }
+
+ if (valueLen >= len) {
+ return EC_INVALID;
+ }
+
+ int fd = UtilsFileOpen(keyPath, O_RDONLY_FS, 0);
+ free(keyPath);
+ keyPath = NULL;
+ if (fd < 0) {
+ return EC_FAILURE;
+ }
+
+ int ret = UtilsFileRead(fd, value, valueLen);
+ UtilsFileClose(fd);
+ fd = -1;
+ if (ret < 0) {
+ return EC_FAILURE;
+ }
+ value[valueLen] = '\0';
+
+ return valueLen;
+ }
+
+ int SetSysParam(const char* key, const char* value)
+ {
+ if (!IsValidKey(key) || !IsValidValue(value, MAX_VALUE_LEN)) {
+ return EC_INVALID;
+ }
+
+ char* keyPath = (char *)malloc(MAX_KEY_PATH + 1);
+ if (keyPath == NULL) {
+ return EC_FAILURE;
+ }
+ if (sprintf_s(keyPath, MAX_KEY_PATH + 1, "%s%s", DATA_PATH, key) < 0) {
+ free(keyPath);
+ return EC_FAILURE;
+ }
+
+ int fd = UtilsFileOpen(keyPath, O_RDWR_FS | O_CREAT_FS | O_TRUNC_FS, 0);
+ free(keyPath);
+ keyPath = NULL;
+ if (fd < 0) {
+ return EC_FAILURE;
+ }
+
+ int ret = UtilsFileWrite(fd, value, strlen(value));
+ UtilsFileClose(fd);
+ fd = -1;
+ return (ret < 0) ? EC_FAILURE : EC_SUCCESS;
+ }
+
+ char* HalGetProductType(void)
+ {
+ char* value = (char*)malloc(strlen(OHOS_PRODUCT_TYPE) + 1);
+ if (value == NULL) {
+ return NULL;
+ }
+ if (strcpy_s(value, strlen(OHOS_PRODUCT_TYPE) + 1, OHOS_PRODUCT_TYPE) != 0) {
+ free(value);
+ return NULL;
+ }
+ return value;
+ }
+
+ char* HalGetManufacture(void)
+ {
+ char* value = (char*)malloc(strlen(OHOS_MANUFACTURE) + 1);
+ if (value == NULL) {
+ return NULL;
+ }
+ if (strcpy_s(value, strlen(OHOS_MANUFACTURE) + 1, OHOS_MANUFACTURE) != 0) {
+ free(value);
+ return NULL;
+ }
+ return value;
+ }
+
+ char* HalGetBrand(void)
+ {
+ char* value = (char*)malloc(strlen(OHOS_BRAND) + 1);
+ if (value == NULL) {
+ return NULL;
+ }
+ if (strcpy_s(value, strlen(OHOS_BRAND) + 1, OHOS_BRAND) != 0) {
+ free(value);
+ return NULL;
+ }
+ return value;
+ }
+
+ char* HalGetMarketName(void)
+ {
+ char* value = (char*)malloc(strlen(OHOS_MARKET_NAME) + 1);
+ if (value == NULL) {
+ return NULL;
+ }
+ if (strcpy_s(value, strlen(OHOS_MARKET_NAME) + 1, OHOS_MARKET_NAME) != 0) {
+ free(value);
+ return NULL;
+ }
+ return value;
+ }
+
+ char* HalGetProductSeries(void)
+ {
+ char* value = (char*)malloc(strlen(OHOS_PRODUCT_SERIES) + 1);
+ if (value == NULL) {
+ return NULL;
+ }
+ if (strcpy_s(value, strlen(OHOS_PRODUCT_SERIES) + 1, OHOS_PRODUCT_SERIES) != 0) {
+ free(value);
+ return NULL;
+ }
+ return value;
+ }
+
+ char* HalGetProductModel(void)
+ {
+ char* value = (char*)malloc(strlen(OHOS_PRODUCT_MODEL) + 1);
+ if (value == NULL) {
+ return NULL;
+ }
+ if (strcpy_s(value, strlen(OHOS_PRODUCT_MODEL) + 1, OHOS_PRODUCT_MODEL) != 0) {
+ free(value);
+ return NULL;
+ }
+ return value;
+ }
+
+ char* HalGetSoftwareModel(void)
+ {
+ char* value = (char*)malloc(strlen(OHOS_SOFTWARE_MODEL) + 1);
+ if (value == NULL) {
+ return NULL;
+ }
+ if (strcpy_s(value, strlen(OHOS_SOFTWARE_MODEL) + 1, OHOS_SOFTWARE_MODEL) != 0) {
+ free(value);
+ return NULL;
+ }
+ return value;
+ }
+
+ char* HalGetHardwareModel(void)
+ {
+ char* value = (char*)malloc(strlen(OHOS_HARDWARE_MODEL) + 1);
+ if (value == NULL) {
+ return NULL;
+ }
+ if (strcpy_s(value, strlen(OHOS_HARDWARE_MODEL) + 1, OHOS_HARDWARE_MODEL) != 0) {
+ free(value);
+ return NULL;
+ }
+ return value;
+ }
+
+ char* HalGetHardwareProfile(void)
+ {
+ char* value = (char*)malloc(strlen(OHOS_HARDWARE_PROFILE) + 1);
+ if (value == NULL) {
+ return NULL;
+ }
+ if (strcpy_s(value, strlen(OHOS_HARDWARE_PROFILE) + 1, OHOS_HARDWARE_PROFILE) != 0) {
+ free(value);
+ return NULL;
+ }
+ return value;
+ }
+
+ char* HalGetSerial(void)
+ {
- unsigned char sn_buf[32] = {0};
- unsigned int len = 0;
- unsigned int ret = zh_get_sn(sn_buf,&len);
- char* value = (char*)malloc(strlen(sn_buf) + 1);
++ char* value = (char*)malloc(strlen(OHOS_SERIAL) + 1);
+ if (value == NULL) {
+ return NULL;
+ }
- if (strcpy_s(value, strlen(sn_buf) + 1, sn_buf) != 0) {
++ if (strcpy_s(value, strlen(OHOS_SERIAL) + 1, OHOS_SERIAL) != 0) {
+ free(value);
+ return NULL;
+ }
-
+ return value;
+ }
+
+ char* HalGetBootloaderVersion(void)
+ {
+ char* value = (char*)malloc(strlen(OHOS_BOOTLOADER_VERSION) + 1);
+ if (value == NULL) {
+ return NULL;
+ }
+ if (strcpy_s(value, strlen(OHOS_BOOTLOADER_VERSION) + 1, OHOS_BOOTLOADER_VERSION) != 0) {
+ free(value);
+ return NULL;
+ }
+ return value;
+ }
+
+ char* HalGetSecurityPatchTag(void)
+ {
+ char* value = (char*)malloc(strlen(OHOS_SECURITY_PATCH_TAG) + 1);
+ if (value == NULL) {
+ return NULL;
+ }
+ if (strcpy_s(value, strlen(OHOS_SECURITY_PATCH_TAG) + 1, OHOS_SECURITY_PATCH_TAG) != 0) {
+ free(value);
+ return NULL;
+ }
+ return value;
+ }
+
+ char* HalGetAbiList(void)
+ {
+ char* value = (char*)malloc(strlen(OHOS_ABI_LIST) + 1);
+ if (value == NULL) {
+ return NULL;
+ }
+ if (strcpy_s(value, strlen(OHOS_ABI_LIST) + 1, OHOS_ABI_LIST) != 0) {
+ free(value);
+ return NULL;
+ }
+ return value;
+ }
+
+ int HalGetFirstApiVersion(void)
+ {
+ return g_roFirstApiLevel;
+ }