合并602版本
authorCaisking <3449750381@qq.com>
Mon, 19 Feb 2024 11:21:07 +0000 (19:21 +0800)
committerCaisking <3449750381@qq.com>
Mon, 19 Feb 2024 11:21:07 +0000 (19:21 +0800)
187 files changed:
code/sdk/application/wearable/fd230app/CMakeLists.txt
code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h
code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp
code/sdk/application/wearable/fd230app/nativeui/activity/include/ActivityModel.h
code/sdk/application/wearable/fd230app/nativeui/activity/include/ActivityPresenter.h
code/sdk/application/wearable/fd230app/nativeui/activity/include/ActivityWeekView.h
code/sdk/application/wearable/fd230app/nativeui/activity/include/MainActivityView.h
code/sdk/application/wearable/fd230app/nativeui/activity/src/ActivityPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/activity/src/ActivityWeekView.cpp
code/sdk/application/wearable/fd230app/nativeui/activity/src/MainActivityView.cpp
code/sdk/application/wearable/fd230app/nativeui/alarm/include/AlarmClockModel.h
code/sdk/application/wearable/fd230app/nativeui/alarm/include/AlarmCloseRingView.h
code/sdk/application/wearable/fd230app/nativeui/alarm/include/AlarmConfigView.h
code/sdk/application/wearable/fd230app/nativeui/alarm/include/AlarmJudgeView.h
code/sdk/application/wearable/fd230app/nativeui/alarm/include/AlarmMaxClock.h
code/sdk/application/wearable/fd230app/nativeui/alarm/include/AlarmNewTimeView.h
code/sdk/application/wearable/fd230app/nativeui/alarm/include/AlarmPopUpPresenter.h
code/sdk/application/wearable/fd230app/nativeui/alarm/include/AlarmPopUpView.h
code/sdk/application/wearable/fd230app/nativeui/alarm/include/AlarmPresenter.h
code/sdk/application/wearable/fd230app/nativeui/alarm/include/AlarmRingView.h
code/sdk/application/wearable/fd230app/nativeui/alarm/include/AlarmSetTimeView.h
code/sdk/application/wearable/fd230app/nativeui/alarm/include/AlarmSetWeekView.h
code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmClockModel.cpp
code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmCloseRingView.cpp
code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmConfigView.cpp
code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmJudgeView.cpp
code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmMaxClock.cpp
code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmNewTimeView.cpp
code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmPopUpPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmPopUpView.cpp
code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmRingView.cpp
code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmSetTimeView.cpp
code/sdk/application/wearable/fd230app/nativeui/alarm/src/AlarmSetWeekView.cpp
code/sdk/application/wearable/fd230app/nativeui/alarm/src/MainAlarmView.cpp
code/sdk/application/wearable/fd230app/nativeui/alarmclockmanage/include/AlarmClockManage.h
code/sdk/application/wearable/fd230app/nativeui/alarmclockmanage/include/AlmmgrAlarmClockManage.h
code/sdk/application/wearable/fd230app/nativeui/alarmclockmanage/src/AlarmClockManage.cpp
code/sdk/application/wearable/fd230app/nativeui/alarmclocktimerconfig/include/AlarmClockTimerConfig.h
code/sdk/application/wearable/fd230app/nativeui/alarmclocktimerconfig/src/AlarmClockTimerConfig.cpp
code/sdk/application/wearable/fd230app/nativeui/bluetooth/include/BluetoothDeviceListView.h
code/sdk/application/wearable/fd230app/nativeui/bluetooth/include/BluetoothEarListView.h
code/sdk/application/wearable/fd230app/nativeui/bluetooth/include/BluetoothEarPhoneView.h
code/sdk/application/wearable/fd230app/nativeui/bluetooth/include/BluetoothHeadsetEvent.h
code/sdk/application/wearable/fd230app/nativeui/bluetooth/include/BluetoothItemView.h
code/sdk/application/wearable/fd230app/nativeui/bluetooth/include/BluetoothModel.h
code/sdk/application/wearable/fd230app/nativeui/bluetooth/include/BluetoothOptionsView.h
code/sdk/application/wearable/fd230app/nativeui/bluetooth/include/BluetoothPresenter.h
code/sdk/application/wearable/fd230app/nativeui/bluetooth/include/BluetoothReconnectView.h
code/sdk/application/wearable/fd230app/nativeui/bluetooth/include/MainBluetoothView.h
code/sdk/application/wearable/fd230app/nativeui/bluetooth/include/TipsConnFailMessageView.h
code/sdk/application/wearable/fd230app/nativeui/bluetooth/include/TipsFailMessageView.h
code/sdk/application/wearable/fd230app/nativeui/bluetooth/include/TipsSuccMessageView.h
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothCaseListAdapter.cpp
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothDeviceCaseListAdapter.cpp
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothDeviceListView.cpp
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothEarListView.cpp
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothEarPhoneView.cpp
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothHeadsetEvent.cpp
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothItemView.cpp
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothModel.cpp
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothOptionsView.cpp
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothReconnectView.cpp
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/MainBluetoothView.cpp
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/TipsConnFailMessageView.cpp
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/TipsFailMessageView.cpp
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/TipsSuccMessageView.cpp
code/sdk/application/wearable/fd230app/nativeui/callerlog/include/CallerItemView.h
code/sdk/application/wearable/fd230app/nativeui/callerlog/include/CallerLogModel.h
code/sdk/application/wearable/fd230app/nativeui/callerlog/include/CallerLogPresenter.h
code/sdk/application/wearable/fd230app/nativeui/callerlog/include/CallerLogView.h
code/sdk/application/wearable/fd230app/nativeui/callerlog/src/CallerItemView.cpp
code/sdk/application/wearable/fd230app/nativeui/callerlog/src/CallerLogModel.cpp
code/sdk/application/wearable/fd230app/nativeui/callerlog/src/CallerLogPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/callerlog/src/CallerLogView.cpp
code/sdk/application/wearable/fd230app/nativeui/connectnewphone/include/ConnectOpenView.h
code/sdk/application/wearable/fd230app/nativeui/connectnewphone/include/ConnectPhonePresenter.h
code/sdk/application/wearable/fd230app/nativeui/connectnewphone/include/ConnectPhoneView.h
code/sdk/application/wearable/fd230app/nativeui/connectnewphone/include/ConnectSelectView.h
code/sdk/application/wearable/fd230app/nativeui/connectnewphone/src/ConnectOpenView.cpp
code/sdk/application/wearable/fd230app/nativeui/connectnewphone/src/ConnectPhonePresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/connectnewphone/src/ConnectPhoneView.cpp
code/sdk/application/wearable/fd230app/nativeui/connectnewphone/src/ConnectSelectView.cpp
code/sdk/application/wearable/fd230app/nativeui/dial/include/DialPresenter.h [deleted file]
code/sdk/application/wearable/fd230app/nativeui/dial/include/DialSetupView.h [deleted file]
code/sdk/application/wearable/fd230app/nativeui/dial/include/DialSuccesView.h [deleted file]
code/sdk/application/wearable/fd230app/nativeui/dial/include/DialView.h [deleted file]
code/sdk/application/wearable/fd230app/nativeui/dial/include/Digital_clockView.h [deleted file]
code/sdk/application/wearable/fd230app/nativeui/dial/include/dial_resource_image.h [deleted file]
code/sdk/application/wearable/fd230app/nativeui/dial/src/DialPresenter.cpp [deleted file]
code/sdk/application/wearable/fd230app/nativeui/dial/src/DialSucces.cpp [deleted file]
code/sdk/application/wearable/fd230app/nativeui/dial/src/DialView.cpp [deleted file]
code/sdk/application/wearable/fd230app/nativeui/dial/src/Digital_clockView.cpp [deleted file]
code/sdk/application/wearable/fd230app/nativeui/heartrate/include/HeartModel.h
code/sdk/application/wearable/fd230app/nativeui/heartrate/include/HeartRateView.h
code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartModel.cpp
code/sdk/application/wearable/fd230app/nativeui/heartrate/src/HeartRateView.cpp
code/sdk/application/wearable/fd230app/nativeui/indoorwalk/include/CustomizationView.h
code/sdk/application/wearable/fd230app/nativeui/indoorwalk/include/IndoorWalkEndView.h
code/sdk/application/wearable/fd230app/nativeui/indoorwalk/include/IndoorWalkModel.h
code/sdk/application/wearable/fd230app/nativeui/indoorwalk/include/IndoorWalkMotionView.h
code/sdk/application/wearable/fd230app/nativeui/indoorwalk/include/IndoorWalkPreparedView.h
code/sdk/application/wearable/fd230app/nativeui/indoorwalk/include/IndoorWalkPresenter.h
code/sdk/application/wearable/fd230app/nativeui/indoorwalk/include/IndoorWalkView.h
code/sdk/application/wearable/fd230app/nativeui/indoorwalk/include/MotionPageFifth.h
code/sdk/application/wearable/fd230app/nativeui/indoorwalk/include/MotionPageFirst.h
code/sdk/application/wearable/fd230app/nativeui/indoorwalk/include/MotionPageFourth.h
code/sdk/application/wearable/fd230app/nativeui/indoorwalk/include/MotionPageSecond.h
code/sdk/application/wearable/fd230app/nativeui/indoorwalk/include/MotionPageThird.h
code/sdk/application/wearable/fd230app/nativeui/indoorwalk/src/CustomizationView.cpp
code/sdk/application/wearable/fd230app/nativeui/indoorwalk/src/IndoorWalkEndView.cpp
code/sdk/application/wearable/fd230app/nativeui/indoorwalk/src/IndoorWalkModel.cpp
code/sdk/application/wearable/fd230app/nativeui/indoorwalk/src/IndoorWalkMotionView.cpp
code/sdk/application/wearable/fd230app/nativeui/indoorwalk/src/IndoorWalkPreparedView.cpp
code/sdk/application/wearable/fd230app/nativeui/indoorwalk/src/IndoorWalkPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/indoorwalk/src/IndoorWalkView.cpp
code/sdk/application/wearable/fd230app/nativeui/indoorwalk/src/MotionPageFifth.cpp
code/sdk/application/wearable/fd230app/nativeui/indoorwalk/src/MotionPageFirst.cpp
code/sdk/application/wearable/fd230app/nativeui/indoorwalk/src/MotionPageFourth.cpp
code/sdk/application/wearable/fd230app/nativeui/indoorwalk/src/MotionPageSecond.cpp
code/sdk/application/wearable/fd230app/nativeui/indoorwalk/src/MotionPageThird.cpp
code/sdk/application/wearable/fd230app/nativeui/key/include/KeyInputListener.h
code/sdk/application/wearable/fd230app/nativeui/key/src/KeyInputListener.cpp
code/sdk/application/wearable/fd230app/nativeui/main/include/MainPresenterSample.h
code/sdk/application/wearable/fd230app/nativeui/main/include/MainViewSample.h
code/sdk/application/wearable/fd230app/nativeui/main/include/ModelListenerSample.h
code/sdk/application/wearable/fd230app/nativeui/main/include/PresenterTask.h
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialArcLabelView.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialArcProgressView.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialBaseModel.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialBoxProgressView.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialDataBase.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialDigitalImgView.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialLabelView.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelHeartRate.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelPower.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelSteps.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelTime.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialOptionImgView.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialRotateImgView.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialSequenceImgView.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialStaticImgView.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialVideoView.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialView.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialViewGroup.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/ModelDialDataFactory.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/OnDialDataUpdateListener.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/RegisterDialModel.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/src/MainPresenterSample.cpp
code/sdk/application/wearable/fd230app/nativeui/main/src/MainViewSample.cpp
code/sdk/application/wearable/fd230app/nativeui/main/src/ModelListenerSample.cpp
code/sdk/application/wearable/fd230app/nativeui/main/src/PresenterTask.cpp
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialArcLabelView.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialArcProgressView.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialBoxProgressView.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialDigitalImgView.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialLabelView.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelHeartRate.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelPower.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelSteps.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelTime.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialOptionImgView.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialRotateImgView.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialSequenceImgView.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialStaticImgView.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialVideoView.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialViewGroup.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/ModelDialDataFactory.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/parser/DialBinParser.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/parser/DialBinParser.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/parser/DialBinTypes.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/offlinevoice/include/MainVocassistView.h
code/sdk/application/wearable/fd230app/nativeui/offlinevoice/include/VocassistModel.h
code/sdk/application/wearable/fd230app/nativeui/offlinevoice/include/VocassistPresenter.h
code/sdk/application/wearable/fd230app/nativeui/offlinevoice/include/VocassistView.h
code/sdk/application/wearable/fd230app/nativeui/offlinevoice/src/MainVocassistView.cpp
code/sdk/application/wearable/fd230app/nativeui/offlinevoice/src/VocassistModel.cpp
code/sdk/application/wearable/fd230app/nativeui/offlinevoice/src/VocassistPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/offlinevoice/src/VocassistView.cpp
code/sdk/application/wearable/fd230app/nativeui/screensetting/include/ScreenModels.h
code/sdk/application/wearable/fd230app/nativeui/uiservice/include/ui_service.h
code/sdk/application/wearable/fd230app/nativeui/uiservice/src/ui_service.cpp
code/sdk/application/wearable/nativeapp/nativelauncher/include/ui_resource_string.h [deleted file]
code/sdk/application/wearable/nativeapp/nativeui/main/include/dial/DialDataBase.h
code/sdk/application/wearable/nativeapp/nativeui/main/src/MainViewSample.cpp
code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/maomao.bin [new file with mode: 0644]

index 0302837..cc7c972 100644 (file)
@@ -58,7 +58,8 @@ set(PRIVATE_HEADER
     ${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/proprietary/src/ui/innerkits
+    ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/include/components
 
     ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/innerkits
     ${ROOT_DIR}/middleware/services/gui/lvgl/src/hal
@@ -96,7 +97,16 @@ set(PRIVATE_HEADER
     ${ROOT_DIR}/open_source/openharmony/drivers/peripheral/display/interfaces/include
     ${ROOT_DIR}/open_source/openharmony/foundation/distributedschedule/samgr_lite/interfaces/kits/samgr
 
-
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/include/dial
+    ${ROOT_DIR}/middleware/services/media/foundation/sample/wrapper
+    ${ROOT_DIR}/application/wearable/service/msg_center/include
+    ${ROOT_DIR}/application/wearable/nativeabilityfwk/include
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/parser
+    ${ROOT_DIR}/open_source/openharmony/foundation/multimedia/audio_player/interfaces/kits
+    ${ROOT_DIR}/open_source/openharmony/foundation/multimedia/audiomanager/interfaces/kits/audiomanager
+    ${ROOT_DIR}/open_source/openharmony/foundation/multimedia/audiomanager/interfaces/kits/audiocommon
+    ${ROOT_DIR}/open_source/openharmony/foundation/multimedia/player/interfaces/kits/
+    ${ROOT_DIR}/open_source/openharmony/foundation/multimedia/utils/include
 )
 
 set(SOURCES
@@ -115,6 +125,11 @@ set(SOURCES
     ${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/main/src/dial/ModelDialDataFactory.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialModelTime.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialModelHeartRate.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialModelSteps.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialModelPower.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
@@ -219,9 +234,6 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/screennotify/src/ui_screennotify.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
 
@@ -305,7 +317,8 @@ set(SOURCES
     ${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
- 
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/screennotify/src/ui_screennotify.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
@@ -318,7 +331,19 @@ set(SOURCES
     ${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
+
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialRotateImgView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialOptionImgView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialDigitalImgView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialLabelView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialArcLabelView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialArcProgressView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialBoxProgressView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialViewGroup.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialVideoView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialSequenceImgView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialStaticImgView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/parser/DialBinParser.cpp
 )
 if("SUPPORT_ALIPAY_SEC" IN_LIST DEFINES)
 set(SOURCES   
index b2133eb..7a699f5 100644 (file)
@@ -1,3 +1,13 @@
+/*** 
+ * @Author: Caisking 3449750381@qq.com
+ * @Date: 2024-02-18 19:33:16
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-02-19 19:05:43
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h
+ * @Description: 
+ * @
+ * @Copyright (c) 2024 by Caisking , All Rights Reserved. 
+ */
 
 /***
  * @Author: Caisking 3449750381@qq.com
@@ -58,7 +68,7 @@ namespace OHOS
         /* -------------------------------------------------------------------------- */
         void InitDisplayBrightnessSlice(void);
         /* --------------------------------测试界面------------------------------------ */
-        void InitDialSlice(void);
+
         void InitBloodSlice(void);
         void InitMainAlipaySlice(void);
         /* -------------------------------------------------------------------------- */
index 42f668e..437c34a 100644 (file)
@@ -57,8 +57,7 @@
 #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"
@@ -135,7 +134,6 @@ namespace OHOS
         {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},               // 未来天气
@@ -444,17 +442,7 @@ namespace OHOS
         }
         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) // 天气
     {
index 2bf51c8..7bf138e 100644 (file)
@@ -1,56 +1,56 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: ActivityModel view
- * Author:
- * Create: 2022-03-02
- */
-
-#ifndef ACTIVITY_MODEL_H
-#define ACTIVITY_MODEL_H
-
-#define NUM_7 7
-
-#include <time.h>
-#include "stdio.h"
-#include "ohos_types.h"
-#include "RtcService.h"
-#include "samgr_lite.h"
-
-namespace OHOS {
-typedef enum {
-    MONDAY_STEP_COUNTER = 0,
-    TUESDAY_STEP_COUNTER,
-    WEDNESDAY_STEP_COUNTER,
-    THURSDAY_STEP_COUNTER,
-    FRIDAY_STEP_COUNTER,
-    SATURDAY_STEP_COUNTER,
-    SUNDAY_STEP_COUNTER,
-} StepDataDistribute;
-
-typedef struct {
-    uint32 weekSteps[NUM_7];
-} StepAllData;
-
-class ActivityModel {
-public:
-    ~ActivityModel();
-    void Init();
-    static ActivityModel *GetInstance(void);
-    uint32 GetStepCounter(void);
-    void ReviseStepCounter(uint32 &counter);
-    void GetStepData(const StepDataDistribute &type, uint32_t *value);
-    void SetStepData(uint32_t &value);
-    void SaveStepToFile(struct tm *tm_data);
-    int GetWeekToday(void);
-    uint32 GetLastSavedValue(void);
-    uint32_t ZeroHourStepHandle(void);
-private:
-    ActivityModel();
-    bool InitStepData(void);
-    uint32 stepCounter;
-    uint32 lastSavedValue;
-    int weekToday;
-};
-}
-
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: ActivityModel view\r
+ * Author:\r
+ * Create: 2022-03-02\r
+ */\r
+\r
+#ifndef ACTIVITY_MODEL_H\r
+#define ACTIVITY_MODEL_H\r
+\r
+#define NUM_7 7\r
+\r
+#include <time.h>\r
+#include "stdio.h"\r
+#include "ohos_types.h"\r
+#include "RtcService.h"\r
+#include "samgr_lite.h"\r
+\r
+namespace OHOS {\r
+typedef enum {\r
+    MONDAY_STEP_COUNTER = 0,\r
+    TUESDAY_STEP_COUNTER,\r
+    WEDNESDAY_STEP_COUNTER,\r
+    THURSDAY_STEP_COUNTER,\r
+    FRIDAY_STEP_COUNTER,\r
+    SATURDAY_STEP_COUNTER,\r
+    SUNDAY_STEP_COUNTER,\r
+} StepDataDistribute;\r
+\r
+typedef struct {\r
+    uint32 weekSteps[NUM_7];\r
+} StepAllData;\r
+\r
+class ActivityModel {\r
+public:\r
+    ~ActivityModel();\r
+    void Init();\r
+    static ActivityModel *GetInstance(void);\r
+    uint32 GetStepCounter(void);\r
+    void ReviseStepCounter(uint32 &counter);\r
+    void GetStepData(const StepDataDistribute &type, uint32_t *value);\r
+    void SetStepData(uint32_t &value);\r
+    void SaveStepToFile(struct tm *tm_data);\r
+    int GetWeekToday(void);\r
+    uint32 GetLastSavedValue(void);\r
+    uint32_t ZeroHourStepHandle(void);\r
+private:\r
+    ActivityModel();\r
+    bool InitStepData(void);\r
+    uint32 stepCounter;\r
+    uint32 lastSavedValue;\r
+    int weekToday;\r
+};\r
+}\r
+\r
 #endif
\ No newline at end of file
index 6357c02..a65060d 100644 (file)
@@ -1,33 +1,33 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: ActivityPresenter
- * Author:
- * Create: 2021-09-11
- */
-
-#ifndef ACTIVITY_PRESENTER_H
-#define ACTIVITY_PRESENTER_H
-
-#include <sys/timerfd.h>
-#include <time.h>
-#include "BaseView.h"
-#include "Presenter.h"
-#include "MainActivityView.h"
-
-namespace OHOS {
-static constexpr const char *ACTIVITY_WEEK_VIEW = "activityweekview";
-
-class MainActivityView;
-class ActivityPresenter : public Presenter<MainActivityView>, public UIView::OnDragListener {
-public:
-    ActivityPresenter();
-    ~ActivityPresenter();
-    void OnStart() override;
-    void OnPause() override;
-    void OnResume() override;
-    void OnStop() override;
-    static ActivityPresenter *GetInstance();
-    virtual bool OnDrag(UIView& view, const DragEvent& event) override;
-};
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: ActivityPresenter\r
+ * Author:\r
+ * Create: 2021-09-11\r
+ */\r
+\r
+#ifndef ACTIVITY_PRESENTER_H\r
+#define ACTIVITY_PRESENTER_H\r
+\r
+#include <sys/timerfd.h>\r
+#include <time.h>\r
+#include "BaseView.h"\r
+#include "Presenter.h"\r
+#include "MainActivityView.h"\r
+\r
+namespace OHOS {\r
+static constexpr const char *ACTIVITY_WEEK_VIEW = "activityweekview";\r
+\r
+class MainActivityView;\r
+class ActivityPresenter : public Presenter<MainActivityView>, public UIView::OnDragListener {\r
+public:\r
+    ActivityPresenter();\r
+    ~ActivityPresenter();\r
+    void OnStart() override;\r
+    void OnPause() override;\r
+    void OnResume() override;\r
+    void OnStop() override;\r
+    static ActivityPresenter *GetInstance();\r
+    virtual bool OnDrag(UIView& view, const DragEvent& event) override;\r
+};\r
+}\r
 #endif
\ No newline at end of file
index 2bbf322..5ecbb1b 100644 (file)
@@ -1,63 +1,63 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Activity
- * Author:
- * Create: 2021-09-11
- */
-
-#ifndef ACTIVITY_WEEK_VIEW_H
-#define ACTIVITY_WEEK_VIEW_H
-
-#include "components/ui_label.h"
-#include "components/ui_canvas.h"
-#include "components/ui_view_group.h"
-#include "components/ui_image_view.h"
-#include "components/ui_button.h"
-#include "components/ui_label_button.h"
-#include "BaseView.h"
-#include "UiConfig.h"
-#include "wearable_log.h"
-#include "components/ui_card_page.h"
-#include "ActivityModel.h"
-
-namespace OHOS {
-#define DAYS 7
-
-class ActivityWeekView : public UICardPage {
-public:
-    ActivityWeekView();
-    virtual ~ActivityWeekView();
-    static ActivityWeekView *GetInstance(void);
-    int GetDigits(int stepValue);
-    void InitSteps();
-    void InitWeekView();
-    void InitAvgStep();
-    void InitStepLabel();
-    void InitAvgLabel();
-    void InitUICanvas();
-    bool InitView();
-    void PreLoad(void) override;
-    void UnLoad(void) override;
-    void RefreshSteps(int step);
-    void RefreshTodayView(int step);
-private:
-    void InitDraggble();
-    UIView *CreateUIView(int16_t x, int16_t y);
-    UIView *view[DAYS]{nullptr};
-    UILabel *weekDayLabel[DAYS]{nullptr};
-    UIImageView *imageViewShoe{nullptr};
-    UILabel *stepsLabel{nullptr};
-    UILabel *avgStepLabel{nullptr};
-    UILabel *stepsString{nullptr};
-    UILabel *todayString{nullptr};
-    UILabel *achievedString{nullptr};
-    UILabel *avgString{nullptr};
-    UILabel *behindAvgString{nullptr};
-    UILabel *chartString{nullptr};
-    UICanvas *chartHighest{nullptr};
-    UICanvas *chartLowest{nullptr};
-    bool viewiInitStatus{false};
-    bool resLoadStatus{false};
-};
-} // namespace OHOS
-#endif
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Activity\r
+ * Author:\r
+ * Create: 2021-09-11\r
+ */\r
+\r
+#ifndef ACTIVITY_WEEK_VIEW_H\r
+#define ACTIVITY_WEEK_VIEW_H\r
+\r
+#include "components/ui_label.h"\r
+#include "components/ui_canvas.h"\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_image_view.h"\r
+#include "components/ui_button.h"\r
+#include "components/ui_label_button.h"\r
+#include "BaseView.h"\r
+#include "UiConfig.h"\r
+#include "wearable_log.h"\r
+#include "components/ui_card_page.h"\r
+#include "ActivityModel.h"\r
+\r
+namespace OHOS {\r
+#define DAYS 7\r
+\r
+class ActivityWeekView : public UICardPage {\r
+public:\r
+    ActivityWeekView();\r
+    virtual ~ActivityWeekView();\r
+    static ActivityWeekView *GetInstance(void);\r
+    int GetDigits(int stepValue);\r
+    void InitSteps();\r
+    void InitWeekView();\r
+    void InitAvgStep();\r
+    void InitStepLabel();\r
+    void InitAvgLabel();\r
+    void InitUICanvas();\r
+    bool InitView();\r
+    void PreLoad(void) override;\r
+    void UnLoad(void) override;\r
+    void RefreshSteps(int step);\r
+    void RefreshTodayView(int step);\r
+private:\r
+    void InitDraggble();\r
+    UIView *CreateUIView(int16_t x, int16_t y);\r
+    UIView *view[DAYS]{nullptr};\r
+    UILabel *weekDayLabel[DAYS]{nullptr};\r
+    UIImageView *imageViewShoe{nullptr};\r
+    UILabel *stepsLabel{nullptr};\r
+    UILabel *avgStepLabel{nullptr};\r
+    UILabel *stepsString{nullptr};\r
+    UILabel *todayString{nullptr};\r
+    UILabel *achievedString{nullptr};\r
+    UILabel *avgString{nullptr};\r
+    UILabel *behindAvgString{nullptr};\r
+    UILabel *chartString{nullptr};\r
+    UICanvas *chartHighest{nullptr};\r
+    UICanvas *chartLowest{nullptr};\r
+    bool viewiInitStatus{false};\r
+    bool resLoadStatus{false};\r
+};\r
+} // namespace OHOS\r
+#endif\r
index e5fa523..aa8c819 100644 (file)
@@ -1,44 +1,44 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: MainActivityView
- * Author:
- * Create: 2021-09-11
- */
-
-#ifndef MAIN_ACTIVITY_VIEW_H
-#define MAIN_ACTIVITY_VIEW_H
-
-#include <string>
-#include "window/window.h"
-#include "BaseView.h"
-#include "View.h"
-#include "components/ui_label.h"
-#include "components/root_view.h"
-#include "components/ui_view_group.h"
-#include "components/ui_image_view.h"
-#include "components/ui_label_button.h"
-#include "ChangeSliceListener.h"
-#include "font/ui_font_bitmap.h"
-#include "font/ui_font.h"
-#include "graphic_config.h"
-#include "ModelListenerSample.h"
-#include "ActivityModel.h"
-#include "ActivityPresenter.h"
-#include "ActivityWeekView.h"
-
-namespace OHOS {
-class ActivityPresenter;
-class MainActivityView : public View<ActivityPresenter> {
-public:
-    MainActivityView();
-    virtual ~MainActivityView();
-    void OnStart() override;
-    void OnSetUpView() override;
-    void OnTearDownView() override;
-    void OnStop() override;
-    static MainActivityView *GetInstance(void);
-private:
-    ActivityWeekView *activityWeekView{nullptr};
-};
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: MainActivityView\r
+ * Author:\r
+ * Create: 2021-09-11\r
+ */\r
+\r
+#ifndef MAIN_ACTIVITY_VIEW_H\r
+#define MAIN_ACTIVITY_VIEW_H\r
+\r
+#include <string>\r
+#include "window/window.h"\r
+#include "BaseView.h"\r
+#include "View.h"\r
+#include "components/ui_label.h"\r
+#include "components/root_view.h"\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_image_view.h"\r
+#include "components/ui_label_button.h"\r
+#include "ChangeSliceListener.h"\r
+#include "font/ui_font_bitmap.h"\r
+#include "font/ui_font.h"\r
+#include "graphic_config.h"\r
+#include "ModelListenerSample.h"\r
+#include "ActivityModel.h"\r
+#include "ActivityPresenter.h"\r
+#include "ActivityWeekView.h"\r
+\r
+namespace OHOS {\r
+class ActivityPresenter;\r
+class MainActivityView : public View<ActivityPresenter> {\r
+public:\r
+    MainActivityView();\r
+    virtual ~MainActivityView();\r
+    void OnStart() override;\r
+    void OnSetUpView() override;\r
+    void OnTearDownView() override;\r
+    void OnStop() override;\r
+    static MainActivityView *GetInstance(void);\r
+private:\r
+    ActivityWeekView *activityWeekView{nullptr};\r
+};\r
+} // namespace OHOS\r
 #endif
\ No newline at end of file
index 466e676..5f64c40 100644 (file)
@@ -1,55 +1,55 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: WeekStep
- * Author:
- * Create: 2021-09-11
- */
-
-#include <string>
-#include "gfx_utils/graphic_types.h"
-#include "components/ui_checkbox.h"
-#include "UiConfig.h"
-#include "ActivityPresenter.h"
-
-namespace OHOS {
-static ActivityPresenter *g_pActivityPresenter = nullptr;
-ActivityPresenter::ActivityPresenter()
-{
-    g_pActivityPresenter = this;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ActivityPresenter");
-}
-
-ActivityPresenter::~ActivityPresenter()
-{
-    g_pActivityPresenter = nullptr;
-}
-
-ActivityPresenter *ActivityPresenter::GetInstance()
-{
-    return g_pActivityPresenter;
-}
-
-void ActivityPresenter::OnStart()
-{
-    Presenter<MainActivityView>::OnStart();
-}
-
-void ActivityPresenter::OnPause(void) {}
-
-void ActivityPresenter::OnResume(void) {}
-
-void ActivityPresenter::OnStop(void) {}
-
-bool ActivityPresenter::OnDrag(UIView& view, const DragEvent& event)
-{
-    WEARABLE_LOGD("WEARABLE_LOG_MODULE_APP", "ActivityPresenter::OnDrag");
-    if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {
-        if (strcmp(view.GetViewId(), ACTIVITY_WEEK_VIEW) == 0) {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ActivityPresenter::OnDrag on ACTIVITY_WEEK_VIEW");
-            uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
-            NativeAbility::GetInstance().ChangeSlice(preSlice);
-        }
-    }
-    return true;
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: WeekStep\r
+ * Author:\r
+ * Create: 2021-09-11\r
+ */\r
+\r
+#include <string>\r
+#include "gfx_utils/graphic_types.h"\r
+#include "components/ui_checkbox.h"\r
+#include "UiConfig.h"\r
+#include "ActivityPresenter.h"\r
+\r
+namespace OHOS {\r
+static ActivityPresenter *g_pActivityPresenter = nullptr;\r
+ActivityPresenter::ActivityPresenter()\r
+{\r
+    g_pActivityPresenter = this;\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ActivityPresenter");\r
+}\r
+\r
+ActivityPresenter::~ActivityPresenter()\r
+{\r
+    g_pActivityPresenter = nullptr;\r
+}\r
+\r
+ActivityPresenter *ActivityPresenter::GetInstance()\r
+{\r
+    return g_pActivityPresenter;\r
+}\r
+\r
+void ActivityPresenter::OnStart()\r
+{\r
+    Presenter<MainActivityView>::OnStart();\r
+}\r
+\r
+void ActivityPresenter::OnPause(void) {}\r
+\r
+void ActivityPresenter::OnResume(void) {}\r
+\r
+void ActivityPresenter::OnStop(void) {}\r
+\r
+bool ActivityPresenter::OnDrag(UIView& view, const DragEvent& event)\r
+{\r
+    WEARABLE_LOGD("WEARABLE_LOG_MODULE_APP", "ActivityPresenter::OnDrag");\r
+    if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {\r
+        if (strcmp(view.GetViewId(), ACTIVITY_WEEK_VIEW) == 0) {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ActivityPresenter::OnDrag on ACTIVITY_WEEK_VIEW");\r
+            uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();\r
+            NativeAbility::GetInstance().ChangeSlice(preSlice);\r
+        }\r
+    }\r
+    return true;\r
+}\r
 }
\ No newline at end of file
index 4514150..3eb986e 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Activity
- * Author:
- * Create: 2021-10-18
- */
-
-#include "ActivityWeekView.h"
-#include "ActivityPresenter.h"
-#include "common/image_cache_manager.h"
-
-namespace OHOS {
-static constexpr uint16_t CHAR_LENGTH = 10;
-static constexpr uint16_t UIVIEW_WIDTH = 30;
-static constexpr uint16_t UIVIEW_HEIGHT = 90;
-static constexpr uint16_t TITLE_STEP_WIDTH = 80;
-static constexpr uint16_t TITLE_STEP_HEIGHT = 40;
-static constexpr uint16_t TEXT_WIDTH = 150;
-static constexpr uint16_t TEXT_HEIGHT = 35;
-static constexpr uint16_t VALUE_WIDTH = 130;
-static constexpr uint16_t VALUE_HEIGHT = 38;
-static constexpr uint16_t LINE_WIDTH = 360;
-static constexpr uint16_t LINE_HEIGHT = 2;
-static constexpr uint16_t CHART_STRING_WIDTH = 150;
-static constexpr uint16_t CHART_STRING_HEIGHT = 20;
-static constexpr uint16_t STEPS_POSITION_X = 220;
-static constexpr uint16_t STEPS_POSITION_Y = 40;
-static constexpr uint16_t WEEKDAYVIEW_HIGHEST_Y = 210;
-static constexpr uint16_t WEEKDAYVIEW_LOWEST_Y = 300;
-static constexpr uint16_t CHART_STRING_Y = WEEKDAYVIEW_HIGHEST_Y - 20;
-static constexpr uint16_t WEEKDAYLABEL_POSITION_X = 47;
-static constexpr uint16_t WEEKDAYLABEL_POSITION_Y = 302;
-static constexpr uint16_t AVG_STEP_POSITION_X = 99;
-static constexpr uint16_t AVG_STEP_POSITION_Y = 357;
-static constexpr uint16_t AVG_POSITION_Y = 360;
-static constexpr uint16_t STEPS_STRING_POSITION_X = 144;
-static constexpr uint16_t STEPS_STRING_POSITION_Y = 100;
-static constexpr uint16_t STEPS_COUNT_POSITION_X = 144;
-static constexpr uint16_t STEPS_COUNT_POSITION_Y = 97;
-static constexpr uint16_t CENTER_POSITION_X = 227;
-static constexpr uint16_t STEP_STRING_TOTAL_LENGTH = 170;
-static constexpr uint16_t AVG_STRING_TOTAL_LENGTH = 120;
-static constexpr uint16_t NUM_LENGTH = 18;
-static constexpr uint16_t TODAY_STRING_LENGTH = 63;
-static constexpr uint16_t AVG_STRING_LENGTH = 93;
-static constexpr uint16_t HIDDEN_SRC_LENGTH = 20;
-static constexpr uint16_t WIDTH_BETWEEN_VIEW = 55;
-static constexpr uint16_t IMAGE_POSITION_X = STEPS_POSITION_X - 50;
-
-static constexpr uint16_t TITLE_FONT_SIZE = 35;
-static constexpr uint16_t STRING_FONT_SIZE = 30;
-static constexpr uint16_t DATA_FONT_SIZE = 33;
-static constexpr uint16_t SAMLL_FONT_SIZE = 15;
-static constexpr uint16_t COORDINATE_FONT_SIZE = 20;
-static constexpr char const *WEEK_DAY[DAYS] = {"一", "二", "三", "四", "五", "六", "日"};
-static constexpr uint16_t STEP_CHAR_NUM = 255;
-static constexpr uint16_t AVG_CHAR_NUM = 255;
-static constexpr uint16_t MAX_STEPS = 65535;
-
-static ActivityWeekView *g_pActivityWeekView = nullptr;
-
-ActivityWeekView::ActivityWeekView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::ActivityWeekView");
-    SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
-    g_pActivityWeekView = this;
-}
-
-ActivityWeekView::~ActivityWeekView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::~ActivityWeekView");
-    if (viewiInitStatus == true) {
-        RemoveAll();
-        for (int i = 0; i < DAYS; i++) {
-            delete view[i];
-            view[i] = nullptr;
-            delete weekDayLabel[i];
-            weekDayLabel[i] = nullptr;
-        }
-        delete imageViewShoe;
-        imageViewShoe = nullptr;
-        delete avgStepLabel;
-        avgStepLabel = nullptr;
-        delete stepsString;
-        stepsString = nullptr;
-        delete stepsLabel;
-        stepsLabel = nullptr;
-        delete todayString;
-        todayString = nullptr;
-        delete achievedString;
-        achievedString = nullptr;
-        delete avgString;
-        avgString = nullptr;
-        delete behindAvgString;
-        behindAvgString = nullptr;
-        delete chartString;
-        chartString = nullptr;
-        delete chartHighest;
-        chartHighest = nullptr;
-        delete chartLowest;
-        chartLowest = nullptr;
-    }
-    g_pActivityWeekView = nullptr;
-}
-
-ActivityWeekView *ActivityWeekView::GetInstance(void)
-{
-    return g_pActivityWeekView;
-}
-
-UIView *ActivityWeekView::CreateUIView(int16_t x, int16_t y)
-{
-    UIView *view = new UIView();
-    if (view == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitView view is nullptr");
-        return nullptr;
-    }
-    view->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(0x00, 165, 230).full);
-    view->SetStyle(STYLE_BACKGROUND_OPA, 127); // 127 : background opacity
-    view->SetStyle(STYLE_BORDER_COLOR, Color::Gray().full);
-    view->SetStyle(STYLE_BORDER_OPA, 127); // 127 : border opacity
-    view->SetStyle(STYLE_BORDER_WIDTH, 0); // 0 : border width
-    view->SetStyle(STYLE_PADDING_LEFT, 0);
-    view->SetStyle(STYLE_PADDING_RIGHT, 0);
-    view->SetStyle(STYLE_PADDING_TOP, 0);
-    view->SetStyle(STYLE_PADDING_BOTTOM, 0);
-    view->SetStyle(STYLE_MARGIN_LEFT, 0);
-    view->SetStyle(STYLE_MARGIN_RIGHT, 0);
-    view->SetStyle(STYLE_MARGIN_TOP, 0);
-    view->SetStyle(STYLE_MARGIN_BOTTOM, 0);
-    view->SetPosition(x, y);
-    view->SetStyle(STYLE_BORDER_RADIUS, UIVIEW_WIDTH / 2 + 10); // 2 : half width 10 : offset
-    return view;
-}
-
-void ActivityWeekView::InitSteps()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitSteps");
-    uint32_t stepValue = 0;
-    int weekToday = ActivityModel::GetInstance()->GetWeekToday();
-    ActivityModel::GetInstance()->GetStepData((StepDataDistribute)weekToday, &stepValue);
-    char stepChar[STEP_CHAR_NUM] = {0};
-    (void)sprintf_s(stepChar, STEP_CHAR_NUM, "%d", stepValue);
-
-    if (stepsLabel == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitSteps nullptr");
-        return;
-    }
-    stepsLabel->SetText(stepChar);
-
-    int stepDigits = strnlen(stepChar, STEP_CHAR_NUM);
-    int todayStringPosX = CENTER_POSITION_X - (STEP_STRING_TOTAL_LENGTH + stepDigits * NUM_LENGTH) / 2; // 2: half width
-    todayString->SetPosition(todayStringPosX, STEPS_STRING_POSITION_Y);
-    int stepsLabelPosX = todayStringPosX + TODAY_STRING_LENGTH;
-    stepsLabel->SetPosition(stepsLabelPosX, STEPS_COUNT_POSITION_Y);
-    int achievedStrPosX = stepsLabelPosX + stepDigits * NUM_LENGTH;
-    achievedString->SetPosition(achievedStrPosX, STEPS_STRING_POSITION_Y);
-}
-
-void ActivityWeekView::InitWeekView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitWeekView");
-    uint32_t weekValue = 0;
-    for (int i = MONDAY_STEP_COUNTER; i <= SUNDAY_STEP_COUNTER; ++i) {
-        ActivityModel::GetInstance()->GetStepData((StepDataDistribute)i, &weekValue);
-        int weekday = i - MONDAY_STEP_COUNTER;
-        // 10000:the actual number of steps corresponding to the interval
-        int viewHeight = weekValue * (WEEKDAYVIEW_LOWEST_Y - WEEKDAYVIEW_HIGHEST_Y) / 10000;
-        if (view[weekday] == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitWeekView view[%d] is nullptr", weekday);
-            return;
-        }
-        view[weekday]->SetPosition(WEEKDAYLABEL_POSITION_X + WIDTH_BETWEEN_VIEW * weekday,
-                                   WEEKDAYVIEW_LOWEST_Y - viewHeight);
-        view[weekday]->Resize(UIVIEW_WIDTH, viewHeight + HIDDEN_SRC_LENGTH);
-        view[weekday]->Invalidate();
-    }
-}
-
-void ActivityWeekView::InitAvgStep()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitAvgStep");
-    uint32_t weekStep = 0;
-    uint32_t stepValue = 0;
-    int today = ActivityModel::GetInstance()->GetWeekToday();
-    int todayType = today + MONDAY_STEP_COUNTER;
-    for (int i = MONDAY_STEP_COUNTER; i < todayType; ++i) {
-        ActivityModel::GetInstance()->GetStepData((StepDataDistribute)i, &stepValue);
-        weekStep += stepValue;
-    }
-    int avgDays = today;
-    uint32_t avgStep = 0;
-    if (avgDays != 0) {
-        avgStep = weekStep / avgDays;
-    }
-
-    char avgChar[AVG_CHAR_NUM] = {0};
-    (void)sprintf_s(avgChar, AVG_CHAR_NUM, "%d", avgStep);
-    if (avgStepLabel == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitAvgStep nullptr");
-        return;
-    }
-    avgStepLabel->SetText(avgChar);
-
-    int avgDigits = strnlen(avgChar, AVG_CHAR_NUM);
-    int avgStringPosX = CENTER_POSITION_X - (AVG_STRING_TOTAL_LENGTH  + avgDigits * NUM_LENGTH) / 2; // 2 : half width
-    avgString->SetPosition(avgStringPosX, AVG_POSITION_Y);
-    int avgStepLabelPosX = avgStringPosX + AVG_STRING_LENGTH;
-    avgStepLabel->SetPosition(avgStepLabelPosX, AVG_STEP_POSITION_Y);
-    int behindAvgStrPosX = avgStepLabelPosX + avgDigits * NUM_LENGTH;
-    behindAvgString->SetPosition(behindAvgStrPosX, AVG_POSITION_Y);
-}
-
-void ActivityWeekView::InitStepLabel()
-{
-    imageViewShoe = new UIImageView();
-    if (imageViewShoe == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitView imageViewShoe is nullptr");
-    }
-    imageViewShoe->SetPosition(IMAGE_POSITION_X, STEPS_POSITION_Y, TITLE_FONT_SIZE, TITLE_FONT_SIZE);
-
-    stepsString = new UILabel();
-    if (stepsString == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitView stepsString is nullptr");
-    }
-    stepsString->SetPosition(STEPS_POSITION_X, STEPS_POSITION_Y, TITLE_STEP_WIDTH, TITLE_STEP_HEIGHT);
-    stepsString->SetText("步数");
-    stepsString->SetFont(DEFAULT_VECTOR_FONT_FILENAME, TITLE_FONT_SIZE);
-    stepsString->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);
-
-    todayString = new UILabel();
-    if (todayString == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitView todayString is nullptr");
-    }
-    todayString->SetPosition(STEPS_STRING_POSITION_X, STEPS_STRING_POSITION_Y, TEXT_WIDTH, TEXT_HEIGHT);
-    todayString->SetText("今天");
-    todayString->SetFont(DEFAULT_VECTOR_FONT_FILENAME, STRING_FONT_SIZE);
-    todayString->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);
-    todayString->SetStyle(STYLE_TEXT_COLOR, Color::Gray().full);
-
-    achievedString = new UILabel();
-    if (achievedString == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitView achievedString is nullptr");
-    }
-    achievedString->SetPosition(STEPS_STRING_POSITION_X, STEPS_STRING_POSITION_Y, TEXT_WIDTH, TEXT_HEIGHT);
-    achievedString->SetText("/10000步");
-    achievedString->SetFont(DEFAULT_VECTOR_FONT_FILENAME, STRING_FONT_SIZE);
-    achievedString->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);
-    achievedString->SetStyle(STYLE_TEXT_COLOR, Color::Gray().full);
-
-    stepsLabel = new UILabel();
-    if (stepsLabel == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitView stepsLabel is nullptr");
-    }
-    stepsLabel->SetPosition(STEPS_COUNT_POSITION_X, STEPS_COUNT_POSITION_Y, VALUE_WIDTH, VALUE_HEIGHT);
-    stepsLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, DATA_FONT_SIZE);
-    stepsLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);
-}
-
-void ActivityWeekView::InitAvgLabel()
-{
-    avgString = new UILabel();
-    if (avgString == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitView avgString is nullptr");
-    }
-    avgString->SetPosition(AVG_STEP_POSITION_X, AVG_POSITION_Y, TEXT_WIDTH, TEXT_HEIGHT);
-    avgString->SetText("周平均");
-    avgString->SetFont(DEFAULT_VECTOR_FONT_FILENAME, STRING_FONT_SIZE);
-    avgString->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);
-    avgString->SetStyle(STYLE_TEXT_COLOR, Color::Gray().full);
-
-    behindAvgString = new UILabel();
-    if (behindAvgString == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitView behindAvgString is nullptr");
-    }
-    behindAvgString->SetPosition(AVG_STEP_POSITION_X, AVG_POSITION_Y, TEXT_WIDTH, TEXT_HEIGHT);
-    behindAvgString->SetText("步");
-    behindAvgString->SetFont(DEFAULT_VECTOR_FONT_FILENAME, STRING_FONT_SIZE);
-    behindAvgString->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);
-    behindAvgString->SetStyle(STYLE_TEXT_COLOR, Color::Gray().full);
-
-    avgStepLabel = new UILabel();
-    if (avgStepLabel == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitView avgStepLabel is nullptr");
-    }
-    avgStepLabel->SetPosition(AVG_STEP_POSITION_X, AVG_STEP_POSITION_Y, VALUE_WIDTH, VALUE_HEIGHT);
-    avgStepLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, DATA_FONT_SIZE);
-    avgStepLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);
-
-    chartString = new UILabel();
-    if (chartString == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitView chartString is nullptr");
-    }
-    chartString->SetPosition(WEEKDAYLABEL_POSITION_X, CHART_STRING_Y, CHART_STRING_WIDTH, CHART_STRING_HEIGHT);
-    chartString->SetText("10000");
-    chartString->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SAMLL_FONT_SIZE);
-    chartString->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);
-    chartString->SetStyle(STYLE_TEXT_COLOR, Color::Gray().full);
-}
-
-void ActivityWeekView::InitUICanvas()
-{
-    chartHighest = new UICanvas();
-    if (chartHighest == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitView chartHighest is nullptr");
-    }
-    chartHighest->SetPosition(WEEKDAYLABEL_POSITION_X, WEEKDAYVIEW_HIGHEST_Y, LINE_WIDTH, LINE_HEIGHT);
-    chartHighest->SetStyle(STYLE_BACKGROUND_COLOR,  Color::Gray().full);
-    chartHighest->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);
-
-    chartLowest = new UICanvas();
-    if (chartLowest == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitView chartLowest is nullptr");
-    }
-    chartLowest->SetPosition(WEEKDAYLABEL_POSITION_X, WEEKDAYVIEW_LOWEST_Y, LINE_WIDTH, LINE_HEIGHT);
-    chartLowest->SetStyle(STYLE_BACKGROUND_COLOR,  Color::GetColorFromRGB(0x00, 165, 230).full);
-    chartLowest->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);
-}
-
-void ActivityWeekView::InitDraggble()
-{
-    UIView::OnDragListener *earDragListener = (UIView::OnDragListener *)OHOS::ActivityPresenter::GetInstance();
-    if (earDragListener == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitDraggble earDragListener GetInstance fail");
-        return;
-    }
-    SetOnDragListener(earDragListener);
-    SetViewId(ACTIVITY_WEEK_VIEW);
-    SetDraggable(true);
-    SetTouchable(true);
-}
-
-bool ActivityWeekView::InitView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ActivityWeekView InitView");
-    InitStepLabel();
-    Add(imageViewShoe);
-    Add(stepsString);
-    Add(todayString);
-    Add(achievedString);
-    Add(stepsLabel);
-
-    InitAvgLabel();
-    Add(avgString);
-    Add(behindAvgString);
-    Add(avgStepLabel);
-    Add(chartString);
-
-    InitUICanvas();
-    Add(chartHighest);
-    for (int i = 0; i < DAYS; i++) {
-        view[i] = CreateUIView(WEEKDAYLABEL_POSITION_X + WIDTH_BETWEEN_VIEW * i, WEEKDAYVIEW_HIGHEST_Y);
-        if (view[i] == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitView view[%d] is nullptr", i);
-            return false;
-        }
-        weekDayLabel[i] = new UILabel();
-        if (weekDayLabel[i] == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitView weekDayLabel[%d] is nullptr", i);
-            return false;
-        }
-        weekDayLabel[i]->SetPosition(WEEKDAYLABEL_POSITION_X + WIDTH_BETWEEN_VIEW * i, WEEKDAYLABEL_POSITION_Y,
-                                     UIVIEW_WIDTH, UIVIEW_WIDTH);
-        weekDayLabel[i]->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
-        weekDayLabel[i]->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);
-        weekDayLabel[i]->SetText(WEEK_DAY[i]);
-        weekDayLabel[i]->SetStyle(STYLE_TEXT_COLOR, Color::Gray().full);
-        weekDayLabel[i]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, COORDINATE_FONT_SIZE);
-        weekDayLabel[i]->SetAlign(TEXT_ALIGNMENT_CENTER);
-        Add(view[i]);
-        Add(weekDayLabel[i]);
-    }
-    Add(chartLowest);
-    InitDraggble();
-    InitWeekView();
-    InitSteps();
-    InitAvgStep();
-
-    return true;
-}
-
-void ActivityWeekView::PreLoad(void)
-{
-    if (!viewiInitStatus) {
-        if (InitView()) {
-            viewiInitStatus = true;
-        }
-    }
-
-    if (!resLoadStatus) {
-        ImageInfo* img = ImageCacheManager::GetInstance().LoadSingleRes(PNG_STEP_SHOE_IMAGE_PATH);
-        if (img != nullptr) {
-            imageViewShoe->SetSrc(img);
-            resLoadStatus = true;
-        }
-    }
-}
-
-void ActivityWeekView::UnLoad(void)
-{
-    if (resLoadStatus) {
-        ImageInfo* img = nullptr;
-        imageViewShoe->SetSrc(img);
-        ImageCacheManager::GetInstance().UnloadSingleRes(PNG_STEP_SHOE_IMAGE_PATH);
-        resLoadStatus = false;
-    }
-}
-
-void ActivityWeekView::RefreshSteps(int step)
-{
-    if (stepsLabel == nullptr) {
-        return;
-    }
-    char stepChar[STEP_CHAR_NUM] = {0};
-
-    (void)sprintf_s(stepChar, STEP_CHAR_NUM, "%d", step);
-    stepsLabel->SetText(stepChar);
-
-    int stepDigits = strnlen(stepChar, STEP_CHAR_NUM);
-    // 2 : half width
-    int todayStringPosX = CENTER_POSITION_X - (STEP_STRING_TOTAL_LENGTH + stepDigits * NUM_LENGTH) / 2;
-    todayString->SetPosition(todayStringPosX, STEPS_STRING_POSITION_Y);
-    todayString->Invalidate();
-    int stepsLabelPosX = todayStringPosX + TODAY_STRING_LENGTH;
-    stepsLabel->SetPosition(stepsLabelPosX, STEPS_COUNT_POSITION_Y);
-    stepsLabel->Invalidate();
-    int achievedStrPosX = stepsLabelPosX + stepDigits * NUM_LENGTH;
-    achievedString->SetPosition(achievedStrPosX, STEPS_STRING_POSITION_Y);
-    achievedString->Invalidate();
-}
-
-void ActivityWeekView::RefreshTodayView(int step)
-{
-    // 10000:the actual number of steps corresponding to the interval
-    int todayHeight = step * (WEEKDAYVIEW_LOWEST_Y - WEEKDAYVIEW_HIGHEST_Y) / 10000;
-    int today = ActivityModel::GetInstance()->GetWeekToday();
-    if (view[today] == nullptr) {
-        return;
-    }
-    view[today]->SetPosition(WEEKDAYLABEL_POSITION_X + WIDTH_BETWEEN_VIEW * today, WEEKDAYVIEW_LOWEST_Y - todayHeight);
-    view[today]->Resize(UIVIEW_WIDTH, todayHeight + HIDDEN_SRC_LENGTH);
-    view[today]->Invalidate();
-}
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Activity\r
+ * Author:\r
+ * Create: 2021-10-18\r
+ */\r
+\r
+#include "ActivityWeekView.h"\r
+#include "ActivityPresenter.h"\r
+#include "common/image_cache_manager.h"\r
+\r
+namespace OHOS {\r
+static constexpr uint16_t CHAR_LENGTH = 10;\r
+static constexpr uint16_t UIVIEW_WIDTH = 30;\r
+static constexpr uint16_t UIVIEW_HEIGHT = 90;\r
+static constexpr uint16_t TITLE_STEP_WIDTH = 80;\r
+static constexpr uint16_t TITLE_STEP_HEIGHT = 40;\r
+static constexpr uint16_t TEXT_WIDTH = 150;\r
+static constexpr uint16_t TEXT_HEIGHT = 35;\r
+static constexpr uint16_t VALUE_WIDTH = 130;\r
+static constexpr uint16_t VALUE_HEIGHT = 38;\r
+static constexpr uint16_t LINE_WIDTH = 360;\r
+static constexpr uint16_t LINE_HEIGHT = 2;\r
+static constexpr uint16_t CHART_STRING_WIDTH = 150;\r
+static constexpr uint16_t CHART_STRING_HEIGHT = 20;\r
+static constexpr uint16_t STEPS_POSITION_X = 220;\r
+static constexpr uint16_t STEPS_POSITION_Y = 40;\r
+static constexpr uint16_t WEEKDAYVIEW_HIGHEST_Y = 210;\r
+static constexpr uint16_t WEEKDAYVIEW_LOWEST_Y = 300;\r
+static constexpr uint16_t CHART_STRING_Y = WEEKDAYVIEW_HIGHEST_Y - 20;\r
+static constexpr uint16_t WEEKDAYLABEL_POSITION_X = 47;\r
+static constexpr uint16_t WEEKDAYLABEL_POSITION_Y = 302;\r
+static constexpr uint16_t AVG_STEP_POSITION_X = 99;\r
+static constexpr uint16_t AVG_STEP_POSITION_Y = 357;\r
+static constexpr uint16_t AVG_POSITION_Y = 360;\r
+static constexpr uint16_t STEPS_STRING_POSITION_X = 144;\r
+static constexpr uint16_t STEPS_STRING_POSITION_Y = 100;\r
+static constexpr uint16_t STEPS_COUNT_POSITION_X = 144;\r
+static constexpr uint16_t STEPS_COUNT_POSITION_Y = 97;\r
+static constexpr uint16_t CENTER_POSITION_X = 227;\r
+static constexpr uint16_t STEP_STRING_TOTAL_LENGTH = 170;\r
+static constexpr uint16_t AVG_STRING_TOTAL_LENGTH = 120;\r
+static constexpr uint16_t NUM_LENGTH = 18;\r
+static constexpr uint16_t TODAY_STRING_LENGTH = 63;\r
+static constexpr uint16_t AVG_STRING_LENGTH = 93;\r
+static constexpr uint16_t HIDDEN_SRC_LENGTH = 20;\r
+static constexpr uint16_t WIDTH_BETWEEN_VIEW = 55;\r
+static constexpr uint16_t IMAGE_POSITION_X = STEPS_POSITION_X - 50;\r
+\r
+static constexpr uint16_t TITLE_FONT_SIZE = 35;\r
+static constexpr uint16_t STRING_FONT_SIZE = 30;\r
+static constexpr uint16_t DATA_FONT_SIZE = 33;\r
+static constexpr uint16_t SAMLL_FONT_SIZE = 15;\r
+static constexpr uint16_t COORDINATE_FONT_SIZE = 20;\r
+static constexpr char const *WEEK_DAY[DAYS] = {"一", "二", "三", "四", "五", "六", "日"};\r
+static constexpr uint16_t STEP_CHAR_NUM = 255;\r
+static constexpr uint16_t AVG_CHAR_NUM = 255;\r
+static constexpr uint16_t MAX_STEPS = 65535;\r
+\r
+static ActivityWeekView *g_pActivityWeekView = nullptr;\r
+\r
+ActivityWeekView::ActivityWeekView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::ActivityWeekView");\r
+    SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
+    g_pActivityWeekView = this;\r
+}\r
+\r
+ActivityWeekView::~ActivityWeekView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::~ActivityWeekView");\r
+    if (viewiInitStatus == true) {\r
+        RemoveAll();\r
+        for (int i = 0; i < DAYS; i++) {\r
+            delete view[i];\r
+            view[i] = nullptr;\r
+            delete weekDayLabel[i];\r
+            weekDayLabel[i] = nullptr;\r
+        }\r
+        delete imageViewShoe;\r
+        imageViewShoe = nullptr;\r
+        delete avgStepLabel;\r
+        avgStepLabel = nullptr;\r
+        delete stepsString;\r
+        stepsString = nullptr;\r
+        delete stepsLabel;\r
+        stepsLabel = nullptr;\r
+        delete todayString;\r
+        todayString = nullptr;\r
+        delete achievedString;\r
+        achievedString = nullptr;\r
+        delete avgString;\r
+        avgString = nullptr;\r
+        delete behindAvgString;\r
+        behindAvgString = nullptr;\r
+        delete chartString;\r
+        chartString = nullptr;\r
+        delete chartHighest;\r
+        chartHighest = nullptr;\r
+        delete chartLowest;\r
+        chartLowest = nullptr;\r
+    }\r
+    g_pActivityWeekView = nullptr;\r
+}\r
+\r
+ActivityWeekView *ActivityWeekView::GetInstance(void)\r
+{\r
+    return g_pActivityWeekView;\r
+}\r
+\r
+UIView *ActivityWeekView::CreateUIView(int16_t x, int16_t y)\r
+{\r
+    UIView *view = new UIView();\r
+    if (view == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitView view is nullptr");\r
+        return nullptr;\r
+    }\r
+    view->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(0x00, 165, 230).full);\r
+    view->SetStyle(STYLE_BACKGROUND_OPA, 127); // 127 : background opacity\r
+    view->SetStyle(STYLE_BORDER_COLOR, Color::Gray().full);\r
+    view->SetStyle(STYLE_BORDER_OPA, 127); // 127 : border opacity\r
+    view->SetStyle(STYLE_BORDER_WIDTH, 0); // 0 : border width\r
+    view->SetStyle(STYLE_PADDING_LEFT, 0);\r
+    view->SetStyle(STYLE_PADDING_RIGHT, 0);\r
+    view->SetStyle(STYLE_PADDING_TOP, 0);\r
+    view->SetStyle(STYLE_PADDING_BOTTOM, 0);\r
+    view->SetStyle(STYLE_MARGIN_LEFT, 0);\r
+    view->SetStyle(STYLE_MARGIN_RIGHT, 0);\r
+    view->SetStyle(STYLE_MARGIN_TOP, 0);\r
+    view->SetStyle(STYLE_MARGIN_BOTTOM, 0);\r
+    view->SetPosition(x, y);\r
+    view->SetStyle(STYLE_BORDER_RADIUS, UIVIEW_WIDTH / 2 + 10); // 2 : half width 10 : offset\r
+    return view;\r
+}\r
+\r
+void ActivityWeekView::InitSteps()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitSteps");\r
+    uint32_t stepValue = 0;\r
+    int weekToday = ActivityModel::GetInstance()->GetWeekToday();\r
+    ActivityModel::GetInstance()->GetStepData((StepDataDistribute)weekToday, &stepValue);\r
+    char stepChar[STEP_CHAR_NUM] = {0};\r
+    (void)sprintf_s(stepChar, STEP_CHAR_NUM, "%d", stepValue);\r
+\r
+    if (stepsLabel == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitSteps nullptr");\r
+        return;\r
+    }\r
+    stepsLabel->SetText(stepChar);\r
+\r
+    int stepDigits = strnlen(stepChar, STEP_CHAR_NUM);\r
+    int todayStringPosX = CENTER_POSITION_X - (STEP_STRING_TOTAL_LENGTH + stepDigits * NUM_LENGTH) / 2; // 2: half width\r
+    todayString->SetPosition(todayStringPosX, STEPS_STRING_POSITION_Y);\r
+    int stepsLabelPosX = todayStringPosX + TODAY_STRING_LENGTH;\r
+    stepsLabel->SetPosition(stepsLabelPosX, STEPS_COUNT_POSITION_Y);\r
+    int achievedStrPosX = stepsLabelPosX + stepDigits * NUM_LENGTH;\r
+    achievedString->SetPosition(achievedStrPosX, STEPS_STRING_POSITION_Y);\r
+}\r
+\r
+void ActivityWeekView::InitWeekView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitWeekView");\r
+    uint32_t weekValue = 0;\r
+    for (int i = MONDAY_STEP_COUNTER; i <= SUNDAY_STEP_COUNTER; ++i) {\r
+        ActivityModel::GetInstance()->GetStepData((StepDataDistribute)i, &weekValue);\r
+        int weekday = i - MONDAY_STEP_COUNTER;\r
+        // 10000:the actual number of steps corresponding to the interval\r
+        int viewHeight = weekValue * (WEEKDAYVIEW_LOWEST_Y - WEEKDAYVIEW_HIGHEST_Y) / 10000;\r
+        if (view[weekday] == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitWeekView view[%d] is nullptr", weekday);\r
+            return;\r
+        }\r
+        view[weekday]->SetPosition(WEEKDAYLABEL_POSITION_X + WIDTH_BETWEEN_VIEW * weekday,\r
+                                   WEEKDAYVIEW_LOWEST_Y - viewHeight);\r
+        view[weekday]->Resize(UIVIEW_WIDTH, viewHeight + HIDDEN_SRC_LENGTH);\r
+        view[weekday]->Invalidate();\r
+    }\r
+}\r
+\r
+void ActivityWeekView::InitAvgStep()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitAvgStep");\r
+    uint32_t weekStep = 0;\r
+    uint32_t stepValue = 0;\r
+    int today = ActivityModel::GetInstance()->GetWeekToday();\r
+    int todayType = today + MONDAY_STEP_COUNTER;\r
+    for (int i = MONDAY_STEP_COUNTER; i < todayType; ++i) {\r
+        ActivityModel::GetInstance()->GetStepData((StepDataDistribute)i, &stepValue);\r
+        weekStep += stepValue;\r
+    }\r
+    int avgDays = today;\r
+    uint32_t avgStep = 0;\r
+    if (avgDays != 0) {\r
+        avgStep = weekStep / avgDays;\r
+    }\r
+\r
+    char avgChar[AVG_CHAR_NUM] = {0};\r
+    (void)sprintf_s(avgChar, AVG_CHAR_NUM, "%d", avgStep);\r
+    if (avgStepLabel == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitAvgStep nullptr");\r
+        return;\r
+    }\r
+    avgStepLabel->SetText(avgChar);\r
+\r
+    int avgDigits = strnlen(avgChar, AVG_CHAR_NUM);\r
+    int avgStringPosX = CENTER_POSITION_X - (AVG_STRING_TOTAL_LENGTH  + avgDigits * NUM_LENGTH) / 2; // 2 : half width\r
+    avgString->SetPosition(avgStringPosX, AVG_POSITION_Y);\r
+    int avgStepLabelPosX = avgStringPosX + AVG_STRING_LENGTH;\r
+    avgStepLabel->SetPosition(avgStepLabelPosX, AVG_STEP_POSITION_Y);\r
+    int behindAvgStrPosX = avgStepLabelPosX + avgDigits * NUM_LENGTH;\r
+    behindAvgString->SetPosition(behindAvgStrPosX, AVG_POSITION_Y);\r
+}\r
+\r
+void ActivityWeekView::InitStepLabel()\r
+{\r
+    imageViewShoe = new UIImageView();\r
+    if (imageViewShoe == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitView imageViewShoe is nullptr");\r
+    }\r
+    imageViewShoe->SetPosition(IMAGE_POSITION_X, STEPS_POSITION_Y, TITLE_FONT_SIZE, TITLE_FONT_SIZE);\r
+\r
+    stepsString = new UILabel();\r
+    if (stepsString == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitView stepsString is nullptr");\r
+    }\r
+    stepsString->SetPosition(STEPS_POSITION_X, STEPS_POSITION_Y, TITLE_STEP_WIDTH, TITLE_STEP_HEIGHT);\r
+    stepsString->SetText("步数");\r
+    stepsString->SetFont(DEFAULT_VECTOR_FONT_FILENAME, TITLE_FONT_SIZE);\r
+    stepsString->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
+\r
+    todayString = new UILabel();\r
+    if (todayString == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitView todayString is nullptr");\r
+    }\r
+    todayString->SetPosition(STEPS_STRING_POSITION_X, STEPS_STRING_POSITION_Y, TEXT_WIDTH, TEXT_HEIGHT);\r
+    todayString->SetText("今天");\r
+    todayString->SetFont(DEFAULT_VECTOR_FONT_FILENAME, STRING_FONT_SIZE);\r
+    todayString->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
+    todayString->SetStyle(STYLE_TEXT_COLOR, Color::Gray().full);\r
+\r
+    achievedString = new UILabel();\r
+    if (achievedString == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitView achievedString is nullptr");\r
+    }\r
+    achievedString->SetPosition(STEPS_STRING_POSITION_X, STEPS_STRING_POSITION_Y, TEXT_WIDTH, TEXT_HEIGHT);\r
+    achievedString->SetText("/10000步");\r
+    achievedString->SetFont(DEFAULT_VECTOR_FONT_FILENAME, STRING_FONT_SIZE);\r
+    achievedString->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
+    achievedString->SetStyle(STYLE_TEXT_COLOR, Color::Gray().full);\r
+\r
+    stepsLabel = new UILabel();\r
+    if (stepsLabel == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitView stepsLabel is nullptr");\r
+    }\r
+    stepsLabel->SetPosition(STEPS_COUNT_POSITION_X, STEPS_COUNT_POSITION_Y, VALUE_WIDTH, VALUE_HEIGHT);\r
+    stepsLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, DATA_FONT_SIZE);\r
+    stepsLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
+}\r
+\r
+void ActivityWeekView::InitAvgLabel()\r
+{\r
+    avgString = new UILabel();\r
+    if (avgString == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitView avgString is nullptr");\r
+    }\r
+    avgString->SetPosition(AVG_STEP_POSITION_X, AVG_POSITION_Y, TEXT_WIDTH, TEXT_HEIGHT);\r
+    avgString->SetText("周平均");\r
+    avgString->SetFont(DEFAULT_VECTOR_FONT_FILENAME, STRING_FONT_SIZE);\r
+    avgString->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
+    avgString->SetStyle(STYLE_TEXT_COLOR, Color::Gray().full);\r
+\r
+    behindAvgString = new UILabel();\r
+    if (behindAvgString == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitView behindAvgString is nullptr");\r
+    }\r
+    behindAvgString->SetPosition(AVG_STEP_POSITION_X, AVG_POSITION_Y, TEXT_WIDTH, TEXT_HEIGHT);\r
+    behindAvgString->SetText("步");\r
+    behindAvgString->SetFont(DEFAULT_VECTOR_FONT_FILENAME, STRING_FONT_SIZE);\r
+    behindAvgString->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
+    behindAvgString->SetStyle(STYLE_TEXT_COLOR, Color::Gray().full);\r
+\r
+    avgStepLabel = new UILabel();\r
+    if (avgStepLabel == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitView avgStepLabel is nullptr");\r
+    }\r
+    avgStepLabel->SetPosition(AVG_STEP_POSITION_X, AVG_STEP_POSITION_Y, VALUE_WIDTH, VALUE_HEIGHT);\r
+    avgStepLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, DATA_FONT_SIZE);\r
+    avgStepLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
+\r
+    chartString = new UILabel();\r
+    if (chartString == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitView chartString is nullptr");\r
+    }\r
+    chartString->SetPosition(WEEKDAYLABEL_POSITION_X, CHART_STRING_Y, CHART_STRING_WIDTH, CHART_STRING_HEIGHT);\r
+    chartString->SetText("10000");\r
+    chartString->SetFont(DEFAULT_VECTOR_FONT_FILENAME, SAMLL_FONT_SIZE);\r
+    chartString->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
+    chartString->SetStyle(STYLE_TEXT_COLOR, Color::Gray().full);\r
+}\r
+\r
+void ActivityWeekView::InitUICanvas()\r
+{\r
+    chartHighest = new UICanvas();\r
+    if (chartHighest == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitView chartHighest is nullptr");\r
+    }\r
+    chartHighest->SetPosition(WEEKDAYLABEL_POSITION_X, WEEKDAYVIEW_HIGHEST_Y, LINE_WIDTH, LINE_HEIGHT);\r
+    chartHighest->SetStyle(STYLE_BACKGROUND_COLOR,  Color::Gray().full);\r
+    chartHighest->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
+\r
+    chartLowest = new UICanvas();\r
+    if (chartLowest == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitView chartLowest is nullptr");\r
+    }\r
+    chartLowest->SetPosition(WEEKDAYLABEL_POSITION_X, WEEKDAYVIEW_LOWEST_Y, LINE_WIDTH, LINE_HEIGHT);\r
+    chartLowest->SetStyle(STYLE_BACKGROUND_COLOR,  Color::GetColorFromRGB(0x00, 165, 230).full);\r
+    chartLowest->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
+}\r
+\r
+void ActivityWeekView::InitDraggble()\r
+{\r
+    UIView::OnDragListener *earDragListener = (UIView::OnDragListener *)OHOS::ActivityPresenter::GetInstance();\r
+    if (earDragListener == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitDraggble earDragListener GetInstance fail");\r
+        return;\r
+    }\r
+    SetOnDragListener(earDragListener);\r
+    SetViewId(ACTIVITY_WEEK_VIEW);\r
+    SetDraggable(true);\r
+    SetTouchable(true);\r
+}\r
+\r
+bool ActivityWeekView::InitView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ActivityWeekView InitView");\r
+    InitStepLabel();\r
+    Add(imageViewShoe);\r
+    Add(stepsString);\r
+    Add(todayString);\r
+    Add(achievedString);\r
+    Add(stepsLabel);\r
+\r
+    InitAvgLabel();\r
+    Add(avgString);\r
+    Add(behindAvgString);\r
+    Add(avgStepLabel);\r
+    Add(chartString);\r
+\r
+    InitUICanvas();\r
+    Add(chartHighest);\r
+    for (int i = 0; i < DAYS; i++) {\r
+        view[i] = CreateUIView(WEEKDAYLABEL_POSITION_X + WIDTH_BETWEEN_VIEW * i, WEEKDAYVIEW_HIGHEST_Y);\r
+        if (view[i] == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitView view[%d] is nullptr", i);\r
+            return false;\r
+        }\r
+        weekDayLabel[i] = new UILabel();\r
+        if (weekDayLabel[i] == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ActivityWeekView::InitView weekDayLabel[%d] is nullptr", i);\r
+            return false;\r
+        }\r
+        weekDayLabel[i]->SetPosition(WEEKDAYLABEL_POSITION_X + WIDTH_BETWEEN_VIEW * i, WEEKDAYLABEL_POSITION_Y,\r
+                                     UIVIEW_WIDTH, UIVIEW_WIDTH);\r
+        weekDayLabel[i]->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
+        weekDayLabel[i]->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
+        weekDayLabel[i]->SetText(WEEK_DAY[i]);\r
+        weekDayLabel[i]->SetStyle(STYLE_TEXT_COLOR, Color::Gray().full);\r
+        weekDayLabel[i]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, COORDINATE_FONT_SIZE);\r
+        weekDayLabel[i]->SetAlign(TEXT_ALIGNMENT_CENTER);\r
+        Add(view[i]);\r
+        Add(weekDayLabel[i]);\r
+    }\r
+    Add(chartLowest);\r
+    InitDraggble();\r
+    InitWeekView();\r
+    InitSteps();\r
+    InitAvgStep();\r
+\r
+    return true;\r
+}\r
+\r
+void ActivityWeekView::PreLoad(void)\r
+{\r
+    if (!viewiInitStatus) {\r
+        if (InitView()) {\r
+            viewiInitStatus = true;\r
+        }\r
+    }\r
+\r
+    if (!resLoadStatus) {\r
+        ImageInfo* img = ImageCacheManager::GetInstance().LoadSingleRes(PNG_STEP_SHOE_IMAGE_PATH);\r
+        if (img != nullptr) {\r
+            imageViewShoe->SetSrc(img);\r
+            resLoadStatus = true;\r
+        }\r
+    }\r
+}\r
+\r
+void ActivityWeekView::UnLoad(void)\r
+{\r
+    if (resLoadStatus) {\r
+        ImageInfo* img = nullptr;\r
+        imageViewShoe->SetSrc(img);\r
+        ImageCacheManager::GetInstance().UnloadSingleRes(PNG_STEP_SHOE_IMAGE_PATH);\r
+        resLoadStatus = false;\r
+    }\r
+}\r
+\r
+void ActivityWeekView::RefreshSteps(int step)\r
+{\r
+    if (stepsLabel == nullptr) {\r
+        return;\r
+    }\r
+    char stepChar[STEP_CHAR_NUM] = {0};\r
+\r
+    (void)sprintf_s(stepChar, STEP_CHAR_NUM, "%d", step);\r
+    stepsLabel->SetText(stepChar);\r
+\r
+    int stepDigits = strnlen(stepChar, STEP_CHAR_NUM);\r
+    // 2 : half width\r
+    int todayStringPosX = CENTER_POSITION_X - (STEP_STRING_TOTAL_LENGTH + stepDigits * NUM_LENGTH) / 2;\r
+    todayString->SetPosition(todayStringPosX, STEPS_STRING_POSITION_Y);\r
+    todayString->Invalidate();\r
+    int stepsLabelPosX = todayStringPosX + TODAY_STRING_LENGTH;\r
+    stepsLabel->SetPosition(stepsLabelPosX, STEPS_COUNT_POSITION_Y);\r
+    stepsLabel->Invalidate();\r
+    int achievedStrPosX = stepsLabelPosX + stepDigits * NUM_LENGTH;\r
+    achievedString->SetPosition(achievedStrPosX, STEPS_STRING_POSITION_Y);\r
+    achievedString->Invalidate();\r
+}\r
+\r
+void ActivityWeekView::RefreshTodayView(int step)\r
+{\r
+    // 10000:the actual number of steps corresponding to the interval\r
+    int todayHeight = step * (WEEKDAYVIEW_LOWEST_Y - WEEKDAYVIEW_HIGHEST_Y) / 10000;\r
+    int today = ActivityModel::GetInstance()->GetWeekToday();\r
+    if (view[today] == nullptr) {\r
+        return;\r
+    }\r
+    view[today]->SetPosition(WEEKDAYLABEL_POSITION_X + WIDTH_BETWEEN_VIEW * today, WEEKDAYVIEW_LOWEST_Y - todayHeight);\r
+    view[today]->Resize(UIVIEW_WIDTH, todayHeight + HIDDEN_SRC_LENGTH);\r
+    view[today]->Invalidate();\r
+}\r
+}\r
index d0d64ba..92fa460 100644 (file)
@@ -1,81 +1,81 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: MainActivityView
- * Author:
- * Create: 2021-10-18
- */
-
-#include "components/ui_label.h"
-#include "MainActivityView.h"
-
-namespace OHOS {
-
-static MainActivityView *g_pMainActivityView = nullptr;
-
-MainActivityView::MainActivityView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainActivityView::MainActivityView");
-    g_pMainActivityView = this;
-}
-
-MainActivityView::~MainActivityView()
-{
-    delete activityWeekView;
-    activityWeekView = nullptr;
-    g_pMainActivityView = nullptr;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainActivityView::~MainActivityView");
-}
-
-MainActivityView *MainActivityView::GetInstance()
-{
-    return g_pMainActivityView;
-}
-
-void MainActivityView::OnStart()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainActivityView::OnStart");
-    View<ActivityPresenter>::OnStart();
-    BaseView::RootView(Color::Black().full);
-    activityWeekView = new ActivityWeekView();
-    if (activityWeekView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainActivityView:: OnStart activityWeekView null");
-        return;
-    }
-    activityWeekView->PreLoad();
-}
-
-void MainActivityView::OnSetUpView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainActivityView::OnSetUpView");
-    View<ActivityPresenter>::OnSetUpView();
-    if (activityWeekView == nullptr) {
-        return;
-    }
-    RootView::GetInstance()->Add(activityWeekView);
-    // show timerView
-    Draw();
-}
-
-void MainActivityView::OnTearDownView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainActivityView::OnTearDownView");
-    View<ActivityPresenter>::OnTearDownView();
-    return;
-}
-
-void MainActivityView::OnStop()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainActivityView::OnStop");
-    View<ActivityPresenter>::OnStop();
-
-    if (container_ != nullptr) {
-        container_->RemoveAll();
-        delete container_;
-        container_ = nullptr;
-    }
-    RootView::GetInstance()->ClearOnKeyActListener();
-    RootView::GetInstance()->RemoveAll();
-    return;
-}
-
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: MainActivityView\r
+ * Author:\r
+ * Create: 2021-10-18\r
+ */\r
+\r
+#include "components/ui_label.h"\r
+#include "MainActivityView.h"\r
+\r
+namespace OHOS {\r
+\r
+static MainActivityView *g_pMainActivityView = nullptr;\r
+\r
+MainActivityView::MainActivityView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainActivityView::MainActivityView");\r
+    g_pMainActivityView = this;\r
+}\r
+\r
+MainActivityView::~MainActivityView()\r
+{\r
+    delete activityWeekView;\r
+    activityWeekView = nullptr;\r
+    g_pMainActivityView = nullptr;\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainActivityView::~MainActivityView");\r
+}\r
+\r
+MainActivityView *MainActivityView::GetInstance()\r
+{\r
+    return g_pMainActivityView;\r
+}\r
+\r
+void MainActivityView::OnStart()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainActivityView::OnStart");\r
+    View<ActivityPresenter>::OnStart();\r
+    BaseView::RootView(Color::Black().full);\r
+    activityWeekView = new ActivityWeekView();\r
+    if (activityWeekView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainActivityView:: OnStart activityWeekView null");\r
+        return;\r
+    }\r
+    activityWeekView->PreLoad();\r
+}\r
+\r
+void MainActivityView::OnSetUpView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainActivityView::OnSetUpView");\r
+    View<ActivityPresenter>::OnSetUpView();\r
+    if (activityWeekView == nullptr) {\r
+        return;\r
+    }\r
+    RootView::GetInstance()->Add(activityWeekView);\r
+    // show timerView\r
+    Draw();\r
+}\r
+\r
+void MainActivityView::OnTearDownView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainActivityView::OnTearDownView");\r
+    View<ActivityPresenter>::OnTearDownView();\r
+    return;\r
+}\r
+\r
+void MainActivityView::OnStop()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainActivityView::OnStop");\r
+    View<ActivityPresenter>::OnStop();\r
+\r
+    if (container_ != nullptr) {\r
+        container_->RemoveAll();\r
+        delete container_;\r
+        container_ = nullptr;\r
+    }\r
+    RootView::GetInstance()->ClearOnKeyActListener();\r
+    RootView::GetInstance()->RemoveAll();\r
+    return;\r
+}\r
+\r
+}\r
index 189d5c2..074df44 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: AlarmClockModel
- * Create: 2021-09-22
- */
-
-#ifndef ALARM_CLOCK_MODEL_H
-#define ALARM_CLOCK_MODEL_H
-
-#include "ohos_types.h"
-#include "list.h"
-#include "AlmmgrAlarmClockManage.h"
-#include "player.h"
-#include "source.h"
-#include "broadcast_feature.h"
-#include "audio_manager.h"
-#include "audio_base_type.h"
-#include "ChangeSliceListener.h"
-#include "msg_center.h"
-
-constexpr uint32_t LIST_ALARM_CLOCK_MAX = 20;
-constexpr uint32_t ALARM_DEC_NUM_256 = 256;
-
-namespace OHOS {
-using OHOS::Media::Player;
-using OHOS::Media::Source;
-using namespace OHOS::Media;
-using namespace Audio;
-using Audio::AudioManager;
-
-struct AlarmPlayerCaseInfo {
-    char sliceId[ALARM_DEC_NUM_256];
-    int16_t index;
-};
-
-// 播放器
-class AlarmPlayerListener : public InterruptListener {
-public:
-    AlarmPlayerListener() {}
-    ~AlarmPlayerListener() {}
-
-    void SetOwner(std::shared_ptr<Player> player);
-    void RestFlag();
-    bool IsPaused();
-    bool IsDelayed();
-    bool IsResumed();
-    bool IsBeginStopped();
-    bool IsEndStopped();
-    void StopAlarm();
-    void OnInterrupt(int32_t type, int32_t hint) override;
-
-private:
-    std::shared_ptr<Player> player_{nullptr};
-    bool isPaused_{false};
-    bool isDelayed_{false};
-    bool isResumed_{false};
-    bool isBeginStopped_{false};
-    bool isEndStopped_{false};
-};
-
-// 播放器回调
-class AlarmPlayerCallbackImpl : public OHOS::Media::PlayerCallback {
-public:
-    AlarmPlayerCallbackImpl() {}
-    ~AlarmPlayerCallbackImpl() {}
-    void OnPlaybackComplete();
-    void OnError(int32_t errorType, int32_t errorCode);
-    void OnInfo(int type, int extra);
-    void OnRewindToComplete();
-};
-
-class AlarmClockModel {
-public:
-    AlarmClockModel();
-    virtual ~AlarmClockModel();
-    static AlarmClockModel *GetInstance(void);
-    int32_t AddAlarmClock(AlarmClockInfo *alarmInfo);
-    int32_t UpdataAlarmClock(AlarmClockInfo *alarmInfo);
-    int32_t DeleteAlarmClock(AlarmClockInfo *alarmInfo);
-    void SetSerialAdd(void);
-    void SetSerialRdc(void);
-    uint16 GetEventAlarmCnt(void);
-    uint16 GetSmartAlarmCnt(void);
-    uint32 GetAlarmData(void);
-    bool GetClockTime(int16_t alarmNum, uint32_t *clockTime);
-    bool GetClockWeek(int16_t alarmNum, uint8_t *alarmWeek);
-    bool GetClockStatus(int16_t num, uint8_t *alarmEnable);
-    void GetPopTimeData(int16 *hour, int16* min);
-    bool GetClockListenerTime(uint32_t &alarmTime);
-    bool GetListenClockId(uint8_t *alarmId);
-    void GetAlarmCallId(uint8_t *alarmId);
-    bool ButtonStatusRing(int16_t num, bool alarmStatus);
-    void SetAlarmWeek(uint8_t week, int16_t alarmNum);
-    void SetAlarmTime(uint32 time_hour, uint32 time_min, int16_t alarmNum);
-    void SetDelayAlarm(uint8_t alarmId);
-    void SetCancelAlarm(uint8_t alarmId);
-    void DelAlarmDelay(int16_t num);
-    void AlarmClockNotify();
-    void PhoneCallAlarm();
-    void AlarmNextDayNotify();
-    void DeleteClockModel(uint16_t alarmNum);
-    void PhoneCallNotify(void);
-    void BackGroundNotify(void);
-    void NextDayNotify(void);
-    void ResetRingClockStatus(void);
-    void DeactAudioInter(void);
-    void PushAlarmClockData(AlarmClockQueueMsg alarmClockMsg);
-    void PopInterCancelMusic(void);
-    void PopInterPlayMusic(void);
-    void SetAlarmInfo(uint32_t time_hour, uint32_t time_min, uint8 week, uint16_t alarmListener, uint16_t setListener);
-    int GetAlarmNum(void);
-    void SetSliceId(void);
-    uint16_t JudgePreSlice(void);
-    uint16 GetSliceId(void);
-    void AlarmGetClockNum(void);
-    int AlarmPlayerStat();
-    int AlarmPlayerInit(void);
-    int AlarmPlayerStart();
-    int AlarmPlayerStop();
-private:
-    void SetAlarmId(uint8_t id);
-    void DeleteAlarmId(uint8_t id);
-    void NewFirstTime(void);
-    uint8_t GetAlarmId(void);
-    int32_t SaveGlobalAlarmToFile(void);
-    int32_t GetAlarmGlobalData(uint8 id, AlarmClockInfo *info);
-    int32_t InitAlarmClockData(void);
-    int32_t FetchedAlarmClockData(AlarmClockQueueMsg *alarmClockMsg);
-    int32_t GettManagement(AlarmClockManagement *management);
-    int InitAlarmData(void);
-    bool JudgeClockModel(uint16_t alarmNum);
-    std::string uri;
-    std::shared_ptr<PlayerCallback> playerCallback{nullptr};
-    std::map<std::string, std::string> header;
-    std::shared_ptr<Source> source{nullptr};
-    std::shared_ptr<AlarmPlayerListener> playerInterruptListener{nullptr};
-    AudioSession sessionId;
-    AudioInterrupt interrupt;
-    AlarmClockInfo *currentAlarm[5]{nullptr}; // 闹钟最大个数为5
-    std::shared_ptr<Player> playerCtr{nullptr};
-    AlarmClockManagement managementAlarm;
-    uint8_t alarmId[5]{0}; // 事件闹钟的个数是5个
-    uint16_t alarmSerial{0};
-    uint16_t clockListener{0};
-    uint16 preSliceId{0};
-    uint32_t listAlarmClockNum{0};
-    uint32_t lastRunTime{0};
-    uint16_t popHour{0};
-    uint16_t popMin{0};
-    char *sliceId{nullptr};
-    const char *alarmName[6] = {"clock1", "clock2", "clock3", "clock4", "clock5", "clock6"}; // 闹钟名字的最大个数为6
-    List<AlarmClockQueueMsg> listAlarmClock;
-};
-
-extern "C" {
-    void PushAlarmClockDataToModel(AlarmClockQueueMsg alarmClockMsg);
-}
-}
-#endif // ALARM_CLOCK_MODEL_H
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: AlarmClockModel\r
+ * Create: 2021-09-22\r
+ */\r
+\r
+#ifndef ALARM_CLOCK_MODEL_H\r
+#define ALARM_CLOCK_MODEL_H\r
+\r
+#include "ohos_types.h"\r
+#include "list.h"\r
+#include "AlmmgrAlarmClockManage.h"\r
+#include "player.h"\r
+#include "source.h"\r
+#include "broadcast_feature.h"\r
+#include "audio_manager.h"\r
+#include "audio_base_type.h"\r
+#include "ChangeSliceListener.h"\r
+#include "msg_center.h"\r
+\r
+constexpr uint32_t LIST_ALARM_CLOCK_MAX = 20;\r
+constexpr uint32_t ALARM_DEC_NUM_256 = 256;\r
+\r
+namespace OHOS {\r
+using OHOS::Media::Player;\r
+using OHOS::Media::Source;\r
+using namespace OHOS::Media;\r
+using namespace Audio;\r
+using Audio::AudioManager;\r
+\r
+struct AlarmPlayerCaseInfo {\r
+    char sliceId[ALARM_DEC_NUM_256];\r
+    int16_t index;\r
+};\r
+\r
+// 播放器\r
+class AlarmPlayerListener : public InterruptListener {\r
+public:\r
+    AlarmPlayerListener() {}\r
+    ~AlarmPlayerListener() {}\r
+\r
+    void SetOwner(std::shared_ptr<Player> player);\r
+    void RestFlag();\r
+    bool IsPaused();\r
+    bool IsDelayed();\r
+    bool IsResumed();\r
+    bool IsBeginStopped();\r
+    bool IsEndStopped();\r
+    void StopAlarm();\r
+    void OnInterrupt(int32_t type, int32_t hint) override;\r
+\r
+private:\r
+    std::shared_ptr<Player> player_{nullptr};\r
+    bool isPaused_{false};\r
+    bool isDelayed_{false};\r
+    bool isResumed_{false};\r
+    bool isBeginStopped_{false};\r
+    bool isEndStopped_{false};\r
+};\r
+\r
+// 播放器回调\r
+class AlarmPlayerCallbackImpl : public OHOS::Media::PlayerCallback {\r
+public:\r
+    AlarmPlayerCallbackImpl() {}\r
+    ~AlarmPlayerCallbackImpl() {}\r
+    void OnPlaybackComplete();\r
+    void OnError(int32_t errorType, int32_t errorCode);\r
+    void OnInfo(int type, int extra);\r
+    void OnRewindToComplete();\r
+};\r
+\r
+class AlarmClockModel {\r
+public:\r
+    AlarmClockModel();\r
+    virtual ~AlarmClockModel();\r
+    static AlarmClockModel *GetInstance(void);\r
+    int32_t AddAlarmClock(AlarmClockInfo *alarmInfo);\r
+    int32_t UpdataAlarmClock(AlarmClockInfo *alarmInfo);\r
+    int32_t DeleteAlarmClock(AlarmClockInfo *alarmInfo);\r
+    void SetSerialAdd(void);\r
+    void SetSerialRdc(void);\r
+    uint16 GetEventAlarmCnt(void);\r
+    uint16 GetSmartAlarmCnt(void);\r
+    uint32 GetAlarmData(void);\r
+    bool GetClockTime(int16_t alarmNum, uint32_t *clockTime);\r
+    bool GetClockWeek(int16_t alarmNum, uint8_t *alarmWeek);\r
+    bool GetClockStatus(int16_t num, uint8_t *alarmEnable);\r
+    void GetPopTimeData(int16 *hour, int16* min);\r
+    bool GetClockListenerTime(uint32_t &alarmTime);\r
+    bool GetListenClockId(uint8_t *alarmId);\r
+    void GetAlarmCallId(uint8_t *alarmId);\r
+    bool ButtonStatusRing(int16_t num, bool alarmStatus);\r
+    void SetAlarmWeek(uint8_t week, int16_t alarmNum);\r
+    void SetAlarmTime(uint32 time_hour, uint32 time_min, int16_t alarmNum);\r
+    void SetDelayAlarm(uint8_t alarmId);\r
+    void SetCancelAlarm(uint8_t alarmId);\r
+    void DelAlarmDelay(int16_t num);\r
+    void AlarmClockNotify();\r
+    void PhoneCallAlarm();\r
+    void AlarmNextDayNotify();\r
+    void DeleteClockModel(uint16_t alarmNum);\r
+    void PhoneCallNotify(void);\r
+    void BackGroundNotify(void);\r
+    void NextDayNotify(void);\r
+    void ResetRingClockStatus(void);\r
+    void DeactAudioInter(void);\r
+    void PushAlarmClockData(AlarmClockQueueMsg alarmClockMsg);\r
+    void PopInterCancelMusic(void);\r
+    void PopInterPlayMusic(void);\r
+    void SetAlarmInfo(uint32_t time_hour, uint32_t time_min, uint8 week, uint16_t alarmListener, uint16_t setListener);\r
+    int GetAlarmNum(void);\r
+    void SetSliceId(void);\r
+    uint16_t JudgePreSlice(void);\r
+    uint16 GetSliceId(void);\r
+    void AlarmGetClockNum(void);\r
+    int AlarmPlayerStat();\r
+    int AlarmPlayerInit(void);\r
+    int AlarmPlayerStart();\r
+    int AlarmPlayerStop();\r
+private:\r
+    void SetAlarmId(uint8_t id);\r
+    void DeleteAlarmId(uint8_t id);\r
+    void NewFirstTime(void);\r
+    uint8_t GetAlarmId(void);\r
+    int32_t SaveGlobalAlarmToFile(void);\r
+    int32_t GetAlarmGlobalData(uint8 id, AlarmClockInfo *info);\r
+    int32_t InitAlarmClockData(void);\r
+    int32_t FetchedAlarmClockData(AlarmClockQueueMsg *alarmClockMsg);\r
+    int32_t GettManagement(AlarmClockManagement *management);\r
+    int InitAlarmData(void);\r
+    bool JudgeClockModel(uint16_t alarmNum);\r
+    std::string uri;\r
+    std::shared_ptr<PlayerCallback> playerCallback{nullptr};\r
+    std::map<std::string, std::string> header;\r
+    std::shared_ptr<Source> source{nullptr};\r
+    std::shared_ptr<AlarmPlayerListener> playerInterruptListener{nullptr};\r
+    AudioSession sessionId;\r
+    AudioInterrupt interrupt;\r
+    AlarmClockInfo *currentAlarm[5]{nullptr}; // 闹钟最大个数为5\r
+    std::shared_ptr<Player> playerCtr{nullptr};\r
+    AlarmClockManagement managementAlarm;\r
+    uint8_t alarmId[5]{0}; // 事件闹钟的个数是5个\r
+    uint16_t alarmSerial{0};\r
+    uint16_t clockListener{0};\r
+    uint16 preSliceId{0};\r
+    uint32_t listAlarmClockNum{0};\r
+    uint32_t lastRunTime{0};\r
+    uint16_t popHour{0};\r
+    uint16_t popMin{0};\r
+    char *sliceId{nullptr};\r
+    const char *alarmName[6] = {"clock1", "clock2", "clock3", "clock4", "clock5", "clock6"}; // 闹钟名字的最大个数为6\r
+    List<AlarmClockQueueMsg> listAlarmClock;\r
+};\r
+\r
+extern "C" {\r
+    void PushAlarmClockDataToModel(AlarmClockQueueMsg alarmClockMsg);\r
+}\r
+}\r
+#endif // ALARM_CLOCK_MODEL_H\r
index c0ec57a..70faf6f 100644 (file)
@@ -1,36 +1,36 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Alarm
- * Author:
- * Create: 2021-09-11
- */
-
-#ifndef ALARM_CLOSE_RING_VIEW_H
-#define ALARM_CLOSE_RING_VIEW_H
-
-#include "components/ui_label.h"
-#include "components/ui_view_group.h"
-#include "components/ui_image_view.h"
-#include "components/ui_button.h"
-#include "components/ui_label_button.h"
-#include "BaseView.h"
-#include "UiConfig.h"
-#include "AlarmClockModel.h"
-#include "ChangeSliceListener.h"
-
-namespace OHOS {
-class AlarmCloseRingView {
-public:
-    AlarmCloseRingView();
-    virtual ~AlarmCloseRingView();
-    static AlarmCloseRingView *GetInstance(void);
-    UIViewGroup *InitCloseRingView(void);
-    void AlarmCloseShowTimer(void);
-    void CancelCloseHandle(void);
-private:
-    UIViewGroup *group{nullptr};
-    UIImageView *imageClose{nullptr};
-    UILabel *label{nullptr};
-};
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Alarm\r
+ * Author:\r
+ * Create: 2021-09-11\r
+ */\r
+\r
+#ifndef ALARM_CLOSE_RING_VIEW_H\r
+#define ALARM_CLOSE_RING_VIEW_H\r
+\r
+#include "components/ui_label.h"\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_image_view.h"\r
+#include "components/ui_button.h"\r
+#include "components/ui_label_button.h"\r
+#include "BaseView.h"\r
+#include "UiConfig.h"\r
+#include "AlarmClockModel.h"\r
+#include "ChangeSliceListener.h"\r
+\r
+namespace OHOS {\r
+class AlarmCloseRingView {\r
+public:\r
+    AlarmCloseRingView();\r
+    virtual ~AlarmCloseRingView();\r
+    static AlarmCloseRingView *GetInstance(void);\r
+    UIViewGroup *InitCloseRingView(void);\r
+    void AlarmCloseShowTimer(void);\r
+    void CancelCloseHandle(void);\r
+private:\r
+    UIViewGroup *group{nullptr};\r
+    UIImageView *imageClose{nullptr};\r
+    UILabel *label{nullptr};\r
+};\r
+} // namespace OHOS\r
 #endif
\ No newline at end of file
index a111689..a7aad87 100644 (file)
@@ -1,51 +1,51 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Alarm
- * Author:
- * Create: 2021-09-11
- */
-
-#ifndef ALARM_CONFIG_VIEW_H
-#define ALARM_CONFIG_VIEW_H
-
-#include "components/ui_image_view.h"
-#include "components/ui_label.h"
-#include "components/ui_label_button.h"
-#include "components/ui_scroll_view.h"
-#include "components/ui_digital_clock.h"
-#include "components/ui_scroll_view.h"
-#include "layout/grid_layout.h"
-#include "font/ui_font.h"
-#include "BaseView.h"
-#include "common/screen.h"
-#include "gfx_utils/graphic_log.h"
-#include "AlarmClockModel.h"
-
-namespace OHOS {
-class AlarmConfigView {
-public:
-    AlarmConfigView();
-    virtual ~AlarmConfigView();
-    UIScrollView *InitConfigView();
-    static AlarmConfigView *GetInstance(void);
-    void RefreshConfig(const uint32 time, uint8 week, uint16_t alarmNum);
-private:
-    UILabelButton *deleteImage{nullptr};
-    UIScrollView *configScroll{nullptr};
-    UIScrollView *group{nullptr};
-    UILabel *editLabel{nullptr};
-    UIDigitalClock *labelTime{nullptr};
-    UILabel *labelSetTime{nullptr};
-    UILabel *labelDay{nullptr};
-    UILabel *labelSetWeek{nullptr};
-    UILabel *labelChangeName{nullptr};
-    UILabel *labelSetName{nullptr};
-    UIImageView *changeIcon1{nullptr};
-    UIImageView *changeIcon2{nullptr};
-    UIImageView *changeIcon3{nullptr};
-    UILabel *CreateConfigLabel(const char *buttonText, int16_t labelFont, int16_t x, int16_t y, int16_t width);
-    void CreateConfigButton(void);
-    void CreateChangeIcons(void);
-};
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Alarm\r
+ * Author:\r
+ * Create: 2021-09-11\r
+ */\r
+\r
+#ifndef ALARM_CONFIG_VIEW_H\r
+#define ALARM_CONFIG_VIEW_H\r
+\r
+#include "components/ui_image_view.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_label_button.h"\r
+#include "components/ui_scroll_view.h"\r
+#include "components/ui_digital_clock.h"\r
+#include "components/ui_scroll_view.h"\r
+#include "layout/grid_layout.h"\r
+#include "font/ui_font.h"\r
+#include "BaseView.h"\r
+#include "common/screen.h"\r
+#include "gfx_utils/graphic_log.h"\r
+#include "AlarmClockModel.h"\r
+\r
+namespace OHOS {\r
+class AlarmConfigView {\r
+public:\r
+    AlarmConfigView();\r
+    virtual ~AlarmConfigView();\r
+    UIScrollView *InitConfigView();\r
+    static AlarmConfigView *GetInstance(void);\r
+    void RefreshConfig(const uint32 time, uint8 week, uint16_t alarmNum);\r
+private:\r
+    UILabelButton *deleteImage{nullptr};\r
+    UIScrollView *configScroll{nullptr};\r
+    UIScrollView *group{nullptr};\r
+    UILabel *editLabel{nullptr};\r
+    UIDigitalClock *labelTime{nullptr};\r
+    UILabel *labelSetTime{nullptr};\r
+    UILabel *labelDay{nullptr};\r
+    UILabel *labelSetWeek{nullptr};\r
+    UILabel *labelChangeName{nullptr};\r
+    UILabel *labelSetName{nullptr};\r
+    UIImageView *changeIcon1{nullptr};\r
+    UIImageView *changeIcon2{nullptr};\r
+    UIImageView *changeIcon3{nullptr};\r
+    UILabel *CreateConfigLabel(const char *buttonText, int16_t labelFont, int16_t x, int16_t y, int16_t width);\r
+    void CreateConfigButton(void);\r
+    void CreateChangeIcons(void);\r
+};\r
+} // namespace OHOS\r
 #endif // ALARM_CONFIG_VIEW_H
\ No newline at end of file
index a6de873..2bc65eb 100644 (file)
@@ -1,44 +1,44 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Alarm
- * Author:
- * Create: 2021-09-11
- */
-
-#ifndef ALARM_JUDGE_VIEW_H
-#define ALARM_JUDGE_VIEW_H
-
-#include "components/ui_image_view.h"
-#include "components/ui_label.h"
-#include "components/ui_label_button.h"
-#include "components/ui_scroll_view.h"
-#include "components/root_view.h"
-#include "components/ui_time_picker.h"
-#include "components/ui_digital_clock.h"
-#include "components/ui_scroll_view.h"
-#include "components/ui_view_group.h"
-#include "layout/grid_layout.h"
-#include "font/ui_font.h"
-#include "BaseView.h"
-#include "common/screen.h"
-#include "AlarmPresenter.h"
-#include "AlarmClockModel.h"
-
-namespace OHOS {
-class AlarmJudgeView {
-public:
-    AlarmJudgeView();
-    virtual ~AlarmJudgeView();
-    UIScrollView *InitJudgeView();
-    void OnSetUpView();
-    void OnTearDownView();
-    void OnStop();
-private:
-    void CreateImage(void);
-    UIScrollView *container{nullptr};
-    UILabel *labelText{nullptr};
-    UIImageView *imageViewDelete{nullptr};
-    UIImageView *imageViewTrue{nullptr};
-};
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Alarm\r
+ * Author:\r
+ * Create: 2021-09-11\r
+ */\r
+\r
+#ifndef ALARM_JUDGE_VIEW_H\r
+#define ALARM_JUDGE_VIEW_H\r
+\r
+#include "components/ui_image_view.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_label_button.h"\r
+#include "components/ui_scroll_view.h"\r
+#include "components/root_view.h"\r
+#include "components/ui_time_picker.h"\r
+#include "components/ui_digital_clock.h"\r
+#include "components/ui_scroll_view.h"\r
+#include "components/ui_view_group.h"\r
+#include "layout/grid_layout.h"\r
+#include "font/ui_font.h"\r
+#include "BaseView.h"\r
+#include "common/screen.h"\r
+#include "AlarmPresenter.h"\r
+#include "AlarmClockModel.h"\r
+\r
+namespace OHOS {\r
+class AlarmJudgeView {\r
+public:\r
+    AlarmJudgeView();\r
+    virtual ~AlarmJudgeView();\r
+    UIScrollView *InitJudgeView();\r
+    void OnSetUpView();\r
+    void OnTearDownView();\r
+    void OnStop();\r
+private:\r
+    void CreateImage(void);\r
+    UIScrollView *container{nullptr};\r
+    UILabel *labelText{nullptr};\r
+    UIImageView *imageViewDelete{nullptr};\r
+    UIImageView *imageViewTrue{nullptr};\r
+};\r
+} // namespace OHOS\r
 #endif
\ No newline at end of file
index ac85fdf..e28c54f 100644 (file)
@@ -1,44 +1,44 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Alarm
- * Author:
- * Create: 2021-09-11
- */
-
-#ifndef ALARM_MAX_CLOCK_H
-#define ALARM_MAX_CLOCK_H
-
-#include "components/ui_image_view.h"
-#include "components/ui_label.h"
-#include "components/ui_label_button.h"
-#include "components/ui_scroll_view.h"
-#include "components/root_view.h"
-#include "components/ui_time_picker.h"
-#include "components/ui_digital_clock.h"
-#include "components/ui_scroll_view.h"
-#include "components/ui_view_group.h"
-#include "layout/grid_layout.h"
-#include "font/ui_font.h"
-#include "BaseView.h"
-#include "common/screen.h"
-#include "AlarmPresenter.h"
-#include "AlarmClockModel.h"
-
-namespace OHOS {
-void CancelScanHandle(void);
-
-class AlarmMaxClock {
-public:
-    AlarmMaxClock();
-    virtual ~AlarmMaxClock();
-    UIScrollView *InitAlarmMax();
-    static AlarmMaxClock *GetInstance();
-    void OnTearDownView();
-    void OnStop();
-    void AlarmMaxDelayExit(void);
-private:
-    UIScrollView *container{nullptr};
-    UILabel *labelText{nullptr};
-};
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Alarm\r
+ * Author:\r
+ * Create: 2021-09-11\r
+ */\r
+\r
+#ifndef ALARM_MAX_CLOCK_H\r
+#define ALARM_MAX_CLOCK_H\r
+\r
+#include "components/ui_image_view.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_label_button.h"\r
+#include "components/ui_scroll_view.h"\r
+#include "components/root_view.h"\r
+#include "components/ui_time_picker.h"\r
+#include "components/ui_digital_clock.h"\r
+#include "components/ui_scroll_view.h"\r
+#include "components/ui_view_group.h"\r
+#include "layout/grid_layout.h"\r
+#include "font/ui_font.h"\r
+#include "BaseView.h"\r
+#include "common/screen.h"\r
+#include "AlarmPresenter.h"\r
+#include "AlarmClockModel.h"\r
+\r
+namespace OHOS {\r
+void CancelScanHandle(void);\r
+\r
+class AlarmMaxClock {\r
+public:\r
+    AlarmMaxClock();\r
+    virtual ~AlarmMaxClock();\r
+    UIScrollView *InitAlarmMax();\r
+    static AlarmMaxClock *GetInstance();\r
+    void OnTearDownView();\r
+    void OnStop();\r
+    void AlarmMaxDelayExit(void);\r
+private:\r
+    UIScrollView *container{nullptr};\r
+    UILabel *labelText{nullptr};\r
+};\r
+} // namespace OHOS\r
 #endif
\ No newline at end of file
index e0118dc..47db9b8 100644 (file)
@@ -1,37 +1,37 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Alarm
- * Author:
- * Create: 2021-09-11
- */
-
-#ifndef ALARM_NEW_TIME_VIEW_H
-#define ALARM_NEW_TIME_VIEW_H
-
-#include "components/ui_label_button.h"
-#include "components/ui_picker.h"
-#include "components/ui_scroll_view.h"
-#include "components/ui_time_picker.h"
-#include "View.h"
-#include "BaseView.h"
-#include "AlarmPresenter.h"
-#include "AlarmClockModel.h"
-
-namespace OHOS {
-class AlarmNewTimeView : public UITimePicker::SelectedListener {
-public:
-    AlarmNewTimeView();
-    ~AlarmNewTimeView();
-    static AlarmNewTimeView *GetInstance(void);
-    UIScrollView *InitNewTimeView();
-    void RefreshNewTime(void);
-private:
-    void CreateLabelTime(void);
-    UIScrollView *group{nullptr};
-    UILabel *title{nullptr};
-    UITimePicker *picker{nullptr};
-    UILabelButton *labelButton{nullptr};
-    UILabel *GetTitleLabel(const char *titleName);
-};
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Alarm\r
+ * Author:\r
+ * Create: 2021-09-11\r
+ */\r
+\r
+#ifndef ALARM_NEW_TIME_VIEW_H\r
+#define ALARM_NEW_TIME_VIEW_H\r
+\r
+#include "components/ui_label_button.h"\r
+#include "components/ui_picker.h"\r
+#include "components/ui_scroll_view.h"\r
+#include "components/ui_time_picker.h"\r
+#include "View.h"\r
+#include "BaseView.h"\r
+#include "AlarmPresenter.h"\r
+#include "AlarmClockModel.h"\r
+\r
+namespace OHOS {\r
+class AlarmNewTimeView : public UITimePicker::SelectedListener {\r
+public:\r
+    AlarmNewTimeView();\r
+    ~AlarmNewTimeView();\r
+    static AlarmNewTimeView *GetInstance(void);\r
+    UIScrollView *InitNewTimeView();\r
+    void RefreshNewTime(void);\r
+private:\r
+    void CreateLabelTime(void);\r
+    UIScrollView *group{nullptr};\r
+    UILabel *title{nullptr};\r
+    UITimePicker *picker{nullptr};\r
+    UILabelButton *labelButton{nullptr};\r
+    UILabel *GetTitleLabel(const char *titleName);\r
+};\r
+} // namespace OHOS\r
 #endif // ALARM_SET_TIME_VIEW_H
\ No newline at end of file
index 66eee47..b842fb4 100644 (file)
@@ -1,74 +1,74 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Alarm
- * Author:
- * Create: 2021-09-11
- */
-
-#ifndef ALARM_POP_UP_PRESENTER_H
-#define ALARM_POP_UP_PRESENTER_H
-
-#include <string>
-#include "View.h"
-#include "Presenter.h"
-#include "BaseView.h"
-#include "ChangeSliceListener.h"
-#include "UiConfig.h"
-#include "AlarmPopUpView.h"
-#include "window/window.h"
-#include "components/ui_label.h"
-#include "common/screen.h"
-#include "components/ui_label.h"
-#include "components/root_view.h"
-#include "components/ui_view_group.h"
-#include "components/ui_checkbox.h"
-#include "components/ui_image_view.h"
-#include "gfx_utils/graphic_types.h"
-#include "components/ui_button.h"
-#include "components/ui_label_button.h"
-#include "components/ui_digital_clock.h"
-#include "gfx_utils/graphic_log.h"
-#include "ModelListenerSample.h"
-#include "AlarmCloseRingView.h"
-#include "AlarmRingView.h"
-#include "AlarmPopUpView.h"
-#include "AlarmClockModel.h"
-#include "wearable_log.h"
-
-namespace OHOS {
-#define SET_TIME "settime"
-#define SET_WEEK "setweek"
-#define ALARM_DELETE "alarmdelete"
-#define ALARM_CLOCK "imageclock"
-#define ALARM_NEXT "alarmnext"
-#define ALARM_OK "alarmok"
-
-typedef enum {
-    CHANGE_POP_UP_INTERFACE,
-    CHANGE_INTERFACE_CLOSE_RING,
-    CHANGE_INTERFACE_DELAY_RING,
-} InterfacesPopUpId;
-
-class AlarmPopUpView;
-class AlarmPopUpPresenter : public Presenter<AlarmPopUpView>, public UIView::OnClickListener,
-    public UIView::OnDragListener, public ModelListenerSample {
-public:
-    AlarmPopUpPresenter();
-    virtual ~AlarmPopUpPresenter();
-    void OnStart() override;
-    void OnPause() override;
-    void OnResume() override;
-    void OnStop() override;
-    static AlarmPopUpPresenter *GetInstance();
-    bool OnClick(UIView &view, const ClickEvent &event) override;
-    bool OnDrag(UIView& view, const DragEvent& event) override;
-    bool OnDragEnd(UIView& view, const DragEvent& event) override;
-    virtual void Notify() override;
-    void CancelAlarmRing(void);
-    void DelayAlarmRing(void);
-private:
-    bool isStartCalcu{true};
-    uint16_t calcuNotifyNums{0};
-};
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Alarm\r
+ * Author:\r
+ * Create: 2021-09-11\r
+ */\r
+\r
+#ifndef ALARM_POP_UP_PRESENTER_H\r
+#define ALARM_POP_UP_PRESENTER_H\r
+\r
+#include <string>\r
+#include "View.h"\r
+#include "Presenter.h"\r
+#include "BaseView.h"\r
+#include "ChangeSliceListener.h"\r
+#include "UiConfig.h"\r
+#include "AlarmPopUpView.h"\r
+#include "window/window.h"\r
+#include "components/ui_label.h"\r
+#include "common/screen.h"\r
+#include "components/ui_label.h"\r
+#include "components/root_view.h"\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_checkbox.h"\r
+#include "components/ui_image_view.h"\r
+#include "gfx_utils/graphic_types.h"\r
+#include "components/ui_button.h"\r
+#include "components/ui_label_button.h"\r
+#include "components/ui_digital_clock.h"\r
+#include "gfx_utils/graphic_log.h"\r
+#include "ModelListenerSample.h"\r
+#include "AlarmCloseRingView.h"\r
+#include "AlarmRingView.h"\r
+#include "AlarmPopUpView.h"\r
+#include "AlarmClockModel.h"\r
+#include "wearable_log.h"\r
+\r
+namespace OHOS {\r
+#define SET_TIME "settime"\r
+#define SET_WEEK "setweek"\r
+#define ALARM_DELETE "alarmdelete"\r
+#define ALARM_CLOCK "imageclock"\r
+#define ALARM_NEXT "alarmnext"\r
+#define ALARM_OK "alarmok"\r
+\r
+typedef enum {\r
+    CHANGE_POP_UP_INTERFACE,\r
+    CHANGE_INTERFACE_CLOSE_RING,\r
+    CHANGE_INTERFACE_DELAY_RING,\r
+} InterfacesPopUpId;\r
+\r
+class AlarmPopUpView;\r
+class AlarmPopUpPresenter : public Presenter<AlarmPopUpView>, public UIView::OnClickListener,\r
+    public UIView::OnDragListener, public ModelListenerSample {\r
+public:\r
+    AlarmPopUpPresenter();\r
+    virtual ~AlarmPopUpPresenter();\r
+    void OnStart() override;\r
+    void OnPause() override;\r
+    void OnResume() override;\r
+    void OnStop() override;\r
+    static AlarmPopUpPresenter *GetInstance();\r
+    bool OnClick(UIView &view, const ClickEvent &event) override;\r
+    bool OnDrag(UIView& view, const DragEvent& event) override;\r
+    bool OnDragEnd(UIView& view, const DragEvent& event) override;\r
+    virtual void Notify() override;\r
+    void CancelAlarmRing(void);\r
+    void DelayAlarmRing(void);\r
+private:\r
+    bool isStartCalcu{true};\r
+    uint16_t calcuNotifyNums{0};\r
+};\r
+}\r
 #endif
\ No newline at end of file
index 8c13727..ea34308 100644 (file)
@@ -1,52 +1,52 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Alarm
- * Author:
- * Create: 2021-09-11
- */
-
-#ifndef ALARM_POP_UP_VIEW_H
-#define ALARM_POP_UP_VIEW_H
-
-#include "components/ui_label.h"
-#include "components/root_view.h"
-#include "components/ui_view_group.h"
-#include "components/ui_image_view.h"
-#include "components/ui_button.h"
-#include "components/ui_label_button.h"
-#include "BaseView.h"
-#include "ChangeSliceListener.h"
-#include "components/ui_digital_clock.h"
-#include "AlarmSetTimeView.h"
-#include "AlarmCloseRingView.h"
-#include "AlarmRingView.h"
-#include "AlarmClockModel.h"
-#include "UiConfig.h"
-
-namespace OHOS {
-class AlarmPopUpPresenter;
-class AlarmPopUpView : public View<AlarmPopUpPresenter> {
-public:
-    AlarmPopUpView();
-    ~AlarmPopUpView();
-    static AlarmPopUpView *GetInstance(void);
-    void OnStart() override;
-    void ChangeView(int16_t hideView, int16_t showView);
-    void OnSetUpView() override;
-    void OnTearDownView() override;
-    void OnStop() override;
-    void AlarmCreateLabel(void);
-    void AlarmCreateImage(void);
-    UIView *GetPopUpView(int16_t viewIndex);
-private:
-    UIViewGroup *container[3]{nullptr}; // 3代表容器内存有弹窗界面以及两个跳转界面,用于跳转后显示或隐藏界面
-    AlarmCloseRingView *closeRingView{nullptr};
-    AlarmRingView *ringView{nullptr};
-    UIViewGroup *group{nullptr};
-    UILabel *labelPopup{nullptr};
-    UIDigitalClock *dClock{nullptr};
-    UIImageView *imageDelete{nullptr};
-    UIImageView *imageClock{nullptr};
-};
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Alarm\r
+ * Author:\r
+ * Create: 2021-09-11\r
+ */\r
+\r
+#ifndef ALARM_POP_UP_VIEW_H\r
+#define ALARM_POP_UP_VIEW_H\r
+\r
+#include "components/ui_label.h"\r
+#include "components/root_view.h"\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_image_view.h"\r
+#include "components/ui_button.h"\r
+#include "components/ui_label_button.h"\r
+#include "BaseView.h"\r
+#include "ChangeSliceListener.h"\r
+#include "components/ui_digital_clock.h"\r
+#include "AlarmSetTimeView.h"\r
+#include "AlarmCloseRingView.h"\r
+#include "AlarmRingView.h"\r
+#include "AlarmClockModel.h"\r
+#include "UiConfig.h"\r
+\r
+namespace OHOS {\r
+class AlarmPopUpPresenter;\r
+class AlarmPopUpView : public View<AlarmPopUpPresenter> {\r
+public:\r
+    AlarmPopUpView();\r
+    ~AlarmPopUpView();\r
+    static AlarmPopUpView *GetInstance(void);\r
+    void OnStart() override;\r
+    void ChangeView(int16_t hideView, int16_t showView);\r
+    void OnSetUpView() override;\r
+    void OnTearDownView() override;\r
+    void OnStop() override;\r
+    void AlarmCreateLabel(void);\r
+    void AlarmCreateImage(void);\r
+    UIView *GetPopUpView(int16_t viewIndex);\r
+private:\r
+    UIViewGroup *container[3]{nullptr}; // 3代表容器内存有弹窗界面以及两个跳转界面,用于跳转后显示或隐藏界面\r
+    AlarmCloseRingView *closeRingView{nullptr};\r
+    AlarmRingView *ringView{nullptr};\r
+    UIViewGroup *group{nullptr};\r
+    UILabel *labelPopup{nullptr};\r
+    UIDigitalClock *dClock{nullptr};\r
+    UIImageView *imageDelete{nullptr};\r
+    UIImageView *imageClock{nullptr};\r
+};\r
+} // namespace OHOS\r
 #endif
\ No newline at end of file
index 31c204b..0c92d5e 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Alarm
- * Author:
- * Create: 2021-09-11
- */
-
-#ifndef ALARM_PRESENTER_H
-#define ALARM_PRESENTER_H
-
-#include "Presenter.h"
-#include "BaseView.h"
-#include "ChangeSliceListener.h"
-#include "UiConfig.h"
-#include "window/window.h"
-#include "components/ui_label.h"
-#include "common/screen.h"
-#include "components/ui_label.h"
-#include "components/root_view.h"
-#include "components/ui_view_group.h"
-#include "components/ui_checkbox.h"
-#include "components/ui_image_view.h"
-#include "gfx_utils/graphic_types.h"
-#include "components/ui_button.h"
-#include "components/ui_label_button.h"
-#include "components/ui_time_picker.h"
-#include "components/ui_digital_clock.h"
-#include "gfx_utils/graphic_log.h"
-#include "AlarmClockModel.h"
-#include "wearable_log.h"
-#include "color.h"
-
-namespace OHOS {
-constexpr char* EVERY_DAY = (char *)"每天";
-constexpr char* DO_NOT_REPEAT = (char *)"不重复";
-
-constexpr char* MON_DAY = (char *)"一 ";
-constexpr char* TUE_DAY = (char *)"二 ";
-constexpr char* WED_DAY = (char *)"三 ";
-constexpr char* THUR_DAY = (char *)"四 ";
-constexpr char* FRI_DAY = (char *)"五 ";
-constexpr char* SAT_DAY = (char *)"六 ";
-constexpr char* SUN_DAY = (char *)"日";
-
-constexpr char* SET_TIME = (char *)"settime";
-constexpr char* SET_WEEK = (char *)"setweek";
-constexpr char* ALARM_CLOCK_DELETE = (char *)"alarmclockdelete";
-constexpr char* ALARM_NEXT = (char *)"alarmnext";
-constexpr char* ALARM_OK = (char *)"alarmok";
-constexpr char* JUDGE_DELETE = (char *)"judgedelete";
-constexpr char* JUDGE_TRUE = (char *)"judgetrue";
-constexpr char* ADD_BUTTON = (char *)"addbutton";
-
-constexpr char* MONDAY = (char *)"monday";
-constexpr char* TUESDAY = (char *)"tuesday";
-constexpr char* WEDNESDAY = (char *)"wednesday";
-constexpr char* THURSDAY = (char *)"thursday";
-constexpr char* FRIDAY = (char *)"friday";
-constexpr char* SATURDAY = (char *)"saturday";
-constexpr char* SUNDAY = (char *)"sunday";
-constexpr char* ALARM_WEEK_OK = (char *)"alarmweekok";
-
-constexpr char* ALARM_STATUS_ONE  = (char *)"alarmstatus0";
-constexpr char* ALARM_STATUS_TWO  = (char *)"alarmstatus1";
-constexpr char* ALARM_STATUS_THREE  = (char *)"alarmstatus2";
-constexpr char* ALARM_STATUS_FOUR  = (char *)"alarmstatus3";
-constexpr char* ALARM_STATUS_FIVE  = (char *)"alarmstatus4";
-constexpr char* ALARM_STATUS_SIX  = (char *)"alarmstatus5";
-
-constexpr char* ALARM_CLOCK_ONE = (char *)"alarmclock0";
-constexpr char* ALARM_CLOCK_TWO = (char *)"alarmclock1";
-constexpr char* ALARM_CLOCK_THREE = (char *)"alarmclock2";
-constexpr char* ALARM_CLOCK_FOUR = (char *)"alarmclock3";
-constexpr char* ALARM_CLOCK_FIVE = (char *)"alarmclock4";
-constexpr char* ALARM_CLOCK_SIX = (char *)"alarmclock5";
-
-constexpr int16_t SET_SIX = 6;
-
-constexpr char* ALARM_STATUS[6] = {ALARM_STATUS_ONE, ALARM_STATUS_TWO, ALARM_STATUS_THREE, // 闹钟按钮最大个数为6个
-    ALARM_STATUS_FOUR, ALARM_STATUS_FIVE, ALARM_STATUS_SIX};
-constexpr char* ALARM_CLOCK[6] = {ALARM_CLOCK_ONE, ALARM_CLOCK_TWO, ALARM_CLOCK_THREE, // 闹钟个数最大个数为6个
-    ALARM_CLOCK_FOUR, ALARM_CLOCK_FIVE, ALARM_CLOCK_SIX};
-constexpr char* WEEK_CONTAINER[7] = {SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY}; // 日期按钮最大个数为7个
-
-typedef enum {
-    MAIN_INTERFACE = 0,
-    CHANGE_INTERFACE_CONFIG,
-    CHANGE_INTERFACE_SET_TIME,
-    CHANGE_INTERFACE_SET_WEEK,
-    CHANGE_INTERFACE_JUDGE,
-    CHANGE_INTERFACE_NEW_TIME,
-    CHANGE_INTERFACE_MAXCLOCK,
-} InterfacesId;
-
-class AlarmStatusBtnChangeListener : public OHOS::UICheckBox::OnChangeListener {
-public:
-    AlarmStatusBtnChangeListener(UIView *uiView)
-    {
-        std::string alarmStatusId = uiView->GetViewId();
-        std::string alarmCmpId;
-        for (int16_t num = 0; num < SET_SIX; num++) { // 闹钟按钮的最大个数为6个
-            alarmCmpId = ALARM_STATUS[num];
-            if (alarmStatusId == alarmCmpId) {
-                alarmStatusNum = num;
-            }
-        }
-    }
-
-    ~AlarmStatusBtnChangeListener() {}
-    bool OnChange(UICheckBox::UICheckBoxState state) override;
-private:
-    int16_t alarmStatusNum;
-};
-
-class MainAlarmView;
-class AlarmPresenter : public Presenter<MainAlarmView>, public UIView::OnClickListener,public RootView::OnKeyActListener,
- public UITimePicker::SelectedListener, public UIView::OnDragListener {
-public:
-    AlarmPresenter();
-    virtual ~AlarmPresenter();
-    void OnStart() override;
-    void OnPause() override;
-    void OnResume() override;
-    void OnStop() override;
-    static AlarmPresenter *GetInstance();
-    static void PlayRing(void *arg);
-    int16_t GetInterStatus(void);
-    ColorType ShadowBlue(void);
-    bool OnClick(UIView &view, const ClickEvent &event) override;
-    bool OnDrag(UIView& view, const DragEvent& event) override;
-    bool OnKeyAct(UIView& view, const KeyEvent& event) override;//增加按键事件
-    bool ClickFuncId(const char *buttonName);
-    bool ClickFuncView(UIView &view);
-    void OnTimePickerStoped(UITimePicker &picker) override;
-    void ClickBlue(UIView &view);
-    void ClickBlack(UIView &view);
-    void GetAlarmNum(uint16_t alarmNum);
-    void ClickSetTime(uint16_t alarmNum);
-    void ClickSetWeek(uint16_t alarmNum);
-    void ClickAlarmClockDelete(uint16_t alarmNum);
-    void ClickJudgeDelete(uint16_t alarmNum);
-    void ClickJudgeTrue(uint16_t alarmNum);
-    void ClickAlarmTimeOk(uint16_t alarmNum);
-    void ClickAlarmClock(uint16_t alarmNum);
-    void ClickAlarmWeekOk(uint16_t alarmNum);
-    void ClickAlarmNewTime(uint16_t alarmNum);
-    void ClickAlarmNext(uint16_t alarmNum);
-    void OnTimePickerInaction(uint32_t hour, uint32_t min);
-    uint8_t alarmWeek[7] = {1, 1, 1, 1, 1, 1, 1}; // 闹钟默认所有的日期都选中,因此初始值为1,7是指一个星期中七天
-private:
-    uint32_t timeHour{0};
-    uint32_t timeMin{0};
-    uint16_t setListener;
-    uint16_t alarmListener{0};
-    uint16_t clockQty{0};
-    int16_t interListener;
-    //KeyInputListener *keyActListenr{nullptr};
-    bool buttonStratus = true;
-};
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Alarm\r
+ * Author:\r
+ * Create: 2021-09-11\r
+ */\r
+\r
+#ifndef ALARM_PRESENTER_H\r
+#define ALARM_PRESENTER_H\r
+\r
+#include "Presenter.h"\r
+#include "BaseView.h"\r
+#include "ChangeSliceListener.h"\r
+#include "UiConfig.h"\r
+#include "window/window.h"\r
+#include "components/ui_label.h"\r
+#include "common/screen.h"\r
+#include "components/ui_label.h"\r
+#include "components/root_view.h"\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_checkbox.h"\r
+#include "components/ui_image_view.h"\r
+#include "gfx_utils/graphic_types.h"\r
+#include "components/ui_button.h"\r
+#include "components/ui_label_button.h"\r
+#include "components/ui_time_picker.h"\r
+#include "components/ui_digital_clock.h"\r
+#include "gfx_utils/graphic_log.h"\r
+#include "AlarmClockModel.h"\r
+#include "wearable_log.h"\r
+#include "color.h"\r
+\r
+namespace OHOS {\r
+constexpr char* EVERY_DAY = (char *)"每天";\r
+constexpr char* DO_NOT_REPEAT = (char *)"不重复";\r
+\r
+constexpr char* MON_DAY = (char *)"一 ";\r
+constexpr char* TUE_DAY = (char *)"二 ";\r
+constexpr char* WED_DAY = (char *)"三 ";\r
+constexpr char* THUR_DAY = (char *)"四 ";\r
+constexpr char* FRI_DAY = (char *)"五 ";\r
+constexpr char* SAT_DAY = (char *)"六 ";\r
+constexpr char* SUN_DAY = (char *)"日";\r
+\r
+constexpr char* SET_TIME = (char *)"settime";\r
+constexpr char* SET_WEEK = (char *)"setweek";\r
+constexpr char* ALARM_CLOCK_DELETE = (char *)"alarmclockdelete";\r
+constexpr char* ALARM_NEXT = (char *)"alarmnext";\r
+constexpr char* ALARM_OK = (char *)"alarmok";\r
+constexpr char* JUDGE_DELETE = (char *)"judgedelete";\r
+constexpr char* JUDGE_TRUE = (char *)"judgetrue";\r
+constexpr char* ADD_BUTTON = (char *)"addbutton";\r
+\r
+constexpr char* MONDAY = (char *)"monday";\r
+constexpr char* TUESDAY = (char *)"tuesday";\r
+constexpr char* WEDNESDAY = (char *)"wednesday";\r
+constexpr char* THURSDAY = (char *)"thursday";\r
+constexpr char* FRIDAY = (char *)"friday";\r
+constexpr char* SATURDAY = (char *)"saturday";\r
+constexpr char* SUNDAY = (char *)"sunday";\r
+constexpr char* ALARM_WEEK_OK = (char *)"alarmweekok";\r
+\r
+constexpr char* ALARM_STATUS_ONE  = (char *)"alarmstatus0";\r
+constexpr char* ALARM_STATUS_TWO  = (char *)"alarmstatus1";\r
+constexpr char* ALARM_STATUS_THREE  = (char *)"alarmstatus2";\r
+constexpr char* ALARM_STATUS_FOUR  = (char *)"alarmstatus3";\r
+constexpr char* ALARM_STATUS_FIVE  = (char *)"alarmstatus4";\r
+constexpr char* ALARM_STATUS_SIX  = (char *)"alarmstatus5";\r
+\r
+constexpr char* ALARM_CLOCK_ONE = (char *)"alarmclock0";\r
+constexpr char* ALARM_CLOCK_TWO = (char *)"alarmclock1";\r
+constexpr char* ALARM_CLOCK_THREE = (char *)"alarmclock2";\r
+constexpr char* ALARM_CLOCK_FOUR = (char *)"alarmclock3";\r
+constexpr char* ALARM_CLOCK_FIVE = (char *)"alarmclock4";\r
+constexpr char* ALARM_CLOCK_SIX = (char *)"alarmclock5";\r
+\r
+constexpr int16_t SET_SIX = 6;\r
+\r
+constexpr char* ALARM_STATUS[6] = {ALARM_STATUS_ONE, ALARM_STATUS_TWO, ALARM_STATUS_THREE, // 闹钟按钮最大个数为6个\r
+    ALARM_STATUS_FOUR, ALARM_STATUS_FIVE, ALARM_STATUS_SIX};\r
+constexpr char* ALARM_CLOCK[6] = {ALARM_CLOCK_ONE, ALARM_CLOCK_TWO, ALARM_CLOCK_THREE, // 闹钟个数最大个数为6个\r
+    ALARM_CLOCK_FOUR, ALARM_CLOCK_FIVE, ALARM_CLOCK_SIX};\r
+constexpr char* WEEK_CONTAINER[7] = {SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY}; // 日期按钮最大个数为7个\r
+\r
+typedef enum {\r
+    MAIN_INTERFACE = 0,\r
+    CHANGE_INTERFACE_CONFIG,\r
+    CHANGE_INTERFACE_SET_TIME,\r
+    CHANGE_INTERFACE_SET_WEEK,\r
+    CHANGE_INTERFACE_JUDGE,\r
+    CHANGE_INTERFACE_NEW_TIME,\r
+    CHANGE_INTERFACE_MAXCLOCK,\r
+} InterfacesId;\r
+\r
+class AlarmStatusBtnChangeListener : public OHOS::UICheckBox::OnChangeListener {\r
+public:\r
+    AlarmStatusBtnChangeListener(UIView *uiView)\r
+    {\r
+        std::string alarmStatusId = uiView->GetViewId();\r
+        std::string alarmCmpId;\r
+        for (int16_t num = 0; num < SET_SIX; num++) { // 闹钟按钮的最大个数为6个\r
+            alarmCmpId = ALARM_STATUS[num];\r
+            if (alarmStatusId == alarmCmpId) {\r
+                alarmStatusNum = num;\r
+            }\r
+        }\r
+    }\r
+\r
+    ~AlarmStatusBtnChangeListener() {}\r
+    bool OnChange(UICheckBox::UICheckBoxState state) override;\r
+private:\r
+    int16_t alarmStatusNum;\r
+};\r
+\r
+class MainAlarmView;\r
+class AlarmPresenter : public Presenter<MainAlarmView>, public UIView::OnClickListener,\r
+ public UITimePicker::SelectedListener, public UIView::OnDragListener {\r
+public:\r
+    AlarmPresenter();\r
+    virtual ~AlarmPresenter();\r
+    void OnStart() override;\r
+    void OnPause() override;\r
+    void OnResume() override;\r
+    void OnStop() override;\r
+    static AlarmPresenter *GetInstance();\r
+    static void PlayRing(void *arg);\r
+    int16_t GetInterStatus(void);\r
+    ColorType ShadowBlue(void);\r
+    bool OnClick(UIView &view, const ClickEvent &event) override;\r
+    bool OnDrag(UIView& view, const DragEvent& event) override;\r
+    bool ClickFuncId(const char *buttonName);\r
+    bool ClickFuncView(UIView &view);\r
+    void OnTimePickerStoped(UITimePicker &picker) override;\r
+    void ClickBlue(UIView &view);\r
+    void ClickBlack(UIView &view);\r
+    void GetAlarmNum(uint16_t alarmNum);\r
+    void ClickSetTime(uint16_t alarmNum);\r
+    void ClickSetWeek(uint16_t alarmNum);\r
+    void ClickAlarmClockDelete(uint16_t alarmNum);\r
+    void ClickJudgeDelete(uint16_t alarmNum);\r
+    void ClickJudgeTrue(uint16_t alarmNum);\r
+    void ClickAlarmTimeOk(uint16_t alarmNum);\r
+    void ClickAlarmClock(uint16_t alarmNum);\r
+    void ClickAlarmWeekOk(uint16_t alarmNum);\r
+    void ClickAlarmNewTime(uint16_t alarmNum);\r
+    void ClickAlarmNext(uint16_t alarmNum);\r
+    void OnTimePickerInaction(uint32_t hour, uint32_t min);\r
+    uint8_t alarmWeek[7] = {1, 1, 1, 1, 1, 1, 1}; // 闹钟默认所有的日期都选中,因此初始值为1,7是指一个星期中七天\r
+private:\r
+    uint32_t timeHour{0};\r
+    uint32_t timeMin{0};\r
+    uint16_t setListener;\r
+    uint16_t alarmListener{0};\r
+    uint16_t clockQty{0};\r
+    int16_t interListener;\r
+    bool buttonStratus = true;\r
+};\r
+}\r
 #endif
\ No newline at end of file
index 9a6e47f..56eff8d 100644 (file)
@@ -1,39 +1,39 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Alarm
- * Author:
- * Create: 2021-09-11
- */
-
-#ifndef ALARM_RING_VIEW_H
-#define ALARM_RING_VIEW_H
-
-#include "components/ui_label.h"
-#include "components/root_view.h"
-#include "components/ui_view_group.h"
-#include "components/ui_image_view.h"
-#include "components/ui_button.h"
-#include "components/ui_label_button.h"
-#include "BaseView.h"
-#include "ChangeSliceListener.h"
-#include "components/ui_digital_clock.h"
-#include "UiConfig.h"
-#include "AlarmClockModel.h"
-#include "ChangeSliceListener.h"
-
-namespace OHOS {
-class AlarmRingView {
-public:
-    AlarmRingView();
-    virtual ~AlarmRingView();
-    static AlarmRingView *GetInstance(void);
-    UIViewGroup *InitRingView(void);
-    void AlarmRingDelayShowtimer();
-    void CancelTimerHandle(void);
-private:
-    UIViewGroup *group{nullptr};
-    UIImageView *imageRingClock{nullptr};
-    UILabel *labelRing{nullptr};
-};
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Alarm\r
+ * Author:\r
+ * Create: 2021-09-11\r
+ */\r
+\r
+#ifndef ALARM_RING_VIEW_H\r
+#define ALARM_RING_VIEW_H\r
+\r
+#include "components/ui_label.h"\r
+#include "components/root_view.h"\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_image_view.h"\r
+#include "components/ui_button.h"\r
+#include "components/ui_label_button.h"\r
+#include "BaseView.h"\r
+#include "ChangeSliceListener.h"\r
+#include "components/ui_digital_clock.h"\r
+#include "UiConfig.h"\r
+#include "AlarmClockModel.h"\r
+#include "ChangeSliceListener.h"\r
+\r
+namespace OHOS {\r
+class AlarmRingView {\r
+public:\r
+    AlarmRingView();\r
+    virtual ~AlarmRingView();\r
+    static AlarmRingView *GetInstance(void);\r
+    UIViewGroup *InitRingView(void);\r
+    void AlarmRingDelayShowtimer();\r
+    void CancelTimerHandle(void);\r
+private:\r
+    UIViewGroup *group{nullptr};\r
+    UIImageView *imageRingClock{nullptr};\r
+    UILabel *labelRing{nullptr};\r
+};\r
+} // namespace OHOS\r
 #endif
\ No newline at end of file
index f944bca..72769eb 100644 (file)
@@ -1,38 +1,38 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Alarm
- * Author:
- * Create: 2021-09-11
- */
-
-#ifndef ALARM_SET_TIME_VIEW_H
-#define ALARM_SET_TIME_VIEW_H
-
-#include "components/ui_label_button.h"
-#include "components/ui_picker.h"
-#include "components/ui_scroll_view.h"
-#include "components/ui_time_picker.h"
-#include "View.h"
-#include "BaseView.h"
-#include "AlarmPresenter.h"
-#include "AlarmClockModel.h"
-#include "wearable_log.h"
-
-namespace OHOS {
-class AlarmSetTimeView {
-public:
-    AlarmSetTimeView();
-    ~AlarmSetTimeView();
-    static AlarmSetTimeView *GetInstance(void);
-    UIScrollView *InitSetTimeView();
-    void RefreshSetTime(uint32_t time);
-private:
-    UIScrollView *group{nullptr};
-    UILabelButton *timeImage{nullptr};
-    UILabel *title{nullptr};
-    UITimePicker *picker{nullptr};
-    UILabel *GetTitleLabel(const char *titleName);
-    void SetLabelButton(void);
-};
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Alarm\r
+ * Author:\r
+ * Create: 2021-09-11\r
+ */\r
+\r
+#ifndef ALARM_SET_TIME_VIEW_H\r
+#define ALARM_SET_TIME_VIEW_H\r
+\r
+#include "components/ui_label_button.h"\r
+#include "components/ui_picker.h"\r
+#include "components/ui_scroll_view.h"\r
+#include "components/ui_time_picker.h"\r
+#include "View.h"\r
+#include "BaseView.h"\r
+#include "AlarmPresenter.h"\r
+#include "AlarmClockModel.h"\r
+#include "wearable_log.h"\r
+\r
+namespace OHOS {\r
+class AlarmSetTimeView {\r
+public:\r
+    AlarmSetTimeView();\r
+    ~AlarmSetTimeView();\r
+    static AlarmSetTimeView *GetInstance(void);\r
+    UIScrollView *InitSetTimeView();\r
+    void RefreshSetTime(uint32_t time);\r
+private:\r
+    UIScrollView *group{nullptr};\r
+    UILabelButton *timeImage{nullptr};\r
+    UILabel *title{nullptr};\r
+    UITimePicker *picker{nullptr};\r
+    UILabel *GetTitleLabel(const char *titleName);\r
+    void SetLabelButton(void);\r
+};\r
+} // namespace OHOS\r
 #endif // ALARM_SET_TIME_VIEW_H
\ No newline at end of file
index 2341f4d..abf2f37 100644 (file)
@@ -1,46 +1,46 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Alarm
- * Author:
- * Create: 2021-09-11
- */
-
-#ifndef ALARM_SET_WEEK_VIEW
-#define ALARM_SET_WEEK_VIEW
-
-#include "components/ui_image_view.h"
-#include "components/ui_label.h"
-#include "components/ui_label_button.h"
-#include "components/ui_scroll_view.h"
-#include "font/ui_font.h"
-#include "components/ui_scroll_view.h"
-#include "layout/grid_layout.h"
-#include "components/root_view.h"
-#include "components/ui_time_picker.h"
-#include "BaseView.h"
-#include "AlarmPresenter.h"
-#include "AlarmClockModel.h"
-
-namespace OHOS {
-class AlarmSetWeekView {
-public:
-    AlarmSetWeekView();
-    ~AlarmSetWeekView();
-    UIScrollView *InitSetWeekView();
-    static AlarmSetWeekView *GetInstance(void);
-    void RefreshSetWeek1(void);
-    void RefreshSetWeek2(uint8_t week);
-private:
-    UIScrollView *group{nullptr};
-    UILabelButton *weekImage{nullptr};
-    UILabel *labelRespeat{nullptr};
-    UILabelButton *labelButton{nullptr};
-    UILabelButton *buttonWeek[7]{nullptr}; // 星期一共有7天,因此设置了七个星期的按钮
-    void CreateWeekButton1(void);
-    void CreateWeekButton2(void);
-    void SetLabelButton(void);
-    UILabelButton *CreateUILabelButton(const char *buttonText, int16_t x, int16_t y);
-    UIView *CreateUIView(int16_t x, int16_t y);
-};
-} // namespace OHOS
-#endif
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Alarm\r
+ * Author:\r
+ * Create: 2021-09-11\r
+ */\r
+\r
+#ifndef ALARM_SET_WEEK_VIEW\r
+#define ALARM_SET_WEEK_VIEW\r
+\r
+#include "components/ui_image_view.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_label_button.h"\r
+#include "components/ui_scroll_view.h"\r
+#include "font/ui_font.h"\r
+#include "components/ui_scroll_view.h"\r
+#include "layout/grid_layout.h"\r
+#include "components/root_view.h"\r
+#include "components/ui_time_picker.h"\r
+#include "BaseView.h"\r
+#include "AlarmPresenter.h"\r
+#include "AlarmClockModel.h"\r
+\r
+namespace OHOS {\r
+class AlarmSetWeekView {\r
+public:\r
+    AlarmSetWeekView();\r
+    ~AlarmSetWeekView();\r
+    UIScrollView *InitSetWeekView();\r
+    static AlarmSetWeekView *GetInstance(void);\r
+    void RefreshSetWeek1(void);\r
+    void RefreshSetWeek2(uint8_t week);\r
+private:\r
+    UIScrollView *group{nullptr};\r
+    UILabelButton *weekImage{nullptr};\r
+    UILabel *labelRespeat{nullptr};\r
+    UILabelButton *labelButton{nullptr};\r
+    UILabelButton *buttonWeek[7]{nullptr}; // 星期一共有7天,因此设置了七个星期的按钮\r
+    void CreateWeekButton1(void);\r
+    void CreateWeekButton2(void);\r
+    void SetLabelButton(void);\r
+    UILabelButton *CreateUILabelButton(const char *buttonText, int16_t x, int16_t y);\r
+    UIView *CreateUIView(int16_t x, int16_t y);\r
+};\r
+} // namespace OHOS\r
+#endif\r
index b2d0918..47df623 100644 (file)
@@ -17,9 +17,7 @@
 #include "graphic_service.h"
 #include "PlayersModel.h"
 #include "PhoneService.h"
-#if defined(SUPPORT_POWER_MANAGER)
-#include "power_display_service.h"
-#endif
+#include "ui_service.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -175,12 +173,12 @@ int32_t AlarmClockModel::InitAlarmData(void)
     }
     for (uint16_t i = 0; i < ALARM_CLOCK_MAX; i++) {
         for (int j = 0; j < ALARM_CLOCK_MAX; j++) {
-            if (managementAlarm.eventAlarmInfo[j].index == i && managementAlarm.eventAlarmInfo[j].alarmType == 1) {
+            if (managementAlarm.eventAlarmInfo[j].index == i && managementAlarm.eventAlarmInfo[j].alarmType == TYPE_EVENT_ALARM_CLOCK) {
                 currentAlarm[num] = &managementAlarm.eventAlarmInfo[j];
                 SetAlarmId(currentAlarm[num]->alarmClockId);
                 num++;
-                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::InitAlarmData get managementAlarm[%u], the unmber of alarm is %u!",
-                j, alarmSerial);
+                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
+                    "AlarmClockModel::InitAlarmData get managementAlarm[%u], the unmber of alarm is %u!", j, alarmSerial);
                 if (i > 0) {
                     alarmSerial++;
                 }
@@ -250,9 +248,12 @@ bool AlarmClockModel::GetClockTime(int16_t num, uint32_t *clockTime)
         return false;
     }
     *clockTime = currentAlarm[num]->alarmTime;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::GetClockTime1 get time, time = %u", currentAlarm[num]->alarmTime);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::GetClockTime1 get time, time id = %u", currentAlarm[num]->alarmClockId);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::GetClockTime1 get time, time index = %u", currentAlarm[num]->index);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::GetClockTime1 get time, time = %x",
+        currentAlarm[num]->alarmTime);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::GetClockTime1 get time, time id = %u",
+        currentAlarm[num]->alarmClockId);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::GetClockTime1 get time, time index = %u",
+        currentAlarm[num]->index);
     return true;
 }
 
@@ -265,8 +266,8 @@ bool AlarmClockModel::GetClockWeek(int16_t num, uint8_t *alarmWeek)
     if (currentAlarm[num] == nullptr || currentAlarm[num]->alarmType == TYPE_INVALID_ALARM_CLOCK) {
         return false;
     }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::GetClockWeek get week! %p",currentAlarm[num]);
-    *alarmWeek =  currentAlarm[num]->repeatPeriod;
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::GetClockWeek get week! %p", currentAlarm[num]);
+    *alarmWeek = currentAlarm[num]->repeatPeriod;
     return true;
 }
 
@@ -282,7 +283,7 @@ bool AlarmClockModel::GetClockStatus(int16_t num, uint8_t *alarmStatus)
         return false;
     }
     *alarmStatus = currentAlarm[num]->alarmClockEnable;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::GetClockStatus alarm status is %u", alarmStatus);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::GetClockStatus alarm status is %u", *alarmStatus);
     return true;
 }
 
@@ -293,7 +294,8 @@ bool AlarmClockModel::GetClockListenerTime(uint32_t &alarmGetTime)
         return false;
     }
     alarmGetTime = currentAlarm[clockListener]->alarmTime;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::GetClockTime1 get time, time = %u", currentAlarm[clockListener]->alarmTime);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::GetClockTime1 get time, time = %u",
+        currentAlarm[clockListener]->alarmTime);
     return true;
 }
 
@@ -369,9 +371,10 @@ void AlarmClockModel::NewFirstTime(void)
         return;
     }
     currentAlarm[0]->alarmTime = (timeTem << 16) | 0x0000; // 第一个闹钟的时间初始化为九点
-    currentAlarm[0]->repeatPeriod = 0x7F; // 第一个闹钟的日期设置默认为一周七天全选
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::JudgeClockModel currentAlarm[0]->alarm_time = %u, currentAlarm[0]->repeat_period =%u",
-    currentAlarm[0]->alarmTime, currentAlarm[0]->repeatPeriod);
+    currentAlarm[0]->repeatPeriod = 0x7F;                  // 第一个闹钟的日期设置默认为一周七天全选
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
+        "AlarmClockModel::JudgeClockModel currentAlarm[0]->alarm_time = %u, currentAlarm[0]->repeat_period =%u",
+        currentAlarm[0]->alarmTime, currentAlarm[0]->repeatPeriod);
 
     int ret = AddAlarmClock(currentAlarm[0]);
     if (ret != 0) {
@@ -397,8 +400,9 @@ void AlarmClockModel::DeleteClockModel(uint16_t num)
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteAlarmClock delete clock error!");
         return;
     }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteAlarmClock = %d, currentAlarm[alarmListener] = %p, id = %u!",
-    status, currentAlarm[num], currentAlarm[num]->alarmClockId);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
+        "AlarmClockModel::DeleteAlarmClock = %d, currentAlarm[alarmListener] = %p, id = %u!", status, currentAlarm[num],
+        currentAlarm[num]->alarmClockId);
     DeleteAlarmId(clockId);
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteClockModel alarmSerial = %u!", alarmSerial);
     for (; num < alarmSerial; num++) {
@@ -406,7 +410,8 @@ void AlarmClockModel::DeleteClockModel(uint16_t num)
         tempAlarm->index = currentAlarm[num]->index;
         currentAlarm[num] = currentAlarm[num + 1];
         currentAlarm[num]->index = num;
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::UpdataAlarmClock index = %u!", currentAlarm[num]->index);
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::UpdataAlarmClock index = %u!",
+            currentAlarm[num]->index);
         if (currentAlarm[num + 1] == nullptr || currentAlarm[num + 1]->alarmType == TYPE_INVALID_ALARM_CLOCK) {
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteClockModel fail");
             currentAlarm[num] = tempAlarm;
@@ -434,7 +439,8 @@ bool AlarmClockModel::ButtonStatusRing(int16_t num, bool alarmStatus)
     } else if (alarmStatus == false) {
         currentAlarm[num]->alarmClockEnable = 0;
     }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::ButtonStatusRing alarm status is %u", currentAlarm[num]->alarmClockEnable);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::ButtonStatusRing alarm[%d] status is %u", num,
+        currentAlarm[num]->alarmClockEnable);
     int ret = UpdataAlarmClock(currentAlarm[num]);
     if (ret != 0) {
         currentAlarm[num]->alarmClockEnable = tempAlarmEnable;
@@ -452,7 +458,8 @@ void AlarmClockModel::SetDelayAlarm(uint8_t alarmId)
     }
     currentAlarm[clockListener]->delayNum++;
     clockQueueMsg->eventType = EVENT_ALARM_RING_DELAY;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::ButtonStatusRing clockQueueMsg->eventType is %u", clockQueueMsg->eventType);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::ButtonStatusRing clockQueueMsg->eventType is %u",
+        clockQueueMsg->eventType);
     (clockQueueMsg->data).value = alarmId;
     AlmmgrAlarmClockEventProcess(clockQueueMsg);
     return;
@@ -466,7 +473,8 @@ void AlarmClockModel::SetCancelAlarm(uint8_t alarmId)
         return;
     }
     clockQueueMsg->eventType = EVENT_ALARM_RING_CANCEL;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::ButtonStatusRing clockQueueMsg->eventType is %u", clockQueueMsg->eventType);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::ButtonStatusRing clockQueueMsg->eventType is %u",
+        clockQueueMsg->eventType);
     (clockQueueMsg->data).value = alarmId;
     AlmmgrAlarmClockEventProcess(clockQueueMsg);
     return;
@@ -485,7 +493,8 @@ void AlarmClockModel::SetAlarmTime(uint32_t time_hour, uint32_t time_min, int16_
         currentAlarm[num]->alarmTime = tempAlarmTime;
         return;
     }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::SetAlarmTime currentAlarm[[num]]->alarm_time = %d", currentAlarm[num]->alarmTime);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::SetAlarmTime currentAlarm[[num]]->alarm_time = %d",
+        currentAlarm[num]->alarmTime);
 }
 
 void AlarmClockModel::SetAlarmWeek(uint8_t week, int16_t num)
@@ -502,7 +511,8 @@ void AlarmClockModel::SetAlarmWeek(uint8_t week, int16_t num)
         currentAlarm[num]->repeatPeriod = tempAlarmWeek;
         return;
     }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::SetAlarmWeek currentAlarm[num]->repeat_period = %u", currentAlarm[num]->repeatPeriod);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::SetAlarmWeek currentAlarm[num]->repeat_period = %u",
+        currentAlarm[num]->repeatPeriod);
 }
 
 void AlarmClockModel::DelAlarmDelay(int16_t num)
@@ -519,20 +529,23 @@ void AlarmClockModel::DelAlarmDelay(int16_t num)
         currentAlarm[num]->delayNum = tempAlarmDelay;
         return;
     }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::SetAlarmWeek currentAlarm[num]->delayNum = %u", currentAlarm[num]->delayNum);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::SetAlarmWeek currentAlarm[num]->delayNum = %u",
+        currentAlarm[num]->delayNum);
 }
 
-void AlarmClockModel::SetAlarmInfo(uint32_t time_hour, uint32_t time_min, uint8_t week, uint16_t alarmListener, uint16_t setListener)
+void AlarmClockModel::SetAlarmInfo(uint32_t time_hour, uint32_t time_min, uint8_t week, uint16_t alarmListener,
+    uint16_t setListener)
 {
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::SetAlarmInfo!");
-    if (currentAlarm[alarmListener] == nullptr || (currentAlarm[alarmListener]->alarmType == TYPE_INVALID_ALARM_CLOCK
-    && currentAlarm[alarmListener] != nullptr)) {
+    if (currentAlarm[alarmListener] == nullptr || (currentAlarm[alarmListener]->alarmType == TYPE_INVALID_ALARM_CLOCK &&
+        currentAlarm[alarmListener] != nullptr)) {
         currentAlarm[alarmListener] = new AlarmClockInfo();
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClcokModel::SetAlarmTime new alarm!");
     }
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "hour = %u, minute = %u", time_hour, time_min);
     currentAlarm[alarmListener]->alarmTime = ((time_hour << 16) | time_min); // 闹钟时间数据的小时位右边16位
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::NewAlarmTime currentAlarm[alarmListener]->alarm_time = %u", currentAlarm[alarmListener]->alarmTime);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::NewAlarmTime currentAlarm[alarmListener]->alarm_time = %u",
+        currentAlarm[alarmListener]->alarmTime);
     currentAlarm[alarmListener]->alarmClockId = GetAlarmId();
     currentAlarm[alarmListener]->alarmClockEnable = 1;
     currentAlarm[alarmListener]->alarmType = 1;
@@ -540,12 +553,13 @@ void AlarmClockModel::SetAlarmInfo(uint32_t time_hour, uint32_t time_min, uint8_
     currentAlarm[alarmListener]->nameLen = strlen(alarmName[alarmListener]);
     currentAlarm[alarmListener]->index = alarmListener;
     currentAlarm[alarmListener]->repeatPeriod = week;
-    if (strcpy_s(currentAlarm[alarmListener]->alarmClockName, strlen(alarmName[alarmListener]) + 1, alarmName[alarmListener]) != 0) {
+    if (strcpy_s(currentAlarm[alarmListener]->alarmClockName, strlen(alarmName[alarmListener]) + 1,
+        alarmName[alarmListener]) != 0) {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::SetAlarmInfo copy alarmname error!");
         return;
     }
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::NewAlarmTime clock name = %s, id = %u",
-    currentAlarm[alarmListener]->alarmClockName, currentAlarm[alarmListener]->alarmClockId);
+        currentAlarm[alarmListener]->alarmClockName, currentAlarm[alarmListener]->alarmClockId);
     if (setListener == 0) {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::SetAlarmWeek new time!");
         int ret = AddAlarmClock(currentAlarm[alarmListener]);
@@ -586,7 +600,9 @@ void AlarmClockModel::ResetRingClockStatus()
 {
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::ResetRingClockStatus");
     if (currentAlarm[clockListener] == nullptr || currentAlarm[clockListener]->alarmClockEnable == 0) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::ResetRingClockStatus error! clockListener = %u, alarmClockEnable = %u", clockListener, currentAlarm[clockListener]->alarmClockEnable);
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+            "AlarmClockModel::ResetRingClockStatus error! clockListener = %u, alarmClockEnable = %u", clockListener,
+            currentAlarm[clockListener]->alarmClockEnable);
         return;
     }
     if (currentAlarm[clockListener]->repeatPeriod == 0) {
@@ -595,7 +611,7 @@ void AlarmClockModel::ResetRingClockStatus()
     }
 }
 
-void AlarmClockModel::GetPopTimeData(int16 *hour, int16* min)
+void AlarmClockModel::GetPopTimeData(int16 *hour, int16 *min)
 {
     *hour = popHour;
     *min = popMin;
@@ -604,43 +620,32 @@ void AlarmClockModel::GetPopTimeData(int16 *hour, int16* min)
 void AlarmClockModel::AlarmGetClockNum()
 {
     struct tm curTime;
-    time_t second;
-    struct timeval timeVal;
-    struct timezone timeZone;
-    uint32 hour, min;
-
-    second = time(NULL);
-    (void)gmtime_r((const time_t *)&second, &curTime);
-    if (gettimeofday(&timeVal, &timeZone) != 0) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmTimerCallback gettimeofday failed!!");
+    int32 hour, min;
+
+    if (AlarmGetCurrentTimeInfo(&curTime) != 0) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmTimerCallback AlarmGetCurrentTimeInfo failed!!");
         return;
     }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmGetClockNum, hour:%u, min:%u, sec:%u, usec:%u!!",
-        curTime.tm_hour, curTime.tm_min, curTime.tm_sec, timeVal.tv_usec);
+
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmGetClockNum, hour:%u, min:%u", curTime.tm_hour, curTime.tm_min);
 
     for (uint16_t num = 0; num < CLOCK_MAX; num++) {
         if (currentAlarm[num] == nullptr || currentAlarm[num]->alarmType == TYPE_INVALID_ALARM_CLOCK) {
             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::AlarmGetClockNum get num(%d)fail!", num);
             return;
         }
-        hour = currentAlarm[num]->alarmTime >> 16; // 小时位需要向右移动16位
-        min = ((currentAlarm[num]->alarmTime & 0x00FF) + (currentAlarm[num]->delayNum * DELAY_TEM_MIN)); // 分钟位需将前十六位清零
-        if (min >= ONE_HOUR_MIN) {
-            hour++;
-            min -= ONE_HOUR_MIN;
-            if (hour >= TWENTY_FOUR_HOUR) {
-                hour -= TWENTY_FOUR_HOUR;
-            }
-        }
-        if (IsCurTimeValid(timeVal, timeZone, hour, min) == true) {
-                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::AlarmGetClockNum %d:%d!",
-                currentAlarm[num]->alarmTime >> 16, currentAlarm[num]->alarmTime & 0x00FF); // 小时位需要向右移动16位,分钟位需将前十六位清零
-                popHour = hour;
-                popMin = min;
-                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::AlarmGetClockNum %d:%d!",
-                popHour, popMin); // 小时位需要向右移动16位,分钟位需将前十六位清零
-                clockListener = num;
-                return;
+        hour = currentAlarm[num]->alarmTime >> TWO_BYTES_BITS;
+        min = ((currentAlarm[num]->alarmTime & AND_FOR_LOW_TWO_BYTES) + (currentAlarm[num]->delayNum * DELAY_TEM_MIN));
+        hour = (hour + min / ONE_HOUR_MIN) % TWENTY_FOUR_HOUR;
+        min = min % ONE_HOUR_MIN;
+        if (curTime.tm_hour == hour && curTime.tm_min == min) {
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::AlarmGetClockNum %d:%d!",
+                currentAlarm[num]->alarmTime >> TWO_BYTES_BITS, currentAlarm[num]->alarmTime & AND_FOR_LOW_TWO_BYTES);
+            popHour = hour;
+            popMin = min;
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::AlarmGetClockNum %d:%d!", popHour, popMin);
+            clockListener = num;
+            return;
         }
     }
 }
@@ -653,62 +658,44 @@ void AlarmClockModel::GetAlarmCallId(uint8_t *alarmId)
     }
 
     struct tm curTime;
-    time_t second;
-    struct timeval timeVal;
-    struct timezone timeZone;
-    uint32 hour, min;
-
-    second = time(NULL);
-    (void)gmtime_r((const time_t *)&second, &curTime);
-    if (gettimeofday(&timeVal, &timeZone) != 0) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmTimerCallback gettimeofday failed!!");
+    int32 hour, min;
+    if (AlarmGetCurrentTimeInfo(&curTime) != 0) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmTimerCallback AlarmGetCurrentTimeInfo failed!!");
         return;
     }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmGetClockNum, hour:%u, min:%u, sec:%u, usec:%u!!",
-        curTime.tm_hour, curTime.tm_min, curTime.tm_sec, timeVal.tv_usec);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmGetClockNum, hour:%u, min:%u", curTime.tm_hour, curTime.tm_min);
 
     for (uint16_t num = 0; num < CLOCK_MAX; num++) {
         if (currentAlarm[num] == nullptr || currentAlarm[num]->alarmType == TYPE_INVALID_ALARM_CLOCK) {
             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::AlarmGetClockNum get num fail!");
             return;
         }
-        hour = currentAlarm[num]->alarmTime >> 16; // 小时位需要向右移动16位
-        min = ((currentAlarm[num]->alarmTime & 0x00FF) + (currentAlarm[num]->delayNum * DELAY_TEM_MIN)); // 分钟位需将前十六位清零
-        if (min >= ONE_HOUR_MIN) {
-            hour++;
-            min -= ONE_HOUR_MIN;
-            if (hour >= TWENTY_FOUR_HOUR) {
-                hour -= TWENTY_FOUR_HOUR;
-            }
-        }
-        if (IsCurTimeValid(timeVal, timeZone, hour, min) == true) {
-                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::AlarmGetClockNum %d:%d!",
-                currentAlarm[num]->alarmTime >> 16, currentAlarm[num]->alarmTime & 0x00FF); // 小时位需要向右移动16位,分钟位需将前十六位清零
-                *alarmId = currentAlarm[num]->alarmClockId;
-                return;
+        hour = currentAlarm[num]->alarmTime >> TWO_BYTES_BITS;
+        min = ((currentAlarm[num]->alarmTime & AND_FOR_LOW_TWO_BYTES) + (currentAlarm[num]->delayNum * DELAY_TEM_MIN));
+        hour = (hour + min / ONE_HOUR_MIN) % TWENTY_FOUR_HOUR;
+        min = min % ONE_HOUR_MIN;
+        if (curTime.tm_hour == hour && curTime.tm_min == min) {
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::AlarmGetClockNum %d:%d!",
+                currentAlarm[num]->alarmTime >> TWO_BYTES_BITS, currentAlarm[num]->alarmTime & AND_FOR_LOW_TWO_BYTES);
+            *alarmId = currentAlarm[num]->alarmClockId;
+            return;
         }
     }
 }
 
 void AlarmClockModel::PopInterCancelMusic()
 {
-#if defined(SUPPORT_POWER_MANAGER)
-    const power_display_svr_api_t *display_api = power_display_svr_get_api();
-    display_api->set_screen_set_keepon_timeout(0);
-#endif
-    GraphicService::GetInstance()->PostGraphicEvent(std::bind(&AlarmClockModel::AlarmPlayerStop, AlarmClockModel::GetInstance()));
+    SendMsgToUIService(SCREEN_TURN_OFF_TO_UI, 0, NULL, 0);
+    GraphicService::GetInstance()->PostGraphicEvent(
+        std::bind(&AlarmClockModel::AlarmPlayerStop, AlarmClockModel::GetInstance()));
 }
 
 void AlarmClockModel::PopInterPlayMusic()
 {
-#if defined(SUPPORT_POWER_MANAGER)
-    const power_display_svr_api_t *display_api = power_display_svr_get_api();
-    if (display_api->get_screen_state() != SCREEN_ON) {
-        display_api->turn_on_screen();
-    }
-    display_api->set_screen_set_keepon_timeout(-1);
-#endif
-    GraphicService::GetInstance()->PostGraphicEvent(std::bind(&AlarmClockModel::AlarmPlayerStart, AlarmClockModel::GetInstance()));
+    int32_t timeout = -1;
+    SendMsgToUIService(SCREEN_TURN_ON_TO_UI, 0, &timeout, sizeof(int32_t));
+    GraphicService::GetInstance()->PostGraphicEvent(
+        std::bind(&AlarmClockModel::AlarmPlayerStart, AlarmClockModel::GetInstance()));
 }
 
 void AlarmClockModel::SetSliceId()
@@ -727,38 +714,38 @@ int AlarmClockModel::AlarmPlayerStat()
 
     // 设置回调函数
     if (playerCtr.get() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"AlarmClockModel::AlarmPlayerStat playerCtr nullptr");
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::AlarmPlayerStat playerCtr nullptr");
         return OHOS_FAILURE;
     }
     playerCtr->SetPlayerCallback(playerCallback);
     // 申请资源
     source = std::make_shared<Source>(uri, header);
     if (source.get() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"source new fail");
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "source new fail");
         return OHOS_FAILURE;
     }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"AlarmPlayer uri %s.", uri.c_str());
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPlayer uri %s.", uri.c_str());
     playerCtr->SetSource(*source);
     playerCtr->SetAudioStreamType(AUDIO_STREAM_ALARM_CLOCK);
     playerCtr->Prepare();
 
     // 申请焦点
-    AudioManager& amIntance = AudioManager::GetInstance();
+    AudioManager &amIntance = AudioManager::GetInstance();
     sessionId = amIntance.MakeSessionId();
     if (sessionId == AUDIO_SESSION_ID_NONE) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"session invalid");
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "session invalid");
         return OHOS_FAILURE;
     }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"MakeSessionId  %d", sessionId);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MakeSessionId  %d", sessionId);
     playerInterruptListener = std::make_shared<AlarmPlayerListener>();
     if (playerInterruptListener.get() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"playerInterruptListener new fail");
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playerInterruptListener new fail");
         return OHOS_FAILURE;
     }
-    interrupt = {AUDIO_STREAM_ALARM_CLOCK, sessionId, playerInterruptListener};
+    interrupt = { AUDIO_STREAM_ALARM_CLOCK, sessionId, playerInterruptListener };
     // 激活音频中断 5s超时
     if (amIntance.ActivateAudioInterrupt(interrupt) == INTERRUPT_FAILED) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"ActivateAudioInterrupt faild");
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ActivateAudioInterrupt faild");
         return OHOS_FAILURE;
     }
     playerCtr->SetAudioSessionId(sessionId);
@@ -771,12 +758,12 @@ int AlarmClockModel::AlarmPlayerInit(void)
 {
     // 本地播放文件路径和状态
     sliceId = (char *)"alarm.mp3"; // 播放音乐的文件名
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"PlayerInit start!");
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayerInit start!");
 
     std::string strSongName = sliceId;
     std::string pureName = strSongName.substr(0, strSongName.rfind(".")); // 播放音乐的路径需要引用.号
     const char *songName = pureName.c_str();
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"PlayerInit, url:%s ", sliceId);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayerInit, url:%s ", sliceId);
     std::string strSrcMusic(APP_MUSIC_PATH);
     std::string tempStr("/");
     std::string strName = sliceId;
@@ -785,15 +772,15 @@ int AlarmClockModel::AlarmPlayerInit(void)
 
     playerCtr = std::make_shared<Player>();
     if (playerCtr.get() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"playerCtr new fail");
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playerCtr new fail");
         return OHOS_FAILURE;
     }
     playerCallback = std::make_shared<AlarmPlayerCallbackImpl>();
     if (playerCallback.get() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"playerCallback new fail");
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playerCallback new fail");
         return OHOS_FAILURE;
     }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"PlayerInit end!");
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayerInit end!");
     return OHOS_SUCCESS;
 }
 
@@ -825,17 +812,17 @@ int AlarmClockModel::AlarmPlayerStart(void)
 
 void AlarmPlayerCallbackImpl::OnPlaybackComplete()
 {
-    GraphicService::GetInstance()->PostGraphicEvent(std::bind(&OHOS::AlarmClockModel::DeactAudioInter, OHOS::AlarmClockModel::GetInstance()));
+    GraphicService::GetInstance()->PostGraphicEvent(
+        std::bind(&OHOS::AlarmClockModel::DeactAudioInter, OHOS::AlarmClockModel::GetInstance()));
 }
 
 uint16_t AlarmClockModel::JudgePreSlice(void)
 {
-    uint16_t preSlice;
-    preSlice = NativeAbility::GetInstance().GetPreSliceId();
+    uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
     if (preSlice == VIEW_ALARM_POP_UP || preSlice < VIEW_SETTING) {
         preSlice = VIEW_MAIN;
     } else if ((preSlice == VIEW_INCOMING_CALL) &&
-    (GetCurrCallNum() == 0 || GetScoConnectState() != HFP_SCO_STATE_CONNECTED)) {
+        (GetCurrCallNum() == 0 || GetScoConnectState() != HFP_SCO_STATE_CONNECTED)) {
         int num;
         PhoneCallInfo callList[MULTI_CALL_MAX_NUME]{};
         GetCallInfoInCallList(callList, MULTI_CALL_MAX_NUME, &num);
@@ -848,7 +835,7 @@ uint16_t AlarmClockModel::JudgePreSlice(void)
 }
 
 void AlarmClockModel::DeactAudioInter(void)
-{    
+{
     bool alarmStatus;
     uint8_t alarmId = 0;
     alarmStatus = AlarmClockModel::GetInstance()->GetListenClockId(&alarmId);
@@ -888,7 +875,7 @@ void AlarmClockModel::AlarmNextDayNotify()
         }
         currentAlarm[num]->delayNum = 0;
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::AlarmNextDayNotify currentAlarm[%u]->delayNum = %u",
-        num, currentAlarm[num]->delayNum);
+            num, currentAlarm[num]->delayNum);
     }
 }
 
@@ -899,15 +886,10 @@ void AlarmClockModel::AlarmClockNotify()
     if (PlayersModel::GetInstance()->GetAudioInitStatus() == false) {
         PlayersModel::GetInstance()->AudioInit();
     }
-#if defined(SUPPORT_POWER_MANAGER)
-    const power_display_svr_api_t *display_api = power_display_svr_get_api();
-    if (display_api->get_screen_state() != SCREEN_ON) {
-        display_api->turn_on_screen();
-    }
-    display_api->set_screen_set_keepon_timeout(-1);
-#endif
+    int32_t timeout = -1;
+    SendMsgToUIService(SCREEN_TURN_ON_TO_UI, 0, &timeout, sizeof(int32_t));
     AlarmGetClockNum();
-    NativeAbility::GetInstance().ChangeSlice(VIEW_ALARM_POP_UP, PRIORITY_TWO);
+    NativeAbility::GetInstance().ChangeSlice(VIEW_ALARM_POP_UP, TRANSITION_INVALID, PRIORITY_TWO);
     return;
 }
 
index f7cc4bf..bdfc481 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Alarm
- * Author:
- * Create: 2021-09-11
- */
-
-#include "AlarmCloseRingView.h"
-#include "common/screen.h"
-#include "components/ui_label.h"
-#include "components/ui_label_button.h"
-#include <string>
-#include "cmsis_os.h"
-#include "AlarmPopUpPresenter.h"
-#include "PhoneService.h"
-
-namespace OHOS {
-#define CLOSE "关闭"
-
-osTimerId_t g_stopAlarmCloseHandle = NULL;
-static AlarmCloseRingView *g_pAlarmCloseRingView = nullptr;
-constexpr int16_t MAX_SET_ZERO_LEN = 0;
-constexpr int16_t MAX_SET_SRC_LEN = 90;
-constexpr int16_t MAX_IMAGE_X_LEN = 165;
-constexpr int16_t MAX_IMAGE_Y_LEN = 150;
-constexpr int16_t MAX_LABEL_X_LEN = 187;
-constexpr int16_t MAX_LABEL_Y_LEN = 300;
-constexpr int16_t MAX_LABEL_LENGTH_LEN = 350;
-constexpr int16_t MAX_LABEL_HEIGHT_LEN = 40;
-constexpr int16_t MAX_LABEL_FONT_LEN = 35;
-
-static constexpr uint64_t CLOSE_THREE_SECONDS = 3000;
-void CloseTimerCallback(int data);
-void EndCloseHandle(void);
-
-AlarmCloseRingView::AlarmCloseRingView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmCloseRingView::AlarmCloseRingView");
-    g_pAlarmCloseRingView = this;
-}
-
-AlarmCloseRingView::~AlarmCloseRingView()
-{
-    group->RemoveAll();
-    delete imageClose;
-    imageClose = nullptr;
-    delete label;
-    label = nullptr;
-    delete group;
-    group = nullptr;
-    g_pAlarmCloseRingView = nullptr;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmCloseRingView::~AlarmCloseRingView");
-}
-
-AlarmCloseRingView *AlarmCloseRingView::GetInstance(void)
-{
-    return g_pAlarmCloseRingView;
-}
-
-UIViewGroup *AlarmCloseRingView::InitCloseRingView(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainClockView::InitCloseRingView");
-    group = new UIViewGroup();
-    if (group == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmCloseRingView::group null!");
-        return nullptr;
-    }
-    group->SetPosition(MAX_SET_ZERO_LEN, MAX_SET_ZERO_LEN);
-    group->SetWidth(HORIZONTAL_RESOLUTION);
-    group->SetHeight(VERTICAL_RESOLUTION);
-
-    imageClose = new UIImageView();
-    if (imageClose == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmCloseRingView::imageClose null!");
-        return nullptr;
-    }
-    imageClose->SetPosition(MAX_IMAGE_X_LEN, MAX_IMAGE_Y_LEN);
-    imageClose->SetWidth(MAX_SET_SRC_LEN);
-    imageClose->SetHeight(MAX_SET_SRC_LEN);
-    imageClose->SetSrc(ALARM_CLOCK_CLOSE_ADD_PATH);
-    imageClose->SetTouchable(true);
-    group->Add(imageClose);
-
-    label = new UILabel();
-    if (label == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmCloseRingView::label null!");
-        return nullptr;
-    }
-    label->SetPosition(MAX_LABEL_X_LEN, MAX_LABEL_Y_LEN, MAX_LABEL_LENGTH_LEN, MAX_LABEL_HEIGHT_LEN);
-    label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, MAX_LABEL_FONT_LEN);
-    label->SetText(CLOSE);
-    group->Add(label);
-    UIView::OnDragListener *listener =static_cast<UIView::OnDragListener*>(AlarmPopUpPresenter::GetInstance());
-    group->SetOnDragListener(listener);
-    group->SetDraggable(true);
-    group->SetTouchable(true);
-    return group;
-}
-
-void AlarmCloseRingView::CancelCloseHandle(void)
-{
-    if (g_stopAlarmCloseHandle != NULL) {
-        osStatus_t ret = osTimerDelete(g_stopAlarmCloseHandle);
-        if (ret != osOK) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CloseTimerCallback osTimerDelete failed, ret = %lx!!", ret);
-            return;
-        }
-        g_stopAlarmCloseHandle = NULL;
-    }
-}
-
-void EndCloseHandle(void)
-{
-    uint16_t preSlice = AlarmClockModel::GetInstance()->JudgePreSlice();
-    NativeAbility::GetInstance().ChangeSlice(preSlice);
-}
-
-static void CloseTimerCallbackProc(int data)
-{
-    (void)data;
-    if (AlarmCloseRingView::GetInstance() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CloseTimerCallbackProc AlarmCloseRingView::GetInstance() nullptr!!");
-        return;
-    }
-    AlarmCloseRingView::GetInstance()->CancelCloseHandle();
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClose scan end jumpView");
-    EndCloseHandle();
-}
-
-void CloseTimerCallback(int data)
-{
-    GraphicService::GetInstance()->PostGraphicEvent(std::bind(CloseTimerCallbackProc, data));
-}
-
-void AlarmCloseRingView::AlarmCloseShowTimer(void)
-{
-    g_stopAlarmCloseHandle = osTimerNew((osTimerFunc_t)CloseTimerCallback, osTimerPeriodic, NULL, NULL);
-    if (g_stopAlarmCloseHandle == NULL) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmMaxClock::AlarmCloseShowTimer osTimerNew failed!!");
-        return;
-    }
-    uint32 tick = osMs2Tick(CLOSE_THREE_SECONDS);
-    osStatus_t retTimer = osTimerStart(g_stopAlarmCloseHandle, tick);
-    if (retTimer != osOK) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmMaxClock::AlarmCloseShowTimer osTimerStart failed, ret = %lx!!", retTimer);
-        if (g_stopAlarmCloseHandle != NULL) {
-            retTimer = osTimerDelete(g_stopAlarmCloseHandle);
-            if (retTimer != osOK) {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmMaxClock::AlarmCloseShowTimer osTimerDelete failed, ret = %lx!!", retTimer);
-                return;
-            }
-            g_stopAlarmCloseHandle = NULL;
-        }
-        return;
-    }
-}
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Alarm\r
+ * Author:\r
+ * Create: 2021-09-11\r
+ */\r
+\r
+#include "AlarmCloseRingView.h"\r
+#include "common/screen.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_label_button.h"\r
+#include <string>\r
+#include "cmsis_os.h"\r
+#include "AlarmPopUpPresenter.h"\r
+#include "PhoneService.h"\r
+\r
+namespace OHOS {\r
+#define CLOSE "关闭"\r
+\r
+osTimerId_t g_stopAlarmCloseHandle = NULL;\r
+static AlarmCloseRingView *g_pAlarmCloseRingView = nullptr;\r
+constexpr int16_t MAX_SET_ZERO_LEN = 0;\r
+constexpr int16_t MAX_SET_SRC_LEN = 90;\r
+constexpr int16_t MAX_IMAGE_X_LEN = 165;\r
+constexpr int16_t MAX_IMAGE_Y_LEN = 150;\r
+constexpr int16_t MAX_LABEL_X_LEN = 187;\r
+constexpr int16_t MAX_LABEL_Y_LEN = 300;\r
+constexpr int16_t MAX_LABEL_LENGTH_LEN = 350;\r
+constexpr int16_t MAX_LABEL_HEIGHT_LEN = 40;\r
+constexpr int16_t MAX_LABEL_FONT_LEN = 35;\r
+\r
+static constexpr uint64_t CLOSE_THREE_SECONDS = 3000;\r
+void CloseTimerCallback(int data);\r
+void EndCloseHandle(void);\r
+\r
+AlarmCloseRingView::AlarmCloseRingView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmCloseRingView::AlarmCloseRingView");\r
+    g_pAlarmCloseRingView = this;\r
+}\r
+\r
+AlarmCloseRingView::~AlarmCloseRingView()\r
+{\r
+    group->RemoveAll();\r
+    delete imageClose;\r
+    imageClose = nullptr;\r
+    delete label;\r
+    label = nullptr;\r
+    delete group;\r
+    group = nullptr;\r
+    g_pAlarmCloseRingView = nullptr;\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmCloseRingView::~AlarmCloseRingView");\r
+}\r
+\r
+AlarmCloseRingView *AlarmCloseRingView::GetInstance(void)\r
+{\r
+    return g_pAlarmCloseRingView;\r
+}\r
+\r
+UIViewGroup *AlarmCloseRingView::InitCloseRingView(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmCloseRingView::InitCloseRingView");\r
+    group = new UIViewGroup();\r
+    if (group == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmCloseRingView::group null!");\r
+        return nullptr;\r
+    }\r
+    group->SetPosition(MAX_SET_ZERO_LEN, MAX_SET_ZERO_LEN);\r
+    group->SetWidth(HORIZONTAL_RESOLUTION);\r
+    group->SetHeight(VERTICAL_RESOLUTION);\r
+\r
+    imageClose = new UIImageView();\r
+    if (imageClose == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmCloseRingView::imageClose null!");\r
+        return nullptr;\r
+    }\r
+    imageClose->SetPosition(MAX_IMAGE_X_LEN, MAX_IMAGE_Y_LEN);\r
+    imageClose->SetWidth(MAX_SET_SRC_LEN);\r
+    imageClose->SetHeight(MAX_SET_SRC_LEN);\r
+    imageClose->SetSrc(ALARM_CLOCK_CLOSE_ADD_PATH);\r
+    imageClose->SetTouchable(true);\r
+    group->Add(imageClose);\r
+\r
+    label = new UILabel();\r
+    if (label == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmCloseRingView::label null!");\r
+        return nullptr;\r
+    }\r
+    label->SetPosition(MAX_LABEL_X_LEN, MAX_LABEL_Y_LEN, MAX_LABEL_LENGTH_LEN, MAX_LABEL_HEIGHT_LEN);\r
+    label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, MAX_LABEL_FONT_LEN);\r
+    label->SetText(CLOSE);\r
+    group->Add(label);\r
+    UIView::OnDragListener *listener =static_cast<UIView::OnDragListener*>(AlarmPopUpPresenter::GetInstance());\r
+    group->SetOnDragListener(listener);\r
+    group->SetDraggable(true);\r
+    group->SetTouchable(true);\r
+    return group;\r
+}\r
+\r
+void AlarmCloseRingView::CancelCloseHandle(void)\r
+{\r
+    if (g_stopAlarmCloseHandle != NULL) {\r
+        osStatus_t ret = osTimerDelete(g_stopAlarmCloseHandle);\r
+        if (ret != osOK) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CloseTimerCallback osTimerDelete failed, ret = %lx!!", ret);\r
+            return;\r
+        }\r
+        g_stopAlarmCloseHandle = NULL;\r
+    }\r
+}\r
+\r
+void EndCloseHandle(void)\r
+{\r
+    uint16_t preSlice = AlarmClockModel::GetInstance()->JudgePreSlice();\r
+    NativeAbility::GetInstance().ChangeSlice(preSlice);\r
+}\r
+\r
+static void CloseTimerCallbackProc(int data)\r
+{\r
+    (void)data;\r
+    if (AlarmCloseRingView::GetInstance() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CloseTimerCallbackProc AlarmCloseRingView::GetInstance() nullptr!!");\r
+        return;\r
+    }\r
+    AlarmCloseRingView::GetInstance()->CancelCloseHandle();\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClose scan end jumpView");\r
+    EndCloseHandle();\r
+}\r
+\r
+void CloseTimerCallback(int data)\r
+{\r
+    GraphicService::GetInstance()->PostGraphicEvent(std::bind(CloseTimerCallbackProc, data));\r
+}\r
+\r
+void AlarmCloseRingView::AlarmCloseShowTimer(void)\r
+{\r
+    g_stopAlarmCloseHandle = osTimerNew((osTimerFunc_t)CloseTimerCallback, osTimerPeriodic, NULL, NULL);\r
+    if (g_stopAlarmCloseHandle == NULL) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmMaxClock::AlarmCloseShowTimer osTimerNew failed!!");\r
+        return;\r
+    }\r
+    uint32 tick = osMs2Tick(CLOSE_THREE_SECONDS);\r
+    osStatus_t retTimer = osTimerStart(g_stopAlarmCloseHandle, tick);\r
+    if (retTimer != osOK) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmMaxClock::AlarmCloseShowTimer osTimerStart failed, ret = %lx!!", retTimer);\r
+        if (g_stopAlarmCloseHandle != NULL) {\r
+            retTimer = osTimerDelete(g_stopAlarmCloseHandle);\r
+            if (retTimer != osOK) {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmMaxClock::AlarmCloseShowTimer osTimerDelete failed, ret = %lx!!", retTimer);\r
+                return;\r
+            }\r
+            g_stopAlarmCloseHandle = NULL;\r
+        }\r
+        return;\r
+    }\r
+}\r
+} // namespace OHOS\r
index c0c3907..b5d4e8f 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Alarm
- * Author:
- * Create: 2021-09-11
- */
-
-#include "AlarmConfigView.h"
-#include "UiConfig.h"
-#include <string>
-#include "AlarmPresenter.h"
-#include <sstream>
-#include "color.h"
-
-namespace OHOS {
-#define SET_ALARM "编辑闹钟"
-#define TIME "9:00:00"
-#define SET_THIS_TIME "更改时间"
-#define WEEK_MON_TUE "一 二"
-#define SET_DATA "更改星期"
-#define CHANGE_NAME "闹铃"
-#define SET_NAME "更改闹铃"
-#define DELETE_INTERFACES "删除"
-#define EVERY_DAY "每天"
-#define DO_NOT_REPEAT "不重复"
-
-static AlarmConfigView *g_pAlarmConfigView = nullptr;
-constexpr int16_t CONTAINER_X = 0;
-constexpr int16_t CONTAINER_Y = 0;
-constexpr int16_t SET_ONE = 1;
-constexpr int16_t SET_FOUR = 4;
-constexpr int16_t TITLE_X_LEN = 100;
-constexpr int16_t MAX_TITLE_X_LEN = 160;
-constexpr int16_t MAX_TITLE_Y_LEN = 45;
-constexpr int16_t MAX_DATA_X = 65;
-constexpr int16_t CLOCK_X = 165;
-constexpr int16_t LABEL_WID = 250;
-constexpr int16_t MAX_LABEL_H_LEN = 80;
-constexpr int16_t MAX_DATA_W_LEN = 275;
-constexpr int16_t DIGITAL_CLOCK_FONT = 45;
-constexpr int16_t MAX_LABEL_TIME_Y_LEN = 195;
-constexpr int16_t LABEL_SET_TIME_Y = 245;
-constexpr int16_t MAX_LABEL_DAY_Y_LEN = 320;
-constexpr int16_t MAX_LABEL_SET_WEEK_Y_LEN = 380;
-constexpr int16_t MAX_LABEL_LABEL_CHANGE_NAME_Y_LEN = 460;
-constexpr int16_t MAX_LABEL_SET_NAME_Y_LEN = 505;
-constexpr int16_t MAX_DEFAULT_FONT_LEN = 34;
-constexpr int16_t LITTLE_LABEL_FONT = 30;
-constexpr int16_t MAX_DEFAULT_FONT_2_LEN = 35;
-constexpr int16_t MAX_DEFAULT_LIT_FONT2_LEN = 40;
-constexpr int16_t MAX_BACK_BUTTON_HEIGHT_LEN = 64;
-constexpr int16_t MAX_FONT_DEFAULT_SIZE_LEN = 24;
-constexpr int16_t MAX_DELETE_BUTTON_W_LEN = 320;
-constexpr int16_t LABEL_DAY_WIDTH = 320;
-constexpr int16_t MAX_DELETE_BUTTON_H_LEN = 100;
-constexpr int16_t MAX_DELETE_BUTTON_X_LEN = 63;
-constexpr int16_t MAX_DELETE_BUTTON_Y_LEN = 365;
-constexpr int16_t MAX_IMAGE_CHANGE_X_LEN = 370;
-constexpr int16_t MAX_IMAGE_CHANGE1_Y_LEN = 210;
-constexpr int16_t MAX_IMAGE_CHANGE2_Y_LEN = 350;
-constexpr int16_t MAX_IMAGE_CHANGE3_Y_LEN = 470;
-constexpr int16_t MAX_IMAGE_CHANGE_WIDTH = 50;
-constexpr int16_t MAX_IMAGE_CHANGE_HEIGHT = 60;
-constexpr int16_t CONFIG_SCROLL_SIZE = 50;
-constexpr int16_t LABEL_SEMITRANSPARENT = 168;
-
-AlarmConfigView::AlarmConfigView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::AlarmConfigView");
-    g_pAlarmConfigView = this;
-}
-
-AlarmConfigView::~AlarmConfigView()
-{
-    group->RemoveAll();
-    configScroll->RemoveAll();
-    delete editLabel;
-    editLabel = nullptr;
-    delete deleteImage;
-    deleteImage = nullptr;
-    delete configScroll;
-    configScroll = nullptr;
-    delete labelTime;
-    labelTime = nullptr;
-    delete labelSetTime;
-    labelSetTime = nullptr;
-    delete labelDay;
-    labelDay = nullptr;
-    delete labelSetWeek;
-    labelSetWeek = nullptr;
-    delete labelChangeName;
-    labelChangeName = nullptr;
-    delete labelSetName;
-    labelSetName = nullptr;
-    delete changeIcon1;
-    changeIcon1 = nullptr;
-    delete changeIcon2;
-    changeIcon2 = nullptr;
-    delete changeIcon3;
-    changeIcon3 = nullptr;
-    delete group;
-    group = nullptr;
-    g_pAlarmConfigView = nullptr;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::~AlarmConfigView");
-}
-
-AlarmConfigView *AlarmConfigView::GetInstance(void)
-{
-    return g_pAlarmConfigView;
-}
-
-UILabel *AlarmConfigView::CreateConfigLabel(const char *buttonText, int16_t labelFont, int16_t x, int16_t y, int16_t width)
-{
-    if (buttonText == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: buttonText NULL!");
-        return nullptr;
-    }
-    UILabel *label = nullptr;
-    label = new UILabel();
-    if (label == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: CreateConfigLabel return NULL");
-        return nullptr;
-    }
-    label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, labelFont);
-    label->SetText(buttonText);
-    label->SetPosition(x, y, width, MAX_LABEL_H_LEN);
-    return label;
-}
-
-void AlarmConfigView::CreateChangeIcons(void)
-{
-    changeIcon1 = new UIImageView();
-    if (changeIcon1 == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new changeIcon1 fail");
-        return;
-    }
-    changeIcon1->SetPosition(MAX_IMAGE_CHANGE_X_LEN, MAX_IMAGE_CHANGE1_Y_LEN, MAX_IMAGE_CHANGE_WIDTH, MAX_IMAGE_CHANGE_HEIGHT);
-    changeIcon1->SetSrc(PNG_SETTTING_BUTTON_IMAGE);
-    configScroll->Add(changeIcon1);
-
-    changeIcon2 = new UIImageView();
-    if (changeIcon2 == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new changeIcon2 fail");
-        return;
-    }
-    changeIcon2->SetPosition(MAX_IMAGE_CHANGE_X_LEN, MAX_IMAGE_CHANGE2_Y_LEN, MAX_IMAGE_CHANGE_WIDTH, MAX_IMAGE_CHANGE_HEIGHT);
-    changeIcon2->SetSrc(PNG_SETTTING_BUTTON_IMAGE);
-    configScroll->Add(changeIcon2);
-
-    changeIcon3 = new UIImageView();
-    if (changeIcon3 == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new changeIcon3 fail");
-        return;
-    }
-    changeIcon3->SetPosition(MAX_IMAGE_CHANGE_X_LEN, MAX_IMAGE_CHANGE3_Y_LEN, MAX_IMAGE_CHANGE_WIDTH, MAX_IMAGE_CHANGE_HEIGHT);
-    changeIcon3->SetSrc(PNG_SETTTING_BUTTON_IMAGE);
-    configScroll->Add(changeIcon3);
-
-    UIView::OnDragListener *configDragListener = (UIView::OnDragListener *)OHOS::AlarmPresenter::GetInstance();
-    if (configDragListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new configDragListener fail");
-        return;
-    }
-    group->SetOnDragListener(configDragListener);
-}
-
-void AlarmConfigView::CreateConfigButton(void)
-{
-    editLabel = CreateConfigLabel(SET_ALARM, MAX_DEFAULT_FONT_LEN, TITLE_X_LEN, MAX_TITLE_Y_LEN, LABEL_WID);
-    if (editLabel == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new editLabel fail");
-        return;
-    }
-    editLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-    configScroll->Add(editLabel);
-    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::AlarmPresenter::GetInstance();
-    if (clickListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::OnStart clickListener NULL");
-        return;
-    }
-    labelTime = new UIDigitalClock();
-    if (labelTime == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new labelTime fail");
-        return;
-    }
-    labelTime->SetViewId(SET_TIME);
-    labelTime->SetPosition(CLOCK_X, MAX_LABEL_TIME_Y_LEN, LABEL_WID, MAX_LABEL_H_LEN);
-    labelTime->SetFont(DEFAULT_VECTOR_FONT_FILENAME, DIGITAL_CLOCK_FONT);
-    labelTime->SetTouchable(true);
-    labelTime->SetDisplayMode(UIDigitalClock::DISPLAY_24_HOUR_NO_SECONDS);
-    labelTime->SetOnClickListener(clickListener);
-    configScroll->Add(labelTime);
-
-    labelSetTime = CreateConfigLabel(SET_THIS_TIME, LITTLE_LABEL_FONT, MAX_TITLE_X_LEN, LABEL_SET_TIME_Y, LABEL_WID);
-    if (labelSetTime == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new labelSetTime fail");
-        return;
-    }
-    labelSetTime->SetStyle(STYLE_TEXT_OPA, LABEL_SEMITRANSPARENT);
-    configScroll->Add(labelSetTime);
-    labelDay = CreateConfigLabel(WEEK_MON_TUE, MAX_DEFAULT_FONT_LEN, MAX_DATA_X, MAX_LABEL_DAY_Y_LEN, LABEL_DAY_WIDTH);
-    if (labelDay == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new labelDay fail");
-        return;
-    }
-    labelDay->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-    configScroll->Add(labelDay);
-    labelDay->SetViewId(SET_WEEK);
-    labelDay->SetTouchable(true);
-    labelDay->SetOnClickListener(clickListener);
-    labelSetWeek = CreateConfigLabel(SET_DATA, LITTLE_LABEL_FONT, MAX_TITLE_X_LEN, MAX_LABEL_SET_WEEK_Y_LEN, LABEL_WID);
-    if (labelSetWeek == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new labelSetWeek fail");
-        return;
-    }
-    labelSetWeek->SetStyle(STYLE_TEXT_OPA, LABEL_SEMITRANSPARENT);
-    configScroll->Add(labelSetWeek);
-}
-
-UIScrollView *AlarmConfigView::InitConfigView(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::OnStart");
-    group = new UIScrollView();
-    if (group == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new group fail");
-        return nullptr;
-    }
-    group->SetPosition(CONTAINER_X, CONTAINER_Y, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
-
-    configScroll = new UIScrollView();
-    if (configScroll == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new configScroll fail");
-        return nullptr;
-    }
-    configScroll->Resize(HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION - MAX_BACK_BUTTON_HEIGHT_LEN);
-    configScroll->SetReboundSize(CONFIG_SCROLL_SIZE);
-    configScroll->SetHorizontalScrollState(false);
-    CreateConfigButton();
-    labelChangeName = CreateConfigLabel(CHANGE_NAME, MAX_DEFAULT_FONT_LEN, MAX_TITLE_X_LEN,
-    MAX_LABEL_LABEL_CHANGE_NAME_Y_LEN, LABEL_WID);
-    if (labelChangeName == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new labelChangeName fail");
-        return nullptr;
-    }
-    configScroll->Add(labelChangeName);
-    labelSetName = CreateConfigLabel(SET_NAME, LITTLE_LABEL_FONT, MAX_TITLE_X_LEN, MAX_LABEL_SET_NAME_Y_LEN, LABEL_WID);
-    if (labelSetName == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new labelSetName fail");
-        return nullptr;
-    }
-    labelSetName->SetStyle(STYLE_TEXT_OPA, LABEL_SEMITRANSPARENT);
-    configScroll->Add(labelSetName);
-    deleteImage = new UILabelButton();
-    if (deleteImage == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new deleteImage fail");
-        return nullptr;
-    }
-    deleteImage->SetPosition(MAX_DELETE_BUTTON_X_LEN, MAX_DELETE_BUTTON_Y_LEN, MAX_DELETE_BUTTON_W_LEN, MAX_DELETE_BUTTON_H_LEN);
-    deleteImage->SetText(DELETE_INTERFACES);
-    deleteImage->SetTouchable(true);
-    deleteImage->SetViewId(ALARM_CLOCK_DELETE);
-    deleteImage->SetTextColor(Color::Red());
-    deleteImage->SetFont(DEFAULT_VECTOR_FONT_FILENAME, MAX_DEFAULT_LIT_FONT2_LEN);
-    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::AlarmPresenter::GetInstance();
-    deleteImage->SetOnClickListener(clickListener);
-    deleteImage->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);
-    
-    CreateChangeIcons();
-    group->Add(configScroll);
-    group->Add(deleteImage);
-    return group;
-}
-
-void AlarmConfigView::RefreshConfig(const uint32_t time, uint8_t week, uint16_t alarmNum)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::RefreshStep");
-    uint8_t hour = time >> 16; // 闹钟存储小时位需右移16位
-    uint8_t min = time & 0x00FF; // 闹钟存储分钟的位数右边16位需要全部置0
-    uint16_t ret;
-    std::string weekStr;
-    if (hour > 24) { // 小时数最大为24,加入判断若小时的参数超过24则错误
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::RefreshStep hour > 24 error!");
-        return;
-    }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::week = %u!", week);
-    if ((week & 0x7f) == 0x7f) { // 判断0~6位是否都为1,如若都为1,则一周7天闹钟都响应
-        weekStr = EVERY_DAY;
-    } else if (week == 0) { // 判断0~6位是否都为0,如若都为0,则一周7天都不响应,闹钟为不重复开启
-        weekStr = DO_NOT_REPEAT;
-    } else {
-        if ((week & 0x02) == 0x02) { //判断第1位是否为1,如若为1,则星期一响应
-            weekStr += MON_DAY;
-        }
-        if ((week & 0x04) == 0x04) { //判断第2位是否为1,如若为1,则星期二响应
-            weekStr += TUE_DAY;
-        }
-        if ((week & 0x08) == 0x08) { //判断第3位是否为1,如若为1,则星期三响应
-            weekStr += WED_DAY;
-        }
-        if ((week & 0x10) == 0x10) { //判断第4位是否为1,如若为1,则星期四响应
-            weekStr += THUR_DAY;
-        }
-        if ((week & 0x20) == 0x20) { //判断第5位是否为1,如若为1,则星期五响应
-            weekStr += FRI_DAY;
-        }
-        if ((week & 0x40) == 0x40) { //判断第6位是否为1,如若为1,则星期六响应
-            weekStr += SAT_DAY;
-        }
-        if ((week & 0x01) == 0x01) { //判断第0位是否为1,如若为1,则星期日响应
-            weekStr += SUN_DAY;
-        }
-    }
-    if (labelTime == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::RefreshStep labelTime error!");
-        return;
-    }
-    if (alarmNum == 0) {
-        deleteImage->SetVisible(false);
-    } else if (alarmNum >= SET_ONE && alarmNum <= SET_FOUR) {
-        deleteImage->SetVisible(true);
-    }
-    labelTime->SetTime24Hour(hour, min, 0);
-    labelDay->SetText(weekStr.c_str());
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Alarm\r
+ * Author:\r
+ * Create: 2021-09-11\r
+ */\r
+\r
+#include "AlarmConfigView.h"\r
+#include "UiConfig.h"\r
+#include <string>\r
+#include "AlarmPresenter.h"\r
+#include <sstream>\r
+#include "color.h"\r
+\r
+namespace OHOS {\r
+#define SET_ALARM "编辑闹钟"\r
+#define TIME "9:00:00"\r
+#define SET_THIS_TIME "更改时间"\r
+#define WEEK_MON_TUE "一 二"\r
+#define SET_DATA "更改星期"\r
+#define CHANGE_NAME "闹铃"\r
+#define SET_NAME "更改闹铃"\r
+#define DELETE_INTERFACES "删除"\r
+#define EVERY_DAY "每天"\r
+#define DO_NOT_REPEAT "不重复"\r
+\r
+static AlarmConfigView *g_pAlarmConfigView = nullptr;\r
+constexpr int16_t CONTAINER_X = 0;\r
+constexpr int16_t CONTAINER_Y = 0;\r
+constexpr int16_t SET_ONE = 1;\r
+constexpr int16_t SET_FOUR = 4;\r
+constexpr int16_t TITLE_X_LEN = 100;\r
+constexpr int16_t MAX_TITLE_X_LEN = 160;\r
+constexpr int16_t MAX_TITLE_Y_LEN = 45;\r
+constexpr int16_t MAX_DATA_X = 65;\r
+constexpr int16_t CLOCK_X = 165;\r
+constexpr int16_t LABEL_WID = 250;\r
+constexpr int16_t MAX_LABEL_H_LEN = 80;\r
+constexpr int16_t MAX_DATA_W_LEN = 275;\r
+constexpr int16_t DIGITAL_CLOCK_FONT = 45;\r
+constexpr int16_t MAX_LABEL_TIME_Y_LEN = 195;\r
+constexpr int16_t LABEL_SET_TIME_Y = 245;\r
+constexpr int16_t MAX_LABEL_DAY_Y_LEN = 320;\r
+constexpr int16_t MAX_LABEL_SET_WEEK_Y_LEN = 380;\r
+constexpr int16_t MAX_LABEL_LABEL_CHANGE_NAME_Y_LEN = 460;\r
+constexpr int16_t MAX_LABEL_SET_NAME_Y_LEN = 505;\r
+constexpr int16_t MAX_DEFAULT_FONT_LEN = 34;\r
+constexpr int16_t LITTLE_LABEL_FONT = 30;\r
+constexpr int16_t MAX_DEFAULT_FONT_2_LEN = 35;\r
+constexpr int16_t MAX_DEFAULT_LIT_FONT2_LEN = 40;\r
+constexpr int16_t MAX_BACK_BUTTON_HEIGHT_LEN = 64;\r
+constexpr int16_t MAX_FONT_DEFAULT_SIZE_LEN = 24;\r
+constexpr int16_t MAX_DELETE_BUTTON_W_LEN = 320;\r
+constexpr int16_t LABEL_DAY_WIDTH = 320;\r
+constexpr int16_t MAX_DELETE_BUTTON_H_LEN = 100;\r
+constexpr int16_t MAX_DELETE_BUTTON_X_LEN = 63;\r
+constexpr int16_t MAX_DELETE_BUTTON_Y_LEN = 365;\r
+constexpr int16_t MAX_IMAGE_CHANGE_X_LEN = 370;\r
+constexpr int16_t MAX_IMAGE_CHANGE1_Y_LEN = 210;\r
+constexpr int16_t MAX_IMAGE_CHANGE2_Y_LEN = 350;\r
+constexpr int16_t MAX_IMAGE_CHANGE3_Y_LEN = 470;\r
+constexpr int16_t MAX_IMAGE_CHANGE_WIDTH = 50;\r
+constexpr int16_t MAX_IMAGE_CHANGE_HEIGHT = 60;\r
+constexpr int16_t CONFIG_SCROLL_SIZE = 50;\r
+constexpr int16_t LABEL_SEMITRANSPARENT = 168;\r
+\r
+AlarmConfigView::AlarmConfigView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::AlarmConfigView");\r
+    g_pAlarmConfigView = this;\r
+}\r
+\r
+AlarmConfigView::~AlarmConfigView()\r
+{\r
+    group->RemoveAll();\r
+    configScroll->RemoveAll();\r
+    delete editLabel;\r
+    editLabel = nullptr;\r
+    delete deleteImage;\r
+    deleteImage = nullptr;\r
+    delete configScroll;\r
+    configScroll = nullptr;\r
+    delete labelTime;\r
+    labelTime = nullptr;\r
+    delete labelSetTime;\r
+    labelSetTime = nullptr;\r
+    delete labelDay;\r
+    labelDay = nullptr;\r
+    delete labelSetWeek;\r
+    labelSetWeek = nullptr;\r
+    delete labelChangeName;\r
+    labelChangeName = nullptr;\r
+    delete labelSetName;\r
+    labelSetName = nullptr;\r
+    delete changeIcon1;\r
+    changeIcon1 = nullptr;\r
+    delete changeIcon2;\r
+    changeIcon2 = nullptr;\r
+    delete changeIcon3;\r
+    changeIcon3 = nullptr;\r
+    delete group;\r
+    group = nullptr;\r
+    g_pAlarmConfigView = nullptr;\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::~AlarmConfigView");\r
+}\r
+\r
+AlarmConfigView *AlarmConfigView::GetInstance(void)\r
+{\r
+    return g_pAlarmConfigView;\r
+}\r
+\r
+UILabel *AlarmConfigView::CreateConfigLabel(const char *buttonText, int16_t labelFont, int16_t x, int16_t y, int16_t width)\r
+{\r
+    if (buttonText == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: buttonText NULL!");\r
+        return nullptr;\r
+    }\r
+    UILabel *label = nullptr;\r
+    label = new UILabel();\r
+    if (label == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: CreateConfigLabel return NULL");\r
+        return nullptr;\r
+    }\r
+    label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, labelFont);\r
+    label->SetText(buttonText);\r
+    label->SetPosition(x, y, width, MAX_LABEL_H_LEN);\r
+    return label;\r
+}\r
+\r
+void AlarmConfigView::CreateChangeIcons(void)\r
+{\r
+    changeIcon1 = new UIImageView();\r
+    if (changeIcon1 == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new changeIcon1 fail");\r
+        return;\r
+    }\r
+    changeIcon1->SetPosition(MAX_IMAGE_CHANGE_X_LEN, MAX_IMAGE_CHANGE1_Y_LEN, MAX_IMAGE_CHANGE_WIDTH, MAX_IMAGE_CHANGE_HEIGHT);\r
+    changeIcon1->SetSrc(PNG_SETTTING_BUTTON_IMAGE);\r
+    configScroll->Add(changeIcon1);\r
+\r
+    changeIcon2 = new UIImageView();\r
+    if (changeIcon2 == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new changeIcon2 fail");\r
+        return;\r
+    }\r
+    changeIcon2->SetPosition(MAX_IMAGE_CHANGE_X_LEN, MAX_IMAGE_CHANGE2_Y_LEN, MAX_IMAGE_CHANGE_WIDTH, MAX_IMAGE_CHANGE_HEIGHT);\r
+    changeIcon2->SetSrc(PNG_SETTTING_BUTTON_IMAGE);\r
+    configScroll->Add(changeIcon2);\r
+\r
+    changeIcon3 = new UIImageView();\r
+    if (changeIcon3 == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new changeIcon3 fail");\r
+        return;\r
+    }\r
+    changeIcon3->SetPosition(MAX_IMAGE_CHANGE_X_LEN, MAX_IMAGE_CHANGE3_Y_LEN, MAX_IMAGE_CHANGE_WIDTH, MAX_IMAGE_CHANGE_HEIGHT);\r
+    changeIcon3->SetSrc(PNG_SETTTING_BUTTON_IMAGE);\r
+    configScroll->Add(changeIcon3);\r
+\r
+    UIView::OnDragListener *configDragListener = (UIView::OnDragListener *)OHOS::AlarmPresenter::GetInstance();\r
+    if (configDragListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new configDragListener fail");\r
+        return;\r
+    }\r
+    group->SetOnDragListener(configDragListener);\r
+}\r
+\r
+void AlarmConfigView::CreateConfigButton(void)\r
+{\r
+    editLabel = CreateConfigLabel(SET_ALARM, MAX_DEFAULT_FONT_LEN, TITLE_X_LEN, MAX_TITLE_Y_LEN, LABEL_WID);\r
+    if (editLabel == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new editLabel fail");\r
+        return;\r
+    }\r
+    editLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+    configScroll->Add(editLabel);\r
+    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::AlarmPresenter::GetInstance();\r
+    if (clickListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::OnStart clickListener NULL");\r
+        return;\r
+    }\r
+    labelTime = new UIDigitalClock();\r
+    if (labelTime == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new labelTime fail");\r
+        return;\r
+    }\r
+    labelTime->SetViewId(SET_TIME);\r
+    labelTime->SetPosition(CLOCK_X, MAX_LABEL_TIME_Y_LEN, LABEL_WID, MAX_LABEL_H_LEN);\r
+    labelTime->SetFont(DEFAULT_VECTOR_FONT_FILENAME, DIGITAL_CLOCK_FONT);\r
+    labelTime->SetTouchable(true);\r
+    labelTime->SetDisplayMode(UIDigitalClock::DISPLAY_24_HOUR_NO_SECONDS);\r
+    labelTime->SetOnClickListener(clickListener);\r
+    configScroll->Add(labelTime);\r
+\r
+    labelSetTime = CreateConfigLabel(SET_THIS_TIME, LITTLE_LABEL_FONT, MAX_TITLE_X_LEN, LABEL_SET_TIME_Y, LABEL_WID);\r
+    if (labelSetTime == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new labelSetTime fail");\r
+        return;\r
+    }\r
+    labelSetTime->SetStyle(STYLE_TEXT_OPA, LABEL_SEMITRANSPARENT);\r
+    configScroll->Add(labelSetTime);\r
+    labelDay = CreateConfigLabel(WEEK_MON_TUE, MAX_DEFAULT_FONT_LEN, MAX_DATA_X, MAX_LABEL_DAY_Y_LEN, LABEL_DAY_WIDTH);\r
+    if (labelDay == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new labelDay fail");\r
+        return;\r
+    }\r
+    labelDay->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+    configScroll->Add(labelDay);\r
+    labelDay->SetViewId(SET_WEEK);\r
+    labelDay->SetTouchable(true);\r
+    labelDay->SetOnClickListener(clickListener);\r
+    labelSetWeek = CreateConfigLabel(SET_DATA, LITTLE_LABEL_FONT, MAX_TITLE_X_LEN, MAX_LABEL_SET_WEEK_Y_LEN, LABEL_WID);\r
+    if (labelSetWeek == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new labelSetWeek fail");\r
+        return;\r
+    }\r
+    labelSetWeek->SetStyle(STYLE_TEXT_OPA, LABEL_SEMITRANSPARENT);\r
+    configScroll->Add(labelSetWeek);\r
+}\r
+\r
+UIScrollView *AlarmConfigView::InitConfigView(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::OnStart");\r
+    group = new UIScrollView();\r
+    if (group == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new group fail");\r
+        return nullptr;\r
+    }\r
+    group->SetPosition(CONTAINER_X, CONTAINER_Y, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
+\r
+    configScroll = new UIScrollView();\r
+    if (configScroll == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new configScroll fail");\r
+        return nullptr;\r
+    }\r
+    configScroll->Resize(HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION - MAX_BACK_BUTTON_HEIGHT_LEN);\r
+    configScroll->SetReboundSize(CONFIG_SCROLL_SIZE);\r
+    configScroll->SetHorizontalScrollState(false);\r
+    CreateConfigButton();\r
+    labelChangeName = CreateConfigLabel(CHANGE_NAME, MAX_DEFAULT_FONT_LEN, MAX_TITLE_X_LEN,\r
+    MAX_LABEL_LABEL_CHANGE_NAME_Y_LEN, LABEL_WID);\r
+    if (labelChangeName == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new labelChangeName fail");\r
+        return nullptr;\r
+    }\r
+    configScroll->Add(labelChangeName);\r
+    labelSetName = CreateConfigLabel(SET_NAME, LITTLE_LABEL_FONT, MAX_TITLE_X_LEN, MAX_LABEL_SET_NAME_Y_LEN, LABEL_WID);\r
+    if (labelSetName == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new labelSetName fail");\r
+        return nullptr;\r
+    }\r
+    labelSetName->SetStyle(STYLE_TEXT_OPA, LABEL_SEMITRANSPARENT);\r
+    configScroll->Add(labelSetName);\r
+    deleteImage = new UILabelButton();\r
+    if (deleteImage == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new deleteImage fail");\r
+        return nullptr;\r
+    }\r
+    deleteImage->SetPosition(MAX_DELETE_BUTTON_X_LEN, MAX_DELETE_BUTTON_Y_LEN, MAX_DELETE_BUTTON_W_LEN, MAX_DELETE_BUTTON_H_LEN);\r
+    deleteImage->SetText(DELETE_INTERFACES);\r
+    deleteImage->SetTouchable(true);\r
+    deleteImage->SetViewId(ALARM_CLOCK_DELETE);\r
+    deleteImage->SetTextColor(Color::Red());\r
+    deleteImage->SetFont(DEFAULT_VECTOR_FONT_FILENAME, MAX_DEFAULT_LIT_FONT2_LEN);\r
+    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::AlarmPresenter::GetInstance();\r
+    deleteImage->SetOnClickListener(clickListener);\r
+    deleteImage->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);\r
+    \r
+    CreateChangeIcons();\r
+    group->Add(configScroll);\r
+    group->Add(deleteImage);\r
+    return group;\r
+}\r
+\r
+void AlarmConfigView::RefreshConfig(const uint32_t time, uint8_t week, uint16_t alarmNum)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::RefreshStep");\r
+    uint8_t hour = time >> 16; // 闹钟存储小时位需右移16位\r
+    uint8_t min = time & 0x00FF; // 闹钟存储分钟的位数右边16位需要全部置0\r
+    uint16_t ret;\r
+    std::string weekStr;\r
+    if (hour > 24) { // 小时数最大为24,加入判断若小时的参数超过24则错误\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::RefreshStep hour > 24 error!");\r
+        return;\r
+    }\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::week = %u!", week);\r
+    if ((week & 0x7f) == 0x7f) { // 判断0~6位是否都为1,如若都为1,则一周7天闹钟都响应\r
+        weekStr = EVERY_DAY;\r
+    } else if (week == 0) { // 判断0~6位是否都为0,如若都为0,则一周7天都不响应,闹钟为不重复开启\r
+        weekStr = DO_NOT_REPEAT;\r
+    } else {\r
+        if ((week & 0x02) == 0x02) { // 判断第1位是否为1,如若为1,则星期一响应\r
+            weekStr += MON_DAY;\r
+        }\r
+        if ((week & 0x04) == 0x04) { // 判断第2位是否为1,如若为1,则星期二响应\r
+            weekStr += TUE_DAY;\r
+        }\r
+        if ((week & 0x08) == 0x08) { // 判断第3位是否为1,如若为1,则星期三响应\r
+            weekStr += WED_DAY;\r
+        }\r
+        if ((week & 0x10) == 0x10) { // 判断第4位是否为1,如若为1,则星期四响应\r
+            weekStr += THUR_DAY;\r
+        }\r
+        if ((week & 0x20) == 0x20) { // 判断第5位是否为1,如若为1,则星期五响应\r
+            weekStr += FRI_DAY;\r
+        }\r
+        if ((week & 0x40) == 0x40) { // 判断第6位是否为1,如若为1,则星期六响应\r
+            weekStr += SAT_DAY;\r
+        }\r
+        if ((week & 0x01) == 0x01) { // 判断第0位是否为1,如若为1,则星期日响应\r
+            weekStr += SUN_DAY;\r
+        }\r
+    }\r
+    if (labelTime == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView::RefreshStep labelTime error!");\r
+        return;\r
+    }\r
+    if (alarmNum == 0) {\r
+        deleteImage->SetVisible(false);\r
+    } else if (alarmNum >= SET_ONE && alarmNum <= SET_FOUR) {\r
+        deleteImage->SetVisible(true);\r
+    }\r
+    labelTime->SetTime24Hour(hour, min, 0);\r
+    labelDay->SetText(weekStr.c_str());\r
+}\r
 }
\ No newline at end of file
index 82ac6bc..9e6c2ea 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Alarm
- * Author:
- * Create: 2021-09-11
- */
-
-#include "AlarmJudgeView.h"
-#include "UiConfig.h"
-#include <string>
-#include "AlarmPresenter.h"
-
-namespace OHOS {
-#define DELETE_INETERFACES "是否删除此闹钟?"
-
-static AlarmJudgeView *g_JudgeView = nullptr;
-constexpr int16_t CONTAINER_X = 0;
-constexpr int16_t CONTAINER_Y = 0;
-constexpr int16_t MAX_LABEL_X_LEN = 120;
-constexpr int16_t MAX_LABEL_Y_LEN = 160;
-constexpr int16_t MAX_LABEL_LENGTH_LEN = 400;
-constexpr int16_t MAX_LABEL_WIDTH_LEN = 50;
-constexpr int16_t MAX_LABEL_FONT_LEN = 30;
-constexpr int16_t MAX_IMAGE_DELETE_X_LEN = 90;
-constexpr int16_t MAX_IMAGE_DELETE_Y_LEN = 300;
-constexpr int16_t MAX_IMAGE_TRUE_X_LEN = 270;
-constexpr int16_t MAX_IMAGE_TRUE_Y_LEN= 300;
-constexpr int16_t MAX_IMAGE_DELETE_WIDTH_LEN = 91;
-constexpr int16_t MAX_IMAGE_TRUE_WIDTH_LEN = 91;
-
-AlarmJudgeView::AlarmJudgeView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmJudgeView::AlarmJudgeView");
-    g_JudgeView = this;
-}
-
-AlarmJudgeView::~AlarmJudgeView()
-{
-    container->RemoveAll();
-    delete labelText;
-    labelText = nullptr;
-    delete imageViewDelete;
-    imageViewDelete = nullptr;
-    delete container;
-    container = nullptr;
-    g_JudgeView = nullptr;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmJudgeView::~AlarmJudgeView");
-}
-
-void AlarmJudgeView::CreateImage(void)
-{
-    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::AlarmPresenter::GetInstance();
-    if (clickListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmJudgeView:: new OnClickListener fail");
-        return;
-    }
-    imageViewDelete = new UIImageView();
-    if (imageViewDelete == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmJudgeView:: new imageViewDelete fail");
-        return;
-    }
-    imageViewDelete->SetPosition(MAX_IMAGE_DELETE_X_LEN,
-        MAX_IMAGE_DELETE_Y_LEN); 
-    imageViewDelete->SetSrc(ALARM_DELETE_ADD_PATH);
-    imageViewDelete->SetViewId(JUDGE_DELETE);
-    imageViewDelete->SetWidth(MAX_IMAGE_DELETE_WIDTH_LEN);
-    imageViewDelete->SetTouchable(true);
-    imageViewDelete->SetOnClickListener(clickListener);
-    container->Add(imageViewDelete);
-
-    imageViewTrue = new UIImageView();
-    if (imageViewTrue == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmJudgeView:: new imageViewTrue fail");
-        return;
-    }
-    imageViewTrue->SetPosition(MAX_IMAGE_TRUE_X_LEN, MAX_IMAGE_TRUE_Y_LEN); // 50 : size
-    imageViewTrue->SetSrc(ALARM_TRUE_ADD_PATH);
-    imageViewTrue->SetViewId(JUDGE_TRUE);
-    imageViewTrue->SetWidth(MAX_IMAGE_TRUE_WIDTH_LEN);
-    imageViewTrue->SetTouchable(true);
-    imageViewTrue->SetOnClickListener(clickListener);  
-    container->Add(imageViewTrue);
-}
-
-UIScrollView *AlarmJudgeView::InitJudgeView(void)
-{
-    container = new UIScrollView();
-    if (container == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmJudgeView:: new container fail");
-        return nullptr;
-    }
-    container->SetPosition(CONTAINER_X, CONTAINER_Y);
-    container->SetWidth(HORIZONTAL_RESOLUTION);
-    container->SetHeight(VERTICAL_RESOLUTION);
-
-    labelText = new UILabel();
-    if (container == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmJudgeView:: new labelText fail");
-        return nullptr;
-    }
-    labelText->SetPosition(MAX_LABEL_X_LEN, MAX_LABEL_Y_LEN, MAX_LABEL_LENGTH_LEN, MAX_LABEL_WIDTH_LEN);
-    labelText->SetText(DELETE_INETERFACES);
-    labelText->SetFont(DEFAULT_VECTOR_FONT_FILENAME, MAX_LABEL_FONT_LEN);
-    container->Add(labelText);
-
-    CreateImage();
-    return container;
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Alarm\r
+ * Author:\r
+ * Create: 2021-09-11\r
+ */\r
+\r
+#include "AlarmJudgeView.h"\r
+#include "UiConfig.h"\r
+#include <string>\r
+#include "AlarmPresenter.h"\r
+\r
+namespace OHOS {\r
+#define DELETE_INETERFACES "是否删除此闹钟?"\r
+\r
+static AlarmJudgeView *g_JudgeView = nullptr;\r
+constexpr int16_t CONTAINER_X = 0;\r
+constexpr int16_t CONTAINER_Y = 0;\r
+constexpr int16_t MAX_LABEL_X_LEN = 120;\r
+constexpr int16_t MAX_LABEL_Y_LEN = 160;\r
+constexpr int16_t MAX_LABEL_LENGTH_LEN = 400;\r
+constexpr int16_t MAX_LABEL_WIDTH_LEN = 50;\r
+constexpr int16_t MAX_LABEL_FONT_LEN = 30;\r
+constexpr int16_t MAX_IMAGE_DELETE_X_LEN = 90;\r
+constexpr int16_t MAX_IMAGE_DELETE_Y_LEN = 300;\r
+constexpr int16_t MAX_IMAGE_TRUE_X_LEN = 270;\r
+constexpr int16_t MAX_IMAGE_TRUE_Y_LEN = 300;\r
+constexpr int16_t MAX_IMAGE_DELETE_WIDTH_LEN = 91;\r
+constexpr int16_t MAX_IMAGE_TRUE_WIDTH_LEN = 91;\r
+\r
+AlarmJudgeView::AlarmJudgeView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmJudgeView::AlarmJudgeView");\r
+    g_JudgeView = this;\r
+}\r
+\r
+AlarmJudgeView::~AlarmJudgeView()\r
+{\r
+    container->RemoveAll();\r
+    delete labelText;\r
+    labelText = nullptr;\r
+    delete imageViewDelete;\r
+    imageViewDelete = nullptr;\r
+    delete container;\r
+    container = nullptr;\r
+    g_JudgeView = nullptr;\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmJudgeView::~AlarmJudgeView");\r
+}\r
+\r
+void AlarmJudgeView::CreateImage(void)\r
+{\r
+    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::AlarmPresenter::GetInstance();\r
+    if (clickListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmJudgeView:: new OnClickListener fail");\r
+        return;\r
+    }\r
+    imageViewDelete = new UIImageView();\r
+    if (imageViewDelete == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmJudgeView:: new imageViewDelete fail");\r
+        return;\r
+    }\r
+    imageViewDelete->SetPosition(MAX_IMAGE_DELETE_X_LEN, MAX_IMAGE_DELETE_Y_LEN);\r
+    imageViewDelete->SetSrc(ALARM_DELETE_ADD_PATH);\r
+    imageViewDelete->SetViewId(JUDGE_DELETE);\r
+    imageViewDelete->SetWidth(MAX_IMAGE_DELETE_WIDTH_LEN);\r
+    imageViewDelete->SetTouchable(true);\r
+    imageViewDelete->SetOnClickListener(clickListener);\r
+    container->Add(imageViewDelete);\r
+\r
+    imageViewTrue = new UIImageView();\r
+    if (imageViewTrue == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmJudgeView:: new imageViewTrue fail");\r
+        return;\r
+    }\r
+    imageViewTrue->SetPosition(MAX_IMAGE_TRUE_X_LEN, MAX_IMAGE_TRUE_Y_LEN); // 50 : size\r
+    imageViewTrue->SetSrc(ALARM_TRUE_ADD_PATH);\r
+    imageViewTrue->SetViewId(JUDGE_TRUE);\r
+    imageViewTrue->SetWidth(MAX_IMAGE_TRUE_WIDTH_LEN);\r
+    imageViewTrue->SetTouchable(true);\r
+    imageViewTrue->SetOnClickListener(clickListener);\r
+    container->Add(imageViewTrue);\r
+}\r
+\r
+UIScrollView *AlarmJudgeView::InitJudgeView(void)\r
+{\r
+    container = new UIScrollView();\r
+    if (container == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmJudgeView:: new container fail");\r
+        return nullptr;\r
+    }\r
+    container->SetPosition(CONTAINER_X, CONTAINER_Y);\r
+    container->SetWidth(HORIZONTAL_RESOLUTION);\r
+    container->SetHeight(VERTICAL_RESOLUTION);\r
+\r
+    labelText = new UILabel();\r
+    if (container == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmJudgeView:: new labelText fail");\r
+        return nullptr;\r
+    }\r
+    labelText->SetPosition(MAX_LABEL_X_LEN, MAX_LABEL_Y_LEN, MAX_LABEL_LENGTH_LEN, MAX_LABEL_WIDTH_LEN);\r
+    labelText->SetText(DELETE_INETERFACES);\r
+    labelText->SetFont(DEFAULT_VECTOR_FONT_FILENAME, MAX_LABEL_FONT_LEN);\r
+    container->Add(labelText);\r
+\r
+    CreateImage();\r
+    return container;\r
+}\r
 }
\ No newline at end of file
index 71bbb1b..85028b1 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Alarm
- * Author:
- * Create: 2021-09-11
- */
-
-#include "AlarmMaxClock.h"
-#include "UiConfig.h"
-#include <string>
-#include "cmsis_os.h"
-#include "AlarmPresenter.h"
-#include "MainAlarmView.h"
-
-namespace OHOS {
-#define MAX_INETERFACES "当前闹钟个数已达上限"
-#define INTERFACE_ID "maxclock"
-
-osTimerId_t g_stopAlarmMaxHandle = NULL;
-static AlarmMaxClock *g_AlarmMaxClock = nullptr;
-static constexpr uint64_t MS_THREE_SECONDS = 3000;
-void ScanTimerCallback(int data);
-void EndScanHandle(void);
-
-static AlarmMaxClock *g_JudgeView = nullptr;
-constexpr int16_t CONTAINER_X = 0;
-constexpr int16_t CONTAINER_Y = 0;
-constexpr int16_t MAX_LABEL_X_LEN = 80;
-constexpr int16_t MAX_LABEL_Y_LEN = 180;
-constexpr int16_t MAX_LABEL_LENGTH_LEN = 400;
-constexpr int16_t MAX_LABEL_WIDTH_LEN = 50;
-constexpr int16_t MAX_LABEL_FONT_LEN = 30;
-constexpr int16_t MAX_IMAGE_DELETE_X_LEN = 90;
-constexpr int16_t MAX_IMAGE_DELETE_Y_LEN = 300;
-constexpr int16_t MAX_IMAGE_TRUE_X_LEN = 270;
-constexpr int16_t MAX_IMAGE_TRUE_Y_LEN= 300;
-constexpr int16_t MAX_IMAGE_DELETE_WIDTH_LEN = 150;
-constexpr int16_t MAX_IMAGE_TRUE_WIDTH_LEN = 150;
-
-AlarmMaxClock::AlarmMaxClock()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmMaxClock::AlarmMaxClock");
-    g_AlarmMaxClock = this;
-}
-
-AlarmMaxClock::~AlarmMaxClock()
-{
-    container->RemoveAll();
-    delete labelText;
-    labelText = nullptr;
-    delete container;
-    container = nullptr;
-    g_AlarmMaxClock = nullptr;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmMaxClock::~AlarmMaxClock");
-}
-
-AlarmMaxClock *AlarmMaxClock::GetInstance(void)
-{
-    return g_AlarmMaxClock;
-}
-
-UIScrollView * AlarmMaxClock::InitAlarmMax(void)
-{
-    container = new UIScrollView();
-    if (container == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmMaxClock:: new container fail");
-        return container;
-    }
-    container->SetPosition(CONTAINER_X, CONTAINER_Y);
-    container->SetWidth(HORIZONTAL_RESOLUTION);
-    container->SetHeight(VERTICAL_RESOLUTION);
-
-    labelText = new UILabel();
-    if (labelText == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmMaxClock:: new labelText fail");
-        return container;
-    }
-    labelText->SetPosition(MAX_LABEL_X_LEN, MAX_LABEL_Y_LEN, MAX_LABEL_LENGTH_LEN, MAX_LABEL_WIDTH_LEN);
-    labelText->SetText(MAX_INETERFACES);
-    labelText->SetFont(DEFAULT_VECTOR_FONT_FILENAME, MAX_LABEL_FONT_LEN);
-
-    container->SetTouchable(true);
-    container->SetDraggable(true);
-    UIView::OnDragListener *maxClockDragListener = (UIView::OnDragListener *)OHOS::AlarmPresenter::GetInstance();
-    if (maxClockDragListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmMaxClock:: maxClockDragListener is NULL");
-        return container;
-    }
-    container->SetOnDragListener(maxClockDragListener);
-    container->Add(labelText);
-
-    return container;
-}
-
-void CancelScanHandle(void)
-{
-    if (g_stopAlarmMaxHandle != NULL) {
-        osStatus_t ret = osTimerDelete(g_stopAlarmMaxHandle);
-        if (ret != osOK) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScanTimerCallback osTimerDelete failed, ret = %lx!!", ret);
-            return;
-        }
-        g_stopAlarmMaxHandle = NULL;
-    }
-}
-
-void EndScanHandle(void)
-{
-    OHOS::MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_MAXCLOCK, MAIN_INTERFACE);
-}
-
-static void ScanTimerCallbackProc(int data)
-{
-    (void)data;
-    CancelScanHandle();
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmMax scan end jumpView");
-    EndScanHandle();
-}
-
-void ScanTimerCallback(int data)
-{
-    GraphicService::GetInstance()->PostGraphicEvent(std::bind(ScanTimerCallbackProc, data));
-}
-
-void AlarmMaxClock::AlarmMaxDelayExit(void)
-{
-    g_stopAlarmMaxHandle = osTimerNew((osTimerFunc_t)ScanTimerCallback, osTimerPeriodic, NULL, NULL);
-    if (g_stopAlarmMaxHandle == NULL) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmMaxClock::AlarmMaxDelayExit osTimerNew failed!!");
-        return;
-    }
-    uint32 tick = osMs2Tick(MS_THREE_SECONDS);
-    osStatus_t retTimer = osTimerStart(g_stopAlarmMaxHandle, tick);
-    if (retTimer != osOK) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmMaxClock::AlarmMaxDelayExit osTimerStart failed, ret = %lx!!", retTimer);
-        if (g_stopAlarmMaxHandle != NULL) {
-            retTimer = osTimerDelete(g_stopAlarmMaxHandle);
-            if (retTimer != osOK) {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmMaxClock::AlarmMaxDelayExit osTimerDelete failed, ret = %lx!!", retTimer);
-                return;
-            }
-            g_stopAlarmMaxHandle = NULL;
-        }
-        return;
-    }
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Alarm\r
+ * Author:\r
+ * Create: 2021-09-11\r
+ */\r
+\r
+#include "AlarmMaxClock.h"\r
+#include "UiConfig.h"\r
+#include <string>\r
+#include "cmsis_os.h"\r
+#include "AlarmPresenter.h"\r
+#include "MainAlarmView.h"\r
+\r
+namespace OHOS {\r
+#define MAX_INETERFACES "当前闹钟个数已达上限"\r
+#define INTERFACE_ID "maxclock"\r
+\r
+osTimerId_t g_stopAlarmMaxHandle = NULL;\r
+static AlarmMaxClock *g_AlarmMaxClock = nullptr;\r
+static constexpr uint64_t MS_THREE_SECONDS = 3000;\r
+void ScanTimerCallback(int data);\r
+void EndScanHandle(void);\r
+\r
+static AlarmMaxClock *g_JudgeView = nullptr;\r
+constexpr int16_t CONTAINER_X = 0;\r
+constexpr int16_t CONTAINER_Y = 0;\r
+constexpr int16_t MAX_LABEL_X_LEN = 80;\r
+constexpr int16_t MAX_LABEL_Y_LEN = 180;\r
+constexpr int16_t MAX_LABEL_LENGTH_LEN = 400;\r
+constexpr int16_t MAX_LABEL_WIDTH_LEN = 50;\r
+constexpr int16_t MAX_LABEL_FONT_LEN = 30;\r
+constexpr int16_t MAX_IMAGE_DELETE_X_LEN = 90;\r
+constexpr int16_t MAX_IMAGE_DELETE_Y_LEN = 300;\r
+constexpr int16_t MAX_IMAGE_TRUE_X_LEN = 270;\r
+constexpr int16_t MAX_IMAGE_TRUE_Y_LEN = 300;\r
+constexpr int16_t MAX_IMAGE_DELETE_WIDTH_LEN = 150;\r
+constexpr int16_t MAX_IMAGE_TRUE_WIDTH_LEN = 150;\r
+\r
+AlarmMaxClock::AlarmMaxClock()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmMaxClock::AlarmMaxClock");\r
+    g_AlarmMaxClock = this;\r
+}\r
+\r
+AlarmMaxClock::~AlarmMaxClock()\r
+{\r
+    container->RemoveAll();\r
+    delete labelText;\r
+    labelText = nullptr;\r
+    delete container;\r
+    container = nullptr;\r
+    g_AlarmMaxClock = nullptr;\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmMaxClock::~AlarmMaxClock");\r
+}\r
+\r
+AlarmMaxClock *AlarmMaxClock::GetInstance(void)\r
+{\r
+    return g_AlarmMaxClock;\r
+}\r
+\r
+UIScrollView * AlarmMaxClock::InitAlarmMax(void)\r
+{\r
+    container = new UIScrollView();\r
+    if (container == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmMaxClock:: new container fail");\r
+        return container;\r
+    }\r
+    container->SetPosition(CONTAINER_X, CONTAINER_Y);\r
+    container->SetWidth(HORIZONTAL_RESOLUTION);\r
+    container->SetHeight(VERTICAL_RESOLUTION);\r
+\r
+    labelText = new UILabel();\r
+    if (labelText == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmMaxClock:: new labelText fail");\r
+        return container;\r
+    }\r
+    labelText->SetPosition(MAX_LABEL_X_LEN, MAX_LABEL_Y_LEN, MAX_LABEL_LENGTH_LEN, MAX_LABEL_WIDTH_LEN);\r
+    labelText->SetText(MAX_INETERFACES);\r
+    labelText->SetFont(DEFAULT_VECTOR_FONT_FILENAME, MAX_LABEL_FONT_LEN);\r
+\r
+    container->SetTouchable(true);\r
+    container->SetDraggable(true);\r
+    UIView::OnDragListener *maxClockDragListener = (UIView::OnDragListener *)OHOS::AlarmPresenter::GetInstance();\r
+    if (maxClockDragListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmMaxClock:: maxClockDragListener is NULL");\r
+        return container;\r
+    }\r
+    container->SetOnDragListener(maxClockDragListener);\r
+    container->Add(labelText);\r
+\r
+    return container;\r
+}\r
+\r
+void CancelScanHandle(void)\r
+{\r
+    if (g_stopAlarmMaxHandle != NULL) {\r
+        osStatus_t ret = osTimerDelete(g_stopAlarmMaxHandle);\r
+        if (ret != osOK) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScanTimerCallback osTimerDelete failed, ret = %lx!!", ret);\r
+            return;\r
+        }\r
+        g_stopAlarmMaxHandle = NULL;\r
+    }\r
+}\r
+\r
+void EndScanHandle(void)\r
+{\r
+    OHOS::MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_MAXCLOCK, MAIN_INTERFACE);\r
+}\r
+\r
+static void ScanTimerCallbackProc(int data)\r
+{\r
+    (void)data;\r
+    CancelScanHandle();\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmMax scan end jumpView");\r
+    EndScanHandle();\r
+}\r
+\r
+void ScanTimerCallback(int data)\r
+{\r
+    GraphicService::GetInstance()->PostGraphicEvent(std::bind(ScanTimerCallbackProc, data));\r
+}\r
+\r
+void AlarmMaxClock::AlarmMaxDelayExit(void)\r
+{\r
+    g_stopAlarmMaxHandle = osTimerNew((osTimerFunc_t)ScanTimerCallback, osTimerPeriodic, NULL, NULL);\r
+    if (g_stopAlarmMaxHandle == NULL) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmMaxClock::AlarmMaxDelayExit osTimerNew failed!!");\r
+        return;\r
+    }\r
+    uint32 tick = osMs2Tick(MS_THREE_SECONDS);\r
+    osStatus_t retTimer = osTimerStart(g_stopAlarmMaxHandle, tick);\r
+    if (retTimer != osOK) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmMaxClock::AlarmMaxDelayExit osTimerStart failed, ret = %lx!!", retTimer);\r
+        if (g_stopAlarmMaxHandle != NULL) {\r
+            retTimer = osTimerDelete(g_stopAlarmMaxHandle);\r
+            if (retTimer != osOK) {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmMaxClock::AlarmMaxDelayExit osTimerDelete failed, ret = %lx!!", retTimer);\r
+                return;\r
+            }\r
+            g_stopAlarmMaxHandle = NULL;\r
+        }\r
+        return;\r
+    }\r
+}\r
 }
\ No newline at end of file
index d703f44..dda985d 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Alarm
- * Author:
- * Create: 2021-09-11
- */
-
-#include "AlarmNewTimeView.h"
-#include "common/screen.h"
-#include "components/ui_label.h"
-#include "components/ui_label_button.h"
-#include <string>
-#include <iostream>
-#include <sstream>
-
-namespace OHOS {
-#ifndef NEW_TIME
-#define NEW_TIME "设置时间"
-#endif
-#define NEXT "下一步"
-
-static AlarmNewTimeView *g_pAlarmNewTimeView = nullptr;
-constexpr int16_t CONTAINER_X = 0;
-constexpr int16_t CONTAINER_Y = 0;
-constexpr int16_t TITLE_X = 153;
-constexpr int16_t TITLE_Y = 30;
-constexpr int16_t TIME_PICKER_X = 75;
-constexpr int16_t TIME_PICKER_WIDTH = 250;
-constexpr int16_t TIME_ITEM_HEIGHT = 80;
-constexpr int16_t TIME_LABEL_BUTTON_X = 63;
-constexpr int16_t TIME_LABEL_BUTTON_Y = 360;
-constexpr int16_t LABEL_X = 0;
-constexpr int16_t LABEL_Y = 45;
-constexpr int16_t LABEL_BLANK = 38;
-constexpr int16_t LIST_W = 300;
-constexpr int16_t LIST_H = 260;
-constexpr int16_t TITLE_LABEL_DEFAULT_HEIGHT = 50;
-constexpr int16_t BUTTON_WIDHT3 = 324;
-constexpr int16_t BUTTON_HEIGHT3 = 101;
-constexpr int16_t PICKER_FONT_SIZE = 25;
-constexpr uint8_t BACKGROUND_FONT = 40;
-constexpr uint8_t HIGHTLIGHT_FONT = 50;
-constexpr uint16_t LABEL_FONT = 40;
-
-AlarmNewTimeView::AlarmNewTimeView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView::AlarmNewTimeView");
-    g_pAlarmNewTimeView = this;
-}
-
-AlarmNewTimeView::~AlarmNewTimeView()
-{
-    group->RemoveAll();
-    delete labelButton;
-    labelButton = nullptr;
-    delete picker;
-    picker = nullptr;
-    delete title;
-    title = nullptr;
-    delete group;
-    group = nullptr;
-    g_pAlarmNewTimeView = nullptr;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView::~AlarmNewTimeView");
-}
-
-AlarmNewTimeView *AlarmNewTimeView::GetInstance(void)
-{
-    return g_pAlarmNewTimeView;
-}
-
-UILabel *AlarmNewTimeView::GetTitleLabel(const char *titleName)
-{
-    if (titleName == nullptr) {
-        return nullptr;
-    }
-    UILabel *label = new UILabel();
-    if (label == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView:: new label fail");
-        return nullptr;
-    }
-    // 2: half of screen width
-    label->SetPosition(LABEL_X, LABEL_Y, HORIZONTAL_RESOLUTION / 2, TITLE_LABEL_DEFAULT_HEIGHT);
-    label->SetText(titleName);
-    label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABEL_FONT);
-    return label;
-}
-
-void AlarmNewTimeView::CreateLabelTime(void)
-{
-    title = GetTitleLabel(NEW_TIME);
-    if (title == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateLabelTime Set title fail");
-        return;
-    }
-    group->Add(title);
-    title->SetPosition(TITLE_X, TITLE_Y); // 672: x-coordinate
-    title->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);
-    picker = new UITimePicker();
-    if (picker == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateLabelTime:: new picker fail");
-        return;
-    }
-
-    UITimePicker::SelectedListener *selectedListener =
-        (UITimePicker::SelectedListener *)OHOS::AlarmPresenter::GetInstance();
-    if (selectedListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateLabelTime:: selectedListener is NULL");
-        return;
-    }
-    picker->EnableSecond(false);
-    picker->SetPosition(TIME_PICKER_X, LABEL_Y + LABEL_BLANK, LIST_W, LIST_H); // 652: x-coordinate
-    picker->SetItemHeight(TIME_ITEM_HEIGHT);
-    picker->SetLoopState(0, true);
-    picker->SetLoopState(1, true);
-    picker->SetBackgroundFont(DEFAULT_VECTOR_FONT_FILENAME, BACKGROUND_FONT);
-    picker->SetHighlightFont(DEFAULT_VECTOR_FONT_FILENAME, HIGHTLIGHT_FONT);
-    picker->RegisterSelectedListener(selectedListener);
-    group->Add(picker);
-}
-
-UIScrollView *AlarmNewTimeView::InitNewTimeView(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView::OnStart");
-    group = new UIScrollView();
-    if (group == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView:: new group fail");
-        return nullptr;
-    }
-    group->SetPosition(CONTAINER_X, CONTAINER_Y);
-    group->SetWidth(HORIZONTAL_RESOLUTION);
-    group->SetHeight(VERTICAL_RESOLUTION);
-
-    CreateLabelTime();
-
-    labelButton = new UILabelButton();
-    if (labelButton == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView:: new labelButton fail");
-        return group;
-    }
-    labelButton->Resize(BUTTON_WIDHT3, BUTTON_HEIGHT3);
-    labelButton->SetPosition(TIME_LABEL_BUTTON_X, TIME_LABEL_BUTTON_Y);
-    labelButton->SetText(NEXT);
-    labelButton->SetViewId(ALARM_NEXT);
-    labelButton->SetTouchable(true);
-    labelButton->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);
-    labelButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABEL_FONT);
-    if (OHOS::AlarmPresenter::GetInstance() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView:: new ShadowBlue fail");
-        return group;
-    }
-    labelButton->SetTextColor(OHOS::AlarmPresenter::GetInstance()->ShadowBlue());
-    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::AlarmPresenter::GetInstance();
-    labelButton->SetOnClickListener(clickListener);
-    group->Add(labelButton);
-    
-       //增加按键监听
-       RootView::OnKeyActListener*keyactListener = (RootView::OnKeyActListener*)OHOS::AlarmPresenter::GetInstance();
-       RootView::GetInstance()->SetOnKeyActListener(keyactListener);
-
-    UIView::OnDragListener *newTimeDragListener = (UIView::OnDragListener *)OHOS::AlarmPresenter::GetInstance();
-    if (newTimeDragListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView:: new newTimeDragListener fail");
-        return group;
-    }
-    group->SetOnDragListener(newTimeDragListener);
-
-    return group;
-}
-
-void AlarmNewTimeView::RefreshNewTime(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView::RefreshStep");
-    struct tm local_time;
-    time_t seconds;
-    seconds = time(NULL);
-
-    if (localtime_r(&seconds, &local_time) == NULL) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::AlarmGetClockNum get localtime error!");
-        return;
-    }
-    std::ostringstream ostrHour, ostMin;
-    ostrHour << local_time.tm_hour;
-    ostMin << local_time.tm_min;
-    std::string weekStr = ostrHour.str() + ":" + ostMin.str();
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "time = %s!", weekStr.c_str());
-    picker->SetSelected(weekStr.c_str()); // 添加的时间默认初始时间为0点
-    uint32_t timeHour = stoi(ostrHour.str());
-    uint32_t timeMin = stoi(ostMin.str());
-    AlarmPresenter::GetInstance()->OnTimePickerInaction(timeHour, timeMin);
-}
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Alarm\r
+ * Author:\r
+ * Create: 2021-09-11\r
+ */\r
+\r
+#include "AlarmNewTimeView.h"\r
+#include "common/screen.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_label_button.h"\r
+#include <string>\r
+#include <iostream>\r
+#include <sstream>\r
+\r
+namespace OHOS {\r
+#ifndef NEW_TIME\r
+#define NEW_TIME "设置时间"\r
+#endif\r
+#define NEXT "下一步"\r
+\r
+static AlarmNewTimeView *g_pAlarmNewTimeView = nullptr;\r
+constexpr int16_t CONTAINER_X = 0;\r
+constexpr int16_t CONTAINER_Y = 0;\r
+constexpr int16_t TITLE_X = 153;\r
+constexpr int16_t TITLE_Y = 30;\r
+constexpr int16_t TIME_PICKER_X = 75;\r
+constexpr int16_t TIME_PICKER_WIDTH = 250;\r
+constexpr int16_t TIME_ITEM_HEIGHT = 80;\r
+constexpr int16_t TIME_LABEL_BUTTON_X = 63;\r
+constexpr int16_t TIME_LABEL_BUTTON_Y = 360;\r
+constexpr int16_t LABEL_X = 0;\r
+constexpr int16_t LABEL_Y = 45;\r
+constexpr int16_t LABEL_BLANK = 38;\r
+constexpr int16_t LIST_W = 300;\r
+constexpr int16_t LIST_H = 260;\r
+constexpr int16_t TITLE_LABEL_DEFAULT_HEIGHT = 50;\r
+constexpr int16_t BUTTON_WIDHT3 = 324;\r
+constexpr int16_t BUTTON_HEIGHT3 = 101;\r
+constexpr int16_t PICKER_FONT_SIZE = 25;\r
+constexpr uint8_t BACKGROUND_FONT = 40;\r
+constexpr uint8_t HIGHTLIGHT_FONT = 50;\r
+constexpr uint16_t LABEL_FONT = 40;\r
+\r
+AlarmNewTimeView::AlarmNewTimeView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView::AlarmNewTimeView");\r
+    g_pAlarmNewTimeView = this;\r
+}\r
+\r
+AlarmNewTimeView::~AlarmNewTimeView()\r
+{\r
+    group->RemoveAll();\r
+    delete labelButton;\r
+    labelButton = nullptr;\r
+    delete picker;\r
+    picker = nullptr;\r
+    delete title;\r
+    title = nullptr;\r
+    delete group;\r
+    group = nullptr;\r
+    g_pAlarmNewTimeView = nullptr;\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView::~AlarmNewTimeView");\r
+}\r
+\r
+AlarmNewTimeView *AlarmNewTimeView::GetInstance(void)\r
+{\r
+    return g_pAlarmNewTimeView;\r
+}\r
+\r
+UILabel *AlarmNewTimeView::GetTitleLabel(const char *titleName)\r
+{\r
+    if (titleName == nullptr) {\r
+        return nullptr;\r
+    }\r
+    UILabel *label = new UILabel();\r
+    if (label == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView:: new label fail");\r
+        return nullptr;\r
+    }\r
+    // 2: half of screen width\r
+    label->SetPosition(LABEL_X, LABEL_Y, HORIZONTAL_RESOLUTION / 2, TITLE_LABEL_DEFAULT_HEIGHT);\r
+    label->SetText(titleName);\r
+    label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABEL_FONT);\r
+    return label;\r
+}\r
+\r
+void AlarmNewTimeView::CreateLabelTime(void)\r
+{\r
+    title = GetTitleLabel(NEW_TIME);\r
+    if (title == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateLabelTime Set title fail");\r
+        return;\r
+    }\r
+    group->Add(title);\r
+    title->SetPosition(TITLE_X, TITLE_Y); // 672: x-coordinate\r
+    title->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
+    picker = new UITimePicker();\r
+    if (picker == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateLabelTime:: new picker fail");\r
+        return;\r
+    }\r
+\r
+    UITimePicker::SelectedListener *selectedListener =\r
+        (UITimePicker::SelectedListener *)OHOS::AlarmPresenter::GetInstance();\r
+    if (selectedListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateLabelTime:: selectedListener is NULL");\r
+        return;\r
+    }\r
+    picker->EnableSecond(false);\r
+    picker->SetPosition(TIME_PICKER_X, LABEL_Y + LABEL_BLANK, LIST_W, LIST_H); // 652: x-coordinate\r
+    picker->SetItemHeight(TIME_ITEM_HEIGHT);\r
+    picker->SetLoopState(0, true);\r
+    picker->SetLoopState(1, true);\r
+    picker->SetBackgroundFont(DEFAULT_VECTOR_FONT_FILENAME, BACKGROUND_FONT);\r
+    picker->SetHighlightFont(DEFAULT_VECTOR_FONT_FILENAME, HIGHTLIGHT_FONT);\r
+    picker->RegisterSelectedListener(selectedListener);\r
+    group->Add(picker);\r
+}\r
+\r
+UIScrollView *AlarmNewTimeView::InitNewTimeView(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView::OnStart");\r
+    group = new UIScrollView();\r
+    if (group == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView:: new group fail");\r
+        return nullptr;\r
+    }\r
+    group->SetPosition(CONTAINER_X, CONTAINER_Y);\r
+    group->SetWidth(HORIZONTAL_RESOLUTION);\r
+    group->SetHeight(VERTICAL_RESOLUTION);\r
+\r
+    CreateLabelTime();\r
+\r
+    labelButton = new UILabelButton();\r
+    if (labelButton == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView:: new labelButton fail");\r
+        return group;\r
+    }\r
+    labelButton->Resize(BUTTON_WIDHT3, BUTTON_HEIGHT3);\r
+    labelButton->SetPosition(TIME_LABEL_BUTTON_X, TIME_LABEL_BUTTON_Y);\r
+    labelButton->SetText(NEXT);\r
+    labelButton->SetViewId(ALARM_NEXT);\r
+    labelButton->SetTouchable(true);\r
+    labelButton->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);\r
+    labelButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABEL_FONT);\r
+    if (OHOS::AlarmPresenter::GetInstance() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView:: new ShadowBlue fail");\r
+        return group;\r
+    }\r
+    labelButton->SetTextColor(OHOS::AlarmPresenter::GetInstance()->ShadowBlue());\r
+    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::AlarmPresenter::GetInstance();\r
+    labelButton->SetOnClickListener(clickListener);\r
+    group->Add(labelButton);\r
+\r
+    UIView::OnDragListener *newTimeDragListener = (UIView::OnDragListener *)OHOS::AlarmPresenter::GetInstance();\r
+    if (newTimeDragListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView:: new newTimeDragListener fail");\r
+        return group;\r
+    }\r
+    group->SetOnDragListener(newTimeDragListener);\r
+\r
+    return group;\r
+}\r
+\r
+void AlarmNewTimeView::RefreshNewTime(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView::RefreshStep");\r
+    struct tm local_time;\r
+    time_t seconds = time(NULL);\r
+\r
+    if (localtime_r(&seconds, &local_time) == NULL) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::AlarmGetClockNum get localtime error!");\r
+        return;\r
+    }\r
+    std::ostringstream ostrHour, ostMin;\r
+    ostrHour << local_time.tm_hour;\r
+    ostMin << local_time.tm_min;\r
+    std::string weekStr = ostrHour.str() + ":" + ostMin.str();\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "time = %s!", weekStr.c_str());\r
+    picker->SetSelected(weekStr.c_str()); // 添加的时间默认初始时间为0点\r
+    uint32_t timeHour = stoi(ostrHour.str());\r
+    uint32_t timeMin = stoi(ostMin.str());\r
+    AlarmPresenter::GetInstance()->OnTimePickerInaction(timeHour, timeMin);\r
+}\r
+} // namespace OHOS\r
index 74317cf..04327b6 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Alarm
- * Author:
- * Create: 2021-09-11
- */
-
-
-#include "AlarmPopUpPresenter.h"
-#include "MainAlarmView.h"
-#include "ChangeSliceListener.h"
-#include "PhoneService.h"
-#include "PlayersModel.h"
-
-namespace OHOS {
-static AlarmPopUpPresenter *g_pAlarmPresenter = nullptr;
-
-constexpr int16_t SET_ZERO = 0;
-constexpr int16_t SET_ONE = 0;
-
-static constexpr uint16_t RENDER_FINISH = 2;
-
-AlarmPopUpPresenter::AlarmPopUpPresenter()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPopUpPresenter new");
-    g_pAlarmPresenter = this;
-}
-
-AlarmPopUpPresenter::~AlarmPopUpPresenter()
-{
-    g_pAlarmPresenter = nullptr;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPopUpPresenter::~AlarmPopUpPresenter");
-}
-
-void AlarmPopUpPresenter::OnStart()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter OnStart");
-    Presenter<AlarmPopUpView>::OnStart();
-}
-
-void AlarmPopUpPresenter::OnPause(void) {}
-
-void AlarmPopUpPresenter::OnResume(void) {}
-
-void AlarmPopUpPresenter::OnStop(void) {}
-
-AlarmPopUpPresenter *AlarmPopUpPresenter::GetInstance()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter GetInstance");
-    return g_pAlarmPresenter;
-}
-
-void AlarmPopUpPresenter::CancelAlarmRing()
-{
-    uint8_t alarmId = 0;
-    bool alarmStatus;
-    AlarmClockModel::GetInstance()->PopInterCancelMusic();
-    alarmStatus = AlarmClockModel::GetInstance()->GetListenClockId(&alarmId);
-    if (alarmStatus == false) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPopUpPresenter::CancelAlarmRing get alarm Id false!");
-        return;
-    }
-    AlarmClockModel::GetInstance()->ResetRingClockStatus();
-    AlarmClockModel::GetInstance()->SetCancelAlarm(alarmId);
-}
-
-void AlarmPopUpPresenter::DelayAlarmRing()
-{
-    uint8_t alarmId = 0;
-    bool alarmStatus;
-    AlarmClockModel::GetInstance()->PopInterCancelMusic();
-    alarmStatus = AlarmClockModel::GetInstance()->GetListenClockId(&alarmId);
-    if (alarmStatus == false) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPopUpPresenter::DelayAlarmRing get alarm Id false!");
-        return;
-    }
-    AlarmClockModel::GetInstance()->SetDelayAlarm(alarmId);
-}
-
-bool AlarmPopUpPresenter::OnClick(UIView &view, const ClickEvent &event)
-{
-    UNUSED(event);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "StatusButtonClickListener %s", view.GetViewId());
-    if (strcmp(view.GetViewId(), ALARM_DELETE) == 0) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmRingPresenter delete clock");
-        CancelAlarmRing();
-        AlarmPopUpView::GetInstance()->ChangeView(CHANGE_POP_UP_INTERFACE, CHANGE_INTERFACE_CLOSE_RING);
-        return true;
-    } else if (strcmp(view.GetViewId(), ALARM_CLOCK) == 0) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmRingPresenter delay clock");
-        DelayAlarmRing();
-        AlarmPopUpView::GetInstance()->ChangeView(CHANGE_POP_UP_INTERFACE, CHANGE_INTERFACE_DELAY_RING);
-        return true;
-    }
-    return true;
-}
-
-bool AlarmPopUpPresenter::OnDrag(UIView& view, const DragEvent& event) 
-{
-    return true;
-}
-
-bool AlarmPopUpPresenter::OnDragEnd(UIView& view, const DragEvent& event)
-{
-    if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "pop view DIRECTION_LEFT_TO_RIGHT");
-        if (AlarmPopUpView::GetInstance()->GetPopUpView(CHANGE_POP_UP_INTERFACE) == &view) {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "pop view cancel");
-            // 此处跳转到延迟界面
-            DelayAlarmRing();
-            AlarmPopUpView::GetInstance()->ChangeView(CHANGE_POP_UP_INTERFACE, CHANGE_INTERFACE_DELAY_RING);
-            return true;
-        } else if(AlarmPopUpView::GetInstance()->GetPopUpView(CHANGE_INTERFACE_CLOSE_RING) == &view) {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "pop CHANGE_INTERFACE_CLOSE_RING");
-            if (AlarmCloseRingView::GetInstance() == nullptr) {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmRingPresenter delay clock");
-                return false;
-            }
-            AlarmCloseRingView::GetInstance()->CancelCloseHandle();
-        } else if (AlarmPopUpView::GetInstance()->GetPopUpView(CHANGE_INTERFACE_DELAY_RING) == &view) {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "pop CHANGE_INTERFACE_DELAY_RING");
-            AlarmRingView::GetInstance()->CancelTimerHandle();
-        }
-        uint16_t preSlice = AlarmClockModel::GetInstance()->JudgePreSlice();
-        NativeAbility::GetInstance().ChangeSlice(preSlice);
-    }
-    return true;
-}
-
-void AlarmPopUpPresenter::Notify()
-{
-    if (isStartCalcu) {
-        if (calcuNotifyNums == RENDER_FINISH) {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPlayer init and start!!");
-            AlarmClockModel::GetInstance()->AlarmPlayerStart();
-            calcuNotifyNums = 0;
-            isStartCalcu = false;
-        }
-        ++calcuNotifyNums;
-    }
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Alarm\r
+ * Author:\r
+ * Create: 2021-09-11\r
+ */\r
+\r
+\r
+#include "AlarmPopUpPresenter.h"\r
+#include "MainAlarmView.h"\r
+#include "ChangeSliceListener.h"\r
+#include "PhoneService.h"\r
+#include "PlayersModel.h"\r
+\r
+namespace OHOS {\r
+static AlarmPopUpPresenter *g_pAlarmPresenter = nullptr;\r
+\r
+constexpr int16_t SET_ZERO = 0;\r
+constexpr int16_t SET_ONE = 0;\r
+\r
+static constexpr uint16_t RENDER_FINISH = 2;\r
+\r
+AlarmPopUpPresenter::AlarmPopUpPresenter()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPopUpPresenter new");\r
+    g_pAlarmPresenter = this;\r
+}\r
+\r
+AlarmPopUpPresenter::~AlarmPopUpPresenter()\r
+{\r
+    g_pAlarmPresenter = nullptr;\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPopUpPresenter::~AlarmPopUpPresenter");\r
+}\r
+\r
+void AlarmPopUpPresenter::OnStart()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter OnStart");\r
+    Presenter<AlarmPopUpView>::OnStart();\r
+}\r
+\r
+void AlarmPopUpPresenter::OnPause(void) {}\r
+\r
+void AlarmPopUpPresenter::OnResume(void) {}\r
+\r
+void AlarmPopUpPresenter::OnStop(void) {}\r
+\r
+AlarmPopUpPresenter *AlarmPopUpPresenter::GetInstance()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter GetInstance");\r
+    return g_pAlarmPresenter;\r
+}\r
+\r
+void AlarmPopUpPresenter::CancelAlarmRing()\r
+{\r
+    uint8_t alarmId = 0;\r
+    bool alarmStatus;\r
+    AlarmClockModel::GetInstance()->PopInterCancelMusic();\r
+    alarmStatus = AlarmClockModel::GetInstance()->GetListenClockId(&alarmId);\r
+    if (alarmStatus == false) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPopUpPresenter::CancelAlarmRing get alarm Id false!");\r
+        return;\r
+    }\r
+    AlarmClockModel::GetInstance()->ResetRingClockStatus();\r
+    AlarmClockModel::GetInstance()->SetCancelAlarm(alarmId);\r
+}\r
+\r
+void AlarmPopUpPresenter::DelayAlarmRing()\r
+{\r
+    uint8_t alarmId = 0;\r
+    bool alarmStatus;\r
+    AlarmClockModel::GetInstance()->PopInterCancelMusic();\r
+    alarmStatus = AlarmClockModel::GetInstance()->GetListenClockId(&alarmId);\r
+    if (alarmStatus == false) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPopUpPresenter::DelayAlarmRing get alarm Id false!");\r
+        return;\r
+    }\r
+    AlarmClockModel::GetInstance()->SetDelayAlarm(alarmId);\r
+}\r
+\r
+bool AlarmPopUpPresenter::OnClick(UIView &view, const ClickEvent &event)\r
+{\r
+    UNUSED(event);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "StatusButtonClickListener %s", view.GetViewId());\r
+    if (strcmp(view.GetViewId(), ALARM_DELETE) == 0) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmRingPresenter delete clock");\r
+        CancelAlarmRing();\r
+        AlarmPopUpView::GetInstance()->ChangeView(CHANGE_POP_UP_INTERFACE, CHANGE_INTERFACE_CLOSE_RING);\r
+        return true;\r
+    } else if (strcmp(view.GetViewId(), ALARM_CLOCK) == 0) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmRingPresenter delay clock");\r
+        DelayAlarmRing();\r
+        AlarmPopUpView::GetInstance()->ChangeView(CHANGE_POP_UP_INTERFACE, CHANGE_INTERFACE_DELAY_RING);\r
+        return true;\r
+    }\r
+    return true;\r
+}\r
+\r
+bool AlarmPopUpPresenter::OnDrag(UIView& view, const DragEvent& event)\r
+{\r
+    return true;\r
+}\r
+\r
+bool AlarmPopUpPresenter::OnDragEnd(UIView& view, const DragEvent& event)\r
+{\r
+    if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "pop view DIRECTION_LEFT_TO_RIGHT");\r
+        if (AlarmPopUpView::GetInstance()->GetPopUpView(CHANGE_POP_UP_INTERFACE) == &view) {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "pop view cancel");\r
+            // 此处跳转到延迟界面\r
+            DelayAlarmRing();\r
+            AlarmPopUpView::GetInstance()->ChangeView(CHANGE_POP_UP_INTERFACE, CHANGE_INTERFACE_DELAY_RING);\r
+            return true;\r
+        } else if (AlarmPopUpView::GetInstance()->GetPopUpView(CHANGE_INTERFACE_CLOSE_RING) == &view) {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "pop CHANGE_INTERFACE_CLOSE_RING");\r
+            if (AlarmCloseRingView::GetInstance() == nullptr) {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmRingPresenter delay clock");\r
+                return false;\r
+            }\r
+            AlarmCloseRingView::GetInstance()->CancelCloseHandle();\r
+        } else if (AlarmPopUpView::GetInstance()->GetPopUpView(CHANGE_INTERFACE_DELAY_RING) == &view) {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "pop CHANGE_INTERFACE_DELAY_RING");\r
+            AlarmRingView::GetInstance()->CancelTimerHandle();\r
+        }\r
+        uint16_t preSlice = AlarmClockModel::GetInstance()->JudgePreSlice();\r
+        NativeAbility::GetInstance().ChangeSlice(preSlice);\r
+    }\r
+    return true;\r
+}\r
+\r
+void AlarmPopUpPresenter::Notify()\r
+{\r
+    if (isStartCalcu) {\r
+        if (calcuNotifyNums == RENDER_FINISH) {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPlayer init and start!!");\r
+            AlarmClockModel::GetInstance()->AlarmPlayerStart();\r
+            calcuNotifyNums = 0;\r
+            isStartCalcu = false;\r
+        }\r
+        ++calcuNotifyNums;\r
+    }\r
+}\r
 }
\ No newline at end of file
index 878f22b..3960179 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Alarm
- * Author:
- * Create: 2021-09-11
- */
-
-#include "AlarmPopUpView.h"
-#include "AlarmPopUpPresenter.h"
-#include "common/screen.h"
-#include "components/ui_label.h"
-#include "components/ui_label_button.h"
-#include <string>
-
-namespace OHOS {
-static AlarmPopUpView *g_pAlarmPopUpView = nullptr;
-
-constexpr int16_t CONTAINER_X = 0;
-constexpr int16_t CONTAINER_Y = 0;
-constexpr int16_t SET_ZERO = 0;
-constexpr int16_t SET_TWO = 2;
-constexpr int16_t SET_SRC = 90;
-constexpr int16_t LABEL_X = 185;
-constexpr int16_t LABEL_Y = 100;
-constexpr int16_t LABEL_WIDTH = 250;
-constexpr int16_t LABEL_HEIGHT = 45;
-constexpr int16_t LABEL_FONT = 40;
-constexpr int16_t CLOCK_FONT = 70;
-constexpr int16_t CLOCK_X = 140;
-constexpr int16_t CLOCK_Y = 170;
-constexpr int16_t IMAGE_DELETE_X = 85;
-constexpr int16_t IMAGE_DELETE_Y = 300;
-constexpr int16_t IMAGE_CLOCK_X = 275;
-constexpr int16_t IMAGE_CLOCK_Y = 300;
-constexpr int16_t DIGITAL_CLOCK_WIDTH = 350;
-constexpr int16_t DIGITAL_CLOCK_HEIGHT = 75;
-constexpr uint8_t MAX_HOUR = 24;
-
-AlarmPopUpView::AlarmPopUpView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPopUpView::AlarmPopUpView");
-    g_pAlarmPopUpView = this;
-}
-
-AlarmPopUpView::~AlarmPopUpView()
-{
-    delete labelPopup;
-    labelPopup = nullptr;
-    delete dClock;
-    dClock = nullptr;
-    delete imageDelete;
-    imageDelete = nullptr;
-    delete imageClock;
-    imageClock = nullptr;
-    delete closeRingView;
-    closeRingView = nullptr;
-    delete ringView;
-    ringView = nullptr;
-    delete group;
-    group = nullptr;
-    for (int alarmNum = SET_ZERO; alarmNum <= SET_TWO; alarmNum++) {
-        container[alarmNum] = nullptr;
-    }
-    g_pAlarmPopUpView = nullptr;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPopUpView::~AlarmPopUpView");
-}
-
-AlarmPopUpView *AlarmPopUpView::GetInstance(void)
-{
-    return g_pAlarmPopUpView;
-}
-
-void AlarmPopUpView::AlarmCreateLabel(void)
-{
-    labelPopup = new UILabel();
-    if (labelPopup == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPopUpView::labelPopup null!");
-        return;
-    }
-    struct tm local_time;
-    time_t seconds;
-    seconds = time(NULL);
-    int16 thisHour, thisMin;
-
-    labelPopup->SetPosition(LABEL_X, LABEL_Y, LABEL_WIDTH, LABEL_HEIGHT);
-    labelPopup->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABEL_FONT);
-    labelPopup->SetText("闹钟");
-    group->Add(labelPopup);
-
-    dClock = new UIDigitalClock();
-    if (dClock == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPopUpView::dClock null!");
-        return;
-    }
-    dClock->SetPosition(CLOCK_X, CLOCK_Y);
-    dClock->Resize(DIGITAL_CLOCK_WIDTH, DIGITAL_CLOCK_HEIGHT);
-    dClock->SetFont(DEFAULT_VECTOR_FONT_FILENAME, CLOCK_FONT);
-    if (localtime_r(&seconds, &local_time) == NULL) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPopUpView::AlarmCreateLabel get localtime error!");
-        return;
-    }
-    AlarmClockModel::GetInstance()->GetPopTimeData(&thisHour, &thisMin);
-    dClock->SetDisplayMode(UIDigitalClock::DISPLAY_24_HOUR_NO_SECONDS);
-    dClock->SetTime24Hour(thisHour, thisMin, 0);
-    group->Add(dClock);
-}
-
-void AlarmPopUpView::AlarmCreateImage(void)
-{
-    imageDelete = new UIImageView();
-    if (imageDelete == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPopUpView::imageDelete null!");
-        return;
-    }
-    imageDelete->SetPosition(IMAGE_DELETE_X, IMAGE_DELETE_Y);
-    imageDelete->SetWidth(SET_SRC);
-    imageDelete->SetHeight(SET_SRC);
-    imageDelete->SetViewId(ALARM_DELETE);
-    imageDelete->SetSrc(ALARM_DELETE_ADD_PATH);
-    imageDelete->SetTouchable(true);
-    group->Add(imageDelete);
-
-    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)AlarmPopUpPresenter::GetInstance();
-    imageDelete->SetOnClickListener(clickListener);
-
-    imageClock = new UIImageView();
-    if (imageClock == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPopUpView::imageClock null!");
-        return;
-    }
-    imageClock->SetPosition(IMAGE_CLOCK_X, IMAGE_CLOCK_Y);
-    imageClock->SetWidth(SET_SRC);
-    imageClock->SetHeight(SET_SRC);
-    imageClock->SetViewId(ALARM_CLOCK);
-    imageClock->SetSrc(ALARM_CLOCK_ADD_PATH);
-    imageClock->SetTouchable(true);
-    group->Add(imageClock);
-
-    imageClock->SetOnClickListener(clickListener);
-    UIView::OnDragListener *listener =static_cast<UIView::OnDragListener*>(AlarmPopUpPresenter::GetInstance());
-    group->SetOnDragListener(listener);
-    group->SetDraggable(true);
-    group->SetTouchable(true);
-}
-
-void AlarmPopUpView::OnStart()
-{   
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPopUpView::OnStart");
-    View<AlarmPopUpPresenter>::OnStart();
-
-    BaseView::RootView(Color::Black().full);
-
-    group = new UIViewGroup();
-    if (group == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPopUpView::group null!");
-        return;
-    }
-    group->SetPosition(CONTAINER_X, CONTAINER_Y, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
-
-    AlarmCreateLabel();
-    AlarmCreateImage();
-    AlarmClockModel::GetInstance()->SetSliceId();
-
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPopUpView::OnStart");
-}
-
-void AlarmPopUpView::OnSetUpView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPopUpView::OnSetUpView");
-    View<AlarmPopUpPresenter>::OnSetUpView();
-    container[SET_ZERO] = group;
-    RootView::GetInstance()->Add(container[SET_ZERO]);
-    // show timerView
-    Draw();
-}
-
-void AlarmPopUpView::OnTearDownView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPopUpView::OnTearDownView");
-    View<AlarmPopUpPresenter>::OnTearDownView();
-    return;
-}
-
-void AlarmPopUpView::OnStop()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPopUpView::OnStop");
-    View<AlarmPopUpPresenter>::OnStop();
-
-    if (group != nullptr) {
-        group->RemoveAll();
-    }
-    RootView::GetInstance()->ClearOnKeyActListener();
-    RootView::GetInstance()->RemoveAll();
-    return;
-}
-
-UIView* AlarmPopUpView::GetPopUpView(int16_t viewIndex)
-{
-    return container[viewIndex];
-}
-
-void AlarmPopUpView::ChangeView(int16_t hideView, int16_t showView)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainAlarmView::True");
-    container[hideView]->SetVisible(false);
-    if (showView == CHANGE_INTERFACE_CLOSE_RING) {
-        if (container[showView] == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainAlarmView::AlarmCloseRingView");
-            closeRingView = new AlarmCloseRingView();
-            if (closeRingView == nullptr) {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainAlarmView:: new closeRingView fail");
-                return;
-            }
-            container[showView] = closeRingView->InitCloseRingView();
-            if (container[showView] == nullptr) {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainAlarmView:: new container[%d] fail", showView);
-                return;
-            }
-            RootView::GetInstance()->Add(container[showView]);
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainAlarmView:: new contai ner[%d] success", showView);
-            AlarmCloseRingView::GetInstance()->AlarmCloseShowTimer();
-        }
-        container[showView]->SetVisible(true);
-        Draw();
-    } else if (showView == CHANGE_INTERFACE_DELAY_RING) {
-        if (container[showView] == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainAlarmView::AlarmRingView");
-            ringView = new AlarmRingView();
-            if (ringView == nullptr) {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainAlarmView:: new ringView fail");
-                return;
-            }
-            container[showView] = ringView->InitRingView();
-            if (container[showView] == nullptr) {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainAlarmView:: new container[%d] fail", showView);
-                return;
-            }
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainAlarmView:: new container[%d] success", showView);
-            RootView::GetInstance()->Add(container[showView]);
-            AlarmRingView::GetInstance()->AlarmRingDelayShowtimer();
-        }
-        container[showView]->SetVisible(true);
-        Draw();
-    }
-}
-
- }// namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Alarm\r
+ * Author:\r
+ * Create: 2021-09-11\r
+ */\r
+\r
+#include "AlarmPopUpView.h"\r
+#include "AlarmPopUpPresenter.h"\r
+#include "common/screen.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_label_button.h"\r
+#include <string>\r
+\r
+namespace OHOS {\r
+static AlarmPopUpView *g_pAlarmPopUpView = nullptr;\r
+\r
+constexpr int16_t CONTAINER_X = 0;\r
+constexpr int16_t CONTAINER_Y = 0;\r
+constexpr int16_t SET_ZERO = 0;\r
+constexpr int16_t SET_TWO = 2;\r
+constexpr int16_t SET_SRC = 90;\r
+constexpr int16_t LABEL_X = 185;\r
+constexpr int16_t LABEL_Y = 100;\r
+constexpr int16_t LABEL_WIDTH = 250;\r
+constexpr int16_t LABEL_HEIGHT = 45;\r
+constexpr int16_t LABEL_FONT = 40;\r
+constexpr int16_t CLOCK_FONT = 70;\r
+constexpr int16_t CLOCK_X = 140;\r
+constexpr int16_t CLOCK_Y = 170;\r
+constexpr int16_t IMAGE_DELETE_X = 85;\r
+constexpr int16_t IMAGE_DELETE_Y = 300;\r
+constexpr int16_t IMAGE_CLOCK_X = 275;\r
+constexpr int16_t IMAGE_CLOCK_Y = 300;\r
+constexpr int16_t DIGITAL_CLOCK_WIDTH = 350;\r
+constexpr int16_t DIGITAL_CLOCK_HEIGHT = 75;\r
+constexpr uint8_t MAX_HOUR = 24;\r
+\r
+AlarmPopUpView::AlarmPopUpView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPopUpView::AlarmPopUpView");\r
+    g_pAlarmPopUpView = this;\r
+}\r
+\r
+AlarmPopUpView::~AlarmPopUpView()\r
+{\r
+    delete labelPopup;\r
+    labelPopup = nullptr;\r
+    delete dClock;\r
+    dClock = nullptr;\r
+    delete imageDelete;\r
+    imageDelete = nullptr;\r
+    delete imageClock;\r
+    imageClock = nullptr;\r
+    delete closeRingView;\r
+    closeRingView = nullptr;\r
+    delete ringView;\r
+    ringView = nullptr;\r
+    delete group;\r
+    group = nullptr;\r
+    for (int alarmNum = SET_ZERO; alarmNum <= SET_TWO; alarmNum++) {\r
+        container[alarmNum] = nullptr;\r
+    }\r
+    g_pAlarmPopUpView = nullptr;\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPopUpView::~AlarmPopUpView");\r
+}\r
+\r
+AlarmPopUpView *AlarmPopUpView::GetInstance(void)\r
+{\r
+    return g_pAlarmPopUpView;\r
+}\r
+\r
+void AlarmPopUpView::AlarmCreateLabel(void)\r
+{\r
+    labelPopup = new UILabel();\r
+    if (labelPopup == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPopUpView::labelPopup null!");\r
+        return;\r
+    }\r
+    struct tm local_time;\r
+    time_t seconds = time(NULL);\r
+    int16 thisHour, thisMin;\r
+\r
+    labelPopup->SetPosition(LABEL_X, LABEL_Y, LABEL_WIDTH, LABEL_HEIGHT);\r
+    labelPopup->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABEL_FONT);\r
+    labelPopup->SetText("闹钟");\r
+    group->Add(labelPopup);\r
+\r
+    dClock = new UIDigitalClock();\r
+    if (dClock == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPopUpView::dClock null!");\r
+        return;\r
+    }\r
+    dClock->SetPosition(CLOCK_X, CLOCK_Y);\r
+    dClock->Resize(DIGITAL_CLOCK_WIDTH, DIGITAL_CLOCK_HEIGHT);\r
+    dClock->SetFont(DEFAULT_VECTOR_FONT_FILENAME, CLOCK_FONT);\r
+    if (localtime_r(&seconds, &local_time) == NULL) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPopUpView::AlarmCreateLabel get localtime error!");\r
+        return;\r
+    }\r
+    AlarmClockModel::GetInstance()->GetPopTimeData(&thisHour, &thisMin);\r
+    dClock->SetDisplayMode(UIDigitalClock::DISPLAY_24_HOUR_NO_SECONDS);\r
+    dClock->SetTime24Hour(thisHour, thisMin, 0);\r
+    group->Add(dClock);\r
+}\r
+\r
+void AlarmPopUpView::AlarmCreateImage(void)\r
+{\r
+    imageDelete = new UIImageView();\r
+    if (imageDelete == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPopUpView::imageDelete null!");\r
+        return;\r
+    }\r
+    imageDelete->SetPosition(IMAGE_DELETE_X, IMAGE_DELETE_Y);\r
+    imageDelete->SetWidth(SET_SRC);\r
+    imageDelete->SetHeight(SET_SRC);\r
+    imageDelete->SetViewId(ALARM_DELETE);\r
+    imageDelete->SetSrc(ALARM_DELETE_ADD_PATH);\r
+    imageDelete->SetTouchable(true);\r
+    group->Add(imageDelete);\r
+\r
+    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)AlarmPopUpPresenter::GetInstance();\r
+    imageDelete->SetOnClickListener(clickListener);\r
+\r
+    imageClock = new UIImageView();\r
+    if (imageClock == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPopUpView::imageClock null!");\r
+        return;\r
+    }\r
+    imageClock->SetPosition(IMAGE_CLOCK_X, IMAGE_CLOCK_Y);\r
+    imageClock->SetWidth(SET_SRC);\r
+    imageClock->SetHeight(SET_SRC);\r
+    imageClock->SetViewId(ALARM_CLOCK);\r
+    imageClock->SetSrc(ALARM_CLOCK_ADD_PATH);\r
+    imageClock->SetTouchable(true);\r
+    group->Add(imageClock);\r
+\r
+    imageClock->SetOnClickListener(clickListener);\r
+    UIView::OnDragListener *listener = static_cast<UIView::OnDragListener*>(AlarmPopUpPresenter::GetInstance());\r
+    group->SetOnDragListener(listener);\r
+    group->SetDraggable(true);\r
+    group->SetTouchable(true);\r
+}\r
+\r
+void AlarmPopUpView::OnStart()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPopUpView::OnStart");\r
+    View<AlarmPopUpPresenter>::OnStart();\r
+\r
+    BaseView::RootView(Color::Black().full);\r
+\r
+    group = new UIViewGroup();\r
+    if (group == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPopUpView::group null!");\r
+        return;\r
+    }\r
+    group->SetPosition(CONTAINER_X, CONTAINER_Y, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
+\r
+    AlarmCreateLabel();\r
+    AlarmCreateImage();\r
+    AlarmClockModel::GetInstance()->SetSliceId();\r
+\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPopUpView::OnStart");\r
+}\r
+\r
+void AlarmPopUpView::OnSetUpView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPopUpView::OnSetUpView");\r
+    View<AlarmPopUpPresenter>::OnSetUpView();\r
+    container[SET_ZERO] = group;\r
+    RootView::GetInstance()->Add(container[SET_ZERO]);\r
+    // show timerView\r
+    Draw();\r
+}\r
+\r
+void AlarmPopUpView::OnTearDownView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPopUpView::OnTearDownView");\r
+    View<AlarmPopUpPresenter>::OnTearDownView();\r
+    return;\r
+}\r
+\r
+void AlarmPopUpView::OnStop()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPopUpView::OnStop");\r
+    View<AlarmPopUpPresenter>::OnStop();\r
+\r
+    if (group != nullptr) {\r
+        group->RemoveAll();\r
+    }\r
+    RootView::GetInstance()->ClearOnKeyActListener();\r
+    RootView::GetInstance()->RemoveAll();\r
+    return;\r
+}\r
+\r
+UIView* AlarmPopUpView::GetPopUpView(int16_t viewIndex)\r
+{\r
+    return container[viewIndex];\r
+}\r
+\r
+void AlarmPopUpView::ChangeView(int16_t hideView, int16_t showView)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainAlarmView::True");\r
+    container[hideView]->SetVisible(false);\r
+    if (showView == CHANGE_INTERFACE_CLOSE_RING) {\r
+        if (container[showView] == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainAlarmView::AlarmCloseRingView");\r
+            closeRingView = new AlarmCloseRingView();\r
+            if (closeRingView == nullptr) {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainAlarmView:: new closeRingView fail");\r
+                return;\r
+            }\r
+            container[showView] = closeRingView->InitCloseRingView();\r
+            if (container[showView] == nullptr) {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainAlarmView:: new container[%d] fail", showView);\r
+                return;\r
+            }\r
+            RootView::GetInstance()->Add(container[showView]);\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainAlarmView:: new contai ner[%d] success", showView);\r
+            AlarmCloseRingView::GetInstance()->AlarmCloseShowTimer();\r
+        }\r
+        container[showView]->SetVisible(true);\r
+        Draw();\r
+    } else if (showView == CHANGE_INTERFACE_DELAY_RING) {\r
+        if (container[showView] == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainAlarmView::AlarmRingView");\r
+            ringView = new AlarmRingView();\r
+            if (ringView == nullptr) {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainAlarmView:: new ringView fail");\r
+                return;\r
+            }\r
+            container[showView] = ringView->InitRingView();\r
+            if (container[showView] == nullptr) {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainAlarmView:: new container[%d] fail", showView);\r
+                return;\r
+            }\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainAlarmView:: new container[%d] success", showView);\r
+            RootView::GetInstance()->Add(container[showView]);\r
+            AlarmRingView::GetInstance()->AlarmRingDelayShowtimer();\r
+        }\r
+        container[showView]->SetVisible(true);\r
+        Draw();\r
+    }\r
+}\r
+\r
+ }// namespace OHOS\r
index c92562d..976a269 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Alarm
- * Author:
- * Create: 2021-09-11
- */
-
-
-#include "AlarmPresenter.h"
-#include "MainAlarmView.h"
-#include "ChangeSliceListener.h"
-#include "string"
-#include "iostream"
-#include "sstream"
-#include "KeyInputListener.h"
-#include "common/key_code.h"
-
-namespace OHOS {
-static AlarmPresenter *g_pAlarmPresenter = nullptr;
-
-constexpr int16_t CLOSE_SWITCHES = 0;
-constexpr int16_t OPEN_SWITCHES = 1;
-constexpr int16_t SET_ZERO = 0;
-constexpr int16_t NEW_TIME_LISTENER = 0;
-constexpr int16_t SET_TIME_LISTENER = 1;
-constexpr uint16_t THE_FIRST_ALARM = 0;
-constexpr uint16_t SECOND_ALARM = 1;
-constexpr uint16_t THIRD_ALARM = 2;
-constexpr uint16_t FOURTH_ALARM = 3;
-constexpr uint16_t FIVE_ALARM = 4;
-constexpr uint16_t SIX_ALARM = 5;
-constexpr uint16_t UNUSED_NUM = 6;
-constexpr int16_t FIRST_ALARM = 0;
-constexpr uint8_t WEEK_BIT6 = 6;
-constexpr uint8_t WEEK_BIT5 = 5;
-constexpr uint8_t WEEK_BIT4 = 4;
-constexpr uint8_t WEEK_BIT3 = 3;
-constexpr uint8_t WEEK_BIT2 = 2;
-constexpr uint8_t WEEK_BIT1 = 1;
-constexpr uint8_t WEEK_BIT0 = 0;
-constexpr uint16_t ALARM_MAX_NUM = 4;
-constexpr int32_t BUTTON_MAX_NUM = 7;
-constexpr uint16_t CLOCK_NUM = 5;
-constexpr uint8_t CANCEL_DATA = 0;
-constexpr uint8_t SELECT_DATA = 1;
-constexpr uint8_t SLIDING_LENGTH = 30;
-
-AlarmPresenter::AlarmPresenter()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter new");
-    g_pAlarmPresenter = this;
-}
-
-AlarmPresenter::~AlarmPresenter()
-{
-    g_pAlarmPresenter = nullptr;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::~AlarmPresenter");
-}
-
-ColorType AlarmPresenter::ShadowBlue()
-{
-    return Color::GetColorFromRGB(0x17, 0x8F, 0xF8);
-}
-
-void AlarmPresenter::OnStart()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter OnStart");
-    Presenter<MainAlarmView>::OnStart();
-}
-
-void AlarmPresenter::OnPause(void) {}
-
-void AlarmPresenter::OnResume(void) {}
-
-void AlarmPresenter::OnStop(void) {}
-
-AlarmPresenter *AlarmPresenter::GetInstance()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter GetInstance");
-    return g_pAlarmPresenter;
-}
-
-void AlarmPresenter::OnTimePickerStoped(UITimePicker &picker)
-{
-    std::string hour(picker.GetSelectHour());
-    std::string minute(picker.GetSelectMinute());
-    timeHour = stoi(hour);
-    timeMin = stoi(minute);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::OnTimePickerStoped the hour is %u,and the minute is %u", timeHour, timeMin);
-}
-
-void AlarmPresenter::OnTimePickerInaction(uint32_t hour, uint32_t min)
-{
-    timeHour = hour;
-    timeMin = min;
-}
-
-void AlarmPresenter::PlayRing(void *arg)
-{
-    UNUSED(arg);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainAlarmView::playRing");
-}
-
-int16_t AlarmPresenter::GetInterStatus(void)
-{
-    return interListener;
-}
-
-void AlarmPresenter::ClickSetTime(uint16_t num)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter VIEW_ALARM_SET_TIME");
-    UNUSED(num);
-    uint32_t clockTime;
-    if ((AlarmClockModel::GetInstance()->GetClockTime(alarmListener, &clockTime)) == false) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ClickSetTime error");
-        return;
-    }
-    MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_CONFIG, CHANGE_INTERFACE_SET_TIME);
-    if (MainAlarmView::GetInstance() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickSetTime new MainAlarmView::GetInstance() error");
-        return;
-    }
-    AlarmSetTimeView::GetInstance()->RefreshSetTime(clockTime);
-    if (AlarmSetTimeView::GetInstance() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickSetTime new AlarmSetTimeView::GetInstance() error");
-        return;
-    }
-}
-
-void AlarmPresenter::ClickSetWeek(uint16_t num)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter VIEW_ALARM_SET_WEEK");
-    UNUSED(num);
-    uint8_t clockWeek;
-    if ((AlarmClockModel::GetInstance()->GetClockWeek(alarmListener, &clockWeek)) == false) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ClickSetWeek error");
-        return;
-    }
-    interListener = SET_TIME_LISTENER;
-    MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_CONFIG, CHANGE_INTERFACE_SET_WEEK);
-    if (MainAlarmView::GetInstance() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickSetWeek new MainAlarmView::GetInstance() error");
-        return;
-    }
-    memset_s(alarmWeek, sizeof(alarmWeek), 0, sizeof(alarmWeek));
-    AlarmSetWeekView::GetInstance()->RefreshSetWeek1();
-    if (AlarmSetWeekView::GetInstance() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickSetWeek new AlarmSetWeekView::GetInstance() error");
-        return;
-    }
-    AlarmSetWeekView::GetInstance()->RefreshSetWeek2(clockWeek);
-}
-
-void AlarmPresenter::ClickAlarmClockDelete(uint16_t num)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ClickAlarmClockDelete");
-    UNUSED(num);
-    MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_CONFIG, CHANGE_INTERFACE_JUDGE);
-    if (MainAlarmView::GetInstance() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickAlarmClockDelete new MainAlarmView::GetInstance() error");
-        return;
-    }
-}
-
-void AlarmPresenter::ClickJudgeDelete(uint16_t num)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter JUDGE_DELETE");
-    UNUSED(num);
-    MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_JUDGE, MAIN_INTERFACE);
-    if (MainAlarmView::GetInstance() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickJudgeDelete new MainAlarmView::GetInstance() error");
-        return;
-    }
-}
-
-void AlarmPresenter::ClickJudgeTrue(uint16_t num)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter JUDGE_DELETE");
-    UNUSED(num);
-    uint32_t clockTime;
-    AlarmClockModel::GetInstance()->DeleteClockModel(alarmListener);
-    if (MainAlarmView::GetInstance() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickJudgeTrue new MainAlarmView::GetInstance() error");
-        return;
-    }
-    MainAlarmView::GetInstance()->RefreshAlarm();
-    clockQty--;
-    for (uint16_t alarmNum = 0; alarmNum < clockQty; alarmNum++) {
-        if((AlarmClockModel::GetInstance()->GetClockTime(alarmNum, &clockTime)) == false) {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ClickJudgeTrue error");
-            return;
-        }
-        MainAlarmView::GetInstance()->RefreshAlarm();
-    }
-    AlarmClockModel::GetInstance()->SetSerialRdc();
-    MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_JUDGE, MAIN_INTERFACE);
-}
-
-void AlarmPresenter::ClickAlarmTimeOk(uint16_t num)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ALARM_OK");
-    UNUSED(num);
-    AlarmClockModel::GetInstance()->SetAlarmTime(timeHour, timeMin, alarmListener);
-    uint32_t clockTime = ((timeHour << 16) | timeMin); // 闹钟时间小时的存储位需要右移16位
-    uint8_t clockWeek;
-    if((AlarmClockModel::GetInstance()->GetClockWeek(alarmListener, &clockWeek)) == false) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ClickAlarmTimeOk error");
-        return;
-    }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter time = %u", clockTime);
-    AlarmClockModel::GetInstance()->DelAlarmDelay(alarmListener);
-
-    if (MainAlarmView::GetInstance() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickAlarmTimeOk new MainAlarmView::GetInstance() error");
-        return;
-    }
-    AlarmClockModel::GetInstance()->ButtonStatusRing(alarmListener, true);
-    MainAlarmView::GetInstance()->RefreshAlarm();
-    if (AlarmConfigView::GetInstance() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickAlarmTimeOk new AlarmConfigView::GetInstance() error");
-        return;
-    }
-    AlarmConfigView::GetInstance()->RefreshConfig(clockTime, clockWeek, UNUSED_NUM);
-    MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_SET_TIME, CHANGE_INTERFACE_CONFIG);
-}
-
-void AlarmPresenter::ClickAlarmClock(uint16_t num)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter AlarmClock1");
-    clockQty = AlarmClockModel::GetInstance()->GetAlarmNum();
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "------AlarmPresenter alarmNumbel = %u", clockQty);
-    setListener = SET_TIME_LISTENER;
-    alarmListener = num;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter alarmListener = %u", alarmListener);
-    uint32_t clockTime;
-    uint8_t clockWeek;
-    if((AlarmClockModel::GetInstance()->GetClockTime(alarmListener, &clockTime)) == false) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ClickAlarmClock error");
-        return;
-    }
-    if((AlarmClockModel::GetInstance()->GetClockWeek(alarmListener, &clockWeek)) == false) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ClickAlarmClock error");
-        return;
-    }
-    if (MainAlarmView::GetInstance() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickAlarmClock new MainAlarmView::GetInstance() error");
-        return;
-    }
-    MainAlarmView::GetInstance()->ChangeView(MAIN_INTERFACE, CHANGE_INTERFACE_CONFIG);
-    if (AlarmConfigView::GetInstance() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickAlarmClock new AlarmConfigView::GetInstance() error");
-        return;
-    }
-    AlarmConfigView::GetInstance()->RefreshConfig(clockTime, clockWeek, num);
-}
-
-void AlarmPresenter::ClickAlarmWeekOk(uint16_t num)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ALARM_WEEK_OK");
-    UNUSED(num);
-    uint32_t clockTime;
-    uint8_t clockWeek = ((alarmWeek[WEEK_BIT6] << WEEK_BIT6) | (alarmWeek[WEEK_BIT5] << WEEK_BIT5) | (alarmWeek[WEEK_BIT4] << WEEK_BIT4) |
-     (alarmWeek[WEEK_BIT3] << WEEK_BIT3) | (alarmWeek[WEEK_BIT2] << WEEK_BIT2) | (alarmWeek[WEEK_BIT1] << WEEK_BIT1) | alarmWeek[WEEK_BIT0]);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickAlarmWeekOk setListener = %u!", setListener);
-    
-    if (setListener == SET_TIME_LISTENER) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickAlarmWeekOk set time!");
-        if ((AlarmClockModel::GetInstance()->GetClockTime(alarmListener, &clockTime)) == false) {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ClickAlarmWeekOk error");
-            return;
-        }
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickAlarmWeekOk  time = %d", clockTime);
-        AlarmClockModel::GetInstance()->SetAlarmWeek(clockWeek, alarmListener);
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickAlarmWeekOk  week = %u", clockWeek);
-        AlarmConfigView::GetInstance()->RefreshConfig(clockTime, clockWeek, UNUSED_NUM);
-        if (MainAlarmView::GetInstance() == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickAlarmWeekOk new MainAlarmView::GetInstance() error");
-            return;
-        }
-        AlarmClockModel::GetInstance()->ButtonStatusRing(alarmListener, true);
-        MainAlarmView::GetInstance()->RefreshAlarm();
-        MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_SET_WEEK, CHANGE_INTERFACE_CONFIG);
-    } else if (setListener == NEW_TIME_LISTENER) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickAlarmWeekOk new time!");
-        clockQty++;
-        alarmListener = clockQty;
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "******************ClickAlarmWeekOk  alarmListener = %d***************", alarmListener);
-        AlarmClockModel::GetInstance()->SetSerialAdd();
-        AlarmClockModel::GetInstance()->SetAlarmInfo(timeHour, timeMin, clockWeek, alarmListener, setListener);
-        if ((AlarmClockModel::GetInstance()->GetClockTime(alarmListener, &clockTime)) == false) {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ClickAlarmWeekOk error");
-            return;
-        }
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickAlarmWeekOk  time = %d", clockTime);
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickAlarmWeekOk  week = %u", clockWeek);
-        if (MainAlarmView::GetInstance() == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickAlarmWeekOk new MainAlarmView::GetInstance() error");
-            return;
-        }
-        MainAlarmView::GetInstance()->RefreshAlarm();
-        MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_SET_WEEK, MAIN_INTERFACE);
-    }
-}
-
-void AlarmPresenter::ClickAlarmNewTime(uint16_t num)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ALARM_NEW_TIME");
-    clockQty = AlarmClockModel::GetInstance()->GetAlarmNum();
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter alarmNumbel = %u", clockQty);
-    UNUSED(num);
-    if (clockQty >= ALARM_MAX_NUM) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter new alarm max");
-        MainAlarmView::GetInstance()->ChangeView(MAIN_INTERFACE, CHANGE_INTERFACE_MAXCLOCK);
-        return;
-    }
-    setListener = NEW_TIME_LISTENER;
-    timeHour = 0;
-    timeMin = 0;
-    if (MainAlarmView::GetInstance() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickAlarmNewTime new MainAlarmView::GetInstance() error");
-        return;
-    }
-    MainAlarmView::GetInstance()->ChangeView(MAIN_INTERFACE, CHANGE_INTERFACE_NEW_TIME);
-    if (AlarmNewTimeView::GetInstance() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickAlarmNewTime new AlarmNewTimeView::GetInstance() error");
-        return;
-    }
-    AlarmNewTimeView::GetInstance()->RefreshNewTime();
-}
-
-void AlarmPresenter::ClickAlarmNext(uint16_t num)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ALARM_NEXT");
-    UNUSED(num);
-    for (int i = 0; i < BUTTON_MAX_NUM; i++) {
-        alarmWeek[i] = 0;
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "alarmWeek[%d] = %u", i, alarmWeek[i]);
-    }
-    interListener = NEW_TIME_LISTENER;
-    if (MainAlarmView::GetInstance() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickAlarmNext new MainAlarmView::GetInstance() error");
-        return;
-    }
-    MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_NEW_TIME, CHANGE_INTERFACE_SET_WEEK);
-    if (AlarmNewTimeView::GetInstance() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickAlarmNext new AlarmNewTimeView::GetInstance() error");
-        return;
-    }
-    if (AlarmSetWeekView::GetInstance() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickAlarmNext new AlarmSetWeekView::GetInstance() error");
-        return;
-    }
-    AlarmSetWeekView::GetInstance()->RefreshSetWeek1();
-}
-
-bool AlarmPresenter::OnDrag(UIView& view, const DragEvent& event)
-{
-    if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {
-        int16_t deltaX;
-        int16_t deltaY;
-        deltaX = event.GetDeltaX();
-        deltaY = event.GetDeltaY();
-        if (MATH_ABS(deltaX) >= MATH_ABS(deltaY) && MATH_ABS(deltaX) > SLIDING_LENGTH) {
-            MainAlarmView::GetInstance()->DropView(view);
-        }
-    }
-    return true;
-}
-
-struct AlarmPresentMapper1 {
-    const char *viewId;
-    void (AlarmPresenter::*func)(uint16_t);
-};
-
-static const AlarmPresentMapper1 PresentMapper[] = {
-    {SET_TIME, &AlarmPresenter::ClickSetTime},
-    {SET_WEEK, &AlarmPresenter::ClickSetWeek},
-    {ALARM_CLOCK_DELETE, &AlarmPresenter::ClickAlarmClockDelete},
-    {JUDGE_DELETE, &AlarmPresenter::ClickJudgeDelete},
-    {JUDGE_TRUE, &AlarmPresenter::ClickJudgeTrue},
-    {ALARM_OK, &AlarmPresenter::ClickAlarmTimeOk},
-    {ADD_BUTTON, &AlarmPresenter::ClickAlarmNewTime},
-    {ALARM_NEXT, &AlarmPresenter::ClickAlarmNext},
-    {ALARM_WEEK_OK, &AlarmPresenter::ClickAlarmWeekOk},
-    {ALARM_CLOCK[THE_FIRST_ALARM], &AlarmPresenter::ClickAlarmClock},
-    {ALARM_CLOCK[SECOND_ALARM], &AlarmPresenter::ClickAlarmClock},
-    {ALARM_CLOCK[THIRD_ALARM], &AlarmPresenter::ClickAlarmClock},
-    {ALARM_CLOCK[FOURTH_ALARM], &AlarmPresenter::ClickAlarmClock},
-    {ALARM_CLOCK[FIVE_ALARM], &AlarmPresenter::ClickAlarmClock},
-    {ALARM_CLOCK[SIX_ALARM], &AlarmPresenter::ClickAlarmClock},
-};
-
-bool AlarmPresenter::ClickFuncId(const char *buttonName)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "buttonName = %s", buttonName);
-    uint16_t num;
-    for (uint16_t i = 0; i < sizeof(PresentMapper) / sizeof(PresentMapper[0]); i++) {
-        for (num = 0; num < CLOCK_NUM; num++) {
-            if (strcmp(buttonName, ALARM_CLOCK[num]) == 0) {
-                break;
-            }
-        }
-        if (strcmp(buttonName, PresentMapper[i].viewId) == 0) {
-            (this->*(PresentMapper[i].func))(num);
-            return true;
-        }
-    } 
-    return false;
-}
-
-bool AlarmPresenter::ClickFuncView(UIView &view)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickFuncView view = %s", view.GetViewId());
-    for (int num = 0; num < BUTTON_MAX_NUM; num++) {
-        if (strcmp(view.GetViewId(), WEEK_CONTAINER[num]) == 0) {
-            alarmWeek[num] = alarmWeek[num] ? CANCEL_DATA: SELECT_DATA;
-            if(alarmWeek[num] == CANCEL_DATA) {
-                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "alarmWeek[num] = %u", alarmWeek[num]);
-                view.SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
-                dynamic_cast<UIButton &>(view).SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full,
-                UIButton::PRESSED);
-            } else if (alarmWeek[num] == SELECT_DATA) {
-                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "alarmWeek[num] = %u", alarmWeek[num]);
-                view.SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(0x6c, 0xB8, 0xFD).full);
-                dynamic_cast<UIButton &>(view).SetStyleForState(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(0x6c, 0xB8, 0xFD).full,
-                UIButton::PRESSED);
-            }
-        }
-    }
-    view.Invalidate();
-    return true;
-}
-
-bool AlarmPresenter::OnClick(UIView &view, const ClickEvent &event)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::OnClick ");
-    bool jug = ClickFuncId(view.GetViewId());
-    if (jug == false) {
-        ClickFuncView(view);
-    }
-    return true;
-}
-
-//增加按键事件
-bool AlarmPresenter::OnKeyAct(UIView& view, const KeyEvent& event)
-{
-    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;
-}
-bool AlarmStatusBtnChangeListener::OnChange(UICheckBox::UICheckBoxState state)
-{
-    if (MainAlarmView::GetInstance()->GetRefreshStatus() == true) {
-        return true;
-    }
-    switch (state) {
-        case UICheckBox::SELECTED:
-            AlarmClockModel::GetInstance()->ButtonStatusRing(alarmStatusNum, true);
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmStatusBtnChangeListener::OnChange true");
-            break;
-
-        case UICheckBox::UNSELECTED:
-            AlarmClockModel::GetInstance()->ButtonStatusRing(alarmStatusNum, false);
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmStatusBtnChangeListener::OnChange false");
-            break;
-        default:
-            break;
-    }
-    return true;
-}
-
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Alarm\r
+ * Author:\r
+ * Create: 2021-09-11\r
+ */\r
+\r
+\r
+#include "AlarmPresenter.h"\r
+#include "MainAlarmView.h"\r
+#include "ChangeSliceListener.h"\r
+#include "string"\r
+#include "iostream"\r
+#include "sstream"\r
+\r
+namespace OHOS {\r
+static AlarmPresenter *g_pAlarmPresenter = nullptr;\r
+\r
+constexpr int16_t CLOSE_SWITCHES = 0;\r
+constexpr int16_t OPEN_SWITCHES = 1;\r
+constexpr int16_t SET_ZERO = 0;\r
+constexpr int16_t NEW_TIME_LISTENER = 0;\r
+constexpr int16_t SET_TIME_LISTENER = 1;\r
+constexpr uint16_t THE_FIRST_ALARM = 0;\r
+constexpr uint16_t SECOND_ALARM = 1;\r
+constexpr uint16_t THIRD_ALARM = 2;\r
+constexpr uint16_t FOURTH_ALARM = 3;\r
+constexpr uint16_t FIVE_ALARM = 4;\r
+constexpr uint16_t SIX_ALARM = 5;\r
+constexpr uint16_t UNUSED_NUM = 6;\r
+constexpr int16_t FIRST_ALARM = 0;\r
+constexpr uint8_t WEEK_BIT6 = 6;\r
+constexpr uint8_t WEEK_BIT5 = 5;\r
+constexpr uint8_t WEEK_BIT4 = 4;\r
+constexpr uint8_t WEEK_BIT3 = 3;\r
+constexpr uint8_t WEEK_BIT2 = 2;\r
+constexpr uint8_t WEEK_BIT1 = 1;\r
+constexpr uint8_t WEEK_BIT0 = 0;\r
+constexpr uint16_t ALARM_MAX_NUM = 4;\r
+constexpr int32_t BUTTON_MAX_NUM = 7;\r
+constexpr uint16_t CLOCK_NUM = 5;\r
+constexpr uint8_t CANCEL_DATA = 0;\r
+constexpr uint8_t SELECT_DATA = 1;\r
+constexpr uint8_t SLIDING_LENGTH = 30;\r
+\r
+AlarmPresenter::AlarmPresenter()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter new");\r
+    g_pAlarmPresenter = this;\r
+}\r
+\r
+AlarmPresenter::~AlarmPresenter()\r
+{\r
+    g_pAlarmPresenter = nullptr;\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::~AlarmPresenter");\r
+}\r
+\r
+ColorType AlarmPresenter::ShadowBlue()\r
+{\r
+    return Color::GetColorFromRGB(0x17, 0x8F, 0xF8);\r
+}\r
+\r
+void AlarmPresenter::OnStart()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter OnStart");\r
+    Presenter<MainAlarmView>::OnStart();\r
+}\r
+\r
+void AlarmPresenter::OnPause(void) {}\r
+\r
+void AlarmPresenter::OnResume(void) {}\r
+\r
+void AlarmPresenter::OnStop(void) {}\r
+\r
+AlarmPresenter *AlarmPresenter::GetInstance()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter GetInstance");\r
+    return g_pAlarmPresenter;\r
+}\r
+\r
+void AlarmPresenter::OnTimePickerStoped(UITimePicker &picker)\r
+{\r
+    std::string hour(picker.GetSelectHour());\r
+    std::string minute(picker.GetSelectMinute());\r
+    timeHour = stoi(hour);\r
+    timeMin = stoi(minute);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::OnTimePickerStoped the hour is %u,and the minute is %u", timeHour, timeMin);\r
+}\r
+\r
+void AlarmPresenter::OnTimePickerInaction(uint32_t hour, uint32_t min)\r
+{\r
+    timeHour = hour;\r
+    timeMin = min;\r
+}\r
+\r
+void AlarmPresenter::PlayRing(void *arg)\r
+{\r
+    UNUSED(arg);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainAlarmView::playRing");\r
+}\r
+\r
+int16_t AlarmPresenter::GetInterStatus(void)\r
+{\r
+    return interListener;\r
+}\r
+\r
+void AlarmPresenter::ClickSetTime(uint16_t num)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter VIEW_ALARM_SET_TIME");\r
+    UNUSED(num);\r
+    uint32_t clockTime;\r
+    if ((AlarmClockModel::GetInstance()->GetClockTime(alarmListener, &clockTime)) == false) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ClickSetTime error");\r
+        return;\r
+    }\r
+    MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_CONFIG, CHANGE_INTERFACE_SET_TIME);\r
+    if (MainAlarmView::GetInstance() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickSetTime new MainAlarmView::GetInstance() error");\r
+        return;\r
+    }\r
+    AlarmSetTimeView::GetInstance()->RefreshSetTime(clockTime);\r
+    if (AlarmSetTimeView::GetInstance() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickSetTime new AlarmSetTimeView::GetInstance() error");\r
+        return;\r
+    }\r
+}\r
+\r
+void AlarmPresenter::ClickSetWeek(uint16_t num)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter VIEW_ALARM_SET_WEEK");\r
+    UNUSED(num);\r
+    uint8_t clockWeek;\r
+    if ((AlarmClockModel::GetInstance()->GetClockWeek(alarmListener, &clockWeek)) == false) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ClickSetWeek error");\r
+        return;\r
+    }\r
+    interListener = SET_TIME_LISTENER;\r
+    MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_CONFIG, CHANGE_INTERFACE_SET_WEEK);\r
+    if (MainAlarmView::GetInstance() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickSetWeek new MainAlarmView::GetInstance() error");\r
+        return;\r
+    }\r
+    memset_s(alarmWeek, sizeof(alarmWeek), 0, sizeof(alarmWeek));\r
+    AlarmSetWeekView::GetInstance()->RefreshSetWeek1();\r
+    if (AlarmSetWeekView::GetInstance() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickSetWeek new AlarmSetWeekView::GetInstance() error");\r
+        return;\r
+    }\r
+    AlarmSetWeekView::GetInstance()->RefreshSetWeek2(clockWeek);\r
+}\r
+\r
+void AlarmPresenter::ClickAlarmClockDelete(uint16_t num)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ClickAlarmClockDelete");\r
+    UNUSED(num);\r
+    MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_CONFIG, CHANGE_INTERFACE_JUDGE);\r
+    if (MainAlarmView::GetInstance() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickAlarmClockDelete new MainAlarmView::GetInstance() error");\r
+        return;\r
+    }\r
+}\r
+\r
+void AlarmPresenter::ClickJudgeDelete(uint16_t num)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter JUDGE_DELETE");\r
+    UNUSED(num);\r
+    MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_JUDGE, MAIN_INTERFACE);\r
+    if (MainAlarmView::GetInstance() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickJudgeDelete new MainAlarmView::GetInstance() error");\r
+        return;\r
+    }\r
+}\r
+\r
+void AlarmPresenter::ClickJudgeTrue(uint16_t num)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter JUDGE_DELETE");\r
+    UNUSED(num);\r
+    uint32_t clockTime;\r
+    AlarmClockModel::GetInstance()->DeleteClockModel(alarmListener);\r
+    if (MainAlarmView::GetInstance() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickJudgeTrue new MainAlarmView::GetInstance() error");\r
+        return;\r
+    }\r
+    MainAlarmView::GetInstance()->RefreshAlarm();\r
+    clockQty--;\r
+    for (uint16_t alarmNum = 0; alarmNum < clockQty; alarmNum++) {\r
+        if ((AlarmClockModel::GetInstance()->GetClockTime(alarmNum, &clockTime)) == false) {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ClickJudgeTrue error");\r
+            return;\r
+        }\r
+        MainAlarmView::GetInstance()->RefreshAlarm();\r
+    }\r
+    AlarmClockModel::GetInstance()->SetSerialRdc();\r
+    MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_JUDGE, MAIN_INTERFACE);\r
+}\r
+\r
+void AlarmPresenter::ClickAlarmTimeOk(uint16_t num)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ALARM_OK");\r
+    UNUSED(num);\r
+    AlarmClockModel::GetInstance()->SetAlarmTime(timeHour, timeMin, alarmListener);\r
+    uint32_t clockTime = ((timeHour << 16) | timeMin); // 闹钟时间小时的存储位需要右移16位\r
+    uint8_t clockWeek;\r
+    if ((AlarmClockModel::GetInstance()->GetClockWeek(alarmListener, &clockWeek)) == false) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ClickAlarmTimeOk error");\r
+        return;\r
+    }\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter time = %u", clockTime);\r
+    AlarmClockModel::GetInstance()->DelAlarmDelay(alarmListener);\r
+\r
+    if (MainAlarmView::GetInstance() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickAlarmTimeOk new MainAlarmView::GetInstance() error");\r
+        return;\r
+    }\r
+    AlarmClockModel::GetInstance()->ButtonStatusRing(alarmListener, true);\r
+    MainAlarmView::GetInstance()->RefreshAlarm();\r
+    if (AlarmConfigView::GetInstance() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickAlarmTimeOk new AlarmConfigView::GetInstance() error");\r
+        return;\r
+    }\r
+    AlarmConfigView::GetInstance()->RefreshConfig(clockTime, clockWeek, UNUSED_NUM);\r
+    MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_SET_TIME, CHANGE_INTERFACE_CONFIG);\r
+}\r
+\r
+void AlarmPresenter::ClickAlarmClock(uint16_t num)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter AlarmClock1");\r
+    clockQty = AlarmClockModel::GetInstance()->GetAlarmNum();\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "------AlarmPresenter alarmNumbel = %u", clockQty);\r
+    setListener = SET_TIME_LISTENER;\r
+    alarmListener = num;\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter alarmListener = %u", alarmListener);\r
+    uint32_t clockTime;\r
+    uint8_t clockWeek;\r
+    if ((AlarmClockModel::GetInstance()->GetClockTime(alarmListener, &clockTime)) == false) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ClickAlarmClock error");\r
+        return;\r
+    }\r
+    if ((AlarmClockModel::GetInstance()->GetClockWeek(alarmListener, &clockWeek)) == false) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ClickAlarmClock error");\r
+        return;\r
+    }\r
+    if (MainAlarmView::GetInstance() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickAlarmClock new MainAlarmView::GetInstance() error");\r
+        return;\r
+    }\r
+    MainAlarmView::GetInstance()->ChangeView(MAIN_INTERFACE, CHANGE_INTERFACE_CONFIG);\r
+    if (AlarmConfigView::GetInstance() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickAlarmClock new AlarmConfigView::GetInstance() error");\r
+        return;\r
+    }\r
+    AlarmConfigView::GetInstance()->RefreshConfig(clockTime, clockWeek, num);\r
+}\r
+\r
+void AlarmPresenter::ClickAlarmWeekOk(uint16_t num)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ALARM_WEEK_OK");\r
+    UNUSED(num);\r
+    uint32_t clockTime;\r
+    uint8_t clockWeek = ((alarmWeek[WEEK_BIT6] << WEEK_BIT6) | (alarmWeek[WEEK_BIT5] << WEEK_BIT5) | (alarmWeek[WEEK_BIT4] << WEEK_BIT4) |\r
+     (alarmWeek[WEEK_BIT3] << WEEK_BIT3) | (alarmWeek[WEEK_BIT2] << WEEK_BIT2) | (alarmWeek[WEEK_BIT1] << WEEK_BIT1) | alarmWeek[WEEK_BIT0]);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickAlarmWeekOk setListener = %u!", setListener);\r
+    \r
+    if (setListener == SET_TIME_LISTENER) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickAlarmWeekOk set time!");\r
+        if ((AlarmClockModel::GetInstance()->GetClockTime(alarmListener, &clockTime)) == false) {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ClickAlarmWeekOk error");\r
+            return;\r
+        }\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickAlarmWeekOk  time = %d", clockTime);\r
+        AlarmClockModel::GetInstance()->SetAlarmWeek(clockWeek, alarmListener);\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickAlarmWeekOk  week = %u", clockWeek);\r
+        AlarmConfigView::GetInstance()->RefreshConfig(clockTime, clockWeek, UNUSED_NUM);\r
+        if (MainAlarmView::GetInstance() == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickAlarmWeekOk new MainAlarmView::GetInstance() error");\r
+            return;\r
+        }\r
+        AlarmClockModel::GetInstance()->ButtonStatusRing(alarmListener, true);\r
+        MainAlarmView::GetInstance()->RefreshAlarm();\r
+        MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_SET_WEEK, CHANGE_INTERFACE_CONFIG);\r
+    } else if (setListener == NEW_TIME_LISTENER) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickAlarmWeekOk new time!");\r
+        clockQty++;\r
+        alarmListener = clockQty;\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "******************ClickAlarmWeekOk  alarmListener = %d***************", alarmListener);\r
+        AlarmClockModel::GetInstance()->SetSerialAdd();\r
+        AlarmClockModel::GetInstance()->SetAlarmInfo(timeHour, timeMin, clockWeek, alarmListener, setListener);\r
+        if ((AlarmClockModel::GetInstance()->GetClockTime(alarmListener, &clockTime)) == false) {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ClickAlarmWeekOk error");\r
+            return;\r
+        }\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickAlarmWeekOk  time = %d", clockTime);\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickAlarmWeekOk  week = %u", clockWeek);\r
+        if (MainAlarmView::GetInstance() == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickAlarmWeekOk new MainAlarmView::GetInstance() error");\r
+            return;\r
+        }\r
+        MainAlarmView::GetInstance()->RefreshAlarm();\r
+        MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_SET_WEEK, MAIN_INTERFACE);\r
+    }\r
+}\r
+\r
+void AlarmPresenter::ClickAlarmNewTime(uint16_t num)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ALARM_NEW_TIME");\r
+    clockQty = AlarmClockModel::GetInstance()->GetAlarmNum();\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter alarmNumbel = %u", clockQty);\r
+    UNUSED(num);\r
+    if (clockQty >= ALARM_MAX_NUM) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter new alarm max");\r
+        MainAlarmView::GetInstance()->ChangeView(MAIN_INTERFACE, CHANGE_INTERFACE_MAXCLOCK);\r
+        return;\r
+    }\r
+    setListener = NEW_TIME_LISTENER;\r
+    timeHour = 0;\r
+    timeMin = 0;\r
+    if (MainAlarmView::GetInstance() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickAlarmNewTime new MainAlarmView::GetInstance() error");\r
+        return;\r
+    }\r
+    MainAlarmView::GetInstance()->ChangeView(MAIN_INTERFACE, CHANGE_INTERFACE_NEW_TIME);\r
+    if (AlarmNewTimeView::GetInstance() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickAlarmNewTime new AlarmNewTimeView::GetInstance() error");\r
+        return;\r
+    }\r
+    AlarmNewTimeView::GetInstance()->RefreshNewTime();\r
+}\r
+\r
+void AlarmPresenter::ClickAlarmNext(uint16_t num)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter ALARM_NEXT");\r
+    UNUSED(num);\r
+    for (int i = 0; i < BUTTON_MAX_NUM; i++) {\r
+        alarmWeek[i] = 0;\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "alarmWeek[%d] = %u", i, alarmWeek[i]);\r
+    }\r
+    interListener = NEW_TIME_LISTENER;\r
+    if (MainAlarmView::GetInstance() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickAlarmNext new MainAlarmView::GetInstance() error");\r
+        return;\r
+    }\r
+    MainAlarmView::GetInstance()->ChangeView(CHANGE_INTERFACE_NEW_TIME, CHANGE_INTERFACE_SET_WEEK);\r
+    if (AlarmNewTimeView::GetInstance() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickAlarmNext new AlarmNewTimeView::GetInstance() error");\r
+        return;\r
+    }\r
+    if (AlarmSetWeekView::GetInstance() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::ClickAlarmNext new AlarmSetWeekView::GetInstance() error");\r
+        return;\r
+    }\r
+    AlarmSetWeekView::GetInstance()->RefreshSetWeek1();\r
+}\r
+\r
+bool AlarmPresenter::OnDrag(UIView& view, const DragEvent& event)\r
+{\r
+    if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {\r
+        int16_t deltaX;\r
+        int16_t deltaY;\r
+        deltaX = event.GetDeltaX();\r
+        deltaY = event.GetDeltaY();\r
+        if (MATH_ABS(deltaX) >= MATH_ABS(deltaY) && MATH_ABS(deltaX) > SLIDING_LENGTH) {\r
+            MainAlarmView::GetInstance()->DropView(view);\r
+        }\r
+    }\r
+    return true;\r
+}\r
+\r
+struct AlarmPresentMapper1 {\r
+    const char *viewId;\r
+    void (AlarmPresenter::*func)(uint16_t);\r
+};\r
+\r
+static const AlarmPresentMapper1 PresentMapper[] = {\r
+    {SET_TIME, &AlarmPresenter::ClickSetTime},\r
+    {SET_WEEK, &AlarmPresenter::ClickSetWeek},\r
+    {ALARM_CLOCK_DELETE, &AlarmPresenter::ClickAlarmClockDelete},\r
+    {JUDGE_DELETE, &AlarmPresenter::ClickJudgeDelete},\r
+    {JUDGE_TRUE, &AlarmPresenter::ClickJudgeTrue},\r
+    {ALARM_OK, &AlarmPresenter::ClickAlarmTimeOk},\r
+    {ADD_BUTTON, &AlarmPresenter::ClickAlarmNewTime},\r
+    {ALARM_NEXT, &AlarmPresenter::ClickAlarmNext},\r
+    {ALARM_WEEK_OK, &AlarmPresenter::ClickAlarmWeekOk},\r
+    {ALARM_CLOCK[THE_FIRST_ALARM], &AlarmPresenter::ClickAlarmClock},\r
+    {ALARM_CLOCK[SECOND_ALARM], &AlarmPresenter::ClickAlarmClock},\r
+    {ALARM_CLOCK[THIRD_ALARM], &AlarmPresenter::ClickAlarmClock},\r
+    {ALARM_CLOCK[FOURTH_ALARM], &AlarmPresenter::ClickAlarmClock},\r
+    {ALARM_CLOCK[FIVE_ALARM], &AlarmPresenter::ClickAlarmClock},\r
+    {ALARM_CLOCK[SIX_ALARM], &AlarmPresenter::ClickAlarmClock},\r
+};\r
+\r
+bool AlarmPresenter::ClickFuncId(const char *buttonName)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "buttonName = %s", buttonName);\r
+    uint16_t num;\r
+    for (uint16_t i = 0; i < sizeof(PresentMapper) / sizeof(PresentMapper[0]); i++) {\r
+        for (num = 0; num < CLOCK_NUM; num++) {\r
+            if (strcmp(buttonName, ALARM_CLOCK[num]) == 0) {\r
+                break;\r
+            }\r
+        }\r
+        if (strcmp(buttonName, PresentMapper[i].viewId) == 0) {\r
+            (this->*(PresentMapper[i].func))(num);\r
+            return true;\r
+        }\r
+    }\r
+    return false;\r
+}\r
+\r
+bool AlarmPresenter::ClickFuncView(UIView &view)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickFuncView view = %s", view.GetViewId());\r
+    for (int num = 0; num < BUTTON_MAX_NUM; num++) {\r
+        if (strcmp(view.GetViewId(), WEEK_CONTAINER[num]) == 0) {\r
+            alarmWeek[num] = alarmWeek[num] ? CANCEL_DATA: SELECT_DATA;\r
+            if (alarmWeek[num] == CANCEL_DATA) {\r
+                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "alarmWeek[num] = %u", alarmWeek[num]);\r
+                view.SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
+                dynamic_cast<UIButton &>(view).SetStyleForState(STYLE_BACKGROUND_COLOR,\r
+                                                                Color::Black().full, UIButton::PRESSED);\r
+            } else if (alarmWeek[num] == SELECT_DATA) {\r
+                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "alarmWeek[num] = %u", alarmWeek[num]);\r
+                view.SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(0x6c, 0xB8, 0xFD).full);\r
+                dynamic_cast<UIButton &>(view).SetStyleForState(STYLE_BACKGROUND_COLOR,\r
+                                                                Color::GetColorFromRGB(0x6c, 0xB8, 0xFD).full, UIButton::PRESSED);\r
+            }\r
+        }\r
+    }\r
+    view.Invalidate();\r
+    return true;\r
+}\r
+\r
+bool AlarmPresenter::OnClick(UIView &view, const ClickEvent &event)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmPresenter::OnClick ");\r
+    bool jug = ClickFuncId(view.GetViewId());\r
+    if (jug == false) {\r
+        ClickFuncView(view);\r
+    }\r
+    return true;\r
+}\r
+\r
+bool AlarmStatusBtnChangeListener::OnChange(UICheckBox::UICheckBoxState state)\r
+{\r
+    if (MainAlarmView::GetInstance()->GetRefreshStatus() == true) {\r
+        return true;\r
+    }\r
+    switch (state) {\r
+        case UICheckBox::SELECTED:\r
+            AlarmClockModel::GetInstance()->ButtonStatusRing(alarmStatusNum, true);\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmStatusBtnChangeListener::OnChange true");\r
+            break;\r
+\r
+        case UICheckBox::UNSELECTED:\r
+            AlarmClockModel::GetInstance()->ButtonStatusRing(alarmStatusNum, false);\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmStatusBtnChangeListener::OnChange false");\r
+            break;\r
+        default:\r
+            break;\r
+    }\r
+    return true;\r
+}\r
+\r
 }
\ No newline at end of file
index cc3f1f0..1c063fb 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Alarm
- * Author:
- * Create: 2021-09-11
- */
-
-#include "AlarmRingView.h"
-#include "common/screen.h"
-#include "components/ui_label.h"
-#include "components/ui_label_button.h"
-#include <string>
-#include "AlarmPopUpPresenter.h"
-#include "cmsis_os.h"
-#include "PhoneService.h"
-
-namespace OHOS {
-#define RING_AGAIN "响铃将在十分钟后再次响起"
-
-osTimerId_t g_stopAlarmRingHandle = NULL;
-static AlarmRingView *g_pAlarmRingView = nullptr;
-constexpr int16_t SET_ZERO = 0;
-constexpr int16_t SET_SRC = 150;
-constexpr int16_t IMAGE_X = 150;
-constexpr int16_t IMAGE_Y = 140;
-constexpr int16_t LABEL_X = 80;
-constexpr int16_t LABEL_Y = 300;
-constexpr int16_t LABEL_LENGTH = 350;
-constexpr int16_t LABEL_HEIGHT = 35;
-constexpr int16_t LABEL_FONT = 25;
-
-static constexpr uint64_t RING_THREE_SECONDS = 3000;
-void RingTimerCallbacks(int data);
-
-AlarmRingView::AlarmRingView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmRingView::AlarmRingView");
-    g_pAlarmRingView = this;
-}
-
-AlarmRingView::~AlarmRingView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmRingView::~AlarmRingView");
-    group->RemoveAll();
-    delete imageRingClock;
-    imageRingClock = nullptr;
-    delete labelRing;
-    labelRing = nullptr;
-    delete group;
-    group = nullptr;
-    g_pAlarmRingView = nullptr;
-}
-
-AlarmRingView *AlarmRingView::GetInstance(void)
-{
-    return g_pAlarmRingView;
-}
-
-UIViewGroup *AlarmRingView::InitRingView(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainClockView::InitRingView");
-    group = new UIViewGroup();
-    if (group == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmRingView::group null!");
-        return nullptr;
-    }
-    group->SetPosition(SET_ZERO, SET_ZERO);
-    group->SetWidth(HORIZONTAL_RESOLUTION);
-    group->SetHeight(VERTICAL_RESOLUTION);
-
-    imageRingClock = new UIImageView();
-    if (imageRingClock == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmRingView::imageRingClock null!");
-        return nullptr;
-    }
-    imageRingClock->SetPosition(IMAGE_X, IMAGE_Y);
-    imageRingClock->SetWidth(SET_SRC);
-    imageRingClock->SetHeight(SET_SRC);
-    imageRingClock->SetSrc(ALARM_CLOCK_POP_ADD_PATH);
-    group->Add(imageRingClock);
-
-    labelRing = new UILabel();
-    if (labelRing == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmRingView::labelRing null!");
-        return nullptr;
-    }
-    labelRing->SetPosition(LABEL_X, LABEL_Y, LABEL_LENGTH, LABEL_HEIGHT);
-    labelRing->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABEL_FONT);
-    labelRing->SetText(RING_AGAIN);
-    group->Add(labelRing);
-    UIView::OnDragListener *listener =static_cast<UIView::OnDragListener*>(AlarmPopUpPresenter::GetInstance());
-    group->SetOnDragListener(listener);
-    group->SetDraggable(true);
-    group->SetTouchable(true);
-    return group;
-}
-
-void AlarmRingView::CancelTimerHandle(void)
-{
-    if (g_stopAlarmRingHandle != NULL) {
-        osStatus_t ret = osTimerDelete(g_stopAlarmRingHandle);
-        if (ret != osOK) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScanTimerCallback osTimerDelete failed, ret = %lx!!", ret);
-            return;
-        }
-        g_stopAlarmRingHandle = NULL;
-    }
-}
-
-static void RingTimerCallbacksProc(int data)
-{
-    (void)data;
-    AlarmRingView::GetInstance()->CancelTimerHandle();
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmRing scan end jumpView");
-    uint16_t preSlice = AlarmClockModel::GetInstance()->JudgePreSlice();
-    NativeAbility::GetInstance().ChangeSlice(preSlice);
-}
-
-void RingTimerCallbacks(int data)
-{
-    GraphicService::GetInstance()->PostGraphicEvent(std::bind(RingTimerCallbacksProc, data));
-}
-
-void AlarmRingView::AlarmRingDelayShowtimer(void)
-{
-    g_stopAlarmRingHandle = osTimerNew((osTimerFunc_t)RingTimerCallbacks, osTimerPeriodic, NULL, NULL);
-    if (g_stopAlarmRingHandle == NULL) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmMaxClock::AlarmRingDelayShowtimer osTimerNew failed!!");
-        return;
-    }
-    uint32 tick = osMs2Tick(RING_THREE_SECONDS);
-    osStatus_t retTimer = osTimerStart(g_stopAlarmRingHandle, tick);
-    if (retTimer != osOK) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmMaxClock::AlarmRingDelayShowtimer osTimerStart failed, ret = %lx!!", retTimer);
-        if (g_stopAlarmRingHandle != NULL) {
-            retTimer = osTimerDelete(g_stopAlarmRingHandle);
-            if (retTimer != osOK) {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmMaxClock::AlarmRingDelayShowtimer osTimerDelete failed, ret = %lx!!", retTimer);
-                return;
-            }
-            g_stopAlarmRingHandle = NULL;
-        }
-        return;
-    }
-}
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Alarm\r
+ * Author:\r
+ * Create: 2021-09-11\r
+ */\r
+\r
+#include "AlarmRingView.h"\r
+#include "common/screen.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_label_button.h"\r
+#include <string>\r
+#include "AlarmPopUpPresenter.h"\r
+#include "cmsis_os.h"\r
+#include "PhoneService.h"\r
+\r
+namespace OHOS {\r
+#define RING_AGAIN "响铃将在十分钟后再次响起"\r
+\r
+osTimerId_t g_stopAlarmRingHandle = NULL;\r
+static AlarmRingView *g_pAlarmRingView = nullptr;\r
+constexpr int16_t SET_ZERO = 0;\r
+constexpr int16_t SET_SRC = 150;\r
+constexpr int16_t IMAGE_X = 150;\r
+constexpr int16_t IMAGE_Y = 140;\r
+constexpr int16_t LABEL_X = 80;\r
+constexpr int16_t LABEL_Y = 300;\r
+constexpr int16_t LABEL_LENGTH = 350;\r
+constexpr int16_t LABEL_HEIGHT = 35;\r
+constexpr int16_t LABEL_FONT = 25;\r
+\r
+static constexpr uint64_t RING_THREE_SECONDS = 3000;\r
+void RingTimerCallbacks(int data);\r
+\r
+AlarmRingView::AlarmRingView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmRingView::AlarmRingView");\r
+    g_pAlarmRingView = this;\r
+}\r
+\r
+AlarmRingView::~AlarmRingView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmRingView::~AlarmRingView");\r
+    group->RemoveAll();\r
+    delete imageRingClock;\r
+    imageRingClock = nullptr;\r
+    delete labelRing;\r
+    labelRing = nullptr;\r
+    delete group;\r
+    group = nullptr;\r
+    g_pAlarmRingView = nullptr;\r
+}\r
+\r
+AlarmRingView *AlarmRingView::GetInstance(void)\r
+{\r
+    return g_pAlarmRingView;\r
+}\r
+\r
+UIViewGroup *AlarmRingView::InitRingView(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmRingView::InitRingView");\r
+    group = new UIViewGroup();\r
+    if (group == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmRingView::group null!");\r
+        return nullptr;\r
+    }\r
+    group->SetPosition(SET_ZERO, SET_ZERO);\r
+    group->SetWidth(HORIZONTAL_RESOLUTION);\r
+    group->SetHeight(VERTICAL_RESOLUTION);\r
+\r
+    imageRingClock = new UIImageView();\r
+    if (imageRingClock == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmRingView::imageRingClock null!");\r
+        return nullptr;\r
+    }\r
+    imageRingClock->SetPosition(IMAGE_X, IMAGE_Y);\r
+    imageRingClock->SetWidth(SET_SRC);\r
+    imageRingClock->SetHeight(SET_SRC);\r
+    imageRingClock->SetSrc(ALARM_CLOCK_POP_ADD_PATH);\r
+    group->Add(imageRingClock);\r
+\r
+    labelRing = new UILabel();\r
+    if (labelRing == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmRingView::labelRing null!");\r
+        return nullptr;\r
+    }\r
+    labelRing->SetPosition(LABEL_X, LABEL_Y, LABEL_LENGTH, LABEL_HEIGHT);\r
+    labelRing->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABEL_FONT);\r
+    labelRing->SetText(RING_AGAIN);\r
+    group->Add(labelRing);\r
+    UIView::OnDragListener *listener = static_cast<UIView::OnDragListener*>(AlarmPopUpPresenter::GetInstance());\r
+    group->SetOnDragListener(listener);\r
+    group->SetDraggable(true);\r
+    group->SetTouchable(true);\r
+    return group;\r
+}\r
+\r
+void AlarmRingView::CancelTimerHandle(void)\r
+{\r
+    if (g_stopAlarmRingHandle != NULL) {\r
+        osStatus_t ret = osTimerDelete(g_stopAlarmRingHandle);\r
+        if (ret != osOK) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScanTimerCallback osTimerDelete failed, ret = %lx!!", ret);\r
+            return;\r
+        }\r
+        g_stopAlarmRingHandle = NULL;\r
+    }\r
+}\r
+\r
+static void RingTimerCallbacksProc(int data)\r
+{\r
+    (void)data;\r
+    AlarmRingView::GetInstance()->CancelTimerHandle();\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmRing scan end jumpView");\r
+    uint16_t preSlice = AlarmClockModel::GetInstance()->JudgePreSlice();\r
+    NativeAbility::GetInstance().ChangeSlice(preSlice);\r
+}\r
+\r
+void RingTimerCallbacks(int data)\r
+{\r
+    GraphicService::GetInstance()->PostGraphicEvent(std::bind(RingTimerCallbacksProc, data));\r
+}\r
+\r
+void AlarmRingView::AlarmRingDelayShowtimer(void)\r
+{\r
+    g_stopAlarmRingHandle = osTimerNew((osTimerFunc_t)RingTimerCallbacks, osTimerPeriodic, NULL, NULL);\r
+    if (g_stopAlarmRingHandle == NULL) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmMaxClock::AlarmRingDelayShowtimer osTimerNew failed!!");\r
+        return;\r
+    }\r
+    uint32 tick = osMs2Tick(RING_THREE_SECONDS);\r
+    osStatus_t retTimer = osTimerStart(g_stopAlarmRingHandle, tick);\r
+    if (retTimer != osOK) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmMaxClock::AlarmRingDelayShowtimer osTimerStart failed, ret = %lx!!", retTimer);\r
+        if (g_stopAlarmRingHandle != NULL) {\r
+            retTimer = osTimerDelete(g_stopAlarmRingHandle);\r
+            if (retTimer != osOK) {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmMaxClock::AlarmRingDelayShowtimer osTimerDelete failed, ret = %lx!!", retTimer);\r
+                return;\r
+            }\r
+            g_stopAlarmRingHandle = NULL;\r
+        }\r
+        return;\r
+    }\r
+}\r
+} // namespace OHOS\r
index 3f4ce52..b462b75 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Alarm
- * Author:
- * Create: 2021-09-11
- */
-
-#include "AlarmSetTimeView.h"
-#include "common/screen.h"
-#include "components/ui_label.h"
-#include "components/ui_label_button.h"
-#include <string>
-
-namespace OHOS {
-#define SET_THIS_TIME "设置时间"
-#define SURE "确认"
-
-static AlarmSetTimeView *g_pAlarmSetTimeView = nullptr;
-constexpr int16_t CONTAINER_X = 0;
-constexpr int16_t CONTAINER_Y = 0;
-constexpr int16_t TITLE_X = 153;
-constexpr int16_t TITLE_Y = 30;
-constexpr int16_t LABEL_X = 0;
-constexpr int16_t LABEL_Y = 30;
-constexpr int16_t LABEL_FONT = 40;
-constexpr int16_t TIME_PICKER_X = 75;
-constexpr int16_t TIME_PICKER_WIDTH = 250;
-constexpr int16_t TIME_ITEM_HEIGHT = 80;
-constexpr int16_t TIME_LABEL_BUTTON_X = 63;
-constexpr int16_t TIME_LABEL_BUTTON_Y = 360;
-constexpr int16_t LABEL_BLANK = 38;
-constexpr int16_t LIST_W = 300;
-constexpr int16_t LIST_H = 250;
-constexpr int16_t TITLE_LABEL_DEFAULT_HEIGHT = 50;
-constexpr int16_t BUTTON_WIDHT3 = 320;
-constexpr int16_t BUTTON_HEIGHT3 = 101;
-constexpr int16_t PICKER_FONT_SIZE = 25;
-constexpr int16_t LABEL_TIME_FONT = 40;
-constexpr uint8_t BACKGROUND_FONT = 40;
-constexpr uint8_t HIGHTLIGHT_FONT = 50;
-
-AlarmSetTimeView::AlarmSetTimeView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView::AlarmSetTimeView");
-    g_pAlarmSetTimeView = this;
-}
-
-AlarmSetTimeView::~AlarmSetTimeView()
-{
-    group->RemoveAll();
-    delete timeImage;
-    timeImage = nullptr;
-    delete picker;
-    picker = nullptr;
-    delete title;
-    title = nullptr;
-    delete group;
-    group = nullptr;
-    g_pAlarmSetTimeView = nullptr;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView::~AlarmSetTimeView");
-}
-
-AlarmSetTimeView *AlarmSetTimeView::GetInstance(void)
-{
-    return g_pAlarmSetTimeView;
-}
-
-UILabel *AlarmSetTimeView::GetTitleLabel(const char *titleName)
-{
-    if (titleName == nullptr) {
-        return nullptr;
-    }
-    UILabel *label = new UILabel();
-    if (label == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView:: new label fail");
-        return nullptr;
-    }
-    // 2: half of screen width
-    label->SetPosition(TITLE_X, TITLE_Y, HORIZONTAL_RESOLUTION / 2, TITLE_LABEL_DEFAULT_HEIGHT);
-    label->SetText(titleName);
-    label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABEL_FONT);
-    return label;
-}
-
-void AlarmSetTimeView::SetLabelButton(void)
-{
-    timeImage = new UILabelButton();
-    if (timeImage == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new timeImage fail");
-        return;
-    }
-    timeImage->SetPosition(TIME_LABEL_BUTTON_X, TIME_LABEL_BUTTON_Y, BUTTON_WIDHT3, BUTTON_HEIGHT3);
-    timeImage->SetText(SURE);
-    timeImage->SetTouchable(true);
-    timeImage->SetViewId(ALARM_OK);
-    if (OHOS::AlarmPresenter::GetInstance() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView:: new ShadowBlue fail");
-        return;
-    }
-    timeImage->SetTextColor(OHOS::AlarmPresenter::GetInstance()->ShadowBlue());
-    timeImage->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABEL_TIME_FONT);
-    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::AlarmPresenter::GetInstance();
-    timeImage->SetOnClickListener(clickListener);
-    timeImage->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);
-    group->Add(timeImage);
-}
-
-UIScrollView *AlarmSetTimeView::InitSetTimeView(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView::OnStart");
-    group = new UIScrollView();
-    if (group == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView:: new group fail");
-        return nullptr;
-    }
-    group->SetPosition(CONTAINER_X, CONTAINER_Y);
-    group->SetWidth(HORIZONTAL_RESOLUTION);
-    group->SetHeight(VERTICAL_RESOLUTION);
-
-    title = GetTitleLabel(SET_THIS_TIME);
-    if (title == nullptr) {
-        return nullptr;
-    }
-    group->Add(title);
-    title->SetPosition(TITLE_X, TITLE_Y); // 672: x-coordinate
-    title->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);
-    picker = new UITimePicker();
-    if (picker == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView:: new picker fail");
-        return nullptr;
-    }
-    UITimePicker::SelectedListener *selectedListener =
-        (UITimePicker::SelectedListener *)OHOS::AlarmPresenter::GetInstance();
-    if (selectedListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView:: selectedListener is NULL");
-        return nullptr;
-    }
-    picker->EnableSecond(false);
-    picker->SetPosition(TIME_PICKER_X, LABEL_Y + LABEL_BLANK, LIST_W, LIST_H); // 652: x-coordinate
-    picker->SetItemHeight(TIME_ITEM_HEIGHT);
-    picker->SetBackgroundFont(DEFAULT_VECTOR_FONT_FILENAME, BACKGROUND_FONT);
-    picker->SetHighlightFont(DEFAULT_VECTOR_FONT_FILENAME, HIGHTLIGHT_FONT);
-    picker->SetLoopState(0, true);
-    picker->SetLoopState(1, true);
-    picker->SetTouchable(true);
-    picker->RegisterSelectedListener(selectedListener);
-    group->Add(picker);
-
-    SetLabelButton();
-
-    group->SetTouchable(true);
-    group->SetDraggable(true);
-    //增加按键监听
-       RootView::OnKeyActListener*keyactListener = (RootView::OnKeyActListener*)OHOS::AlarmPresenter::GetInstance();
-       RootView::GetInstance()->SetOnKeyActListener(keyactListener);
-    UIView::OnDragListener *setTimeDragListener = (UIView::OnDragListener *)OHOS::AlarmPresenter::GetInstance();
-    if (setTimeDragListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView:: setTimeDragListener is NULL");
-        return group;
-    }
-    group->SetOnDragListener(setTimeDragListener);
-    return group;
-}
-
-void AlarmSetTimeView::RefreshSetTime(uint32_t time)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView::RefreshStep");
-    std::string hour = std::to_string(time >> 16); // 闹钟时间存储小时位需要右移16位
-    std::string min = std::to_string(time & 0x00FF); // 闹钟分钟位全部清除
-    std::string pickerTime = hour + ":" + min;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView:: picker:%s", pickerTime.c_str());
-    if (picker == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView::RefreshStep picker nullptr error!");
-        return;
-    }
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView::RefreshStep 35353535!");
-    picker->SetSelected(pickerTime.c_str());
-    if(picker->SetSelected(pickerTime.c_str()) == false) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView::RefreshStep Timepicker error!");
-        return;
-    }
-    uint32_t timeHour = stoi(hour);
-    uint32_t timeMin = stoi(min);
-    AlarmPresenter::GetInstance()->OnTimePickerInaction(timeHour, timeMin);
-}
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Alarm\r
+ * Author:\r
+ * Create: 2021-09-11\r
+ */\r
+\r
+#include "AlarmSetTimeView.h"\r
+#include "common/screen.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_label_button.h"\r
+#include <string>\r
+\r
+namespace OHOS {\r
+#define SET_THIS_TIME "设置时间"\r
+#define SURE "确认"\r
+\r
+static AlarmSetTimeView *g_pAlarmSetTimeView = nullptr;\r
+constexpr int16_t CONTAINER_X = 0;\r
+constexpr int16_t CONTAINER_Y = 0;\r
+constexpr int16_t TITLE_X = 153;\r
+constexpr int16_t TITLE_Y = 30;\r
+constexpr int16_t LABEL_X = 0;\r
+constexpr int16_t LABEL_Y = 30;\r
+constexpr int16_t LABEL_FONT = 40;\r
+constexpr int16_t TIME_PICKER_X = 75;\r
+constexpr int16_t TIME_PICKER_WIDTH = 250;\r
+constexpr int16_t TIME_ITEM_HEIGHT = 80;\r
+constexpr int16_t TIME_LABEL_BUTTON_X = 63;\r
+constexpr int16_t TIME_LABEL_BUTTON_Y = 360;\r
+constexpr int16_t LABEL_BLANK = 38;\r
+constexpr int16_t LIST_W = 300;\r
+constexpr int16_t LIST_H = 250;\r
+constexpr int16_t TITLE_LABEL_DEFAULT_HEIGHT = 50;\r
+constexpr int16_t BUTTON_WIDHT3 = 320;\r
+constexpr int16_t BUTTON_HEIGHT3 = 101;\r
+constexpr int16_t PICKER_FONT_SIZE = 25;\r
+constexpr int16_t LABEL_TIME_FONT = 40;\r
+constexpr uint8_t BACKGROUND_FONT = 40;\r
+constexpr uint8_t HIGHTLIGHT_FONT = 50;\r
+\r
+AlarmSetTimeView::AlarmSetTimeView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView::AlarmSetTimeView");\r
+    g_pAlarmSetTimeView = this;\r
+}\r
+\r
+AlarmSetTimeView::~AlarmSetTimeView()\r
+{\r
+    group->RemoveAll();\r
+    delete timeImage;\r
+    timeImage = nullptr;\r
+    delete picker;\r
+    picker = nullptr;\r
+    delete title;\r
+    title = nullptr;\r
+    delete group;\r
+    group = nullptr;\r
+    g_pAlarmSetTimeView = nullptr;\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView::~AlarmSetTimeView");\r
+}\r
+\r
+AlarmSetTimeView *AlarmSetTimeView::GetInstance(void)\r
+{\r
+    return g_pAlarmSetTimeView;\r
+}\r
+\r
+UILabel *AlarmSetTimeView::GetTitleLabel(const char *titleName)\r
+{\r
+    if (titleName == nullptr) {\r
+        return nullptr;\r
+    }\r
+    UILabel *label = new UILabel();\r
+    if (label == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView:: new label fail");\r
+        return nullptr;\r
+    }\r
+    // 2: half of screen width\r
+    label->SetPosition(TITLE_X, TITLE_Y, HORIZONTAL_RESOLUTION / 2, TITLE_LABEL_DEFAULT_HEIGHT);\r
+    label->SetText(titleName);\r
+    label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABEL_FONT);\r
+    return label;\r
+}\r
+\r
+void AlarmSetTimeView::SetLabelButton(void)\r
+{\r
+    timeImage = new UILabelButton();\r
+    if (timeImage == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new timeImage fail");\r
+        return;\r
+    }\r
+    timeImage->SetPosition(TIME_LABEL_BUTTON_X, TIME_LABEL_BUTTON_Y, BUTTON_WIDHT3, BUTTON_HEIGHT3);\r
+    timeImage->SetText(SURE);\r
+    timeImage->SetTouchable(true);\r
+    timeImage->SetViewId(ALARM_OK);\r
+    if (OHOS::AlarmPresenter::GetInstance() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView:: new ShadowBlue fail");\r
+        return;\r
+    }\r
+    timeImage->SetTextColor(OHOS::AlarmPresenter::GetInstance()->ShadowBlue());\r
+    timeImage->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABEL_TIME_FONT);\r
+    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::AlarmPresenter::GetInstance();\r
+    timeImage->SetOnClickListener(clickListener);\r
+    timeImage->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);\r
+    group->Add(timeImage);\r
+}\r
+\r
+UIScrollView *AlarmSetTimeView::InitSetTimeView(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView::OnStart");\r
+    group = new UIScrollView();\r
+    if (group == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView:: new group fail");\r
+        return nullptr;\r
+    }\r
+    group->SetPosition(CONTAINER_X, CONTAINER_Y);\r
+    group->SetWidth(HORIZONTAL_RESOLUTION);\r
+    group->SetHeight(VERTICAL_RESOLUTION);\r
+\r
+    title = GetTitleLabel(SET_THIS_TIME);\r
+    if (title == nullptr) {\r
+        return nullptr;\r
+    }\r
+    group->Add(title);\r
+    title->SetPosition(TITLE_X, TITLE_Y); // 672: x-coordinate\r
+    title->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
+    picker = new UITimePicker();\r
+    if (picker == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView:: new picker fail");\r
+        return nullptr;\r
+    }\r
+    UITimePicker::SelectedListener *selectedListener =\r
+        (UITimePicker::SelectedListener *)OHOS::AlarmPresenter::GetInstance();\r
+    if (selectedListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView:: selectedListener is NULL");\r
+        return nullptr;\r
+    }\r
+    picker->EnableSecond(false);\r
+    picker->SetPosition(TIME_PICKER_X, LABEL_Y + LABEL_BLANK, LIST_W, LIST_H); // 652: x-coordinate\r
+    picker->SetItemHeight(TIME_ITEM_HEIGHT);\r
+    picker->SetBackgroundFont(DEFAULT_VECTOR_FONT_FILENAME, BACKGROUND_FONT);\r
+    picker->SetHighlightFont(DEFAULT_VECTOR_FONT_FILENAME, HIGHTLIGHT_FONT);\r
+    picker->SetLoopState(0, true);\r
+    picker->SetLoopState(1, true);\r
+    picker->SetTouchable(true);\r
+    picker->RegisterSelectedListener(selectedListener);\r
+    group->Add(picker);\r
+\r
+    SetLabelButton();\r
+\r
+    group->SetTouchable(true);\r
+    group->SetDraggable(true);\r
+    UIView::OnDragListener *setTimeDragListener = (UIView::OnDragListener *)OHOS::AlarmPresenter::GetInstance();\r
+    if (setTimeDragListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView:: setTimeDragListener is NULL");\r
+        return group;\r
+    }\r
+    group->SetOnDragListener(setTimeDragListener);\r
+    return group;\r
+}\r
+\r
+void AlarmSetTimeView::RefreshSetTime(uint32_t time)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView::RefreshStep");\r
+    std::string hour = std::to_string(time >> 16); // 闹钟时间存储小时位需要右移16位\r
+    std::string min = std::to_string(time & 0x00FF); // 闹钟分钟位全部清除\r
+    std::string pickerTime = hour + ":" + min;\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView:: picker:%s", pickerTime.c_str());\r
+    if (picker == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView::RefreshStep picker nullptr error!");\r
+        return;\r
+    }\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView::RefreshStep 35353535!");\r
+    picker->SetSelected(pickerTime.c_str());\r
+    if (picker->SetSelected(pickerTime.c_str()) == false) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetTimeView::RefreshStep Timepicker error!");\r
+        return;\r
+    }\r
+    uint32_t timeHour = stoi(hour);\r
+    uint32_t timeMin = stoi(min);\r
+    AlarmPresenter::GetInstance()->OnTimePickerInaction(timeHour, timeMin);\r
+}\r
+} // namespace OHOS\r
index 742d33b..df9e819 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Alarm
- * Author:
- * Create: 2021-09-11
- */
-
-#include "AlarmSetWeekView.h"
-#include "common/screen.h"
-#include "components/ui_digital_clock.h"
-
-namespace OHOS {
-#define MON "星期一"
-#define TUE "星期二"
-#define WED "星期三"
-#define THUR "星期四"
-#define FRI "星期五"
-#define SAT "星期六"
-#define SUN "星期天"
-#define RESPEAT "重复"
-#define SURE "确认"
-
-#define MONDAY "monday"
-#define TUESDAY "tuesday"
-#define WEDNESDAY "wednesday"
-#define THURSDAY "thursday"
-#define FRIDAY "friday"
-#define SATURDAY "saturday"
-#define SUNDAY "sunday"
-
-static AlarmSetWeekView *g_pAlarmSetWeekView = nullptr;
-constexpr int16_t CONTAINER_X = 0;
-constexpr int16_t CONTAINER_Y = 0;
-constexpr int16_t DEFAULT_FONT = 40;
-constexpr int16_t REBOUND_SIZE = 50;
-constexpr int16_t BORDER_WIDTH = 20;
-constexpr int16_t SET_ZERO = 0;
-constexpr int16_t TITLE_X = 185;
-constexpr int16_t TITLE_Y = 30;
-constexpr int16_t LABEL_POSITION_SIZE = 150;
-constexpr int16_t VIEW_BORDER_SIZE = 2;
-constexpr int16_t BORDER_RADIUS_SIZE = 200;
-constexpr int16_t VIEW_BUTTON_X = 100;
-constexpr int16_t VIEW_BUTTON_Y = 70;
-constexpr int16_t BUTTON_FONT_SIZE = 18;
-constexpr int16_t TIME_LABEL_BUTTON_X = 63;
-constexpr int16_t TIME_LABEL_BUTTON_Y = 360;
-constexpr int16_t BUTTON_WIDHT3 = 320;
-constexpr int16_t BUTTON_HEIGHT3 = 101;
-constexpr int16_t LABEL_WEEK_FONT = 40;
-constexpr int16_t BUTTON_WIDHT = 100;
-constexpr int16_t BUTTON_HEIGHT = 60;
-constexpr int16_t BUTTON_FONT = 20;
-constexpr int16_t VIEW_POSITION_X = 60;
-constexpr int16_t VIEW_POSITION_X2 = 12;
-constexpr int16_t WEEK_Y1 = 130;
-constexpr int16_t WEEK_Y2 = 210;
-constexpr int16_t WEEK_GAP_X = 112;
-constexpr int16_t BUTTON_STYLE_BORDER_RADIUS_VALUE = 30;
-constexpr int16_t FONT_DEFAULT_SIZE = 30;
-constexpr int16_t WEEK_MON = 1;
-constexpr int16_t WEEK_TUE = 2;
-constexpr int16_t WEEK_WED = 3;
-constexpr int16_t WEEK_THUR = 4;
-constexpr int16_t WEEK_FRI = 5;
-constexpr int16_t WEEK_SAT = 6;
-constexpr int16_t WEEK_SUN = 0;
-
-AlarmSetWeekView::AlarmSetWeekView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::AlarmSetWeekView");
-    g_pAlarmSetWeekView = this;
-}
-
-AlarmSetWeekView::~AlarmSetWeekView()
-{
-    group->RemoveAll();
-    delete labelRespeat;
-    labelRespeat = nullptr;
-    delete labelButton;
-    labelButton = nullptr;
-    delete weekImage;
-    weekImage = nullptr;
-    for (int16_t alarmNum = 0; alarmNum < 7; alarmNum++) {
-        delete buttonWeek[alarmNum];
-        buttonWeek[alarmNum] = nullptr;
-    }
-    delete group;
-    group = nullptr;
-    g_pAlarmSetWeekView = nullptr;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::~AlarmSetWeekView");
-}
-
-AlarmSetWeekView *AlarmSetWeekView::GetInstance(void)
-{
-    return g_pAlarmSetWeekView;
-}
-
-UILabelButton *AlarmSetWeekView::CreateUILabelButton(const char *buttonText, int16_t x, int16_t y)
-{
-    if (buttonText == nullptr) {
-        return nullptr;
-    }
-
-    UILabelButton *labelButton = new UILabelButton();
-    if (labelButton == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new labelButton fail");
-        return nullptr;
-    }
-
-    labelButton->SetPosition(x, y);
-    labelButton->SetText(buttonText);
-    labelButton->SetViewId(buttonText);
-    labelButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_DEFAULT_SIZE);
-    labelButton->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::PRESSED);
-    labelButton->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::INACTIVE);
-    labelButton->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::RELEASED);
-    labelButton->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::RELEASED);
-    labelButton->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::PRESSED);
-    labelButton->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::INACTIVE);
-    labelButton->SetStyleForState(STYLE_BORDER_WIDTH, VIEW_BORDER_SIZE, UIButton::RELEASED);
-    labelButton->SetStyleForState(STYLE_BORDER_WIDTH, VIEW_BORDER_SIZE, UIButton::PRESSED);
-    labelButton->SetStyleForState(STYLE_BORDER_WIDTH, VIEW_BORDER_SIZE, UIButton::INACTIVE);
-    labelButton->SetStyleForState(STYLE_BORDER_COLOR, Color::White().full, UIButton::RELEASED);
-    labelButton->SetStyleForState(STYLE_BORDER_COLOR, Color::White().full, UIButton::PRESSED);
-    labelButton->SetStyleForState(STYLE_BORDER_COLOR, Color::White().full, UIButton::INACTIVE);
-    labelButton->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(0x6c, 0xB8, 0xFD).full);
-    labelButton->SetStyle(STYLE_BORDER_WIDTH, VIEW_BORDER_SIZE);
-    labelButton->SetStyle(STYLE_BORDER_COLOR, Color::White().full);
-    labelButton->Resize(BUTTON_WIDHT, BUTTON_HEIGHT);
-
-    return labelButton;
-}
-
-void AlarmSetWeekView::CreateWeekButton1(void)
-{
-    int viewPositionX = VIEW_POSITION_X;   // 60 150
-    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::AlarmPresenter::GetInstance();
-    buttonWeek[WEEK_MON] = CreateUILabelButton(MON, viewPositionX, WEEK_Y1);
-    if (buttonWeek[WEEK_MON] == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new buttonMon fail");
-        return;
-    }
-    group->Add(buttonWeek[WEEK_MON]);
-    buttonWeek[WEEK_MON]->SetOnClickListener(clickListener);
-    buttonWeek[WEEK_MON]->SetViewId(MONDAY);
-    viewPositionX += WEEK_GAP_X;
-
-    buttonWeek[WEEK_TUE] = CreateUILabelButton(TUE, viewPositionX, WEEK_Y1);
-    if (buttonWeek[WEEK_TUE] == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new buttonTue fail");
-        return;
-    }
-    group->Add(buttonWeek[WEEK_TUE]);
-    buttonWeek[WEEK_TUE]->SetOnClickListener(clickListener);
-    buttonWeek[WEEK_TUE]->SetViewId(TUESDAY);
-    viewPositionX += WEEK_GAP_X;
-
-    buttonWeek[WEEK_WED] = CreateUILabelButton(WED, viewPositionX, WEEK_Y1);
-    if (buttonWeek[WEEK_WED] == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new buttonWed fail");
-        return;
-    }
-    group->Add(buttonWeek[WEEK_WED]);
-    buttonWeek[WEEK_WED]->SetOnClickListener(clickListener);    
-    buttonWeek[WEEK_WED]->SetViewId(WEDNESDAY);
-}
-
-void AlarmSetWeekView::CreateWeekButton2(void)
-{
-    int viewPositionX2 = VIEW_POSITION_X2; // 12 210
-    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::AlarmPresenter::GetInstance();
-
-    buttonWeek[WEEK_THUR] = CreateUILabelButton(THUR, viewPositionX2, WEEK_Y2);
-    if (buttonWeek[WEEK_THUR] == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new buttonThur fail");
-        return;
-    }
-    group->Add(buttonWeek[WEEK_THUR]);
-    buttonWeek[WEEK_THUR]->SetOnClickListener(clickListener);
-    buttonWeek[WEEK_THUR]->SetViewId(THURSDAY);
-    viewPositionX2 += WEEK_GAP_X;
-
-    buttonWeek[WEEK_FRI] = CreateUILabelButton(FRI, viewPositionX2, WEEK_Y2);
-    if (buttonWeek[WEEK_FRI] == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new buttonFri fail");
-        return;
-    }
-    group->Add(buttonWeek[WEEK_FRI]);
-    buttonWeek[WEEK_FRI]->SetOnClickListener(clickListener);
-    buttonWeek[WEEK_FRI]->SetViewId(FRIDAY);
-    viewPositionX2 += WEEK_GAP_X;
-
-    buttonWeek[WEEK_SAT] = CreateUILabelButton(SAT, viewPositionX2, WEEK_Y2);
-    if (buttonWeek[WEEK_SAT] == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new buttonSat fail");
-        return;
-    }
-    group->Add(buttonWeek[WEEK_SAT]);
-    buttonWeek[WEEK_SAT]->SetOnClickListener(clickListener);
-    buttonWeek[WEEK_SAT]->SetViewId(SATURDAY);
-    viewPositionX2 += WEEK_GAP_X;
-
-    buttonWeek[WEEK_SUN] = CreateUILabelButton(SUN, viewPositionX2, WEEK_Y2);
-    if (buttonWeek[WEEK_SUN] == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new buttonSun fail");
-        return;
-    }
-    group->Add(buttonWeek[WEEK_SUN]);
-    buttonWeek[WEEK_SUN]->SetOnClickListener(clickListener);
-    buttonWeek[WEEK_SUN]->SetViewId(SUNDAY);
-}
-
-void AlarmSetWeekView::SetLabelButton(void)
-{
-    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::AlarmPresenter::GetInstance();
-    if (clickListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new clickListener fail");
-        return;
-    }
-    weekImage = new UILabelButton();
-    if (weekImage == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new weekImage fail");
-        return;
-    }
-    weekImage->SetPosition(TIME_LABEL_BUTTON_X, TIME_LABEL_BUTTON_Y, BUTTON_WIDHT3, BUTTON_HEIGHT3);
-    weekImage->SetText(SURE);
-    weekImage->SetTouchable(true);
-    weekImage->SetViewId(ALARM_WEEK_OK);
-    weekImage->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABEL_WEEK_FONT);
-    if (OHOS::AlarmPresenter::GetInstance() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView:: new ShadowBlue fail");
-        return;
-    }
-    weekImage->SetTextColor(OHOS::AlarmPresenter::GetInstance()->ShadowBlue());
-    weekImage->SetOnClickListener(clickListener);
-    weekImage->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);
-    group->Add(weekImage);
-} 
-
-UIScrollView *AlarmSetWeekView::InitSetWeekView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::InitSetWeekView");
-
-    group = new UIScrollView();
-    if (group == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new group fail");
-        return group;
-    }
-
-    group->SetPosition(CONTAINER_X, CONTAINER_Y, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
-    labelRespeat = new UILabel();
-    if (labelRespeat == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new labelRespeat fail");
-        return group;
-    }
-    group->Add(labelRespeat);
-    labelRespeat->SetText(RESPEAT);
-    labelRespeat->SetFont(DEFAULT_VECTOR_FONT_FILENAME, DEFAULT_FONT);
-    labelRespeat->SetPosition(TITLE_X, TITLE_Y, HORIZONTAL_RESOLUTION / 2, LABEL_POSITION_SIZE);
-
-    CreateWeekButton1();
-    CreateWeekButton2();
-    SetLabelButton();
-
-    group->SetTouchable(true);
-    group->SetDraggable(true);
-    //增加按键监听
-       RootView::OnKeyActListener*keyactListener = (RootView::OnKeyActListener*)OHOS::AlarmPresenter::GetInstance();
-       RootView::GetInstance()->SetOnKeyActListener(keyactListener);
-    UIView::OnDragListener *setWeekDragListener = (UIView::OnDragListener *)OHOS::AlarmPresenter::GetInstance();
-    if (setWeekDragListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new setWeekDragListener fail");
-        return group;
-    }
-    group->SetOnDragListener(setWeekDragListener);
-    return group;
-}
-
-void AlarmSetWeekView::RefreshSetWeek1(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::RefreshStep1");
-    if (buttonWeek[WEEK_MON] == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::RefreshStep1 buttonMon nullptr error!");
-        return;
-    }
-    buttonWeek[WEEK_MON]->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
-    buttonWeek[WEEK_MON]->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::PRESSED);
-    if (buttonWeek[WEEK_TUE] == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::RefreshStep1 buttonTue nullptr error!");
-        return;
-    }
-    buttonWeek[WEEK_TUE]->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
-    buttonWeek[WEEK_TUE]->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::PRESSED);
-    if (buttonWeek[WEEK_WED] == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::RefreshStep1 buttonWed nullptr error!");
-        return;
-    }
-    buttonWeek[WEEK_WED]->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
-    buttonWeek[WEEK_WED]->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::PRESSED);
-    if (buttonWeek[WEEK_THUR] == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::RefreshStep1 buttonThur nullptr error!");
-        return;
-    }
-    buttonWeek[WEEK_THUR]->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
-    buttonWeek[WEEK_THUR]->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::PRESSED);
-    if (buttonWeek[WEEK_FRI] == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::RefreshStep1 buttonFri nullptr error!");
-        return;
-    }
-    buttonWeek[WEEK_FRI]->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
-    buttonWeek[WEEK_FRI]->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::PRESSED);
-    if (buttonWeek[WEEK_SAT] == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::RefreshStep1 buttonSat nullptr error!");
-        return;
-    }
-    buttonWeek[WEEK_SAT]->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
-    buttonWeek[WEEK_SAT]->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::PRESSED);
-    if (buttonWeek[WEEK_SUN] == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::RefreshStep1 buttonSun nullptr error!");
-        return;
-    }
-    buttonWeek[WEEK_SUN]->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
-    buttonWeek[WEEK_SUN]->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::PRESSED);
-}
-
-void AlarmSetWeekView::RefreshSetWeek2(uint8_t week)
-{
-    for (int16_t alarmNum = 0; alarmNum < 7; alarmNum++) {
-        if (buttonWeek[alarmNum] == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::RefreshStep2 week[%d] nullptr error!", alarmNum);
-            return;
-        }
-    }
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: week = %u", week);
-    if ((week & 0x01) == 1) { // 判断星期天的位数是否为1
-        buttonWeek[WEEK_SUN]->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(0x6c, 0xB8, 0xFD).full);
-        AlarmPresenter::GetInstance()->alarmWeek[WEEK_SUN] = 1;
-    }
-    if ((week & 0x02) == 0x02) { // 判断星期一的位数是否为1
-        buttonWeek[WEEK_MON]->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(0x6c, 0xB8, 0xFD).full);
-        AlarmPresenter::GetInstance()->alarmWeek[WEEK_MON] = 1;
-    }
-    if ((week & 0x04) == 0x04) { // 判断星期二的位数是否为1
-        buttonWeek[WEEK_TUE]->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(0x6c, 0xB8, 0xFD).full);
-        AlarmPresenter::GetInstance()->alarmWeek[WEEK_TUE] = 1;
-    }
-    if ((week & 0x08) == 0x08) { // 判断星期三的位数是否为1
-        buttonWeek[WEEK_WED]->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(0x6c, 0xB8, 0xFD).full);
-        AlarmPresenter::GetInstance()->alarmWeek[WEEK_WED] = 1;
-    }
-    if ((week & 0x10) == 0x10) { // 判断星期四的位数是否为1
-        buttonWeek[WEEK_THUR]->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(0x6c, 0xB8, 0xFD).full);
-        AlarmPresenter::GetInstance()->alarmWeek[WEEK_THUR] = 1;
-    }
-    if ((week & 0x20) == 0x20) { // 判断星期五的位数是否为1
-        buttonWeek[WEEK_FRI]->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(0x6c, 0xB8, 0xFD).full);
-        AlarmPresenter::GetInstance()->alarmWeek[WEEK_FRI] = 1;
-    }
-    if ((week & 0x40) == 0x40) { // 判断星期六的位数是否为1
-        buttonWeek[WEEK_SAT]->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(0x6c, 0xB8, 0xFD).full);
-        AlarmPresenter::GetInstance()->alarmWeek[WEEK_SAT] = 1;
-    }
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Alarm\r
+ * Author:\r
+ * Create: 2021-09-11\r
+ */\r
+\r
+#include "AlarmSetWeekView.h"\r
+#include "common/screen.h"\r
+#include "components/ui_digital_clock.h"\r
+\r
+namespace OHOS {\r
+#define MON "星期一"\r
+#define TUE "星期二"\r
+#define WED "星期三"\r
+#define THUR "星期四"\r
+#define FRI "星期五"\r
+#define SAT "星期六"\r
+#define SUN "星期天"\r
+#define RESPEAT "重复"\r
+#define SURE "确认"\r
+\r
+#define MONDAY "monday"\r
+#define TUESDAY "tuesday"\r
+#define WEDNESDAY "wednesday"\r
+#define THURSDAY "thursday"\r
+#define FRIDAY "friday"\r
+#define SATURDAY "saturday"\r
+#define SUNDAY "sunday"\r
+\r
+static AlarmSetWeekView *g_pAlarmSetWeekView = nullptr;\r
+constexpr int16_t CONTAINER_X = 0;\r
+constexpr int16_t CONTAINER_Y = 0;\r
+constexpr int16_t DEFAULT_FONT = 40;\r
+constexpr int16_t REBOUND_SIZE = 50;\r
+constexpr int16_t BORDER_WIDTH = 20;\r
+constexpr int16_t SET_ZERO = 0;\r
+constexpr int16_t TITLE_X = 185;\r
+constexpr int16_t TITLE_Y = 30;\r
+constexpr int16_t LABEL_POSITION_SIZE = 150;\r
+constexpr int16_t VIEW_BORDER_SIZE = 2;\r
+constexpr int16_t BORDER_RADIUS_SIZE = 200;\r
+constexpr int16_t VIEW_BUTTON_X = 100;\r
+constexpr int16_t VIEW_BUTTON_Y = 70;\r
+constexpr int16_t BUTTON_FONT_SIZE = 18;\r
+constexpr int16_t TIME_LABEL_BUTTON_X = 63;\r
+constexpr int16_t TIME_LABEL_BUTTON_Y = 360;\r
+constexpr int16_t BUTTON_WIDHT3 = 320;\r
+constexpr int16_t BUTTON_HEIGHT3 = 101;\r
+constexpr int16_t LABEL_WEEK_FONT = 40;\r
+constexpr int16_t BUTTON_WIDHT = 100;\r
+constexpr int16_t BUTTON_HEIGHT = 60;\r
+constexpr int16_t BUTTON_FONT = 20;\r
+constexpr int16_t VIEW_POSITION_X = 60;\r
+constexpr int16_t VIEW_POSITION_X2 = 12;\r
+constexpr int16_t WEEK_Y1 = 130;\r
+constexpr int16_t WEEK_Y2 = 210;\r
+constexpr int16_t WEEK_GAP_X = 112;\r
+constexpr int16_t BUTTON_STYLE_BORDER_RADIUS_VALUE = 30;\r
+constexpr int16_t FONT_DEFAULT_SIZE = 30;\r
+constexpr int16_t WEEK_MON = 1;\r
+constexpr int16_t WEEK_TUE = 2;\r
+constexpr int16_t WEEK_WED = 3;\r
+constexpr int16_t WEEK_THUR = 4;\r
+constexpr int16_t WEEK_FRI = 5;\r
+constexpr int16_t WEEK_SAT = 6;\r
+constexpr int16_t WEEK_SUN = 0;\r
+\r
+AlarmSetWeekView::AlarmSetWeekView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::AlarmSetWeekView");\r
+    g_pAlarmSetWeekView = this;\r
+}\r
+\r
+AlarmSetWeekView::~AlarmSetWeekView()\r
+{\r
+    group->RemoveAll();\r
+    delete labelRespeat;\r
+    labelRespeat = nullptr;\r
+    delete labelButton;\r
+    labelButton = nullptr;\r
+    delete weekImage;\r
+    weekImage = nullptr;\r
+    for (int16_t alarmNum = 0; alarmNum < 7; alarmNum++) {\r
+        delete buttonWeek[alarmNum];\r
+        buttonWeek[alarmNum] = nullptr;\r
+    }\r
+    delete group;\r
+    group = nullptr;\r
+    g_pAlarmSetWeekView = nullptr;\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::~AlarmSetWeekView");\r
+}\r
+\r
+AlarmSetWeekView *AlarmSetWeekView::GetInstance(void)\r
+{\r
+    return g_pAlarmSetWeekView;\r
+}\r
+\r
+UILabelButton *AlarmSetWeekView::CreateUILabelButton(const char *buttonText, int16_t x, int16_t y)\r
+{\r
+    if (buttonText == nullptr) {\r
+        return nullptr;\r
+    }\r
+\r
+    UILabelButton *labelButton = new UILabelButton();\r
+    if (labelButton == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new labelButton fail");\r
+        return nullptr;\r
+    }\r
+\r
+    labelButton->SetPosition(x, y);\r
+    labelButton->SetText(buttonText);\r
+    labelButton->SetViewId(buttonText);\r
+    labelButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_DEFAULT_SIZE);\r
+    labelButton->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::PRESSED);\r
+    labelButton->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::INACTIVE);\r
+    labelButton->SetStyleForState(STYLE_BORDER_RADIUS, BUTTON_STYLE_BORDER_RADIUS_VALUE, UIButton::RELEASED);\r
+    labelButton->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::RELEASED);\r
+    labelButton->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::PRESSED);\r
+    labelButton->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::INACTIVE);\r
+    labelButton->SetStyleForState(STYLE_BORDER_WIDTH, VIEW_BORDER_SIZE, UIButton::RELEASED);\r
+    labelButton->SetStyleForState(STYLE_BORDER_WIDTH, VIEW_BORDER_SIZE, UIButton::PRESSED);\r
+    labelButton->SetStyleForState(STYLE_BORDER_WIDTH, VIEW_BORDER_SIZE, UIButton::INACTIVE);\r
+    labelButton->SetStyleForState(STYLE_BORDER_COLOR, Color::White().full, UIButton::RELEASED);\r
+    labelButton->SetStyleForState(STYLE_BORDER_COLOR, Color::White().full, UIButton::PRESSED);\r
+    labelButton->SetStyleForState(STYLE_BORDER_COLOR, Color::White().full, UIButton::INACTIVE);\r
+    labelButton->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(0x6c, 0xB8, 0xFD).full);\r
+    labelButton->SetStyle(STYLE_BORDER_WIDTH, VIEW_BORDER_SIZE);\r
+    labelButton->SetStyle(STYLE_BORDER_COLOR, Color::White().full);\r
+    labelButton->Resize(BUTTON_WIDHT, BUTTON_HEIGHT);\r
+\r
+    return labelButton;\r
+}\r
+\r
+void AlarmSetWeekView::CreateWeekButton1(void)\r
+{\r
+    int viewPositionX = VIEW_POSITION_X;   // 60 150\r
+    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::AlarmPresenter::GetInstance();\r
+    buttonWeek[WEEK_MON] = CreateUILabelButton(MON, viewPositionX, WEEK_Y1);\r
+    if (buttonWeek[WEEK_MON] == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new buttonMon fail");\r
+        return;\r
+    }\r
+    group->Add(buttonWeek[WEEK_MON]);\r
+    buttonWeek[WEEK_MON]->SetOnClickListener(clickListener);\r
+    buttonWeek[WEEK_MON]->SetViewId(MONDAY);\r
+    viewPositionX += WEEK_GAP_X;\r
+\r
+    buttonWeek[WEEK_TUE] = CreateUILabelButton(TUE, viewPositionX, WEEK_Y1);\r
+    if (buttonWeek[WEEK_TUE] == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new buttonTue fail");\r
+        return;\r
+    }\r
+    group->Add(buttonWeek[WEEK_TUE]);\r
+    buttonWeek[WEEK_TUE]->SetOnClickListener(clickListener);\r
+    buttonWeek[WEEK_TUE]->SetViewId(TUESDAY);\r
+    viewPositionX += WEEK_GAP_X;\r
+\r
+    buttonWeek[WEEK_WED] = CreateUILabelButton(WED, viewPositionX, WEEK_Y1);\r
+    if (buttonWeek[WEEK_WED] == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new buttonWed fail");\r
+        return;\r
+    }\r
+    group->Add(buttonWeek[WEEK_WED]);\r
+    buttonWeek[WEEK_WED]->SetOnClickListener(clickListener);\r
+    buttonWeek[WEEK_WED]->SetViewId(WEDNESDAY);\r
+}\r
+\r
+void AlarmSetWeekView::CreateWeekButton2(void)\r
+{\r
+    int viewPositionX2 = VIEW_POSITION_X2; // 12 210\r
+    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::AlarmPresenter::GetInstance();\r
+\r
+    buttonWeek[WEEK_THUR] = CreateUILabelButton(THUR, viewPositionX2, WEEK_Y2);\r
+    if (buttonWeek[WEEK_THUR] == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new buttonThur fail");\r
+        return;\r
+    }\r
+    group->Add(buttonWeek[WEEK_THUR]);\r
+    buttonWeek[WEEK_THUR]->SetOnClickListener(clickListener);\r
+    buttonWeek[WEEK_THUR]->SetViewId(THURSDAY);\r
+    viewPositionX2 += WEEK_GAP_X;\r
+\r
+    buttonWeek[WEEK_FRI] = CreateUILabelButton(FRI, viewPositionX2, WEEK_Y2);\r
+    if (buttonWeek[WEEK_FRI] == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new buttonFri fail");\r
+        return;\r
+    }\r
+    group->Add(buttonWeek[WEEK_FRI]);\r
+    buttonWeek[WEEK_FRI]->SetOnClickListener(clickListener);\r
+    buttonWeek[WEEK_FRI]->SetViewId(FRIDAY);\r
+    viewPositionX2 += WEEK_GAP_X;\r
+\r
+    buttonWeek[WEEK_SAT] = CreateUILabelButton(SAT, viewPositionX2, WEEK_Y2);\r
+    if (buttonWeek[WEEK_SAT] == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new buttonSat fail");\r
+        return;\r
+    }\r
+    group->Add(buttonWeek[WEEK_SAT]);\r
+    buttonWeek[WEEK_SAT]->SetOnClickListener(clickListener);\r
+    buttonWeek[WEEK_SAT]->SetViewId(SATURDAY);\r
+    viewPositionX2 += WEEK_GAP_X;\r
+\r
+    buttonWeek[WEEK_SUN] = CreateUILabelButton(SUN, viewPositionX2, WEEK_Y2);\r
+    if (buttonWeek[WEEK_SUN] == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new buttonSun fail");\r
+        return;\r
+    }\r
+    group->Add(buttonWeek[WEEK_SUN]);\r
+    buttonWeek[WEEK_SUN]->SetOnClickListener(clickListener);\r
+    buttonWeek[WEEK_SUN]->SetViewId(SUNDAY);\r
+}\r
+\r
+void AlarmSetWeekView::SetLabelButton(void)\r
+{\r
+    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::AlarmPresenter::GetInstance();\r
+    if (clickListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new clickListener fail");\r
+        return;\r
+    }\r
+    weekImage = new UILabelButton();\r
+    if (weekImage == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmConfigView:: new weekImage fail");\r
+        return;\r
+    }\r
+    weekImage->SetPosition(TIME_LABEL_BUTTON_X, TIME_LABEL_BUTTON_Y, BUTTON_WIDHT3, BUTTON_HEIGHT3);\r
+    weekImage->SetText(SURE);\r
+    weekImage->SetTouchable(true);\r
+    weekImage->SetViewId(ALARM_WEEK_OK);\r
+    weekImage->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABEL_WEEK_FONT);\r
+    if (OHOS::AlarmPresenter::GetInstance() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmNewTimeView:: new ShadowBlue fail");\r
+        return;\r
+    }\r
+    weekImage->SetTextColor(OHOS::AlarmPresenter::GetInstance()->ShadowBlue());\r
+    weekImage->SetOnClickListener(clickListener);\r
+    weekImage->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);\r
+    group->Add(weekImage);\r
+}\r
+\r
+UIScrollView *AlarmSetWeekView::InitSetWeekView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::InitSetWeekView");\r
+\r
+    group = new UIScrollView();\r
+    if (group == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new group fail");\r
+        return group;\r
+    }\r
+\r
+    group->SetPosition(CONTAINER_X, CONTAINER_Y, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
+    labelRespeat = new UILabel();\r
+    if (labelRespeat == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new labelRespeat fail");\r
+        return group;\r
+    }\r
+    group->Add(labelRespeat);\r
+    labelRespeat->SetText(RESPEAT);\r
+    labelRespeat->SetFont(DEFAULT_VECTOR_FONT_FILENAME, DEFAULT_FONT);\r
+    labelRespeat->SetPosition(TITLE_X, TITLE_Y, HORIZONTAL_RESOLUTION / 2, LABEL_POSITION_SIZE);\r
+\r
+    CreateWeekButton1();\r
+    CreateWeekButton2();\r
+    SetLabelButton();\r
+\r
+    group->SetTouchable(true);\r
+    group->SetDraggable(true);\r
+    UIView::OnDragListener *setWeekDragListener = (UIView::OnDragListener *)OHOS::AlarmPresenter::GetInstance();\r
+    if (setWeekDragListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: new setWeekDragListener fail");\r
+        return group;\r
+    }\r
+    group->SetOnDragListener(setWeekDragListener);\r
+    return group;\r
+}\r
+\r
+void AlarmSetWeekView::RefreshSetWeek1(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::RefreshStep1");\r
+    if (buttonWeek[WEEK_MON] == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::RefreshStep1 buttonMon nullptr error!");\r
+        return;\r
+    }\r
+    buttonWeek[WEEK_MON]->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
+    buttonWeek[WEEK_MON]->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::PRESSED);\r
+    if (buttonWeek[WEEK_TUE] == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::RefreshStep1 buttonTue nullptr error!");\r
+        return;\r
+    }\r
+    buttonWeek[WEEK_TUE]->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
+    buttonWeek[WEEK_TUE]->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::PRESSED);\r
+    if (buttonWeek[WEEK_WED] == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::RefreshStep1 buttonWed nullptr error!");\r
+        return;\r
+    }\r
+    buttonWeek[WEEK_WED]->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
+    buttonWeek[WEEK_WED]->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::PRESSED);\r
+    if (buttonWeek[WEEK_THUR] == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::RefreshStep1 buttonThur nullptr error!");\r
+        return;\r
+    }\r
+    buttonWeek[WEEK_THUR]->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
+    buttonWeek[WEEK_THUR]->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::PRESSED);\r
+    if (buttonWeek[WEEK_FRI] == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::RefreshStep1 buttonFri nullptr error!");\r
+        return;\r
+    }\r
+    buttonWeek[WEEK_FRI]->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
+    buttonWeek[WEEK_FRI]->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::PRESSED);\r
+    if (buttonWeek[WEEK_SAT] == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::RefreshStep1 buttonSat nullptr error!");\r
+        return;\r
+    }\r
+    buttonWeek[WEEK_SAT]->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
+    buttonWeek[WEEK_SAT]->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::PRESSED);\r
+    if (buttonWeek[WEEK_SUN] == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::RefreshStep1 buttonSun nullptr error!");\r
+        return;\r
+    }\r
+    buttonWeek[WEEK_SUN]->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
+    buttonWeek[WEEK_SUN]->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::PRESSED);\r
+}\r
+\r
+void AlarmSetWeekView::RefreshSetWeek2(uint8_t week)\r
+{\r
+    for (int16_t alarmNum = 0; alarmNum < 7; alarmNum++) {\r
+        if (buttonWeek[alarmNum] == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView::RefreshStep2 week[%d] nullptr error!", alarmNum);\r
+            return;\r
+        }\r
+    }\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmSetWeekView:: week = %u", week);\r
+    if ((week & 0x01) == 1) { // 判断星期天的位数是否为1\r
+        buttonWeek[WEEK_SUN]->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(0x6c, 0xB8, 0xFD).full);\r
+        AlarmPresenter::GetInstance()->alarmWeek[WEEK_SUN] = 1;\r
+    }\r
+    if ((week & 0x02) == 0x02) { // 判断星期一的位数是否为1\r
+        buttonWeek[WEEK_MON]->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(0x6c, 0xB8, 0xFD).full);\r
+        AlarmPresenter::GetInstance()->alarmWeek[WEEK_MON] = 1;\r
+    }\r
+    if ((week & 0x04) == 0x04) { // 判断星期二的位数是否为1\r
+        buttonWeek[WEEK_TUE]->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(0x6c, 0xB8, 0xFD).full);\r
+        AlarmPresenter::GetInstance()->alarmWeek[WEEK_TUE] = 1;\r
+    }\r
+    if ((week & 0x08) == 0x08) { // 判断星期三的位数是否为1\r
+        buttonWeek[WEEK_WED]->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(0x6c, 0xB8, 0xFD).full);\r
+        AlarmPresenter::GetInstance()->alarmWeek[WEEK_WED] = 1;\r
+    }\r
+    if ((week & 0x10) == 0x10) { // 判断星期四的位数是否为1\r
+        buttonWeek[WEEK_THUR]->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(0x6c, 0xB8, 0xFD).full);\r
+        AlarmPresenter::GetInstance()->alarmWeek[WEEK_THUR] = 1;\r
+    }\r
+    if ((week & 0x20) == 0x20) { // 判断星期五的位数是否为1\r
+        buttonWeek[WEEK_FRI]->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(0x6c, 0xB8, 0xFD).full);\r
+        AlarmPresenter::GetInstance()->alarmWeek[WEEK_FRI] = 1;\r
+    }\r
+    if ((week & 0x40) == 0x40) { // 判断星期六的位数是否为1\r
+        buttonWeek[WEEK_SAT]->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGB(0x6c, 0xB8, 0xFD).full);\r
+        AlarmPresenter::GetInstance()->alarmWeek[WEEK_SAT] = 1;\r
+    }\r
+}\r
 }
\ No newline at end of file
index 3fcb8d1..45532fe 100644 (file)
@@ -106,6 +106,7 @@ MainAlarmView *MainAlarmView::GetInstance(void)
 void MainAlarmView::CreateImage(void)
 {
     UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::AlarmPresenter::GetInstance();
+
     addButton = new UIImageView();
     if (addButton == nullptr) {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainAlarmView:: new addButton fail");
@@ -207,7 +208,6 @@ void MainAlarmView::LabelGetWeek(uint8_t week, int16_t alarmNum)
             weekStr += SUN_DAY;
         }
     }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainAlarmView::LabelGetWeek labelWeek = %s ", weekStr.c_str());
     dLabel[alarmNum]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, D_CLOCK_LABEL_FONT);
     dLabel[alarmNum]->SetText(weekStr.c_str());
     dLabel[alarmNum]->SetStyle(STYLE_TEXT_OPA, LABEL_SEMITRANSPARENT);
@@ -244,10 +244,8 @@ void MainAlarmView::OnStart()
     }
     group->SetPosition(CONTAINER_X, CONTAINER_Y, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
     UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::AlarmPresenter::GetInstance();
-    //增加按键监听
-    RootView::OnKeyActListener*keyactListener = (RootView::OnKeyActListener*)OHOS::AlarmPresenter::GetInstance();
-    RootView::GetInstance()->SetOnKeyActListener(keyactListener);
     CreateImage();
+
     group->SetTouchable(true);
     group->SetDraggable(true);
     UIView::OnDragListener *alarmDragListener = (UIView::OnDragListener *)OHOS::AlarmPresenter::GetInstance();
@@ -256,7 +254,6 @@ void MainAlarmView::OnStart()
         return;
     }
     group->SetOnDragListener(alarmDragListener);
-
 }
 
 void MainAlarmView::OnSetUpView()
@@ -361,7 +358,7 @@ bool MainAlarmView::ChangeMainAlarm(int16_t thisView)
     return true;
 }
 
-bool MainAlarmView::ChangeConfig(int16_t thisView)  
+bool MainAlarmView::ChangeConfig(int16_t thisView)
 {
     if (container[thisView] == nullptr) {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainAlarmView::AlarmConfigView");
@@ -402,7 +399,7 @@ bool MainAlarmView::ChangeSetWeek(int16_t thisView)
             return false;
         }
         container[thisView] = setWeekView->InitSetWeekView();
-        RootView::GetInstance()->Add(container[thisView]);       
+        RootView::GetInstance()->Add(container[thisView]);
     }
     return true;
 }
@@ -455,8 +452,6 @@ bool MainAlarmView::ChangeMaxClock(int16_t thisView)
 
 void MainAlarmView::DropView(UIView& view)
 {
-    WEARABLE_LOGD("","into DropView!\n");
-    
     if (&view == container[CHANGE_INTERFACE_CONFIG]) {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainAlarmView::DropView::container[CHANGE_INTERFACE_CONFIG]");
         ChangeView(CHANGE_INTERFACE_CONFIG, MAIN_INTERFACE);
index 82e5304..c233658 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: AlarmClockManage
- * Create: 2021-09-22
- */
-
-#ifndef ALARM_CLOCK_MANAGE_H
-#define ALARM_CLOCK_MANAGE_H
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <limits.h>
-
-#include "ohos_types.h"
-#include "AlarmClockTimerConfig.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define CLOCK_NAME_LENGTH           24
-#define EVENT_ALARM_CLOCK_MAX       5
-#define SMART_ALARM_CLOCK_MAX       1
-
-#define TWO_BYTES_BITS                          16
-#define MINUTES_PER_HOUR                        60
-#define SECONDS_PER_MINUTE                      60
-#define SECONDS_PER_HOUR                        3600
-#define AND_FOR_LOW_TWO_BYTES                   0xff // 与运算求低两字节
-#define MINS_EVERY_DELAY                        10
-#define MS_PER_SECOND                           1000
-#define US_PER_MS                               1000
-#define HOURS_PER_DAY                           24
-#define MINUTES_PER_DAY                         1440
-
-/// error status code values
-typedef enum {
-    STATUS_OK                      =  0,
-    STATUS_POINTER_NULL            = -1,
-    STATUS_ALARM_ID_INVALID        = -2,
-    STATUS_ALARM_TYPE_INVALID      = -3,
-    STATUS_ALARM_CNT_ERROR         = -4,
-    STATUS_TIMER_ERROR             = -5,
-    STATUS_SEC_FUN_ERROR           = -6,
-    STATUS_FILE_OPEN_ERROR         = -7,
-    STATUS_SERVICE_FUN_ERROR       = -8,
-    STATUS_TIME_FUN_ERROR          = -9,
-    STATUS_FUN_PARA_INVALID        = -10,
-} AlarmClockErrorCode;
-
-typedef enum {
-    TYPE_INVALID_ALARM_CLOCK = 0,
-    TYPE_EVENT_ALARM_CLOCK = 1,
-    TYPE_SMART_ALARM_CLOCK,
-} AlarmClockType;
-
-typedef enum {
-    TYPE_CUR_NODE_NO_SKIP = 0,
-    TYPE_CUR_NODE_SKIP,
-} FirstAlarmTodaySetType;
-
-typedef enum {
-    EVENT_ALARM_RING = 10,
-    EVENT_ALARM_RING_CANCEL,
-    EVENT_ALARM_RING_DELAY,
-    EVENT_ALARM_INFO_UPDATE,
-    EVENT_ALARM_LIST_TODAY_UPDATE,
-    EVENT_WECHAT_MSG_ARRIVED,
-    EVENT_CALL_INCOMING,
-    EVENT_NO_EVENT_DEFAULT = 0xffffffff,
-} AlarmClockEventType;
-
-typedef struct {
-    uint8 alarmClockId; // 事件闹钟0-4 智能闹钟5 半夜24点刷新闹钟列表6
-    uint8 alarmClockEnable;
-    uint8 alarmType;
-    uint8 nameLen;
-    char alarmClockName[CLOCK_NAME_LENGTH];
-    uint32 alarmTime;
-    uint32 sleepWindowTime;
-    uint8 repeatPeriod;
-    uint8 delayNum;
-    uint8 smartDelayFirst;
-    uint8 smartDelay;
-    uint32 index;
-} AlarmClockInfo;
-
-typedef struct {
-    uint8 alarmClockId;
-    uint8 alarmType;
-    uint8 reserved[2]; // 2 bytes for 4 bytes align
-    uint32 alarmTime;
-} AlarmClockInfoToday;
-
-typedef struct {
-    AlarmClockInfo smartAlarmInfo;
-    AlarmClockInfo eventAlarmInfo[EVENT_ALARM_CLOCK_MAX];
-    uint16 smartAlarmCnt;
-    uint16 eventAlarmCnt;
-} AlarmClockManagement;
-
-typedef struct {
-    uint32 eventType;
-    AlarmClockEventData data;
-} AlarmClockQueueMsg;
-
-int32 GetEventAlarmInfo(uint8 id, AlarmClockInfo *info);
-int32 GetSmartAlarmInfo(AlarmClockInfo *info);
-void EmptyListAlarmToday(void);
-void DisplayListAlarmToday(void);
-void UpdataListAndFirstAlarmToday(void);
-
-int32 SetDatetime(int32 argc, char *argv[]);
-int32 DispDatetime(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // ALARM_CLOCK_MANAGE_H
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: AlarmClockManage\r
+ * Create: 2021-09-22\r
+ */\r
+\r
+#ifndef ALARM_CLOCK_MANAGE_H\r
+#define ALARM_CLOCK_MANAGE_H\r
+\r
+#include <stdio.h>\r
+#include <stdlib.h>\r
+#include <time.h>\r
+#include <limits.h>\r
+\r
+#include "ohos_types.h"\r
+#include "AlarmClockTimerConfig.h"\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+#define CLOCK_NAME_LENGTH           24\r
+#define EVENT_ALARM_CLOCK_MAX       5\r
+#define SMART_ALARM_CLOCK_MAX       1\r
+\r
+#define TWO_BYTES_BITS                          16\r
+#define MINUTES_PER_HOUR                        60\r
+#define AND_FOR_LOW_TWO_BYTES                   0xff // 与运算求低两字节\r
+#define MINS_EVERY_DELAY                        10\r
+#define HOURS_PER_DAY                           24\r
+#define DELAY_COUNT_MAX                         3\r
+\r
+/// error status code values\r
+typedef enum {\r
+    STATUS_OK                      =  0,\r
+    STATUS_POINTER_NULL            = -1,\r
+    STATUS_ALARM_ID_INVALID        = -2,\r
+    STATUS_ALARM_TYPE_INVALID      = -3,\r
+    STATUS_ALARM_CNT_ERROR         = -4,\r
+    STATUS_TIMER_ERROR             = -5,\r
+    STATUS_SEC_FUN_ERROR           = -6,\r
+    STATUS_FILE_OPEN_ERROR         = -7,\r
+    STATUS_SERVICE_FUN_ERROR       = -8,\r
+    STATUS_TIME_FUN_ERROR          = -9,\r
+    STATUS_FUN_PARA_INVALID        = -10,\r
+} AlarmClockErrorCode;\r
+\r
+typedef enum {\r
+    TYPE_INVALID_ALARM_CLOCK = 0,\r
+    TYPE_EVENT_ALARM_CLOCK = 1,\r
+    TYPE_SMART_ALARM_CLOCK,\r
+} AlarmClockType;\r
+\r
+typedef enum {\r
+    TYPE_CUR_NODE_NO_SKIP = 0,\r
+    TYPE_CUR_NODE_SKIP,\r
+} FirstAlarmTodaySetType;\r
+\r
+typedef enum {\r
+    EVENT_ALARM_RING = 10,\r
+    EVENT_ALARM_RING_CANCEL,\r
+    EVENT_ALARM_RING_DELAY,\r
+    EVENT_ALARM_INFO_UPDATE,\r
+    EVENT_ALARM_LIST_TODAY_UPDATE,\r
+    EVENT_WECHAT_MSG_ARRIVED,\r
+    EVENT_CALL_INCOMING,\r
+    EVENT_NO_EVENT_DEFAULT = 0xffffffff,\r
+} AlarmClockEventType;\r
+\r
+typedef struct {\r
+    uint8 alarmClockId; // 事件闹钟0-4 智能闹钟5\r
+    uint8 alarmClockEnable;\r
+    uint8 alarmType;\r
+    uint8 nameLen;\r
+    char alarmClockName[CLOCK_NAME_LENGTH];\r
+    uint32 alarmTime;\r
+    uint32 sleepWindowTime;\r
+    uint8 repeatPeriod;\r
+    uint8 delayNum;\r
+    uint8 smartDelayFirst;\r
+    uint8 smartDelay;\r
+    uint32 index;\r
+} AlarmClockInfo;\r
+\r
+typedef struct {\r
+    uint8 alarmClockId;\r
+    uint8 alarmType;\r
+    uint8 reserved[2]; // 2 bytes for 4 bytes align\r
+    uint32 alarmTime;\r
+} AlarmClockInfoToday;\r
+\r
+typedef struct {\r
+    AlarmClockInfo smartAlarmInfo;\r
+    AlarmClockInfo eventAlarmInfo[EVENT_ALARM_CLOCK_MAX];\r
+    uint16 smartAlarmCnt;\r
+    uint16 eventAlarmCnt;\r
+} AlarmClockManagement;\r
+\r
+typedef struct {\r
+    uint32 eventType;\r
+    AlarmClockEventData data;\r
+} AlarmClockQueueMsg;\r
+\r
+int32 GetEventAlarmInfo(uint8 id, AlarmClockInfo *info);\r
+int32 GetSmartAlarmInfo(AlarmClockInfo *info);\r
+void EmptyListAlarmToday(void);\r
+void DisplayListAlarmToday(void);\r
+void UpdataListAndFirstAlarmToday(void);\r
+\r
+int32 SetDatetime(int32 argc, char *argv[]);\r
+int32 DispDatetime(void);\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif // ALARM_CLOCK_MANAGE_H\r
index 7290edb..96fc7dd 100644 (file)
@@ -1,31 +1,31 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: AlarmClockManage
- * Create: 2021-09-22
- */
-
-#ifndef ALMMGR_ALARM_CLOCK_MANAGE_H
-#define ALMMGR_ALARM_CLOCK_MANAGE_H
-
-#include "ohos_types.h"
-#include "AlarmClockManage.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void AlmmgrInitManagement(void);
-void AlmmgrAlarmClockEventProcess(const AlarmClockQueueMsg *msg);
-void AlmmgrAlarmClockPacketProcess(const uint8 *packet);
-int32 AlmmgrAddAlarmClock(const AlarmClockInfo *info);
-int32 AlmmgrUpdataAlarmClock(const AlarmClockInfo *info);
-int32 AlmmgrDeleteAlarmClock(const AlarmClockInfo *info);
-int32 AlmmgrGetManagement(AlarmClockManagement *management);
-uint16 AlmmgrGetEventAlarmCnt(void);
-uint16 AlmmgrGetSmartAlarmCnt(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // ALMMGR_ALARM_CLOCK_MANAGE_H
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: AlarmClockManage\r
+ * Create: 2021-09-22\r
+ */\r
+\r
+#ifndef ALMMGR_ALARM_CLOCK_MANAGE_H\r
+#define ALMMGR_ALARM_CLOCK_MANAGE_H\r
+\r
+#include "ohos_types.h"\r
+#include "AlarmClockManage.h"\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+void AlmmgrInitManagement(void);\r
+void AlmmgrAlarmClockEventProcess(const AlarmClockQueueMsg *msg);\r
+void AlmmgrAlarmClockPacketProcess(const uint8 *packet);\r
+int32 AlmmgrAddAlarmClock(const AlarmClockInfo *info);\r
+int32 AlmmgrUpdataAlarmClock(const AlarmClockInfo *info);\r
+int32 AlmmgrDeleteAlarmClock(const AlarmClockInfo *info);\r
+int32 AlmmgrGetManagement(AlarmClockManagement *management);\r
+uint16 AlmmgrGetEventAlarmCnt(void);\r
+uint16 AlmmgrGetSmartAlarmCnt(void);\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif // ALMMGR_ALARM_CLOCK_MANAGE_H\r
index 21611e4..8c99e8e 100644 (file)
@@ -38,13 +38,11 @@ static bool IsAlarmClockValidToday(const AlarmClockInfo *info);
 static int32 CreateListAlarmTodaySmart(void);
 static int32 CreateListAlarmTodayEvent(void);
 static int32 CreateListAlarmToday(void);
-static int32 GetListAlarmYesterday(void);
 static int32 SortListAlarmToday(void);
 static int32 AlarmInfoCheck(const AlarmClockInfo *alarmInfo);
 static int32 AddAndUpdataListAlarmToday(const AlarmClockInfo *alarmInfo);
 static int32 UpdataListAlarmToday(const AlarmClockInfo *alarmInfo);
 static int32 DeleteAndUpdataListAlarmToday(uint8 id);
-static int32 SetTimerExpire(uint32 alarmTime, const struct tm *curTime, const struct timeval *timeVal);
 static void EventAlarmRingProcess(void);
 static int32 SetFirstAlarmToday(FirstAlarmTodaySetType type);
 static void UpdataAndSaveAlarmClockDelayNum(void);
@@ -117,10 +115,10 @@ static int32 EmptyManagement(void)
 static bool IsAlarmClockValidToday(const AlarmClockInfo *info)
 {
     struct tm curTime;
-    time_t second;
-
-    second = time(NULL);
-    (void)gmtime_r((const time_t *)&second, &curTime);
+    int32_t ret = AlarmGetCurrentTimeInfo(&curTime);
+    if (ret != ERRCODE_SUCC) {
+        return false;
+    }
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IsAlarmClockValidToday repeatPeriod=%x, tm_wday=%d!!",
         info->repeatPeriod, curTime.tm_wday);
     if ((info->repeatPeriod & (0x1 << curTime.tm_wday)) > 0) {
@@ -190,50 +188,8 @@ static int32 CreateListAlarmTodayEvent(void)
 
 static int32 CreateListAlarmToday(void)
 {
-    AlarmClockInfoToday info;
-    uint32 size = sizeof(AlarmClockInfoToday);
-
     (void)CreateListAlarmTodaySmart();
     (void)CreateListAlarmTodayEvent();
-
-    /* 末尾增加一个零点零分的闹钟事件 */
-    (void)memset_s(&info, size, 0, size);
-
-    info.alarmType = TYPE_EVENT_ALARM_CLOCK;
-    info.alarmClockId = EVENT_ALARM_CLOCK_MAX + SMART_ALARM_CLOCK_MAX;
-    info.alarmTime = 0x180000; // 0x180000是半夜24点整
-    g_alarmTodayList.push_front(info);
-
-    return STATUS_OK;
-}
-
-static int32 GetListAlarmYesterday(void)
-{
-    AlarmClockInfoToday info;
-    std::list<AlarmClockInfoToday> tempList;
-    std::list<AlarmClockInfoToday>::iterator node;
-
-    for (node = g_alarmTodayList.begin(); node != g_alarmTodayList.end(); node++) {
-        /* 超过0x180000表示延迟到第二天的闹钟 */
-        if (node -> alarmTime >= 0x180000 && node->alarmType != TYPE_INVALID_ALARM_CLOCK &&
-            node->alarmClockId < EVENT_ALARM_CLOCK_MAX + SMART_ALARM_CLOCK_MAX) {
-            info.alarmType = node->alarmType;
-            info.alarmClockId = node->alarmClockId;
-            /* 减掉0x180000即为第二天应该响应的实际时间 */
-            info.alarmTime = node->alarmTime - 0x180000;
-            tempList.push_front(info);
-        }
-    }
-    (void)EmptyListAlarmToday();
-    for (node = tempList.begin(); node != tempList.end(); node++) {
-        if (node->alarmType != TYPE_INVALID_ALARM_CLOCK &&
-            node->alarmClockId < EVENT_ALARM_CLOCK_MAX + SMART_ALARM_CLOCK_MAX) {
-            info.alarmType = node->alarmType;
-            info.alarmClockId = node->alarmClockId;
-            info.alarmTime = node->alarmTime;
-            g_alarmTodayList.push_front(info);
-        }
-    }
     return STATUS_OK;
 }
 
@@ -279,9 +235,9 @@ static int32 AlarmInfoCheck(const AlarmClockInfo *alarmInfo)
 
     hour = alarmInfo->alarmTime >> TWO_BYTES_BITS;
     min = alarmInfo->alarmTime & AND_FOR_LOW_TWO_BYTES;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmInfoCheck alarmTime invalid, hour=%u, min=%u!!", hour, min);
-    if (hour > HOURS_PER_DAY || min >= MINUTES_PER_HOUR || (hour * MINUTES_PER_HOUR + min) > MINUTES_PER_DAY) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmInfoCheck alarmTime invalid, hour=%u, min=%u!!", hour, min);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmInfoCheck alarmTime valid, hour=%u, min=%u", hour, min);
+    if (hour >= HOURS_PER_DAY || min >= MINUTES_PER_HOUR) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmInfoCheck alarmTime invalid, hour=%u, min=%u", hour, min);
         return STATUS_FUN_PARA_INVALID;
     }
 
@@ -386,98 +342,19 @@ static int32 DeleteAndUpdataListAlarmToday(uint8 id)
     return STATUS_OK;
 }
 
-static int32 SetTimerExpire(uint32 alarmTime, const struct tm *curTime, const struct timeval *timeVal)
-{
-    osStatus_t ret;
-    uint32 diffTime;
-    osTimerId_t *timerHandle = AlarmClockTimerGetHandle();
-
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetTimerExpire!!");
-    if (curTime == NULL || timeVal == NULL) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetTimerExpire curTime NULL!!");
-        return STATUS_POINTER_NULL;
-    }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockTimerDeinit *timerHandle=%p!!", *timerHandle);
-    if (*timerHandle != NULL) {
-        ret = AlarmClockTimerDeinit(*timerHandle);
-        if (ret != osOK) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetTimerExpire AlarmClockTimerDeinit failed, ret = %lx!!", ret);
-            return STATUS_TIMER_ERROR;
-        }
-        *timerHandle = NULL;
-    }
-    ret = AlarmClockTimerInit(timerHandle);
-    if (ret != osOK) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetTimerExpire AlarmClockTimerInit failed, ret = %lx!!", ret);
-        return STATUS_TIMER_ERROR;
-    }
-    diffTime = (alarmTime >> TWO_BYTES_BITS) * SECONDS_PER_HOUR +
-        (alarmTime & AND_FOR_LOW_TWO_BYTES) * SECONDS_PER_MINUTE -
-        (curTime->tm_hour * SECONDS_PER_HOUR + curTime->tm_min * SECONDS_PER_MINUTE + curTime->tm_sec);
-    diffTime = diffTime * MS_PER_SECOND - timeVal->tv_usec / US_PER_MS;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "diffTime = %u, curTime = %d, %d, %d, %d!!", diffTime,
-        curTime->tm_hour, curTime->tm_min, curTime->tm_sec, timeVal->tv_usec);
-
-    ret = AlarmClockTimerStart(*timerHandle, diffTime);
-    if (ret != osOK) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetTimerExpire AlarmClockTimerStart failed, ret = %lx!!", ret);
-        if (*timerHandle != NULL) {
-            ret = AlarmClockTimerDeinit(*timerHandle);
-            if (ret != osOK) {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetTimerExpire AlarmClockTimerDeinit failed, ret = %lx!!", ret);
-                return STATUS_TIMER_ERROR;
-            }
-            *timerHandle = NULL;
-        }
-        return STATUS_TIMER_ERROR;
-    }
-    AlarmClockTimerSetAlarmTime(alarmTime);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockTimerStart *timerHandle=%p!!", *timerHandle);
-
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetTimerExpire end!!");
-    return STATUS_OK;
-}
-
 static void EventAlarmRingProcess(void)
 {
     struct tm curTime;
-    time_t second;
     AlarmClockInfoToday info;
-    struct timeval timeVal;
-    struct timezone timeZone;
-
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "EventAlarmRingProcess");
-
-    second = time(NULL);
-    (void)gmtime_r((const time_t *)&second, &curTime);
-    if (gettimeofday(&timeVal, &timeZone) != 0) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "EventAlarmRingProcess gettimeofday failed!!");
+    if (AlarmGetCurrentTimeInfo(&curTime) != 0) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "EventAlarmRingProcess AlarmGetCurrentTimeInfo failed!!");
         return;
     }
 
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "EventAlarmRingProcess, hour:%u, min:%u, sec:%u, usec:%u!!",
-        curTime.tm_hour, curTime.tm_min, curTime.tm_sec, timeVal.tv_usec);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "EventAlarmRingProcess, hour:%u, min:%u", curTime.tm_hour, curTime.tm_min);
     info = g_alarmTodayList.front();
-    /* 零点更新第二天闹钟列表 24点即半夜0点 */
-    if (info.alarmTime >> TWO_BYTES_BITS == 24 && (info.alarmTime & AND_FOR_LOW_TWO_BYTES) == 0 &&
-        IsCurTimeValid(timeVal, timeZone, 0, 0) == true) {
-        UpdataAndSaveAlarmClockDelayNum();
-        UpdataListAndFirstAlarmToday();
-        info = g_alarmTodayList.front();
-        if (info.alarmTime >> TWO_BYTES_BITS == 0 && (info.alarmTime & AND_FOR_LOW_TWO_BYTES) == 0) {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ring ring ring 1");
-            UpdataAndSaveAlarmClockEnable(info.alarmClockId);
-            (void)SetFirstAlarmToday(TYPE_CUR_NODE_NO_SKIP); // 第一个闹钟未发布和响应不能直接跳过
-        }
-    /* 零点设置0点0分的闹钟 */
-    } else if (info.alarmTime >> TWO_BYTES_BITS == 0 && (info.alarmTime & AND_FOR_LOW_TWO_BYTES) == 0 &&
-        IsCurTimeValid(timeVal, timeZone, 0, 0) == true) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ring ring ring 2");
-        UpdataAndSaveAlarmClockEnable(info.alarmClockId);
-        (void)SetFirstAlarmToday(TYPE_CUR_NODE_SKIP); // 第一个闹钟已响应直接跳过
-    /* 非零点闹钟事件 */
-    } else if (IsCurTimeValid(timeVal, timeZone,
-        info.alarmTime >> TWO_BYTES_BITS, info.alarmTime & AND_FOR_LOW_TWO_BYTES) == true) {
+    if (((info.alarmTime >> TWO_BYTES_BITS) == curTime.tm_hour) &&
+       ((info.alarmTime & AND_FOR_LOW_TWO_BYTES) == curTime.tm_min)) {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ring ring ring 3");
         UpdataAndSaveAlarmClockEnable(info.alarmClockId);
         (void)SetFirstAlarmToday(TYPE_CUR_NODE_SKIP); // 第一个闹钟已响应直接跳过
@@ -492,20 +369,12 @@ static int32 SetFirstAlarmToday(FirstAlarmTodaySetType type)
 {
     int32 ret;
     struct tm curTime;
-    time_t second;
-    AlarmClockEventData unuse;
-    struct timeval timeVal;
-    struct timezone timeZone;
     FirstAlarmTodaySetType tempType = type;
     std::list< AlarmClockInfoToday>::iterator node, tempNode;
 
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetFirstAlarmToday !!");
-    second = time(NULL);
-    (void)gmtime_r((const time_t *)&second, &curTime);
-
-    ret = gettimeofday(&timeVal, &timeZone);
-    if (ret != 0) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetFirstAlarmToday gettimeofday failed!!");
+    if (AlarmGetCurrentTimeInfo(&curTime) != 0) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetFirstAlarmToday AlarmGetCurrentTimeInfo failed!!");
         return STATUS_TIME_FUN_ERROR;
     }
 
@@ -524,26 +393,17 @@ static int32 SetFirstAlarmToday(FirstAlarmTodaySetType type)
 
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "alarmTime : %lx!!", node->alarmTime);
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "curTime: hour %ld, min %ld!!", curTime.tm_hour, curTime.tm_min);
-        /* 闹钟事件立刻响应 当前设置的闹钟事件响应后删除 后续闹钟事件前移 */
-        if (IsCurTimeValid(timeVal, timeZone,
-            node->alarmTime >> TWO_BYTES_BITS, node->alarmTime & AND_FOR_LOW_TWO_BYTES) == true &&
-            (node->alarmTime >> TWO_BYTES_BITS != 24)) { // 24点整不属于闹钟事件,属于过天事件
-            /* 通过广播服务发行RTC闹钟事件 */
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "alarmTime = curTime!!");
-            AlarmTimerEventPublish(TOPIC_EVENT_ALARM_RING, unuse);
-            break;
-        /* 非零点闹钟事件定时响应 */
-        } else if (((node->alarmTime >> TWO_BYTES_BITS == (uint32)curTime.tm_hour) &&
+
+        if (((node->alarmTime >> TWO_BYTES_BITS == (uint32)curTime.tm_hour) &&
             ((node->alarmTime & AND_FOR_LOW_TWO_BYTES) > (uint32)curTime.tm_min)) ||
             node->alarmTime >> TWO_BYTES_BITS > (uint32)curTime.tm_hour) {
             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "alarmTime > curTime!!");
-            (void)SetTimerExpire(node->alarmTime, &curTime, &timeVal);
+            SetAlarm(ALARM_A, 0, node->alarmTime >> TWO_BYTES_BITS, node->alarmTime & AND_FOR_LOW_TWO_BYTES);
             break;
         } else { // 已过期的直接删除
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "error, alarmTime < curTime!!");
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "alarmTime <= curTime!!");
             g_alarmTodayList.erase(node);
         }
-
         node++;
     }
 
@@ -593,14 +453,18 @@ static int32 DelayCurAlarmClock(uint8 alarmId)
         g_alarmClockManagement.eventAlarmInfo[id].alarmType == TYPE_EVENT_ALARM_CLOCK) {
         g_alarmClockManagement.eventAlarmInfo[id].delayNum++;
         g_alarmClockManagement.eventAlarmInfo[id].alarmClockEnable = true;
-        (void)SaveManagementToFile();
-        (void)UpdataListAlarmToday(&g_alarmClockManagement.eventAlarmInfo[id]);
+        if (g_alarmClockManagement.eventAlarmInfo[id].delayNum <= DELAY_COUNT_MAX) {
+            (void)SaveManagementToFile();
+            (void)UpdataListAlarmToday(&g_alarmClockManagement.eventAlarmInfo[id]);
+        }
     } else if (id == EVENT_ALARM_CLOCK_MAX &&
         g_alarmClockManagement.smartAlarmInfo.alarmType == TYPE_SMART_ALARM_CLOCK) {
         g_alarmClockManagement.smartAlarmInfo.delayNum++;
         g_alarmClockManagement.smartAlarmInfo.alarmClockEnable = true;
-        (void)SaveManagementToFile();
-        (void)UpdataListAlarmToday(&g_alarmClockManagement.smartAlarmInfo);
+        if (g_alarmClockManagement.smartAlarmInfo.delayNum <= DELAY_COUNT_MAX) {
+            (void)SaveManagementToFile();
+            (void)UpdataListAlarmToday(&g_alarmClockManagement.smartAlarmInfo);
+        }
     } else {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DelayCurAlarmClock alarmClockId is invalid, alarmClockId = %u!!", id);
         return STATUS_ALARM_ID_INVALID;
@@ -618,13 +482,15 @@ static int32 CancelCurAlarmClock(uint8 alarmId)
 void AlmmgrInitManagement(void)
 {
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlmmgrInitManagement !!");
-
+    (void)AlarmTimerInit();
+    (void)SetZeroAlarm();
     (void)EmptyManagement();
     (void)LoadManagementFromFile();
     UpdataAndSaveAlarmClockDelayNum();
     (void)EmptyListAlarmToday();
     (void)CreateListAlarmToday();
     (void)SortListAlarmToday();
+    (void)DisplayListAlarmToday();
     (void)SetFirstAlarmToday(TYPE_CUR_NODE_NO_SKIP);
 
     return;
@@ -685,7 +551,7 @@ int32 AlmmgrAddAlarmClock(const AlarmClockInfo *info)
             }
             g_alarmClockManagement.eventAlarmCnt++;
         } else {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlmmgrAddAlarmClock alarmClockId is invalid, alarmClockId = %u!!", id);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlmmgrAddAlarmClock invalid alarmClockId = %u!!", id);
             return STATUS_ALARM_ID_INVALID;
         }
     } else if (info->alarmType == TYPE_SMART_ALARM_CLOCK &&
@@ -698,11 +564,11 @@ int32 AlmmgrAddAlarmClock(const AlarmClockInfo *info)
             }
             g_alarmClockManagement.smartAlarmCnt++;
         } else {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlmmgrAddAlarmClock alarmClockId is invalid, alarmClockId = %u!!", id);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlmmgrAddAlarmClock invalid alarmClockId = %u!!", id);
             return STATUS_ALARM_ID_INVALID;
         }
     } else {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlmmgrAddAlarmClock alarmType is invalid, alarmType = %u!!", info->alarmType);
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlmmgrAddAlarmClock invalid alarmType = %u!!", info->alarmType);
         return STATUS_ALARM_TYPE_INVALID;
     }
 
@@ -715,17 +581,14 @@ int32 AlmmgrAddAlarmClock(const AlarmClockInfo *info)
 
 int32 AlmmgrUpdataAlarmClock(const AlarmClockInfo *info)
 {
-    uint32 size;
-    uint8 id;
-    int32 ret;
-
-    ret = AlarmInfoCheck(info);
+    int32 ret = AlarmInfoCheck(info);
     if (ret != STATUS_OK) {
         return ret;
     }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlmmgrUpdataAlarmClock !!");
-    size = sizeof(AlarmClockInfo);
-    id = info->alarmClockId;
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlmmgrUpdataAlarmClock");
+
+    uint32_t size = sizeof(AlarmClockInfo);
+    uint8_t id = info->alarmClockId;
     if (info->alarmType == TYPE_EVENT_ALARM_CLOCK &&
         g_alarmClockManagement.eventAlarmInfo[id].alarmType == TYPE_EVENT_ALARM_CLOCK) {
         if (id < EVENT_ALARM_CLOCK_MAX) {
@@ -892,11 +755,10 @@ void EmptyListAlarmToday(void)
 void DisplayListAlarmToday(void)
 {
     std::list< AlarmClockInfoToday>::iterator node;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlmmgrTestDisplayListAlarmToday !!");
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "DisplayListAlarmToday !!");
     for (node = g_alarmTodayList.begin(); node != g_alarmTodayList.end(); node++) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "list addr : %p, %p", &g_alarmTodayList, g_alarmTodayList.front());
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "node addr : %p, id : %u, type : %u, alarmTime : %lx ",
-            node, node->alarmClockId, node->alarmType, node->alarmTime);
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "clock id : %u, type : %u, alarmTime : %lx ",
+                      node->alarmClockId, node->alarmType, node->alarmTime);
     }
 
     return;
@@ -905,12 +767,11 @@ void DisplayListAlarmToday(void)
 void UpdataListAndFirstAlarmToday(void)
 {
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "UpdataListAndFirstAlarmToday !!");
-
-    (void)GetListAlarmYesterday();
+    UpdataAndSaveAlarmClockDelayNum();
+    (void)EmptyListAlarmToday();
     (void)CreateListAlarmToday();
     (void)SortListAlarmToday();
     (void)SetFirstAlarmToday(TYPE_CUR_NODE_NO_SKIP);
-
     return;
 }
 
index 82ffdad..747b380 100644 (file)
@@ -1,39 +1,63 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: AlarmClockTimer
- * Create: 2021-09-22
- */
-
-#ifndef ALARM_CLOCK_TIMER_CONFIG_H
-#define ALARM_CLOCK_TIMER_CONFIG_H
-
-#include <sys/time.h>
-
-#include "ohos_types.h"
-#include "cmsis_os.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef union {
-    struct timeval timeVal;
-    uint32 value;
-} AlarmClockEventData;
-
-osTimerId_t *AlarmClockTimerGetHandle(void);
-uint32 AlarmClockTimerGetAlarmTime(void);
-void AlarmClockTimerSetAlarmTime(uint32 alarmTime);
-void AlarmTimerEventPublish(uint16 topic, AlarmClockEventData data);
-bool IsCurTimeValid(struct timeval timeVal, struct timezone timeZone, uint32 hour, uint32 min);
-
-osStatus_t AlarmClockTimerInit(osTimerId_t *timerHandle);
-osStatus_t AlarmClockTimerStart(osTimerId_t timerHandle, uint32 delayMs);
-osStatus_t AlarmClockTimerDeinit(osTimerId_t timerHandle);
-osStatus_t AlarmClockTimerStop(osTimerId_t timerHandle);
-
-#ifdef __cplusplus
-}
-#endif
-
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: AlarmClockTimer\r
+ * Create: 2021-09-22\r
+ */\r
+\r
+#ifndef ALARM_CLOCK_TIMER_CONFIG_H\r
+#define ALARM_CLOCK_TIMER_CONFIG_H\r
+\r
+#include <sys/time.h>\r
+\r
+#include "ohos_types.h"\r
+#include "cmsis_os.h"\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+#define ALARM_INTERVAL_MS 1000\r
+\r
+typedef union {\r
+    struct timeval timeVal;\r
+    uint32 value;\r
+} AlarmClockEventData;\r
+\r
+typedef enum {\r
+    ALARM_STATUS_UNUSED,  /* The alarm timer is not used. */\r
+    ALARM_STATUS_CREATED, /* The alarm timer is created. */\r
+    ALARM_STATUS_RUNNING, /* The alarm timer is timing. */\r
+} AlarmState;\r
+\r
+typedef enum {\r
+    ALARM_A,\r
+    ALARM_B,\r
+    ALARM_NONE,\r
+} AlarmType;\r
+\r
+typedef struct {\r
+    uint8_t week;\r
+    uint8_t hour;\r
+    uint8_t minute;\r
+    uint8_t reserved;\r
+} AlarmInfo;\r
+\r
+typedef void(*AlarmCallBack)(void);\r
+\r
+typedef struct {\r
+    AlarmState state;\r
+    AlarmInfo info;\r
+    AlarmCallBack callback;\r
+} AlarmCtrl;\r
+\r
+void AlarmTimerEventPublish(uint16 topic, AlarmClockEventData data);\r
+int32_t AlarmTimerInit(void);\r
+int32_t SetZeroAlarm(void);\r
+int32_t SetAlarm(AlarmType type, uint8_t week, uint8_t hour, uint8_t minute);\r
+int32_t AlarmGetCurrentTimeInfo(struct tm *timeInfo);\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
 #endif // ALARM_CLOCK_TIMER_CONFIG_H
\ No newline at end of file
index 903641f..2e55775 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: AlarmClockTimer
- * Create: 2021-09-22
- */
-
-#include <time.h>
-#include <sys/time.h>
-#include <stdio.h>
-
-#include "wearable_log.h"
-#include "securec.h"
-#include "broadcast_service.h"
-#include "broadcast_feature.h"
-#include "service_id_define.h"
-#include "samgr_lite.h"
-#include "thread_adapter.h"
-#include "graphic_service.h"
-
-#include "AlarmClockTimerConfig.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-constexpr int32 TWO_BYTES_BITS = 16;
-constexpr int32 AND_FOR_LOW_TWO_BYTES = 0xff;
-constexpr int32 SECONDS_PER_DAY = 86400;
-constexpr int32 MS_PER_DAY = 86400000;
-constexpr int32 SECONDS_PER_MINUTE = 60;
-constexpr int32 SECONDS_PER_HOUR = 3600;
-constexpr int32 MS_PER_SECOND = 1000;
-constexpr int32 US_PER_MS = 1000;
-constexpr int32 ACCEPTABLE_MAX_ERROR = 3000; // ms
-
-uint32 g_alarmTime;
-osTimerId_t g_timerHandle = NULL;
-static MutexId g_alarmTimerDataMutex;
-
-static void AlarmClockTimerMutexInit()
-{
-    if (g_alarmTimerDataMutex == NULL) {
-        g_alarmTimerDataMutex = MUTEX_InitValue();
-    }
-    return;
-}
-
-osTimerId_t *AlarmClockTimerGetHandle(void)
-{
-    return &g_timerHandle;
-}
-
-uint32 AlarmClockTimerGetAlarmTime(void)
-{
-    return g_alarmTime;
-}
-
-void AlarmClockTimerSetAlarmTime(uint32 alarmTime)
-{
-    AlarmClockTimerMutexInit();
-    MUTEX_Lock(g_alarmTimerDataMutex);
-    g_alarmTime = alarmTime;
-    MUTEX_Unlock(g_alarmTimerDataMutex);
-    return;
-}
-
-void AlarmTimerEventPublish(uint16 topic, AlarmClockEventData data)
-{
-    int32 ret;
-    uint32 size = sizeof(AlarmClockEventData);
-    Request *request = NULL;
-    BroadcastApi *broadcastApi = NULL;
-    IUnknown *api = NULL;
-
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmTimerEventPublish topic=%u!!", topic);
-
-    /* alloc request */
-    request = SAMGR_AllocRequestMsg(0, PLATFORM_CORE, BROADCAST_SVR_ID, size);
-    if (request == NULL) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SAMGR_AllocRequestMsg failed");
-        return;
-    }
-    request->msgId = topic;
-    ret = memcpy_s(request->data, size, (const void *)&data, size);
-    if (ret != EOK) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmTimerEventPublish memcpy_s rateDataTmp fail! ret = %d", ret);
-        return;
-    }
-    request->len = size;
-    request->msgValue = 0;
-
-    /* public request */
-    api = SAMGR_GetInstance()->GetFeatureApi(BROADCAST_SERVICE_NAME, BROADCAST_FEATURE_NAME);
-    if (api == NULL) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetFeatureApi failed");
-        SAMGR_FreeRequestMsg(request);
-        return;
-    }
-    ret = api->QueryInterface(api, DEFAULT_VERSION, (void **)&broadcastApi);
-    if (ret != 0 || broadcastApi == NULL) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "QueryInterface failed");
-        SAMGR_FreeRequestMsg(request);
-        return;
-    }
-    broadcastApi->PublishTopic((IUnknown *)broadcastApi, request);
-    broadcastApi->Release((IUnknown *)broadcastApi);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmTimerEventPublish end!!");
-
-    return;
-}
-
-bool IsCurTimeValid(struct timeval timeVal, struct timezone timeZone, uint32 hour, uint32 min)
-{
-    time_t msecond;
-    time_t target;
-
-    msecond = (timeVal.tv_sec % SECONDS_PER_DAY) * MS_PER_SECOND + timeVal.tv_usec / US_PER_MS;
-    target = (hour * SECONDS_PER_HOUR + min * SECONDS_PER_MINUTE) * MS_PER_SECOND;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IsCurTimeValid, hour:%u, min:%u, sec:%u, usec:%u",
-        hour, min, timeVal.tv_sec % SECONDS_PER_DAY, timeVal.tv_usec);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IsCurTimeValid, msecond:%u, target:%u", msecond, target);
-
-    if (target <= MS_PER_DAY - ACCEPTABLE_MAX_ERROR && target >= ACCEPTABLE_MAX_ERROR &&
-        msecond >= target - ACCEPTABLE_MAX_ERROR && msecond <= target + ACCEPTABLE_MAX_ERROR) {
-        return true;
-    } else if (target > MS_PER_DAY - ACCEPTABLE_MAX_ERROR && target <= MS_PER_DAY &&
-        ((msecond >= target - ACCEPTABLE_MAX_ERROR && msecond <= MS_PER_DAY) ||
-        (msecond >= 0 && msecond <= ACCEPTABLE_MAX_ERROR))) {
-        return true;
-    } else if (target >= 0 && target < ACCEPTABLE_MAX_ERROR &&
-        ((msecond >= MS_PER_DAY - ACCEPTABLE_MAX_ERROR && msecond <= MS_PER_DAY) ||
-        (msecond >= 0 && msecond <= target + ACCEPTABLE_MAX_ERROR))) {
-        return true;
-    } else {
-        return false;
-    }
-}
-
-static void AlarmTimerCallbackProc(uint32 data)
-{
-    struct tm curTime;
-    time_t second;
-    osStatus_t ret;
-    AlarmClockEventData unuse;
-    struct timeval timeVal;
-    struct timezone timeZone;
-
-    (void)data;
-    second = time(NULL);
-    (void)gmtime_r((const time_t *)&second, &curTime);
-    if (gettimeofday(&timeVal, &timeZone) != 0) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmTimerCallbackProc gettimeofday failed!!");
-        return;
-    }
-
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmTimerCallbackProc, hour:%u, min:%u, sec:%u, usec:%u!!",
-        curTime.tm_hour, curTime.tm_min, curTime.tm_sec, timeVal.tv_usec);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmTimerCallbackProc, alarmTime:%lx!!", g_alarmTime);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmTimerCallbackProc, g_timerHandle=%p!!", g_timerHandle);
-
-    if (g_timerHandle != NULL) {
-        ret = AlarmClockTimerDeinit(g_timerHandle);
-        if (ret != osOK) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmTimerCallbackProc AlarmClockTimerDeinit failed, ret = %lx!!", ret);
-            return;
-        }
-        g_timerHandle = NULL;
-    }
-
-    /* 半夜24点列表更新 */
-    if (g_alarmTime >> TWO_BYTES_BITS == 24 && (g_alarmTime & AND_FOR_LOW_TWO_BYTES) == 0 &&
-        IsCurTimeValid(timeVal, timeZone, 0, 0) == true) {
-        /* 通过广播服务发行RTC闹钟事件 */
-        AlarmTimerEventPublish(TOPIC_EVENT_NEXTDAY_UPDATE, unuse);
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmTimerCallbackProc alarmTime = 24:00!!");
-    /* 定时时间到 */
-    } else if (IsCurTimeValid(timeVal, timeZone,
-        g_alarmTime >> TWO_BYTES_BITS, g_alarmTime & AND_FOR_LOW_TWO_BYTES) == true) {
-        /* 通过广播服务发行RTC闹钟事件 */
-        AlarmTimerEventPublish(TOPIC_EVENT_ALARM_RING, unuse);
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmTimerCallbackProc alarmTime = curTime!!");
-    /* 定时时间已过期 */
-    } else {
-        /* 异常创建 */
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmTimerCallbackProc alarmTime or curTime invalid!!");
-    }
-    return;
-}
-
-static void AlarmTimerCallback(uint32 data)
-{
-    GraphicService::GetInstance()->PostGraphicEvent(std::bind(AlarmTimerCallbackProc, data)); 
-}
-
-osStatus_t AlarmClockTimerInit(osTimerId_t *timerHandle)
-{
-    if (timerHandle == NULL) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockTimerInit timerHandle invalid!!");
-        return osError;
-    }
-    AlarmClockTimerMutexInit();
-    MUTEX_Lock(g_alarmTimerDataMutex);
-    *timerHandle = osTimerNew((osTimerFunc_t)AlarmTimerCallback, osTimerPeriodic, NULL, NULL);
-    MUTEX_Unlock(g_alarmTimerDataMutex);
-    if (*timerHandle == NULL) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockTimerInit init failed!!");
-        return osError;
-    }
-    return osOK;
-}
-
-osStatus_t AlarmClockTimerStart(osTimerId_t timerHandle, uint32 delayMs)
-{
-    uint32 tick = osMs2Tick(delayMs);
-    return osTimerStart(timerHandle, tick);
-}
-
-osStatus_t AlarmClockTimerDeinit(osTimerId_t timerHandle)
-{
-    osStatus_t ret;
-
-    AlarmClockTimerMutexInit();
-    MUTEX_Lock(g_alarmTimerDataMutex);
-    ret = osTimerDelete(timerHandle);
-    MUTEX_Unlock(g_alarmTimerDataMutex);
-
-    return ret;
-}
-
-osStatus_t AlarmClockTimerStop(osTimerId_t timerHandle)
-{
-    return osTimerStop(timerHandle);
-}
-
-#ifdef __cplusplus
-}
-#endif
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: AlarmClockTimer\r
+ * Create: 2021-09-22\r
+ */\r
+\r
+#include <time.h>\r
+#include <sys/time.h>\r
+#include <stdio.h>\r
+#include "wearable_log.h"\r
+#include "securec.h"\r
+#include "broadcast_service.h"\r
+#include "broadcast_feature.h"\r
+#include "service_id_define.h"\r
+#include "samgr_lite.h"\r
+#include "thread_adapter.h"\r
+#include "graphic_service.h"\r
+\r
+#include "AlarmClockTimerConfig.h"\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+static AlarmCtrl g_alarmCtrA;\r
+static AlarmCtrl g_alarmCtrB;\r
+static osTimerId_t g_AlarmHandle = NULL;\r
+\r
+void AlarmTimerEventPublish(uint16 topic, AlarmClockEventData data)\r
+{\r
+    int32 ret;\r
+    uint32 size = sizeof(AlarmClockEventData);\r
+    Request *request = NULL;\r
+    BroadcastApi *broadcastApi = NULL;\r
+    IUnknown *api = NULL;\r
+\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmTimerEventPublish topic=%u!!", topic);\r
+\r
+    /* alloc request */\r
+    request = SAMGR_AllocRequestMsg(0, PLATFORM_CORE, BROADCAST_SVR_ID, size);\r
+    if (request == NULL) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SAMGR_AllocRequestMsg failed");\r
+        return;\r
+    }\r
+    request->msgId = topic;\r
+    ret = memcpy_s(request->data, size, (const void *)&data, size);\r
+    if (ret != EOK) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmTimerEventPublish memcpy_s rateDataTmp fail! ret = %d", ret);\r
+        return;\r
+    }\r
+    request->len = size;\r
+    request->msgValue = 0;\r
+\r
+    /* public request */\r
+    api = SAMGR_GetInstance()->GetFeatureApi(BROADCAST_SERVICE_NAME, BROADCAST_FEATURE_NAME);\r
+    if (api == NULL) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetFeatureApi failed");\r
+        SAMGR_FreeRequestMsg(request);\r
+        return;\r
+    }\r
+    ret = api->QueryInterface(api, DEFAULT_VERSION, (void **)&broadcastApi);\r
+    if (ret != 0 || broadcastApi == NULL) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "QueryInterface failed");\r
+        SAMGR_FreeRequestMsg(request);\r
+        return;\r
+    }\r
+    broadcastApi->PublishTopic((IUnknown *)broadcastApi, request);\r
+    broadcastApi->Release((IUnknown *)broadcastApi);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmTimerEventPublish end!!");\r
+\r
+    return;\r
+}\r
+\r
+static void AlarmCallBackProcA(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmCallBackProcA");\r
+    AlarmClockEventData unuse;\r
+    GraphicService::GetInstance()->PostGraphicEvent(\r
+        std::bind(AlarmTimerEventPublish, TOPIC_EVENT_ALARM_RING, unuse));\r
+}\r
+\r
+static void AlarmCallBackProcB(void)\r
+{\r
+    AlarmClockEventData unuse;\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmCallBackProcB");\r
+    GraphicService::GetInstance()->PostGraphicEvent(\r
+        std::bind(AlarmTimerEventPublish, TOPIC_EVENT_NEXTDAY_UPDATE, unuse));\r
+    GraphicService::GetInstance()->PostGraphicEvent(SetZeroAlarm);\r
+}\r
+\r
+void AlarmScan(void *arg)\r
+{\r
+    struct tm curTime;\r
+    int32_t ret = AlarmGetCurrentTimeInfo(&curTime);\r
+    if (ret != ERRCODE_SUCC) {\r
+        return;\r
+    }\r
+\r
+    if (g_alarmCtrA.state == ALARM_STATUS_RUNNING) {\r
+        if ((g_alarmCtrA.callback != NULL) &&\r
+            (g_alarmCtrA.info.hour == curTime.tm_hour) &&\r
+            (g_alarmCtrA.info.minute == curTime.tm_min)) {\r
+            g_alarmCtrA.callback();\r
+            g_alarmCtrA.state = ALARM_STATUS_CREATED;\r
+        }\r
+    }\r
+\r
+    if (g_alarmCtrB.state == ALARM_STATUS_RUNNING) {\r
+        if ((g_alarmCtrB.callback != NULL) &&\r
+            (g_alarmCtrB.info.week == curTime.tm_wday) &&\r
+            (g_alarmCtrB.info.hour == curTime.tm_hour) &&\r
+            (g_alarmCtrB.info.minute == curTime.tm_min)) {\r
+            g_alarmCtrB.callback();\r
+            g_alarmCtrB.state = ALARM_STATUS_CREATED;\r
+        }\r
+    }\r
+}\r
+\r
+static int32_t AlarmCreate(AlarmCtrl *alarmCtrl, AlarmCallBack callback)\r
+{\r
+    if (alarmCtrl == NULL) {\r
+        return ERRCODE_FAIL;\r
+    }\r
+    if (alarmCtrl->state == ALARM_STATUS_UNUSED) {\r
+        alarmCtrl->state = ALARM_STATUS_CREATED;\r
+        alarmCtrl->callback = callback;\r
+    }\r
+    return ERRCODE_SUCC;\r
+}\r
+\r
+int32_t AlarmTimerInit(void)\r
+{\r
+    int32_t timerStatus;\r
+    int32_t ret;\r
+\r
+    g_alarmCtrA.state = ALARM_STATUS_UNUSED;\r
+    g_alarmCtrB.state = ALARM_STATUS_UNUSED;\r
+    g_AlarmHandle = osTimerNew(AlarmScan, osTimerPeriodic, NULL, NULL);\r
+    if (g_AlarmHandle == NULL) {\r
+        return ERRCODE_FAIL;\r
+    }\r
+    timerStatus = osTimerStart(g_AlarmHandle, ALARM_INTERVAL_MS);\r
+    if (timerStatus != osOK) {\r
+        return ERRCODE_FAIL;\r
+    }\r
+    ret = AlarmCreate(&g_alarmCtrA, AlarmCallBackProcA);\r
+    if (ret != ERRCODE_SUCC) {\r
+        return ERRCODE_FAIL;\r
+    }\r
+    ret = AlarmCreate(&g_alarmCtrB, AlarmCallBackProcB);\r
+    if (ret != ERRCODE_SUCC) {\r
+        return ERRCODE_FAIL;\r
+    }\r
+    return ERRCODE_SUCC;\r
+}\r
+\r
+int32_t SetAlarm(AlarmType type, uint8_t week, uint8_t hour, uint8_t minute)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetAlarm %d %d %d %d", type, week, hour, minute);\r
+    if (type == ALARM_A) {\r
+        g_alarmCtrA.state = ALARM_STATUS_RUNNING;\r
+        g_alarmCtrA.info.hour = hour;\r
+        g_alarmCtrA.info.minute = minute;\r
+    } else if (type == ALARM_B) {\r
+        g_alarmCtrB.state = ALARM_STATUS_RUNNING;\r
+        g_alarmCtrB.info.week = week;\r
+        g_alarmCtrB.info.hour = hour;\r
+        g_alarmCtrB.info.minute = minute;\r
+    } else {\r
+        return ERRCODE_FAIL;\r
+    }\r
+    return ERRCODE_SUCC;\r
+}\r
+\r
+int32_t SetZeroAlarm(void)\r
+{\r
+    struct tm curTime;\r
+    int32_t ret = AlarmGetCurrentTimeInfo(&curTime);\r
+    if (ret != ERRCODE_SUCC) {\r
+        return ERRCODE_FAIL;\r
+    }\r
+    int32_t weekday = (++curTime.tm_wday) % 7;\r
+    return SetAlarm(ALARM_B, weekday, 0, 0);\r
+}\r
+\r
+int32_t AlarmGetCurrentTimeInfo(struct tm *timeInfo)\r
+{\r
+    if (timeInfo == NULL) {\r
+        return ERRCODE_FAIL;\r
+    }\r
+    time_t sec = time(NULL);\r
+    localtime_r(&sec, timeInfo);\r
+    return ERRCODE_SUCC;\r
+}\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
index 88526bf..72b9b98 100644 (file)
@@ -1,39 +1,39 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: BluetoothDeviceListView view 蓝牙耳机设备列表界面
- * Author:
- * Create: 2021-10-13
- */
-#ifndef BLUETOOTH_DEVICE_LIST_VIEW_H
-#define BLUETOOTH_DEVICE_LIST_VIEW_H
-
-#include "components/ui_view_group.h"
-#include "components/ui_label.h"
-#include "components/ui_label_button.h"
-#include "components/ui_list.h"
-#include "BluetoothDeviceCaseListAdapter.h"
-
-namespace OHOS {
-class BluetoothDeviceCaseListAdapter;
-class BluetoothDeviceListView {
-public:
-    BluetoothDeviceListView();
-    ~BluetoothDeviceListView();
-    static BluetoothDeviceListView *GetInstance();
-    UIViewGroup *InitShowUpView(void);
-    UIViewGroup *GetGroup(void);
-    UIList *GetDeviceUIList(void);
-    void RefreshText(void);
-private:
-    void InitList(void);
-    void InItEmptyLabel();
-    void InitNewEquipmentButton();
-    UIViewGroup *group{nullptr};
-    UIList *list{nullptr};
-    UILabel *titleLabel{nullptr};
-    UILabel *emptyLabel{nullptr};
-    BluetoothDeviceCaseListAdapter *adapterText{nullptr};
-    UILabelButton *newEquipmentButton{nullptr};
-};
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: BluetoothDeviceListView view 蓝牙耳机设备列表界面\r
+ * Author:\r
+ * Create: 2021-10-13\r
+ */\r
+#ifndef BLUETOOTH_DEVICE_LIST_VIEW_H\r
+#define BLUETOOTH_DEVICE_LIST_VIEW_H\r
+\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_label_button.h"\r
+#include "components/ui_list.h"\r
+#include "BluetoothDeviceCaseListAdapter.h"\r
+\r
+namespace OHOS {\r
+class BluetoothDeviceCaseListAdapter;\r
+class BluetoothDeviceListView {\r
+public:\r
+    BluetoothDeviceListView();\r
+    ~BluetoothDeviceListView();\r
+    static BluetoothDeviceListView *GetInstance();\r
+    UIViewGroup *InitShowUpView(void);\r
+    UIViewGroup *GetGroup(void);\r
+    UIList *GetDeviceUIList(void);\r
+    void RefreshText(void);\r
+private:\r
+    void InitList(void);\r
+    void InItEmptyLabel();\r
+    void InitNewEquipmentButton();\r
+    UIViewGroup *group{nullptr};\r
+    UIList *list{nullptr};\r
+    UILabel *titleLabel{nullptr};\r
+    UILabel *emptyLabel{nullptr};\r
+    BluetoothDeviceCaseListAdapter *adapterText{nullptr};\r
+    UILabelButton *newEquipmentButton{nullptr};\r
+};\r
+} // namespace OHOS\r
 #endif // BLUETOOTH_DEVICE_LIST_VIEW_H
\ No newline at end of file
index 63a5302..8a0dd98 100644 (file)
@@ -1,43 +1,43 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: BluetoothEarListView view
- * Author:
- * Create: 2021-10-13
- */
-#ifndef BLUETOOTH_EAR_LIST_VIEW_H
-#define BLUETOOTH_EAR_LIST_VIEW_H
-
-#include "components/ui_view_group.h"
-#include "components/ui_label.h"
-#include "components/ui_label_button.h"
-#include "components/ui_image_animator.h"
-#include "components/ui_list.h"
-#include "BluetoothCaseListAdapter.h"
-
-namespace OHOS {
-class BluetoothCaseListAdapter;
-class BluetoothEarListView {
-public:
-    BluetoothEarListView();
-    ~BluetoothEarListView();
-    static BluetoothEarListView *GetInstance();
-    UIViewGroup *InitShowUpView(void);
-    UIViewGroup *GetGroup(void);
-    UIList *GetScanUIList(void);
-    void SetTitleLabel(const char *text);
-    void SetNewEquipmentButtonAdd(void);
-    void SetNewEquipmentButtonRemove(void);
-    void SetCancelConnedRequestButtonAdd(void);
-    void SetCancelConnedRequestButtonRemove(void);
-private:
-    void InitList(void);
-    void InitButten(UILabelButton **button, const char *text, const char* id);
-    UIViewGroup *group{nullptr};
-    UIList *list{nullptr};
-    UILabel *titleLabel{nullptr};
-    BluetoothCaseListAdapter *adapterText{nullptr};
-    UILabelButton *rescanButton{nullptr};
-    UILabelButton *cancelConnedRequestButton{nullptr};
-};
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: BluetoothEarListView view\r
+ * Author:\r
+ * Create: 2021-10-13\r
+ */\r
+#ifndef BLUETOOTH_EAR_LIST_VIEW_H\r
+#define BLUETOOTH_EAR_LIST_VIEW_H\r
+\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_label_button.h"\r
+#include "components/ui_image_animator.h"\r
+#include "components/ui_list.h"\r
+#include "BluetoothCaseListAdapter.h"\r
+\r
+namespace OHOS {\r
+class BluetoothCaseListAdapter;\r
+class BluetoothEarListView {\r
+public:\r
+    BluetoothEarListView();\r
+    ~BluetoothEarListView();\r
+    static BluetoothEarListView *GetInstance();\r
+    UIViewGroup *InitShowUpView(void);\r
+    UIViewGroup *GetGroup(void);\r
+    UIList *GetScanUIList(void);\r
+    void SetTitleLabel(const char *text);\r
+    void SetNewEquipmentButtonAdd(void);\r
+    void SetNewEquipmentButtonRemove(void);\r
+    void SetCancelConnedRequestButtonAdd(void);\r
+    void SetCancelConnedRequestButtonRemove(void);\r
+private:\r
+    void InitList(void);\r
+    void InitButten(UILabelButton **button, const char *text, const char* id);\r
+    UIViewGroup *group{nullptr};\r
+    UIList *list{nullptr};\r
+    UILabel *titleLabel{nullptr};\r
+    BluetoothCaseListAdapter *adapterText{nullptr};\r
+    UILabelButton *rescanButton{nullptr};\r
+    UILabelButton *cancelConnedRequestButton{nullptr};\r
+};\r
+} // namespace OHOS\r
 #endif // BLUETOOTH_EAR_LIST_VIEW_H
\ No newline at end of file
index bd7b9ab..ef47826 100644 (file)
@@ -1,51 +1,51 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: BluetoothEarPhone view
- * Author:
- * Create: 2021-10-13
- */
-#ifndef BLUETOOTH_EAR_PHONE_VIEW_H
-#define BLUETOOTH_EAR_PHONE_VIEW_H
-
-#include <iostream>
-#include "components/ui_view_group.h"
-#include "components/ui_label.h"
-#include "components/ui_label_button.h"
-#include "components/ui_image_animator.h"
-#include "cmsis_os.h"
-#include "BluetoothModel.h"
-#define BLUETOOTH_SEARCH_IMAGE_NUM 8
-
-namespace OHOS {
-class BluetoothEarPhoneView {
-public:
-    BluetoothEarPhoneView();
-    ~BluetoothEarPhoneView();
-    static BluetoothEarPhoneView *GetInstance();
-    UIViewGroup *InitShowUpView(void);
-    void BtEnable(void);
-    void StopBtDiscovery(void);
-    void BtAnimatorStart(void);
-    void BtAnimatorStop(void);
-    void setScanStatus(bool value);
-    bool getScanStatus(void);
-private:
-    ImageAnimatorInfo searchImageInfo[BLUETOOTH_SEARCH_IMAGE_NUM];
-    UIViewGroup *group{nullptr};
-    UILabel *titleLabel{nullptr};
-    UIImageAnimatorView *imageAnimator{nullptr};
-    bool scanStart{0};
-    void BtScanImageAnimator();
-};
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-void ScanTimerCallback(int data);
-void CancelBrScanHandle(void);
-void EndScanHandle(void);
-#ifdef __cplusplus
-}
-#endif
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: BluetoothEarPhone view\r
+ * Author:\r
+ * Create: 2021-10-13\r
+ */\r
+#ifndef BLUETOOTH_EAR_PHONE_VIEW_H\r
+#define BLUETOOTH_EAR_PHONE_VIEW_H\r
+\r
+#include <iostream>\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_label_button.h"\r
+#include "components/ui_image_animator.h"\r
+#include "cmsis_os.h"\r
+#include "BluetoothModel.h"\r
+#define BLUETOOTH_SEARCH_IMAGE_NUM 8\r
+\r
+namespace OHOS {\r
+class BluetoothEarPhoneView {\r
+public:\r
+    BluetoothEarPhoneView();\r
+    ~BluetoothEarPhoneView();\r
+    static BluetoothEarPhoneView *GetInstance();\r
+    UIViewGroup *InitShowUpView(void);\r
+    void BtEnable(void);\r
+    void StopBtDiscovery(void);\r
+    void BtAnimatorStart(void);\r
+    void BtAnimatorStop(void);\r
+    void setScanStatus(bool value);\r
+    bool getScanStatus(void);\r
+private:\r
+    ImageAnimatorInfo searchImageInfo[BLUETOOTH_SEARCH_IMAGE_NUM];\r
+    UIViewGroup *group{nullptr};\r
+    UILabel *titleLabel{nullptr};\r
+    UIImageAnimatorView *imageAnimator{nullptr};\r
+    bool scanStart{0};\r
+    void BtScanImageAnimator();\r
+};\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+void ScanTimerCallback(int data);\r
+void CancelBrScanHandle(void);\r
+void EndScanHandle(void);\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+} // namespace OHOS\r
 #endif // BLUETOOTH_EAR_PHONE_VIEW_H
\ No newline at end of file
index ad7d7f4..8e5341d 100644 (file)
@@ -1,27 +1,45 @@
-/*
- * Copyright (c) CompanyNameMagicTag. 2022. All rights reserved.
- * Description: BluetoothHeadsetEvent.
- */
-#ifndef BLUETOOTH_HEADSET_EVENT_H
-#define BLUETOOTH_HEADSET_EVENT_H
-
-#include "bts_def.h"
-#include "bts_br_gap.h"
-#include "td_type.h"
-#include "bt_audio.h"
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void UsingPressButtonStatusCallback(td_u32 keyOperation);
-void MediaStatusCallback(bt_avrcp_tg_evt_status_param *eventStatusParam);
-void PressButtonStatusCallback(td_u32 keyOperation, td_u32 keyValue);
-void ConnCtStateChangedCallback(const bd_addr_t *bdAddr, profile_connect_state_t state);
-void ConnectTgStateChangedCallback(const bd_addr_t *bdAddr, profile_connect_state_t state);
-void InitBtHeadsetEvent(void);
-
-#ifdef __cplusplus
-}
-#endif
-
+/*\r
+ * Copyright (c) CompanyNameMagicTag. 2022. All rights reserved.\r
+ * Description: BluetoothHeadsetEvent.\r
+ */\r
+#ifndef BLUETOOTH_HEADSET_EVENT_H\r
+#define BLUETOOTH_HEADSET_EVENT_H\r
+\r
+#include "bts_def.h"\r
+#include "bts_br_gap.h"\r
+#include "td_type.h"\r
+#include "bt_audio.h"\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+enum {\r
+    AVRCP_SRV_PRESS_VALUE,\r
+    AVRCP_SRV_RELEASED_VALUE,\r
+    AVRCP_SRV_INIT_VALUE\r
+};\r
+\r
+typedef struct {\r
+    td_pvoid stream_hdl;\r
+    uint8_t loc_volume;\r
+    uint8_t play_stat;\r
+    uint8_t dir_forward;\r
+    uint8_t avrcp_button_flag;\r
+    bd_addr_t bd_addr;\r
+    uint8_t reg_cap_auto;\r
+    uint8_t resrv;\r
+    profile_connect_state_t avrcp_srv_conn_stat;\r
+} BtAvrcpTgInf;\r
+\r
+void UsingPressButtonStatusCallback(td_u32 keyOperation, td_u32 keyValue);\r
+void MediaStatusCallback(bt_avrcp_tg_evt_status_param *eventStatusParam);\r
+void PressButtonStatusCallback(td_u32 keyOperation, td_u32 keyValue);\r
+void ConnCtStateChangedCallback(const bd_addr_t *bdAddr, profile_connect_state_t state);\r
+void ConnectTgStateChangedCallback(const bd_addr_t *bdAddr, profile_connect_state_t state);\r
+void InitBtHeadsetEvent(void);\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
 #endif // BLUETOOTH_HEADSET_FUNCTION_BUTTONS_HS
\ No newline at end of file
index d1df061..3e9d617 100644 (file)
@@ -1,44 +1,44 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: BluetoothItem view
- * Author:
- * Create: 2021-10-13
- */
-
-#ifndef BLUETOOTH_ITEM_VIEW_H
-#define BLUETOOTH_ITEM_VIEW_H
-
-#include "components/ui_label.h"
-#include "components/ui_view_group.h"
-#include "components/ui_image_view.h"
-#include "components/ui_label_button.h"
-#include "components/ui_image_animator.h"
-
-#include "BluetoothModel.h"
-#include "UiConfig.h"
-#define BLUETOOTH_CONNECT_IMAGE_NUM 8
-
-namespace OHOS {
-class BluetoothItemView : public UIViewGroup {
-public:
-    explicit BluetoothItemView();
-    virtual ~BluetoothItemView();
-    virtual void SetItemInfo(const BluetoothCaseInfo& itemInfo, bool isCaseList);
-    BluetoothCaseInfo *GetItemInfo(void);
-    void SetConnectionstatus(const BluetoothCaseInfo& infoData);
-    virtual void SetUpChild();
-    void ConnectAnimatorStart(void);
-    void ConnectAnimatorStop(void);
-    bool IsConnectAnimator(void);
-private:
-    ImageAnimatorInfo connectImageInfo[BLUETOOTH_CONNECT_IMAGE_NUM];
-    UIImageView image;
-    UIButton button;
-    UILabel connectStateLabel;
-    UILabel namelabel;
-    UIImageAnimatorView connectionAnimator;
-    BluetoothCaseInfo itemInfo_{};
-    void BtConnectImageAnimator();
-};
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: BluetoothItem view\r
+ * Author:\r
+ * Create: 2021-10-13\r
+ */\r
+\r
+#ifndef BLUETOOTH_ITEM_VIEW_H\r
+#define BLUETOOTH_ITEM_VIEW_H\r
+\r
+#include "components/ui_label.h"\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_image_view.h"\r
+#include "components/ui_label_button.h"\r
+#include "components/ui_image_animator.h"\r
+\r
+#include "BluetoothModel.h"\r
+#include "UiConfig.h"\r
+#define BLUETOOTH_CONNECT_IMAGE_NUM 8\r
+\r
+namespace OHOS {\r
+class BluetoothItemView : public UIViewGroup {\r
+public:\r
+    explicit BluetoothItemView();\r
+    virtual ~BluetoothItemView();\r
+    virtual void SetItemInfo(const BluetoothCaseInfo& itemInfo, bool isCaseList);\r
+    BluetoothCaseInfo *GetItemInfo(void);\r
+    void SetConnectionstatus(const BluetoothCaseInfo& infoData);\r
+    virtual void SetUpChild();\r
+    void ConnectAnimatorStart(void);\r
+    void ConnectAnimatorStop(void);\r
+    bool IsConnectAnimator(void);\r
+private:\r
+    ImageAnimatorInfo connectImageInfo[BLUETOOTH_CONNECT_IMAGE_NUM];\r
+    UIImageView image;\r
+    UIButton button;\r
+    UILabel connectStateLabel;\r
+    UILabel namelabel;\r
+    UIImageAnimatorView connectionAnimator;\r
+    BluetoothCaseInfo itemInfo_{};\r
+    void BtConnectImageAnimator();\r
+};\r
+}\r
 #endif
\ No newline at end of file
index b40294b..25c7d41 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: BluetoothModel view
- * Author:
- * Create: 2021-10-13
- */
-
-#ifndef BLUETOOTH_MODEL_H
-#define BLUETOOTH_MODEL_H
-
-#include <list>
-#include "stdio.h"
-#include "gfx_utils/list.h"
-
-#include "bts_def.h"
-#include "bts_br_gap.h"
-
-namespace OHOS {
-typedef enum : uint16_t {
-    CALLERSETTING,
-    CALLERPLAYERS,
-} CallerFactor;
-
-typedef struct {
-    unsigned char deviceName[BD_NAME_LEN]; /* Name of the device record, must be in UTF-8 */
-    unsigned char addr[BD_ADDR_LEN];
-    int16_t index;
-    int16_t connIndex;
-    int16_t temp;
-} BluetoothCaseInfo;
-class BluetoothItemView;
-class BluetoothModel {
-public:
-    ~BluetoothModel(){};
-    static BluetoothModel *GetInstance(void);
-    void Init();
-    int GetBluetoothCalleridStatus(void);
-    void SetBluetoothCalleridStatus(int16_t value);
-    // É¨ÃèÉ豸¶ÓÁгõʼ»¯
-    std::list<BluetoothCaseInfo>& GetCase();
-    void AddCase(BluetoothCaseInfo caseInfo);
-    void SetScansCaseRssi(const bd_addr_t *bdAddr, int rssi);
-    void SortScansCaseRssi();
-    void SetCaseListClear();
-    bool CheckExistScanList(BluetoothCaseInfo caseInfo); // È¥ÖزÙ×÷
-    void ResetScanDevicesCase(const BluetoothCaseInfo& caseInfo);
-    // ÒÑÅä¶ÔÉ豸¶ÓÁгõʼ»¯
-    void SetConnedDevicesListClear();
-    void AddConnedDevicesCase(BluetoothCaseInfo caseInfo);
-    bool CheckExistConnedList(BluetoothCaseInfo caseInfo);
-    List<BluetoothCaseInfo>& GetConnedDevicesCase();
-    void SetTempMacValue(BluetoothCaseInfo *caseInfo);
-    BluetoothCaseInfo *GetTempMacValue(void);
-    void SetLastConnedAddr(const bd_addr_t *addr);
-    bd_addr_t *GetLastConnedAddr(void);
-    void SetTagReconnectJump(bool tag);
-    bool GetTagReconnectJump(void);
-    void SetCurView(int16_t viewNum);
-    int GetCurView(void);
-    bool GetAclConnected(void);
-    void SetTagConnectView(bool tag);
-    bool IsTagConnectView(void);
-    void SetTagDisconnectView(bool tag);
-    bool IsTagDisconnectView(void);
-    void SetTagConnectNew(bool tag);
-    bool IsTagConnectNew(void);
-    void SetTagReturnToDeviceListView(bool tag);
-    bool IsTagReturnToDeviceListView(void);
-    void SetTagScanDeviceClicked(bool tag);
-    bool IsTagScanDeviceClicked(void);
-    void SetBtStatus(void);
-    BluetoothItemView *GetConnectionView(void);
-    void SetConnectionView(BluetoothItemView *item);
-    bool FindNameFromList(BluetoothCaseInfo *caseInfo);
-    bool GetBluetoothAclState(void);
-    void BtGapDiscoveryResultCallbakHandle(const bd_addr_t &bdAddr);
-    void BtGapAclStateChangedHandle(gap_acl_state_t state, unsigned int reason, const bd_addr_t &bdAddr);
-    bool GetAdvStartState(void);
-    void SetAdvStartState(bool state);
-private:
-    BluetoothModel();
-    int16_t callerid{0};
-    void SetUpListCase();
-    void SetUpConnedDevicesList();
-    bool FindNameByAddr(BluetoothCaseInfo &listInfo, BluetoothCaseInfo *caseInfo);
-    bool aclConnected{false};
-    BluetoothCaseInfo tempMacValue{};
-    bd_addr_t lastConnedAddr{};
-    BluetoothItemView *selectItemView{nullptr};
-    std::list<BluetoothCaseInfo> btScansDevicesList_{}; // É¨ÃèÉ豸¶ÓÁÐ
-    List<BluetoothCaseInfo> *btConnedDevicesList_{nullptr}; // ÒÑÅä¶ÔÉ豸¶ÓÁÐ
-    bool tagReconnectJump{0};
-    int16_t curView{0};
-    bool tagConnectView{true};
-    bool tagDisconnectView{true};
-    bool tagConnectNew{false};
-    bool tagReturnToDeviceListView{false};
-    bool tagScanDeviceClicked{false};
-    bool advStartState{false};
-};
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-void BtGapReadRemoteRssiEventCallback(const bd_addr_t *bdAddr, int rssi, int status);
-void BtGapDiscoveryResultCallbak(const bd_addr_t *bdAddr);
-void BtGapDiscoveryStateChangedCallback(int status);
-void GapAclStateChangedCallback(const bd_addr_t *bdAddr, gap_acl_state_t state, unsigned int reason);
-void SetSortCaseRssi(const bd_addr_t *bdAddr, int rssi);
-void BtRemoteNameChangedCallback(const bd_addr_t *bdAddr, const unsigned char *deviceName, unsigned char length);
-void BtIsAcceptConnOnSafeModeCallback(const bd_addr_t *bd_addr, bool *res);
-void BtInitCallBacks(void);
-void BtInitGatts(void);
-void BtInitSpp(void);
-void BleAdvStart(void);
-#ifdef __cplusplus
-}
-#endif
-}
-
-#endif
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: BluetoothModel view\r
+ * Author:\r
+ * Create: 2021-10-13\r
+ */\r
+\r
+#ifndef BLUETOOTH_MODEL_H\r
+#define BLUETOOTH_MODEL_H\r
+\r
+#include <list>\r
+#include "stdio.h"\r
+#include "gfx_utils/list.h"\r
+\r
+#include "bts_def.h"\r
+#include "bts_br_gap.h"\r
+\r
+namespace OHOS {\r
+typedef enum : uint16_t {\r
+    CALLERSETTING,\r
+    CALLERPLAYERS,\r
+} CallerFactor;\r
+\r
+typedef struct {\r
+    unsigned char deviceName[BD_NAME_LEN]; /* Name of the device record, must be in UTF-8 */\r
+    unsigned char addr[BD_ADDR_LEN];\r
+    int16_t index;\r
+    int16_t connIndex;\r
+    int16_t temp;\r
+} BluetoothCaseInfo;\r
+\r
+typedef struct {\r
+    void *stream_hdl;\r
+    uint8_t loc_volume;\r
+    uint8_t play_stat;\r
+    uint8_t dir_forward;\r
+    uint8_t avrcp_button_flag;\r
+    bd_addr_t bd_addr;\r
+    uint8_t reg_cap_auto;\r
+    uint8_t resrv;\r
+    profile_connect_state_t avrcp_srv_conn_stat;\r
+} BtAvrcpTgInftrerface;\r
+\r
+class BluetoothItemView;\r
+class BluetoothModel {\r
+public:\r
+    ~BluetoothModel(){};\r
+    static BluetoothModel *GetInstance(void);\r
+    void Init();\r
+    int GetBluetoothCalleridStatus(void);\r
+    void SetBluetoothCalleridStatus(int16_t value);\r
+    // É¨ÃèÉ豸¶ÓÁгõʼ»¯\r
+    std::list<BluetoothCaseInfo>& GetCase();\r
+    void AddCase(BluetoothCaseInfo caseInfo);\r
+    void SetScansCaseRssi(const bd_addr_t *bdAddr, int rssi);\r
+    void SortScansCaseRssi();\r
+    void SetCaseListClear();\r
+    bool CheckExistScanList(BluetoothCaseInfo caseInfo); // È¥ÖزÙ×÷\r
+    void ResetScanDevicesCase(const BluetoothCaseInfo& caseInfo);\r
+    // ÒÑÅä¶ÔÉ豸¶ÓÁгõʼ»¯\r
+    void SetConnedDevicesListClear();\r
+    void AddConnedDevicesCase(BluetoothCaseInfo caseInfo);\r
+    bool CheckExistConnedList(BluetoothCaseInfo caseInfo);\r
+    List<BluetoothCaseInfo>& GetConnedDevicesCase();\r
+    void SetTempMacValue(BluetoothCaseInfo *caseInfo);\r
+    BluetoothCaseInfo *GetTempMacValue(void);\r
+    void SetLastConnedAddr(const bd_addr_t *addr);\r
+    bd_addr_t *GetLastConnedAddr(void);\r
+    void SetTagReconnectJump(bool tag);\r
+    bool GetTagReconnectJump(void);\r
+    void SetCurView(int16_t viewNum);\r
+    int GetCurView(void);\r
+    bool GetAclConnected(void);\r
+    void SetTagConnectView(bool tag);\r
+    bool IsTagConnectView(void);\r
+    void SetTagDisconnectView(bool tag);\r
+    bool IsTagDisconnectView(void);\r
+    void SetTagConnectNew(bool tag);\r
+    bool IsTagConnectNew(void);\r
+    void SetTagReturnToDeviceListView(bool tag);\r
+    bool IsTagReturnToDeviceListView(void);\r
+    void SetTagScanDeviceClicked(bool tag);\r
+    bool IsTagScanDeviceClicked(void);\r
+    void SetBtStatus(void);\r
+    BluetoothItemView *GetConnectionView(void);\r
+    void SetConnectionView(BluetoothItemView *item);\r
+    bool FindNameFromList(BluetoothCaseInfo *caseInfo);\r
+    bool GetBluetoothAclState(void);\r
+    void BtGapDiscoveryResultCallbakHandle(const bd_addr_t &bdAddr);\r
+    void BtGapAclStateChangedHandle(gap_acl_state_t state, unsigned int reason, const bd_addr_t &bdAddr);\r
+    bool GetAdvStartState(void);\r
+    void SetAdvStartState(bool state);\r
+    int ConnectRemoteDevice(const bd_addr_t *addr);\r
+    bool ConnectRemoteCheck(const bd_addr_t *addr);\r
+private:\r
+    BluetoothModel();\r
+    int16_t callerid{0};\r
+    void SetUpListCase();\r
+    void SetUpConnedDevicesList();\r
+    bool FindNameByAddr(BluetoothCaseInfo &listInfo, BluetoothCaseInfo *caseInfo);\r
+    bool aclConnected{false};\r
+    BluetoothCaseInfo tempMacValue{};\r
+    bd_addr_t lastConnedAddr{};\r
+    bd_addr_t remoteConnectAddr{0};\r
+    BluetoothItemView *selectItemView{nullptr};\r
+    std::list<BluetoothCaseInfo> btScansDevicesList_{}; // É¨ÃèÉ豸¶ÓÁÐ\r
+    List<BluetoothCaseInfo> *btConnedDevicesList_{nullptr}; // ÒÑÅä¶ÔÉ豸¶ÓÁÐ\r
+    bool tagReconnectJump{0};\r
+    int16_t curView{0};\r
+    bool tagConnectView{true};\r
+    bool tagDisconnectView{true};\r
+    bool tagConnectNew{false};\r
+    bool tagReturnToDeviceListView{false};\r
+    bool tagScanDeviceClicked{false};\r
+    bool advStartState{false};\r
+};\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+void BtGapReadRemoteRssiEventCallback(const bd_addr_t *bdAddr, int rssi, int status);\r
+void BtGapDiscoveryResultCallbak(const bd_addr_t *bdAddr);\r
+void BtGapDiscoveryStateChangedCallback(int status);\r
+void GapAclStateChangedCallback(const bd_addr_t *bdAddr, gap_acl_state_t state, unsigned int reason);\r
+void SetSortCaseRssi(const bd_addr_t *bdAddr, int rssi);\r
+void BtRemoteNameChangedCallback(const bd_addr_t *bdAddr, const unsigned char *deviceName, unsigned char length);\r
+void BtIsAcceptConnOnSafeModeCallback(const bd_addr_t *bd_addr, bool *res);\r
+void BtInitCallBacks(void);\r
+void BtInitCallBacksEx(void);\r
+void BtInitGatts(void);\r
+void BtInitSpp(void);\r
+void BleAdvStart(void);\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+}\r
+\r
+#endif\r
index ecea016..836df4b 100644 (file)
@@ -1,42 +1,42 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: BluetoothOptions view
- * Author:
- * Create: 2021-10-13
- */
-#ifndef BLUETOOTH_OPTIONS_VIEW_H
-#define BLUETOOTH_OPTIONS_VIEW_H
-
-#include "components/ui_view_group.h"
-#include "components/ui_label.h"
-#include "components/ui_label_button.h"
-#include "components/ui_image_animator.h"
-#include "BluetoothCaseListAdapter.h"
-
-namespace OHOS {
-class BluetoothOptionsView {
-public:
-    BluetoothOptionsView();
-    ~BluetoothOptionsView();
-    static BluetoothOptionsView *GetInstance();
-    UIViewGroup *InitShowUpView(void);
-    UILabelButton *GetOptionsOneButton(void);
-    UILabelButton *GetUnpairButton(void);
-    void SetUnpair(void);
-    void SetBtconnect(void);
-    void SetBtDisconnect(void);
-    void SetCurrentAddr(bd_addr_t addr);
-    bd_addr_t GetCurrentAddr(void);
-    void RefreshText(void);
-private:
-    void InItTitleLabel(void);
-    void InItLabelButton(void);
-    UILabelButton *optionsOneButton{nullptr};
-    UILabelButton *unpairButton{nullptr};
-    UILabel *titleLabel{nullptr};
-    UILabel *connectStateLabel{nullptr};
-    UIViewGroup *group{nullptr};
-    bd_addr_t currentAddr;
-};
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: BluetoothOptions view\r
+ * Author:\r
+ * Create: 2021-10-13\r
+ */\r
+#ifndef BLUETOOTH_OPTIONS_VIEW_H\r
+#define BLUETOOTH_OPTIONS_VIEW_H\r
+\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_label_button.h"\r
+#include "components/ui_image_animator.h"\r
+#include "BluetoothCaseListAdapter.h"\r
+\r
+namespace OHOS {\r
+class BluetoothOptionsView {\r
+public:\r
+    BluetoothOptionsView();\r
+    ~BluetoothOptionsView();\r
+    static BluetoothOptionsView *GetInstance();\r
+    UIViewGroup *InitShowUpView(void);\r
+    UILabelButton *GetOptionsOneButton(void);\r
+    UILabelButton *GetUnpairButton(void);\r
+    void SetUnpair(void);\r
+    void SetBtconnect(void);\r
+    void SetBtDisconnect(void);\r
+    void SetCurrentAddr(bd_addr_t addr);\r
+    bd_addr_t GetCurrentAddr(void);\r
+    void RefreshText(void);\r
+private:\r
+    void InItTitleLabel(void);\r
+    void InItLabelButton(void);\r
+    UILabelButton *optionsOneButton{nullptr};\r
+    UILabelButton *unpairButton{nullptr};\r
+    UILabel *titleLabel{nullptr};\r
+    UILabel *connectStateLabel{nullptr};\r
+    UIViewGroup *group{nullptr};\r
+    bd_addr_t currentAddr;\r
+};\r
+} // namespace OHOS\r
 #endif // BLUETOOTH_OPTIONS_VIEW_H
\ No newline at end of file
index 6c3137f..a49cada 100644 (file)
@@ -1,61 +1,60 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: BluetoothPresenter view
- * Create: 2021-10-13
- */
-
-#ifndef BLUETOOTH_PRESENTER_H
-#define BLUETOOTH_PRESENTER_H
-
-#include "Presenter.h"
-#include "MainBluetoothView.h"
-#include "components/ui_view.h"
-#include "components/ui_image_view.h"
-#include "components/ui_label_button.h"
-#include "components/ui_view_group.h"
-#include "VolumeSettingView.h"
-#include "BaseView.h"
-#include "UiViewId.h"
-#include "cmsis_os.h"
-#include "KeyInputListener.h"
-#include "common/key_code.h"
-
-namespace OHOS {
-enum BluetoothPresenterNum : uint8_t {
-        BLUETOOTHEARPHONEVIEW = 0,
-        BLUETOOTHEARLISTVIEW,
-        BLUETOOTHDEVICELISTVIEW,
-        BLUETOOTHEOPTIONSVIEW,
-        BLUETOOTHRECONNECTVIEW,
-        TIPSSUCCMESSAGEVIEW,
-        TIPSCONNFAILMESSAGEVIEW,
-        TIPSFAILMESSAGEVIEW,
-        BLUETOOTHEVIEW,
-        BLUETOOTHEVIEW_MAX,
-    };
-
-class MainBluetoothView;
-class BluetoothPresenter : public Presenter<MainBluetoothView>, public UIView::OnClickListener,public RootView::OnKeyActListener,
- public UIView::OnDragListener {
-public:
-    BluetoothPresenter();
-    ~BluetoothPresenter();
-    bool OnClick(UIView &view, const ClickEvent &event) override;
-    bool OnKeyAct(UIView& view, const KeyEvent& event) override;//增加按键事件
-    static BluetoothPresenter *GetInstance();
-    bool OnDragEnd(UIView& view, const DragEvent& event) override;
-    void OnStart() override;
-    void OnPause() override;
-    void OnResume() override;
-    void OnStop() override;
-    void ClickRescanButton(void);
-    void ClickNewEquipmentButton(void);
-    void ClickCancelConnedRequestButton(void);
-    void ClickUnpairButton(void);
-    void ClickOptionsOneButton(void);
-    void ClickSuccBackButton(void);
-    void ClickFailBackButton(void);
-    void ClickConnfailBackButton(void);
-};
-} // namespace OHOS
-#endif
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: BluetoothPresenter view\r
+ * Create: 2021-10-13\r
+ */\r
+\r
+#ifndef BLUETOOTH_PRESENTER_H\r
+#define BLUETOOTH_PRESENTER_H\r
+\r
+#include "Presenter.h"\r
+#include "MainBluetoothView.h"\r
+#include "components/ui_view.h"\r
+#include "components/ui_image_view.h"\r
+#include "components/ui_label_button.h"\r
+#include "components/ui_view_group.h"\r
+#include "VolumeSettingView.h"\r
+#include "BaseView.h"\r
+#include "UiViewId.h"\r
+#include "cmsis_os.h"\r
+\r
+namespace OHOS {\r
+enum BluetoothPresenterNum : uint8_t {\r
+        BLUETOOTHEARPHONEVIEW = 0,\r
+        BLUETOOTHEARLISTVIEW,\r
+        BLUETOOTHDEVICELISTVIEW,\r
+        BLUETOOTHEOPTIONSVIEW,\r
+        BLUETOOTHRECONNECTVIEW,\r
+        TIPSSUCCMESSAGEVIEW,\r
+        TIPSCONNFAILMESSAGEVIEW,\r
+        TIPSFAILMESSAGEVIEW,\r
+        BLUETOOTHEVIEW,\r
+        BLUETOOTHEVIEW_MAX,\r
+    };\r
+\r
+class MainBluetoothView;\r
+class BluetoothPresenter : public Presenter<MainBluetoothView>, public UIView::OnClickListener,\r
+ public UIView::OnDragListener {\r
+public:\r
+    BluetoothPresenter();\r
+    ~BluetoothPresenter();\r
+    bool OnClick(UIView &view, const ClickEvent &event) override;\r
+    static BluetoothPresenter *GetInstance();\r
+    bool OnDragEnd(UIView& view, const DragEvent& event) override;\r
+    void OnStart() override;\r
+    void OnPause() override;\r
+    void OnResume() override;\r
+    void OnStop() override;\r
+    void ClickRescanButton(void);\r
+    void ClickNewEquipmentButton(void);\r
+    void ClickCancelConnedRequestButton(void);\r
+    void ClickUnpairButton(void);\r
+    void ClickOptionsOneButton(void);\r
+    void ClickSuccBackButton(void);\r
+    void ClickFailBackButton(void);\r
+    void ClickConnfailBackButton(void);\r
+private:\r
+    BluetoothModel *bluetoothMode_{nullptr};\r
+};\r
+} // namespace OHOS\r
+#endif\r
index 9f099e9..a65be70 100644 (file)
@@ -1,40 +1,40 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Bluetooth Reconnect View
- * Author:
- * Create: 2021-07-26
- */
-#ifndef BLUETOOTH_RECONNECT_VIEW_H
-#define BLUETOOTH_RECONNECT_VIEW_H
-
-
-#include "components/ui_label.h"
-#include "components/ui_image_animator.h"
-#include "components/abstract_adapter.h"
-#include "components/ui_view_group.h"
-#include "bts_def.h"
-#define BLUETOOTH_RECONNECT_IMAGE_NUM 8
-
-namespace OHOS {
-class BluetoothReconnectView {
-public:
-    BluetoothReconnectView();
-    ~BluetoothReconnectView();
-    static BluetoothReconnectView *GetInstance();
-    UIViewGroup *InitShowUpView(void);
-    void BtReconnectStart(void);
-    void BtReconnectStop(void);
-    bd_addr_t GetcurrentBdAddr(void);
-    void RefreshBluetoothNameLabel();
-private:
-    ImageAnimatorInfo reconnetImageInfo[BLUETOOTH_RECONNECT_IMAGE_NUM];
-    void ShowUpTitleLabel(void);
-    UILabel *titleLabel{nullptr};
-    UILabel *bluetoothNameLabel{nullptr};
-    UIImageAnimatorView *reconnectAnimator{nullptr};
-    UIViewGroup *group{nullptr};
-    bd_addr_t currentBdAddr;
-    void BtReconnectImageAnimator();
-};
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Bluetooth Reconnect View\r
+ * Author:\r
+ * Create: 2021-07-26\r
+ */\r
+#ifndef BLUETOOTH_RECONNECT_VIEW_H\r
+#define BLUETOOTH_RECONNECT_VIEW_H\r
+\r
+\r
+#include "components/ui_label.h"\r
+#include "components/ui_image_animator.h"\r
+#include "components/abstract_adapter.h"\r
+#include "components/ui_view_group.h"\r
+#include "bts_def.h"\r
+#define BLUETOOTH_RECONNECT_IMAGE_NUM 8\r
+\r
+namespace OHOS {\r
+class BluetoothReconnectView {\r
+public:\r
+    BluetoothReconnectView();\r
+    ~BluetoothReconnectView();\r
+    static BluetoothReconnectView *GetInstance();\r
+    UIViewGroup *InitShowUpView(void);\r
+    void BtReconnectStart(void);\r
+    void BtReconnectStop(void);\r
+    bd_addr_t GetcurrentBdAddr(void);\r
+    void RefreshBluetoothNameLabel();\r
+private:\r
+    ImageAnimatorInfo reconnetImageInfo[BLUETOOTH_RECONNECT_IMAGE_NUM];\r
+    void ShowUpTitleLabel(void);\r
+    UILabel *titleLabel{nullptr};\r
+    UILabel *bluetoothNameLabel{nullptr};\r
+    UIImageAnimatorView *reconnectAnimator{nullptr};\r
+    UIViewGroup *group{nullptr};\r
+    bd_addr_t currentBdAddr;\r
+    void BtReconnectImageAnimator();\r
+};\r
+} // namespace OHOS\r
 #endif // BLUETOOTH_RECONNECT_VIEW_H
\ No newline at end of file
index 1c966bf..a8703af 100644 (file)
@@ -1,74 +1,74 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: MainBluetooth view
- * Author:
- * Create: 2021-10-13
- */
-#ifndef MAIN_BLUETOOTH_VIEW_H
-#define MAIN_BLUETOOTH_VIEW_H
-
-#include "View.h"
-#include "BaseView.h"
-#include "UiConfig.h"
-#include "ChangeSliceListener.h"
-#include "BluetoothPresenter.h"
-#include "BluetoothCaseListAdapter.h"
-#include "BluetoothEarListView.h"
-#include "BluetoothEarPhoneView.h"
-#include "BluetoothOptionsView.h"
-#include "BluetoothReconnectView.h"
-#include "TipsConnFailMessageView.h"
-#include "TipsSuccMessageView.h"
-#include "TipsFailMessageView.h"
-#include "BluetoothDeviceListView.h"
-#include "BluetoothItemView.h"
-
-namespace OHOS {
-constexpr int16_t NUM_CONTAINER = 9; // NUM_CONTAINER :蓝牙耳机连接的9个界面容器
-
-class BluetoothPresenter;
-class MainBluetoothView;
-
-class MainBluetoothView : public View<BluetoothPresenter> {
-public:
-    MainBluetoothView();
-    virtual ~MainBluetoothView();
-
-    void OnStart() override;
-    void OnSetUpView() override;
-    void OnTearDownView() override;
-    void OnStop() override;
-    void DropView(UIView& view);
-    void ChangeView(int16_t hideView, int16_t showView);
-    static MainBluetoothView *GetInstance(void);
-
-private:
-    bool ChangeBluetoothDeviceListView(int16_t hideView, int16_t thisView);
-    bool ChangeTipsFailMessageView(int16_t hideView, int16_t thisView);
-    bool ChangeTipsConnFailMessageView(int16_t hideView, int16_t thisView);
-    bool ChangeTipsSuccMessageView(int16_t hideView, int16_t thisView);
-    bool ChangeBluetoothEarPhoneView(int16_t hideView, int16_t thisView);
-    bool ChangeBluetoothEarListView(int16_t hideView, int16_t thisView);
-    bool ChangeBluetoothView(int16_t hideView, int16_t thisView);
-    bool ChangeBluetoothOptionsView(int16_t hideView, int16_t thisView);
-    bool ChangeBluetoothReconnectView(int16_t hideView, int16_t thisView);
-    bool CheckViewParam(int16_t hideView, int16_t showView);
-    void CorrespondingJump(int16_t hideView);
-    void ResetEarListView(int16_t hideView);
-    void ChangeSettingView();
-    void DropEarPhoneView();
-    void DropEarListView();
-    BluetoothEarListView *bluetoothEarListView{nullptr}; // 耳机连接界面
-    BluetoothEarPhoneView *bluetoothEarPhoneView{nullptr}; // 搜索界面
-    BluetoothOptionsView *bluetoothOptionsView{nullptr}; // 连接状态界面
-    BluetoothReconnectView *bluetoothReconnectView{nullptr}; // 重新连接界面
-    TipsConnFailMessageView *tipsConnFailMessageView{nullptr}; // 连接失败界面
-    TipsSuccMessageView *tipsSuccMessageView{nullptr}; // 连接成功界面
-    TipsFailMessageView *tipsFailMessageView{nullptr}; // 未搜索到蓝牙耳机界面
-    BluetoothDeviceListView *bluetoothDeviceListView{nullptr}; // 蓝牙已连接设备界面
-    UIViewGroup *container[NUM_CONTAINER]{nullptr}; // NUM_CONTAINER :蓝牙耳机连接的9个界面容器
-    typedef bool (MainBluetoothView::*PreprosssChangeView)(int16_t hideView, int16_t thisView);
-    PreprosssChangeView preProcessView[NUM_CONTAINER];
-};
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: MainBluetooth view\r
+ * Author:\r
+ * Create: 2021-10-13\r
+ */\r
+#ifndef MAIN_BLUETOOTH_VIEW_H\r
+#define MAIN_BLUETOOTH_VIEW_H\r
+\r
+#include "View.h"\r
+#include "BaseView.h"\r
+#include "UiConfig.h"\r
+#include "ChangeSliceListener.h"\r
+#include "BluetoothPresenter.h"\r
+#include "BluetoothCaseListAdapter.h"\r
+#include "BluetoothEarListView.h"\r
+#include "BluetoothEarPhoneView.h"\r
+#include "BluetoothOptionsView.h"\r
+#include "BluetoothReconnectView.h"\r
+#include "TipsConnFailMessageView.h"\r
+#include "TipsSuccMessageView.h"\r
+#include "TipsFailMessageView.h"\r
+#include "BluetoothDeviceListView.h"\r
+#include "BluetoothItemView.h"\r
+\r
+namespace OHOS {\r
+constexpr int16_t NUM_CONTAINER = 9; // NUM_CONTAINER :蓝牙耳机连接的9个界面容器\r
+\r
+class BluetoothPresenter;\r
+class MainBluetoothView;\r
+\r
+class MainBluetoothView : public View<BluetoothPresenter> {\r
+public:\r
+    MainBluetoothView();\r
+    virtual ~MainBluetoothView();\r
+\r
+    void OnStart() override;\r
+    void OnSetUpView() override;\r
+    void OnTearDownView() override;\r
+    void OnStop() override;\r
+    void DropView(UIView& view);\r
+    void ChangeView(int16_t hideView, int16_t showView);\r
+    static MainBluetoothView *GetInstance(void);\r
+\r
+private:\r
+    bool ChangeBluetoothDeviceListView(int16_t hideView, int16_t thisView);\r
+    bool ChangeTipsFailMessageView(int16_t hideView, int16_t thisView);\r
+    bool ChangeTipsConnFailMessageView(int16_t hideView, int16_t thisView);\r
+    bool ChangeTipsSuccMessageView(int16_t hideView, int16_t thisView);\r
+    bool ChangeBluetoothEarPhoneView(int16_t hideView, int16_t thisView);\r
+    bool ChangeBluetoothEarListView(int16_t hideView, int16_t thisView);\r
+    bool ChangeBluetoothView(int16_t hideView, int16_t thisView);\r
+    bool ChangeBluetoothOptionsView(int16_t hideView, int16_t thisView);\r
+    bool ChangeBluetoothReconnectView(int16_t hideView, int16_t thisView);\r
+    bool CheckViewParam(int16_t hideView, int16_t showView);\r
+    void CorrespondingJump(int16_t hideView);\r
+    void ResetEarListView(int16_t hideView);\r
+    void ChangeSettingView();\r
+    void DropEarPhoneView();\r
+    void DropEarListView();\r
+    BluetoothEarListView *bluetoothEarListView{nullptr}; // 耳机连接界面\r
+    BluetoothEarPhoneView *bluetoothEarPhoneView{nullptr}; // 搜索界面\r
+    BluetoothOptionsView *bluetoothOptionsView{nullptr}; // 连接状态界面\r
+    BluetoothReconnectView *bluetoothReconnectView{nullptr}; // 重新连接界面\r
+    TipsConnFailMessageView *tipsConnFailMessageView{nullptr}; // 连接失败界面\r
+    TipsSuccMessageView *tipsSuccMessageView{nullptr}; // 连接成功界面\r
+    TipsFailMessageView *tipsFailMessageView{nullptr}; // 未搜索到蓝牙耳机界面\r
+    BluetoothDeviceListView *bluetoothDeviceListView{nullptr}; // 蓝牙已连接设备界面\r
+    UIViewGroup *container[NUM_CONTAINER]{nullptr}; // NUM_CONTAINER :蓝牙耳机连接的9个界面容器\r
+    typedef bool (MainBluetoothView::*PreprosssChangeView)(int16_t hideView, int16_t thisView);\r
+    PreprosssChangeView preProcessView[NUM_CONTAINER];\r
+};\r
+} // namespace OHOS\r
 #endif // MAIN_BLUETOOTH_VIEW_H
\ No newline at end of file
index d37ed23..d0bcc4b 100644 (file)
@@ -1,37 +1,37 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: TipsConnFailMessageView view
- * Author:
- * Create: 2021-10-13
- */
-#ifndef TIPS_CONN_FAIL_MESSAGE_VIEW_H
-#define TIPS_CONN_FAIL_MESSAGE_VIEW_H
-
-#include "components/ui_view_group.h"
-#include "components/ui_label.h"
-#include "components/ui_label_button.h"
-#include "components/ui_image_view.h"
-#include "bts_def.h"
-
-namespace OHOS {
-class TipsConnFailMessageView {
-public:
-    TipsConnFailMessageView();
-    ~TipsConnFailMessageView();
-    static TipsConnFailMessageView *GetInstance();
-    UIViewGroup *ShowUpViewInit(void);
-    void RefreshNameLabel(const bd_addr_t &bdAddr);
-private:
-    void ShowUpButtonBack(void);
-    void ShowUpTipLabel(void);
-    void InitNameLabel(void);
-    UILabel *titleLabel{nullptr};
-    UILabel *tipLabel{nullptr};
-    UILabel *tipTwoLabel{nullptr};
-    UILabel *bluetoothNameLabel{nullptr};
-    UILabelButton *backButton{nullptr};
-    UIImageView *tipImg{nullptr};
-    UIViewGroup *group{nullptr};
-};
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: TipsConnFailMessageView view\r
+ * Author:\r
+ * Create: 2021-10-13\r
+ */\r
+#ifndef TIPS_CONN_FAIL_MESSAGE_VIEW_H\r
+#define TIPS_CONN_FAIL_MESSAGE_VIEW_H\r
+\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_label_button.h"\r
+#include "components/ui_image_view.h"\r
+#include "bts_def.h"\r
+\r
+namespace OHOS {\r
+class TipsConnFailMessageView {\r
+public:\r
+    TipsConnFailMessageView();\r
+    ~TipsConnFailMessageView();\r
+    static TipsConnFailMessageView *GetInstance();\r
+    UIViewGroup *ShowUpViewInit(void);\r
+    void RefreshNameLabel(const bd_addr_t &bdAddr);\r
+private:\r
+    void ShowUpButtonBack(void);\r
+    void ShowUpTipLabel(void);\r
+    void InitNameLabel(void);\r
+    UILabel *titleLabel{nullptr};\r
+    UILabel *tipLabel{nullptr};\r
+    UILabel *tipTwoLabel{nullptr};\r
+    UILabel *bluetoothNameLabel{nullptr};\r
+    UILabelButton *backButton{nullptr};\r
+    UIImageView *tipImg{nullptr};\r
+    UIViewGroup *group{nullptr};\r
+};\r
+} // namespace OHOS\r
 #endif // TIPS_CONN_FAIL_MESSAGE_VIEW_H
\ No newline at end of file
index 35fcc6c..3420d3e 100644 (file)
@@ -1,30 +1,30 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: TipsFailMessageView view
- * Author:
- * Create: 2021-10-13
- */
-#ifndef TIPS_FAIL_MESSAGE_VIEW_H
-#define TIPS_FAIL_MESSAGE_VIEW_H
-
-#include "components/ui_view_group.h"
-#include "components/ui_label.h"
-#include "components/ui_label_button.h"
-#include "components/ui_image_view.h"
-
-namespace OHOS {
-class TipsFailMessageView {
-public:
-    TipsFailMessageView();
-    ~TipsFailMessageView();
-    static TipsFailMessageView *GetInstance();
-    UIViewGroup *ShowUpViewInit(void);
-private:
-    int ShowUpButtonBack(void);
-    UILabel *titleLabel{nullptr};
-    UILabelButton *backButton{nullptr};
-    UIImageView *tipImg{nullptr};
-    UIViewGroup *group{nullptr};
-};
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: TipsFailMessageView view\r
+ * Author:\r
+ * Create: 2021-10-13\r
+ */\r
+#ifndef TIPS_FAIL_MESSAGE_VIEW_H\r
+#define TIPS_FAIL_MESSAGE_VIEW_H\r
+\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_label_button.h"\r
+#include "components/ui_image_view.h"\r
+\r
+namespace OHOS {\r
+class TipsFailMessageView {\r
+public:\r
+    TipsFailMessageView();\r
+    ~TipsFailMessageView();\r
+    static TipsFailMessageView *GetInstance();\r
+    UIViewGroup *ShowUpViewInit(void);\r
+private:\r
+    int ShowUpButtonBack(void);\r
+    UILabel *titleLabel{nullptr};\r
+    UILabelButton *backButton{nullptr};\r
+    UIImageView *tipImg{nullptr};\r
+    UIViewGroup *group{nullptr};\r
+};\r
+} // namespace OHOS\r
 #endif // TIPS_FAIL_MESSAGE_VIEW_H
\ No newline at end of file
index 6abee12..09ed3f2 100644 (file)
@@ -1,34 +1,34 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: TipsSuccMessage view
- * Author:
- * Create: 2021-10-13
- */
-#ifndef TIPS_SUCC_MESSAGE_VIEW_H
-#define TIPS_SUCC_MESSAGE_VIEW_H
-
-#include "components/ui_view_group.h"
-#include "components/ui_label.h"
-#include "components/ui_label_button.h"
-#include "components/ui_image_view.h"
-#include "bts_def.h"
-
-namespace OHOS {
-class TipsSuccMessageView {
-public:
-    TipsSuccMessageView();
-    ~TipsSuccMessageView();
-    static TipsSuccMessageView *GetInstance();
-    UIViewGroup *ShowUpViewInit(void);
-    void RefreshNameLabel(const bd_addr_t &bdAddr);
-private:
-    void ShowUpButtonBack(void);
-    void InitNameLabel(void);
-    UILabel *titleLabel{nullptr};
-    UILabel *bluetoothNameLabel{nullptr};
-    UILabelButton *backButton{nullptr};
-    UIImageView *tipImg{nullptr};
-    UIViewGroup *group{nullptr};
-};
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: TipsSuccMessage view\r
+ * Author:\r
+ * Create: 2021-10-13\r
+ */\r
+#ifndef TIPS_SUCC_MESSAGE_VIEW_H\r
+#define TIPS_SUCC_MESSAGE_VIEW_H\r
+\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_label_button.h"\r
+#include "components/ui_image_view.h"\r
+#include "bts_def.h"\r
+\r
+namespace OHOS {\r
+class TipsSuccMessageView {\r
+public:\r
+    TipsSuccMessageView();\r
+    ~TipsSuccMessageView();\r
+    static TipsSuccMessageView *GetInstance();\r
+    UIViewGroup *ShowUpViewInit(void);\r
+    void RefreshNameLabel(const bd_addr_t &bdAddr);\r
+private:\r
+    void ShowUpButtonBack(void);\r
+    void InitNameLabel(void);\r
+    UILabel *titleLabel{nullptr};\r
+    UILabel *bluetoothNameLabel{nullptr};\r
+    UILabelButton *backButton{nullptr};\r
+    UIImageView *tipImg{nullptr};\r
+    UIViewGroup *group{nullptr};\r
+};\r
+} // namespace OHOS\r
 #endif // TIPS_SUCC_MESSAGE_VIEW_H
\ No newline at end of file
index 2f62c53..ac24bf1 100644 (file)
@@ -86,13 +86,11 @@ public:
         ret = bt_is_acl_connected(lastAddr);
         if (ret) {
             BluetoothModel::GetInstance()->SetTagConnectNew(true);
-            bool retVal = gap_disconnect_remote_device(lastAddr);
-            if (retVal == true) {
-                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Disconnect LastDevice!");
-            }
+            errcode_t retVal = gap_disconnect_remote_device(lastAddr);
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Disconnect LastDevice retVal =  %d", retVal);
         } else {
-            bool retVal = gap_connect_remote_device(&addr);
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gap_connect_remote_device ret =  %d", retVal);
+            errcode_t retVal = BluetoothModel::GetInstance()->ConnectRemoteDevice(&addr);
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectRemoteDevice ret =  %d", retVal);
         }
         // 跳转可选页
         return true;
index 3834e53..f2950ec 100644 (file)
@@ -53,13 +53,13 @@ public:
         /* 点击事件 */
         // 跳转可选页
         if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {
-        JumpView *jumpView = JumpView::GetInstance();
-        if (jumpView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceOnClick jumpView GetInstance fail");
-            return false;
-        }
-        jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW,
-                             JumpView::BluetoothJumpViewNum::BLUETOOTHEOPTIONSVIEW);
+            JumpView *jumpView = JumpView::GetInstance();
+            if (jumpView == nullptr) {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceOnClick jumpView GetInstance fail");
+                return false;
+            }
+            jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHDEVICELISTVIEW,
+                                 JumpView::BluetoothJumpViewNum::BLUETOOTHEOPTIONSVIEW);
         } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {
             MainBluetoothView *mainBluetoothView = MainBluetoothView::GetInstance();
             if (mainBluetoothView == nullptr) {
index db3ad3a..8e0c806 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: BluetoothEarList view 蓝牙耳机设备列表界面
- * Author:
- * Create: 2021-10-13
- */
-#include "BluetoothDeviceListView.h"
-#include "wearable_log.h"
-#include "UiConfig.h"
-#include "PlayersPresenter.h"
-#include "BluetoothPresenter.h"
-#include "BluetoothModel.h"
-
-namespace OHOS {
-static BluetoothDeviceListView *g_pBluetoothDeviceListView{nullptr};
-
-BluetoothDeviceListView::BluetoothDeviceListView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView::BluetoothDeviceListView");
-    g_pBluetoothDeviceListView = this;
-}
-
-BluetoothDeviceListView::~BluetoothDeviceListView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView::~BluetoothDeviceListView");
-    group->RemoveAll();
-    delete titleLabel;
-    titleLabel = nullptr;
-    delete adapterText;
-    adapterText = nullptr;
-    delete emptyLabel;
-    emptyLabel = nullptr;
-    delete list;
-    list = nullptr;
-    delete newEquipmentButton;
-    newEquipmentButton = nullptr;
-    delete group;
-    group = nullptr;
-    g_pBluetoothDeviceListView = nullptr;
-}
-
-BluetoothDeviceListView *BluetoothDeviceListView::GetInstance()
-{
-    return g_pBluetoothDeviceListView;
-}
-
-void BluetoothDeviceListView::InitList()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView::InitList");
-    // list type
-    if (adapterText == nullptr) {
-        adapterText = new BluetoothDeviceCaseListAdapter();
-        if (adapterText == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView adapterText new fail");
-            return;
-        }
-    }
-    if (list == nullptr) {
-        list = new UIList(UIList::VERTICAL);
-        if (list == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView list new fail");
-            return;
-        }
-        list->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
-        list->SetPosition(36, 118, HORIZONTAL_RESOLUTION, 241); // 36:x 118:y 454:width 241:height
-        list->SetStartIndex(0); // 0 : list start index
-        list->SetAdapter(adapterText);
-        group->Add(list);
-    }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView::InitList end");
-}
-
-void BluetoothDeviceListView::InItEmptyLabel() // 暂无已配对设备
-{
-    if (emptyLabel == nullptr) {
-        emptyLabel = new UILabel();
-        if (emptyLabel == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView emptyLabel new fail");
-            return;
-        }
-    }
-    emptyLabel->SetPosition(87, 205, 280, 45); // 87:x 205:y 280:width 45:height
-    emptyLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);
-    emptyLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);
-    emptyLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,
-        UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-    emptyLabel->SetText("暂无已配对设备");
-}
-
-UIViewGroup *BluetoothDeviceListView::GetGroup()
-{
-    return group;
-}
-
-UIList *BluetoothDeviceListView::GetDeviceUIList()
-{
-    return list;
-}
-
-void BluetoothDeviceListView::InitNewEquipmentButton()
-{
-    if (newEquipmentButton == nullptr) {
-        newEquipmentButton = new UILabelButton();
-        if (newEquipmentButton == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView newEquipmentButton new fail");
-            return;
-        }
-    }
-    newEquipmentButton->SetPosition(65, 359, 324, 101); // 65 : x, 359 : y, 324:width 101:height
-    newEquipmentButton->SetText("新设备");
-    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();
-    UIView::OnClickListener *clickListener2 = (UIView::OnClickListener *)OHOS::BluetoothPresenter::GetInstance();
-    if ((clickListener == nullptr) && (clickListener2 == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");
-        return;
-    }
-    if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {
-        newEquipmentButton->SetOnClickListener(clickListener);
-        newEquipmentButton->SetTextColor(Color::Red());
-    } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {
-        newEquipmentButton->SetOnClickListener(clickListener2);
-        newEquipmentButton->SetTextColor(Color::Blue());
-    }
-    newEquipmentButton->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);
-    newEquipmentButton->SetViewId(BLUETOOTH_NEWEQUIPMENT_BUTTON);
-    newEquipmentButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);
-}
-
-UIViewGroup *BluetoothDeviceListView::InitShowUpView()
-{
-    // 获取currentBdAddr db值 待开发
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView init");
-    if (group == nullptr) {
-        group = new UIViewGroup();
-        if (group == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");
-            return nullptr;
-        }
-    }
-    group->SetPosition(0, 0);
-    group->SetWidth(HORIZONTAL_RESOLUTION);
-    group->SetHeight(VERTICAL_RESOLUTION);
-    if (titleLabel == nullptr) {
-        titleLabel = new UILabel();
-        if (titleLabel == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView titleLabel new fail");
-            return nullptr;
-        }
-    }
-
-    titleLabel->SetPosition(135, 35, 183, 53); // 135:x 35:y 183:width 53:height
-    titleLabel->SetText("蓝牙耳机");
-    titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);
-    titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);
-    titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,
-        UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-    InitNewEquipmentButton();
-    InItEmptyLabel();
-    // 加载列表
-    InitList();
-    group->Add(newEquipmentButton);
-    group->Add(titleLabel);
-    group->Add(emptyLabel);
-
-    //增加按键监听
-       RootView::OnKeyActListener*keyactListener = (RootView::OnKeyActListener*)OHOS::BluetoothPresenter::GetInstance();
-       RootView::GetInstance()->SetOnKeyActListener(keyactListener);
-
-    UIView::OnDragListener *earDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();
-    UIView::OnDragListener *earDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();
-    if ((earDragListener == nullptr) && (earDragListener2 == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "earDragListener GetInstance fail");
-        return nullptr;
-    }
-    if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {
-        group->SetOnDragListener(earDragListener);
-    } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {
-        group->SetOnDragListener(earDragListener2);
-    }
-    group->SetViewId(BLUETOOTH_DEVICE_LIST_VIEW);
-    group->SetDraggable(true);
-    group->SetTouchable(true);
-    return group;
-}
-
-void BluetoothDeviceListView::RefreshText(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView::RefreshText");
-    List<BluetoothCaseInfo> &bluetoothConnedList = BluetoothModel::GetInstance()->GetConnedDevicesCase();
-    bool ret = bluetoothConnedList.IsEmpty();
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView::RefreshText bluetoothConnedList.IsEmpty ret = %d", ret);
-    if (ret == true) {
-        emptyLabel->SetVisible(true);
-    } else {
-        emptyLabel->SetVisible(false);
-    }
-}
-
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: BluetoothEarList view 蓝牙耳机设备列表界面\r
+ * Author:\r
+ * Create: 2021-10-13\r
+ */\r
+#include "BluetoothDeviceListView.h"\r
+#include "wearable_log.h"\r
+#include "UiConfig.h"\r
+#include "PlayersPresenter.h"\r
+#include "BluetoothPresenter.h"\r
+#include "BluetoothModel.h"\r
+\r
+namespace OHOS {\r
+static BluetoothDeviceListView *g_pBluetoothDeviceListView{nullptr};\r
+\r
+BluetoothDeviceListView::BluetoothDeviceListView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView::BluetoothDeviceListView");\r
+    g_pBluetoothDeviceListView = this;\r
+}\r
+\r
+BluetoothDeviceListView::~BluetoothDeviceListView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView::~BluetoothDeviceListView");\r
+    group->RemoveAll();\r
+    delete titleLabel;\r
+    titleLabel = nullptr;\r
+    delete adapterText;\r
+    adapterText = nullptr;\r
+    delete emptyLabel;\r
+    emptyLabel = nullptr;\r
+    delete list;\r
+    list = nullptr;\r
+    delete newEquipmentButton;\r
+    newEquipmentButton = nullptr;\r
+    delete group;\r
+    group = nullptr;\r
+    g_pBluetoothDeviceListView = nullptr;\r
+}\r
+\r
+BluetoothDeviceListView *BluetoothDeviceListView::GetInstance()\r
+{\r
+    return g_pBluetoothDeviceListView;\r
+}\r
+\r
+void BluetoothDeviceListView::InitList()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView::InitList");\r
+    // list type\r
+    if (adapterText == nullptr) {\r
+        adapterText = new BluetoothDeviceCaseListAdapter();\r
+        if (adapterText == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView adapterText new fail");\r
+            return;\r
+        }\r
+    }\r
+    if (list == nullptr) {\r
+        list = new UIList(UIList::VERTICAL);\r
+        if (list == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView list new fail");\r
+            return;\r
+        }\r
+        list->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
+        list->SetPosition(36, 118, HORIZONTAL_RESOLUTION, 241); // 36:x 118:y 454:width 241:height\r
+        list->SetStartIndex(0); // 0 : list start index\r
+        list->SetAdapter(adapterText);\r
+        group->Add(list);\r
+    }\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView::InitList end");\r
+}\r
+\r
+void BluetoothDeviceListView::InItEmptyLabel() // 暂无已配对设备\r
+{\r
+    if (emptyLabel == nullptr) {\r
+        emptyLabel = new UILabel();\r
+        if (emptyLabel == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView emptyLabel new fail");\r
+            return;\r
+        }\r
+    }\r
+    emptyLabel->SetPosition(87, 205, 280, 45); // 87:x 205:y 280:width 45:height\r
+    emptyLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);\r
+    emptyLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+    emptyLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+        UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+    emptyLabel->SetText("暂无已配对设备");\r
+}\r
+\r
+UIViewGroup *BluetoothDeviceListView::GetGroup()\r
+{\r
+    return group;\r
+}\r
+\r
+UIList *BluetoothDeviceListView::GetDeviceUIList()\r
+{\r
+    return list;\r
+}\r
+\r
+void BluetoothDeviceListView::InitNewEquipmentButton()\r
+{\r
+    if (newEquipmentButton == nullptr) {\r
+        newEquipmentButton = new UILabelButton();\r
+        if (newEquipmentButton == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView newEquipmentButton new fail");\r
+            return;\r
+        }\r
+    }\r
+    newEquipmentButton->SetPosition(65, 359, 324, 101); // 65 : x, 359 : y, 324:width 101:height\r
+    newEquipmentButton->SetText("新设备");\r
+    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();\r
+    UIView::OnClickListener *clickListener2 = (UIView::OnClickListener *)OHOS::BluetoothPresenter::GetInstance();\r
+    if ((clickListener == nullptr) && (clickListener2 == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
+        return;\r
+    }\r
+    if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
+        newEquipmentButton->SetOnClickListener(clickListener);\r
+        newEquipmentButton->SetTextColor(Color::Red());\r
+    } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
+        newEquipmentButton->SetOnClickListener(clickListener2);\r
+        newEquipmentButton->SetTextColor(Color::Blue());\r
+    }\r
+    newEquipmentButton->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);\r
+    newEquipmentButton->SetViewId(BLUETOOTH_NEWEQUIPMENT_BUTTON);\r
+    newEquipmentButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);\r
+}\r
+\r
+UIViewGroup *BluetoothDeviceListView::InitShowUpView()\r
+{\r
+    // 获取currentBdAddr db值 待开发\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView init");\r
+    if (group == nullptr) {\r
+        group = new UIViewGroup();\r
+        if (group == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
+            return nullptr;\r
+        }\r
+    }\r
+    group->SetPosition(0, 0);\r
+    group->SetWidth(HORIZONTAL_RESOLUTION);\r
+    group->SetHeight(VERTICAL_RESOLUTION);\r
+    if (titleLabel == nullptr) {\r
+        titleLabel = new UILabel();\r
+        if (titleLabel == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView titleLabel new fail");\r
+            return nullptr;\r
+        }\r
+    }\r
+\r
+    titleLabel->SetPosition(135, 35, 183, 53); // 135:x 35:y 183:width 53:height\r
+    titleLabel->SetText("蓝牙耳机");\r
+    titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);\r
+    titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+    titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+        UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+    InitNewEquipmentButton();\r
+    InItEmptyLabel();\r
+    // 加载列表\r
+    InitList();\r
+    group->Add(newEquipmentButton);\r
+    group->Add(titleLabel);\r
+    group->Add(emptyLabel);\r
+\r
+    UIView::OnDragListener *earDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
+    UIView::OnDragListener *earDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();\r
+    if ((earDragListener == nullptr) && (earDragListener2 == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "earDragListener GetInstance fail");\r
+        return nullptr;\r
+    }\r
+    if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
+        group->SetOnDragListener(earDragListener);\r
+    } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
+        group->SetOnDragListener(earDragListener2);\r
+    }\r
+    group->SetViewId(BLUETOOTH_DEVICE_LIST_VIEW);\r
+    group->SetDraggable(true);\r
+    group->SetTouchable(true);\r
+    return group;\r
+}\r
+\r
+void BluetoothDeviceListView::RefreshText(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView::RefreshText");\r
+    List<BluetoothCaseInfo> &bluetoothConnedList = BluetoothModel::GetInstance()->GetConnedDevicesCase();\r
+    bool ret = bluetoothConnedList.IsEmpty();\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothDeviceListView::RefreshText bluetoothConnedList.IsEmpty ret = %d", ret);\r
+    if (ret == true) {\r
+        emptyLabel->SetVisible(true);\r
+    } else {\r
+        emptyLabel->SetVisible(false);\r
+    }\r
+}\r
+\r
 }
\ No newline at end of file
index f36192a..daf4cf8 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: BluetoothEarList view
- * Author:
- * Create: 2021-10-13
- */
-#include "BluetoothModel.h"
-#include "BluetoothEarListView.h"
-#include "wearable_log.h"
-#include "UiConfig.h"
-#include "PlayersPresenter.h"
-#include "BluetoothPresenter.h"
-#include "SettingModel.h"
-
-namespace OHOS {
-static BluetoothEarListView *g_pBluetoothEarListView{nullptr};
-
-BluetoothEarListView::BluetoothEarListView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView::BluetoothEarListView");
-    g_pBluetoothEarListView = this;
-}
-
-BluetoothEarListView::~BluetoothEarListView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView::~BluetoothEarListView");
-    group->RemoveAll();
-    delete titleLabel;
-    titleLabel = nullptr;
-    delete adapterText;
-    adapterText = nullptr;
-    delete list;
-    list = nullptr;
-    delete rescanButton;
-    rescanButton = nullptr;
-    delete group;
-    group = nullptr;
-    g_pBluetoothEarListView = nullptr;
-}
-
-BluetoothEarListView *BluetoothEarListView::GetInstance()
-{
-    return g_pBluetoothEarListView;
-}
-
-void BluetoothEarListView::InitList()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView::InitList");
-    // list type
-    if (adapterText == nullptr) {
-        adapterText = new BluetoothCaseListAdapter();
-        if (adapterText == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView adapterText new fail");
-            return;
-        }
-    }
-    if (list == nullptr) {
-        list = new UIList(UIList::VERTICAL);
-        if (list == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView list new fail");
-            return;
-        }
-        list->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
-        list->SetPosition(36, 118, HORIZONTAL_RESOLUTION, 241); // 36:x 118:y 454:width 241:height
-        list->SetStartIndex(0); // 0 : list start index
-        list->SetAdapter(adapterText);
-        group->Add(list);
-    }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView::InitList end");
-}
-
-UIViewGroup *BluetoothEarListView::GetGroup()
-{
-    return group;
-}
-
-UIList *BluetoothEarListView::GetScanUIList()
-{
-    return list;
-}
-
-void BluetoothEarListView::SetTitleLabel(const char *text)
-{
-    titleLabel->SetText(text);
-}
-
-void BluetoothEarListView::SetNewEquipmentButtonAdd(void)
-{
-    group->Add(rescanButton);
-}
-
-void BluetoothEarListView::SetNewEquipmentButtonRemove(void)
-{
-    group->Remove(rescanButton);
-}
-
-void BluetoothEarListView::SetCancelConnedRequestButtonAdd(void)
-{
-    group->Add(cancelConnedRequestButton);
-}
-
-void BluetoothEarListView::SetCancelConnedRequestButtonRemove(void)
-{
-    group->Remove(cancelConnedRequestButton);
-}
-
-void BluetoothEarListView::InitButten(UILabelButton **button, const char *text, const char* id)
-{
-    if (*button == nullptr) {
-        *button = new UILabelButton();
-        if (*button == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView::InitButten new fail");
-            return;
-        }
-    }
-    (*button)->SetPosition(65, 359, 324, 101); // 65 : x, 359 : y, 324:width 101:height
-    (*button)->SetText(text);
-    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();
-    UIView::OnClickListener *clickListener2 = (UIView::OnClickListener *)OHOS::BluetoothPresenter::GetInstance();
-    if ((clickListener == nullptr) && (clickListener2 == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView::InitButten button GetInstance fail");
-        return;
-    }
-    if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {
-        (*button)->SetOnClickListener(clickListener);
-        (*button)->SetTextColor(Color::Red());
-    } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {
-        (*button)->SetOnClickListener(clickListener2);
-        (*button)->SetTextColor(Color::Blue());
-    }
-    (*button)->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);
-    (*button)->SetViewId(id);
-    (*button)->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);
-}
-
-UIViewGroup *BluetoothEarListView::InitShowUpView()
-{
-    // 获取currentBdAddr db值 待开发
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView init");
-    if (group == nullptr) {
-        group = new UIViewGroup();
-        if (group == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");
-            return nullptr;
-        }
-    }
-    group->SetPosition(0, 0);
-    group->SetWidth(HORIZONTAL_RESOLUTION);
-    group->SetHeight(VERTICAL_RESOLUTION);
-    if (titleLabel == nullptr) {
-        titleLabel = new UILabel();
-        if (titleLabel == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView titleLabel new fail");
-            return nullptr;
-        }
-    }
-    titleLabel->SetPosition(135, 35, 183, 53); // 135:x 35:y 183:width 53:height
-    titleLabel->SetText("正在扫描");
-    titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);
-    titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);
-    titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,
-        UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-    // 加载列表
-    InitList();
-    InitButten(&rescanButton, "重新扫描", BLUETOOTH_RESCAN_BUTTON);
-    InitButten(&cancelConnedRequestButton, "取消", BLUETOOTH_CANCELCONNEDREQUEST_BUTTON);
-    group->Add(titleLabel);
-
-    //增加按键监听
-       RootView::OnKeyActListener*keyactListener = (RootView::OnKeyActListener*)OHOS::BluetoothPresenter::GetInstance();
-       RootView::GetInstance()->SetOnKeyActListener(keyactListener);
-
-    UIView::OnDragListener *earDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();
-    UIView::OnDragListener *earDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();
-    if ((earDragListener == nullptr) && (earDragListener2 == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "earDragListener GetInstance fail");
-        return nullptr;
-    }
-    if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {
-        group->SetOnDragListener(earDragListener);
-    } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {
-        group->SetOnDragListener(earDragListener2);
-    }
-    group->SetViewId(BLUETOOTH_EARLIST_VIEW);
-    group->SetDraggable(true);
-    group->SetTouchable(true);
-    return group;
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: BluetoothEarList view\r
+ * Author:\r
+ * Create: 2021-10-13\r
+ */\r
+#include "BluetoothModel.h"\r
+#include "BluetoothEarListView.h"\r
+#include "wearable_log.h"\r
+#include "UiConfig.h"\r
+#include "PlayersPresenter.h"\r
+#include "BluetoothPresenter.h"\r
+#include "SettingModel.h"\r
+\r
+namespace OHOS {\r
+static BluetoothEarListView *g_pBluetoothEarListView{nullptr};\r
+\r
+BluetoothEarListView::BluetoothEarListView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView::BluetoothEarListView");\r
+    g_pBluetoothEarListView = this;\r
+}\r
+\r
+BluetoothEarListView::~BluetoothEarListView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView::~BluetoothEarListView");\r
+    group->RemoveAll();\r
+    delete titleLabel;\r
+    titleLabel = nullptr;\r
+    delete adapterText;\r
+    adapterText = nullptr;\r
+    delete list;\r
+    list = nullptr;\r
+    delete rescanButton;\r
+    rescanButton = nullptr;\r
+    delete group;\r
+    group = nullptr;\r
+    g_pBluetoothEarListView = nullptr;\r
+}\r
+\r
+BluetoothEarListView *BluetoothEarListView::GetInstance()\r
+{\r
+    return g_pBluetoothEarListView;\r
+}\r
+\r
+void BluetoothEarListView::InitList()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView::InitList");\r
+    // list type\r
+    if (adapterText == nullptr) {\r
+        adapterText = new BluetoothCaseListAdapter();\r
+        if (adapterText == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView adapterText new fail");\r
+            return;\r
+        }\r
+    }\r
+    if (list == nullptr) {\r
+        list = new UIList(UIList::VERTICAL);\r
+        if (list == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView list new fail");\r
+            return;\r
+        }\r
+        list->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
+        list->SetPosition(36, 118, HORIZONTAL_RESOLUTION, 241); // 36:x 118:y 454:width 241:height\r
+        list->SetStartIndex(0); // 0 : list start index\r
+        list->SetAdapter(adapterText);\r
+        group->Add(list);\r
+    }\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView::InitList end");\r
+}\r
+\r
+UIViewGroup *BluetoothEarListView::GetGroup()\r
+{\r
+    return group;\r
+}\r
+\r
+UIList *BluetoothEarListView::GetScanUIList()\r
+{\r
+    return list;\r
+}\r
+\r
+void BluetoothEarListView::SetTitleLabel(const char *text)\r
+{\r
+    titleLabel->SetText(text);\r
+}\r
+\r
+void BluetoothEarListView::SetNewEquipmentButtonAdd(void)\r
+{\r
+    group->Add(rescanButton);\r
+}\r
+\r
+void BluetoothEarListView::SetNewEquipmentButtonRemove(void)\r
+{\r
+    group->Remove(rescanButton);\r
+}\r
+\r
+void BluetoothEarListView::SetCancelConnedRequestButtonAdd(void)\r
+{\r
+    group->Add(cancelConnedRequestButton);\r
+}\r
+\r
+void BluetoothEarListView::SetCancelConnedRequestButtonRemove(void)\r
+{\r
+    group->Remove(cancelConnedRequestButton);\r
+}\r
+\r
+void BluetoothEarListView::InitButten(UILabelButton **button, const char *text, const char* id)\r
+{\r
+    if (*button == nullptr) {\r
+        *button = new UILabelButton();\r
+        if (*button == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView::InitButten new fail");\r
+            return;\r
+        }\r
+    }\r
+    (*button)->SetPosition(65, 359, 324, 101); // 65 : x, 359 : y, 324:width 101:height\r
+    (*button)->SetText(text);\r
+    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();\r
+    UIView::OnClickListener *clickListener2 = (UIView::OnClickListener *)OHOS::BluetoothPresenter::GetInstance();\r
+    if ((clickListener == nullptr) && (clickListener2 == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView::InitButten button GetInstance fail");\r
+        return;\r
+    }\r
+    if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
+        (*button)->SetOnClickListener(clickListener);\r
+        (*button)->SetTextColor(Color::Red());\r
+    } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
+        (*button)->SetOnClickListener(clickListener2);\r
+        (*button)->SetTextColor(Color::Blue());\r
+    }\r
+    (*button)->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);\r
+    (*button)->SetViewId(id);\r
+    (*button)->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);\r
+}\r
+\r
+UIViewGroup *BluetoothEarListView::InitShowUpView()\r
+{\r
+    // 获取currentBdAddr db值 待开发\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView init");\r
+    if (group == nullptr) {\r
+        group = new UIViewGroup();\r
+        if (group == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
+            return nullptr;\r
+        }\r
+    }\r
+    group->SetPosition(0, 0);\r
+    group->SetWidth(HORIZONTAL_RESOLUTION);\r
+    group->SetHeight(VERTICAL_RESOLUTION);\r
+    if (titleLabel == nullptr) {\r
+        titleLabel = new UILabel();\r
+        if (titleLabel == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarListView titleLabel new fail");\r
+            return nullptr;\r
+        }\r
+    }\r
+    titleLabel->SetPosition(135, 35, 183, 53); // 135:x 35:y 183:width 53:height\r
+    titleLabel->SetText("正在扫描");\r
+    titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);\r
+    titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+    titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+        UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+    // 加载列表\r
+    InitList();\r
+    InitButten(&rescanButton, "重新扫描", BLUETOOTH_RESCAN_BUTTON);\r
+    InitButten(&cancelConnedRequestButton, "取消", BLUETOOTH_CANCELCONNEDREQUEST_BUTTON);\r
+    group->Add(titleLabel);\r
+\r
+    UIView::OnDragListener *earDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
+    UIView::OnDragListener *earDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();\r
+    if ((earDragListener == nullptr) && (earDragListener2 == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "earDragListener GetInstance fail");\r
+        return nullptr;\r
+    }\r
+    if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
+        group->SetOnDragListener(earDragListener);\r
+    } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
+        group->SetOnDragListener(earDragListener2);\r
+    }\r
+    group->SetViewId(BLUETOOTH_EARLIST_VIEW);\r
+    group->SetDraggable(true);\r
+    group->SetTouchable(true);\r
+    return group;\r
+}\r
 }
\ No newline at end of file
index 40b0a96..e7f807c 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: BluetoothEarPhone view
- * Author:
- * Create: 2021-10-13
- */
-#include <functional>
-#include "BluetoothEarPhoneView.h"
-#include "wearable_log.h"
-#include "UiConfig.h"
-#include "BluetoothPresenter.h"
-#include "PlayersPresenter.h"
-#include "BluetoothItemView.h"
-#include "SettingModel.h"
-#include "common/image_cache_manager.h"
-#include "graphic_service.h"
-
-namespace OHOS {
-static BluetoothEarPhoneView *g_pBluetoothEarPhoneView{nullptr};
-#define BLUETOOTH_IMAGE_X 175
-#define BLUETOOTH_IMAGE_Y 175
-#define BLUETOOTH_IMAGE_WIDTH 104
-#define BLUETOOTH_IMAGE_HEIGHT 104
-#define BLUETOOTH_DELAY 200
-
-osTimerId_t g_stopScanHandle = NULL;
-static constexpr uint64_t MS_SCAN_TIME = 25000;
-
-BluetoothEarPhoneView::BluetoothEarPhoneView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BluetoothEarPhoneView");
-    g_pBluetoothEarPhoneView = this;
-}
-
-BluetoothEarPhoneView::~BluetoothEarPhoneView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::~BluetoothEarPhoneView");
-    group->RemoveAll();
-    delete titleLabel;
-    titleLabel = nullptr;
-    delete imageAnimator;
-    imageAnimator = nullptr;
-    delete group;
-    group = nullptr;
-    g_pBluetoothEarPhoneView = nullptr;
-}
-
-BluetoothEarPhoneView *BluetoothEarPhoneView::GetInstance()
-{
-    return g_pBluetoothEarPhoneView;
-}
-
-void BluetoothEarPhoneView::BtScanImageAnimator()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtScanImageAnimator init");
-    const char *searchImagePath[BLUETOOTH_SEARCH_IMAGE_NUM] = {
-        PNG_A019_080_IMAGE_PATH,
-        PNG_A019_081_IMAGE_PATH,
-        PNG_A019_082_IMAGE_PATH,
-        PNG_A019_083_IMAGE_PATH,
-        PNG_A019_084_IMAGE_PATH,
-        PNG_A019_085_IMAGE_PATH,
-        PNG_A019_086_IMAGE_PATH,
-        PNG_A019_087_IMAGE_PATH,
-    };
-
-    if (imageAnimator == nullptr) {
-        imageAnimator = new UIImageAnimatorView();
-        if (imageAnimator == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView new imageAnimator fail");
-            return;
-        }
-        for (uint8_t i = 0; i < BLUETOOTH_SEARCH_IMAGE_NUM; i++) {
-            searchImageInfo[i].imageInfo =  ImageCacheManager::GetInstance().LoadSingleRes(searchImagePath[i]);
-            searchImageInfo[i].imageType = IMG_SRC_IMAGE_INFO;
-            searchImageInfo[i].pos.x = BLUETOOTH_IMAGE_X;
-            searchImageInfo[i].pos.y = BLUETOOTH_IMAGE_Y;
-            searchImageInfo[i].width = BLUETOOTH_IMAGE_WIDTH;
-            searchImageInfo[i].height = BLUETOOTH_IMAGE_HEIGHT;
-        }
-        imageAnimator->SetPosition(175, 175, 104, 104); // 175:x 175:y 104:width 104:height
-        imageAnimator->SetImageAnimatorSrc(searchImageInfo, BLUETOOTH_SEARCH_IMAGE_NUM, BLUETOOTH_DELAY);
-        imageAnimator->SetRepeat(true);
-        group->Add(imageAnimator);
-    }
-}
-
-void BluetoothEarPhoneView::BtAnimatorStart(void)
-{
-    imageAnimator->Start();
-}
-
-void BluetoothEarPhoneView::BtAnimatorStop(void)
-{
-    imageAnimator->Stop();
-}
-
-UIViewGroup *BluetoothEarPhoneView::InitShowUpView()
-{
-    // 获取currentBdAddr db值 待开发
-    if (group == nullptr) {
-        group = new UIViewGroup();
-        if (group == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");
-            return nullptr;
-        }
-    }
-    group->SetPosition(0, 0);
-    group->SetWidth(HORIZONTAL_RESOLUTION);
-    group->SetHeight(VERTICAL_RESOLUTION);
-    if (titleLabel == nullptr) {
-        titleLabel = new UILabel();
-        if (titleLabel == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView titleLabel new fail");
-            return nullptr;
-        }
-        titleLabel->SetPosition(135, 35, 183, 53); // 135:x 35:y 183:width 53:height
-        titleLabel->SetText("正在搜索");
-        titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);
-        titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);
-        titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,
-            UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-        group->Add(titleLabel);
-    }
-    
-    //增加按键监听
-       RootView::OnKeyActListener*keyactListener = (RootView::OnKeyActListener*)OHOS::BluetoothPresenter::GetInstance();
-       RootView::GetInstance()->SetOnKeyActListener(keyactListener);
-    
-    UIView::OnDragListener *earDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();
-    UIView::OnDragListener *earDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();
-    if ((earDragListener == nullptr) && (earDragListener2 == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "earDragListener GetInstance fail");
-        return nullptr;
-    }
-    if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {
-        group->SetOnDragListener(earDragListener);
-    } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {
-        group->SetOnDragListener(earDragListener2);
-    }
-    group->SetViewId(BLUETOOTH_EAR_PHONE_VIEW);
-    // 动画
-    BtScanImageAnimator();
-    group->SetDraggable(true);
-    group->SetTouchable(true);
-    return group;
-}
-
-void CancelBrScanHandle(void)
-{
-    if (g_stopScanHandle != NULL) {
-        osStatus_t ret = osTimerDelete(g_stopScanHandle);
-        if (ret != osOK) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScanTimerCallback osTimerDelete failed, ret = %lx!!", ret);
-            return;
-        }
-        g_stopScanHandle = NULL;
-    }
-    bool results = gap_br_cancel_discovery();
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CancelBtDiscovery results %d", results);
-}
-
-void EndScanHandle(void)
-{
-    if (BluetoothModel::GetInstance()->GetCase().size() == 0) {
-        BluetoothEarPhoneView *bluetoothEarPhoneView = BluetoothEarPhoneView::GetInstance();
-        if (bluetoothEarPhoneView == nullptr) { // 暂停动画
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarPhoneView nullptr");
-            return;
-        }
-        bluetoothEarPhoneView->BtAnimatorStop();
-        if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {
-            JumpView *jumpView = JumpView::GetInstance();
-            if (jumpView == nullptr) {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");
-                return;
-            }
-            jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW,
-                                 JumpView::BluetoothJumpViewNum::TIPSFAILMESSAGEVIEW);
-        } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {
-            MainBluetoothView *mainBluetoothView = MainBluetoothView::GetInstance();
-            if (mainBluetoothView == nullptr) {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mainBluetoothView GetInstance fail");
-                return;
-                }
-            mainBluetoothView->ChangeView(BLUETOOTHEARPHONEVIEW, TIPSFAILMESSAGEVIEW);
-        }
-    } else {
-        // 按rssi信息重新排序
-        BluetoothModel::GetInstance()->SortScansCaseRssi();
-        // 刷新
-        BluetoothEarListView *bluetoothEarListView = BluetoothEarListView::GetInstance();
-        if (bluetoothEarListView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarListView nullptr");
-            return;
-        }
-        if (bluetoothEarListView->GetScanUIList() == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetScanUIList nullptr");
-            return;
-        }
-        bluetoothEarListView->GetScanUIList()->RefreshList();
-        // 扫描完成
-        bluetoothEarListView->SetTitleLabel("扫描完成");
-        bluetoothEarListView->SetNewEquipmentButtonAdd();
-        RootView::GetInstance()->Invalidate();
-    }
-}
-
-// 定时器回调函数
-static void ScanTimerCallbackProc(int data)
-{
-    (void)data;
-    CancelBrScanHandle();
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Bt scan end jumpView");
-    EndScanHandle();
-}
-
-void ScanTimerCallback(int data)
-{
-    GraphicService::GetInstance()->PostGraphicEvent(std::bind(ScanTimerCallbackProc, data));
-}
-
-// 蓝牙start
-void BluetoothEarPhoneView::BtEnable()
-{
-    bool ret;
-    bool results;
-    // 经典蓝牙扫描
-    setScanStatus(true); // 开始扫描标记
-    BluetoothModel::GetInstance()->SetCaseListClear(); // 扫描list清空
-    ret = is_bt_discovering(BT_TRANSPORT_BR_EDR);
-    if (ret == true) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BtEnable Bt is Discovering");
-        return;
-    } else {
-        results = gap_br_start_discovery();
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BtEnable StartBtDiscovery results %d", results);
-    }
-    if (g_stopScanHandle != NULL) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BtEnable g_stopScanHandle != NULL");
-        return;
-    }
-    g_stopScanHandle = osTimerNew((osTimerFunc_t)ScanTimerCallback, osTimerPeriodic, NULL, NULL);
-    if (g_stopScanHandle == NULL) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BtEnable osTimerNew failed!!");
-        return;
-    }
-    uint32 tick = osMs2Tick(MS_SCAN_TIME);
-    osStatus_t retTimer = osTimerStart(g_stopScanHandle, tick);
-    if (retTimer != osOK) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BtEnable osTimerStart failed, ret = %lx!!", retTimer);
-        if (g_stopScanHandle != NULL) {
-            retTimer = osTimerDelete(g_stopScanHandle);
-            if (retTimer != osOK) {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BtEnable osTimerDelete  ret = %lx!!", retTimer);
-                return;
-            }
-            g_stopScanHandle = NULL;
-        }
-        return;
-    }
-    return;
-}
-
-void BluetoothEarPhoneView::StopBtDiscovery(void)
-{
-    bool ret = is_bt_discovering(BT_TRANSPORT_BR_EDR);
-    if (ret == false) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Bt is not Discovering");
-        return;
-    }
-    CancelBrScanHandle();
-    return;
-}
-
-void BluetoothEarPhoneView::setScanStatus(bool value)
-{
-    scanStart = value;
-}
-bool BluetoothEarPhoneView::getScanStatus(void)
-{
-    return scanStart;
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: BluetoothEarPhone view\r
+ * Author:\r
+ * Create: 2021-10-13\r
+ */\r
+#include <functional>\r
+#include "BluetoothEarPhoneView.h"\r
+#include "wearable_log.h"\r
+#include "UiConfig.h"\r
+#include "BluetoothPresenter.h"\r
+#include "PlayersPresenter.h"\r
+#include "BluetoothItemView.h"\r
+#include "SettingModel.h"\r
+#include "common/image_cache_manager.h"\r
+#include "graphic_service.h"\r
+\r
+namespace OHOS {\r
+static BluetoothEarPhoneView *g_pBluetoothEarPhoneView{nullptr};\r
+#define BLUETOOTH_IMAGE_X 175\r
+#define BLUETOOTH_IMAGE_Y 175\r
+#define BLUETOOTH_IMAGE_WIDTH 104\r
+#define BLUETOOTH_IMAGE_HEIGHT 104\r
+#define BLUETOOTH_DELAY 200\r
+\r
+osTimerId_t g_stopScanHandle = NULL;\r
+static constexpr uint64_t MS_SCAN_TIME = 25000;\r
+\r
+BluetoothEarPhoneView::BluetoothEarPhoneView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BluetoothEarPhoneView");\r
+    g_pBluetoothEarPhoneView = this;\r
+}\r
+\r
+BluetoothEarPhoneView::~BluetoothEarPhoneView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::~BluetoothEarPhoneView");\r
+    group->RemoveAll();\r
+    delete titleLabel;\r
+    titleLabel = nullptr;\r
+    delete imageAnimator;\r
+    imageAnimator = nullptr;\r
+    delete group;\r
+    group = nullptr;\r
+    g_pBluetoothEarPhoneView = nullptr;\r
+}\r
+\r
+BluetoothEarPhoneView *BluetoothEarPhoneView::GetInstance()\r
+{\r
+    return g_pBluetoothEarPhoneView;\r
+}\r
+\r
+void BluetoothEarPhoneView::BtScanImageAnimator()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtScanImageAnimator init");\r
+    const char *searchImagePath[BLUETOOTH_SEARCH_IMAGE_NUM] = {\r
+        PNG_A019_080_IMAGE_PATH,\r
+        PNG_A019_081_IMAGE_PATH,\r
+        PNG_A019_082_IMAGE_PATH,\r
+        PNG_A019_083_IMAGE_PATH,\r
+        PNG_A019_084_IMAGE_PATH,\r
+        PNG_A019_085_IMAGE_PATH,\r
+        PNG_A019_086_IMAGE_PATH,\r
+        PNG_A019_087_IMAGE_PATH,\r
+    };\r
+\r
+    if (imageAnimator == nullptr) {\r
+        imageAnimator = new UIImageAnimatorView();\r
+        if (imageAnimator == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView new imageAnimator fail");\r
+            return;\r
+        }\r
+        for (uint8_t i = 0; i < BLUETOOTH_SEARCH_IMAGE_NUM; i++) {\r
+            searchImageInfo[i].imageInfo =  ImageCacheManager::GetInstance().LoadSingleRes(searchImagePath[i]);\r
+            searchImageInfo[i].imageType = IMG_SRC_IMAGE_INFO;\r
+            searchImageInfo[i].pos.x = BLUETOOTH_IMAGE_X;\r
+            searchImageInfo[i].pos.y = BLUETOOTH_IMAGE_Y;\r
+            searchImageInfo[i].width = BLUETOOTH_IMAGE_WIDTH;\r
+            searchImageInfo[i].height = BLUETOOTH_IMAGE_HEIGHT;\r
+        }\r
+        imageAnimator->SetPosition(175, 175, 104, 104); // 175:x 175:y 104:width 104:height\r
+        imageAnimator->SetImageAnimatorSrc(searchImageInfo, BLUETOOTH_SEARCH_IMAGE_NUM, BLUETOOTH_DELAY);\r
+        imageAnimator->SetRepeat(true);\r
+        group->Add(imageAnimator);\r
+    }\r
+}\r
+\r
+void BluetoothEarPhoneView::BtAnimatorStart(void)\r
+{\r
+    imageAnimator->Start();\r
+}\r
+\r
+void BluetoothEarPhoneView::BtAnimatorStop(void)\r
+{\r
+    imageAnimator->Stop();\r
+}\r
+\r
+UIViewGroup *BluetoothEarPhoneView::InitShowUpView()\r
+{\r
+    // 获取currentBdAddr db值 待开发\r
+    if (group == nullptr) {\r
+        group = new UIViewGroup();\r
+        if (group == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
+            return nullptr;\r
+        }\r
+    }\r
+    group->SetPosition(0, 0);\r
+    group->SetWidth(HORIZONTAL_RESOLUTION);\r
+    group->SetHeight(VERTICAL_RESOLUTION);\r
+    if (titleLabel == nullptr) {\r
+        titleLabel = new UILabel();\r
+        if (titleLabel == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView titleLabel new fail");\r
+            return nullptr;\r
+        }\r
+        titleLabel->SetPosition(135, 35, 183, 53); // 135:x 35:y 183:width 53:height\r
+        titleLabel->SetText("正在搜索");\r
+        titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);\r
+        titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+        titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+            UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+        group->Add(titleLabel);\r
+    }\r
+    UIView::OnDragListener *earDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
+    UIView::OnDragListener *earDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();\r
+    if ((earDragListener == nullptr) && (earDragListener2 == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "earDragListener GetInstance fail");\r
+        return nullptr;\r
+    }\r
+    if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
+        group->SetOnDragListener(earDragListener);\r
+    } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
+        group->SetOnDragListener(earDragListener2);\r
+    }\r
+    group->SetViewId(BLUETOOTH_EAR_PHONE_VIEW);\r
+    // 动画\r
+    BtScanImageAnimator();\r
+    group->SetDraggable(true);\r
+    group->SetTouchable(true);\r
+    return group;\r
+}\r
+\r
+void CancelBrScanHandle(void)\r
+{\r
+    if (g_stopScanHandle != NULL) {\r
+        osStatus_t ret = osTimerDelete(g_stopScanHandle);\r
+        if (ret != osOK) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScanTimerCallback osTimerDelete failed, ret = %lx!!", ret);\r
+            return;\r
+        }\r
+        g_stopScanHandle = NULL;\r
+    }\r
+    bool results = gap_br_cancel_discovery();\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CancelBtDiscovery results %d", results);\r
+}\r
+\r
+void EndScanHandle(void)\r
+{\r
+    if (BluetoothModel::GetInstance()->GetCase().size() == 0) {\r
+        BluetoothEarPhoneView *bluetoothEarPhoneView = BluetoothEarPhoneView::GetInstance();\r
+        if (bluetoothEarPhoneView == nullptr) { // 暂停动画\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarPhoneView nullptr");\r
+            return;\r
+        }\r
+        bluetoothEarPhoneView->BtAnimatorStop();\r
+        if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
+            JumpView *jumpView = JumpView::GetInstance();\r
+            if (jumpView == nullptr) {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");\r
+                return;\r
+            }\r
+            jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW,\r
+                                 JumpView::BluetoothJumpViewNum::TIPSFAILMESSAGEVIEW);\r
+        } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
+            MainBluetoothView *mainBluetoothView = MainBluetoothView::GetInstance();\r
+            if (mainBluetoothView == nullptr) {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mainBluetoothView GetInstance fail");\r
+                return;\r
+                }\r
+            mainBluetoothView->ChangeView(BLUETOOTHEARPHONEVIEW, TIPSFAILMESSAGEVIEW);\r
+        }\r
+    } else {\r
+        // 按rssi信息重新排序\r
+        BluetoothModel::GetInstance()->SortScansCaseRssi();\r
+        // 刷新\r
+        BluetoothEarListView *bluetoothEarListView = BluetoothEarListView::GetInstance();\r
+        if (bluetoothEarListView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarListView nullptr");\r
+            return;\r
+        }\r
+        if (bluetoothEarListView->GetScanUIList() == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetScanUIList nullptr");\r
+            return;\r
+        }\r
+        bluetoothEarListView->GetScanUIList()->RefreshList();\r
+        // 扫描完成\r
+        bluetoothEarListView->SetTitleLabel("扫描完成");\r
+        bluetoothEarListView->SetNewEquipmentButtonAdd();\r
+        RootView::GetInstance()->Invalidate();\r
+    }\r
+}\r
+\r
+// 定时器回调函数\r
+static void ScanTimerCallbackProc(int data)\r
+{\r
+    (void)data;\r
+    CancelBrScanHandle();\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Bt scan end jumpView");\r
+    EndScanHandle();\r
+}\r
+\r
+void ScanTimerCallback(int data)\r
+{\r
+    GraphicService::GetInstance()->PostGraphicEvent(std::bind(ScanTimerCallbackProc, data));\r
+}\r
+\r
+// 蓝牙start\r
+void BluetoothEarPhoneView::BtEnable()\r
+{\r
+    bool ret;\r
+    bool results;\r
+    // 经典蓝牙扫描\r
+    setScanStatus(true); // 开始扫描标记\r
+    BluetoothModel::GetInstance()->SetCaseListClear(); // 扫描list清空\r
+    ret = is_bt_discovering(BT_TRANSPORT_BR_EDR);\r
+    if (ret == true) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BtEnable Bt is Discovering");\r
+        return;\r
+    } else {\r
+        results = gap_br_start_discovery();\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BtEnable StartBtDiscovery results %d", results);\r
+    }\r
+    if (g_stopScanHandle != NULL) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BtEnable g_stopScanHandle != NULL");\r
+        return;\r
+    }\r
+    g_stopScanHandle = osTimerNew((osTimerFunc_t)ScanTimerCallback, osTimerPeriodic, NULL, NULL);\r
+    if (g_stopScanHandle == NULL) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BtEnable osTimerNew failed!!");\r
+        return;\r
+    }\r
+    uint32 tick = osMs2Tick(MS_SCAN_TIME);\r
+    osStatus_t retTimer = osTimerStart(g_stopScanHandle, tick);\r
+    if (retTimer != osOK) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BtEnable osTimerStart failed, ret = %lx!!", retTimer);\r
+        if (g_stopScanHandle != NULL) {\r
+            retTimer = osTimerDelete(g_stopScanHandle);\r
+            if (retTimer != osOK) {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BtEnable osTimerDelete  ret = %lx!!", retTimer);\r
+                return;\r
+            }\r
+            g_stopScanHandle = NULL;\r
+        }\r
+        return;\r
+    }\r
+    return;\r
+}\r
+\r
+void BluetoothEarPhoneView::StopBtDiscovery(void)\r
+{\r
+    bool ret = is_bt_discovering(BT_TRANSPORT_BR_EDR);\r
+    if (ret == false) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Bt is not Discovering");\r
+        return;\r
+    }\r
+    CancelBrScanHandle();\r
+    return;\r
+}\r
+\r
+void BluetoothEarPhoneView::setScanStatus(bool value)\r
+{\r
+    scanStart = value;\r
+}\r
+bool BluetoothEarPhoneView::getScanStatus(void)\r
+{\r
+    return scanStart;\r
+}\r
 }
\ No newline at end of file
index 0e163e3..6b1d6e7 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: BluetoothHeadsetEvent
- * Author:
- * Create: 2022-3-22
- */
-
-#include <BluetoothHeadsetEvent.h>
-#include "bts_avrcp_target.h"
-#include "bts_avrcp_controller.h"
-#include "PlayersModel.h"
-#include "service_id_define.h"
-#include "graphic_service.h"
-
-using namespace OHOS;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-static td_u8 g_status = 0x00;
-bt_avrcp_tg_bts_cbk g_musicBtsCbk;
-avrcp_ct_callbacks_t g_musicCtCbk;
-avrcp_tg_callbacks_t g_connStateChangedCbk;
-static profile_connect_state_t g_avrcpTgStat = {};
-
-static profile_connect_state_t BtAvrcpStat()
-{
-    return g_avrcpTgStat;
-}
-
-/* tg通知媒体状态 */
-static void BtAvrcpTgNotifyMeidaStatus(bt_avrcp_tg_evt_status_param *notifyEventStatusParam)
-{
-    if (notifyEventStatusParam == nullptr || notifyEventStatusParam->event_id >= AVRCP_NOTIFY_EVENT_RESERVED) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[BtAvrcpTgNotifyMeidaStatus] param is error");
-        return;
-    }
-    switch (notifyEventStatusParam->event_id) {
-        case AVRCP_NOTIFY_EVENT_PLAYBACK_STATUS_CHANGED:
-            avrcp_tg_notify_playback_status_changed(*(td_u8 *)notifyEventStatusParam->event_status);
-            break;
-        case AVRCP_NOTIFY_EVENT_TRACK_CHANGED:
-            avrcp_tg_notify_track_changed(*(unsigned long long *)notifyEventStatusParam->event_status);
-            break;
-        case AVRCP_NOTIFY_EVENT_TRACK_REACHED_END:
-            avrcp_tg_notify_track_reached_end();
-            break;
-        case AVRCP_NOTIFY_EVENT_TRACK_REACHED_START:
-            avrcp_tg_notify_track_reached_start();
-            break;
-        case AVRCP_NOTIFY_EVENT_PLAYBACK_POS_CHANGED:
-            avrcp_tg_notify_playback_pos_changed(*(td_u32 *)notifyEventStatusParam->event_status);
-            break;
-        case AVRCP_NOTIFY_EVENT_BATT_STATUS_CHANGED:
-        case AVRCP_NOTIFY_EVENT_SYSTEM_STATUS_CHANGED:
-        case AVRCP_NOTIFY_EVENT_PLAYER_APPLICATION_SETTING_CHANGED:
-            break;
-        case AVRCP_NOTIFY_EVENT_NOW_PLAYING_CONTENT_CHANGED:
-            avrcp_tg_notify_now_playing_content_changed();
-            break;
-        case AVRCP_NOTIFY_EVENT_AVAILABLE_PLAYERS_CHANGED:
-            avrcp_tg_notify_available_players_changed();
-            break;
-        case AVRCP_NOTIFY_EVENT_ADDRESSED_PLAYER_CHANGED:
-            avrcp_tg_notify_addressed_players_changed(*(td_u16 *)notifyEventStatusParam->event_status,
-                *(td_u16 *)(notifyEventStatusParam->event_status + sizeof(td_u16)));
-            break;
-        case AVRCP_NOTIFY_EVENT_UIDS_CHANGED:
-            avrcp_tg_notify_uid_changed(*(td_u16 *)notifyEventStatusParam->event_status);
-            break;
-        case AVRCP_NOTIFY_EVENT_VOLUME_CHANGED:
-            avrcp_tg_notify_volume_changed(*(td_u8 *)notifyEventStatusParam->event_status);
-            break;
-        case AVRCP_NOTIFY_EVENT_RESERVED:
-        default:
-            break;
-    }
-}
-
-void PressButtonStatusCallback(td_u32 keyOperation, td_u32 keyValue)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PressButtonStatusCallback]::keyValue = %x  keyOperation = %x",
-        keyValue, keyOperation);
-    // 蓝牙调节音量暂未实现
-    GraphicService::GetInstance()->PostGraphicEvent(std::bind(UsingPressButtonStatusCallback, keyOperation));
-}
-
-void UsingPressButtonStatusCallback(td_u32 keyOperation)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PressButtonStatusCallback]::keyOperation = %x", keyOperation);
-    bt_avrcp_tg_evt_status_param event;
-    switch (keyOperation) {
-        case AVRCP_KEY_VOLUME_UP: // 增加音量
-            break;
-        case AVRCP_KEY_VOLUME_DOWN: // 减小音量
-            break;
-        case AVRCP_KEY_MUTE: // 静音
-            event.event_status[0] = AVRCP_ABSOLUTE_VOLUME_PERCENTAGE_0;
-            event.event_id = AVRCP_NOTIFY_EVENT_VOLUME_CHANGED;
-            break;
-        case AVRCP_KEY_PLAY: // 播放
-            (void)PlayersModel::GetInstance()->PlayerPlay();
-            event.event_status[0] = AVRCP_PLAY_STATUS_PLAYING;
-            event.event_id = AVRCP_NOTIFY_EVENT_PLAYBACK_STATUS_CHANGED;
-            break;
-        case AVRCP_KEY_STOP: // 停止
-            (void)PlayersModel::GetInstance()->PlayerStop();
-            event.event_status[0] = AVRCP_PLAY_STATUS_STOPPED;
-            event.event_id = AVRCP_NOTIFY_EVENT_PLAYBACK_STATUS_CHANGED;
-            break;
-        case AVRCP_KEY_PAUSE: // 暂停
-            (void)PlayersModel::GetInstance()->PlayerPause();
-            event.event_status[0] = AVRCP_PLAY_STATUS_PAUSED;
-            event.event_id = AVRCP_NOTIFY_EVENT_PLAYBACK_STATUS_CHANGED;
-            break;
-        case AVRCP_KEY_FORWARD: // 下一曲
-            PlayersModel::GetInstance()->LoopingPlayout();
-            event.event_status[0] = AVRCP_PLAY_STATUS_FWD_SEEK;
-            event.event_id = AVRCP_NOTIFY_EVENT_PLAYBACK_STATUS_CHANGED;
-            break;
-        case AVRCP_KEY_BACKWARD: // 上一曲
-            PlayersModel::GetInstance()->PreviousPlayout();
-            event.event_status[0] = AVRCP_PLAY_STATUS_REV_SEEK;
-            event.event_id = AVRCP_NOTIFY_EVENT_PLAYBACK_STATUS_CHANGED;
-            break;
-        default:
-            break;
-    }
-    td_u8 status;
-    status = PlayersModel::GetInstance()->GetPlayerstatus();
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[UsingPressButtonStatusCallback] status = %d", status);
-    BtAvrcpTgNotifyMeidaStatus(&event);
-}
-
-void MediaStatusCallback(bt_avrcp_tg_evt_status_param *eventStatusParam)
-{
-    if (eventStatusParam == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[MediaStatusCallback] eventStatusParam is nullptr");
-        return;
-    }
-    g_status = PlayersModel::GetInstance()->GetPlayerstatus();
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[MediaStatusCallback] g_status = %d", g_status);
-    switch (eventStatusParam->event_id) {
-        case AVRCP_NOTIFY_EVENT_PLAYBACK_STATUS_CHANGED:
-            eventStatusParam->event_status[0] = g_status;
-            break;
-        case AVRCP_NOTIFY_EVENT_TRACK_CHANGED:
-        case AVRCP_NOTIFY_EVENT_TRACK_REACHED_END:
-            break;
-        case AVRCP_NOTIFY_EVENT_TRACK_REACHED_START:
-            break;
-        case AVRCP_NOTIFY_EVENT_PLAYBACK_POS_CHANGED:
-            eventStatusParam->event_status[0] = 0xFF;
-            break;
-        case AVRCP_NOTIFY_EVENT_BATT_STATUS_CHANGED:
-        case AVRCP_NOTIFY_EVENT_SYSTEM_STATUS_CHANGED:
-        case AVRCP_NOTIFY_EVENT_PLAYER_APPLICATION_SETTING_CHANGED:
-            break;
-        case AVRCP_NOTIFY_EVENT_NOW_PLAYING_CONTENT_CHANGED:
-            break;
-        case AVRCP_NOTIFY_EVENT_AVAILABLE_PLAYERS_CHANGED:
-            break;
-        case AVRCP_NOTIFY_EVENT_ADDRESSED_PLAYER_CHANGED:
-            break;
-        case AVRCP_NOTIFY_EVENT_UIDS_CHANGED:
-            break;
-        case AVRCP_NOTIFY_EVENT_VOLUME_CHANGED:
-            eventStatusParam->event_status[0] = g_status;
-            break;
-        case AVRCP_NOTIFY_EVENT_RESERVED:
-            break;
-        default :
-            break;
-    }
-}
-
-/* 使用地址查询Avrcp连接状态 */
-static void UsingBdaddrGetAvrcpCtStat(const bd_addr_t *bdAddr)
-{
-    if (bdAddr == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[UsingBdaddrQueryAvrcpStat] bdaddr is nullptr");
-        return;
-    }
-    g_avrcpTgStat = (profile_connect_state_t)avrcp_ct_get_device_connect_state(bdAddr);
-    switch (g_avrcpTgStat) {
-        case PROFILE_STATE_CONNECTING:
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Avrcp CT State Connecting"); // 连接中
-            break;
-        case PROFILE_STATE_CONNECTED:
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Avrcp CT State Connected"); // 连接成功
-            break;
-        case PROFILE_STATE_DISCONNECTING:
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Avrcp CT State Disconnecting"); // 正在断连
-            break;
-        case PROFILE_STATE_DISCONNECTED:
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Avrcp CT State Disconnected"); // 断开连接
-            break;
-        default:
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Invalid Tg State");
-            break;
-    }
-}
-
-/* tg连接失败 建立ct连接,该接口用于判断是否avrcp服务还存在 */
-static void ConnectBtTgAvrcpState(const bd_addr_t *bdAddr)
-{
-    int ret;
-    if (bdAddr == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[ConnectBtTgAvrcpState]::bdaddr nullptr");
-        return;
-    }
-    if (BtAvrcpStat() == PROFILE_STATE_CONNECTED) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "The tg connection is successful.");
-        return;
-    }
-    if (BtAvrcpStat() == PROFILE_STATE_DISCONNECTING || BtAvrcpStat() == PROFILE_STATE_DISCONNECTED) {
-        ret = avrcp_ct_connect(bdAddr); // 建立Ct连接
-        switch (ret) {
-            case ERRCODE_BT_NOT_READY:
-                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Ct connect not Ready"); // 未就绪
-                break;
-            case ERRCODE_BT_UNHANDLED:
-                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Unprocessed Parameters ct connect"); // 未处理的
-                break;
-            case ERRCODE_BT_BUSY:
-                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Busy unable to respond ct connect"); // 繁忙无法响应
-                break;
-            case ERRCODE_BT_FAIL:
-                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Ct connect failed"); // 失败
-                break;
-            case ERRCODE_BT_SUCCESS:
-                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Ct connect succesful"); // 成功
-                break;
-            default:
-                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Invalid parameter");
-                break;
-        }
-    }
-
-}
-
-void ConnCtStateChangedCallback(const bd_addr_t *bdAddr, profile_connect_state_t state)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ConnCtStateChangedCallback] avrcp ct update conn stat:%u", state);
-    if (bdAddr == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[ConnCtStateChangedCallback]::bdaddr nullptr");
-        return;
-    }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnCtStateChangedCallback addr: %02x%02x%02x%02x%02x%02x ",
-        bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* 5 4 3 idx */
-        bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0]); /* 2 1 0 idx */
-    UsingBdaddrGetAvrcpCtStat(bdAddr); // 查询ct连接状态
-}
-
-void ConnectTgStateChangedCallback(const bd_addr_t *bdAddr, profile_connect_state_t state)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ConnectTgStateChangedCallback] avrcp tg update conn stat:%u", state);
-    if (bdAddr == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[ConnectTgStateChangedCallback]::bdaddr nullptr");
-        return;
-    }
-    g_avrcpTgStat = state;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnCtStateChangedCallback addr: %02x%02x%02x%02x%02x%02x ",
-        bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* 5 4 3 idx */
-        bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0]); /* 2 1 0 idx */
-    ConnectBtTgAvrcpState(bdAddr); // 查询tg连接状态
-}
-
-void InitBtHeadsetEvent()
-{
-    g_musicBtsCbk.notify_pass_through_status_cbk = PressButtonStatusCallback;
-    g_musicBtsCbk.get_media_status_cbk = MediaStatusCallback;
-
-    g_connStateChangedCbk.conn_state_changed_cb = ConnectTgStateChangedCallback;
-
-    g_musicCtCbk.conn_state_changed_cb = ConnCtStateChangedCallback;
-
-    avrcp_tg_register_callbacks(&g_connStateChangedCbk);
-    avrcp_ct_register_callbacks(&g_musicCtCbk);
-    bt_avrcp_tg_register_audio_cbk(&g_musicBtsCbk);
-}
-#ifdef __cplusplus
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: BluetoothHeadsetEvent\r
+ * Author:\r
+ * Create: 2022-3-22\r
+ */\r
+\r
+#include <BluetoothHeadsetEvent.h>\r
+#include "bts_avrcp_target.h"\r
+#include "bts_avrcp_controller.h"\r
+#include "PlayersModel.h"\r
+#include "service_id_define.h"\r
+#include "graphic_service.h"\r
+\r
+using namespace OHOS;\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+#define AVRCP_CT_AUTO_REG_TYPE    1\r
+uint8_t g_avrcp_tg_local_media_vol = AVRCP_ABSOLUTE_VOLUME_INVALID;\r
+#define BT_A2DP_MEDIA_VOL_LEVEL 100\r
+\r
+bt_avrcp_tg_bts_cbk g_avrcp_tg_audio_cb;\r
+avrcp_ct_callbacks_t g_avrcp_ct_cb;\r
+avrcp_tg_callbacks_t g_avrcp_tg_cb;\r
+BtAvrcpTgInf g_avrcp_srv_inf;\r
+static profile_connect_state_t g_avrcpTgStat = {};\r
+\r
+static profile_connect_state_t BtAvrcpStat()\r
+{\r
+    return g_avrcpTgStat;\r
+}\r
+\r
+/* tg通知媒体状态 */\r
+static void BtAvrcpTgNotifyMeidaStatus(bt_avrcp_tg_evt_status_param *notifyEventStatusParam)\r
+{\r
+    if (notifyEventStatusParam == nullptr || notifyEventStatusParam->event_id >= AVRCP_NOTIFY_EVENT_RESERVED) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[BtAvrcpTgNotifyMeidaStatus] param is error");\r
+        return;\r
+    }\r
+    switch (notifyEventStatusParam->event_id) {\r
+        case AVRCP_NOTIFY_EVENT_PLAYBACK_STATUS_CHANGED:\r
+            avrcp_tg_notify_playback_status_changed(*(td_u8 *)notifyEventStatusParam->event_status);\r
+            break;\r
+        case AVRCP_NOTIFY_EVENT_TRACK_CHANGED:\r
+            avrcp_tg_notify_track_changed(*(unsigned long long *)notifyEventStatusParam->event_status);\r
+            break;\r
+        case AVRCP_NOTIFY_EVENT_TRACK_REACHED_END:\r
+            avrcp_tg_notify_track_reached_end();\r
+            break;\r
+        case AVRCP_NOTIFY_EVENT_TRACK_REACHED_START:\r
+            avrcp_tg_notify_track_reached_start();\r
+            break;\r
+        case AVRCP_NOTIFY_EVENT_PLAYBACK_POS_CHANGED:\r
+            avrcp_tg_notify_playback_pos_changed(*(td_u32 *)notifyEventStatusParam->event_status);\r
+            break;\r
+        case AVRCP_NOTIFY_EVENT_BATT_STATUS_CHANGED:\r
+        case AVRCP_NOTIFY_EVENT_SYSTEM_STATUS_CHANGED:\r
+        case AVRCP_NOTIFY_EVENT_PLAYER_APPLICATION_SETTING_CHANGED:\r
+            break;\r
+        case AVRCP_NOTIFY_EVENT_NOW_PLAYING_CONTENT_CHANGED:\r
+            avrcp_tg_notify_now_playing_content_changed();\r
+            break;\r
+        case AVRCP_NOTIFY_EVENT_AVAILABLE_PLAYERS_CHANGED:\r
+            avrcp_tg_notify_available_players_changed();\r
+            break;\r
+        case AVRCP_NOTIFY_EVENT_ADDRESSED_PLAYER_CHANGED:\r
+            avrcp_tg_notify_addressed_players_changed(*(td_u16 *)notifyEventStatusParam->event_status,\r
+                *(td_u16 *)(notifyEventStatusParam->event_status + sizeof(td_u16)));\r
+            break;\r
+        case AVRCP_NOTIFY_EVENT_UIDS_CHANGED:\r
+            avrcp_tg_notify_uid_changed(*(td_u16 *)notifyEventStatusParam->event_status);\r
+            break;\r
+        case AVRCP_NOTIFY_EVENT_VOLUME_CHANGED:\r
+            avrcp_tg_notify_volume_changed(*(td_u8 *)notifyEventStatusParam->event_status);\r
+            break;\r
+        case AVRCP_NOTIFY_EVENT_RESERVED:\r
+        default:\r
+            break;\r
+    }\r
+}\r
+\r
+void PressButtonStatusCallback(td_u32 keyOperation, td_u32 keyValue)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[PressButtonStatusCallback]::keyValue = %x  keyOperation = %x",\r
+        keyValue, keyOperation);\r
+    GraphicService::GetInstance()->PostGraphicEvent(std::bind(UsingPressButtonStatusCallback, keyOperation, keyValue));\r
+}\r
+\r
+void BtAvrcpTgNotifyVolumeChangedProc(uint8_t a2dp_volume)\r
+{\r
+    int32_t audio_volume = a2dp_volume * BT_A2DP_MEDIA_VOL_LEVEL / AVRCP_ABSOLUTE_VOLUME_PERCENTAGE_100;\r
+    AudioManager::GetInstance().SetVolume(AUDIO_STREAM_MUSIC, audio_volume);\r
+}\r
+\r
+void UsingPressButtonStatusCallback(td_u32 keyOperation, td_u32 keyValue)\r
+{\r
+    bt_avrcp_tg_evt_status_param event;\r
+    switch (keyOperation) {\r
+        case AVRCP_KEY_VOLUME_UP: // 耳机控制手表加减音量不走key_operation事件\r
+        case AVRCP_KEY_VOLUME_DOWN: // 减小音量\r
+            break;\r
+        case AVRCP_KEY_MUTE: // 静音\r
+            event.event_status[0] = AVRCP_ABSOLUTE_VOLUME_PERCENTAGE_0;\r
+            event.event_id = AVRCP_NOTIFY_EVENT_VOLUME_CHANGED;\r
+            break;\r
+        case AVRCP_KEY_PLAY: // 播放\r
+            (void)PlayersModel::GetInstance()->PlayerPlay();\r
+            event.event_status[0] = AVRCP_PLAY_STATUS_PLAYING;\r
+            event.event_id = AVRCP_NOTIFY_EVENT_PLAYBACK_STATUS_CHANGED;\r
+            break;\r
+        case AVRCP_KEY_STOP: // 停止\r
+            (void)PlayersModel::GetInstance()->PlayerStop();\r
+            event.event_status[0] = AVRCP_PLAY_STATUS_STOPPED;\r
+            event.event_id = AVRCP_NOTIFY_EVENT_PLAYBACK_STATUS_CHANGED;\r
+            break;\r
+        case AVRCP_KEY_PAUSE: // 暂停\r
+            (void)PlayersModel::GetInstance()->PlayerPause();\r
+            event.event_status[0] = AVRCP_PLAY_STATUS_PAUSED;\r
+            event.event_id = AVRCP_NOTIFY_EVENT_PLAYBACK_STATUS_CHANGED;\r
+            break;\r
+        case AVRCP_KEY_FORWARD: // 下一曲\r
+            PlayersModel::GetInstance()->LoopingPlayout();\r
+            event.event_status[0] = AVRCP_PLAY_STATUS_FWD_SEEK;\r
+            event.event_id = AVRCP_NOTIFY_EVENT_PLAYBACK_STATUS_CHANGED;\r
+            break;\r
+        case AVRCP_KEY_BACKWARD: // 上一曲\r
+            PlayersModel::GetInstance()->PreviousPlayout();\r
+            event.event_status[0] = AVRCP_PLAY_STATUS_REV_SEEK;\r
+            event.event_id = AVRCP_NOTIFY_EVENT_PLAYBACK_STATUS_CHANGED;\r
+            break;\r
+        case AVRCP_NOTIFY_EVENT_VOLUME_CHANGED:\r
+            /* 手机连接手表场景,控制手表喇叭声音 */\r
+            event.event_status[0] = keyValue;\r
+            event.event_id = AVRCP_NOTIFY_EVENT_VOLUME_CHANGED;\r
+            BtAvrcpTgNotifyVolumeChangedProc((uint8_t)keyValue);\r
+        default:\r
+            break;\r
+    }\r
+\r
+    BtAvrcpTgNotifyMeidaStatus(&event);\r
+}\r
+\r
+uint8_t BtAvrcpTgGetLocMediaVolume(void)\r
+{\r
+    uint32_t audio_volume = AudioManager::GetInstance().GetVolume(AUDIO_STREAM_MUSIC);\r
+    uint8_t a2dp_volume = audio_volume * AVRCP_ABSOLUTE_VOLUME_PERCENTAGE_100 / BT_A2DP_MEDIA_VOL_LEVEL;\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "get local media volume, a2dp_volume = 0x%x", a2dp_volume);\r
+    return a2dp_volume;\r
+}\r
+\r
+void MediaStatusCallback(bt_avrcp_tg_evt_status_param *eventStatusParam)\r
+{\r
+    if (eventStatusParam == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "eventStatusParam is nullptr");\r
+        return;\r
+    }\r
+\r
+    int32_t playerStatus = PlayersModel::GetInstance()->GetPlayerstatus();\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playerStatus = %d", playerStatus);\r
+\r
+    switch (eventStatusParam->event_id) {\r
+        case AVRCP_NOTIFY_EVENT_PLAYBACK_STATUS_CHANGED:\r
+            eventStatusParam->event_status[0] = playerStatus;\r
+            break;\r
+        case AVRCP_NOTIFY_EVENT_TRACK_CHANGED:\r
+        case AVRCP_NOTIFY_EVENT_TRACK_REACHED_END:\r
+            break;\r
+        case AVRCP_NOTIFY_EVENT_TRACK_REACHED_START:\r
+            break;\r
+        case AVRCP_NOTIFY_EVENT_PLAYBACK_POS_CHANGED:\r
+            eventStatusParam->event_status[0] = 0xFF;\r
+            break;\r
+        case AVRCP_NOTIFY_EVENT_BATT_STATUS_CHANGED:\r
+        case AVRCP_NOTIFY_EVENT_SYSTEM_STATUS_CHANGED:\r
+        case AVRCP_NOTIFY_EVENT_PLAYER_APPLICATION_SETTING_CHANGED:\r
+            break;\r
+        case AVRCP_NOTIFY_EVENT_NOW_PLAYING_CONTENT_CHANGED:\r
+            break;\r
+        case AVRCP_NOTIFY_EVENT_AVAILABLE_PLAYERS_CHANGED:\r
+            break;\r
+        case AVRCP_NOTIFY_EVENT_ADDRESSED_PLAYER_CHANGED:\r
+            break;\r
+        case AVRCP_NOTIFY_EVENT_UIDS_CHANGED:\r
+            break;\r
+        case AVRCP_NOTIFY_EVENT_VOLUME_CHANGED:\r
+            eventStatusParam->event_status[0] = BtAvrcpTgGetLocMediaVolume();\r
+            break;\r
+        case AVRCP_NOTIFY_EVENT_RESERVED:\r
+            break;\r
+        default :\r
+            break;\r
+    }\r
+}\r
+\r
+void ConnCtStateChangedCallback(const bd_addr_t *bdAddr, profile_connect_state_t state)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "avrcp ct update conn stat:%u", state);\r
+    if (bdAddr == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bdaddr nullptr");\r
+        return;\r
+    }\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnCtStateChangedCallback addr: %02x%02x%02x%02x%02x%02x ",\r
+        bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* 5 4 3 idx */\r
+        bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0]); /* 2 1 0 idx */\r
+    (void)memcpy_s(g_avrcp_srv_inf.bd_addr.addr, BD_ADDR_LEN, bdAddr->addr, BD_ADDR_LEN);\r
+    g_avrcp_srv_inf.avrcp_srv_conn_stat = state;\r
+}\r
+\r
+static bd_addr_t *BtAvrcpSrvGetActiveAddr(void)\r
+{\r
+    return &g_avrcp_srv_inf.bd_addr;\r
+}\r
+\r
+void ConnectTgStateChangedCallback(const bd_addr_t *bdAddr, profile_connect_state_t state)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "avrcp tg update conn stat:%u", state);\r
+    if (bdAddr == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bdaddr nullptr");\r
+        return;\r
+    }\r
+    g_avrcpTgStat = state;\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnCtStateChangedCallback addr: %02x%02x%02x%02x%02x%02x ",\r
+        bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* 5 4 3 idx */\r
+        bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0]); /* 2 1 0 idx */\r
+    (void)memcpy_s(g_avrcp_srv_inf.bd_addr.addr, BD_ADDR_LEN, bdAddr->addr, BD_ADDR_LEN);\r
+    g_avrcp_srv_inf.avrcp_srv_conn_stat = state;\r
+\r
+    /* 手表耳机链接场景时,耳机控制音量是一个事件而非key_operation,故需要在手表侧向耳机注册音量变更事件 */\r
+    if (state == PROFILE_STATE_CONNECTED) {\r
+        (void)avrcp_ct_get_supported_events(BtAvrcpSrvGetActiveAddr());\r
+    }\r
+}\r
+\r
+static void BtAvrcpCtPressButtonRspCallback(const bd_addr_t *bd_addr, int32_t key_operation)\r
+{\r
+    if (bd_addr == NULL) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "null pointer\n");\r
+        return;\r
+    }\r
+    if (g_avrcp_srv_inf.avrcp_button_flag == AVRCP_SRV_RELEASED_VALUE) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "avrcp ct press button button_flag change:%u->%u\n",\r
+            g_avrcp_srv_inf.avrcp_button_flag, AVRCP_SRV_PRESS_VALUE);\r
+        g_avrcp_srv_inf.avrcp_button_flag = AVRCP_SRV_PRESS_VALUE;\r
+    }\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "avrcp ct press button cbk key:%d button_flag:%u\n",\r
+        key_operation, g_avrcp_srv_inf.avrcp_button_flag);\r
+}\r
+\r
+static void BtAvrcpPressReleaseButtonLog(uint32_t key_operation)\r
+{\r
+    switch (key_operation) {\r
+        case AVRCP_KEY_VOLUME_UP:\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AVRCP_KEY_VOLUME_UP\n");\r
+            break;\r
+        case AVRCP_KEY_VOLUME_DOWN:\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AVRCP_KEY_VOLUME_DOWN\n");\r
+            break;\r
+        case AVRCP_KEY_MUTE:\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AVRCP_KEY_VOLUME_MUTE\n");\r
+            break;\r
+        case AVRCP_KEY_PLAY:\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AVRCP_KEY_PLAY\n");\r
+            break;\r
+        case AVRCP_KEY_STOP:\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AVRCP_KEY_STOP\n");\r
+            break;\r
+        case AVRCP_KEY_PAUSE:\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AVRCP_KEY_PAUSE\n");\r
+            break;\r
+        case AVRCP_KEY_FORWARD:\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AVRCP_KEY_FORWARD\n");\r
+            break;\r
+        case AVRCP_KEY_BACKWARD:\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AVRCP_KEY_BACKWARD\n");\r
+            break;\r
+        case AVRCP_NOTIFY_EVENT_VOLUME_CHANGED:\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AVRCP_EVENT_VOLUME_CHANGED\n");\r
+            break;\r
+        default:\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "invalid\n");\r
+            break;\r
+    }\r
+}\r
+\r
+static void BtAvrcpCtReleaseButtonRspCallback(const bd_addr_t *bd_addr, int32_t key_operation)\r
+{\r
+    UNUSED(bd_addr);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "avrcp ct release button cbk key:%d\n", key_operation);\r
+    if (g_avrcp_srv_inf.avrcp_button_flag == AVRCP_SRV_PRESS_VALUE) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "avrcp ct released button button_flag change:%u->%u\n",\r
+            g_avrcp_srv_inf.avrcp_button_flag, AVRCP_SRV_RELEASED_VALUE);\r
+        g_avrcp_srv_inf.avrcp_button_flag = AVRCP_SRV_RELEASED_VALUE;\r
+    }\r
+    BtAvrcpPressReleaseButtonLog((uint32_t)key_operation);\r
+}\r
+\r
+static void BtAvrcpCtSupportCompanyCallback(const bd_addr_t *bd_addr, avrcp_ct_support_company_para_t *company)\r
+{\r
+    if (bd_addr == NULL || company == NULL || company->company_id == NULL) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,  "null pointer\n");\r
+        return;\r
+    }\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "get company list:");\r
+    for (uint8_t i = 0; i < company->company_num; i++) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " 0x%x ", *company->company_id);\r
+    }\r
+}\r
+\r
+static void BtAvrcpCtSupportEventCallback(const bd_addr_t *bd_addr, avrcp_ct_support_event_para_t *event)\r
+{\r
+    if (bd_addr == NULL || event == NULL || event->event_id == NULL) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "null pointer\n");\r
+        return;\r
+    }\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "get event list:");\r
+    for (uint8_t i = 0; i < event->event_num; i++) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " 0x%x ", event->event_id[i]);\r
+    }\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "\n");\r
+\r
+    for (uint8_t i = 0; i < event->event_num; i++) {\r
+        avrcp_ct_register_notification(bd_addr, event->event_id[i], 0);\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "register event_id: 0x%x\n", event->event_id[i]);\r
+    }\r
+}\r
+\r
+static void BtAvrcpCtGetElementAttriCallback(const bd_addr_t *bd_addr, avrcp_ct_element_attr_para_cb_t *attr_cb_para)\r
+{\r
+    if (bd_addr == NULL || attr_cb_para == NULL || attr_cb_para->attr_value == NULL) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "null pointer\n");\r
+        return;\r
+    }\r
+\r
+    for (uint8_t i = 0; i < attr_cb_para->attr_num; i++) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "attrId-charaId-valLen: 0x%x-0x%x-%u \n",\r
+            attr_cb_para->attr_value[i].attr_id,\r
+            attr_cb_para->attr_value[i].character_set_id,\r
+            attr_cb_para->attr_value[i].value_len);\r
+        switch (attr_cb_para->attr_value[i].attr_id) {\r
+            case AVRCP_CT_ELEMENT_ATTR_TITLE:\r
+                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Attr Title:");\r
+                break;\r
+            case AVRCP_CT_ELEMENT_ATTR_ARTIST_NAME:\r
+                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Attr Name:");\r
+                break;\r
+            case AVRCP_CT_ELEMENT_ATTR_ALBUM_NAME:\r
+                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Attr Album:");\r
+                break;\r
+            case AVRCP_CT_ELEMENT_ATTR_TRACK_NUMBER:\r
+                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Attr Track Number:");\r
+                break;\r
+            case AVRCP_CT_ELEMENT_ATTR_TOTAL_NUMBER_OF_TRACKS:\r
+                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Attr Total Number Of Track:");\r
+                break;\r
+            case AVRCP_CT_ELEMENT_ATTR_TRACK_GENRE:\r
+                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Attr Track GENRE:");\r
+                break;\r
+            case AVRCP_CT_ELEMENT_ATTR_TRACK_PLAYING_TIME:\r
+                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Attr Track Playing Time_ms:");\r
+                break;\r
+            default:\r
+                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Other:");\r
+                break;\r
+        }\r
+\r
+        uint8_t *value = (uint8_t *)(void *)malloc(attr_cb_para->attr_value[i].value_len + 1);\r
+        if (attr_cb_para->attr_value[i].value_len > 0 &&  attr_cb_para->attr_value[i].value != NULL) {\r
+            if (memcpy_s(value, attr_cb_para->attr_value[i].value_len,\r
+                attr_cb_para->attr_value[i].value, attr_cb_para->attr_value[i].value_len) != EOK) {\r
+                free(value);\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "memcpy_s fail.");\r
+                return;\r
+            }\r
+        }\r
+        value[attr_cb_para->attr_value[i].value_len] = '\0';\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " %s \n", value);\r
+        free(value);\r
+    }\r
+}\r
+\r
+static void BtAvrcpCtGetPlayStatusCallback(const bd_addr_t *bd_addr, avrcp_ct_play_status_cb_t *status)\r
+{\r
+    if (bd_addr == NULL || status == NULL) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "null pointer\n");\r
+        return;\r
+    }\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "test get play status songlen:%u, songpos:%u, playstatus:%u:",\r
+        status->song_length, status->song_position, status->play_status);\r
+}\r
+\r
+static void BtAvrcpCtHdlNotifyVolumeRspCbk(avrcp_ct_notification_value_cb_t *notification)\r
+{\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "Set local volume: 0x%x\n", notification->volume); /* 注册事件后通知的音量 */\r
+    BtAvrcpTgNotifyVolumeChangedProc((uint8_t)notification->volume);\r
+}\r
+\r
+static void BtAvrcpCtNotificationCallback(\r
+    const bd_addr_t *bd_addr, avrcp_notify_event_t event_id, avrcp_ct_notification_value_cb_t *notification)\r
+{\r
+    if (bd_addr == NULL || notification == NULL) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "null pointer\n");\r
+        return;\r
+    }\r
+\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ct notification cbk event_id:0x%x\n", event_id);\r
+    bool notify_flag = true;\r
+    switch (event_id) {\r
+        case AVRCP_NOTIFY_EVENT_PLAYBACK_STATUS_CHANGED:\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "tg notify ct playback status changed :%u\n",\r
+                notification->play_status);\r
+            break;\r
+        case AVRCP_NOTIFY_EVENT_VOLUME_CHANGED:\r
+            BtAvrcpCtHdlNotifyVolumeRspCbk(notification);\r
+            break;\r
+        case AVRCP_NOTIFY_EVENT_NOW_PLAYING_CONTENT_CHANGED:\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "play conent changed event_id:0x%x\n", event_id);\r
+            break;\r
+        case AVRCP_NOTIFY_EVENT_TRACK_CHANGED:\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "track changed event_id:0x%x\n", event_id);\r
+            break;\r
+        case AVRCP_NOTIFY_EVENT_TRACK_REACHED_END:\r
+        case AVRCP_NOTIFY_EVENT_TRACK_REACHED_START:\r
+        case AVRCP_NOTIFY_EVENT_PLAYBACK_POS_CHANGED:\r
+        case AVRCP_NOTIFY_EVENT_BATT_STATUS_CHANGED:\r
+        case AVRCP_NOTIFY_EVENT_SYSTEM_STATUS_CHANGED:\r
+        case AVRCP_NOTIFY_EVENT_PLAYER_APPLICATION_SETTING_CHANGED:\r
+        case AVRCP_NOTIFY_EVENT_AVAILABLE_PLAYERS_CHANGED:\r
+        case AVRCP_NOTIFY_EVENT_ADDRESSED_PLAYER_CHANGED:\r
+        case AVRCP_NOTIFY_EVENT_UIDS_CHANGED:\r
+        case AVRCP_NOTIFY_EVENT_RESERVED:\r
+        default:\r
+            notify_flag = false;\r
+            WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "invalid event id event_id:0x%x\n", event_id);\r
+            break;\r
+    }\r
+    if (notify_flag) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "notify reg event_id: 0x%x\n", event_id);\r
+        avrcp_ct_register_notification(bd_addr, event_id, 0); /* TG通知变化后CT重新注册事件 */\r
+    }\r
+}\r
+\r
+void InitBtHeadsetEvent()\r
+{\r
+    g_avrcp_tg_audio_cb.notify_pass_through_status_cbk = PressButtonStatusCallback;\r
+    g_avrcp_tg_audio_cb.get_media_status_cbk = MediaStatusCallback;\r
+\r
+    g_avrcp_tg_cb.conn_state_changed_cb = ConnectTgStateChangedCallback;\r
+\r
+    g_avrcp_ct_cb.conn_state_changed_cb = ConnCtStateChangedCallback;\r
+    g_avrcp_ct_cb.press_button_cb = BtAvrcpCtPressButtonRspCallback;\r
+    g_avrcp_ct_cb.release_button_cb = BtAvrcpCtReleaseButtonRspCallback;\r
+    g_avrcp_ct_cb.supported_companies_cb = BtAvrcpCtSupportCompanyCallback;\r
+    g_avrcp_ct_cb.supported_event_cb = BtAvrcpCtSupportEventCallback;\r
+    g_avrcp_ct_cb.element_attr_cb = BtAvrcpCtGetElementAttriCallback;\r
+    g_avrcp_ct_cb.play_status_cb = BtAvrcpCtGetPlayStatusCallback;\r
+    g_avrcp_ct_cb.notification_cb = BtAvrcpCtNotificationCallback;\r
+\r
+    avrcp_tg_register_callbacks(&g_avrcp_tg_cb);\r
+    avrcp_ct_register_callbacks(&g_avrcp_ct_cb);\r
+    bt_avrcp_tg_register_audio_cbk(&g_avrcp_tg_audio_cb);\r
+}\r
+#ifdef __cplusplus\r
+}\r
 #endif
\ No newline at end of file
index c59b333..5f668e7 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: BluetoothItem view
- * Author:
- * Create: 2021-10-13
- */
-
-#include "BluetoothItemView.h"
-#include "wearable_log.h"
-#include "UiConfig.h"
-#include "common/image_cache_manager.h"
-
-namespace OHOS {
-constexpr uint16_t BUTTON_WIDTH = 351;
-constexpr uint16_t BUTTON_HEIGHT = 81;
-constexpr uint16_t IMAGE_WIDTH = 81;
-constexpr uint16_t IMAGE_HEIGHT = 81;
-constexpr uint16_t LABEL_HEIGHT = 81;
-constexpr uint16_t LABEL_WIDTH = 189;
-constexpr uint16_t BLELIST_BUTTON_HEIGHT = 81;
-
-#define BLUETOOTH_CONNECT_DELAY 200
-#define BLUETOOTH_CONNECT_X 294
-#define BLUETOOTH_CONNECT_Y 0
-#define BLUETOOTH_CONNECT_WIDTH 81
-#define BLUETOOTH_CONNECT_HEIGHT 81
-
-BluetoothItemView::BluetoothItemView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothItemView::BluetoothItemView");
-    SetPosition(53, 106, 375, 81); // 53:x 106:y 375:width 81:height
-    SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
-    SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);
-    SetUpChild();
-    SetTouchable(true);
-
-    Add(&button);
-    Add(&connectStateLabel);
-    Add(&namelabel);
-    Add(&image);
-    Add(&connectionAnimator);
-}
-
-BluetoothItemView::~BluetoothItemView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothItemView::~BluetoothItemView");
-    Remove(&connectStateLabel);
-    Remove(&button);
-    Remove(&namelabel);
-    Remove(&image);
-    Remove(&connectionAnimator);
-}
-
-void BluetoothItemView::SetUpChild()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothItemView::SetUpChild");
-    button.Resize(BUTTON_WIDTH, BUTTON_HEIGHT); // 351:Width
-    button.SetImageSrc(PNG_BT_LIST, PNG_BT_LIST); // 跳转图片
-    button.SetImagePosition(24, 0); // 24: lable x-coordinate
-
-    namelabel.SetPosition(105, 0); // 105:x 0:y
-    namelabel.Resize(LABEL_WIDTH, LABEL_HEIGHT);
-    namelabel.SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);
-    namelabel.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30: means font size
-    namelabel.SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);
-    namelabel.SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,
-        UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-
-    image.SetPosition(0, 0, IMAGE_WIDTH, IMAGE_HEIGHT); // 0:x 0:y
-    image.SetSrc(PNG_BLUETOOTHEAR);
-    BtConnectImageAnimator();
-}
-
-void BluetoothItemView::SetItemInfo(const BluetoothCaseInfo& itemInfo, bool isCaseList)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothItemView::SetItemInfo");
-    itemInfo_ = itemInfo;
-    namelabel.SetText(reinterpret_cast<const char *>(itemInfo_.deviceName));
-    if (isCaseList == true) {
-        bool ret = BluetoothModel::GetInstance()->IsTagScanDeviceClicked();
-        if ((IsConnectAnimator() == false) && (ret == true)) {
-            namelabel.SetStyle(STYLE_TEXT_COLOR, Color::Gray().full);
-            button.SetTouchable(false);
-            SetTouchable(false);
-        } else {
-            namelabel.SetStyle(STYLE_TEXT_COLOR, Color::White().full);
-            button.SetTouchable(true);
-            SetTouchable(true);
-        }
-    }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gap_connect_remote_device index =  %d", GetViewIndex());
-}
-
-BluetoothCaseInfo *BluetoothItemView::GetItemInfo(void)
-{
-    return &itemInfo_;
-}
-
-void BluetoothItemView::SetConnectionstatus(const BluetoothCaseInfo& infoData)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothItemView::SetConnectionstatus");
-    connectStateLabel.SetPosition(105, 0); // 105:x 0:y
-    connectStateLabel.Resize(LABEL_WIDTH, LABEL_HEIGHT);
-    connectStateLabel.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30: means font size
-    connectStateLabel.SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);
-    connectStateLabel.SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,
-                               UITextLanguageAlignment::TEXT_ALIGNMENT_BOTTOM);
-    bool aclConnected = bt_is_acl_connected((const bd_addr_t*)&infoData.addr);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothItemView::SetConnectionstatus aclConnected %d", aclConnected);
-    if (aclConnected) {
-        connectStateLabel.SetText("已连接");
-    } else {
-        connectStateLabel.SetText("已断开");
-    }
-    namelabel.SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,
-                       UITextLanguageAlignment::TEXT_ALIGNMENT_TOP);
-    namelabel.Invalidate();
-}
-
-void BluetoothItemView::ConnectAnimatorStart(void)
-{
-    connectionAnimator.SetVisible(true);
-    connectionAnimator.Start();
-}
-
-void BluetoothItemView::ConnectAnimatorStop(void)
-{
-    connectionAnimator.SetVisible(false);
-    connectionAnimator.Stop();
-}
-
-bool BluetoothItemView::IsConnectAnimator(void)
-{
-    return connectionAnimator.IsVisible();
-}
-
-void BluetoothItemView::BtConnectImageAnimator()
-{
-    const char *connectImagePath[BLUETOOTH_CONNECT_IMAGE_NUM] = {
-        PNG_A019_088_IMAGE_PATH,
-        PNG_A019_089_IMAGE_PATH,
-        PNG_A019_090_IMAGE_PATH,
-        PNG_A019_091_IMAGE_PATH,
-        PNG_A019_092_IMAGE_PATH,
-        PNG_A019_093_IMAGE_PATH,
-        PNG_A019_094_IMAGE_PATH,
-        PNG_A019_095_IMAGE_PATH,
-    };
-
-    for (uint8_t i = 0; i < BLUETOOTH_CONNECT_IMAGE_NUM; i++) {
-        connectImageInfo[i].imageInfo =  ImageCacheManager::GetInstance().LoadSingleRes(connectImagePath[i]);
-        connectImageInfo[i].imageType = IMG_SRC_IMAGE_INFO;
-        connectImageInfo[i].pos.x = BLUETOOTH_CONNECT_X;
-        connectImageInfo[i].pos.y = BLUETOOTH_CONNECT_Y;
-        connectImageInfo[i].width = BLUETOOTH_CONNECT_WIDTH;
-        connectImageInfo[i].height = BLUETOOTH_CONNECT_HEIGHT;
-    }
-
-    connectionAnimator.SetImageAnimatorSrc(connectImageInfo, BLUETOOTH_CONNECT_IMAGE_NUM, BLUETOOTH_CONNECT_DELAY);
-    connectionAnimator.SetRepeat(true);
-    connectionAnimator.SetVisible(false);
-}
-
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: BluetoothItem view\r
+ * Author:\r
+ * Create: 2021-10-13\r
+ */\r
+\r
+#include "BluetoothItemView.h"\r
+#include "wearable_log.h"\r
+#include "UiConfig.h"\r
+#include "common/image_cache_manager.h"\r
+\r
+namespace OHOS {\r
+constexpr uint16_t BUTTON_WIDTH = 351;\r
+constexpr uint16_t BUTTON_HEIGHT = 81;\r
+constexpr uint16_t IMAGE_WIDTH = 81;\r
+constexpr uint16_t IMAGE_HEIGHT = 81;\r
+constexpr uint16_t LABEL_HEIGHT = 81;\r
+constexpr uint16_t LABEL_WIDTH = 189;\r
+constexpr uint16_t BLELIST_BUTTON_HEIGHT = 81;\r
+\r
+#define BLUETOOTH_CONNECT_DELAY 200\r
+#define BLUETOOTH_CONNECT_X 294\r
+#define BLUETOOTH_CONNECT_Y 0\r
+#define BLUETOOTH_CONNECT_WIDTH 81\r
+#define BLUETOOTH_CONNECT_HEIGHT 81\r
+\r
+BluetoothItemView::BluetoothItemView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothItemView::BluetoothItemView");\r
+    SetPosition(53, 106, 375, 81); // 53:x 106:y 375:width 81:height\r
+    SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
+    SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
+    SetUpChild();\r
+    SetTouchable(true);\r
+\r
+    Add(&button);\r
+    Add(&connectStateLabel);\r
+    Add(&namelabel);\r
+    Add(&image);\r
+    Add(&connectionAnimator);\r
+}\r
+\r
+BluetoothItemView::~BluetoothItemView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothItemView::~BluetoothItemView");\r
+    Remove(&connectStateLabel);\r
+    Remove(&button);\r
+    Remove(&namelabel);\r
+    Remove(&image);\r
+    Remove(&connectionAnimator);\r
+}\r
+\r
+void BluetoothItemView::SetUpChild()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothItemView::SetUpChild");\r
+    button.Resize(BUTTON_WIDTH, BUTTON_HEIGHT); // 351:Width\r
+    button.SetImageSrc(PNG_BT_LIST, PNG_BT_LIST); // 跳转图片\r
+    button.SetImagePosition(24, 0); // 24: lable x-coordinate\r
+\r
+    namelabel.SetPosition(105, 0); // 105:x 0:y\r
+    namelabel.Resize(LABEL_WIDTH, LABEL_HEIGHT);\r
+    namelabel.SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
+    namelabel.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30: means font size\r
+    namelabel.SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+    namelabel.SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+        UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+\r
+    image.SetPosition(0, 0, IMAGE_WIDTH, IMAGE_HEIGHT); // 0:x 0:y\r
+    image.SetSrc(PNG_BLUETOOTHEAR);\r
+    BtConnectImageAnimator();\r
+}\r
+\r
+void BluetoothItemView::SetItemInfo(const BluetoothCaseInfo& itemInfo, bool isCaseList)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothItemView::SetItemInfo");\r
+    itemInfo_ = itemInfo;\r
+    namelabel.SetText(reinterpret_cast<const char *>(itemInfo_.deviceName));\r
+    if (isCaseList == true) {\r
+        bool ret = BluetoothModel::GetInstance()->IsTagScanDeviceClicked();\r
+        if ((IsConnectAnimator() == false) && (ret == true)) {\r
+            namelabel.SetStyle(STYLE_TEXT_COLOR, Color::Gray().full);\r
+            button.SetTouchable(false);\r
+            SetTouchable(false);\r
+        } else {\r
+            namelabel.SetStyle(STYLE_TEXT_COLOR, Color::White().full);\r
+            button.SetTouchable(true);\r
+            SetTouchable(true);\r
+        }\r
+    }\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "index =  %d", GetViewIndex());\r
+}\r
+\r
+BluetoothCaseInfo *BluetoothItemView::GetItemInfo(void)\r
+{\r
+    return &itemInfo_;\r
+}\r
+\r
+void BluetoothItemView::SetConnectionstatus(const BluetoothCaseInfo& infoData)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothItemView::SetConnectionstatus");\r
+    connectStateLabel.SetPosition(105, 0); // 105:x 0:y\r
+    connectStateLabel.Resize(LABEL_WIDTH, LABEL_HEIGHT);\r
+    connectStateLabel.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30: means font size\r
+    connectStateLabel.SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+    connectStateLabel.SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+                               UITextLanguageAlignment::TEXT_ALIGNMENT_BOTTOM);\r
+    bool aclConnected = bt_is_acl_connected((const bd_addr_t*)&infoData.addr);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothItemView::SetConnectionstatus aclConnected %d", aclConnected);\r
+    if (aclConnected) {\r
+        connectStateLabel.SetText("已连接");\r
+    } else {\r
+        connectStateLabel.SetText("已断开");\r
+    }\r
+    namelabel.SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+                       UITextLanguageAlignment::TEXT_ALIGNMENT_TOP);\r
+    namelabel.Invalidate();\r
+}\r
+\r
+void BluetoothItemView::ConnectAnimatorStart(void)\r
+{\r
+    connectionAnimator.SetVisible(true);\r
+    connectionAnimator.Start();\r
+}\r
+\r
+void BluetoothItemView::ConnectAnimatorStop(void)\r
+{\r
+    connectionAnimator.SetVisible(false);\r
+    connectionAnimator.Stop();\r
+}\r
+\r
+bool BluetoothItemView::IsConnectAnimator(void)\r
+{\r
+    return connectionAnimator.IsVisible();\r
+}\r
+\r
+void BluetoothItemView::BtConnectImageAnimator()\r
+{\r
+    const char *connectImagePath[BLUETOOTH_CONNECT_IMAGE_NUM] = {\r
+        PNG_A019_088_IMAGE_PATH,\r
+        PNG_A019_089_IMAGE_PATH,\r
+        PNG_A019_090_IMAGE_PATH,\r
+        PNG_A019_091_IMAGE_PATH,\r
+        PNG_A019_092_IMAGE_PATH,\r
+        PNG_A019_093_IMAGE_PATH,\r
+        PNG_A019_094_IMAGE_PATH,\r
+        PNG_A019_095_IMAGE_PATH,\r
+    };\r
+\r
+    for (uint8_t i = 0; i < BLUETOOTH_CONNECT_IMAGE_NUM; i++) {\r
+        connectImageInfo[i].imageInfo =  ImageCacheManager::GetInstance().LoadSingleRes(connectImagePath[i]);\r
+        connectImageInfo[i].imageType = IMG_SRC_IMAGE_INFO;\r
+        connectImageInfo[i].pos.x = BLUETOOTH_CONNECT_X;\r
+        connectImageInfo[i].pos.y = BLUETOOTH_CONNECT_Y;\r
+        connectImageInfo[i].width = BLUETOOTH_CONNECT_WIDTH;\r
+        connectImageInfo[i].height = BLUETOOTH_CONNECT_HEIGHT;\r
+    }\r
+\r
+    connectionAnimator.SetImageAnimatorSrc(connectImageInfo, BLUETOOTH_CONNECT_IMAGE_NUM, BLUETOOTH_CONNECT_DELAY);\r
+    connectionAnimator.SetRepeat(true);\r
+    connectionAnimator.SetVisible(false);\r
+}\r
+\r
+}\r
index 381aaf7..f7eeb07 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: BluetoothModel view
- * Author:
- * Create: 2021-10-13
- */
-#include "stdint.h"
-#include "BluetoothModel.h"
-#include "BluetoothPresenter.h"
-#include "ConnectPhonePresenter.h"
-#include "BluetoothView.h"
-#include "BluetoothItemView.h"
-#include "PlayersModel.h"
-#include "PhoneAudio.h"
-#include "graphic_service.h"
-#include "ui_service.h"
-
-#include "msg_center.h"
-
-#include "bts_def.h"
-#include "bts_gatt_stru.h"
-#include "bts_a2dp_source.h"
-#include "bts_gatt_server.h"
-#include "bts_le_gap.h"
-#include "bts_spp.h"
-#include "osal_task.h"
-
-namespace OHOS {
-
-#define BT_SPP_TASK_STACK_SIZE 2048
-#define BT_SPP_TASK_PRI        20
-#define TEN                    10
-
-constexpr uint16_t BLUETOOTH_MAX_NUM = 20;
-
-void BluetoothModel::SetBluetoothCalleridStatus(int16_t value)
-{
-    callerid = value;
-}
-
-int BluetoothModel::GetBluetoothCalleridStatus(void)
-{
-    return callerid;
-}
-
-BluetoothModel::BluetoothModel()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothModel::BluetoothModel");
-}
-
-BluetoothModel *BluetoothModel::GetInstance(void)
-{
-    static BluetoothModel instance;
-    return &instance;
-}
-
-void BluetoothModel::Init()
-{
-    bool ret = enable_bt_stack();
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt enable_bt_stack ret = %d", ret);
-
-    BtInitCallBacks();
-    BtInitGatts();
-    BtInitSpp();
-
-    SetUpListCase();
-    SetUpConnedDevicesList();
-}
-
-void BluetoothModel::SetCaseListClear()
-{
-    btScansDevicesList_.clear();
-}
-
-bool BluetoothModel::CheckExistScanList(BluetoothCaseInfo caseInfo)
-{
-    std::list<BluetoothCaseInfo>::iterator node = btScansDevicesList_.begin();
-    if (btScansDevicesList_.empty()) {
-        return false;
-    }
-    while (node != btScansDevicesList_.end()) {
-        if ((caseInfo.addr[0] == node->addr[0]) && (caseInfo.addr[1] == node->addr[1])
-            && (caseInfo.addr[2] == node->addr[2]) && (caseInfo.addr[3] == node->addr[3])
-            && (caseInfo.addr[4] == node->addr[4]) && (caseInfo.addr[5] == node->addr[5])) {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "true");
-            return true;
-        }
-        node++;
-    }
-    return false;
-}
-
-void BluetoothModel::SetUpListCase()
-{
-    SetCaseListClear();
-}
-
-std::list<BluetoothCaseInfo>& BluetoothModel::GetCase()
-{
-    return btScansDevicesList_;
-}
-
-void BluetoothModel::AddCase(BluetoothCaseInfo caseInfo)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AddCase::caseInfo addr: %02x%02x%02x%02x%02x%02x",
-        caseInfo.addr[5], caseInfo.addr[4], caseInfo.addr[3], /* mac下标 0 1 2 3 4 5 */
-        caseInfo.addr[2], caseInfo.addr[1], caseInfo.addr[0]);
-    if (btScansDevicesList_.size() >= BLUETOOTH_MAX_NUM) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "btScansDevicesList_.size is BLUETOOTH_MAX_NUM");
-        return;
-    } else {
-        btScansDevicesList_.push_back(caseInfo);
-    }
-}
-
-void BluetoothModel::SetScansCaseRssi(const bd_addr_t *bdAddr, int rssi)
-{
-    for (auto it = btScansDevicesList_.begin(); it != btScansDevicesList_.end(); it++) {
-        if ((it->addr[0] == bdAddr->addr[0]) && (it->addr[1] == bdAddr->addr[1])
-            && (it->addr[2] == bdAddr->addr[2]) && (it->addr[3] == bdAddr->addr[3])
-            && (it->addr[4] == bdAddr->addr[4]) && (it->addr[5] == bdAddr->addr[5])) {
-                it->temp = rssi;
-                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "btScansDevicesList_ rssi:%d deviceName:%s", it->temp, it->deviceName);
-        }
-    }
-}
-
-
-bool CompBuletoothInfo(const BluetoothCaseInfo& a, const BluetoothCaseInfo& b)
-{
-    if (a.temp > b.temp) {
-        return true;
-    }
-    return false;
-}
-
-void BluetoothModel::SortScansCaseRssi()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothModel::SortScansCaseRssi");
-    btScansDevicesList_.sort(CompBuletoothInfo);
-}
-
-void BluetoothModel::ResetScanDevicesCase(const BluetoothCaseInfo& caseInfo)
-{
-    for (auto it = btScansDevicesList_.begin(); it != btScansDevicesList_.end(); it++) {
-        if ((it->addr[0] == caseInfo.addr[0]) && (it->addr[1] == caseInfo.addr[1])
-            && (it->addr[2] == caseInfo.addr[2]) && (it->addr[3] == caseInfo.addr[3])
-            && (it->addr[4] == caseInfo.addr[4]) && (it->addr[5] == caseInfo.addr[5])) {
-                (void)memcpy_s(it->deviceName, BD_NAME_LEN,
-                               caseInfo.deviceName, BD_NAME_LEN);
-                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ResetConnedDevicesCase deviceName:%s", it->deviceName);
-        }
-    }
-}
-
-/* 已配对设备队列 */
-void BluetoothModel::SetConnedDevicesListClear()
-{
-    btConnedDevicesList_->Clear();
-}
-
-void BluetoothModel::SetUpConnedDevicesList()
-{
-    if (btConnedDevicesList_ == nullptr) {
-        btConnedDevicesList_ = new List<BluetoothCaseInfo>();
-        if (btConnedDevicesList_ == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothModel btConnedDevicesList_ new fail");
-            return;
-        }
-        SetConnedDevicesListClear();
-        unsigned int connedDevicesNum = 0;
-        bool ret = gap_get_paired_devices_num(&connedDevicesNum);
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Setup GetPariedDevicesNum ret = %d, num = %d", ret, connedDevicesNum);
-
-        gap_paired_device_info_t *devInfo = (gap_paired_device_info_t*)malloc(sizeof(gap_paired_device_info_t) *connedDevicesNum);
-        if (devInfo ==  NULL) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DevInfo malloc failed %u", sizeof(gap_paired_device_info_t) *connedDevicesNum);
-            return;
-        }
-        ret =  gap_get_paired_devices_list(devInfo, (int *)&connedDevicesNum);
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetUpConnedDevicesList gap_get_paired_devices_list ret = %d", ret);
-
-        BluetoothCaseInfo caseInfo{};
-        for (int i = 0; i < static_cast<int>(connedDevicesNum); ++i) {
-            if ((gap_get_device_class((const bd_addr_t *)devInfo[i].addr.addr) & 0x200) != 0) {
-                continue;
-            }
-            (void)memcpy_s(caseInfo.addr, BD_ADDR_LEN,
-                           devInfo[i].addr.addr, BD_ADDR_LEN);
-            (void)memcpy_s(caseInfo.deviceName, BD_NAME_LEN,
-                           devInfo[i].device_name, BD_NAME_LEN);
-            AddConnedDevicesCase(caseInfo);
-        }
-        free(devInfo);
-    }
-}
-
-void BluetoothModel::AddConnedDevicesCase(BluetoothCaseInfo caseInfo)
-{
-    if (btConnedDevicesList_ == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "btConnedDevicesList_ nullptr");
-        return;
-    }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AddConnedDevicesCase::caseInfo addr: %02x%02x%02x%02x%02x%02x",
-        caseInfo.addr[5], caseInfo.addr[4], caseInfo.addr[3], /* mac下标 0 1 2 3 4 5 */
-        caseInfo.addr[2], caseInfo.addr[1], caseInfo.addr[0]);
-    if (btConnedDevicesList_->Size() >= BLUETOOTH_MAX_NUM) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "btConnedDevicesList_->Size is BLUETOOTH_MAX_NUM");
-        return;
-    } else {
-        btConnedDevicesList_->PushBack(caseInfo);
-    }
-}
-
-List<BluetoothCaseInfo>& BluetoothModel::GetConnedDevicesCase()
-{
-    return *btConnedDevicesList_;
-}
-
-void BluetoothModel::SetBtStatus(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetBtStatus tempMacValue: %02x%02x%02x%02x%02x%02x",
-        tempMacValue.addr[5], tempMacValue.addr[4], tempMacValue.addr[3], /* macϱê 0 1 2 3 4 5 */
-        tempMacValue.addr[2], tempMacValue.addr[1], tempMacValue.addr[0]); /* macϱê 0 1 2 3 4 5 */
-    aclConnected = bt_is_acl_connected((const bd_addr_t*)&tempMacValue.addr);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "aclConnected %d", aclConnected);
-}
-
-bool BluetoothModel::GetAclConnected(void)
-{
-    return aclConnected;
-}
-
-void BluetoothModel::SetTempMacValue(BluetoothCaseInfo *caseInfo)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetTempMacValue: %02x%02x%02x%02x%02x%02x",
-                caseInfo->addr[5], caseInfo->addr[4], caseInfo->addr[3], /* macϱê 0 1 2 3 4 5 */
-                caseInfo->addr[2], caseInfo->addr[1], caseInfo->addr[0]); /* macϱê 0 1 2 3 4 5 */
-    (void)memcpy_s(tempMacValue.addr, BD_ADDR_LEN,
-                   caseInfo->addr, BD_ADDR_LEN);
-    (void)memcpy_s(tempMacValue.deviceName, BD_NAME_LEN,
-                   caseInfo->deviceName, BD_NAME_LEN);
-}
-
-BluetoothCaseInfo *BluetoothModel::GetTempMacValue(void)
-{
-    return &tempMacValue;
-}
-
-void BluetoothModel::SetLastConnedAddr(const bd_addr_t *addr)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetLastConnedAddr: %02x%02x%02x%02x%02x%02x",
-                addr->addr[5], addr->addr[4], addr->addr[3], /* macϱê 0 1 2 3 4 5 */
-                addr->addr[2], addr->addr[1], addr->addr[0]); /* macϱê 0 1 2 3 4 5 */
-    (void)memcpy_s(lastConnedAddr.addr, BD_ADDR_LEN, addr->addr, BD_ADDR_LEN);
-}
-
-bd_addr_t *BluetoothModel::GetLastConnedAddr(void)
-{
-    return &lastConnedAddr;
-}
-
-void BluetoothModel::SetConnectionView(BluetoothItemView *item)
-{
-    selectItemView = item;
-}
-
-BluetoothItemView *BluetoothModel::GetConnectionView()
-{
-    return selectItemView;
-}
-
-
-void BluetoothModel::SetTagReconnectJump(bool tag)
-{
-    tagReconnectJump = tag;
-}
-
-bool BluetoothModel::GetTagReconnectJump(void)
-{
-    return tagReconnectJump;
-}
-
-void BluetoothModel::SetCurView(int16_t viewNum)
-{
-    curView = viewNum;
-}
-
-int BluetoothModel::GetCurView(void)
-{
-    return curView;
-}
-
-void BluetoothModel::SetTagConnectView(bool tag)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothModel::SetTagConnectView:%d", tag);
-    tagConnectView = tag;
-}
-
-// 判断是否需要跳转连接成功\失败界面(已退出蓝牙模块)
-bool BluetoothModel::IsTagConnectView(void)
-{
-    return tagConnectView;
-}
-
-void BluetoothModel::SetTagDisconnectView(bool tag)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothModel::SetTagDisconnectView:%d", tag);
-    tagDisconnectView = tag;
-}
-
-// 判断是否需要跳转连接失败界面
-bool BluetoothModel::IsTagDisconnectView(void)
-{
-    return tagDisconnectView;
-}
-
-void BluetoothModel::SetTagConnectNew(bool tag)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothModel::SetTagConnectNew:%d", tag);
-    tagConnectNew = tag;
-}
-
-void BluetoothModel::SetTagReturnToDeviceListView(bool tag)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothModel::SetTagReturnToDeviceListView:%d", tag);
-    tagReturnToDeviceListView = tag;
-}
-
-bool BluetoothModel::IsTagReturnToDeviceListView(void)
-{
-    return tagReturnToDeviceListView;
-}
-
-// 判断断开连接时是否需要马上连接新设备
-bool BluetoothModel::IsTagConnectNew(void)
-{
-    return tagConnectNew;
-}
-
-void BluetoothModel::SetTagScanDeviceClicked(bool tag)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothModel::SetTagScanDeviceClicked:%d", tag);
-    tagScanDeviceClicked = tag;
-}
-
-// 判断是否已点击设备请求连接
-bool BluetoothModel::IsTagScanDeviceClicked(void)
-{
-    return tagScanDeviceClicked;
-}
-
-bool BluetoothModel::CheckExistConnedList(BluetoothCaseInfo caseInfo)
-{
-    ListNode<BluetoothCaseInfo> *node = btConnedDevicesList_ ->Begin();
-    if (node == nullptr) {
-        return false;
-    } else if ((caseInfo.addr[0] == 0) && (caseInfo.addr[1] == 0)
-                && (caseInfo.addr[2] == 0) && (caseInfo.addr[3] == 0)
-                && (caseInfo.addr[4] == 0) && (caseInfo.addr[5] == 0)) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CheckExistConnedList false addr: 000000000000");
-        return true;
-    }
-    while (node != btConnedDevicesList_ ->End()) {
-        if ((caseInfo.addr[0] == node->data_.addr[0]) && (caseInfo.addr[1] == node->data_.addr[1])
-            && (caseInfo.addr[2] == node->data_.addr[2]) && (caseInfo.addr[3] == node->data_.addr[3])
-            && (caseInfo.addr[4] == node->data_.addr[4]) && (caseInfo.addr[5] == node->data_.addr[5])) {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CheckExistConnedList true");
-            return true;
-        }
-        node = node->next_;
-    }
-    return false;
-}
-
-bool BluetoothModel::FindNameByAddr(BluetoothCaseInfo &listInfo, BluetoothCaseInfo *caseInfo)
-{
-    if ((listInfo.addr[0] == caseInfo->addr[0]) && (listInfo.addr[1] == caseInfo->addr[1]) &&
-        (listInfo.addr[2] == caseInfo->addr[2]) && (listInfo.addr[3] == caseInfo->addr[3]) &&
-        (listInfo.addr[4] == caseInfo->addr[4]) && (listInfo.addr[5] == caseInfo->addr[5])) {
-        (void)memcpy_s(caseInfo->deviceName, BD_NAME_LEN, listInfo.deviceName, BD_NAME_LEN);
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FindNameFromList success, deviceName:%s", listInfo.deviceName);
-        return true;
-    } else {
-        return false;
-    }
-}
-
-bool BluetoothModel::FindNameFromList(BluetoothCaseInfo *caseInfo)
-{
-    ListNode<BluetoothCaseInfo> *node = btConnedDevicesList_->Begin();
-    if (!btScansDevicesList_.empty()) {
-        for (auto it = btScansDevicesList_.begin(); it != btScansDevicesList_.end(); it++) {
-            if (FindNameByAddr(*it, caseInfo)) {
-                return true;
-            }
-        }
-    }
-    if (node != nullptr) {
-        while (node != btConnedDevicesList_->End()) {
-            if (FindNameByAddr(node->data_, caseInfo)) {
-                return true;
-            }
-            node = node->next_;
-        }
-    }
-    return false;
-}
-
-bool BluetoothModel::GetBluetoothAclState(void)
-{
-    if ((lastConnedAddr.addr[0] == 0) && (lastConnedAddr.addr[1] == 0) &&
-        (lastConnedAddr.addr[2] == 0) && (lastConnedAddr.addr[3] == 0) &&
-        (lastConnedAddr.addr[4] == 0) && (lastConnedAddr.addr[5] == 0)) {
-        return false;
-    } else {
-        return bt_is_acl_connected(&lastConnedAddr);
-    }
-}
-
-bool BluetoothModel::GetAdvStartState(void)
-{
-    return advStartState;
-}
-void BluetoothModel::SetAdvStartState(bool state)
-{
-    advStartState = state;
-}
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-// 回调: gap_read_remote_rssi_value 接口的数据上报
-void BtGapReadRemoteRssiEventCallback(const bd_addr_t *bdAddr, int rssi, int status)
-{
-    UNUSED(status);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtGapReadRemoteRssiEventCallback addr: %02x%02x%02x%02x%02x%02x",
-        bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* mac下标 0 1 2 3 4 5 */
-        bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0]); /* mac下标 0 1 2 3 4 5 */
-    BluetoothModel::GetInstance()->SetScansCaseRssi(bdAddr, rssi);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bt BtGapReadRemoteRssiEventCallback SetSortCaseRssi: %d status: %d", rssi, status);
-}
-
-// 回调:发现状态变化上报/扫描结束
-void BtGapDiscoveryStateChangedCallback(int status)
-{
-    UNUSED(status);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bt BtGapDiscoveryStateChangedCallback %d", status);
-}
-
-static void ChangeScanView()
-{
-    BluetoothEarPhoneView *bluetoothEarPhoneView = BluetoothEarPhoneView::GetInstance();
-    if (bluetoothEarPhoneView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarPhoneView nullptr");
-        return;
-    }
-    bluetoothEarPhoneView->setScanStatus(false);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Bt scan one jumpView");
-    if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {
-        JumpView *jumpView = JumpView::GetInstance();
-        if (jumpView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");
-            return;
-        }
-        jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW,
-                             JumpView::BluetoothJumpViewNum::BLUETOOTHEARLISTVIEW);
-    } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {
-        MainBluetoothView *mainBluetoothView = MainBluetoothView::GetInstance();
-        if (mainBluetoothView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mainBluetoothView GetInstance fail");
-            return;
-        }
-        mainBluetoothView->ChangeView(BLUETOOTHEARPHONEVIEW, BLUETOOTHEARLISTVIEW);
-    }
-    // 暂停动画
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtAnimatorStop bk");
-    bluetoothEarPhoneView->BtAnimatorStop();
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtAnimatorStop");
-}
-
-void BluetoothModel::BtGapDiscoveryResultCallbakHandle(const bd_addr_t &bdAddr)
-{
-    BluetoothCaseInfo caseInfo{};
-    (void)memcpy_s(caseInfo.addr, BD_ADDR_LEN, bdAddr.addr, BD_ADDR_LEN);
-
-    unsigned char nameLen = BD_NAME_LEN;
-    bool getNameRet = gap_get_device_name(&bdAddr, caseInfo.deviceName, &nameLen);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gap_discovery_result_callback getNameRet(bool): %d nameLen: %d name:%s",
-                getNameRet, nameLen, caseInfo.deviceName);
-
-    if (nameLen == 0) { // 过滤未扫描到名字的设备
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "nameLen == 0 return");
-        return;
-    }
-    // 去重操作
-    bool tag = BluetoothModel::GetInstance()->CheckExistScanList(caseInfo);
-    if (!tag) {
-        BluetoothModel::GetInstance()->AddCase(caseInfo); // 增加扫描设备信息
-    }
-    bool ret = gap_read_remote_rssi_value(&bdAddr); // 获取rssi
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gap_read_remote_rssi_value ret = %d", ret);
-    BluetoothEarPhoneView *bluetoothEarPhoneView = BluetoothEarPhoneView::GetInstance();
-    if (bluetoothEarPhoneView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarPhoneView nullptr");
-        return;
-    }
-    tag = bluetoothEarPhoneView->getScanStatus();
-    if (tag == true) { // 跳转
-        ChangeScanView();
-    } else {
-        BluetoothEarListView *bluetoothEarListView = BluetoothEarListView::GetInstance();
-        if (bluetoothEarListView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarListView nullptr");
-            return;
-        }
-        if (bluetoothEarListView->GetScanUIList() == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetScanUIList nullptr");
-            return;
-        } // 刷新
-        bluetoothEarListView->GetScanUIList()->RefreshList();
-    }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bt BtGapDiscoveryResultCallback end");
-}
-
-void BtGapPairStatusChangedCallback(const bd_addr_t *bdAddr, int status)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtGapPairStatusChangedCallback addr: ****%02x%02x%02x%02x status: %d\n",
-        bdAddr->addr[3], bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0], status); /* addr下标 0 1 2 3 */
-    if (status == GAP_PAIR_PAIRED) {
-        if (ConnectPhonePresenter::GetInstance() != nullptr) {
-            NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);
-        }
-    }
-}
-
-void BtGapPairRequestedCallback(const bd_addr_t *bdAddr)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtGapPairRequestedCallback addr: ****%02x%02x%02x%02x\n",
-        bdAddr->addr[3], bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0]); /* addr下标 0 1 2 3 */
-}
-
-void BtGapPairConfirmedCallback(const bd_addr_t *bdAddr, int req_type, int number)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtGapPairConfirmedCallback addr: ****%02x%02x%02x%02x req_type: %d number: %d\n",
-        bdAddr->addr[3], bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0], /* addr下标 0 1 2 3 */
-        req_type, number);
-}
-
-// 回调:扫描结果处理/发现结果上报
-void BtGapDiscoveryResultCallback(const bd_addr_t *bdAddr)
-{
-    if ((gap_get_device_class(bdAddr) & 0x200) != 0) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtGapDiscoveryResultCallback: Mobile Phone Device");
-        return;
-    }
-
-    if (bdAddr == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "addr nullptr");
-        return;
-    }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gap_discovery_result_callback addr: %02x%02x%02x%02x%02x%02x",
-        bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* mac下标 0 1 2 3 4 5 */
-        bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0]); /* mac下标 0 1 2 3 4 5 */
-    GraphicService::GetInstance()->PostGraphicEvent(std::bind(&BluetoothModel::BtGapDiscoveryResultCallbakHandle,
-                                                              BluetoothModel::GetInstance(), *bdAddr));
-}
-
-void HandleBeforeChangeView()
-{
-    int curView = BluetoothModel::GetInstance()->GetCurView();
-    if (curView == BLUETOOTHEARPHONEVIEW) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HandleBeforeChangeView curView == BLUETOOTHEARPHONEVIEW");
-        BluetoothEarPhoneView *bluetoothEarPhoneView = BluetoothEarPhoneView::GetInstance();
-        if (bluetoothEarPhoneView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleBeforeChangeView bluetoothEarPhoneView == nullptr");
-            return;
-        }
-        bluetoothEarPhoneView->BtAnimatorStop();
-        bluetoothEarPhoneView->StopBtDiscovery();
-    } else if (curView == BLUETOOTHEARLISTVIEW) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HandleBeforeChangeView curView == BLUETOOTHEARLISTVIEW");
-        BluetoothEarPhoneView *bluetoothEarPhone = BluetoothEarPhoneView::GetInstance();
-        if (bluetoothEarPhone == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleBeforeChangeView bluetoothEarPhoneView == nullptr");
-            return;
-        }
-        bluetoothEarPhone->StopBtDiscovery();
-        BluetoothItemView *pbItermView = BluetoothModel::GetInstance()->GetConnectionView();
-        if (pbItermView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleBeforeChangeView The GetConnectionView get failed.");
-            return;
-        }
-        pbItermView->ConnectAnimatorStop();
-        BluetoothModel::GetInstance()->SetConnectionView(nullptr);
-    } else if (curView == BLUETOOTHRECONNECTVIEW) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HandleBeforeChangeView curView == BLUETOOTHRECONNECTVIEW");
-        BluetoothReconnectView *bluetoothReconnectView = BluetoothReconnectView::GetInstance();
-        if (bluetoothReconnectView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleBeforeChangeView bluetoothReconnectView == nullptr");
-            return;
-        }
-        bluetoothReconnectView->BtReconnectStop();
-    }
-}
-
-static void ACLConnectionSuss(const bd_addr_t &bdAddr)
-{
-    // 判断是否已退出蓝牙模块(无需跳转)
-    bool tagConnectView = BluetoothModel::GetInstance()->IsTagConnectView();
-    if (tagConnectView == false) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GapAclStateChangedCallback tagConnectView == false");
-        return;
-    }
-    // 成功提示
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GAP_ACL_STATE_CONNECTED");
-    HandleBeforeChangeView();
-    if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {
-        JumpView *jumpView = JumpView::GetInstance();
-        if (jumpView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");
-            return;
-        }
-        jumpView->ChangeView(BluetoothModel::GetInstance()->GetCurView(),
-                             JumpView::BluetoothJumpViewNum::TIPSSUCCMESSAGEVIEW);
-    } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {
-        MainBluetoothView *mainBluetoothView = MainBluetoothView::GetInstance();
-        if (mainBluetoothView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mainBluetoothView GetInstance fail");
-            return;
-        }
-        mainBluetoothView->ChangeView(BluetoothModel::GetInstance()->GetCurView(), TIPSSUCCMESSAGEVIEW);
-    }
-    TipsSuccMessageView *tipsSuccMessageView = TipsSuccMessageView::GetInstance();
-    if (tipsSuccMessageView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ACLConnectionSuss tipsSuccMessageView GetInstance fail");
-        return;
-    }
-    tipsSuccMessageView->RefreshNameLabel(bdAddr);
-}
-
-static void ACLConnectionFail(const bd_addr_t &bdAddr)
-{
-    // 判断是否已退出蓝牙模块(无需跳转)
-    bool tagConnectView = BluetoothModel::GetInstance()->IsTagConnectView();
-    // 判断是否无需跳转到失败界面
-    bool tagDisconnectView = BluetoothModel::GetInstance()->IsTagDisconnectView();
-    if (tagConnectView == false || tagDisconnectView == false) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GapAclStateChangedCallback tagDisconnectView == false");
-        return;
-    }
-    // 失败提示页
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "conn fail");
-    HandleBeforeChangeView();
-    if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {
-        JumpView *jumpView = JumpView::GetInstance();
-        if (jumpView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");
-            return;
-        }
-        jumpView->ChangeView(BluetoothModel::GetInstance()->GetCurView(),
-                             JumpView::BluetoothJumpViewNum::TIPSCONNFAILMESSAGEVIEW);
-    } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {
-        MainBluetoothView *mainBluetoothView = MainBluetoothView::GetInstance();
-        if (mainBluetoothView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mainBluetoothView GetInstance fail");
-            return;
-        }
-        mainBluetoothView->ChangeView(BluetoothModel::GetInstance()->GetCurView(), TIPSCONNFAILMESSAGEVIEW);
-    }
-    TipsConnFailMessageView *tipsConnFailMessageView = TipsConnFailMessageView::GetInstance();
-    if (tipsConnFailMessageView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ACLConnectionFail tipsConnFailMessageView GetInstance fail");
-        return;
-    }
-    tipsConnFailMessageView->RefreshNameLabel(bdAddr);
-}
-
-static void DisconnectBluetoothPause()
-{
-    int64_t playerCurrentTime;
-    int64_t playerMusicDuration;
-    int64_t playerProgressVlaue;
-    if (PlayersModel::GetInstance()->GetPlayerCtr() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AclStateChangedCallback GetPlayerCtr() == nullptr");
-        return;
-    }
-    PlayersModel::GetInstance()->GetPlayerCtr()->Pause();
-    PlayersModel::GetInstance()->SetPlayButtonState(false);
-    PlayersModel::GetInstance()->GetPlayerCtr()->GetCurrentTime(playerCurrentTime);
-    PlayersModel::GetInstance()->GetPlayerCtr()->GetDuration(playerMusicDuration);
-    if (playerMusicDuration == 0) { // 0:除数保护
-        playerProgressVlaue = 100; // 100:进度条系数
-    } else {
-        playerProgressVlaue = (playerCurrentTime * 100) / playerMusicDuration; // 100:百分比系数
-    }
-    PlayersModel::GetInstance()->SetCircleProgress(playerProgressVlaue);
-    PlayersView *playersView = PlayersView::GetInstance();
-    if (playersView != nullptr) {
-        playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::UNSELECTED);
-        if (playersView->GetPlaybackProgress() == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AclStateChangedCallback playersView->GetPlaybackProgress() == nullptr");
-            return;
-        }
-        playersView->GetPlaybackProgress()->SetValue(playerProgressVlaue);
-    }
-}
-
-static void DisconnectedHandle()
-{
-    DisconnectBluetoothPause();
-    BluetoothModel::GetInstance()->SetTagDisconnectView(false);
-    BluetoothDeviceListView *bluetoothDeviceListView = BluetoothDeviceListView::GetInstance();
-    if (bluetoothDeviceListView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AclStateChangedCallback bluetoothDeviceListView  == nullptr");
-        return;
-    }
-    UIList *deviceList = bluetoothDeviceListView->GetDeviceUIList();
-    if (deviceList == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisconnectedHandle deviceList nullptr");
-        return;
-    }
-    deviceList->RefreshList();
-    BluetoothOptionsView *bluetoothOptionsView = BluetoothOptionsView::GetInstance();
-    if (bluetoothOptionsView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AclStateChangedCallback bluetoothOptionsView  == nullptr");
-        return;
-    }
-    bluetoothOptionsView->RefreshText();
-}
-
-void BluetoothModel::BtGapAclStateChangedHandle(gap_acl_state_t state, unsigned int reason, const bd_addr_t &bdAddr)
-{
-    if ((state == GAP_ACL_STATE_CONNECTED) || (state == GAP_ACL_STATE_LE_CONNECTED)) {
-        SendMsgToUIService(BT_CONNECTED_TO_UI, 0, NULL, 0);
-    } else {
-        SendMsgToUIService(BT_DISCONNECTED_TO_UI, 0, NULL, 0);
-    }
-
-    bool tag = BluetoothModel::GetInstance()->IsTagScanDeviceClicked();
-    if ((reason == 0x13) || (reason == 0x14) || (reason == 0x15) || (reason == 0x3D) || (reason == 0x08 && tag == false)) { // 连接断开
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "The peer end is disconnected.");
-        DisconnectedHandle();
-    } else if (reason == 0x16) { // 主动断开连接
-        DisconnectedHandle();
-        BluetoothCaseInfo *onClickBtCaseInfo = BluetoothModel::GetInstance()->GetTempMacValue();
-        bool ret = BluetoothModel::GetInstance()->IsTagConnectNew();
-        if (ret == true) {
-            ret = gap_connect_remote_device((const bd_addr_t *)&onClickBtCaseInfo->addr);
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gap_connect_remote_device ret =  %d", ret);
-        }
-    } else if ((reason == 0xb) || (reason > 0x45)) { // 0xb:重复点击连接按钮 0x45:acl状态最大参数
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "reason is false.");
-        SetTagDisconnectView(false);
-    }
-
-    BluetoothCaseInfo *onClickBtCaseInfo = GetTempMacValue();
-
-    if ((state == GAP_ACL_STATE_CONNECTED) || (state == GAP_ACL_STATE_LE_CONNECTED)) {
-        SetLastConnedAddr(&bdAddr);
-        // 将数据存入设备列表
-        bool tag = CheckExistConnedList(*onClickBtCaseInfo);
-        if (!tag) {
-            AddConnedDevicesCase(*onClickBtCaseInfo);
-        }
-        ACLConnectionSuss(bdAddr);
-        bool retA2dp = a2dp_src_connect(&bdAddr);
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "a2dp_src_connect result %d", retA2dp);
-    } else {
-        ACLConnectionFail(bdAddr);
-    }
-}
-
-// 回调:ACL连接状态上报
-void GapAclStateChangedCallback(const bd_addr_t *bdAddr, gap_acl_state_t state, unsigned int reason)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bt GapAclStateChangedCallback state %d, reason %x succ or err", state, reason);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "addr: %02x%02x%02x%02x%02x%02x",
-        bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* mac下标 0 1 2 3 4 5 */
-        bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0]); /* mac下标 0 1 2 3 4 5 */
-    if ((gap_get_device_class(bdAddr) & 0x200) != 0) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GapAclStateChangedCallback: Mobile Phone Device");
-        return;
-    }
-    GraphicService::GetInstance()->PostGraphicEvent(std::bind(&BluetoothModel::BtGapAclStateChangedHandle,
-                                                                    BluetoothModel::GetInstance(), state, reason, *bdAddr));
-}
-
-// 回调:远端设备名称变化
-void BtRemoteNameChangedCallback(const bd_addr_t *bdAddr, const unsigned char *deviceName, unsigned char length)
-{
-    if ((gap_get_device_class(bdAddr) & 0x200) != 0) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtRemoteNameChangedCallback: Mobile Phone Device");
-        return;
-    }
-    BluetoothCaseInfo caseInfo{};
-    if (bdAddr == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BtRemoteNameChangedCallback addr nullptr");
-        return;
-    }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtRemoteNameChangedCallback addr: %02x%02x%02x%02x%02x%02x",
-                bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* mac下标 0 1 2 3 4 5 */
-                bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0]); /* mac下标 0 1 2 3 4 5 */
-
-    (void)memcpy_s(caseInfo.addr, BD_ADDR_LEN, bdAddr->addr, BD_ADDR_LEN);
-    int ret = memcpy_s(caseInfo.deviceName, BD_NAME_LEN, deviceName, length);
-    if (ret != EOK) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BtRemoteNameChangedCallback memcpy fail!");
-        return;
-    }
-    BluetoothModel::GetInstance()->ResetScanDevicesCase(caseInfo);
-}
-
-void BtIsAcceptConnOnSafeModeCallback(const bd_addr_t *bdAddr, bool *res)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtIsAcceptConnOnSafeModeCallback addr: %02x%02x%02x%02x%02x%02x set *res true",
-        bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* addr下标 3 4 5 */
-        bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0]); /* addr下标 0 1 2 */
-    *res = true;
-}
-
-static void A2dpSrcConnectstateChanged(bd_addr_t *bdAddr, int connState)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "a2dp_src_connectStateChangedCallback addr: %02x%02x%02x%02x%02x%02x connState: %x",
-        bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* 5 4 3 idx */
-        bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0], connState); /* 2 1 0 idx */
-    if ((gap_get_device_class(bdAddr) & 0x200) != 0) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "a2dp_src_connectstateChangedCb: Mobile Phone Device");
-        return;
-    }
-    if (connState == PROFILE_STATE_CONNECTED) {
-        avrcp_ct_connect(bdAddr);
-        PhoneAudioManagerSetDeviceConnState(OUT_BLUETOOTH_A2DP, AUDIO_DEVICE_CONNECTED);
-    }
-
-    if (connState == PROFILE_STATE_DISCONNECTED) {
-        PhoneAudioManagerSetDeviceConnState(OUT_BLUETOOTH_A2DP, AUDIO_DEVICE_DISCONNECTED);
-    }
-}
-
-static void A2dpSrcPlayingStateChanged(bd_addr_t *bdAddr, int playState)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "A2dpSrcPlayingStateChangedCallback addr: %02x%02x%02x%02x%02x%02x playState: %x",
-        bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* 5 4 3 idx */
-        bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0], playState); /* 2 1 0 idx */
-}
-
-static void A2dpSrcConfigureChanged(bd_addr_t *bdAddr, a2dp_codec_info_t *info)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "A2dpSrcConfigurationChangedCallback addr: %02x%02x%02x%02x%02x%02x ",
-        bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* 5 4 3 idx */
-        bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0]); /* 2 1 0 idx */
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "codec_priority: %04x codec_type: %04x sample_rate: %02x bits_per_sample: %02x channel_mode: %02x ",
-        info->codec_priority, info->codec_type, info->sample_rate, info->bits_per_sample, info->channel_mode);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "codec_specific1: %04x codec_specific2: %04x codec_specific3: %04x codec_specific4: %04x",
-        info->codec_specific1, info->codec_specific2, info->codec_specific3, info->codec_specific4);
-}
-
-static void BleConnStateChangeCallback(unsigned short connId, bd_addr_t *addr, gap_ble_conn_state_t connState,
-                                          gap_ble_pair_state_t pairState, gap_ble_disc_reason_t discReason)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleConnStateChangeCallback connId 0x%x, connState 0x%x, pairState 0x%x",
-                connId, connState, pairState);
-    if (GAP_BLE_STATE_DISCONNECTED == connState) { // restart ble adv when disconnected 
-        BleAdvStart();
-    } else {
-        BluetoothModel::GetInstance()->SetAdvStartState(false);
-    }
-}
-
-static void BleAdvStartCallback(uint8_t advId, adv_status_t status)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleAdvStartCallback advId: %d, status:%d\n", advId, status);
-    BluetoothModel::GetInstance()->SetAdvStartState(true);
-}
-
-static void BleAdvStopCallback(uint8_t advId, adv_status_t status)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleAdvStopCallback advId: %d, status:%d\n", advId, status);
-}
-
-static void BtGattsServiceAddCallback(uint8_t serverId, bt_uuid_t *uuid, uint16_t srvcHandle, errcode_t status)
-{
-    int ret;
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsServiceAddCallback 0x%x 0x%x 0x%x",
-        status, serverId, srvcHandle);
-
-    if ((uuid->uuid_len == sizeof(uint16_t)) && (*((uint16_t*)uuid->uuid) == 0x1FF0)) {
-        uint16_t id = 0x1FF1;
-        gatts_add_chara_info_t character;
-        uint16_t value = 0;
-
-        memset_s(&character, sizeof(gatts_add_chara_info_t), 0, sizeof(gatts_add_chara_info_t));
-        character.chara_uuid.uuid_len = sizeof(id);
-        memcpy_s(character.chara_uuid.uuid, sizeof(character.chara_uuid.uuid), (char *)&id, sizeof(id));
-        character.permissions = GATT_ATTRIBUTE_PERMISSION_WRITE;
-        character.properties = GATT_CHARACTER_PROPERTY_BIT_WRITE;
-        character.value_len = (uint16_t)sizeof(value);
-        character.value = (uint8_t *)(&value);
-
-        ret = gatts_add_characteristic(serverId, srvcHandle, &character);
-        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_add_characteristic ret 0x%x", ret);
-    }
-
-}
-
-static void BtGattsCharacteristicAddCallback(uint8_t serverId, bt_uuid_t *uuid, uint16_t srvcHandle, gatts_add_character_result_t *result, errcode_t status)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsCharacteristicAddCallback 0x%x 0x%x 0x%x",
-        status, serverId, srvcHandle);
-
-    if ((uuid->uuid_len == sizeof(uint16_t)) && (*((uint16_t*)uuid->uuid) == 0x1FF1)) {
-        int ret = gatts_start_service(serverId, srvcHandle);
-        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_start_service ret 0x%x", ret);
-    }
-}
-
-static void BtGattsDescriptorAddCallback(uint8_t serverId, bt_uuid_t *uuid, uint16_t srvcHandle, uint16_t descriptorHandle, errcode_t status)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsDescriptorAddCallback 0x%x 0x%x 0x%x 0x%x",
-        status, serverId, srvcHandle, descriptorHandle);
-}
-
-static void BtGattsServiceStartCallback(uint8_t serverId, uint16_t srvcHandle, errcode_t status)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsServiceStartCallback 0x%x 0x%x 0x%x", status, serverId, srvcHandle);
-}
-
-static void BtGattsServiceStopCallback(uint8_t serverId, uint16_t srvcHandle, errcode_t status)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsServiceStopCallback 0x%x 0x%x 0x%x", status, serverId, srvcHandle);
-}
-
-static void BtGattsServiceDeleteCallback(uint8_t serverId, errcode_t status)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsServiceDeleteCallback 0x%x 0x%x", status, serverId);
-}
-
-static void BtGattsRequestReadCallback(uint8_t serverId, uint16_t connId, gatts_req_read_cb_t *readCbPara, errcode_t status)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsRequestReadCallback");
-}
-
-static void BtGattsRequestWriteCallback(uint8_t serverId, uint16_t connId, gatts_req_write_cb_t *writeCbPara,  errcode_t status)
-{
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsRequestWriteCallback");
-}
-
-// 注册回调函数
-static gap_call_backs_t g_btGapCallBacks{};
-static a2dp_src_callbacks_t g_a2dpSrcCallbacks{};
-static gap_ble_callbacks_t g_gapBleCallbacks{};
-static gatts_callbacks_t g_btGattsCallbacks{};
-void BtInitCallBacks()
-{
-    g_btGapCallBacks.discovery_result_callback = BtGapDiscoveryResultCallback;
-    g_btGapCallBacks.discovery_state_changed_callback = BtGapDiscoveryStateChangedCallback;
-    g_btGapCallBacks.acl_state_changed_callbak = GapAclStateChangedCallback;
-    g_btGapCallBacks.read_remote_rssi_event_callback = BtGapReadRemoteRssiEventCallback;
-    g_btGapCallBacks.remote_name_changed_callback = BtRemoteNameChangedCallback;
-    g_btGapCallBacks.is_accept_conn_on_safe_mode_callback = BtIsAcceptConnOnSafeModeCallback;
-    g_btGapCallBacks.pair_status_changed_callback = BtGapPairStatusChangedCallback;
-    g_btGapCallBacks.pair_requested_callback = BtGapPairRequestedCallback;
-    g_btGapCallBacks.pair_confiremed_callback = BtGapPairConfirmedCallback;
-    gap_register_callbacks(&g_btGapCallBacks);
-
-    g_a2dpSrcCallbacks.connectstate_changed_cb = A2dpSrcConnectstateChanged;
-    g_a2dpSrcCallbacks.configuration_changed_cb = A2dpSrcConfigureChanged;
-    g_a2dpSrcCallbacks.playing_state_changed_cb = A2dpSrcPlayingStateChanged;
-    a2dp_src_register_callbacks(&g_a2dpSrcCallbacks);
-
-    g_gapBleCallbacks.conn_state_change_cb = BleConnStateChangeCallback;
-    g_gapBleCallbacks.start_adv_cb = BleAdvStartCallback;
-    g_gapBleCallbacks.stop_adv_cb = BleAdvStopCallback;
-    gap_ble_register_callbacks(&g_gapBleCallbacks);
-
-    g_btGattsCallbacks.add_service_cb = BtGattsServiceAddCallback;
-    g_btGattsCallbacks.add_characteristic_cb = BtGattsCharacteristicAddCallback;
-    g_btGattsCallbacks.add_descriptor_cb = BtGattsDescriptorAddCallback;
-    g_btGattsCallbacks.start_service_cb = BtGattsServiceStartCallback;
-    g_btGattsCallbacks.stop_service_cb = BtGattsServiceStopCallback;
-    g_btGattsCallbacks.delete_service_cb = BtGattsServiceDeleteCallback;
-    g_btGattsCallbacks.read_request_cb = BtGattsRequestReadCallback;
-    g_btGattsCallbacks.write_request_cb = BtGattsRequestWriteCallback;
-    g_btGattsCallbacks.mtu_changed_cb = NULL;
-    gatts_register_callbacks(&g_btGattsCallbacks);
-}
-
-void BtInitGatts(void)
-{
-    uint16_t id = 0x1FF0;
-    uint16_t ser_id = 0x1FFF;
-    uint8_t serverId = 0;
-    bt_uuid_t uuid;
-    int ret;
-
-    uuid.uuid_len = sizeof(ser_id);
-    memcpy_s(uuid.uuid, sizeof(uuid.uuid), (char *)&ser_id, sizeof(ser_id));
-    ret = gatts_register_server(&uuid, &serverId); /* 注册gatt server */
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_register_server ret: 0x%x serverId = 0x%x", ret, serverId);
-
-    uuid.uuid_len = sizeof(id);
-    memcpy_s(uuid.uuid, sizeof(uuid.uuid), (char *)&id, sizeof(id));
-    ret = gatts_add_service(serverId, &uuid, true);
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_add_service ret: 0x%x", ret);
-}
-
-static uint8_t Char2Num(int8_t c)
-{
-    if (c >= '0' && c <= '9') {
-        return (uint8_t)(c - '0');
-    } else if (c >= 'A' && c <= 'F') {
-        return (uint8_t)(c - 'A' + TEN);
-    } else if (c >= 'a' && c <= 'f') {
-        return (uint8_t)(c - 'a' + TEN);
-    } else {
-        return 0xFF;
-    }
-}
-
-static uint32_t GenerateUuidFromString(const char *str, uint8_t len, bt_uuid_t *uuid_out)
-{
-    int slen = (int)strnlen(str, len);
-    bool new_uuid = false;
-    if (uuid_out == NULL) {
-        return ERRCODE_INVALID_PARAM;
-    }
-
-    uuid_out->uuid_len = (uint8_t)slen / 2; /* 2: 2个字符组成一个字节,因此只取偶数个字符 */
-    for (int i = 0; i + 1 < slen; i += 2) { /* 2: 同上 */
-        uint8_t num1 = Char2Num(str[i]);
-        uint8_t num2 = Char2Num(str[i + 1]);
-        if (num1 == UINT8_MAX || num2 == UINT8_MAX) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "invalid input %c%c\n", str[i], str[i + 1]);
-            return ERRCODE_INVALID_PARAM;
-        }
-
-        uuid_out->uuid[i / 2] = (uint8_t)((num1 << BIT4) | num2); /* 2: 同上 */
-        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "%02x ", (uint8_t)(uuid_out->uuid[i / 2])); /* 2: 同上 */
-    }
-
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "\n");
-    return ERRCODE_SUCC;
-}
-
-void BtSppServerCreate(const char *spp_uuid, const char *name, uint8_t name_len)
-{
-    spp_create_socket_para_t param;
-    if (GenerateUuidFromString((const char *)spp_uuid, (uint8_t)strlen(spp_uuid), &param.uuid) != ERRCODE_SUCC) {
-        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "get uuid fail\n");
-        return;
-    }
-
-    param.socket_type = SPP_SOCKET_RFCOMM;
-    param.is_encrypt = true;
-
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "uuid: %s uuid_len: %u\n", spp_uuid, param.uuid.uuid_len);
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "socket_type: %x is_encrypt: %d name: %s nameLen: %u\n", param.socket_type,
-        param.is_encrypt, name, name_len);
-
-    int ret = spp_server_create(&param, name, name_len);
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "spp_server_create ret: %x\n", ret);
-}
-
-static int BtSppServerAcceptTaskBody(void *data)
-{
-    int server_id = (int)(intptr_t)data;
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "server_id: %x\n", server_id);
-
-    int ret = spp_server_accept(server_id);
-
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "spp_server_accept ret: %x\n", ret);
-
-    return OSAL_SUCCESS;
-}
-
-/* 等待client连接 */
-void BtSppServerAccept(uint8_t server_id)
-{
-    osal_task *task = osal_kthread_create(BtSppServerAcceptTaskBody, (void *)(uintptr_t)server_id,
-        "spp_server_accept_task", BT_SPP_TASK_STACK_SIZE);
-    if (task == NULL) {
-        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "create task fail\n");
-        return;
-    }
-
-    int ret = osal_kthread_set_priority(task, BT_SPP_TASK_PRI);
-    if (ret != OSAL_SUCCESS) {
-        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "set pri error: %08x\n", ret);
-    }
-
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "create task success.\n");
-}
-
-void BtInitSpp(void)
-{
-    char uuid[] = "1101";
-    char name[] = "COM1";
-    uint8_t name_len = strlen(name) + 1;
-    uint8_t server_id = 0;
-
-    /* 创建spp */
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "create spp server uuid=%s name=%s name_len=%d\n", uuid, name, name_len);
-    BtSppServerCreate(uuid, name, name_len);
-    BtSppServerAccept(server_id);
-}
-
-void BleAdvStart(void)
-{
-    int advId = 1;
-    if (BluetoothModel::GetInstance()->GetAdvStartState()) {
-        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleAdvStart already started");
-        gap_ble_stop_adv(advId);
-        osDelay(50);
-    }
-    gap_ble_adv_params_t adv_para;
-    memset_s(&adv_para, sizeof(gap_ble_adv_params_t), 0, sizeof(gap_ble_adv_params_t));
-    adv_para.min_interval = 0x30;
-    adv_para.max_interval = 0x60;
-    adv_para.adv_type = GAP_BLE_ADV_CONN_SCAN_UNDIR;
-    adv_para.channel_map = 0x7;
-    adv_para.duration = 0;
-    gap_ble_set_adv_param(advId, &adv_para);
-    gap_ble_set_local_appearance(GAP_BLE_APPEARANCE_TYPE_GENERIC_WATCH);
-    bool ret = gap_ble_start_adv(advId);
-    if (ret) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BleAdvStart bt gap_ble_start_adv  ret = 0x%x", ret);
-    }
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleAdvStart bt gap_ble_start_adv  ret = 0x%x", ret);
-}
-
-#ifdef __cplusplus
-}
-#endif
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: BluetoothModel view\r
+ * Author:\r
+ * Create: 2021-10-13\r
+ */\r
+#include "stdint.h"\r
+#include "BluetoothModel.h"\r
+#include "BluetoothPresenter.h"\r
+#include "ConnectPhonePresenter.h"\r
+#include "BluetoothView.h"\r
+#include "BluetoothItemView.h"\r
+#include "PlayersModel.h"\r
+#include "PhoneAudio.h"\r
+#include "graphic_service.h"\r
+#include "ui_service.h"\r
+\r
+#include "msg_center.h"\r
+\r
+#include "bts_def.h"\r
+#include "bts_gatt_stru.h"\r
+#include "bts_a2dp_source.h"\r
+#include "bts_gatt_server.h"\r
+#include "bts_le_gap.h"\r
+#include "bts_spp.h"\r
+#include "osal_task.h"\r
+#ifdef SUPPORT_ALIPAY_SEC\r
+#include "alipay_feature.h"\r
+#endif\r
+#include "bts_a2dp_sink.h"\r
+#include "bt_audio_hal_interface.h"\r
+#include "audio_manager_c_wrapper.h"\r
+#include "bts_avrcp_target.h"\r
+\r
+namespace OHOS {\r
+\r
+#define BT_SPP_TASK_STACK_SIZE 2048\r
+#define BT_SPP_TASK_PRI        20\r
+#define TEN                    10\r
+\r
+constexpr uint16_t BLUETOOTH_MAX_NUM = 20;\r
+\r
+#define MEDIA_A2DP_SNK_INTERFACE 1\r
+osal_timer g_a2dp_stream_accept_timer = {NULL, NULL, 0, 0};\r
+#define A2DP_STREAM_ACCEPT_TIMER_PERIOD 500\r
+AudioFormatConfig g_audio_format_config = {AUDIO_DEFAULT, 0, 0};\r
+BtAvrcpTgInftrerface g_avrcp_srv_infterface;\r
+\r
+\r
+void BluetoothModel::SetBluetoothCalleridStatus(int16_t value)\r
+{\r
+    callerid = value;\r
+}\r
+\r
+int BluetoothModel::GetBluetoothCalleridStatus(void)\r
+{\r
+    return callerid;\r
+}\r
+\r
+BluetoothModel::BluetoothModel()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothModel::BluetoothModel");\r
+}\r
+\r
+BluetoothModel *BluetoothModel::GetInstance(void)\r
+{\r
+    static BluetoothModel instance;\r
+    return &instance;\r
+}\r
+\r
+void BluetoothModel::Init()\r
+{\r
+    bool ret = enable_bt_stack();\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt enable_bt_stack ret = %d", ret);\r
+\r
+    BtInitCallBacks();\r
+#ifdef SUPPORT_ALIPAY_SEC\r
+    svr_alipay_bluetooth_init();\r
+#else\r
+    BtInitCallBacksEx();\r
+    BtInitGatts();\r
+#endif\r
+    BtInitSpp();\r
+\r
+    SetUpListCase();\r
+    SetUpConnedDevicesList();\r
+}\r
+\r
+void BluetoothModel::SetCaseListClear()\r
+{\r
+    btScansDevicesList_.clear();\r
+}\r
+\r
+bool BluetoothModel::CheckExistScanList(BluetoothCaseInfo caseInfo)\r
+{\r
+    std::list<BluetoothCaseInfo>::iterator node = btScansDevicesList_.begin();\r
+    if (btScansDevicesList_.empty()) {\r
+        return false;\r
+    }\r
+    while (node != btScansDevicesList_.end()) {\r
+        if ((caseInfo.addr[0] == node->addr[0]) && (caseInfo.addr[1] == node->addr[1])\r
+            && (caseInfo.addr[2] == node->addr[2]) && (caseInfo.addr[3] == node->addr[3])\r
+            && (caseInfo.addr[4] == node->addr[4]) && (caseInfo.addr[5] == node->addr[5])) {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "true");\r
+            return true;\r
+        }\r
+        node++;\r
+    }\r
+    return false;\r
+}\r
+\r
+void BluetoothModel::SetUpListCase()\r
+{\r
+    SetCaseListClear();\r
+}\r
+\r
+std::list<BluetoothCaseInfo>& BluetoothModel::GetCase()\r
+{\r
+    return btScansDevicesList_;\r
+}\r
+\r
+void BluetoothModel::AddCase(BluetoothCaseInfo caseInfo)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AddCase::caseInfo addr: %02x%02x%02x%02x%02x%02x",\r
+        caseInfo.addr[5], caseInfo.addr[4], caseInfo.addr[3], /* mac下标 0 1 2 3 4 5 */\r
+        caseInfo.addr[2], caseInfo.addr[1], caseInfo.addr[0]);\r
+    if (btScansDevicesList_.size() >= BLUETOOTH_MAX_NUM) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "btScansDevicesList_.size is BLUETOOTH_MAX_NUM");\r
+        return;\r
+    } else {\r
+        btScansDevicesList_.push_back(caseInfo);\r
+    }\r
+}\r
+\r
+void BluetoothModel::SetScansCaseRssi(const bd_addr_t *bdAddr, int rssi)\r
+{\r
+    for (auto it = btScansDevicesList_.begin(); it != btScansDevicesList_.end(); it++) {\r
+        if ((it->addr[0] == bdAddr->addr[0]) && (it->addr[1] == bdAddr->addr[1])\r
+            && (it->addr[2] == bdAddr->addr[2]) && (it->addr[3] == bdAddr->addr[3])\r
+            && (it->addr[4] == bdAddr->addr[4]) && (it->addr[5] == bdAddr->addr[5])) {\r
+                it->temp = rssi;\r
+                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "btScansDevicesList_ rssi:%d deviceName:%s", it->temp, it->deviceName);\r
+        }\r
+    }\r
+}\r
+\r
+\r
+bool CompBuletoothInfo(const BluetoothCaseInfo& a, const BluetoothCaseInfo& b)\r
+{\r
+    if (a.temp > b.temp) {\r
+        return true;\r
+    }\r
+    return false;\r
+}\r
+\r
+void BluetoothModel::SortScansCaseRssi()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothModel::SortScansCaseRssi");\r
+    btScansDevicesList_.sort(CompBuletoothInfo);\r
+}\r
+\r
+void BluetoothModel::ResetScanDevicesCase(const BluetoothCaseInfo& caseInfo)\r
+{\r
+    for (auto it = btScansDevicesList_.begin(); it != btScansDevicesList_.end(); it++) {\r
+        if ((it->addr[0] == caseInfo.addr[0]) && (it->addr[1] == caseInfo.addr[1])\r
+            && (it->addr[2] == caseInfo.addr[2]) && (it->addr[3] == caseInfo.addr[3])\r
+            && (it->addr[4] == caseInfo.addr[4]) && (it->addr[5] == caseInfo.addr[5])) {\r
+                (void)memcpy_s(it->deviceName, BD_NAME_LEN,\r
+                               caseInfo.deviceName, BD_NAME_LEN);\r
+                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ResetConnedDevicesCase deviceName:%s", it->deviceName);\r
+        }\r
+    }\r
+}\r
+\r
+/* 已配对设备队列 */\r
+void BluetoothModel::SetConnedDevicesListClear()\r
+{\r
+    btConnedDevicesList_->Clear();\r
+}\r
+\r
+void BluetoothModel::SetUpConnedDevicesList()\r
+{\r
+    if (btConnedDevicesList_ == nullptr) {\r
+        btConnedDevicesList_ = new List<BluetoothCaseInfo>();\r
+        if (btConnedDevicesList_ == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothModel btConnedDevicesList_ new fail");\r
+            return;\r
+        }\r
+        SetConnedDevicesListClear();\r
+        unsigned int connedDevicesNum = 0;\r
+        bool ret = gap_get_paired_devices_num(&connedDevicesNum);\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Setup GetPariedDevicesNum ret = %d, num = %d", ret, connedDevicesNum);\r
+\r
+        gap_paired_device_info_t *devInfo = (gap_paired_device_info_t*)malloc(sizeof(gap_paired_device_info_t) *connedDevicesNum);\r
+        if (devInfo ==  NULL) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DevInfo malloc failed %u", sizeof(gap_paired_device_info_t) *connedDevicesNum);\r
+            return;\r
+        }\r
+        ret =  gap_get_paired_devices_list(devInfo, (int *)&connedDevicesNum);\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetUpConnedDevicesList gap_get_paired_devices_list ret = %d", ret);\r
+\r
+        BluetoothCaseInfo caseInfo{};\r
+        for (int i = 0; i < static_cast<int>(connedDevicesNum); ++i) {\r
+            if ((gap_get_device_class((const bd_addr_t *)devInfo[i].addr.addr) & 0x200) != 0) {\r
+                continue;\r
+            }\r
+            (void)memcpy_s(caseInfo.addr, BD_ADDR_LEN,\r
+                           devInfo[i].addr.addr, BD_ADDR_LEN);\r
+            (void)memcpy_s(caseInfo.deviceName, BD_NAME_LEN,\r
+                           devInfo[i].device_name, BD_NAME_LEN);\r
+            AddConnedDevicesCase(caseInfo);\r
+        }\r
+        free(devInfo);\r
+    }\r
+}\r
+\r
+void BluetoothModel::AddConnedDevicesCase(BluetoothCaseInfo caseInfo)\r
+{\r
+    if (btConnedDevicesList_ == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "btConnedDevicesList_ nullptr");\r
+        return;\r
+    }\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AddConnedDevicesCase::caseInfo addr: %02x%02x%02x%02x%02x%02x",\r
+        caseInfo.addr[5], caseInfo.addr[4], caseInfo.addr[3], /* mac下标 0 1 2 3 4 5 */\r
+        caseInfo.addr[2], caseInfo.addr[1], caseInfo.addr[0]);\r
+    if (btConnedDevicesList_->Size() >= BLUETOOTH_MAX_NUM) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "btConnedDevicesList_->Size is BLUETOOTH_MAX_NUM");\r
+        return;\r
+    } else {\r
+        btConnedDevicesList_->PushBack(caseInfo);\r
+    }\r
+}\r
+\r
+List<BluetoothCaseInfo>& BluetoothModel::GetConnedDevicesCase()\r
+{\r
+    return *btConnedDevicesList_;\r
+}\r
+\r
+void BluetoothModel::SetBtStatus(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetBtStatus tempMacValue: %02x%02x%02x%02x%02x%02x",\r
+        tempMacValue.addr[5], tempMacValue.addr[4], tempMacValue.addr[3], /* macϱê 0 1 2 3 4 5 */\r
+        tempMacValue.addr[2], tempMacValue.addr[1], tempMacValue.addr[0]); /* macϱê 0 1 2 3 4 5 */\r
+    aclConnected = bt_is_acl_connected((const bd_addr_t*)&tempMacValue.addr);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "aclConnected %d", aclConnected);\r
+}\r
+\r
+bool BluetoothModel::GetAclConnected(void)\r
+{\r
+    return aclConnected;\r
+}\r
+\r
+void BluetoothModel::SetTempMacValue(BluetoothCaseInfo *caseInfo)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetTempMacValue: %02x%02x%02x%02x%02x%02x",\r
+                  caseInfo->addr[5], caseInfo->addr[4], caseInfo->addr[3], /* macϱê 0 1 2 3 4 5 */\r
+                  caseInfo->addr[2], caseInfo->addr[1], caseInfo->addr[0]); /* macϱê 0 1 2 3 4 5 */\r
+    (void)memcpy_s(tempMacValue.addr, BD_ADDR_LEN,\r
+                   caseInfo->addr, BD_ADDR_LEN);\r
+    (void)memcpy_s(tempMacValue.deviceName, BD_NAME_LEN,\r
+                   caseInfo->deviceName, BD_NAME_LEN);\r
+}\r
+\r
+BluetoothCaseInfo *BluetoothModel::GetTempMacValue(void)\r
+{\r
+    return &tempMacValue;\r
+}\r
+\r
+void BluetoothModel::SetLastConnedAddr(const bd_addr_t *addr)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetLastConnedAddr: %02x%02x%02x%02x%02x%02x",\r
+                  addr->addr[5], addr->addr[4], addr->addr[3], /* macϱê 0 1 2 3 4 5 */\r
+                  addr->addr[2], addr->addr[1], addr->addr[0]); /* macϱê 0 1 2 3 4 5 */\r
+    (void)memcpy_s(lastConnedAddr.addr, BD_ADDR_LEN, addr->addr, BD_ADDR_LEN);\r
+}\r
+\r
+bd_addr_t *BluetoothModel::GetLastConnedAddr(void)\r
+{\r
+    return &lastConnedAddr;\r
+}\r
+\r
+void BluetoothModel::SetConnectionView(BluetoothItemView *item)\r
+{\r
+    selectItemView = item;\r
+}\r
+\r
+BluetoothItemView *BluetoothModel::GetConnectionView()\r
+{\r
+    return selectItemView;\r
+}\r
+\r
+\r
+void BluetoothModel::SetTagReconnectJump(bool tag)\r
+{\r
+    tagReconnectJump = tag;\r
+}\r
+\r
+bool BluetoothModel::GetTagReconnectJump(void)\r
+{\r
+    return tagReconnectJump;\r
+}\r
+\r
+void BluetoothModel::SetCurView(int16_t viewNum)\r
+{\r
+    curView = viewNum;\r
+}\r
+\r
+int BluetoothModel::GetCurView(void)\r
+{\r
+    return curView;\r
+}\r
+\r
+void BluetoothModel::SetTagConnectView(bool tag)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothModel::SetTagConnectView:%d", tag);\r
+    tagConnectView = tag;\r
+}\r
+\r
+// 判断是否需要跳转连接成功\失败界面(已退出蓝牙模块)\r
+bool BluetoothModel::IsTagConnectView(void)\r
+{\r
+    return tagConnectView;\r
+}\r
+\r
+void BluetoothModel::SetTagDisconnectView(bool tag)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothModel::SetTagDisconnectView:%d", tag);\r
+    tagDisconnectView = tag;\r
+}\r
+\r
+// 判断是否需要跳转连接失败界面\r
+bool BluetoothModel::IsTagDisconnectView(void)\r
+{\r
+    return tagDisconnectView;\r
+}\r
+\r
+void BluetoothModel::SetTagConnectNew(bool tag)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothModel::SetTagConnectNew:%d", tag);\r
+    tagConnectNew = tag;\r
+}\r
+\r
+void BluetoothModel::SetTagReturnToDeviceListView(bool tag)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothModel::SetTagReturnToDeviceListView:%d", tag);\r
+    tagReturnToDeviceListView = tag;\r
+}\r
+\r
+bool BluetoothModel::IsTagReturnToDeviceListView(void)\r
+{\r
+    return tagReturnToDeviceListView;\r
+}\r
+\r
+// 判断断开连接时是否需要马上连接新设备\r
+bool BluetoothModel::IsTagConnectNew(void)\r
+{\r
+    return tagConnectNew;\r
+}\r
+\r
+void BluetoothModel::SetTagScanDeviceClicked(bool tag)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothModel::SetTagScanDeviceClicked:%d", tag);\r
+    tagScanDeviceClicked = tag;\r
+}\r
+\r
+// 判断是否已点击设备请求连接\r
+bool BluetoothModel::IsTagScanDeviceClicked(void)\r
+{\r
+    return tagScanDeviceClicked;\r
+}\r
+\r
+bool BluetoothModel::CheckExistConnedList(BluetoothCaseInfo caseInfo)\r
+{\r
+    ListNode<BluetoothCaseInfo> *node = btConnedDevicesList_ ->Begin();\r
+    if (node == nullptr) {\r
+        return false;\r
+    } else if ((caseInfo.addr[0] == 0) && (caseInfo.addr[1] == 0)\r
+                && (caseInfo.addr[2] == 0) && (caseInfo.addr[3] == 0)\r
+                && (caseInfo.addr[4] == 0) && (caseInfo.addr[5] == 0)) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CheckExistConnedList false addr: 000000000000");\r
+        return true;\r
+    }\r
+    while (node != btConnedDevicesList_ ->End()) {\r
+        if ((caseInfo.addr[0] == node->data_.addr[0]) && (caseInfo.addr[1] == node->data_.addr[1])\r
+            && (caseInfo.addr[2] == node->data_.addr[2]) && (caseInfo.addr[3] == node->data_.addr[3])\r
+            && (caseInfo.addr[4] == node->data_.addr[4]) && (caseInfo.addr[5] == node->data_.addr[5])) {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CheckExistConnedList true");\r
+            return true;\r
+        }\r
+        node = node->next_;\r
+    }\r
+    return false;\r
+}\r
+\r
+bool BluetoothModel::FindNameByAddr(BluetoothCaseInfo &listInfo, BluetoothCaseInfo *caseInfo)\r
+{\r
+    if ((listInfo.addr[0] == caseInfo->addr[0]) && (listInfo.addr[1] == caseInfo->addr[1]) &&\r
+        (listInfo.addr[2] == caseInfo->addr[2]) && (listInfo.addr[3] == caseInfo->addr[3]) &&\r
+        (listInfo.addr[4] == caseInfo->addr[4]) && (listInfo.addr[5] == caseInfo->addr[5])) {\r
+        (void)memcpy_s(caseInfo->deviceName, BD_NAME_LEN, listInfo.deviceName, BD_NAME_LEN);\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FindNameFromList success, deviceName:%s", listInfo.deviceName);\r
+        return true;\r
+    } else {\r
+        return false;\r
+    }\r
+}\r
+\r
+bool BluetoothModel::FindNameFromList(BluetoothCaseInfo *caseInfo)\r
+{\r
+    ListNode<BluetoothCaseInfo> *node = btConnedDevicesList_->Begin();\r
+    if (!btScansDevicesList_.empty()) {\r
+        for (auto it = btScansDevicesList_.begin(); it != btScansDevicesList_.end(); it++) {\r
+            if (FindNameByAddr(*it, caseInfo)) {\r
+                return true;\r
+            }\r
+        }\r
+    }\r
+    if (node != nullptr) {\r
+        while (node != btConnedDevicesList_->End()) {\r
+            if (FindNameByAddr(node->data_, caseInfo)) {\r
+                return true;\r
+            }\r
+            node = node->next_;\r
+        }\r
+    }\r
+    return false;\r
+}\r
+\r
+bool BluetoothModel::GetBluetoothAclState(void)\r
+{\r
+    if ((lastConnedAddr.addr[0] == 0) && (lastConnedAddr.addr[1] == 0) &&\r
+        (lastConnedAddr.addr[2] == 0) && (lastConnedAddr.addr[3] == 0) &&\r
+        (lastConnedAddr.addr[4] == 0) && (lastConnedAddr.addr[5] == 0)) {\r
+        return false;\r
+    } else {\r
+        return bt_is_acl_connected(&lastConnedAddr);\r
+    }\r
+}\r
+\r
+bool BluetoothModel::GetAdvStartState(void)\r
+{\r
+    return advStartState;\r
+}\r
+void BluetoothModel::SetAdvStartState(bool state)\r
+{\r
+    advStartState = state;\r
+}\r
+\r
+int BluetoothModel::ConnectRemoteDevice(const bd_addr_t *addr)\r
+{\r
+    errcode_t retVal = gap_connect_remote_device(addr);\r
+    (void)memcpy_s(&remoteConnectAddr, sizeof(bd_addr_t), addr, sizeof(bd_addr_t));\r
+    return retVal;\r
+}\r
+\r
+bool BluetoothModel::ConnectRemoteCheck(const bd_addr_t *addr)\r
+{\r
+    bool ret;\r
+    if ((remoteConnectAddr.addr[0] == addr->addr[0]) && (remoteConnectAddr.addr[1] == addr->addr[1]) &&\r
+        (remoteConnectAddr.addr[2] == addr->addr[2]) && (remoteConnectAddr.addr[3] == addr->addr[3]) &&\r
+        (remoteConnectAddr.addr[4] == addr->addr[4]) && (remoteConnectAddr.addr[5] == addr->addr[5])) {\r
+        ret = true;\r
+        (void)memset_s(&remoteConnectAddr, sizeof(bd_addr_t), 0, sizeof(bd_addr_t));\r
+    } else {\r
+        ret = false;\r
+    }\r
+    return ret;\r
+}\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+// 回调: gap_read_remote_rssi_value 接口的数据上报\r
+void BtGapReadRemoteRssiEventCallback(const bd_addr_t *bdAddr, int rssi, int status)\r
+{\r
+    UNUSED(status);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtGapReadRemoteRssiEventCallback addr: %02x%02x%02x%02x%02x%02x",\r
+        bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* mac下标 0 1 2 3 4 5 */\r
+        bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0]); /* mac下标 0 1 2 3 4 5 */\r
+    BluetoothModel::GetInstance()->SetScansCaseRssi(bdAddr, rssi);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bt BtGapReadRemoteRssiEventCallback SetSortCaseRssi: %d status: %d", rssi, status);\r
+}\r
+\r
+// 回调:发现状态变化上报/扫描结束\r
+void BtGapDiscoveryStateChangedCallback(int status)\r
+{\r
+    UNUSED(status);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bt BtGapDiscoveryStateChangedCallback %d", status);\r
+}\r
+\r
+static void ChangeScanView()\r
+{\r
+    BluetoothEarPhoneView *bluetoothEarPhoneView = BluetoothEarPhoneView::GetInstance();\r
+    if (bluetoothEarPhoneView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarPhoneView nullptr");\r
+        return;\r
+    }\r
+    bluetoothEarPhoneView->setScanStatus(false);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Bt scan one jumpView");\r
+    if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
+        JumpView *jumpView = JumpView::GetInstance();\r
+        if (jumpView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");\r
+            return;\r
+        }\r
+        jumpView->ChangeView(JumpView::BluetoothJumpViewNum::BLUETOOTHEARPHONEVIEW,\r
+                             JumpView::BluetoothJumpViewNum::BLUETOOTHEARLISTVIEW);\r
+    } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
+        MainBluetoothView *mainBluetoothView = MainBluetoothView::GetInstance();\r
+        if (mainBluetoothView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mainBluetoothView GetInstance fail");\r
+            return;\r
+        }\r
+        mainBluetoothView->ChangeView(BLUETOOTHEARPHONEVIEW, BLUETOOTHEARLISTVIEW);\r
+    }\r
+    // 暂停动画\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtAnimatorStop bk");\r
+    bluetoothEarPhoneView->BtAnimatorStop();\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtAnimatorStop");\r
+}\r
+\r
+void BluetoothModel::BtGapDiscoveryResultCallbakHandle(const bd_addr_t &bdAddr)\r
+{\r
+    BluetoothCaseInfo caseInfo{};\r
+    (void)memcpy_s(caseInfo.addr, BD_ADDR_LEN, bdAddr.addr, BD_ADDR_LEN);\r
+\r
+    unsigned char nameLen = BD_NAME_LEN;\r
+    bool getNameRet = gap_get_device_name(&bdAddr, caseInfo.deviceName, &nameLen);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gap_discovery_result_callback getNameRet(bool): %d nameLen: %d name:%s",\r
+                  getNameRet, nameLen, caseInfo.deviceName);\r
+\r
+    if (nameLen == 0) { // 过滤未扫描到名字的设备\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "nameLen == 0 return");\r
+        return;\r
+    }\r
+    // 去重操作\r
+    bool tag = BluetoothModel::GetInstance()->CheckExistScanList(caseInfo);\r
+    if (!tag) {\r
+        BluetoothModel::GetInstance()->AddCase(caseInfo); // 增加扫描设备信息\r
+    }\r
+    bool ret = gap_read_remote_rssi_value(&bdAddr); // 获取rssi\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gap_read_remote_rssi_value ret = %d", ret);\r
+    BluetoothEarPhoneView *bluetoothEarPhoneView = BluetoothEarPhoneView::GetInstance();\r
+    if (bluetoothEarPhoneView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarPhoneView nullptr");\r
+        return;\r
+    }\r
+    tag = bluetoothEarPhoneView->getScanStatus();\r
+    if (tag) { // 跳转\r
+        ChangeScanView();\r
+    } else {\r
+        BluetoothEarListView *bluetoothEarListView = BluetoothEarListView::GetInstance();\r
+        if (bluetoothEarListView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarListView nullptr");\r
+            return;\r
+        }\r
+        if (bluetoothEarListView->GetScanUIList() == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetScanUIList nullptr");\r
+            return;\r
+        } // 刷新\r
+        bluetoothEarListView->GetScanUIList()->RefreshList();\r
+    }\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bt BtGapDiscoveryResultCallback end");\r
+}\r
+\r
+void BtGapPairStatusChangedCallback(const bd_addr_t *bdAddr, int status)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtGapPairStatusChangedCallback addr: ****%02x%02x%02x%02x status: %d\n",\r
+        bdAddr->addr[3], bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0], status); /* addr下标 0 1 2 3 */\r
+    if (status == GAP_PAIR_PAIRED) {\r
+        if (ConnectPhonePresenter::GetInstance() != nullptr) {\r
+            NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);\r
+        }\r
+    }\r
+}\r
+\r
+void BtGapPairRequestedCallback(const bd_addr_t *bdAddr)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtGapPairRequestedCallback addr: ****%02x%02x%02x%02x\n",\r
+        bdAddr->addr[3], bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0]); /* addr下标 0 1 2 3 */\r
+}\r
+\r
+void BtGapPairConfirmedCallback(const bd_addr_t *bdAddr, int req_type, int number)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtGapPairConfirmedCallback addr: ****%02x%02x%02x%02x req_type: %d number: %d\n",\r
+        bdAddr->addr[3], bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0], /* addr下标 0 1 2 3 */\r
+        req_type, number);\r
+}\r
+\r
+// 回调:扫描结果处理/发现结果上报\r
+void BtGapDiscoveryResultCallback(const bd_addr_t *bdAddr)\r
+{\r
+    if ((gap_get_device_class(bdAddr) & 0x200) != 0) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtGapDiscoveryResultCallback: Mobile Phone Device");\r
+        return;\r
+    }\r
+\r
+    if (bdAddr == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "addr nullptr");\r
+        return;\r
+    }\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gap_discovery_result_callback addr: %02x%02x%02x%02x%02x%02x",\r
+        bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* mac下标 0 1 2 3 4 5 */\r
+        bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0]); /* mac下标 0 1 2 3 4 5 */\r
+    GraphicService::GetInstance()->PostGraphicEvent(std::bind(&BluetoothModel::BtGapDiscoveryResultCallbakHandle,\r
+                                                              BluetoothModel::GetInstance(), *bdAddr));\r
+}\r
+\r
+void HandleBeforeChangeView()\r
+{\r
+    int curView = BluetoothModel::GetInstance()->GetCurView();\r
+    if (curView == BLUETOOTHEARPHONEVIEW) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HandleBeforeChangeView curView == BLUETOOTHEARPHONEVIEW");\r
+        BluetoothEarPhoneView *bluetoothEarPhoneView = BluetoothEarPhoneView::GetInstance();\r
+        if (bluetoothEarPhoneView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleBeforeChangeView bluetoothEarPhoneView == nullptr");\r
+            return;\r
+        }\r
+        bluetoothEarPhoneView->BtAnimatorStop();\r
+        bluetoothEarPhoneView->StopBtDiscovery();\r
+    } else if (curView == BLUETOOTHEARLISTVIEW) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HandleBeforeChangeView curView == BLUETOOTHEARLISTVIEW");\r
+        BluetoothEarPhoneView *bluetoothEarPhone = BluetoothEarPhoneView::GetInstance();\r
+        if (bluetoothEarPhone == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleBeforeChangeView bluetoothEarPhoneView == nullptr");\r
+            return;\r
+        }\r
+        bluetoothEarPhone->StopBtDiscovery();\r
+        BluetoothItemView *pbItermView = BluetoothModel::GetInstance()->GetConnectionView();\r
+        if (pbItermView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleBeforeChangeView The GetConnectionView get failed.");\r
+            return;\r
+        }\r
+        pbItermView->ConnectAnimatorStop();\r
+        BluetoothModel::GetInstance()->SetConnectionView(nullptr);\r
+    } else if (curView == BLUETOOTHRECONNECTVIEW) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HandleBeforeChangeView curView == BLUETOOTHRECONNECTVIEW");\r
+        BluetoothReconnectView *bluetoothReconnectView = BluetoothReconnectView::GetInstance();\r
+        if (bluetoothReconnectView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleBeforeChangeView bluetoothReconnectView == nullptr");\r
+            return;\r
+        }\r
+        bluetoothReconnectView->BtReconnectStop();\r
+    }\r
+}\r
+\r
+static void ACLConnectionSuss(const bd_addr_t &bdAddr)\r
+{\r
+    // 判断是否已退出蓝牙模块(无需跳转)\r
+    bool tagConnectView = BluetoothModel::GetInstance()->IsTagConnectView();\r
+    if (tagConnectView == false) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GapAclStateChangedCallback tagConnectView == false");\r
+        return;\r
+    }\r
+    // 成功提示\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GAP_ACL_STATE_CONNECTED");\r
+    HandleBeforeChangeView();\r
+    if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
+        JumpView *jumpView = JumpView::GetInstance();\r
+        if (jumpView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");\r
+            return;\r
+        }\r
+        jumpView->ChangeView(BluetoothModel::GetInstance()->GetCurView(),\r
+                             JumpView::BluetoothJumpViewNum::TIPSSUCCMESSAGEVIEW);\r
+    } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
+        MainBluetoothView *mainBluetoothView = MainBluetoothView::GetInstance();\r
+        if (mainBluetoothView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mainBluetoothView GetInstance fail");\r
+            return;\r
+        }\r
+        mainBluetoothView->ChangeView(BluetoothModel::GetInstance()->GetCurView(), TIPSSUCCMESSAGEVIEW);\r
+    }\r
+    TipsSuccMessageView *tipsSuccMessageView = TipsSuccMessageView::GetInstance();\r
+    if (tipsSuccMessageView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ACLConnectionSuss tipsSuccMessageView GetInstance fail");\r
+        return;\r
+    }\r
+    tipsSuccMessageView->RefreshNameLabel(bdAddr);\r
+}\r
+\r
+static void ACLConnectionFail(const bd_addr_t &bdAddr)\r
+{\r
+    // 判断是否已退出蓝牙模块(无需跳转)\r
+    bool tagConnectView = BluetoothModel::GetInstance()->IsTagConnectView();\r
+    // 判断是否无需跳转到失败界面\r
+    bool tagDisconnectView = BluetoothModel::GetInstance()->IsTagDisconnectView();\r
+    if (tagConnectView == false || tagDisconnectView == false) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GapAclStateChangedCallback tagDisconnectView == false");\r
+        return;\r
+    }\r
+    // 失败提示页\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "conn fail");\r
+    HandleBeforeChangeView();\r
+    if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
+        JumpView *jumpView = JumpView::GetInstance();\r
+        if (jumpView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView GetInstance fail");\r
+            return;\r
+        }\r
+        jumpView->ChangeView(BluetoothModel::GetInstance()->GetCurView(),\r
+                             JumpView::BluetoothJumpViewNum::TIPSCONNFAILMESSAGEVIEW);\r
+    } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
+        MainBluetoothView *mainBluetoothView = MainBluetoothView::GetInstance();\r
+        if (mainBluetoothView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mainBluetoothView GetInstance fail");\r
+            return;\r
+        }\r
+        mainBluetoothView->ChangeView(BluetoothModel::GetInstance()->GetCurView(), TIPSCONNFAILMESSAGEVIEW);\r
+    }\r
+    TipsConnFailMessageView *tipsConnFailMessageView = TipsConnFailMessageView::GetInstance();\r
+    if (tipsConnFailMessageView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ACLConnectionFail tipsConnFailMessageView GetInstance fail");\r
+        return;\r
+    }\r
+    tipsConnFailMessageView->RefreshNameLabel(bdAddr);\r
+}\r
+\r
+static void DisconnectBluetoothPause()\r
+{\r
+    int64_t playerCurrentTime;\r
+    int64_t playerMusicDuration;\r
+    int64_t playerProgressVlaue;\r
+    if (PlayersModel::GetInstance()->GetPlayerCtr() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AclStateChangedCallback GetPlayerCtr() == nullptr");\r
+        return;\r
+    }\r
+    PlayersModel::GetInstance()->GetPlayerCtr()->Pause();\r
+    PlayersModel::GetInstance()->SetPlayButtonState(false);\r
+    PlayersModel::GetInstance()->GetPlayerCtr()->GetCurrentTime(playerCurrentTime);\r
+    PlayersModel::GetInstance()->GetPlayerCtr()->GetDuration(playerMusicDuration);\r
+    if (playerMusicDuration == 0) { // 0:除数保护\r
+        playerProgressVlaue = 100; // 100:进度条系数\r
+    } else {\r
+        playerProgressVlaue = (playerCurrentTime * 100) / playerMusicDuration; // 100:百分比系数\r
+    }\r
+    PlayersModel::GetInstance()->SetCircleProgress(playerProgressVlaue);\r
+    PlayersView *playersView = PlayersView::GetInstance();\r
+    if (playersView != nullptr) {\r
+        playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::UNSELECTED);\r
+        if (playersView->GetPlaybackProgress() == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AclStateChangedCallback playersView->GetPlaybackProgress() == nullptr");\r
+            return;\r
+        }\r
+        playersView->GetPlaybackProgress()->SetValue(playerProgressVlaue);\r
+    }\r
+}\r
+\r
+static void DisconnectedHandle()\r
+{\r
+    DisconnectBluetoothPause();\r
+    BluetoothModel::GetInstance()->SetTagDisconnectView(false);\r
+    BluetoothDeviceListView *bluetoothDeviceListView = BluetoothDeviceListView::GetInstance();\r
+    if (bluetoothDeviceListView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AclStateChangedCallback bluetoothDeviceListView  == nullptr");\r
+        return;\r
+    }\r
+    UIList *deviceList = bluetoothDeviceListView->GetDeviceUIList();\r
+    if (deviceList == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisconnectedHandle deviceList nullptr");\r
+        return;\r
+    }\r
+    deviceList->RefreshList();\r
+    BluetoothOptionsView *bluetoothOptionsView = BluetoothOptionsView::GetInstance();\r
+    if (bluetoothOptionsView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AclStateChangedCallback bluetoothOptionsView  == nullptr");\r
+        return;\r
+    }\r
+    bluetoothOptionsView->RefreshText();\r
+}\r
+\r
+void BluetoothModel::BtGapAclStateChangedHandle(gap_acl_state_t state, unsigned int reason, const bd_addr_t &bdAddr)\r
+{\r
+    if ((state == GAP_ACL_STATE_CONNECTED) || (state == GAP_ACL_STATE_LE_CONNECTED)) {\r
+        SendMsgToUIService(BT_CONNECTED_TO_UI, 0, NULL, 0);\r
+    } else {\r
+        SendMsgToUIService(BT_DISCONNECTED_TO_UI, 0, NULL, 0);\r
+    }\r
+\r
+    bool tag = BluetoothModel::GetInstance()->IsTagScanDeviceClicked();\r
+    if ((reason == 0x13) || (reason == 0x14) || (reason == 0x15) || (reason == 0x3D) || (reason == 0x08 && tag == false)) { // 连接断开\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "The peer end is disconnected.");\r
+        DisconnectedHandle();\r
+    } else if (reason == 0x16) { // 主动断开连接\r
+        DisconnectedHandle();\r
+        BluetoothCaseInfo *onClickBtCaseInfo = BluetoothModel::GetInstance()->GetTempMacValue();\r
+        if (BluetoothModel::GetInstance()->IsTagConnectNew()) {\r
+            errcode_t retVal = ConnectRemoteDevice((const bd_addr_t *)&onClickBtCaseInfo->addr);\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectRemoteDevice retVal =  %d", retVal);\r
+        }\r
+    } else if ((reason == 0xb) || (reason > 0x45)) { // 0xb:重复点击连接按钮 0x45:acl状态最大参数\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "reason is false.");\r
+        SetTagDisconnectView(false);\r
+    }\r
+\r
+    BluetoothCaseInfo *onClickBtCaseInfo = GetTempMacValue();\r
+\r
+    if ((state == GAP_ACL_STATE_CONNECTED) || (state == GAP_ACL_STATE_LE_CONNECTED)) {\r
+        SetLastConnedAddr(&bdAddr);\r
+        // 将数据存入设备列表\r
+        bool tag = CheckExistConnedList(*onClickBtCaseInfo);\r
+        if (!tag) {\r
+            AddConnedDevicesCase(*onClickBtCaseInfo);\r
+        }\r
+        ACLConnectionSuss(bdAddr);\r
+    } else {\r
+        ACLConnectionFail(bdAddr);\r
+    }\r
+\r
+    if ((state == GAP_ACL_STATE_CONNECTED) || (state == GAP_ACL_STATE_LE_CONNECTED)) {\r
+        if (BluetoothModel::GetInstance()->ConnectRemoteCheck(&bdAddr)) {\r
+            bool retA2dp = a2dp_src_connect(&bdAddr);\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "a2dp_src_connect result %d", retA2dp);\r
+        } else {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ingore a2dp_src_connect");\r
+        }\r
+    }\r
+}\r
+\r
+// 回调:ACL连接状态上报\r
+void GapAclStateChangedCallback(const bd_addr_t *bdAddr, gap_acl_state_t state, unsigned int reason)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bt GapAclStateChangedCallback state %d, reason %x succ or err", state, reason);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "addr: %02x%02x%02x%02x%02x%02x",\r
+        bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* mac下标 0 1 2 3 4 5 */\r
+        bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0]); /* mac下标 0 1 2 3 4 5 */\r
+    if ((gap_get_device_class(bdAddr) & 0x200) != 0) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GapAclStateChangedCallback: Mobile Phone Device");\r
+        return;\r
+    }\r
+    GraphicService::GetInstance()->PostGraphicEvent(std::bind(&BluetoothModel::BtGapAclStateChangedHandle,\r
+                                                    BluetoothModel::GetInstance(), state, reason, *bdAddr));\r
+}\r
+\r
+// 回调:远端设备名称变化\r
+void BtRemoteNameChangedCallback(const bd_addr_t *bdAddr, const unsigned char *deviceName, unsigned char length)\r
+{\r
+    if ((gap_get_device_class(bdAddr) & 0x200) != 0) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtRemoteNameChangedCallback: Mobile Phone Device");\r
+        return;\r
+    }\r
+    BluetoothCaseInfo caseInfo{};\r
+    if (bdAddr == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BtRemoteNameChangedCallback addr nullptr");\r
+        return;\r
+    }\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtRemoteNameChangedCallback addr: %02x%02x%02x%02x%02x%02x",\r
+                  bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* mac下标 0 1 2 3 4 5 */\r
+                  bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0]); /* mac下标 0 1 2 3 4 5 */\r
+\r
+    (void)memcpy_s(caseInfo.addr, BD_ADDR_LEN, bdAddr->addr, BD_ADDR_LEN);\r
+    int ret = memcpy_s(caseInfo.deviceName, BD_NAME_LEN, deviceName, length);\r
+    if (ret != EOK) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BtRemoteNameChangedCallback memcpy fail!");\r
+        return;\r
+    }\r
+    BluetoothModel::GetInstance()->ResetScanDevicesCase(caseInfo);\r
+}\r
+\r
+void BtIsAcceptConnOnSafeModeCallback(const bd_addr_t *bdAddr, bool *res)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtIsAcceptConnOnSafeModeCallback addr: %02x%02x%02x%02x%02x%02x set *res true",\r
+        bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* addr下标 3 4 5 */\r
+        bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0]); /* addr下标 0 1 2 */\r
+    *res = true;\r
+}\r
+\r
+static void A2dpSrcConnectstateChanged(bd_addr_t *bdAddr, int connState)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "a2dp_src_connectStateChangedCallback addr: %02x%02x%02x%02x%02x%02x connState: %x",\r
+        bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* 5 4 3 idx */\r
+        bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0], connState); /* 2 1 0 idx */\r
+    if ((gap_get_device_class(bdAddr) & 0x200) != 0) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "a2dp_src_connectstateChangedCb: Mobile Phone Device");\r
+        return;\r
+    }\r
+    if (connState == PROFILE_STATE_CONNECTED) {\r
+        avrcp_ct_connect(bdAddr);\r
+        PhoneAudioManagerSetDeviceConnState(OUT_BLUETOOTH_A2DP, AUDIO_DEVICE_CONNECTED);\r
+    }\r
+\r
+    if (connState == PROFILE_STATE_DISCONNECTED) {\r
+        PhoneAudioManagerSetDeviceConnState(OUT_BLUETOOTH_A2DP, AUDIO_DEVICE_DISCONNECTED);\r
+    }\r
+}\r
+\r
+static void A2dpSrcPlayingStateChanged(bd_addr_t *bdAddr, int playState)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "A2dpSrcPlayingStateChangedCallback addr: %02x%02x%02x%02x%02x%02x playState: %x",\r
+        bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* 5 4 3 idx */\r
+        bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0], playState); /* 2 1 0 idx */\r
+}\r
+\r
+static void A2dpSrcConfigureChanged(bd_addr_t *bdAddr, a2dp_codec_info_t *info)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "A2dpSrcConfigurationChangedCallback addr: %02x%02x%02x%02x%02x%02x ",\r
+        bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* 5 4 3 idx */\r
+        bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0]); /* 2 1 0 idx */\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "codec_priority: %04x codec_type: %04x sample_rate: %02x bits_per_sample: %02x channel_mode: %02x ",\r
+        info->codec_priority, info->codec_type, info->sample_rate, info->bits_per_sample, info->channel_mode);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "codec_specific1: %04x codec_specific2: %04x codec_specific3: %04x codec_specific4: %04x",\r
+        info->codec_specific1, info->codec_specific2, info->codec_specific3, info->codec_specific4);\r
+}\r
+\r
+static void BleConnStateChangeCallback(unsigned short connId, bd_addr_t *addr, gap_ble_conn_state_t connState,\r
+                                       gap_ble_pair_state_t pairState, gap_ble_disc_reason_t discReason)\r
+{\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleConnStateChangeCallback connId 0x%x, connState 0x%x, pairState 0x%x",\r
+                  connId, connState, pairState);\r
+    if (GAP_BLE_STATE_DISCONNECTED == connState) { // restart ble adv when disconnected\r
+        BleAdvStart();\r
+    } else {\r
+        BluetoothModel::GetInstance()->SetAdvStartState(false);\r
+    }\r
+}\r
+\r
+static void BleAdvStartCallback(uint8_t advId, adv_status_t status)\r
+{\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleAdvStartCallback advId: %d, status:%d\n", advId, status);\r
+    BluetoothModel::GetInstance()->SetAdvStartState(true);\r
+}\r
+\r
+static void BleAdvStopCallback(uint8_t advId, adv_status_t status)\r
+{\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleAdvStopCallback advId: %d, status:%d\n", advId, status);\r
+}\r
+\r
+static void BtGattsServiceAddCallback(uint8_t serverId, bt_uuid_t *uuid, uint16_t srvcHandle, errcode_t status)\r
+{\r
+    int ret;\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsServiceAddCallback 0x%x 0x%x 0x%x",\r
+        status, serverId, srvcHandle);\r
+\r
+    if ((uuid->uuid_len == sizeof(uint16_t)) && (*((uint16_t*)uuid->uuid) == 0x1FF0)) {\r
+        uint16_t id = 0x1FF1;\r
+        gatts_add_chara_info_t character;\r
+        uint16_t value = 0;\r
+\r
+        memset_s(&character, sizeof(gatts_add_chara_info_t), 0, sizeof(gatts_add_chara_info_t));\r
+        character.chara_uuid.uuid_len = sizeof(id);\r
+        memcpy_s(character.chara_uuid.uuid, sizeof(character.chara_uuid.uuid), (char *)&id, sizeof(id));\r
+        character.permissions = GATT_ATTRIBUTE_PERMISSION_WRITE;\r
+        character.properties = GATT_CHARACTER_PROPERTY_BIT_WRITE;\r
+        character.value_len = (uint16_t)sizeof(value);\r
+        character.value = (uint8_t *)(&value);\r
+\r
+        ret = gatts_add_characteristic(serverId, srvcHandle, &character);\r
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_add_characteristic ret 0x%x", ret);\r
+    }\r
+}\r
+\r
+static void BtGattsCharacteristicAddCallback(uint8_t serverId, bt_uuid_t *uuid, uint16_t srvcHandle, gatts_add_character_result_t *result, errcode_t status)\r
+{\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsCharacteristicAddCallback 0x%x 0x%x 0x%x",\r
+        status, serverId, srvcHandle);\r
+\r
+    if ((uuid->uuid_len == sizeof(uint16_t)) && (*((uint16_t*)uuid->uuid) == 0x1FF1)) {\r
+        int ret = gatts_start_service(serverId, srvcHandle);\r
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_start_service ret 0x%x", ret);\r
+    }\r
+}\r
+\r
+static void BtGattsDescriptorAddCallback(uint8_t serverId, bt_uuid_t *uuid, uint16_t srvcHandle, uint16_t descriptorHandle, errcode_t status)\r
+{\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsDescriptorAddCallback 0x%x 0x%x 0x%x 0x%x",\r
+        status, serverId, srvcHandle, descriptorHandle);\r
+}\r
+\r
+static void BtGattsServiceStartCallback(uint8_t serverId, uint16_t srvcHandle, errcode_t status)\r
+{\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsServiceStartCallback 0x%x 0x%x 0x%x", status, serverId, srvcHandle);\r
+}\r
+\r
+static void BtGattsServiceStopCallback(uint8_t serverId, uint16_t srvcHandle, errcode_t status)\r
+{\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsServiceStopCallback 0x%x 0x%x 0x%x", status, serverId, srvcHandle);\r
+}\r
+\r
+static void BtGattsServiceDeleteCallback(uint8_t serverId, errcode_t status)\r
+{\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsServiceDeleteCallback 0x%x 0x%x", status, serverId);\r
+}\r
+\r
+static void BtGattsRequestReadCallback(uint8_t serverId, uint16_t connId, gatts_req_read_cb_t *readCbPara, errcode_t status)\r
+{\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsRequestReadCallback");\r
+}\r
+\r
+static void BtGattsRequestWriteCallback(uint8_t serverId, uint16_t connId, gatts_req_write_cb_t *writeCbPara,  errcode_t status)\r
+{\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsRequestWriteCallback");\r
+}\r
+\r
+static void BtA2dpSnkAcceptTimerStop(void)\r
+{\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "stop timer\n");\r
+    if (g_a2dp_stream_accept_timer.timer != NULL) {\r
+        (void)osal_timer_stop(&g_a2dp_stream_accept_timer);\r
+        (void)osal_timer_destroy(&g_a2dp_stream_accept_timer);\r
+        g_a2dp_stream_accept_timer.timer = NULL;\r
+    }\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "stop timer success!\n");\r
+}\r
+\r
+static void BtA2dpSnStartAcceptHandler(unsigned long data)\r
+{\r
+    UNUSED(data);\r
+    bd_addr_t active_bd_addr = a2dp_snk_get_active_device();\r
+    a2dp_snk_start_accept(&active_bd_addr);\r
+    BtA2dpSnkAcceptTimerStop();\r
+}\r
+\r
+static errcode_t BtA2dpSnkStartAcceptTimer(void)\r
+{\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "start timer\n");\r
+    if (g_a2dp_stream_accept_timer.timer != NULL) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "timer is running");\r
+        return ERRCODE_SUCC;\r
+    }\r
+\r
+    g_a2dp_stream_accept_timer.handler = BtA2dpSnStartAcceptHandler;\r
+    g_a2dp_stream_accept_timer.interval = A2DP_STREAM_ACCEPT_TIMER_PERIOD;\r
+\r
+    int32_t timer_ret = osal_timer_init(&g_a2dp_stream_accept_timer);\r
+    if (timer_ret != EOK) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "create timer error! ret: %x\n", timer_ret);\r
+        BtA2dpSnkAcceptTimerStop();\r
+        return ERRCODE_FAIL;\r
+    }\r
+    timer_ret = osal_timer_start(&g_a2dp_stream_accept_timer);\r
+    if (timer_ret != EOK) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "start timer error! ret: %x\n", timer_ret);\r
+        BtA2dpSnkAcceptTimerStop();\r
+        return ERRCODE_FAIL;\r
+    }\r
+    return ERRCODE_SUCC;\r
+}\r
+\r
+static int32_t BtA2dpSnkAudioCreate()\r
+{\r
+#if MEDIA_A2DP_SNK_INTERFACE\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "audioFormat %d channelCount %d sampleRate %d \n",\r
+        g_audio_format_config.audioFormat, g_audio_format_config.channelCount, g_audio_format_config.sampleRate);\r
+\r
+    int32_t ret = AudioManagerA2dpSinkSetParam(g_audio_format_config);\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "AudioManagerA2dpSinkSetParam ret %x\n", ret);\r
+    ret = AudioManagerA2dpSinkCreate();\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "AudioManagerA2dpSinkCreate ret %x\n", ret);\r
+#endif\r
+    /* 起定时器接受音乐开始请求 */\r
+    (void)BtA2dpSnkStartAcceptTimer();\r
+    return 0;\r
+}\r
+\r
+static int32_t BtA2dpSnkAudioDestroy()\r
+{\r
+#if MEDIA_A2DP_SNK_INTERFACE\r
+    int32_t ret = AudioManagerA2dpSinkDestroy();\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "AudioManagerA2dpSinkDestroy ret %x\n", ret);\r
+#endif\r
+    return 0;\r
+}\r
+\r
+static void BtA2dpSnkConnectStateChangedCb(bd_addr_t *bd_addr, int conn_state)\r
+{\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "addr: ****%02x%02x%02x%02x conn_state: %x\n",\r
+        bd_addr->addr[3], bd_addr->addr[2], bd_addr->addr[1], bd_addr->addr[0], conn_state); /* 3 2 1 0 idx */\r
+}\r
+\r
+static void BtA2dpSnkStartStreamReqCb(bd_addr_t *bd_addr)\r
+{\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "addr: ****%02x%02x%02x%02x \n",\r
+        bd_addr->addr[3], bd_addr->addr[2], bd_addr->addr[1], bd_addr->addr[0]); /* 3 2 1 0 idx */\r
+    BtA2dpSnkAudioCreate();\r
+}\r
+\r
+static void BtA2dpSnkPlayingStateChangedCb(bd_addr_t *bd_addr, int playing_state)\r
+{\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "addr: ****%02x%02x%02x%02x playing_state: %x\n",\r
+        bd_addr->addr[3], bd_addr->addr[2], bd_addr->addr[1], bd_addr->addr[0], playing_state); /* 3 2 1 0 idx */\r
+    if (playing_state == A2DP_NOT_PLAYING) {\r
+        BtA2dpSnkAudioDestroy();\r
+    }\r
+}\r
+\r
+static void BtA2dpSnkConfigChangedCb(bd_addr_t *bd_addr, a2dp_snk_codec_info_t *info)\r
+{\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "addr: ****%02x%02x%02x%02x ",\r
+        bd_addr->addr[3], bd_addr->addr[2], bd_addr->addr[1], bd_addr->addr[0]); /* 3 2 1 0 idx */\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP,\r
+        "codec_priority: %04x codec_type: %04x sample_rate: %02x bits_per_sample: %02x channel_mode: %02x",\r
+        info->codec_priority, info->codec_type, info->sample_rate, info->bits_per_sample, info->channel_mode);\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP,\r
+        "codec_specific1: %04x codec_specific2: %04x codec_specific3: %04x codec_specific4: %04x\n",\r
+        (unsigned int)info->codec_specific1,\r
+        (unsigned int)info->codec_specific2,\r
+        (unsigned int)info->codec_specific3,\r
+        (unsigned int)info->codec_specific4);\r
+#if MEDIA_A2DP_SNK_INTERFACE\r
+    if (info->codec_type == A2DP_SNK_CODEC_TYPE_AAC) {\r
+        g_audio_format_config.audioFormat = AAC_LC;\r
+    } else {\r
+        g_audio_format_config.audioFormat = SBC;\r
+    }\r
+    /* channel count 1 or 2 */\r
+    g_audio_format_config.channelCount = (info->channel_mode == A2DP_SNK_CODEC_CHANNEL_MODE_NONE ? 1 : 2);\r
+\r
+    switch (info->sample_rate) {\r
+        case A2DP_SNK_CODEC_SAMPLE_RATE_48000:\r
+            g_audio_format_config.sampleRate = BT_AUDIO_A2DP_SMAPLE_RATE48000;\r
+            break;\r
+        case A2DP_SNK_CODEC_SAMPLE_RATE_88200:\r
+            g_audio_format_config.sampleRate = BT_AUDIO_A2DP_SMAPLE_RATE88200;\r
+            break;\r
+        case A2DP_SNK_CODEC_SAMPLE_RATE_96000:\r
+            g_audio_format_config.sampleRate = BT_AUDIO_A2DP_SMAPLE_RATE96000;\r
+            break;\r
+        default:\r
+            g_audio_format_config.sampleRate = BT_AUDIO_A2DP_SMAPLE_RATE44100;\r
+            break;\r
+    }\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "audioFormat %d channelCount %d sampleRate %d \n",\r
+        g_audio_format_config.audioFormat, g_audio_format_config.channelCount, g_audio_format_config.sampleRate);\r
+#endif\r
+}\r
+\r
+// 注册回调函数\r
+static gap_call_backs_t g_btGapCallBacks{};\r
+static a2dp_src_callbacks_t g_a2dpSrcCallbacks{};\r
+static gap_ble_callbacks_t g_gapBleCallbacks{};\r
+static gatts_callbacks_t g_btGattsCallbacks{};\r
+\r
+static a2dp_snk_callbacks_t g_a2dp_snk_callbacks = {\r
+    BtA2dpSnkConnectStateChangedCb,\r
+    BtA2dpSnkStartStreamReqCb,\r
+    BtA2dpSnkPlayingStateChangedCb,\r
+    BtA2dpSnkConfigChangedCb\r
+};\r
+\r
+void BtInitCallBacks()\r
+{\r
+    g_btGapCallBacks.discovery_result_callback = BtGapDiscoveryResultCallback;\r
+    g_btGapCallBacks.discovery_state_changed_callback = BtGapDiscoveryStateChangedCallback;\r
+    g_btGapCallBacks.acl_state_changed_callbak = GapAclStateChangedCallback;\r
+    g_btGapCallBacks.read_remote_rssi_event_callback = BtGapReadRemoteRssiEventCallback;\r
+    g_btGapCallBacks.remote_name_changed_callback = BtRemoteNameChangedCallback;\r
+    g_btGapCallBacks.is_accept_conn_on_safe_mode_callback = BtIsAcceptConnOnSafeModeCallback;\r
+    g_btGapCallBacks.pair_status_changed_callback = BtGapPairStatusChangedCallback;\r
+    g_btGapCallBacks.pair_requested_callback = BtGapPairRequestedCallback;\r
+    g_btGapCallBacks.pair_confiremed_callback = BtGapPairConfirmedCallback;\r
+    gap_register_callbacks(&g_btGapCallBacks);\r
+\r
+    g_a2dpSrcCallbacks.connectstate_changed_cb = A2dpSrcConnectstateChanged;\r
+    g_a2dpSrcCallbacks.configuration_changed_cb = A2dpSrcConfigureChanged;\r
+    g_a2dpSrcCallbacks.playing_state_changed_cb = A2dpSrcPlayingStateChanged;\r
+    a2dp_src_register_callbacks(&g_a2dpSrcCallbacks);\r
+\r
+    /* a2dp sink */\r
+    a2dp_snk_register_callbacks(&g_a2dp_snk_callbacks);\r
+}\r
+\r
+void BtInitCallBacksEx()\r
+{\r
+    g_gapBleCallbacks.conn_state_change_cb = BleConnStateChangeCallback;\r
+    g_gapBleCallbacks.start_adv_cb = BleAdvStartCallback;\r
+    g_gapBleCallbacks.stop_adv_cb = BleAdvStopCallback;\r
+    gap_ble_register_callbacks(&g_gapBleCallbacks);\r
+\r
+    g_btGattsCallbacks.add_service_cb = BtGattsServiceAddCallback;\r
+    g_btGattsCallbacks.add_characteristic_cb = BtGattsCharacteristicAddCallback;\r
+    g_btGattsCallbacks.add_descriptor_cb = BtGattsDescriptorAddCallback;\r
+    g_btGattsCallbacks.start_service_cb = BtGattsServiceStartCallback;\r
+    g_btGattsCallbacks.stop_service_cb = BtGattsServiceStopCallback;\r
+    g_btGattsCallbacks.delete_service_cb = BtGattsServiceDeleteCallback;\r
+    g_btGattsCallbacks.read_request_cb = BtGattsRequestReadCallback;\r
+    g_btGattsCallbacks.write_request_cb = BtGattsRequestWriteCallback;\r
+    g_btGattsCallbacks.mtu_changed_cb = NULL;\r
+    gatts_register_callbacks(&g_btGattsCallbacks);\r
+}\r
+\r
+void BtInitGatts(void)\r
+{\r
+    uint16_t id = 0x1FF0;\r
+    uint16_t ser_id = 0x1FFF;\r
+    uint8_t serverId = 0;\r
+    bt_uuid_t uuid;\r
+    int ret;\r
+\r
+    uuid.uuid_len = sizeof(ser_id);\r
+    memcpy_s(uuid.uuid, sizeof(uuid.uuid), (char *)&ser_id, sizeof(ser_id));\r
+    ret = gatts_register_server(&uuid, &serverId); /* 注册gatt server */\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_register_server ret: 0x%x serverId = 0x%x", ret, serverId);\r
+\r
+    uuid.uuid_len = sizeof(id);\r
+    memcpy_s(uuid.uuid, sizeof(uuid.uuid), (char *)&id, sizeof(id));\r
+    ret = gatts_add_service(serverId, &uuid, true);\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_add_service ret: 0x%x", ret);\r
+}\r
+\r
+static uint8_t Char2Num(int8_t c)\r
+{\r
+    if (c >= '0' && c <= '9') {\r
+        return (uint8_t)(c - '0');\r
+    } else if (c >= 'A' && c <= 'F') {\r
+        return (uint8_t)(c - 'A' + TEN);\r
+    } else if (c >= 'a' && c <= 'f') {\r
+        return (uint8_t)(c - 'a' + TEN);\r
+    } else {\r
+        return 0xFF;\r
+    }\r
+}\r
+\r
+static uint32_t GenerateUuidFromString(const char *str, uint8_t len, bt_uuid_t *uuid_out)\r
+{\r
+    int slen = (int)strnlen(str, len);\r
+    bool new_uuid = false;\r
+    if (uuid_out == NULL) {\r
+        return ERRCODE_INVALID_PARAM;\r
+    }\r
+\r
+    uuid_out->uuid_len = (uint8_t)slen / 2; /* 2: 2个字符组成一个字节,因此只取偶数个字符 */\r
+    for (int i = 0; i + 1 < slen; i += 2) { /* 2: 同上 */\r
+        uint8_t num1 = Char2Num(str[i]);\r
+        uint8_t num2 = Char2Num(str[i + 1]);\r
+        if (num1 == UINT8_MAX || num2 == UINT8_MAX) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "invalid input %c%c\n", str[i], str[i + 1]);\r
+            return ERRCODE_INVALID_PARAM;\r
+        }\r
+\r
+        uuid_out->uuid[i / 2] = (uint8_t)((num1 << BIT4) | num2); /* 2: 同上 */\r
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "%02x ", (uint8_t)(uuid_out->uuid[i / 2])); /* 2: 同上 */\r
+    }\r
+\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "\n");\r
+    return ERRCODE_SUCC;\r
+}\r
+\r
+void BtSppServerCreate(const char *spp_uuid, const char *name, uint8_t name_len)\r
+{\r
+    spp_create_socket_para_t param;\r
+    if (GenerateUuidFromString((const char *)spp_uuid, (uint8_t)strlen(spp_uuid), &param.uuid) != ERRCODE_SUCC) {\r
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "get uuid fail\n");\r
+        return;\r
+    }\r
+\r
+    param.socket_type = SPP_SOCKET_RFCOMM;\r
+    param.is_encrypt = true;\r
+\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "uuid: %s uuid_len: %u\n", spp_uuid, param.uuid.uuid_len);\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "socket_type: %x is_encrypt: %d name: %s nameLen: %u\n", param.socket_type,\r
+        param.is_encrypt, name, name_len);\r
+\r
+    int ret = spp_server_create(&param, name, name_len);\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "spp_server_create ret: %x\n", ret);\r
+}\r
+\r
+static int BtSppServerAcceptTaskBody(void *data)\r
+{\r
+    int server_id = (int)(intptr_t)data;\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "server_id: %x\n", server_id);\r
+\r
+    int ret = spp_server_accept(server_id);\r
+\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "spp_server_accept ret: %x\n", ret);\r
+\r
+    return OSAL_SUCCESS;\r
+}\r
+\r
+/* 等待client连接 */\r
+void BtSppServerAccept(uint8_t server_id)\r
+{\r
+    osal_task *task = osal_kthread_create(BtSppServerAcceptTaskBody, (void *)(uintptr_t)server_id,\r
+        "spp_server_accept_task", BT_SPP_TASK_STACK_SIZE);\r
+    if (task == NULL) {\r
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "create task fail\n");\r
+        return;\r
+    }\r
+\r
+    int ret = osal_kthread_set_priority(task, BT_SPP_TASK_PRI);\r
+    if (ret != OSAL_SUCCESS) {\r
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "set pri error: %08x\n", ret);\r
+    }\r
+\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "create task success.\n");\r
+}\r
+\r
+void BtInitSpp(void)\r
+{\r
+    char uuid[] = "1101";\r
+    char name[] = "COM1";\r
+    uint8_t name_len = strlen(name) + 1;\r
+    uint8_t server_id = 0;\r
+\r
+    /* 创建spp */\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "create spp server uuid=%s name=%s name_len=%d\n", uuid, name, name_len);\r
+    BtSppServerCreate(uuid, name, name_len);\r
+    BtSppServerAccept(server_id);\r
+}\r
+\r
+void BleAdvStart(void)\r
+{\r
+    int advId = 1;\r
+    if (BluetoothModel::GetInstance()->GetAdvStartState()) {\r
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleAdvStart already started");\r
+        gap_ble_stop_adv(advId);\r
+        osDelay(50);\r
+    }\r
+    gap_ble_adv_params_t adv_para;\r
+    memset_s(&adv_para, sizeof(gap_ble_adv_params_t), 0, sizeof(gap_ble_adv_params_t));\r
+    adv_para.min_interval = 0x30;\r
+    adv_para.max_interval = 0x60;\r
+    adv_para.adv_type = GAP_BLE_ADV_CONN_SCAN_UNDIR;\r
+    adv_para.channel_map = 0x7;\r
+    adv_para.duration = 0;\r
+    gap_ble_set_adv_param(advId, &adv_para);\r
+    gap_ble_set_local_appearance(GAP_BLE_APPEARANCE_TYPE_GENERIC_WATCH);\r
+    errcode_t ret = gap_ble_start_adv(advId);\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleAdvStart bt gap_ble_start_adv  ret = 0x%x", ret);\r
+}\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+}\r
index 3df4bc3..86ea73e 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: BluetoothOptions view
- * Author:
- * Create: 2021-10-13
- */
-#include "BluetoothOptionsView.h"
-#include "BluetoothModel.h"
-#include "wearable_log.h"
-#include "UiConfig.h"
-#include "PlayersPresenter.h"
-#include "BluetoothPresenter.h"
-
-namespace OHOS {
-static BluetoothOptionsView *g_pBluetoothOptionsView{nullptr};
-
-BluetoothOptionsView::BluetoothOptionsView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView::BluetoothOptionsView");
-    g_pBluetoothOptionsView = this;
-}
-
-BluetoothOptionsView::~BluetoothOptionsView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView::~BluetoothOptionsView");
-    group->RemoveAll();
-    delete titleLabel;
-    titleLabel = nullptr;
-    delete connectStateLabel;
-    connectStateLabel = nullptr;
-    delete optionsOneButton;
-    optionsOneButton = nullptr;
-    delete unpairButton;
-    unpairButton = nullptr;
-    delete group;
-    group = nullptr;
-    g_pBluetoothOptionsView = nullptr;
-}
-
-BluetoothOptionsView *BluetoothOptionsView::GetInstance()
-{
-    return g_pBluetoothOptionsView;
-}
-
-void BluetoothOptionsView::RefreshText(void)
-{
-    // 刷新状态和文字
-    BluetoothModel::GetInstance()->SetBtStatus();
-    if (BluetoothModel::GetInstance()->GetAclConnected() == true) {
-        connectStateLabel->SetText("已连接");
-        optionsOneButton->SetText("断开连接");
-    } else {
-        connectStateLabel->SetText("已断开");
-        optionsOneButton->SetText("重新连接");
-    }
-    BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();
-    titleLabel->SetText(reinterpret_cast<const char *>(caseInfo->deviceName));
-    optionsOneButton->Invalidate();
-}
-
-void BluetoothOptionsView::InItTitleLabel()
-{
-    if (titleLabel == nullptr) {
-        titleLabel = new UILabel();
-        if (titleLabel == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView titleLabel new fail");
-            return;
-        }
-        titleLabel->SetPosition(60, 100, 333, 45); // 60:x 100:y 333:width 45:height
-        BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();
-        titleLabel->SetText(reinterpret_cast<const char *>(caseInfo->deviceName));
-        titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);
-        titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);
-        titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);
-        titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-        group->Add(titleLabel);
-    }
-    if (connectStateLabel == nullptr) {
-        connectStateLabel = new UILabel();
-        if (connectStateLabel == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView connectStateLabel new fail");
-            return;
-        }
-        connectStateLabel->SetPosition(60, 148, 333, 33); // 60:x 148:y 333:width 33:height
-        connectStateLabel->SetText("已连接");
-        connectStateLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);
-        connectStateLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);
-        connectStateLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-        group->Add(connectStateLabel);
-    }
-}
-
-void BluetoothOptionsView::InItLabelButton()
-{
-    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();
-    UIView::OnClickListener *clickListener2 = (UIView::OnClickListener *)OHOS::BluetoothPresenter::GetInstance();
-    if ((clickListener == nullptr) && (clickListener2 == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");
-        return;
-    }
-    if (optionsOneButton == nullptr) {
-        optionsOneButton = new UILabelButton();
-        if (optionsOneButton == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView optionsOneButton new fail");
-            return;
-        }
-        optionsOneButton->SetPosition(157, 210, 139, 47); // 157:x, 210:y, 139:width 47:height
-        optionsOneButton->SetText("断开连接");
-        optionsOneButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);
-        optionsOneButton->SetViewId(BLUETOOTH_OPTIONONE_BUTTON);
-        optionsOneButton->SetImageSrc(PNG_SELECTION_BOX, PNG_SELECTION_BOX);
-        if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {
-            optionsOneButton->SetTextColor(Color::Red());
-            optionsOneButton->SetOnClickListener(clickListener);
-        } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {
-            optionsOneButton->SetTextColor(Color::Blue());
-            optionsOneButton->SetOnClickListener(clickListener2);
-        }
-        group->Add(optionsOneButton);
-    }
-    if (unpairButton == nullptr) {
-        unpairButton = new UILabelButton();
-        if (unpairButton == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView unpairButton new fail");
-            return;
-        }
-        unpairButton->SetPosition(157, 284, 139, 47); // 157:x, 284:y, 139:width 47:height
-        unpairButton->SetText("取消配对");
-        unpairButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);
-        unpairButton->SetViewId(BLUETOOTH_UNPAIR_BUTTON);
-        unpairButton->SetImageSrc(PNG_SELECTION_BOX, PNG_SELECTION_BOX);
-        if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {
-            unpairButton->SetTextColor(Color::Red());
-            unpairButton->SetOnClickListener(clickListener);
-        } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {
-            unpairButton->SetTextColor(Color::Blue());
-            unpairButton->SetOnClickListener(clickListener2);
-        }
-        group->Add(unpairButton);
-    }
-}
-
-UIViewGroup *BluetoothOptionsView::InitShowUpView()
-{
-    // 获取currentBdAddr db值 model待开发
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView init");
-    if (group == nullptr) {
-        group = new UIViewGroup();
-        if (group == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");
-            return nullptr;
-        }
-        group->SetPosition(0, 0);
-        group->SetWidth(HORIZONTAL_RESOLUTION);
-        group->SetHeight(VERTICAL_RESOLUTION);
-    }
-    InItLabelButton();
-    InItTitleLabel();
-
-    //增加按键监听
-       RootView::OnKeyActListener*keyactListener = (RootView::OnKeyActListener*)OHOS::BluetoothPresenter::GetInstance();
-       RootView::GetInstance()->SetOnKeyActListener(keyactListener);
-
-    UIView::OnDragListener *earDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();
-    UIView::OnDragListener *earDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();
-    if ((earDragListener == nullptr) && (earDragListener2 == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "earDragListener GetInstance fail");
-        return nullptr;
-    }
-    if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {
-        group->SetOnDragListener(earDragListener);
-    } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {
-        group->SetOnDragListener(earDragListener2);
-    }
-    group->SetViewId(BLUETOOTH_OPTIONS_VIEW);
-    group->SetDraggable(true);
-    group->SetTouchable(true);
-    return group;
-}
-
-UILabelButton *BluetoothOptionsView::GetOptionsOneButton(void)
-{
-    return optionsOneButton;
-}
-
-UILabelButton *BluetoothOptionsView::GetUnpairButton(void)
-{
-    return unpairButton;
-}
-
-
-void BluetoothOptionsView::SetBtDisconnect(void)
-{
-    bool ret;
-    bd_addr_t *lastAddr = BluetoothModel::GetInstance()->GetLastConnedAddr();
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetBtDisconnect Addr: %02x%02x%02x%02x%02x%02x",
-        lastAddr->addr[5], lastAddr->addr[4], lastAddr->addr[3], /* mac下标 0 1 2 3 4 5 */
-        lastAddr->addr[2], lastAddr->addr[1], lastAddr->addr[0]); /* mac下标 0 1 2 3 4 5 */
-    ret = gap_disconnect_remote_device(lastAddr);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gap_disconnect_remote_device %d", ret);
-}
-
-void BluetoothOptionsView::SetBtconnect(void)
-{
-    bool ret;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetBtconnect currentAddr: %02x%02x%02x%02x%02x%02x",
-        currentAddr.addr[5], currentAddr.addr[4], currentAddr.addr[3], /* mac下标 0 1 2 3 4 5 */
-        currentAddr.addr[2], currentAddr.addr[1], currentAddr.addr[0]); /* mac下标 0 1 2 3 4 5 */
-    ret = gap_connect_remote_device(&currentAddr);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetBtconnect gap_connect_remote_device %d", ret);
-}
-
-void BluetoothOptionsView::SetUnpair(void)
-{
-    bool ret;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetUnpair currentAddr: %02x%02x%02x%02x%02x%02x",
-        currentAddr.addr[5], currentAddr.addr[4], currentAddr.addr[3], /* mac下标 0 1 2 3 4 5 */
-        currentAddr.addr[2], currentAddr.addr[1], currentAddr.addr[0]); /* mac下标 0 1 2 3 4 5 */
-    ret = gap_remove_pair(&currentAddr);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetUnpair gap_remove_pair %d", ret);
-}
-
-
-void BluetoothOptionsView::SetCurrentAddr(bd_addr_t addr)
-{
-    (void)memcpy_s(currentAddr.addr, BD_ADDR_LEN,
-                   addr.addr, BD_ADDR_LEN); // 源和目标内存长度一样,不做返回值判断
-}
-
-bd_addr_t BluetoothOptionsView::GetCurrentAddr(void)
-{
-    return currentAddr;
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: BluetoothOptions view\r
+ * Author:\r
+ * Create: 2021-10-13\r
+ */\r
+#include "BluetoothOptionsView.h"\r
+#include "BluetoothModel.h"\r
+#include "wearable_log.h"\r
+#include "UiConfig.h"\r
+#include "PlayersPresenter.h"\r
+#include "BluetoothPresenter.h"\r
+\r
+namespace OHOS {\r
+static BluetoothOptionsView *g_pBluetoothOptionsView{nullptr};\r
+\r
+BluetoothOptionsView::BluetoothOptionsView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView::BluetoothOptionsView");\r
+    g_pBluetoothOptionsView = this;\r
+}\r
+\r
+BluetoothOptionsView::~BluetoothOptionsView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView::~BluetoothOptionsView");\r
+    group->RemoveAll();\r
+    delete titleLabel;\r
+    titleLabel = nullptr;\r
+    delete connectStateLabel;\r
+    connectStateLabel = nullptr;\r
+    delete optionsOneButton;\r
+    optionsOneButton = nullptr;\r
+    delete unpairButton;\r
+    unpairButton = nullptr;\r
+    delete group;\r
+    group = nullptr;\r
+    g_pBluetoothOptionsView = nullptr;\r
+}\r
+\r
+BluetoothOptionsView *BluetoothOptionsView::GetInstance()\r
+{\r
+    return g_pBluetoothOptionsView;\r
+}\r
+\r
+void BluetoothOptionsView::RefreshText(void)\r
+{\r
+    // 刷新状态和文字\r
+    BluetoothModel::GetInstance()->SetBtStatus();\r
+    if (BluetoothModel::GetInstance()->GetAclConnected() == true) {\r
+        connectStateLabel->SetText("已连接");\r
+        optionsOneButton->SetText("断开连接");\r
+    } else {\r
+        connectStateLabel->SetText("已断开");\r
+        optionsOneButton->SetText("重新连接");\r
+    }\r
+    BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();\r
+    titleLabel->SetText(reinterpret_cast<const char *>(caseInfo->deviceName));\r
+    optionsOneButton->Invalidate();\r
+}\r
+\r
+void BluetoothOptionsView::InItTitleLabel()\r
+{\r
+    if (titleLabel == nullptr) {\r
+        titleLabel = new UILabel();\r
+        if (titleLabel == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView titleLabel new fail");\r
+            return;\r
+        }\r
+        titleLabel->SetPosition(60, 100, 333, 45); // 60:x 100:y 333:width 45:height\r
+        BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();\r
+        titleLabel->SetText(reinterpret_cast<const char *>(caseInfo->deviceName));\r
+        titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
+        titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);\r
+        titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+        titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+        group->Add(titleLabel);\r
+    }\r
+    if (connectStateLabel == nullptr) {\r
+        connectStateLabel = new UILabel();\r
+        if (connectStateLabel == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView connectStateLabel new fail");\r
+            return;\r
+        }\r
+        connectStateLabel->SetPosition(60, 148, 333, 33); // 60:x 148:y 333:width 33:height\r
+        connectStateLabel->SetText("已连接");\r
+        connectStateLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);\r
+        connectStateLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+        connectStateLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+        group->Add(connectStateLabel);\r
+    }\r
+}\r
+\r
+void BluetoothOptionsView::InItLabelButton()\r
+{\r
+    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();\r
+    UIView::OnClickListener *clickListener2 = (UIView::OnClickListener *)OHOS::BluetoothPresenter::GetInstance();\r
+    if ((clickListener == nullptr) && (clickListener2 == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
+        return;\r
+    }\r
+    if (optionsOneButton == nullptr) {\r
+        optionsOneButton = new UILabelButton();\r
+        if (optionsOneButton == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView optionsOneButton new fail");\r
+            return;\r
+        }\r
+        optionsOneButton->SetPosition(157, 210, 139, 47); // 157:x, 210:y, 139:width 47:height\r
+        optionsOneButton->SetText("断开连接");\r
+        optionsOneButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);\r
+        optionsOneButton->SetViewId(BLUETOOTH_OPTIONONE_BUTTON);\r
+        optionsOneButton->SetImageSrc(PNG_SELECTION_BOX, PNG_SELECTION_BOX);\r
+        if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
+            optionsOneButton->SetTextColor(Color::Red());\r
+            optionsOneButton->SetOnClickListener(clickListener);\r
+        } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
+            optionsOneButton->SetTextColor(Color::Blue());\r
+            optionsOneButton->SetOnClickListener(clickListener2);\r
+        }\r
+        group->Add(optionsOneButton);\r
+    }\r
+    if (unpairButton == nullptr) {\r
+        unpairButton = new UILabelButton();\r
+        if (unpairButton == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView unpairButton new fail");\r
+            return;\r
+        }\r
+        unpairButton->SetPosition(157, 284, 139, 47); // 157:x, 284:y, 139:width 47:height\r
+        unpairButton->SetText("取消配对");\r
+        unpairButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);\r
+        unpairButton->SetViewId(BLUETOOTH_UNPAIR_BUTTON);\r
+        unpairButton->SetImageSrc(PNG_SELECTION_BOX, PNG_SELECTION_BOX);\r
+        if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
+            unpairButton->SetTextColor(Color::Red());\r
+            unpairButton->SetOnClickListener(clickListener);\r
+        } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
+            unpairButton->SetTextColor(Color::Blue());\r
+            unpairButton->SetOnClickListener(clickListener2);\r
+        }\r
+        group->Add(unpairButton);\r
+    }\r
+}\r
+\r
+UIViewGroup *BluetoothOptionsView::InitShowUpView()\r
+{\r
+    // 获取currentBdAddr db值 model待开发\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothOptionsView init");\r
+    if (group == nullptr) {\r
+        group = new UIViewGroup();\r
+        if (group == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
+            return nullptr;\r
+        }\r
+        group->SetPosition(0, 0);\r
+        group->SetWidth(HORIZONTAL_RESOLUTION);\r
+        group->SetHeight(VERTICAL_RESOLUTION);\r
+    }\r
+    InItLabelButton();\r
+    InItTitleLabel();\r
+    UIView::OnDragListener *earDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
+    UIView::OnDragListener *earDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();\r
+    if ((earDragListener == nullptr) && (earDragListener2 == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "earDragListener GetInstance fail");\r
+        return nullptr;\r
+    }\r
+    if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
+        group->SetOnDragListener(earDragListener);\r
+    } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
+        group->SetOnDragListener(earDragListener2);\r
+    }\r
+    group->SetViewId(BLUETOOTH_OPTIONS_VIEW);\r
+    group->SetDraggable(true);\r
+    group->SetTouchable(true);\r
+    return group;\r
+}\r
+\r
+UILabelButton *BluetoothOptionsView::GetOptionsOneButton(void)\r
+{\r
+    return optionsOneButton;\r
+}\r
+\r
+UILabelButton *BluetoothOptionsView::GetUnpairButton(void)\r
+{\r
+    return unpairButton;\r
+}\r
+\r
+\r
+void BluetoothOptionsView::SetBtDisconnect(void)\r
+{\r
+    bd_addr_t *lastAddr = BluetoothModel::GetInstance()->GetLastConnedAddr();\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetBtDisconnect Addr: %02x%02x%02x%02x%02x%02x",\r
+        lastAddr->addr[5], lastAddr->addr[4], lastAddr->addr[3], /* mac下标 0 1 2 3 4 5 */\r
+        lastAddr->addr[2], lastAddr->addr[1], lastAddr->addr[0]); /* mac下标 0 1 2 3 4 5 */\r
+    errcode_t retVal  = gap_disconnect_remote_device(lastAddr);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gap_disconnect_remote_device %d", retVal);\r
+}\r
+\r
+void BluetoothOptionsView::SetBtconnect(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetBtconnect currentAddr: %02x%02x%02x%02x%02x%02x",\r
+        currentAddr.addr[5], currentAddr.addr[4], currentAddr.addr[3], /* mac下标 0 1 2 3 4 5 */\r
+        currentAddr.addr[2], currentAddr.addr[1], currentAddr.addr[0]); /* mac下标 0 1 2 3 4 5 */\r
+    errcode_t retVal = BluetoothModel::GetInstance()->ConnectRemoteDevice(&currentAddr);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetBtconnect ConnectRemoteDevice %d", retVal);\r
+}\r
+\r
+void BluetoothOptionsView::SetUnpair(void)\r
+{\r
+    bool ret;\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetUnpair currentAddr: %02x%02x%02x%02x%02x%02x",\r
+        currentAddr.addr[5], currentAddr.addr[4], currentAddr.addr[3], /* mac下标 0 1 2 3 4 5 */\r
+        currentAddr.addr[2], currentAddr.addr[1], currentAddr.addr[0]); /* mac下标 0 1 2 3 4 5 */\r
+    ret = gap_remove_pair(&currentAddr);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetUnpair gap_remove_pair %d", ret);\r
+}\r
+\r
+\r
+void BluetoothOptionsView::SetCurrentAddr(bd_addr_t addr)\r
+{\r
+    (void)memcpy_s(currentAddr.addr, BD_ADDR_LEN,\r
+                   addr.addr, BD_ADDR_LEN); // 源和目标内存长度一样,不做返回值判断\r
+}\r
+\r
+bd_addr_t BluetoothOptionsView::GetCurrentAddr(void)\r
+{\r
+    return currentAddr;\r
+}\r
 }
\ No newline at end of file
index cd0ee58..89aa78d 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: BluetoothPresenter view
- * Author:
- * Create: 2021-10-13
- */
-
-#include "wearable_log.h"
-#include "UiConfig.h"
-#include "BluetoothPresenter.h"
-#include "BluetoothReconnectView.h"
-#include "MainBluetoothView.h"
-#include "UiConfig.h"
-#include "BluetoothModel.h"
-
-namespace OHOS {
-static BluetoothPresenter *g_pBluetoothPresenter = nullptr;
-
-BluetoothPresenter::BluetoothPresenter()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter new");
-    g_pBluetoothPresenter = this;
-}
-
-BluetoothPresenter::~BluetoothPresenter()
-{
-    g_pBluetoothPresenter = nullptr;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::~BluetoothPresenter");
-}
-
-void BluetoothPresenter::OnStart()
-{
-    Presenter<MainBluetoothView>::OnStart();
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::On Start ");
-}
-
-void BluetoothPresenter::OnPause(void) {}
-
-void BluetoothPresenter::OnResume(void) {}
-
-void BluetoothPresenter::OnStop(void)
-{
-    BluetoothEarPhoneView *bluetoothEarPhoneView = BluetoothEarPhoneView::GetInstance();
-    if (bluetoothEarPhoneView != nullptr) {
-        bluetoothEarPhoneView->StopBtDiscovery();
-        return;
-    }
-}
-
-BluetoothPresenter *BluetoothPresenter::GetInstance()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter GetInstance");
-    return g_pBluetoothPresenter;
-}
-
-void BluetoothPresenter::ClickRescanButton(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::OnClick BLUETOOTH_RESCAN_BUTTON");
-    // 跳转正在搜索界面
-    MainBluetoothView::GetInstance()->ChangeView(BLUETOOTHEARLISTVIEW, BLUETOOTHEARPHONEVIEW);
-}
-
-void BluetoothPresenter::ClickNewEquipmentButton(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::OnClick BLUETOOTH_NEWEQUIPMENT_BUTTON");
-    BluetoothModel::GetInstance()->SetTagReturnToDeviceListView(true);
-    MainBluetoothView::GetInstance()->ChangeView(BLUETOOTHDEVICELISTVIEW, BLUETOOTHEARPHONEVIEW);
-}
-
-void BluetoothPresenter::ClickCancelConnedRequestButton(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::OnClick BLUETOOTH_CANCELCONNEDREQUEST_BUTTON");
-    BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickCancelConnedRequestButton Addr: %02x%02x%02x%02x%02x%02x",
-                caseInfo->addr[5], caseInfo->addr[4], caseInfo->addr[3], /* mac下标 0 1 2 3 4 5 */
-                caseInfo->addr[2], caseInfo->addr[1], caseInfo->addr[0]); /* mac下标 0 1 2 3 4 5 */
-    bool ret = gap_disconnect_remote_device((const bd_addr_t *)caseInfo->addr);
-    if (ret == false) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ClickCancelConnedRequestButton gap_disconnect_remote_device false");
-    }
-
-    BluetoothModel::GetInstance()->SetTagScanDeviceClicked(false);
-    // 刷新列表
-    BluetoothEarListView *bluetoothEarListView = BluetoothEarListView::GetInstance();
-    if (bluetoothEarListView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ClickCancelConnedRequestButton bluetoothEarListView nullptr");
-        return;
-    }
-    if (bluetoothEarListView->GetScanUIList() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ClickCancelConnedRequestButton GetScanUIList nullptr");
-        return;
-    }
-    bluetoothEarListView->GetScanUIList()->RefreshList();
-    bluetoothEarListView->SetCancelConnedRequestButtonRemove();
-    bluetoothEarListView->SetTitleLabel("扫描完成");
-
-    BluetoothItemView *pbItermView = BluetoothModel::GetInstance()->GetConnectionView();
-    if (pbItermView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleBeforeChangeView The GetConnectionView get failed.");
-        return;
-    }
-    pbItermView->ConnectAnimatorStop();
-    BluetoothModel::GetInstance()->SetConnectionView(nullptr);
-    bluetoothEarListView->SetNewEquipmentButtonAdd();
-    RootView::GetInstance()->Invalidate();
-}
-
-void BluetoothPresenter::ClickUnpairButton(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::OnClick BLUETOOTH_UNPAIR_BUTTON");
-    BluetoothModel::GetInstance()->SetTagConnectNew(false);
-    BluetoothOptionsView *bluetoothOptionsView = BluetoothOptionsView::GetInstance();
-    if (bluetoothOptionsView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothOptionsView GetInstance fail");
-        return;
-    }
-    bluetoothOptionsView->SetUnpair(); // 取消配对
-    // 删除对应设备列表节点
-    bd_addr_t bdAddr = bluetoothOptionsView->GetCurrentAddr();
-    List<BluetoothCaseInfo> &bluetoothCaseList = BluetoothModel::GetInstance()->GetConnedDevicesCase();
-    ListNode<BluetoothCaseInfo> *node = bluetoothCaseList.Begin();
-    if (node == nullptr) {
-        return;
-    }
-    while (node != bluetoothCaseList.End()) {
-        if ((bdAddr.addr[0] == node->data_.addr[0]) && (bdAddr.addr[1] == node->data_.addr[1])
-            && (bdAddr.addr[2] == node->data_.addr[2]) && (bdAddr.addr[3] == node->data_.addr[3])
-            && (bdAddr.addr[4] == node->data_.addr[4]) && (bdAddr.addr[5] == node->data_.addr[5])) {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bdAddr true");
-            bluetoothCaseList.Remove(node);
-        }
-        node = node->next_;
-    }
-    // 跳转并刷新列表
-    MainBluetoothView::GetInstance()->ChangeView(BLUETOOTHEOPTIONSVIEW, BLUETOOTHDEVICELISTVIEW);
-}
-
-void BluetoothPresenter::ClickOptionsOneButton(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::OnClick BLUETOOTH_OPTIONONE_BUTTON");
-    BluetoothOptionsView *bluetoothOptionsView = BluetoothOptionsView::GetInstance();
-    if (bluetoothOptionsView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothOptionsView GetInstance fail");
-        return;
-    }
-    BluetoothModel::GetInstance()->SetBtStatus();
-    if (BluetoothModel::GetInstance()->GetAclConnected() == true) {
-        BluetoothModel::GetInstance()->SetTagConnectNew(false);
-        bluetoothOptionsView->SetBtDisconnect();
-        MainBluetoothView::GetInstance()->ChangeView(BLUETOOTHEOPTIONSVIEW, BLUETOOTHDEVICELISTVIEW);
-    } else {
-        BluetoothModel::GetInstance()->SetTagReconnectJump(true);
-        // 重连动画
-        MainBluetoothView::GetInstance()->ChangeView(BLUETOOTHEOPTIONSVIEW, BLUETOOTHRECONNECTVIEW);
-        // 判断是否已有连接
-        bd_addr_t *lastAddr = BluetoothModel::GetInstance()->GetLastConnedAddr();
-        bool ret = bt_is_acl_connected(lastAddr);
-        if (ret) {
-            BluetoothModel::GetInstance()->SetTagConnectNew(true);
-            bluetoothOptionsView->SetBtDisconnect();
-        } else {
-            BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();
-            bool ret = gap_connect_remote_device((const bd_addr_t *)&caseInfo->addr);
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickOptionsOneButton gap_connect_remote_device ret = %d", ret);
-        }
-    }
-}
-
-void BluetoothPresenter::ClickSuccBackButton(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::OnClick BLUETOOTH_SUCC_BACK_BUTTON");
-    MainBluetoothView::GetInstance()->ChangeView(TIPSSUCCMESSAGEVIEW, BLUETOOTHDEVICELISTVIEW);
-}
-
-void BluetoothPresenter::ClickFailBackButton(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::OnClick BLUETOOTH_FAIL_BACK_BUTTON");
-    MainBluetoothView::GetInstance()->ChangeView(TIPSFAILMESSAGEVIEW, BLUETOOTHEARPHONEVIEW);
-}
-
-void BluetoothPresenter::ClickConnfailBackButton(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::OnClick BLUETOOTH_CONN_FAIL_BACK_BUTTON");
-    MainBluetoothView::GetInstance()->ChangeView(TIPSCONNFAILMESSAGEVIEW, BLUETOOTHRECONNECTVIEW);
-    BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();
-    bool ret = gap_connect_remote_device((const bd_addr_t *)&caseInfo->addr);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickConnfailBackButton gap_connect_remote_device ret = %d", ret);
-}
-
-bool BluetoothPresenter::OnDragEnd(UIView& view, const DragEvent& event)
-{
-    if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {
-        MainBluetoothView::GetInstance()->DropView(view);
-    }
-    return true;
-}
-
-bool BluetoothPresenter::OnClick(UIView &view, const ClickEvent &event)
-{
-    UNUSED(event);
-    if (strcmp(view.GetViewId(), BLUETOOTH_RESCAN_BUTTON) == 0) {
-        ClickRescanButton();
-    } else if (strcmp(view.GetViewId(), BLUETOOTH_NEWEQUIPMENT_BUTTON) == 0) {
-        ClickNewEquipmentButton();
-    } else if (strcmp(view.GetViewId(), BLUETOOTH_CANCELCONNEDREQUEST_BUTTON) == 0) {
-        ClickCancelConnedRequestButton();
-    } else if (strcmp(view.GetViewId(), BLUETOOTH_UNPAIR_BUTTON) == 0) {
-        ClickUnpairButton();
-    } else if (strcmp(view.GetViewId(), BLUETOOTH_OPTIONONE_BUTTON) == 0) {
-        ClickOptionsOneButton();
-    } else if (strcmp(view.GetViewId(), BLUETOOTH_SUCC_BACK_BUTTON) == 0) {
-        ClickSuccBackButton();
-    } else if (strcmp(view.GetViewId(), BLUETOOTH_FAIL_BACK_BUTTON) == 0) {
-        ClickFailBackButton();
-    } else if (strcmp(view.GetViewId(), BLUETOOTH_CONN_FAIL_BACK_BUTTON) == 0) {
-        ClickConnfailBackButton();
-    }
-    return true;
-}
-//增加按键事件
-       bool BluetoothPresenter::OnKeyAct(UIView& view, const KeyEvent& event)
-       {
-               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(preSlice);
-               }
-               return true;
-       }
-};
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: BluetoothPresenter view\r
+ * Author:\r
+ * Create: 2021-10-13\r
+ */\r
+\r
+#include "wearable_log.h"\r
+#include "UiConfig.h"\r
+#include "BluetoothPresenter.h"\r
+#include "BluetoothReconnectView.h"\r
+#include "MainBluetoothView.h"\r
+#include "UiConfig.h"\r
+#include "BluetoothModel.h"\r
+\r
+namespace OHOS {\r
+static BluetoothPresenter *g_pBluetoothPresenter = nullptr;\r
+\r
+BluetoothPresenter::BluetoothPresenter()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter new");\r
+    g_pBluetoothPresenter = this;\r
+    bluetoothMode_ = BluetoothModel::GetInstance();\r
+}\r
+\r
+BluetoothPresenter::~BluetoothPresenter()\r
+{\r
+    g_pBluetoothPresenter = nullptr;\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::~BluetoothPresenter");\r
+}\r
+\r
+void BluetoothPresenter::OnStart()\r
+{\r
+    Presenter<MainBluetoothView>::OnStart();\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::On Start ");\r
+}\r
+\r
+void BluetoothPresenter::OnPause(void) {}\r
+\r
+void BluetoothPresenter::OnResume(void) {}\r
+\r
+void BluetoothPresenter::OnStop(void)\r
+{\r
+    BluetoothEarPhoneView *bluetoothEarPhoneView = BluetoothEarPhoneView::GetInstance();\r
+    if (bluetoothEarPhoneView != nullptr) {\r
+        bluetoothEarPhoneView->StopBtDiscovery();\r
+        return;\r
+    }\r
+}\r
+\r
+BluetoothPresenter *BluetoothPresenter::GetInstance()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter GetInstance");\r
+    return g_pBluetoothPresenter;\r
+}\r
+\r
+void BluetoothPresenter::ClickRescanButton(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::OnClick BLUETOOTH_RESCAN_BUTTON");\r
+    // 跳转正在搜索界面\r
+    view_->ChangeView(BLUETOOTHEARLISTVIEW, BLUETOOTHEARPHONEVIEW);\r
+}\r
+\r
+void BluetoothPresenter::ClickNewEquipmentButton(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::OnClick BLUETOOTH_NEWEQUIPMENT_BUTTON");\r
+    bluetoothMode_->SetTagReturnToDeviceListView(true);\r
+    view_->ChangeView(BLUETOOTHDEVICELISTVIEW, BLUETOOTHEARPHONEVIEW);\r
+}\r
+\r
+void BluetoothPresenter::ClickCancelConnedRequestButton(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::OnClick BLUETOOTH_CANCELCONNEDREQUEST_BUTTON");\r
+    BluetoothCaseInfo *caseInfo = bluetoothMode_->GetTempMacValue();\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickCancelConnedRequestButton Addr: %02x%02x%02x%02x%02x%02x",\r
+                  caseInfo->addr[5], caseInfo->addr[4], caseInfo->addr[3], /* mac下标 0 1 2 3 4 5 */\r
+                  caseInfo->addr[2], caseInfo->addr[1], caseInfo->addr[0]); /* mac下标 0 1 2 3 4 5 */\r
+    errcode_t retVal = gap_disconnect_remote_device((const bd_addr_t *)caseInfo->addr);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickCancelConnedRequestButton gap_disconnect_remote_device retVal = %d", retVal);\r
+\r
+    bluetoothMode_->SetTagScanDeviceClicked(false);\r
+    // 刷新列表\r
+    BluetoothEarListView *bluetoothEarListView = BluetoothEarListView::GetInstance();\r
+    if (bluetoothEarListView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ClickCancelConnedRequestButton bluetoothEarListView nullptr");\r
+        return;\r
+    }\r
+    if (bluetoothEarListView->GetScanUIList() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ClickCancelConnedRequestButton GetScanUIList nullptr");\r
+        return;\r
+    }\r
+    bluetoothEarListView->GetScanUIList()->RefreshList();\r
+    bluetoothEarListView->SetCancelConnedRequestButtonRemove();\r
+    bluetoothEarListView->SetTitleLabel("扫描完成");\r
+\r
+    BluetoothItemView *pbItermView = bluetoothMode_->GetConnectionView();\r
+    if (pbItermView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HandleBeforeChangeView The GetConnectionView get failed.");\r
+        return;\r
+    }\r
+    pbItermView->ConnectAnimatorStop();\r
+    bluetoothMode_->SetConnectionView(nullptr);\r
+    bluetoothEarListView->SetNewEquipmentButtonAdd();\r
+    RootView::GetInstance()->Invalidate();\r
+}\r
+\r
+void BluetoothPresenter::ClickUnpairButton(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::OnClick BLUETOOTH_UNPAIR_BUTTON");\r
+    bluetoothMode_->SetTagConnectNew(false);\r
+    BluetoothOptionsView *bluetoothOptionsView = BluetoothOptionsView::GetInstance();\r
+    if (bluetoothOptionsView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothOptionsView GetInstance fail");\r
+        return;\r
+    }\r
+    bluetoothOptionsView->SetUnpair(); // 取消配对\r
+    // 删除对应设备列表节点\r
+    bd_addr_t bdAddr = bluetoothOptionsView->GetCurrentAddr();\r
+    List<BluetoothCaseInfo> &bluetoothCaseList = bluetoothMode_->GetConnedDevicesCase();\r
+    ListNode<BluetoothCaseInfo> *node = bluetoothCaseList.Begin();\r
+    if (node == nullptr) {\r
+        return;\r
+    }\r
+    while (node != bluetoothCaseList.End()) {\r
+        if ((bdAddr.addr[0] == node->data_.addr[0]) && (bdAddr.addr[1] == node->data_.addr[1])\r
+            && (bdAddr.addr[2] == node->data_.addr[2]) && (bdAddr.addr[3] == node->data_.addr[3])\r
+            && (bdAddr.addr[4] == node->data_.addr[4]) && (bdAddr.addr[5] == node->data_.addr[5])) {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bdAddr true");\r
+            bluetoothCaseList.Remove(node);\r
+        }\r
+        node = node->next_;\r
+    }\r
+    // 跳转并刷新列表\r
+    view_->ChangeView(BLUETOOTHEOPTIONSVIEW, BLUETOOTHDEVICELISTVIEW);\r
+}\r
+\r
+void BluetoothPresenter::ClickOptionsOneButton(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::OnClick BLUETOOTH_OPTIONONE_BUTTON");\r
+    BluetoothOptionsView *bluetoothOptionsView = BluetoothOptionsView::GetInstance();\r
+    if (bluetoothOptionsView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothOptionsView GetInstance fail");\r
+        return;\r
+    }\r
+    bluetoothMode_->SetBtStatus();\r
+    if (bluetoothMode_->GetAclConnected() == true) {\r
+        bluetoothMode_->SetTagConnectNew(false);\r
+        bluetoothOptionsView->SetBtDisconnect();\r
+        view_->ChangeView(BLUETOOTHEOPTIONSVIEW, BLUETOOTHDEVICELISTVIEW);\r
+    } else {\r
+        bluetoothMode_->SetTagReconnectJump(true);\r
+        // 重连动画\r
+        view_->ChangeView(BLUETOOTHEOPTIONSVIEW, BLUETOOTHRECONNECTVIEW);\r
+        // 判断是否已有连接\r
+        bd_addr_t *lastAddr = bluetoothMode_->GetLastConnedAddr();\r
+        if (bt_is_acl_connected(lastAddr)) {\r
+            bluetoothMode_->SetTagConnectNew(true);\r
+            bluetoothOptionsView->SetBtDisconnect();\r
+        } else {\r
+            BluetoothCaseInfo *caseInfo = bluetoothMode_->GetTempMacValue();\r
+            errcode_t retVal = BluetoothModel::GetInstance()->ConnectRemoteDevice((const bd_addr_t *)&caseInfo->addr);\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickOptionsOneButton ConnectRemoteDevice retVal = %d", retVal);\r
+        }\r
+    }\r
+}\r
+\r
+void BluetoothPresenter::ClickSuccBackButton(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::OnClick BLUETOOTH_SUCC_BACK_BUTTON");\r
+    view_->ChangeView(TIPSSUCCMESSAGEVIEW, BLUETOOTHDEVICELISTVIEW);\r
+}\r
+\r
+void BluetoothPresenter::ClickFailBackButton(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::OnClick BLUETOOTH_FAIL_BACK_BUTTON");\r
+    view_->ChangeView(TIPSFAILMESSAGEVIEW, BLUETOOTHEARPHONEVIEW);\r
+}\r
+\r
+void BluetoothPresenter::ClickConnfailBackButton(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothPresenter::OnClick BLUETOOTH_CONN_FAIL_BACK_BUTTON");\r
+    view_->ChangeView(TIPSCONNFAILMESSAGEVIEW, BLUETOOTHRECONNECTVIEW);\r
+    BluetoothCaseInfo *caseInfo = bluetoothMode_->GetTempMacValue();\r
+    errcode_t retVal = bluetoothMode_->ConnectRemoteDevice((const bd_addr_t *)&caseInfo->addr);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ClickConnfailBackButton ConnectRemoteDevice retVal = %d", retVal);\r
+}\r
+\r
+bool BluetoothPresenter::OnDragEnd(UIView& view, const DragEvent& event)\r
+{\r
+    if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {\r
+        view_->DropView(view);\r
+    }\r
+    return true;\r
+}\r
+\r
+bool BluetoothPresenter::OnClick(UIView &view, const ClickEvent &event)\r
+{\r
+    UNUSED(event);\r
+    if (strcmp(view.GetViewId(), BLUETOOTH_RESCAN_BUTTON) == 0) {\r
+        ClickRescanButton();\r
+    } else if (strcmp(view.GetViewId(), BLUETOOTH_NEWEQUIPMENT_BUTTON) == 0) {\r
+        ClickNewEquipmentButton();\r
+    } else if (strcmp(view.GetViewId(), BLUETOOTH_CANCELCONNEDREQUEST_BUTTON) == 0) {\r
+        ClickCancelConnedRequestButton();\r
+    } else if (strcmp(view.GetViewId(), BLUETOOTH_UNPAIR_BUTTON) == 0) {\r
+        ClickUnpairButton();\r
+    } else if (strcmp(view.GetViewId(), BLUETOOTH_OPTIONONE_BUTTON) == 0) {\r
+        ClickOptionsOneButton();\r
+    } else if (strcmp(view.GetViewId(), BLUETOOTH_SUCC_BACK_BUTTON) == 0) {\r
+        ClickSuccBackButton();\r
+    } else if (strcmp(view.GetViewId(), BLUETOOTH_FAIL_BACK_BUTTON) == 0) {\r
+        ClickFailBackButton();\r
+    } else if (strcmp(view.GetViewId(), BLUETOOTH_CONN_FAIL_BACK_BUTTON) == 0) {\r
+        ClickConnfailBackButton();\r
+    }\r
+    return true;\r
+}\r
+};\r
index f13f615..ad23342 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Bluetooth Reconnect View
- * Create: 2021-10-13
- */
-
-#include "BluetoothReconnectView.h"
-#include "BluetoothModel.h"
-#include "wearable_log.h"
-#include "UiConfig.h"
-#include "PlayersPresenter.h"
-#include "BluetoothPresenter.h"
-#include "common/image_cache_manager.h"
-
-namespace OHOS {
-static BluetoothReconnectView *g_pBluetoothReconnectView{nullptr};
-#define BLUETOOTH_IMAGE_X 175
-#define BLUETOOTH_IMAGE_Y 125
-#define BLUETOOTH_IMAGE_WIDTH 104
-#define BLUETOOTH_IMAGE_HEIGHT 104
-#define BLUETOOTH_DELAY 200
-
-BluetoothReconnectView::BluetoothReconnectView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothReconnectView::BluetoothReconnectView");
-    g_pBluetoothReconnectView = this;
-}
-
-BluetoothReconnectView::~BluetoothReconnectView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothReconnectView::~BluetoothReconnectView");
-    group->RemoveAll();
-    delete titleLabel;
-    titleLabel = nullptr;
-    delete bluetoothNameLabel;
-    bluetoothNameLabel = nullptr;
-    delete reconnectAnimator;
-    reconnectAnimator = nullptr;
-    delete group;
-    group = nullptr;
-    g_pBluetoothReconnectView = nullptr;
-}
-
-bd_addr_t BluetoothReconnectView::GetcurrentBdAddr(void)
-{
-    return currentBdAddr;
-}
-
-BluetoothReconnectView *BluetoothReconnectView::GetInstance()
-{
-    return g_pBluetoothReconnectView;
-}
-
-void BluetoothReconnectView::ShowUpTitleLabel()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothReconnectView::ShowUpTitleLabel");
-    if (titleLabel == nullptr) {
-        titleLabel = new UILabel();
-        if (titleLabel == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothReconnectView titleLabel new fail");
-            return;
-        }
-        titleLabel->SetPosition(87, 285, 280, 45); // 60:x 100:y 333:width 45:height
-        titleLabel->SetText("正在重连...");
-        titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);
-        titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);
-        titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-        group->Add(titleLabel);
-    }
-    if (bluetoothNameLabel == nullptr) {
-        bluetoothNameLabel = new UILabel();
-        if (bluetoothNameLabel == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothNameLabel new fail");
-            return;
-        }
-        BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();
-        bluetoothNameLabel->SetText(reinterpret_cast<const char *>(caseInfo->deviceName));
-        bluetoothNameLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);
-        bluetoothNameLabel->SetPosition(60, 235, 333, 45); // 60:x 148:y 333:width 33:height
-        bluetoothNameLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);
-        bluetoothNameLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);
-        bluetoothNameLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-        group->Add(bluetoothNameLabel);
-    }
-}
-
-void BluetoothReconnectView::BtReconnectStart(void)
-{
-    reconnectAnimator->Start();
-}
-
-void BluetoothReconnectView::BtReconnectStop(void)
-{
-    reconnectAnimator->Stop();
-}
-
-UIViewGroup *BluetoothReconnectView::InitShowUpView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothReconnectView init");
-    if (group == nullptr) {
-        group = new UIViewGroup();
-        if (group == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");
-            return nullptr;
-        }
-        group->SetPosition(0, 0);
-        group->SetWidth(HORIZONTAL_RESOLUTION);
-        group->SetHeight(VERTICAL_RESOLUTION);
-    }
-    BtReconnectImageAnimator();
-    ShowUpTitleLabel();
-
-    //增加按键监听
-       RootView::OnKeyActListener*keyactListener = (RootView::OnKeyActListener*)OHOS::BluetoothPresenter::GetInstance();
-       RootView::GetInstance()->SetOnKeyActListener(keyactListener);
-
-    UIView::OnDragListener *reDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();
-    UIView::OnDragListener *reDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();
-    if ((reDragListener == nullptr) && (reDragListener2 == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "reDragListener GetInstance fail");
-        return nullptr;
-    }
-    if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {
-        group->SetOnDragListener(reDragListener);
-    } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {
-        group->SetOnDragListener(reDragListener2);
-    }
-    group->SetViewId(BLUETOOTH_RECONNECT_VIEW);
-    group->SetDraggable(true);
-    group->SetTouchable(true);
-    return group;
-}
-
-void BluetoothReconnectView::RefreshBluetoothNameLabel()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothReconnectView::RefreshBluetoothNameLabel");
-    if (bluetoothNameLabel == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RefreshBluetoothNameLabel bluetoothNameLabel is nullptr");
-            return;
-        }
-    BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();
-    bluetoothNameLabel->SetText(reinterpret_cast<const char *>(caseInfo->deviceName));
-    return;
-}
-
-void BluetoothReconnectView::BtReconnectImageAnimator()
-{
-    const char *reconnectImagePath[BLUETOOTH_RECONNECT_IMAGE_NUM] = {
-        PNG_A019_080_IMAGE_PATH,
-        PNG_A019_081_IMAGE_PATH,
-        PNG_A019_082_IMAGE_PATH,
-        PNG_A019_083_IMAGE_PATH,
-        PNG_A019_084_IMAGE_PATH,
-        PNG_A019_085_IMAGE_PATH,
-        PNG_A019_086_IMAGE_PATH,
-        PNG_A019_087_IMAGE_PATH,
-    };
-
-    if (reconnectAnimator == nullptr) {
-        reconnectAnimator = new UIImageAnimatorView();
-        if (reconnectAnimator == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothReconnectView new reconnectAnimator fail");
-        }
-        for (uint8_t i = 0; i < BLUETOOTH_RECONNECT_IMAGE_NUM; i++) {
-            reconnetImageInfo[i].imageInfo =  ImageCacheManager::GetInstance().LoadSingleRes(reconnectImagePath[i]);
-            reconnetImageInfo[i].imageType = IMG_SRC_IMAGE_INFO;
-            reconnetImageInfo[i].pos.x = BLUETOOTH_IMAGE_X;
-            reconnetImageInfo[i].pos.y = BLUETOOTH_IMAGE_Y;
-            reconnetImageInfo[i].width = BLUETOOTH_IMAGE_WIDTH;
-            reconnetImageInfo[i].height = BLUETOOTH_IMAGE_HEIGHT;
-        }
-        reconnectAnimator->SetPosition(175, 115, 104, 104); // 175:x 175:y 104:width 104:height
-        reconnectAnimator->SetImageAnimatorSrc(reconnetImageInfo, BLUETOOTH_RECONNECT_IMAGE_NUM, BLUETOOTH_DELAY);
-        reconnectAnimator->SetRepeat(true);
-        group->Add(reconnectAnimator);
-    }
-}
-
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Bluetooth Reconnect View\r
+ * Create: 2021-10-13\r
+ */\r
+\r
+#include "BluetoothReconnectView.h"\r
+#include "BluetoothModel.h"\r
+#include "wearable_log.h"\r
+#include "UiConfig.h"\r
+#include "PlayersPresenter.h"\r
+#include "BluetoothPresenter.h"\r
+#include "common/image_cache_manager.h"\r
+\r
+namespace OHOS {\r
+static BluetoothReconnectView *g_pBluetoothReconnectView{nullptr};\r
+#define BLUETOOTH_IMAGE_X 175\r
+#define BLUETOOTH_IMAGE_Y 125\r
+#define BLUETOOTH_IMAGE_WIDTH 104\r
+#define BLUETOOTH_IMAGE_HEIGHT 104\r
+#define BLUETOOTH_DELAY 200\r
+\r
+BluetoothReconnectView::BluetoothReconnectView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothReconnectView::BluetoothReconnectView");\r
+    g_pBluetoothReconnectView = this;\r
+}\r
+\r
+BluetoothReconnectView::~BluetoothReconnectView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothReconnectView::~BluetoothReconnectView");\r
+    group->RemoveAll();\r
+    delete titleLabel;\r
+    titleLabel = nullptr;\r
+    delete bluetoothNameLabel;\r
+    bluetoothNameLabel = nullptr;\r
+    delete reconnectAnimator;\r
+    reconnectAnimator = nullptr;\r
+    delete group;\r
+    group = nullptr;\r
+    g_pBluetoothReconnectView = nullptr;\r
+}\r
+\r
+bd_addr_t BluetoothReconnectView::GetcurrentBdAddr(void)\r
+{\r
+    return currentBdAddr;\r
+}\r
+\r
+BluetoothReconnectView *BluetoothReconnectView::GetInstance()\r
+{\r
+    return g_pBluetoothReconnectView;\r
+}\r
+\r
+void BluetoothReconnectView::ShowUpTitleLabel()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothReconnectView::ShowUpTitleLabel");\r
+    if (titleLabel == nullptr) {\r
+        titleLabel = new UILabel();\r
+        if (titleLabel == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothReconnectView titleLabel new fail");\r
+            return;\r
+        }\r
+        titleLabel->SetPosition(87, 285, 280, 45); // 60:x 100:y 333:width 45:height\r
+        titleLabel->SetText("正在重连...");\r
+        titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);\r
+        titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+        titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+        group->Add(titleLabel);\r
+    }\r
+    if (bluetoothNameLabel == nullptr) {\r
+        bluetoothNameLabel = new UILabel();\r
+        if (bluetoothNameLabel == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothNameLabel new fail");\r
+            return;\r
+        }\r
+        BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();\r
+        bluetoothNameLabel->SetText(reinterpret_cast<const char *>(caseInfo->deviceName));\r
+        bluetoothNameLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
+        bluetoothNameLabel->SetPosition(60, 235, 333, 45); // 60:x 148:y 333:width 33:height\r
+        bluetoothNameLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);\r
+        bluetoothNameLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+        bluetoothNameLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+        group->Add(bluetoothNameLabel);\r
+    }\r
+}\r
+\r
+void BluetoothReconnectView::BtReconnectStart(void)\r
+{\r
+    reconnectAnimator->Start();\r
+}\r
+\r
+void BluetoothReconnectView::BtReconnectStop(void)\r
+{\r
+    reconnectAnimator->Stop();\r
+}\r
+\r
+UIViewGroup *BluetoothReconnectView::InitShowUpView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothReconnectView init");\r
+    if (group == nullptr) {\r
+        group = new UIViewGroup();\r
+        if (group == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
+            return nullptr;\r
+        }\r
+        group->SetPosition(0, 0);\r
+        group->SetWidth(HORIZONTAL_RESOLUTION);\r
+        group->SetHeight(VERTICAL_RESOLUTION);\r
+    }\r
+    BtReconnectImageAnimator();\r
+    ShowUpTitleLabel();\r
+    UIView::OnDragListener *reDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
+    UIView::OnDragListener *reDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();\r
+    if ((reDragListener == nullptr) && (reDragListener2 == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "reDragListener GetInstance fail");\r
+        return nullptr;\r
+    }\r
+    if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
+        group->SetOnDragListener(reDragListener);\r
+    } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
+        group->SetOnDragListener(reDragListener2);\r
+    }\r
+    group->SetViewId(BLUETOOTH_RECONNECT_VIEW);\r
+    group->SetDraggable(true);\r
+    group->SetTouchable(true);\r
+    return group;\r
+}\r
+\r
+void BluetoothReconnectView::RefreshBluetoothNameLabel()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothReconnectView::RefreshBluetoothNameLabel");\r
+    if (bluetoothNameLabel == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RefreshBluetoothNameLabel bluetoothNameLabel is nullptr");\r
+            return;\r
+        }\r
+    BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();\r
+    bluetoothNameLabel->SetText(reinterpret_cast<const char *>(caseInfo->deviceName));\r
+    return;\r
+}\r
+\r
+void BluetoothReconnectView::BtReconnectImageAnimator()\r
+{\r
+    const char *reconnectImagePath[BLUETOOTH_RECONNECT_IMAGE_NUM] = {\r
+        PNG_A019_080_IMAGE_PATH,\r
+        PNG_A019_081_IMAGE_PATH,\r
+        PNG_A019_082_IMAGE_PATH,\r
+        PNG_A019_083_IMAGE_PATH,\r
+        PNG_A019_084_IMAGE_PATH,\r
+        PNG_A019_085_IMAGE_PATH,\r
+        PNG_A019_086_IMAGE_PATH,\r
+        PNG_A019_087_IMAGE_PATH,\r
+    };\r
+\r
+    if (reconnectAnimator == nullptr) {\r
+        reconnectAnimator = new UIImageAnimatorView();\r
+        if (reconnectAnimator == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothReconnectView new reconnectAnimator fail");\r
+        }\r
+        for (uint8_t i = 0; i < BLUETOOTH_RECONNECT_IMAGE_NUM; i++) {\r
+            reconnetImageInfo[i].imageInfo =  ImageCacheManager::GetInstance().LoadSingleRes(reconnectImagePath[i]);\r
+            reconnetImageInfo[i].imageType = IMG_SRC_IMAGE_INFO;\r
+            reconnetImageInfo[i].pos.x = BLUETOOTH_IMAGE_X;\r
+            reconnetImageInfo[i].pos.y = BLUETOOTH_IMAGE_Y;\r
+            reconnetImageInfo[i].width = BLUETOOTH_IMAGE_WIDTH;\r
+            reconnetImageInfo[i].height = BLUETOOTH_IMAGE_HEIGHT;\r
+        }\r
+        reconnectAnimator->SetPosition(175, 115, 104, 104); // 175:x 175:y 104:width 104:height\r
+        reconnectAnimator->SetImageAnimatorSrc(reconnetImageInfo, BLUETOOTH_RECONNECT_IMAGE_NUM, BLUETOOTH_DELAY);\r
+        reconnectAnimator->SetRepeat(true);\r
+        group->Add(reconnectAnimator);\r
+    }\r
+}\r
+\r
 }
\ No newline at end of file
index e4505b3..7fbbc72 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: MainBluetooth view
- * Author:
- * Create: 2021-10-13
- */
-#include "MainBluetoothView.h"
-#include "BluetoothModel.h"
-#include "wearable_log.h"
-
-namespace OHOS {
-
-static MainBluetoothView *g_pMainBluetoothView = nullptr;
-
-MainBluetoothView::MainBluetoothView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::MainBluetoothView");
-    preProcessView[BLUETOOTHEARPHONEVIEW] = &MainBluetoothView::ChangeBluetoothEarPhoneView;
-    preProcessView[BLUETOOTHEARLISTVIEW] = &MainBluetoothView::ChangeBluetoothEarListView;
-    preProcessView[BLUETOOTHDEVICELISTVIEW] = &MainBluetoothView::ChangeBluetoothDeviceListView;
-    preProcessView[BLUETOOTHEOPTIONSVIEW] = &MainBluetoothView::ChangeBluetoothOptionsView;
-    preProcessView[BLUETOOTHRECONNECTVIEW] = &MainBluetoothView::ChangeBluetoothReconnectView;
-    preProcessView[TIPSSUCCMESSAGEVIEW] = &MainBluetoothView::ChangeTipsSuccMessageView;
-    preProcessView[TIPSCONNFAILMESSAGEVIEW] = &MainBluetoothView::ChangeTipsConnFailMessageView;
-    preProcessView[TIPSFAILMESSAGEVIEW] = &MainBluetoothView::ChangeTipsFailMessageView;
-    preProcessView[BLUETOOTHEVIEW] = nullptr;
-
-    g_pMainBluetoothView = this;
-}
-
-MainBluetoothView::~MainBluetoothView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::~MainBluetoothView");
-    delete bluetoothEarPhoneView;
-    bluetoothEarPhoneView = nullptr;
-    delete bluetoothOptionsView;
-    bluetoothOptionsView = nullptr;
-    delete bluetoothEarListView;
-    bluetoothEarListView = nullptr;
-    delete bluetoothReconnectView;
-    bluetoothReconnectView = nullptr;
-    delete bluetoothDeviceListView;
-    bluetoothDeviceListView = nullptr;
-    delete tipsSuccMessageView;
-    tipsSuccMessageView = nullptr;
-    delete tipsConnFailMessageView;
-    tipsConnFailMessageView = nullptr;
-    delete tipsFailMessageView;
-    tipsFailMessageView = nullptr;
-    g_pMainBluetoothView = nullptr;
-}
-
-MainBluetoothView *MainBluetoothView::GetInstance()
-{
-    return g_pMainBluetoothView;
-}
-
-void MainBluetoothView::OnStart()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::~OnStart");
-    View<BluetoothPresenter>::OnStart();
-    BaseView::RootView(Color::Black().full);
-    BluetoothModel *bluetoothModel = BluetoothModel::GetInstance();
-    if (bluetoothModel == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::InitView bluetoothModel nullptr err");
-        return;
-    }
-    bluetoothModel->SetBluetoothCalleridStatus(CALLERSETTING);
-    bluetoothModel->SetTagConnectView(true);
-    List<BluetoothCaseInfo> &bluetoothCaseList = BluetoothModel::GetInstance()->GetConnedDevicesCase();
-    BluetoothModel::GetInstance()->SetTagReturnToDeviceListView(false);
-    int16_t unusedValue = BLUETOOTHEVIEW_MAX;
-    bool ret = bluetoothCaseList.IsEmpty();
-    if (ret != true) {
-        ChangeView(unusedValue, BLUETOOTHDEVICELISTVIEW);
-    } else {
-        ChangeView(unusedValue, BLUETOOTHEARPHONEVIEW);
-    }
-    RootView::GetInstance()->Invalidate();
-    return;
-}
-
-void MainBluetoothView::OnSetUpView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::~OnSetUpView");
-    View<BluetoothPresenter>::OnSetUpView();
-    Draw();
-}
-
-void MainBluetoothView::OnTearDownView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::~OnTearDownView");
-    View<BluetoothPresenter>::OnTearDownView();
-    return;
-}
-
-void MainBluetoothView::OnStop()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::~OnStop");
-    View<BluetoothPresenter>::OnStop();
-    if (container_ != nullptr) {
-        container_->RemoveAll();
-        delete container_;
-        container_ = nullptr;
-    }
-    RootView::GetInstance()->ClearOnKeyActListener();
-    RootView::GetInstance()->RemoveAll();
-    return;
-}
-
-bool MainBluetoothView::ChangeBluetoothDeviceListView(int16_t hideView, int16_t thisView)
-{
-    UNUSED(hideView);
-    if (container[thisView] == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothDeviceListView");
-        bluetoothDeviceListView = new BluetoothDeviceListView();
-        if (bluetoothDeviceListView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothDeviceListView new fail");
-            return false;
-        }
-        // init view
-        UIViewGroup *group = bluetoothDeviceListView->InitShowUpView();
-        if (group == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Device group nullptr fail");
-            return false;
-        }
-        container[thisView] = group;
-        RootView::GetInstance()->Add(container[thisView]);
-    } else {
-        // 刷新列表
-        UIList *deviceList = bluetoothDeviceListView->GetDeviceUIList();
-        if (deviceList == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick deviceList nullptr");
-            return false;
-        }
-        deviceList->RefreshList();
-    }
-    BluetoothDeviceListView *bluetoothDeviceListView = BluetoothDeviceListView::GetInstance();
-    if (bluetoothDeviceListView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick bluetoothDeviceListView new fail");
-        return false;
-    }
-    bluetoothDeviceListView->RefreshText();
-    return true;
-}
-
-bool MainBluetoothView::ChangeTipsFailMessageView(int16_t hideView, int16_t thisView)
-{
-    UNUSED(hideView);
-    if (container[thisView] == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeTipsFailMessageView");
-        tipsFailMessageView = new TipsFailMessageView();
-        if (tipsFailMessageView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsFailMessageView new fail");
-            return false;
-        }
-        // init view
-        UIViewGroup *group = tipsFailMessageView->ShowUpViewInit();
-        if (group == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");
-            return false;
-        }
-        container[thisView] = group;
-        RootView::GetInstance()->Add(container[thisView]);
-    }
-    return true;
-}
-
-bool MainBluetoothView::ChangeTipsConnFailMessageView(int16_t hideView, int16_t thisView)
-{
-    UNUSED(hideView);
-    if (container[thisView] == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeTipsConnFailMessageView");
-        tipsConnFailMessageView = new TipsConnFailMessageView();
-        if (tipsConnFailMessageView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsConnFailMessageView new fail");
-            return false;
-        }
-        // init view
-        UIViewGroup *group = tipsConnFailMessageView->ShowUpViewInit();
-        if (group == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");
-            return false;
-        }
-        container[thisView] = group;
-        RootView::GetInstance()->Add(container[thisView]);
-    }
-    BluetoothReconnectView *bluetoothReconnectView = BluetoothReconnectView::GetInstance();
-    if (bluetoothReconnectView == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GapAclStateChangedCallback bluetoothReconnectView == nullptr");
-    } else {
-        container[BLUETOOTHRECONNECTVIEW]->SetVisible(false);
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeTipsConnFailMessageView SetVisible(false)");
-    }
-    return true;
-}
-
-bool MainBluetoothView::ChangeTipsSuccMessageView(int16_t hideView, int16_t thisView)
-{
-    UNUSED(hideView);
-    if (container[thisView] == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeTipsSuccMessageView");
-        tipsSuccMessageView = new TipsSuccMessageView();
-        if (tipsSuccMessageView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsSuccMessageView new fail");
-            return false;
-        }
-        // init view
-        UIViewGroup *group = tipsSuccMessageView->ShowUpViewInit();
-        if (group == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");
-            return false;
-        }
-        container[thisView] = group;
-        RootView::GetInstance()->Add(container[thisView]);
-    }
-    return true;
-}
-
-bool MainBluetoothView::ChangeBluetoothEarPhoneView(int16_t hideView, int16_t thisView)
-{
-    UNUSED(hideView);
-    if (container[thisView] == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothEarPhoneView");
-        bluetoothEarPhoneView = new BluetoothEarPhoneView();
-        if (bluetoothEarPhoneView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarPhoneView new fail");
-            return false;
-        }
-        UIViewGroup *group = bluetoothEarPhoneView->InitShowUpView(); // init view
-        if (group == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");
-            return false;
-        }
-        container[thisView] = group;
-        RootView::GetInstance()->Add(container[thisView]);
-    }
-    // 动画开始
-    bluetoothEarPhoneView->BtAnimatorStart();
-    // 蓝牙扫描&清空列表
-    bluetoothEarPhoneView->BtEnable();
-    return true;
-}
-
-bool MainBluetoothView::ChangeBluetoothEarListView(int16_t hideView, int16_t thisView)
-{
-    if (container[thisView] == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothEarListView");
-        bluetoothEarListView = new BluetoothEarListView();
-        if (bluetoothEarListView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarListView new fail");
-            return false;
-        }
-        UIViewGroup *group = bluetoothEarListView->InitShowUpView(); // init view
-        if (group == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");
-            return false;
-        }
-        container[thisView] = group;
-        RootView::GetInstance()->Add(container[thisView]);
-    } else {
-        // 刷新列表
-        UIList *scanList = bluetoothEarListView->GetScanUIList();
-        if (scanList == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick scanList nullptr");
-            return false;
-        }
-        scanList->RefreshList();
-    }
-    ResetEarListView(hideView);
-    return true;
-}
-
-bool MainBluetoothView::ChangeBluetoothOptionsView(int16_t hideView, int16_t thisView)
-{
-    UNUSED(hideView);
-    if (container[thisView] == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothOptionsView");
-        bluetoothOptionsView = new BluetoothOptionsView();
-        if (bluetoothOptionsView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothOptionsView new fail");
-            return false;
-        }
-        // init view
-        UIViewGroup *group = bluetoothOptionsView->InitShowUpView();
-        if (group == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");
-            return false;
-        }
-        container[thisView] = group;
-        RootView::GetInstance()->Add(container[thisView]);
-    }
-    return true;
-}
-
-bool MainBluetoothView::ChangeBluetoothReconnectView(int16_t hideView, int16_t thisView)
-{
-    UNUSED(hideView);
-    if (container[thisView] == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothReconnectView");
-        bluetoothReconnectView = new BluetoothReconnectView();
-        if (bluetoothReconnectView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothReconnectView new fail");
-            return false;
-        }
-        UIViewGroup *group = bluetoothReconnectView->InitShowUpView();
-        if (group == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");
-            return false;
-        }
-        container[thisView] = group;
-        RootView::GetInstance()->Add(container[thisView]);
-    }
-    BluetoothModel::GetInstance()->SetTagDisconnectView(true);
-    BluetoothReconnectView::GetInstance()->RefreshBluetoothNameLabel();
-    BluetoothReconnectView::GetInstance()->BtReconnectStart();
-    return true;
-}
-
-void MainBluetoothView::CorrespondingJump(int16_t hideView)
-{
-    BluetoothModel *bluetoothModel = BluetoothModel::GetInstance();
-    if (bluetoothModel == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView bluetoothModel == nullptr");
-            return;
-        }
-    if (bluetoothModel->GetTagReconnectJump() == true) {
-        ChangeView(hideView, BLUETOOTHEOPTIONSVIEW);
-    } else {
-        std::list<BluetoothCaseInfo> &bluetoothScanList = BluetoothModel::GetInstance()->GetCase();
-        bool ret = bluetoothScanList.empty();
-        if (ret != true) {
-            ChangeView(hideView, BLUETOOTHEARLISTVIEW);
-        } else {
-            ChangeView(hideView, BLUETOOTHEARPHONEVIEW);
-        }
-    }
-    return;
-}
-
-void MainBluetoothView::ChangeSettingView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::ChangeSettingView");
-    BluetoothModel::GetInstance()->SetTagConnectView(false);
-    BluetoothModel::GetInstance()->SetTagScanDeviceClicked(false);
-    NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);
-}
-
-void MainBluetoothView::DropEarPhoneView()
-{
-    BluetoothEarPhoneView *bluetoothEarPhoneView = BluetoothEarPhoneView::GetInstance();
-    if (bluetoothEarPhoneView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView bluetoothEarPhoneView == nullptr");
-        return;
-    }
-    bluetoothEarPhoneView->BtAnimatorStop();
-    bluetoothEarPhoneView->StopBtDiscovery();
-    bool ret = BluetoothModel::GetInstance()->IsTagReturnToDeviceListView();
-    if (ret == true) {
-        ChangeView(BLUETOOTHEARPHONEVIEW, BLUETOOTHDEVICELISTVIEW);
-    } else {
-        ChangeSettingView();
-    }
-}
-
-void MainBluetoothView::DropEarListView()
-{
-    bool ret = BluetoothModel::GetInstance()->IsTagScanDeviceClicked();
-    if (ret == true) {
-        BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropEarListView Addr: %02x%02x%02x%02x%02x%02x",
-                    caseInfo->addr[5], caseInfo->addr[4], caseInfo->addr[3], /* mac下标 0 1 2 3 4 5 */
-                    caseInfo->addr[2], caseInfo->addr[1], caseInfo->addr[0]); /* mac下标 0 1 2 3 4 5 */
-        ret = gap_disconnect_remote_device((const bd_addr_t *)caseInfo->addr);
-        if (ret == false) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropEarListView gap_disconnect_remote_device false");
-        }
-    }
-    BluetoothEarPhoneView *bluetoothEarPhoneView = BluetoothEarPhoneView::GetInstance();
-    if (bluetoothEarPhoneView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView bluetoothEarPhoneView == nullptr");
-        return;
-    }
-    bluetoothEarPhoneView->StopBtDiscovery();
-    BluetoothItemView *pbItermView = BluetoothModel::GetInstance()->GetConnectionView();
-    if (pbItermView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DropView The GetConnectionView get failed.");
-    } else {
-        pbItermView->ConnectAnimatorStop();
-        BluetoothModel::GetInstance()->SetConnectionView(nullptr);
-    }
-    ChangeSettingView();
-}
-
-void MainBluetoothView::DropView(UIView& view)
-{
-    if (&view == container[BLUETOOTHEARPHONEVIEW]) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView::container[BLUETOOTHEARPHONEVIEW]");
-        DropEarPhoneView();
-    } else if (&view == container[BLUETOOTHEOPTIONSVIEW]) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView::container[BLUETOOTHEOPTIONSVIEW]");
-        ChangeView(BLUETOOTHEOPTIONSVIEW, BLUETOOTHDEVICELISTVIEW);
-    } else if (&view == container[TIPSCONNFAILMESSAGEVIEW]) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView::container[TIPSCONNFAILMESSAGEVIEW]");
-        CorrespondingJump(TIPSCONNFAILMESSAGEVIEW);
-    } else if (&view == container[TIPSSUCCMESSAGEVIEW]) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView::container[TIPSSUCCMESSAGEVIEW]");
-        ChangeView(TIPSSUCCMESSAGEVIEW, BLUETOOTHDEVICELISTVIEW);
-    } else if (&view == container[TIPSFAILMESSAGEVIEW]) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView::container[TIPSFAILMESSAGEVIEW]");
-        ChangeView(TIPSFAILMESSAGEVIEW, BLUETOOTHEARPHONEVIEW);
-    } else if (&view == container[BLUETOOTHEARLISTVIEW]) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView::container[BLUETOOTHEARLISTVIEW]");
-        DropEarListView();
-    } else if (&view == container[BLUETOOTHDEVICELISTVIEW]) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView::container[BLUETOOTHDEVICELISTVIEW]");
-        ChangeSettingView();
-    } else if (&view == container[BLUETOOTHRECONNECTVIEW]) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView::container[BLUETOOTHRECONNECTVIEW]");
-        CorrespondingJump(BLUETOOTHRECONNECTVIEW);
-        BluetoothModel::GetInstance()->SetTagDisconnectView(false);
-        BluetoothReconnectView *bluetoothReconnectView = BluetoothReconnectView::GetInstance();
-        bluetoothReconnectView->BtReconnectStop();
-    }
-}
-
-void MainBluetoothView::ResetEarListView(int16_t hideView)
-{
-    BluetoothEarListView *bluetoothEarListView = BluetoothEarListView::GetInstance();
-    if (bluetoothEarListView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::ResetEarListView bluetoothEarListView == nullptr");
-        return;
-    }
-    bluetoothEarListView->SetCancelConnedRequestButtonRemove();
-    if (hideView == BLUETOOTHEARPHONEVIEW) {
-        bluetoothEarListView->SetTitleLabel("正在扫描");
-        bluetoothEarListView->SetNewEquipmentButtonRemove();
-    } else if (hideView == TIPSCONNFAILMESSAGEVIEW) {
-        bluetoothEarListView->SetTitleLabel("扫描完成");
-        bluetoothEarListView->SetNewEquipmentButtonAdd();
-        RootView::GetInstance()->Invalidate();
-    }
-}
-
-bool MainBluetoothView::CheckViewParam(int16_t hideView, int16_t showView)
-{
-    if (showView < 0 || showView >= BLUETOOTHEVIEW_MAX) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::CheckViewParam showView err.");
-        return false;
-    }
-
-    if (hideView < 0 || hideView > BLUETOOTHEVIEW_MAX) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::CheckViewParam hideView err.");
-        return false;
-    }
-
-    if (hideView == BLUETOOTHEARLISTVIEW || showView == BLUETOOTHEARLISTVIEW) {
-        BluetoothModel::GetInstance()->SetTagScanDeviceClicked(false);
-    }
-
-    return true;
-}
-
-void MainBluetoothView::ChangeView(int16_t hideView, int16_t showView)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::ChangeView %d, %d", hideView, showView);
-
-    if (CheckViewParam(hideView, showView) == false) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::CheckViewParam failed.");
-        return;
-    }
-
-    PreprosssChangeView tmpPreProcessView = preProcessView[showView];
-
-    if ((this->*tmpPreProcessView)(hideView, showView) == false) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::ChangeView %d %dfailed", showView, hideView);
-        return;
-    }
-    if (hideView != BLUETOOTHEVIEW_MAX) {
-        if (container[hideView] == nullptr) {
-            return;
-        }
-        container[hideView]->SetVisible(false);
-    }
-    container[showView]->SetVisible(true);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView:: ChangeView end!!!%d", showView);
-    RootView::GetInstance()->Invalidate();
-    BluetoothModel::GetInstance()->SetCurView(showView);
-}
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: MainBluetooth view\r
+ * Author:\r
+ * Create: 2021-10-13\r
+ */\r
+#include "MainBluetoothView.h"\r
+#include "BluetoothModel.h"\r
+#include "wearable_log.h"\r
+\r
+namespace OHOS {\r
+\r
+static MainBluetoothView *g_pMainBluetoothView = nullptr;\r
+\r
+MainBluetoothView::MainBluetoothView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::MainBluetoothView");\r
+    preProcessView[BLUETOOTHEARPHONEVIEW] = &MainBluetoothView::ChangeBluetoothEarPhoneView;\r
+    preProcessView[BLUETOOTHEARLISTVIEW] = &MainBluetoothView::ChangeBluetoothEarListView;\r
+    preProcessView[BLUETOOTHDEVICELISTVIEW] = &MainBluetoothView::ChangeBluetoothDeviceListView;\r
+    preProcessView[BLUETOOTHEOPTIONSVIEW] = &MainBluetoothView::ChangeBluetoothOptionsView;\r
+    preProcessView[BLUETOOTHRECONNECTVIEW] = &MainBluetoothView::ChangeBluetoothReconnectView;\r
+    preProcessView[TIPSSUCCMESSAGEVIEW] = &MainBluetoothView::ChangeTipsSuccMessageView;\r
+    preProcessView[TIPSCONNFAILMESSAGEVIEW] = &MainBluetoothView::ChangeTipsConnFailMessageView;\r
+    preProcessView[TIPSFAILMESSAGEVIEW] = &MainBluetoothView::ChangeTipsFailMessageView;\r
+    preProcessView[BLUETOOTHEVIEW] = nullptr;\r
+\r
+    g_pMainBluetoothView = this;\r
+}\r
+\r
+MainBluetoothView::~MainBluetoothView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::~MainBluetoothView");\r
+    delete bluetoothEarPhoneView;\r
+    bluetoothEarPhoneView = nullptr;\r
+    delete bluetoothOptionsView;\r
+    bluetoothOptionsView = nullptr;\r
+    delete bluetoothEarListView;\r
+    bluetoothEarListView = nullptr;\r
+    delete bluetoothReconnectView;\r
+    bluetoothReconnectView = nullptr;\r
+    delete bluetoothDeviceListView;\r
+    bluetoothDeviceListView = nullptr;\r
+    delete tipsSuccMessageView;\r
+    tipsSuccMessageView = nullptr;\r
+    delete tipsConnFailMessageView;\r
+    tipsConnFailMessageView = nullptr;\r
+    delete tipsFailMessageView;\r
+    tipsFailMessageView = nullptr;\r
+    g_pMainBluetoothView = nullptr;\r
+}\r
+\r
+MainBluetoothView *MainBluetoothView::GetInstance()\r
+{\r
+    return g_pMainBluetoothView;\r
+}\r
+\r
+void MainBluetoothView::OnStart()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::~OnStart");\r
+    View<BluetoothPresenter>::OnStart();\r
+    BaseView::RootView(Color::Black().full);\r
+    BluetoothModel *bluetoothModel = BluetoothModel::GetInstance();\r
+    if (bluetoothModel == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::InitView bluetoothModel nullptr err");\r
+        return;\r
+    }\r
+    bluetoothModel->SetBluetoothCalleridStatus(CALLERSETTING);\r
+    bluetoothModel->SetTagConnectView(true);\r
+    List<BluetoothCaseInfo> &bluetoothCaseList = BluetoothModel::GetInstance()->GetConnedDevicesCase();\r
+    BluetoothModel::GetInstance()->SetTagReturnToDeviceListView(false);\r
+    int16_t unusedValue = BLUETOOTHEVIEW_MAX;\r
+    bool ret = bluetoothCaseList.IsEmpty();\r
+    if (ret != true) {\r
+        ChangeView(unusedValue, BLUETOOTHDEVICELISTVIEW);\r
+    } else {\r
+        ChangeView(unusedValue, BLUETOOTHEARPHONEVIEW);\r
+    }\r
+    RootView::GetInstance()->Invalidate();\r
+    return;\r
+}\r
+\r
+void MainBluetoothView::OnSetUpView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::~OnSetUpView");\r
+    View<BluetoothPresenter>::OnSetUpView();\r
+    Draw();\r
+}\r
+\r
+void MainBluetoothView::OnTearDownView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::~OnTearDownView");\r
+    View<BluetoothPresenter>::OnTearDownView();\r
+    return;\r
+}\r
+\r
+void MainBluetoothView::OnStop()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::~OnStop");\r
+    View<BluetoothPresenter>::OnStop();\r
+    if (container_ != nullptr) {\r
+        container_->RemoveAll();\r
+        delete container_;\r
+        container_ = nullptr;\r
+    }\r
+    RootView::GetInstance()->ClearOnKeyActListener();\r
+    RootView::GetInstance()->RemoveAll();\r
+    return;\r
+}\r
+\r
+bool MainBluetoothView::ChangeBluetoothDeviceListView(int16_t hideView, int16_t thisView)\r
+{\r
+    UNUSED(hideView);\r
+    if (container[thisView] == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothDeviceListView");\r
+        bluetoothDeviceListView = new BluetoothDeviceListView();\r
+        if (bluetoothDeviceListView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothDeviceListView new fail");\r
+            return false;\r
+        }\r
+        // init view\r
+        UIViewGroup *group = bluetoothDeviceListView->InitShowUpView();\r
+        if (group == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Device group nullptr fail");\r
+            return false;\r
+        }\r
+        container[thisView] = group;\r
+        RootView::GetInstance()->Add(container[thisView]);\r
+    } else {\r
+        // 刷新列表\r
+        UIList *deviceList = bluetoothDeviceListView->GetDeviceUIList();\r
+        if (deviceList == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick deviceList nullptr");\r
+            return false;\r
+        }\r
+        deviceList->RefreshList();\r
+    }\r
+    BluetoothDeviceListView *bluetoothDeviceListView = BluetoothDeviceListView::GetInstance();\r
+    if (bluetoothDeviceListView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick bluetoothDeviceListView new fail");\r
+        return false;\r
+    }\r
+    bluetoothDeviceListView->RefreshText();\r
+    return true;\r
+}\r
+\r
+bool MainBluetoothView::ChangeTipsFailMessageView(int16_t hideView, int16_t thisView)\r
+{\r
+    UNUSED(hideView);\r
+    if (container[thisView] == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeTipsFailMessageView");\r
+        tipsFailMessageView = new TipsFailMessageView();\r
+        if (tipsFailMessageView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsFailMessageView new fail");\r
+            return false;\r
+        }\r
+        // init view\r
+        UIViewGroup *group = tipsFailMessageView->ShowUpViewInit();\r
+        if (group == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
+            return false;\r
+        }\r
+        container[thisView] = group;\r
+        RootView::GetInstance()->Add(container[thisView]);\r
+    }\r
+    return true;\r
+}\r
+\r
+bool MainBluetoothView::ChangeTipsConnFailMessageView(int16_t hideView, int16_t thisView)\r
+{\r
+    UNUSED(hideView);\r
+    if (container[thisView] == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeTipsConnFailMessageView");\r
+        tipsConnFailMessageView = new TipsConnFailMessageView();\r
+        if (tipsConnFailMessageView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsConnFailMessageView new fail");\r
+            return false;\r
+        }\r
+        // init view\r
+        UIViewGroup *group = tipsConnFailMessageView->ShowUpViewInit();\r
+        if (group == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
+            return false;\r
+        }\r
+        container[thisView] = group;\r
+        RootView::GetInstance()->Add(container[thisView]);\r
+    }\r
+    BluetoothReconnectView *bluetoothReconnectView = BluetoothReconnectView::GetInstance();\r
+    if (bluetoothReconnectView == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GapAclStateChangedCallback bluetoothReconnectView == nullptr");\r
+    } else {\r
+        container[BLUETOOTHRECONNECTVIEW]->SetVisible(false);\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeTipsConnFailMessageView SetVisible(false)");\r
+    }\r
+    return true;\r
+}\r
+\r
+bool MainBluetoothView::ChangeTipsSuccMessageView(int16_t hideView, int16_t thisView)\r
+{\r
+    UNUSED(hideView);\r
+    if (container[thisView] == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeTipsSuccMessageView");\r
+        tipsSuccMessageView = new TipsSuccMessageView();\r
+        if (tipsSuccMessageView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsSuccMessageView new fail");\r
+            return false;\r
+        }\r
+        // init view\r
+        UIViewGroup *group = tipsSuccMessageView->ShowUpViewInit();\r
+        if (group == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
+            return false;\r
+        }\r
+        container[thisView] = group;\r
+        RootView::GetInstance()->Add(container[thisView]);\r
+    }\r
+    return true;\r
+}\r
+\r
+bool MainBluetoothView::ChangeBluetoothEarPhoneView(int16_t hideView, int16_t thisView)\r
+{\r
+    UNUSED(hideView);\r
+    if (container[thisView] == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothEarPhoneView");\r
+        bluetoothEarPhoneView = new BluetoothEarPhoneView();\r
+        if (bluetoothEarPhoneView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarPhoneView new fail");\r
+            return false;\r
+        }\r
+        UIViewGroup *group = bluetoothEarPhoneView->InitShowUpView(); // init view\r
+        if (group == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
+            return false;\r
+        }\r
+        container[thisView] = group;\r
+        RootView::GetInstance()->Add(container[thisView]);\r
+    }\r
+    // 动画开始\r
+    bluetoothEarPhoneView->BtAnimatorStart();\r
+    // 蓝牙扫描&清空列表\r
+    bluetoothEarPhoneView->BtEnable();\r
+    return true;\r
+}\r
+\r
+bool MainBluetoothView::ChangeBluetoothEarListView(int16_t hideView, int16_t thisView)\r
+{\r
+    if (container[thisView] == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothEarListView");\r
+        bluetoothEarListView = new BluetoothEarListView();\r
+        if (bluetoothEarListView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarListView new fail");\r
+            return false;\r
+        }\r
+        UIViewGroup *group = bluetoothEarListView->InitShowUpView(); // init view\r
+        if (group == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
+            return false;\r
+        }\r
+        container[thisView] = group;\r
+        RootView::GetInstance()->Add(container[thisView]);\r
+    } else {\r
+        // 刷新列表\r
+        UIList *scanList = bluetoothEarListView->GetScanUIList();\r
+        if (scanList == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick scanList nullptr");\r
+            return false;\r
+        }\r
+        scanList->RefreshList();\r
+    }\r
+    ResetEarListView(hideView);\r
+    return true;\r
+}\r
+\r
+bool MainBluetoothView::ChangeBluetoothOptionsView(int16_t hideView, int16_t thisView)\r
+{\r
+    UNUSED(hideView);\r
+    if (container[thisView] == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothOptionsView");\r
+        bluetoothOptionsView = new BluetoothOptionsView();\r
+        if (bluetoothOptionsView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothOptionsView new fail");\r
+            return false;\r
+        }\r
+        // init view\r
+        UIViewGroup *group = bluetoothOptionsView->InitShowUpView();\r
+        if (group == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
+            return false;\r
+        }\r
+        container[thisView] = group;\r
+        RootView::GetInstance()->Add(container[thisView]);\r
+    }\r
+    return true;\r
+}\r
+\r
+bool MainBluetoothView::ChangeBluetoothReconnectView(int16_t hideView, int16_t thisView)\r
+{\r
+    UNUSED(hideView);\r
+    if (container[thisView] == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeBluetoothReconnectView");\r
+        bluetoothReconnectView = new BluetoothReconnectView();\r
+        if (bluetoothReconnectView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothReconnectView new fail");\r
+            return false;\r
+        }\r
+        UIViewGroup *group = bluetoothReconnectView->InitShowUpView();\r
+        if (group == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
+            return false;\r
+        }\r
+        container[thisView] = group;\r
+        RootView::GetInstance()->Add(container[thisView]);\r
+    }\r
+    BluetoothModel::GetInstance()->SetTagDisconnectView(true);\r
+    BluetoothReconnectView::GetInstance()->RefreshBluetoothNameLabel();\r
+    BluetoothReconnectView::GetInstance()->BtReconnectStart();\r
+    return true;\r
+}\r
+\r
+void MainBluetoothView::CorrespondingJump(int16_t hideView)\r
+{\r
+    BluetoothModel *bluetoothModel = BluetoothModel::GetInstance();\r
+    if (bluetoothModel == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView bluetoothModel == nullptr");\r
+            return;\r
+        }\r
+    if (bluetoothModel->GetTagReconnectJump() == true) {\r
+        ChangeView(hideView, BLUETOOTHEOPTIONSVIEW);\r
+    } else {\r
+        std::list<BluetoothCaseInfo> &bluetoothScanList = BluetoothModel::GetInstance()->GetCase();\r
+        bool ret = bluetoothScanList.empty();\r
+        if (ret != true) {\r
+            ChangeView(hideView, BLUETOOTHEARLISTVIEW);\r
+        } else {\r
+            ChangeView(hideView, BLUETOOTHEARPHONEVIEW);\r
+        }\r
+    }\r
+    return;\r
+}\r
+\r
+void MainBluetoothView::ChangeSettingView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::ChangeSettingView");\r
+    BluetoothModel::GetInstance()->SetTagConnectView(false);\r
+    BluetoothModel::GetInstance()->SetTagScanDeviceClicked(false);\r
+    NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);\r
+}\r
+\r
+void MainBluetoothView::DropEarPhoneView()\r
+{\r
+    BluetoothEarPhoneView *bluetoothEarPhoneView = BluetoothEarPhoneView::GetInstance();\r
+    if (bluetoothEarPhoneView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView bluetoothEarPhoneView == nullptr");\r
+        return;\r
+    }\r
+    bluetoothEarPhoneView->BtAnimatorStop();\r
+    bluetoothEarPhoneView->StopBtDiscovery();\r
+    bool ret = BluetoothModel::GetInstance()->IsTagReturnToDeviceListView();\r
+    if (ret == true) {\r
+        ChangeView(BLUETOOTHEARPHONEVIEW, BLUETOOTHDEVICELISTVIEW);\r
+    } else {\r
+        ChangeSettingView();\r
+    }\r
+}\r
+\r
+void MainBluetoothView::DropEarListView()\r
+{\r
+    bool ret = BluetoothModel::GetInstance()->IsTagScanDeviceClicked();\r
+    if (ret) {\r
+        BluetoothCaseInfo *caseInfo = BluetoothModel::GetInstance()->GetTempMacValue();\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropEarListView Addr: %02x%02x%02x%02x%02x%02x",\r
+                      caseInfo->addr[5], caseInfo->addr[4], caseInfo->addr[3], /* mac下标 0 1 2 3 4 5 */\r
+                      caseInfo->addr[2], caseInfo->addr[1], caseInfo->addr[0]); /* mac下标 0 1 2 3 4 5 */\r
+        errcode_t retVal = gap_disconnect_remote_device((const bd_addr_t *)caseInfo->addr);\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropEarListView gap_disconnect_remote_device retVal = %d", retVal);\r
+    }\r
+    BluetoothEarPhoneView *bluetoothEarPhoneView = BluetoothEarPhoneView::GetInstance();\r
+    if (bluetoothEarPhoneView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView bluetoothEarPhoneView == nullptr");\r
+        return;\r
+    }\r
+    bluetoothEarPhoneView->StopBtDiscovery();\r
+    BluetoothItemView *pbItermView = BluetoothModel::GetInstance()->GetConnectionView();\r
+    if (pbItermView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DropView The GetConnectionView get failed.");\r
+    } else {\r
+        pbItermView->ConnectAnimatorStop();\r
+        BluetoothModel::GetInstance()->SetConnectionView(nullptr);\r
+    }\r
+    ChangeSettingView();\r
+}\r
+\r
+void MainBluetoothView::DropView(UIView& view)\r
+{\r
+    if (&view == container[BLUETOOTHEARPHONEVIEW]) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView::container[BLUETOOTHEARPHONEVIEW]");\r
+        DropEarPhoneView();\r
+    } else if (&view == container[BLUETOOTHEOPTIONSVIEW]) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView::container[BLUETOOTHEOPTIONSVIEW]");\r
+        ChangeView(BLUETOOTHEOPTIONSVIEW, BLUETOOTHDEVICELISTVIEW);\r
+    } else if (&view == container[TIPSCONNFAILMESSAGEVIEW]) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView::container[TIPSCONNFAILMESSAGEVIEW]");\r
+        CorrespondingJump(TIPSCONNFAILMESSAGEVIEW);\r
+    } else if (&view == container[TIPSSUCCMESSAGEVIEW]) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView::container[TIPSSUCCMESSAGEVIEW]");\r
+        ChangeView(TIPSSUCCMESSAGEVIEW, BLUETOOTHDEVICELISTVIEW);\r
+    } else if (&view == container[TIPSFAILMESSAGEVIEW]) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView::container[TIPSFAILMESSAGEVIEW]");\r
+        ChangeView(TIPSFAILMESSAGEVIEW, BLUETOOTHEARPHONEVIEW);\r
+    } else if (&view == container[BLUETOOTHEARLISTVIEW]) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView::container[BLUETOOTHEARLISTVIEW]");\r
+        DropEarListView();\r
+    } else if (&view == container[BLUETOOTHDEVICELISTVIEW]) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView::container[BLUETOOTHDEVICELISTVIEW]");\r
+        ChangeSettingView();\r
+    } else if (&view == container[BLUETOOTHRECONNECTVIEW]) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::DropView::container[BLUETOOTHRECONNECTVIEW]");\r
+        CorrespondingJump(BLUETOOTHRECONNECTVIEW);\r
+        BluetoothModel::GetInstance()->SetTagDisconnectView(false);\r
+        BluetoothReconnectView *bluetoothReconnectView = BluetoothReconnectView::GetInstance();\r
+        bluetoothReconnectView->BtReconnectStop();\r
+    }\r
+}\r
+\r
+void MainBluetoothView::ResetEarListView(int16_t hideView)\r
+{\r
+    BluetoothEarListView *bluetoothEarListView = BluetoothEarListView::GetInstance();\r
+    if (bluetoothEarListView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::ResetEarListView bluetoothEarListView == nullptr");\r
+        return;\r
+    }\r
+    bluetoothEarListView->SetCancelConnedRequestButtonRemove();\r
+    if (hideView == BLUETOOTHEARPHONEVIEW) {\r
+        bluetoothEarListView->SetTitleLabel("正在扫描");\r
+        bluetoothEarListView->SetNewEquipmentButtonRemove();\r
+    } else if (hideView == TIPSCONNFAILMESSAGEVIEW) {\r
+        bluetoothEarListView->SetTitleLabel("扫描完成");\r
+        bluetoothEarListView->SetNewEquipmentButtonAdd();\r
+        RootView::GetInstance()->Invalidate();\r
+    }\r
+}\r
+\r
+bool MainBluetoothView::CheckViewParam(int16_t hideView, int16_t showView)\r
+{\r
+    if (showView < 0 || showView >= BLUETOOTHEVIEW_MAX) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::CheckViewParam showView err.");\r
+        return false;\r
+    }\r
+\r
+    if (hideView < 0 || hideView > BLUETOOTHEVIEW_MAX) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::CheckViewParam hideView err.");\r
+        return false;\r
+    }\r
+\r
+    if (hideView == BLUETOOTHEARLISTVIEW || showView == BLUETOOTHEARLISTVIEW) {\r
+        BluetoothModel::GetInstance()->SetTagScanDeviceClicked(false);\r
+    }\r
+\r
+    return true;\r
+}\r
+\r
+void MainBluetoothView::ChangeView(int16_t hideView, int16_t showView)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::ChangeView %d, %d", hideView, showView);\r
+\r
+    if (CheckViewParam(hideView, showView) == false) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::CheckViewParam failed.");\r
+        return;\r
+    }\r
+\r
+    PreprosssChangeView tmpPreProcessView = preProcessView[showView];\r
+\r
+    if ((this->*tmpPreProcessView)(hideView, showView) == false) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainBluetoothView::ChangeView %d %dfailed", showView, hideView);\r
+        return;\r
+    }\r
+    if (hideView != BLUETOOTHEVIEW_MAX) {\r
+        if (container[hideView] == nullptr) {\r
+            return;\r
+        }\r
+        container[hideView]->SetVisible(false);\r
+    }\r
+    container[showView]->SetVisible(true);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainBluetoothView:: ChangeView end!!!%d", showView);\r
+    RootView::GetInstance()->Invalidate();\r
+    BluetoothModel::GetInstance()->SetCurView(showView);\r
+}\r
+}\r
index a7ffec8..ffaf77d 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: TipsConnFailMessageView view
- * Author:
- * Create: 2021-10-13
- */
-#include "TipsConnFailMessageView.h"
-#include "BluetoothModel.h"
-#include "wearable_log.h"
-#include "UiConfig.h"
-#include "PlayersPresenter.h"
-#include "BluetoothPresenter.h"
-
-namespace OHOS {
-static TipsConnFailMessageView *g_pConnFailMessageView{nullptr};
-TipsConnFailMessageView::TipsConnFailMessageView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView::TipsConnFailMessageView");
-    g_pConnFailMessageView = this;
-}
-
-TipsConnFailMessageView::~TipsConnFailMessageView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView::~TipsConnFailMessageView");
-    group->RemoveAll();
-    delete titleLabel;
-    titleLabel = nullptr;
-    delete backButton;
-    backButton = nullptr;
-    delete group;
-    group = nullptr;
-    delete tipImg;
-    tipImg = nullptr;
-    delete tipLabel;
-    tipLabel = nullptr;
-    delete tipTwoLabel;
-    tipTwoLabel = nullptr;
-    g_pConnFailMessageView = nullptr;
-}
-
-TipsConnFailMessageView *TipsConnFailMessageView::GetInstance()
-{
-    return g_pConnFailMessageView;
-}
-
-void TipsConnFailMessageView::ShowUpTipLabel()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView::ShowUpTipLabel");
-    if (tipLabel == nullptr) {
-        tipLabel = new UILabel();
-        if (tipLabel == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView tipLabel new fail");
-            return;
-        }
-        tipLabel->SetPosition(0, 247, HORIZONTAL_RESOLUTION, 35); // 0:x 247:y 454:width 35:height.
-        tipLabel->SetText("请确认该设备在通信范");
-        tipLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30:font data
-        tipLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);
-        tipLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,
-                           UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-        group->Add(tipLabel);
-    }
-    if (tipTwoLabel == nullptr) {
-        tipTwoLabel = new UILabel();
-        if (tipTwoLabel == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView tipTwoLabel new fail");
-            return;
-        }
-        tipTwoLabel->SetPosition(0, 300, HORIZONTAL_RESOLUTION, 34); // 0:x 300:y 454:width 34:height.
-        tipTwoLabel->SetText("围内且处于待配对状态。");
-        tipTwoLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30:font data
-        tipTwoLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);
-        tipTwoLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,
-                              UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-        group->Add(tipTwoLabel);
-    }
-    return;
-}
-
-void TipsConnFailMessageView::InitNameLabel(void)
-{
-    if (bluetoothNameLabel == nullptr) {
-        bluetoothNameLabel = new UILabel();
-        if (bluetoothNameLabel == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothNameLabel new fail");
-            return;
-        }
-        bluetoothNameLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);
-        bluetoothNameLabel->SetPosition(60, 139, 333, 45); // 60:x 139:y 333:width 45:height
-        bluetoothNameLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);
-        bluetoothNameLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);
-        bluetoothNameLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,
-                                     UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-        group->Add(bluetoothNameLabel);
-    }
-}
-
-void TipsConnFailMessageView::ShowUpButtonBack()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView::ShowUpButtonBack");
-    if (backButton == nullptr) {
-        backButton = new UILabelButton();
-        if (backButton == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView backButton new fail");
-            return;
-        }
-        UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();
-        UIView::OnClickListener *clickListener2 = (UIView::OnClickListener *)OHOS::BluetoothPresenter::GetInstance();
-        if ((clickListener == nullptr) && (clickListener2 == nullptr)) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");
-            return;
-        }
-        backButton->SetPosition(65, 359, 324, 101); // 65:x, 359:y, 324:width 101:height.
-        backButton->SetText("重试");
-        backButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data
-        backButton->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);
-        backButton->SetViewId(BLUETOOTH_CONN_FAIL_BACK_BUTTON);
-        if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {
-            backButton->SetTextColor(Color::Red());
-            backButton->SetOnClickListener(clickListener);
-        } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {
-            backButton->SetTextColor(Color::Blue());
-            backButton->SetOnClickListener(clickListener2);
-        }
-        group->Add(backButton);
-    }
-    if (tipImg == nullptr) {
-        tipImg = new UIImageView();
-        if (tipImg == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView tipImg new fail");
-            return;
-        }
-        tipImg->SetPosition(178, 20, 90, 90); // 178:x 20:y 90:width 90:height.
-        tipImg->SetSrc(PNG_GANTAN);
-        group->Add(tipImg);
-    }
-    return;
-}
-
-UIViewGroup *TipsConnFailMessageView::ShowUpViewInit(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView::ShowUpViewInit");
-    if (group == nullptr) {
-        group = new UIViewGroup();
-        if (group == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");
-            return nullptr;
-        }
-        group->SetPosition(0, 0);
-        group->SetWidth(HORIZONTAL_RESOLUTION);
-        group->SetHeight(VERTICAL_RESOLUTION);
-    }
-    if (titleLabel == nullptr) {
-        titleLabel = new UILabel();
-        if (titleLabel == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView titleLabel new fail");
-            return nullptr;
-        }
-        titleLabel->SetPosition(0, 189, HORIZONTAL_RESOLUTION, 45); // 0:x 189:y 454:width 45:height.
-        titleLabel->SetText("连接失败");
-        titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data
-        titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);
-        titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,
-                             UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-        group->Add(titleLabel);
-    }
-    ShowUpButtonBack();
-    ShowUpTipLabel();
-    InitNameLabel();
-    
-    //增加按键监听
-       RootView::OnKeyActListener*keyactListener = (RootView::OnKeyActListener*)OHOS::BluetoothPresenter::GetInstance();
-       RootView::GetInstance()->SetOnKeyActListener(keyactListener);
-
-    UIView::OnDragListener *tipsDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();
-    UIView::OnDragListener *tipsDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();
-    if ((tipsDragListener == nullptr) && (tipsDragListener2 == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsDragListener GetInstance fail");
-        return nullptr;
-    }
-    if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {
-        group->SetOnDragListener(tipsDragListener);
-    } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {
-        group->SetOnDragListener(tipsDragListener2);
-    }
-    group->SetViewId(TIPS_CONN_FAIL_MESSAGE_VIEW);
-    group->SetDraggable(true);
-    group->SetTouchable(true);
-    return group;
-}
-
-void TipsConnFailMessageView::RefreshNameLabel(const bd_addr_t &bdAddr)
-{
-    BluetoothCaseInfo caseInfo;
-    (void)memcpy_s(caseInfo.addr, BD_ADDR_LEN, bdAddr.addr, BD_ADDR_LEN);
-    bool ret = BluetoothModel::GetInstance()->FindNameFromList(&caseInfo);
-    if (ret == false) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView FindNameFromList fail");
-        return;
-    }
-    if (bluetoothNameLabel == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView::RefreshNameLabel bluetoothNameLabel == nullptr");
-        return;
-    }
-    bluetoothNameLabel->SetText(reinterpret_cast<const char *>(caseInfo.deviceName));
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: TipsConnFailMessageView view\r
+ * Author:\r
+ * Create: 2021-10-13\r
+ */\r
+#include "TipsConnFailMessageView.h"\r
+#include "BluetoothModel.h"\r
+#include "wearable_log.h"\r
+#include "UiConfig.h"\r
+#include "PlayersPresenter.h"\r
+#include "BluetoothPresenter.h"\r
+\r
+namespace OHOS {\r
+static TipsConnFailMessageView *g_pConnFailMessageView{nullptr};\r
+TipsConnFailMessageView::TipsConnFailMessageView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView::TipsConnFailMessageView");\r
+    g_pConnFailMessageView = this;\r
+}\r
+\r
+TipsConnFailMessageView::~TipsConnFailMessageView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView::~TipsConnFailMessageView");\r
+    group->RemoveAll();\r
+    delete titleLabel;\r
+    titleLabel = nullptr;\r
+    delete backButton;\r
+    backButton = nullptr;\r
+    delete group;\r
+    group = nullptr;\r
+    delete tipImg;\r
+    tipImg = nullptr;\r
+    delete tipLabel;\r
+    tipLabel = nullptr;\r
+    delete tipTwoLabel;\r
+    tipTwoLabel = nullptr;\r
+    g_pConnFailMessageView = nullptr;\r
+}\r
+\r
+TipsConnFailMessageView *TipsConnFailMessageView::GetInstance()\r
+{\r
+    return g_pConnFailMessageView;\r
+}\r
+\r
+void TipsConnFailMessageView::ShowUpTipLabel()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView::ShowUpTipLabel");\r
+    if (tipLabel == nullptr) {\r
+        tipLabel = new UILabel();\r
+        if (tipLabel == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView tipLabel new fail");\r
+            return;\r
+        }\r
+        tipLabel->SetPosition(0, 247, HORIZONTAL_RESOLUTION, 35); // 0:x 247:y 454:width 35:height.\r
+        tipLabel->SetText("请确认该设备在通信范");\r
+        tipLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30:font data\r
+        tipLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+        tipLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+                           UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+        group->Add(tipLabel);\r
+    }\r
+    if (tipTwoLabel == nullptr) {\r
+        tipTwoLabel = new UILabel();\r
+        if (tipTwoLabel == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView tipTwoLabel new fail");\r
+            return;\r
+        }\r
+        tipTwoLabel->SetPosition(0, 300, HORIZONTAL_RESOLUTION, 34); // 0:x 300:y 454:width 34:height.\r
+        tipTwoLabel->SetText("围内且处于待配对状态。");\r
+        tipTwoLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30:font data\r
+        tipTwoLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+        tipTwoLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+                              UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+        group->Add(tipTwoLabel);\r
+    }\r
+    return;\r
+}\r
+\r
+void TipsConnFailMessageView::InitNameLabel(void)\r
+{\r
+    if (bluetoothNameLabel == nullptr) {\r
+        bluetoothNameLabel = new UILabel();\r
+        if (bluetoothNameLabel == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothNameLabel new fail");\r
+            return;\r
+        }\r
+        bluetoothNameLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
+        bluetoothNameLabel->SetPosition(60, 139, 333, 45); // 60:x 139:y 333:width 45:height\r
+        bluetoothNameLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);\r
+        bluetoothNameLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+        bluetoothNameLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+                                     UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+        group->Add(bluetoothNameLabel);\r
+    }\r
+}\r
+\r
+void TipsConnFailMessageView::ShowUpButtonBack()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView::ShowUpButtonBack");\r
+    if (backButton == nullptr) {\r
+        backButton = new UILabelButton();\r
+        if (backButton == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView backButton new fail");\r
+            return;\r
+        }\r
+        UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();\r
+        UIView::OnClickListener *clickListener2 = (UIView::OnClickListener *)OHOS::BluetoothPresenter::GetInstance();\r
+        if ((clickListener == nullptr) && (clickListener2 == nullptr)) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
+            return;\r
+        }\r
+        backButton->SetPosition(65, 359, 324, 101); // 65:x, 359:y, 324:width 101:height.\r
+        backButton->SetText("重试");\r
+        backButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data\r
+        backButton->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);\r
+        backButton->SetViewId(BLUETOOTH_CONN_FAIL_BACK_BUTTON);\r
+        if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
+            backButton->SetTextColor(Color::Red());\r
+            backButton->SetOnClickListener(clickListener);\r
+        } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
+            backButton->SetTextColor(Color::Blue());\r
+            backButton->SetOnClickListener(clickListener2);\r
+        }\r
+        group->Add(backButton);\r
+    }\r
+    if (tipImg == nullptr) {\r
+        tipImg = new UIImageView();\r
+        if (tipImg == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView tipImg new fail");\r
+            return;\r
+        }\r
+        tipImg->SetPosition(178, 20, 90, 90); // 178:x 20:y 90:width 90:height.\r
+        tipImg->SetSrc(PNG_GANTAN);\r
+        group->Add(tipImg);\r
+    }\r
+    return;\r
+}\r
+\r
+UIViewGroup *TipsConnFailMessageView::ShowUpViewInit(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView::ShowUpViewInit");\r
+    if (group == nullptr) {\r
+        group = new UIViewGroup();\r
+        if (group == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
+            return nullptr;\r
+        }\r
+        group->SetPosition(0, 0);\r
+        group->SetWidth(HORIZONTAL_RESOLUTION);\r
+        group->SetHeight(VERTICAL_RESOLUTION);\r
+    }\r
+    if (titleLabel == nullptr) {\r
+        titleLabel = new UILabel();\r
+        if (titleLabel == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView titleLabel new fail");\r
+            return nullptr;\r
+        }\r
+        titleLabel->SetPosition(0, 189, HORIZONTAL_RESOLUTION, 45); // 0:x 189:y 454:width 45:height.\r
+        titleLabel->SetText("连接失败");\r
+        titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data\r
+        titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+        titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+                             UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+        group->Add(titleLabel);\r
+    }\r
+    ShowUpButtonBack();\r
+    ShowUpTipLabel();\r
+    InitNameLabel();\r
+    UIView::OnDragListener *tipsDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
+    UIView::OnDragListener *tipsDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();\r
+    if ((tipsDragListener == nullptr) && (tipsDragListener2 == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsDragListener GetInstance fail");\r
+        return nullptr;\r
+    }\r
+    if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
+        group->SetOnDragListener(tipsDragListener);\r
+    } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
+        group->SetOnDragListener(tipsDragListener2);\r
+    }\r
+    group->SetViewId(TIPS_CONN_FAIL_MESSAGE_VIEW);\r
+    group->SetDraggable(true);\r
+    group->SetTouchable(true);\r
+    return group;\r
+}\r
+\r
+void TipsConnFailMessageView::RefreshNameLabel(const bd_addr_t &bdAddr)\r
+{\r
+    BluetoothCaseInfo caseInfo;\r
+    (void)memcpy_s(caseInfo.addr, BD_ADDR_LEN, bdAddr.addr, BD_ADDR_LEN);\r
+    bool ret = BluetoothModel::GetInstance()->FindNameFromList(&caseInfo);\r
+    if (ret == false) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView FindNameFromList fail");\r
+        return;\r
+    }\r
+    if (bluetoothNameLabel == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsConnFailMessageView::RefreshNameLabel bluetoothNameLabel == nullptr");\r
+        return;\r
+    }\r
+    bluetoothNameLabel->SetText(reinterpret_cast<const char *>(caseInfo.deviceName));\r
+}\r
 }
\ No newline at end of file
index c3b71f3..4d732b8 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: TipsFailMessageView view
- * Author:
- * Create: 2021-10-13
- */
-#include "TipsFailMessageView.h"
-#include "BluetoothModel.h"
-#include "wearable_log.h"
-#include "UiConfig.h"
-#include "PlayersPresenter.h"
-#include "BluetoothPresenter.h"
-
-namespace OHOS {
-static TipsFailMessageView *g_pFailMessageView{nullptr};
-TipsFailMessageView::TipsFailMessageView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsFailMessageView::TipsFailMessageView");
-    g_pFailMessageView = this;
-}
-
-TipsFailMessageView::~TipsFailMessageView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsFailMessageView::~TipsFailMessageView");
-    group->RemoveAll();
-    delete titleLabel;
-    titleLabel = nullptr;
-    delete backButton;
-    backButton = nullptr;
-    delete group;
-    group = nullptr;
-    delete tipImg;
-    tipImg = nullptr;
-    g_pFailMessageView = nullptr;
-}
-
-TipsFailMessageView *TipsFailMessageView::GetInstance()
-{
-    return g_pFailMessageView;
-}
-
-int TipsFailMessageView::ShowUpButtonBack()
-{
-    if (backButton == nullptr) {
-        backButton = new UILabelButton();
-        if (backButton == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsFailMessageView backButton new fail");
-            return OHOS_FAILURE;
-        }
-        UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();
-        UIView::OnClickListener *clickListener2 = (UIView::OnClickListener *)OHOS::BluetoothPresenter::GetInstance();
-        if ((clickListener == nullptr) && (clickListener2 == nullptr)) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");
-            return OHOS_FAILURE;
-        }
-        backButton->SetPosition(65, 359, 324, 101); // 65:x, 359:y, 324:width 101:height
-        backButton->SetText("重试");
-        backButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data
-        backButton->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);
-        backButton->SetViewId(BLUETOOTH_FAIL_BACK_BUTTON);
-        if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {
-            backButton->SetTextColor(Color::Red());
-            backButton->SetOnClickListener(clickListener);
-        } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {
-            backButton->SetTextColor(Color::Blue());
-            backButton->SetOnClickListener(clickListener2);
-        }
-        group->Add(backButton);
-    }
-    if (tipImg == nullptr) {
-        tipImg = new UIImageView();
-        if (tipImg == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsFailMessageView tipImg new fail");
-            return OHOS_FAILURE;
-        }
-        tipImg->SetPosition(181, 111, 90, 90); // 181:x 111:y 90:width 90:height
-        tipImg->SetSrc(PNG_GANTAN);
-        group->Add(tipImg);
-    }
-    return OHOS_SUCCESS;
-}
-
-UIViewGroup *TipsFailMessageView::ShowUpViewInit(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsFailMessageView::ShowUpViewInit");
-    if (group == nullptr) {
-        group = new UIViewGroup();
-        if (group == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");
-            return nullptr;
-        }
-        group->SetPosition(0, 0);
-        group->SetWidth(HORIZONTAL_RESOLUTION);
-        group->SetHeight(VERTICAL_RESOLUTION);
-    }
-    if (titleLabel == nullptr) {
-        titleLabel = new UILabel();
-        if (titleLabel == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsFailMessageView titleLabel new fail");
-            return nullptr;
-        }
-        titleLabel->SetPosition(0, 234, HORIZONTAL_RESOLUTION, 45); // 0:x 234:y 454:width 45:height
-        titleLabel->SetText("未发现蓝牙耳机");
-        titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data
-        titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);
-        titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,
-                             UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-        group->Add(titleLabel);
-    }
-    ShowUpButtonBack();
-
-    //增加按键监听
-       RootView::OnKeyActListener*keyactListener = (RootView::OnKeyActListener*)OHOS::BluetoothPresenter::GetInstance();
-       RootView::GetInstance()->SetOnKeyActListener(keyactListener);
-
-    UIView::OnDragListener *tipsDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();
-    UIView::OnDragListener *tipsDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();
-    if ((tipsDragListener == nullptr) && (tipsDragListener2 == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsDragListener GetInstance fail");
-        return nullptr;
-    }
-    if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {
-        group->SetOnDragListener(tipsDragListener);
-    } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {
-        group->SetOnDragListener(tipsDragListener2);
-    }
-    group->SetViewId(TIPS_FAIL_MESSAGE_VIEW);
-    group->SetDraggable(true);
-    group->SetTouchable(true);
-    return group;
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: TipsFailMessageView view\r
+ * Author:\r
+ * Create: 2021-10-13\r
+ */\r
+#include "TipsFailMessageView.h"\r
+#include "BluetoothModel.h"\r
+#include "wearable_log.h"\r
+#include "UiConfig.h"\r
+#include "PlayersPresenter.h"\r
+#include "BluetoothPresenter.h"\r
+\r
+namespace OHOS {\r
+static TipsFailMessageView *g_pFailMessageView{nullptr};\r
+TipsFailMessageView::TipsFailMessageView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsFailMessageView::TipsFailMessageView");\r
+    g_pFailMessageView = this;\r
+}\r
+\r
+TipsFailMessageView::~TipsFailMessageView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsFailMessageView::~TipsFailMessageView");\r
+    group->RemoveAll();\r
+    delete titleLabel;\r
+    titleLabel = nullptr;\r
+    delete backButton;\r
+    backButton = nullptr;\r
+    delete group;\r
+    group = nullptr;\r
+    delete tipImg;\r
+    tipImg = nullptr;\r
+    g_pFailMessageView = nullptr;\r
+}\r
+\r
+TipsFailMessageView *TipsFailMessageView::GetInstance()\r
+{\r
+    return g_pFailMessageView;\r
+}\r
+\r
+int TipsFailMessageView::ShowUpButtonBack()\r
+{\r
+    if (backButton == nullptr) {\r
+        backButton = new UILabelButton();\r
+        if (backButton == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsFailMessageView backButton new fail");\r
+            return OHOS_FAILURE;\r
+        }\r
+        UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();\r
+        UIView::OnClickListener *clickListener2 = (UIView::OnClickListener *)OHOS::BluetoothPresenter::GetInstance();\r
+        if ((clickListener == nullptr) && (clickListener2 == nullptr)) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
+            return OHOS_FAILURE;\r
+        }\r
+        backButton->SetPosition(65, 359, 324, 101); // 65:x, 359:y, 324:width 101:height\r
+        backButton->SetText("重试");\r
+        backButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data\r
+        backButton->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);\r
+        backButton->SetViewId(BLUETOOTH_FAIL_BACK_BUTTON);\r
+        if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
+            backButton->SetTextColor(Color::Red());\r
+            backButton->SetOnClickListener(clickListener);\r
+        } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
+            backButton->SetTextColor(Color::Blue());\r
+            backButton->SetOnClickListener(clickListener2);\r
+        }\r
+        group->Add(backButton);\r
+    }\r
+    if (tipImg == nullptr) {\r
+        tipImg = new UIImageView();\r
+        if (tipImg == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsFailMessageView tipImg new fail");\r
+            return OHOS_FAILURE;\r
+        }\r
+        tipImg->SetPosition(181, 111, 90, 90); // 181:x 111:y 90:width 90:height\r
+        tipImg->SetSrc(PNG_GANTAN);\r
+        group->Add(tipImg);\r
+    }\r
+    return OHOS_SUCCESS;\r
+}\r
+\r
+UIViewGroup *TipsFailMessageView::ShowUpViewInit(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsFailMessageView::ShowUpViewInit");\r
+    if (group == nullptr) {\r
+        group = new UIViewGroup();\r
+        if (group == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
+            return nullptr;\r
+        }\r
+        group->SetPosition(0, 0);\r
+        group->SetWidth(HORIZONTAL_RESOLUTION);\r
+        group->SetHeight(VERTICAL_RESOLUTION);\r
+    }\r
+    if (titleLabel == nullptr) {\r
+        titleLabel = new UILabel();\r
+        if (titleLabel == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsFailMessageView titleLabel new fail");\r
+            return nullptr;\r
+        }\r
+        titleLabel->SetPosition(0, 234, HORIZONTAL_RESOLUTION, 45); // 0:x 234:y 454:width 45:height\r
+        titleLabel->SetText("未发现蓝牙耳机");\r
+        titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data\r
+        titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+        titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+                             UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+        group->Add(titleLabel);\r
+    }\r
+    ShowUpButtonBack();\r
+    UIView::OnDragListener *tipsDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
+    UIView::OnDragListener *tipsDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();\r
+    if ((tipsDragListener == nullptr) && (tipsDragListener2 == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsDragListener GetInstance fail");\r
+        return nullptr;\r
+    }\r
+    if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
+        group->SetOnDragListener(tipsDragListener);\r
+    } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
+        group->SetOnDragListener(tipsDragListener2);\r
+    }\r
+    group->SetViewId(TIPS_FAIL_MESSAGE_VIEW);\r
+    group->SetDraggable(true);\r
+    group->SetTouchable(true);\r
+    return group;\r
+}\r
 }
\ No newline at end of file
index 2586e76..3dd80a7 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: TipsSuccMessageView view
- * Author:
- * Create: 2021-10-13
- */
-#include "TipsSuccMessageView.h"
-#include "BluetoothModel.h"
-#include "wearable_log.h"
-#include "UiConfig.h"
-#include "PlayersPresenter.h"
-#include "BluetoothPresenter.h"
-
-namespace OHOS {
-static TipsSuccMessageView *g_pSuccMessageView{nullptr};
-TipsSuccMessageView::TipsSuccMessageView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView::TipsSuccMessageView");
-    g_pSuccMessageView = this;
-}
-
-TipsSuccMessageView::~TipsSuccMessageView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView::~TipsSuccMessageView");
-    group->RemoveAll();
-    delete titleLabel;
-    titleLabel = nullptr;
-    delete backButton;
-    backButton = nullptr;
-    delete group;
-    group = nullptr;
-    delete tipImg;
-    tipImg = nullptr;
-    g_pSuccMessageView = nullptr;
-}
-
-TipsSuccMessageView *TipsSuccMessageView::GetInstance()
-{
-    return g_pSuccMessageView;
-}
-
-void TipsSuccMessageView::InitNameLabel(void)
-{
-    if (bluetoothNameLabel == nullptr) {
-        bluetoothNameLabel = new UILabel();
-        if (bluetoothNameLabel == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothNameLabel new fail");
-            return;
-        }
-        bluetoothNameLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);
-        bluetoothNameLabel->SetPosition(60, 180, 333, 45); // 60:x 180:y 333:width 45:height
-        bluetoothNameLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);
-        bluetoothNameLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);
-        bluetoothNameLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,
-                                     UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-        group->Add(bluetoothNameLabel);
-    }
-}
-
-void TipsSuccMessageView::ShowUpButtonBack()
-{
-    if (backButton == nullptr) {
-        backButton = new UILabelButton();
-        if (backButton == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView backButton new fail");
-            return;
-        }
-        UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();
-        UIView::OnClickListener *clickListener2 = (UIView::OnClickListener *)OHOS::BluetoothPresenter::GetInstance();
-        if ((clickListener == nullptr) && (clickListener2 == nullptr)) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");
-            return;
-        }
-        backButton->SetPosition(65, 359, 324, 101); // 65:x, 359:y, 324:width 101:height
-        backButton->SetText("确定");
-        backButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data
-        backButton->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);
-        backButton->SetViewId(BLUETOOTH_SUCC_BACK_BUTTON);
-        if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {
-            backButton->SetTextColor(Color::Red());
-            backButton->SetOnClickListener(clickListener);
-        } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {
-            backButton->SetTextColor(Color::Blue());
-            backButton->SetOnClickListener(clickListener2);
-        }
-        group->Add(backButton);
-    }
-    if (tipImg == nullptr) {
-        tipImg = new UIImageView();
-        if (tipImg == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView tipImg new fail");
-            return;
-        }
-        tipImg->SetPosition(181, 78, 90, 90); // 181:x 78:y 90:width 90:height
-        tipImg->SetSrc(PNG_RIGHT);
-        group->Add(tipImg);
-    }
-    return;
-}
-
-UIViewGroup *TipsSuccMessageView::ShowUpViewInit(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView::ShowUpViewInit");
-    if (group == nullptr) {
-        group = new UIViewGroup();
-        if (group == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");
-            return nullptr;
-        }
-        group->SetPosition(0, 0);
-        group->SetWidth(HORIZONTAL_RESOLUTION);
-        group->SetHeight(VERTICAL_RESOLUTION);
-    }
-    if (titleLabel == nullptr) {
-        titleLabel = new UILabel();
-        if (titleLabel == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView titleLabel new fail");
-            return nullptr;
-        }
-        titleLabel->SetPosition(0, 244, HORIZONTAL_RESOLUTION, 45); // 0:x 244:y 454:width 45:height
-        titleLabel->SetText("连接成功");
-        titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data
-        titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);
-        titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,
-                             UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-        group->Add(titleLabel);
-    }
-    InitNameLabel();
-    ShowUpButtonBack();
-
-    //增加按键监听
-       RootView::OnKeyActListener*keyactListener = (RootView::OnKeyActListener*)OHOS::BluetoothPresenter::GetInstance();
-       RootView::GetInstance()->SetOnKeyActListener(keyactListener);
-
-    UIView::OnDragListener *tipsDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();
-    UIView::OnDragListener *tipsDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();
-    if ((tipsDragListener == nullptr) && (tipsDragListener2 == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsDragListener GetInstance fail");
-        return nullptr;
-    }
-    if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {
-        group->SetOnDragListener(tipsDragListener);
-    } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {
-        group->SetOnDragListener(tipsDragListener2);
-    }
-    group->SetViewId(TIPS_SUCC_MESSAGE_VIEW);
-    group->SetDraggable(true);
-    group->SetTouchable(true);
-    return group;
-}
-
-void TipsSuccMessageView::RefreshNameLabel(const bd_addr_t &bdAddr)
-{
-    BluetoothCaseInfo caseInfo;
-    (void)memcpy_s(caseInfo.addr, BD_ADDR_LEN, bdAddr.addr, BD_ADDR_LEN);
-    bool ret = BluetoothModel::GetInstance()->FindNameFromList(&caseInfo);
-    if (ret == false) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView FindNameFromList fail");
-        return;
-    }
-    if (bluetoothNameLabel == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView::RefreshNameLabel bluetoothNameLabel == nullptr");
-        return;
-    }
-    bluetoothNameLabel->SetText(reinterpret_cast<const char *>(caseInfo.deviceName));
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: TipsSuccMessageView view\r
+ * Author:\r
+ * Create: 2021-10-13\r
+ */\r
+#include "TipsSuccMessageView.h"\r
+#include "BluetoothModel.h"\r
+#include "wearable_log.h"\r
+#include "UiConfig.h"\r
+#include "PlayersPresenter.h"\r
+#include "BluetoothPresenter.h"\r
+\r
+namespace OHOS {\r
+static TipsSuccMessageView *g_pSuccMessageView{nullptr};\r
+TipsSuccMessageView::TipsSuccMessageView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView::TipsSuccMessageView");\r
+    g_pSuccMessageView = this;\r
+}\r
+\r
+TipsSuccMessageView::~TipsSuccMessageView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView::~TipsSuccMessageView");\r
+    group->RemoveAll();\r
+    delete titleLabel;\r
+    titleLabel = nullptr;\r
+    delete backButton;\r
+    backButton = nullptr;\r
+    delete group;\r
+    group = nullptr;\r
+    delete tipImg;\r
+    tipImg = nullptr;\r
+    g_pSuccMessageView = nullptr;\r
+}\r
+\r
+TipsSuccMessageView *TipsSuccMessageView::GetInstance()\r
+{\r
+    return g_pSuccMessageView;\r
+}\r
+\r
+void TipsSuccMessageView::InitNameLabel(void)\r
+{\r
+    if (bluetoothNameLabel == nullptr) {\r
+        bluetoothNameLabel = new UILabel();\r
+        if (bluetoothNameLabel == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothNameLabel new fail");\r
+            return;\r
+        }\r
+        bluetoothNameLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
+        bluetoothNameLabel->SetPosition(60, 180, 333, 45); // 60:x 180:y 333:width 45:height\r
+        bluetoothNameLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_THIRTY_SIZE);\r
+        bluetoothNameLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+        bluetoothNameLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+                                     UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+        group->Add(bluetoothNameLabel);\r
+    }\r
+}\r
+\r
+void TipsSuccMessageView::ShowUpButtonBack()\r
+{\r
+    if (backButton == nullptr) {\r
+        backButton = new UILabelButton();\r
+        if (backButton == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView backButton new fail");\r
+            return;\r
+        }\r
+        UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::PlayersPresenter::GetInstance();\r
+        UIView::OnClickListener *clickListener2 = (UIView::OnClickListener *)OHOS::BluetoothPresenter::GetInstance();\r
+        if ((clickListener == nullptr) && (clickListener2 == nullptr)) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
+            return;\r
+        }\r
+        backButton->SetPosition(65, 359, 324, 101); // 65:x, 359:y, 324:width 101:height\r
+        backButton->SetText("确定");\r
+        backButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data\r
+        backButton->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);\r
+        backButton->SetViewId(BLUETOOTH_SUCC_BACK_BUTTON);\r
+        if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
+            backButton->SetTextColor(Color::Red());\r
+            backButton->SetOnClickListener(clickListener);\r
+        } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
+            backButton->SetTextColor(Color::Blue());\r
+            backButton->SetOnClickListener(clickListener2);\r
+        }\r
+        group->Add(backButton);\r
+    }\r
+    if (tipImg == nullptr) {\r
+        tipImg = new UIImageView();\r
+        if (tipImg == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView tipImg new fail");\r
+            return;\r
+        }\r
+        tipImg->SetPosition(181, 78, 90, 90); // 181:x 78:y 90:width 90:height\r
+        tipImg->SetSrc(PNG_RIGHT);\r
+        group->Add(tipImg);\r
+    }\r
+    return;\r
+}\r
+\r
+UIViewGroup *TipsSuccMessageView::ShowUpViewInit(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView::ShowUpViewInit");\r
+    if (group == nullptr) {\r
+        group = new UIViewGroup();\r
+        if (group == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
+            return nullptr;\r
+        }\r
+        group->SetPosition(0, 0);\r
+        group->SetWidth(HORIZONTAL_RESOLUTION);\r
+        group->SetHeight(VERTICAL_RESOLUTION);\r
+    }\r
+    if (titleLabel == nullptr) {\r
+        titleLabel = new UILabel();\r
+        if (titleLabel == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView titleLabel new fail");\r
+            return nullptr;\r
+        }\r
+        titleLabel->SetPosition(0, 244, HORIZONTAL_RESOLUTION, 45); // 0:x 244:y 454:width 45:height\r
+        titleLabel->SetText("连接成功");\r
+        titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data\r
+        titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+        titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+                             UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+        group->Add(titleLabel);\r
+    }\r
+    InitNameLabel();\r
+    ShowUpButtonBack();\r
+    UIView::OnDragListener *tipsDragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
+    UIView::OnDragListener *tipsDragListener2 = (UIView::OnDragListener *)OHOS::BluetoothPresenter::GetInstance();\r
+    if ((tipsDragListener == nullptr) && (tipsDragListener2 == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsDragListener GetInstance fail");\r
+        return nullptr;\r
+    }\r
+    if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERPLAYERS) {\r
+        group->SetOnDragListener(tipsDragListener);\r
+    } else if (BluetoothModel::GetInstance()->GetBluetoothCalleridStatus() == CALLERSETTING) {\r
+        group->SetOnDragListener(tipsDragListener2);\r
+    }\r
+    group->SetViewId(TIPS_SUCC_MESSAGE_VIEW);\r
+    group->SetDraggable(true);\r
+    group->SetTouchable(true);\r
+    return group;\r
+}\r
+\r
+void TipsSuccMessageView::RefreshNameLabel(const bd_addr_t &bdAddr)\r
+{\r
+    BluetoothCaseInfo caseInfo;\r
+    (void)memcpy_s(caseInfo.addr, BD_ADDR_LEN, bdAddr.addr, BD_ADDR_LEN);\r
+    bool ret = BluetoothModel::GetInstance()->FindNameFromList(&caseInfo);\r
+    if (ret == false) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView FindNameFromList fail");\r
+        return;\r
+    }\r
+    if (bluetoothNameLabel == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TipsSuccMessageView::RefreshNameLabel bluetoothNameLabel == nullptr");\r
+        return;\r
+    }\r
+    bluetoothNameLabel->SetText(reinterpret_cast<const char *>(caseInfo.deviceName));\r
+}\r
 }
\ No newline at end of file
index e62135d..a4c09c2 100644 (file)
@@ -1,45 +1,45 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: CallerItemView.h
- * Author:
- * Create: 2021-10-12
- */
-
-#ifndef CALLER_ITEM_VIEW_H
-#define CALLER_ITEM_VIEW_H
-
-#include "components/ui_label.h"
-#include "components/ui_view_group.h"
-#include "components/ui_image_view.h"
-#include "components/ui_label_button.h"
-
-#include "CallerLogModel.h"
-#include "UiConfig.h"
-#include "PhoneService.h"
-#include "BaseView.h"
-
-namespace OHOS {
-class CallerItemView : public UIViewGroup {
-public:
-
-    // @param yCoordinates Y轴坐标值
-    explicit CallerItemView(int32 yCoordinates);
-    virtual ~CallerItemView();
-
-    virtual void SetItemInfo(CallLogInfo *itemInfo, char len);
-    virtual void SetUpChild();
-private:
-    CallerItemView(const CallerItemView &);
-    CallerItemView &operator = (const CallerItemView &);
-    void InitDateMonTime(time_t seconds);
-
-    string infoTel; // 电话号码
-    string timeDisplay; // 日期显示
-    UIImageView icon_;
-    UIImageView icons_;
-    UILabel label_;
-    UILabel labels_;
-};
-}
-
-#endif
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: CallerItemView.h\r
+ * Author:\r
+ * Create: 2021-10-12\r
+ */\r
+\r
+#ifndef CALLER_ITEM_VIEW_H\r
+#define CALLER_ITEM_VIEW_H\r
+\r
+#include "components/ui_label.h"\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_image_view.h"\r
+#include "components/ui_label_button.h"\r
+\r
+#include "CallerLogModel.h"\r
+#include "UiConfig.h"\r
+#include "PhoneService.h"\r
+#include "BaseView.h"\r
+\r
+namespace OHOS {\r
+class CallerItemView : public UIViewGroup {\r
+public:\r
+\r
+    // @param yCoordinates Y轴坐标值\r
+    explicit CallerItemView(int32 yCoordinates);\r
+    virtual ~CallerItemView();\r
+\r
+    virtual void SetItemInfo(CallLogInfo *itemInfo, char len);\r
+    virtual void SetUpChild();\r
+private:\r
+    CallerItemView(const CallerItemView &);\r
+    CallerItemView &operator = (const CallerItemView &);\r
+    void InitDateMonTime(time_t seconds);\r
+\r
+    string infoTel; // 电话号码\r
+    string timeDisplay; // 日期显示\r
+    UIImageView icon_;\r
+    UIImageView icons_;\r
+    UILabel label_;\r
+    UILabel labels_;\r
+};\r
+}\r
+\r
+#endif\r
index 5aa2b44..4069b2b 100644 (file)
@@ -1,98 +1,98 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: CallerLogModel.h
- * Author:
- * Create: 2021-10-12
- */
-#ifndef CALLER_LOG_MODEL_H
-#define CALLER_LOG_MODEL_H
-
-#include "los_mux.h"
-#include "string"
-#include "PhoneService.h"
-#include "AppViewIDs.h"
-#include "message.h"
-#include "msg_center.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef enum {
-    CHANGE_STATUS = 0,
-    SCO_STATUS,
-    ERROR_MESSAGE
-} MessageType;
-
-enum PhoneStatus {
-    PHONE_MULTI_STATUS = 0,
-    PHONE_SINGLE_STATUS
-};
-
-bool MulitplePhoneTextReplaces();
-bool FindCallListInfoAndSetPriorityNumber();
-void PhoneScoStatausCallback(hfp_sco_connect_state_t state);
-void PhoneChangeStatusCallback(const PhoneCallInfo *phoneCall);
-void PhoneErrorCallback(PhoneServiceErrorType type, int volume);
-void UsingPhoneScoStatausCallback(hfp_sco_connect_state_t state);
-void UsingPhoneChangeStatusCallback(const PhoneCallInfo *phoneCall);
-void UsingPhoneErrorCallback(PhoneServiceErrorType type);
-
-namespace OHOS {
-using namespace std;
-
-class CallerLogModel {
-public:
-    void InitPhoneService();
-    static CallerLogModel *GetInstance(void);
-
-    string GetPhoneNumber(void);
-    void SetoperateNumber(const char *number, char number_len);
-
-    bool GetPhoneStatus();
-    void SetMakePhoneStatus(bool status);
-
-    bool GetVolumeScreenStatus();
-    void SetVolumeScreenStatus(bool status);
-
-    bool GetCallStatus();
-    void SetCallStatus(bool status);
-
-    bool GetWaitingStatus();
-    void SetWaitingStatus(bool status);
-
-    bool GetMulitplePhoneStatus();
-    void SetMulitplePhoneStatus(bool status);
-
-    string GetDialingStatus(void);
-    void SetDialingStatus(const char *text);
-
-    string InitDateHourTime();
-    char *DisplayCallDuration();
-    int CurrCallNum();
-
-    bool GetNotifyFlag(void);
-    void SetNotifyFlag(bool flag);
-private:
-    CallerLogModel();
-    CallerLogModel(const CallerLogModel &);
-    CallerLogModel &operator=(const CallerLogModel &);
-    virtual ~CallerLogModel();
-
-    string dialingStatus; // 拨号状态
-    string timers; // 时间显示
-    string callDuration; // 通话时长
-    string phoneNumber; // 电话号码
-    bool mulitplePhoneStatus{false}; // 判断是否多路通话界面
-    bool waitingStatus{false}; // 判断是否等待提醒界面
-    bool volumeStatus{false}; // 判断是否音量界面
-    bool phoneStatus{false}; // 判断是拨打界面还是呼入界面
-    bool callStatus{false}; // 判断是否正在接听电话
-    bool notifyFlag{false}; // 判断是否来电呼入 由notify生成界面
-};
-}
-#ifdef __cplusplus
-}
-#endif
-
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: CallerLogModel.h\r
+ * Author:\r
+ * Create: 2021-10-12\r
+ */\r
+#ifndef CALLER_LOG_MODEL_H\r
+#define CALLER_LOG_MODEL_H\r
+\r
+#include "los_mux.h"\r
+#include "string"\r
+#include "PhoneService.h"\r
+#include "AppViewIDs.h"\r
+#include "message.h"\r
+#include "msg_center.h"\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+typedef enum {\r
+    CHANGE_STATUS = 0,\r
+    SCO_STATUS,\r
+    ERROR_MESSAGE\r
+} MessageType;\r
+\r
+enum PhoneStatus {\r
+    PHONE_MULTI_STATUS = 0,\r
+    PHONE_SINGLE_STATUS\r
+};\r
+\r
+bool MulitplePhoneTextReplaces();\r
+bool FindCallListInfoAndSetPriorityNumber();\r
+void PhoneScoStatausCallback(hfp_sco_connect_state_t state);\r
+void PhoneChangeStatusCallback(const PhoneCallInfo *phoneCall);\r
+void PhoneErrorCallback(PhoneServiceErrorType type, int volume);\r
+void UsingPhoneScoStatausCallback(hfp_sco_connect_state_t state);\r
+void UsingPhoneChangeStatusCallback(const PhoneCallInfo *phoneCall);\r
+void UsingPhoneErrorCallback(PhoneServiceErrorType type);\r
+\r
+namespace OHOS {\r
+using namespace std;\r
+\r
+class CallerLogModel {\r
+public:\r
+    void InitPhoneService();\r
+    static CallerLogModel *GetInstance(void);\r
+\r
+    string GetPhoneNumber(void);\r
+    void SetoperateNumber(const char *number, char number_len);\r
+\r
+    bool GetPhoneStatus();\r
+    void SetMakePhoneStatus(bool status);\r
+\r
+    bool GetVolumeScreenStatus();\r
+    void SetVolumeScreenStatus(bool status);\r
+\r
+    bool GetCallStatus();\r
+    void SetCallStatus(bool status);\r
+\r
+    bool GetWaitingStatus();\r
+    void SetWaitingStatus(bool status);\r
+\r
+    bool GetMulitplePhoneStatus();\r
+    void SetMulitplePhoneStatus(bool status);\r
+\r
+    string GetDialingStatus(void);\r
+    void SetDialingStatus(const char *text);\r
+\r
+    string InitDateHourTime();\r
+    char *DisplayCallDuration();\r
+    int CurrCallNum();\r
+\r
+    bool GetNotifyFlag(void);\r
+    void SetNotifyFlag(bool flag);\r
+private:\r
+    CallerLogModel();\r
+    CallerLogModel(const CallerLogModel &);\r
+    CallerLogModel &operator=(const CallerLogModel &);\r
+    virtual ~CallerLogModel();\r
+\r
+    string dialingStatus; // 拨号状态\r
+    string timers; // 时间显示\r
+    string callDuration; // 通话时长\r
+    string phoneNumber; // 电话号码\r
+    bool mulitplePhoneStatus{false}; // 判断是否多路通话界面\r
+    bool waitingStatus{false}; // 判断是否等待提醒界面\r
+    bool volumeStatus{false}; // 判断是否音量界面\r
+    bool phoneStatus{false}; // 判断是拨打界面还是呼入界面\r
+    bool callStatus{false}; // 判断是否正在接听电话\r
+    bool notifyFlag{false}; // 判断是否来电呼入 由notify生成界面\r
+};\r
+}\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
 #endif
\ No newline at end of file
index 267625d..e66e4fb 100644 (file)
@@ -1,40 +1,40 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: CallerLogPresenter.h
- * Author:
- * Create: 2021-10-12
- */
-
-#ifndef CALLER_LOG_PRESENTER_H
-#define CALLER_LOG_PRESENTER_H
-
-#include "Presenter.h"
-#include "ohos_types.h"
-#include "CallerLogModel.h"
-#include "BaseView.h"
-#include "cmsis_os.h"
-
-namespace OHOS {
-class CallerLogView;
-class CallerLogPresenter : public Presenter<CallerLogView>, public UIView::OnClickListener {
-public:
-    CallerLogPresenter();
-    virtual ~CallerLogPresenter();
-
-    void OnStart() override;
-    void OnPause() override;
-    void OnResume() override;
-    void OnStop() override;
-
-    static CallerLogPresenter *GetInstance(void);
-    bool OnClick(UIView &view, const ClickEvent &event) override;
-    void BuletoothHintsCallbackProc(int data);
-private:
-    void InitBluetoothHints();
-    void DisableBluetoothHints();
-
-    osTimerId_t hintsCounting{nullptr};
-};
-}
-
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: CallerLogPresenter.h\r
+ * Author:\r
+ * Create: 2021-10-12\r
+ */\r
+\r
+#ifndef CALLER_LOG_PRESENTER_H\r
+#define CALLER_LOG_PRESENTER_H\r
+\r
+#include "Presenter.h"\r
+#include "ohos_types.h"\r
+#include "CallerLogModel.h"\r
+#include "BaseView.h"\r
+#include "cmsis_os.h"\r
+\r
+namespace OHOS {\r
+class CallerLogView;\r
+class CallerLogPresenter : public Presenter<CallerLogView>, public UIView::OnClickListener {\r
+public:\r
+    CallerLogPresenter();\r
+    virtual ~CallerLogPresenter();\r
+\r
+    void OnStart() override;\r
+    void OnPause() override;\r
+    void OnResume() override;\r
+    void OnStop() override;\r
+\r
+    static CallerLogPresenter *GetInstance(void);\r
+    bool OnClick(UIView &view, const ClickEvent &event) override;\r
+    void BuletoothHintsCallbackProc(int data);\r
+private:\r
+    void InitBluetoothHints();\r
+    void DisableBluetoothHints();\r
+\r
+    osTimerId_t hintsCounting{nullptr};\r
+};\r
+}\r
+\r
 #endif
\ No newline at end of file
index b893b0e..adc309c 100644 (file)
@@ -1,96 +1,96 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: CallerLogView.h
- * Author:
- * Create: 2021-10-12
- */
-
-#ifndef CALLER_LOG_VIEW_H
-#define CALLER_LOG_VIEW_H
-
-#include "View.h"
-#include "CallerLogPresenter.h"
-#include "CallerItemView.h"
-#include "BaseView.h"
-#include "components/ui_view_group.h"
-#include "components/ui_image_animator.h"
-#include "components/ui_scroll_view.h"
-#include "components/ui_label.h"
-#include "components/ui_label_button.h"
-#include "components/ui_list.h"
-#include "components/abstract_adapter.h"
-#include "PhoneService.h"
-#include "vector.h"
-#include "ChangeSliceListener.h"
-
-namespace OHOS {
-using namespace Graphic;
-class CallerListOnDragListener : public UIView::OnDragListener {
-public:
-    CallerListOnDragListener() {}
-    virtual ~CallerListOnDragListener() {}
-
-    virtual bool OnDrag(UIView& view, const DragEvent& event)
-    {
-        UNUSED(view);
-        if ((event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) &&
-            (event.GetDeltaX() > X_DRAG_OFFSET) && (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY())))) {
-            NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
-        }
-
-        return false;
-    }
-};
-
-class CallerUIScrollView : public UIScrollView {
-public:
-    CallerUIScrollView() {}
-    virtual ~CallerUIScrollView() {}
-
-    bool OnDragEvent(const DragEvent& event) override
-    {
-        return UIScrollView::OnDragEvent(event);
-    }
-};
-
-class CallerLogView : public View<CallerLogPresenter> {
-public:
-    CallerLogView();
-    ~CallerLogView();
-
-    void OnStop() override;
-    void OnSetUpView() override;
-    void OnTearDownView() override;
-    void OnStart() override;
-    UIViewGroup* GetHintsGroup();
-    CallerUIScrollView *GetGroupView();
-    CallerUIScrollView *GetContainerView();
-    static CallerLogView *GetInstance();
-    uint32 GetCurrentNumber();
-    CallLogInfo *GetCurrentCallInfo();
-private:
-    bool InitOrBandOnclickEvent();
-    bool CreateCallerLogViewGroup(void);
-    bool CreateNoDataCallerLogViewGroup(void);
-    void ChangeLabelsStytleClear(int32 groupFinaly, int32 Index);
-    void ChangeLabelsStytleLog();
-    void InitBluetoothHintsGroup();
-
-    uint32 currentNumber;
-    UILabel labelLog;
-    UILabel labelClear;
-    CallLogInfo *info{nullptr};
-    UIViewGroup *groupFirst{nullptr};
-    UIViewGroup *groupFinal{nullptr};
-    UIViewGroup *hintsGroup{nullptr};
-    CallerUIScrollView *container{nullptr};
-    CallerUIScrollView *group{nullptr};
-    UIImageView *imageView{nullptr};
-    UIImageView *hintsImageView{nullptr};
-    UIView::OnClickListener* clickLeftListener{nullptr};
-    Vector<CallerItemView *>item;
-    CallerListOnDragListener *dragListener{nullptr};
-};
-}
-
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: CallerLogView.h\r
+ * Author:\r
+ * Create: 2021-10-12\r
+ */\r
+\r
+#ifndef CALLER_LOG_VIEW_H\r
+#define CALLER_LOG_VIEW_H\r
+\r
+#include "View.h"\r
+#include "CallerLogPresenter.h"\r
+#include "CallerItemView.h"\r
+#include "BaseView.h"\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_image_animator.h"\r
+#include "components/ui_scroll_view.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_label_button.h"\r
+#include "components/ui_list.h"\r
+#include "components/abstract_adapter.h"\r
+#include "PhoneService.h"\r
+#include "vector.h"\r
+#include "ChangeSliceListener.h"\r
+\r
+namespace OHOS {\r
+using namespace Graphic;\r
+class CallerListOnDragListener : public UIView::OnDragListener {\r
+public:\r
+    CallerListOnDragListener() {}\r
+    virtual ~CallerListOnDragListener() {}\r
+\r
+    virtual bool OnDrag(UIView& view, const DragEvent& event)\r
+    {\r
+        UNUSED(view);\r
+        if ((event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) &&\r
+            (event.GetDeltaX() > X_DRAG_OFFSET) && (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY())))) {\r
+            NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
+        }\r
+\r
+        return false;\r
+    }\r
+};\r
+\r
+class CallerUIScrollView : public UIScrollView {\r
+public:\r
+    CallerUIScrollView() {}\r
+    virtual ~CallerUIScrollView() {}\r
+\r
+    bool OnDragEvent(const DragEvent& event) override\r
+    {\r
+        return UIScrollView::OnDragEvent(event);\r
+    }\r
+};\r
+\r
+class CallerLogView : public View<CallerLogPresenter> {\r
+public:\r
+    CallerLogView();\r
+    ~CallerLogView();\r
+\r
+    void OnStop() override;\r
+    void OnSetUpView() override;\r
+    void OnTearDownView() override;\r
+    void OnStart() override;\r
+    UIViewGroup* GetHintsGroup();\r
+    CallerUIScrollView *GetGroupView();\r
+    CallerUIScrollView *GetContainerView();\r
+    static CallerLogView *GetInstance();\r
+    uint32 GetCurrentNumber();\r
+    CallLogInfo *GetCurrentCallInfo();\r
+private:\r
+    bool InitOrBandOnclickEvent();\r
+    bool CreateCallerLogViewGroup(void);\r
+    bool CreateNoDataCallerLogViewGroup(void);\r
+    void ChangeLabelsStytleClear(int32 groupFinaly, int32 Index);\r
+    void ChangeLabelsStytleLog();\r
+    void InitBluetoothHintsGroup();\r
+\r
+    uint32 currentNumber;\r
+    UILabel labelLog;\r
+    UILabel labelClear;\r
+    CallLogInfo *info{nullptr};\r
+    UIViewGroup *groupFirst{nullptr};\r
+    UIViewGroup *groupFinal{nullptr};\r
+    UIViewGroup *hintsGroup{nullptr};\r
+    CallerUIScrollView *container{nullptr};\r
+    CallerUIScrollView *group{nullptr};\r
+    UIImageView *imageView{nullptr};\r
+    UIImageView *hintsImageView{nullptr};\r
+    UIView::OnClickListener* clickLeftListener{nullptr};\r
+    Vector<CallerItemView *>item;\r
+    CallerListOnDragListener *dragListener{nullptr};\r
+};\r
+}\r
+\r
 #endif
\ No newline at end of file
index 87e982d..c0acd54 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: CallerItemView.cpp
- * Author:
- * Create: 2021-10-12
- */
-
-#include "CallerItemView.h"
-#include "CallerLogPresenter.h"
-#include "wearable_log.h"
-
-namespace OHOS {
-static constexpr int16 ICON_X = 100;
-static constexpr int16 APP_ITEM_BUTTON_WIDTH = 70;
-static constexpr int16 APP_ITEM_BUTTON_HEIGHT = 150;
-static constexpr int16 APP_ITEM_LABEL_WIDTH = 200;
-static constexpr int16 APP_ITEM_LABEL_HEIGHT = 100;
-
-static constexpr int16 NUM_20 = 20;
-static constexpr int16 APP_ITEM_FONT_SIZE = 30;
-static constexpr int16 HEAD_END_FONT_SIZE = 40;
-
-static constexpr int16 LABELS_X = 260;
-static constexpr int16 LABELS_Y = 80;
-static constexpr int16 LABELS_W = 80;
-static constexpr int16 LABELS_H = 70;
-
-static constexpr int16 ICONS_X = 210;
-static constexpr int16 ICONS_Y = 70;
-static constexpr int16 NUM_10 = 10;
-CallerItemView::CallerItemView(int32 yCoordinates)
-{
-    SetPosition(0, yCoordinates, HORIZONTAL_RESOLUTION, APP_ITEM_BUTTON_HEIGHT);
-    SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
-    SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);
-    SetTouchable(true);
-
-}
-
-CallerItemView::~CallerItemView()
-{
-    Remove(&icon_);
-    Remove(&label_);
-    Remove(&icons_);
-    Remove(&labels_);
-}
-
-void CallerItemView::SetUpChild()
-{
-    icon_.SetPosition(NUM_20, NUM_20);
-    icon_.SetStyle(STYLE_IMAGE_OPA, OPA_OPAQUE);
-
-    icons_.SetPosition(ICONS_X, ICONS_Y);
-    icons_.SetStyle(STYLE_IMAGE_OPA, OPA_OPAQUE);
-
-    label_.SetPosition(ICON_X + APP_ITEM_BUTTON_WIDTH, 0);
-    label_.Resize(APP_ITEM_LABEL_WIDTH, APP_ITEM_BUTTON_WIDTH);
-    label_.SetFont(DEFAULT_VECTOR_FONT_FILENAME, APP_ITEM_FONT_SIZE);
-    label_.SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER);
-    label_.SetStyle(STYLE_TEXT_OPA, OPA_OPAQUE);
-    label_.SetStyle(STYLE_TEXT_COLOR, Color::Gray().full);
-    label_.SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
-    label_.SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);
-
-    labels_.SetPosition(LABELS_X, LABELS_Y);
-    labels_.Resize(LABELS_W, LABELS_H);
-    labels_.SetFont(DEFAULT_VECTOR_FONT_FILENAME, APP_ITEM_FONT_SIZE);
-    labels_.SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
-    labels_.SetStyle(STYLE_TEXT_OPA, OPA_OPAQUE);
-    labels_.SetStyle(STYLE_TEXT_COLOR, Color::Gray().full);
-    labels_.SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
-    labels_.SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);
-}
-
-void CallerItemView::InitDateMonTime(time_t seconds)
-{
-    struct tm pTM;
-    localtime_r(&seconds, &pTM);
-    timeDisplay.erase();
-    if (pTM.tm_mday < NUM_10) {
-        string day = "0" + to_string(pTM.tm_mday);
-        timeDisplay = to_string(pTM.tm_mon) + "/" + day;
-        return;
-    }
-    timeDisplay = to_string(pTM.tm_mon) + "/" + to_string(pTM.tm_mday);
-    return;
-}
-
-void CallerItemView::SetItemInfo(CallLogInfo *itemInfo, char len)
-{
-    SetUpChild();
-    icon_.SetSrc(PNG_CALLER_TMAGE_PATH);
-    infoTel.clear();
-    infoTel.append(reinterpret_cast<const char*>(itemInfo->tel), len);
-    label_.SetText(infoTel.c_str());
-    InitDateMonTime(itemInfo->creationTime);
-    labels_.SetText(timeDisplay.c_str());
-
-    if (itemInfo->status == CALL_MISSED) {
-        icons_.SetSrc(PNG_HANDUP_IMAGE_PATH);
-    } else if (itemInfo->status == CALL_INCOMING) {
-        icons_.SetSrc(PNG_ANSWER_TMAGE_PATH);
-    } else if (itemInfo->status == CALL_OUTGOING) {
-        icons_.SetSrc(PNG_CALLING_TMAGE_PATH);
-    }
-    Add(&icon_);
-    Add(&label_);
-    Add(&icons_);
-    Add(&labels_);
-    return;
-}
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: CallerItemView.cpp\r
+ * Author:\r
+ * Create: 2021-10-12\r
+ */\r
+\r
+#include "CallerItemView.h"\r
+#include "CallerLogPresenter.h"\r
+#include "wearable_log.h"\r
+\r
+namespace OHOS {\r
+static constexpr int16 ICON_X = 100;\r
+static constexpr int16 APP_ITEM_BUTTON_WIDTH = 70;\r
+static constexpr int16 APP_ITEM_BUTTON_HEIGHT = 150;\r
+static constexpr int16 APP_ITEM_LABEL_WIDTH = 200;\r
+static constexpr int16 APP_ITEM_LABEL_HEIGHT = 100;\r
+\r
+static constexpr int16 NUM_20 = 20;\r
+static constexpr int16 APP_ITEM_FONT_SIZE = 30;\r
+static constexpr int16 HEAD_END_FONT_SIZE = 40;\r
+\r
+static constexpr int16 LABELS_X = 260;\r
+static constexpr int16 LABELS_Y = 80;\r
+static constexpr int16 LABELS_W = 80;\r
+static constexpr int16 LABELS_H = 70;\r
+\r
+static constexpr int16 ICONS_X = 210;\r
+static constexpr int16 ICONS_Y = 70;\r
+static constexpr int16 NUM_10 = 10;\r
+CallerItemView::CallerItemView(int32 yCoordinates)\r
+{\r
+    SetPosition(0, yCoordinates, HORIZONTAL_RESOLUTION, APP_ITEM_BUTTON_HEIGHT);\r
+    SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
+    SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
+    SetTouchable(true);\r
+\r
+}\r
+\r
+CallerItemView::~CallerItemView()\r
+{\r
+    Remove(&icon_);\r
+    Remove(&label_);\r
+    Remove(&icons_);\r
+    Remove(&labels_);\r
+}\r
+\r
+void CallerItemView::SetUpChild()\r
+{\r
+    icon_.SetPosition(NUM_20, NUM_20);\r
+    icon_.SetStyle(STYLE_IMAGE_OPA, OPA_OPAQUE);\r
+\r
+    icons_.SetPosition(ICONS_X, ICONS_Y);\r
+    icons_.SetStyle(STYLE_IMAGE_OPA, OPA_OPAQUE);\r
+\r
+    label_.SetPosition(ICON_X + APP_ITEM_BUTTON_WIDTH, 0);\r
+    label_.Resize(APP_ITEM_LABEL_WIDTH, APP_ITEM_BUTTON_WIDTH);\r
+    label_.SetFont(DEFAULT_VECTOR_FONT_FILENAME, APP_ITEM_FONT_SIZE);\r
+    label_.SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER);\r
+    label_.SetStyle(STYLE_TEXT_OPA, OPA_OPAQUE);\r
+    label_.SetStyle(STYLE_TEXT_COLOR, Color::Gray().full);\r
+    label_.SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
+    label_.SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
+\r
+    labels_.SetPosition(LABELS_X, LABELS_Y);\r
+    labels_.Resize(LABELS_W, LABELS_H);\r
+    labels_.SetFont(DEFAULT_VECTOR_FONT_FILENAME, APP_ITEM_FONT_SIZE);\r
+    labels_.SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+    labels_.SetStyle(STYLE_TEXT_OPA, OPA_OPAQUE);\r
+    labels_.SetStyle(STYLE_TEXT_COLOR, Color::Gray().full);\r
+    labels_.SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
+    labels_.SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
+}\r
+\r
+void CallerItemView::InitDateMonTime(time_t seconds)\r
+{\r
+    struct tm pTM;\r
+    localtime_r(&seconds, &pTM);\r
+    timeDisplay.erase();\r
+    if (pTM.tm_mday < NUM_10) {\r
+        string day = "0" + to_string(pTM.tm_mday);\r
+        timeDisplay = to_string(pTM.tm_mon) + "/" + day;\r
+        return;\r
+    }\r
+    timeDisplay = to_string(pTM.tm_mon) + "/" + to_string(pTM.tm_mday);\r
+    return;\r
+}\r
+\r
+void CallerItemView::SetItemInfo(CallLogInfo *itemInfo, char len)\r
+{\r
+    SetUpChild();\r
+    icon_.SetSrc(PNG_CALLER_TMAGE_PATH);\r
+    infoTel.clear();\r
+    infoTel.append(reinterpret_cast<const char*>(itemInfo->tel), len);\r
+    label_.SetText(infoTel.c_str());\r
+    InitDateMonTime(itemInfo->creationTime);\r
+    labels_.SetText(timeDisplay.c_str());\r
+\r
+    if (itemInfo->status == CALL_MISSED) {\r
+        icons_.SetSrc(PNG_HANDUP_IMAGE_PATH);\r
+    } else if (itemInfo->status == CALL_INCOMING) {\r
+        icons_.SetSrc(PNG_ANSWER_TMAGE_PATH);\r
+    } else if (itemInfo->status == CALL_OUTGOING) {\r
+        icons_.SetSrc(PNG_CALLING_TMAGE_PATH);\r
+    }\r
+    Add(&icon_);\r
+    Add(&label_);\r
+    Add(&icons_);\r
+    Add(&labels_);\r
+    return;\r
+}\r
+}\r
index 5e00836..13f60ba 100644 (file)
@@ -262,7 +262,7 @@ static void WaitingOpreate()
     CallerLogModel::GetInstance()->SetWaitingStatus(true);
     // If the call is handling in the notification, the slice is not switched
     if (CallerLogModel::GetInstance()->GetNotifyFlag() == false) {
-        NativeAbility::GetInstance().ChangeSlice(VIEW_INCOMING_CALL, PRIORITY_ONE);
+        NativeAbility::GetInstance().ChangeSlice(VIEW_INCOMING_CALL, TRANSITION_INVALID, PRIORITY_ONE);
     }
 }
 
@@ -360,7 +360,7 @@ static bool MultiplePhonesViewDisplay()
             DisableCallingTimer();
             CallerLogModel::GetInstance()->SetMulitplePhoneStatus(true);
             CallerLogModel::GetInstance()->SetCallStatus(true);
-            NativeAbility::GetInstance().ChangeSlice(VIEW_INCOMING_CALL, PRIORITY_ONE);
+            NativeAbility::GetInstance().ChangeSlice(VIEW_INCOMING_CALL, TRANSITION_INVALID, PRIORITY_ONE);
             return true;
         }
         if (MulitplePhoneTextReplaces() == false) {
@@ -392,7 +392,7 @@ static void NonWatchFinishHandle(int laststatus)
             }
             // If the call is handling in the notification, the slice is not switched
             if (CallerLogModel::GetInstance()->GetNotifyFlag() == false) {
-                NativeAbility::GetInstance().ChangeSlice(VIEW_INCOMING_CALL, PRIORITY_ONE);
+                NativeAbility::GetInstance().ChangeSlice(VIEW_INCOMING_CALL, TRANSITION_INVALID, PRIORITY_ONE);
             }
         }
         CallerLogModel::GetInstance()->SetNotifyFlag(false);
@@ -443,7 +443,7 @@ static void ChangeStatusScreendisplay(int lastStatus)
     }
     // If the call is handling in the notification, the slice is not switched
     if (g_callOperate != OPERATE_PHONE_ACTIVE && CallerLogModel::GetInstance()->GetNotifyFlag() != true) {
-        NativeAbility::GetInstance().ChangeSlice(VIEW_INCOMING_CALL, PRIORITY_ONE);
+        NativeAbility::GetInstance().ChangeSlice(VIEW_INCOMING_CALL, TRANSITION_INVALID, PRIORITY_ONE);
     }
 }
 
@@ -566,7 +566,7 @@ static void ScoConnectHandle(void)
     }
     // If the call is handling in the notification, the slice is not switched
     if (CallerLogModel::GetInstance()->GetNotifyFlag() == false) {
-        NativeAbility::GetInstance().ChangeSlice(VIEW_INCOMING_CALL, PRIORITY_ONE);
+        NativeAbility::GetInstance().ChangeSlice(VIEW_INCOMING_CALL, TRANSITION_INVALID, PRIORITY_ONE);
     }
 }
 
index 8c1b88f..63d74d9 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: CallerLogPresenter.cpp
- * Author:
- * Create: 2021-10-12
- */
-
-#include "CallerLogPresenter.h"
-#include "CallerLogView.h"
-#include "common/task_manager.h"
-#include "wearable_log.h"
-#include "PhoneService.h"
-
-namespace OHOS {
-static constexpr uint64_t MS_FOUR_SECONDS = 4000; // 定时器时间
-static CallerLogPresenter *g_pMainView = nullptr;
-CallerLogPresenter::CallerLogPresenter()
-{
-    g_pMainView = this;
-}
-
-CallerLogPresenter::~CallerLogPresenter()
-{
-    g_pMainView = nullptr;
-}
-
-CallerLogPresenter *CallerLogPresenter::GetInstance(void)
-{
-    return g_pMainView;
-}
-
-void CallerLogPresenter::OnStart()
-{
-    Presenter<CallerLogView>::OnStart();
-}
-
-void CallerLogPresenter::OnResume(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistPresenter::OnResume()");
-    Presenter<CallerLogView>::OnResume();
-
-    return;
-}
-
-void CallerLogPresenter::OnPause(void) {}
-
-void CallerLogPresenter::OnStop(void)
-{
-    if (hintsCounting != NULL) {
-        if (g_pMainView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogPresenter::CallerLogPresenter g_pMainView nullptr");
-            return;
-        }
-        g_pMainView->DisableBluetoothHints();
-        return;
-    }
-}
-
-/* 定时器回调函数 */
-void BuletoothHintsCallback(int data)
-{
-    GraphicService::GetInstance()->PostGraphicEvent(std::bind(&CallerLogPresenter::BuletoothHintsCallbackProc, CallerLogPresenter::GetInstance(), data));
-}
-
-/* 开启定时器 */
-void CallerLogPresenter::InitBluetoothHints()
-{
-    if (hintsCounting != NULL) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallerLogPresenter::BluetoothHints already exists!");
-        return;
-    }
-    hintsCounting = osTimerNew((osTimerFunc_t)BuletoothHintsCallback, osTimerPeriodic, NULL, NULL);
-    if (hintsCounting == NULL) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogPresenter::BluetoothHints osTimerNew failed!");
-        return;
-    }
-    int tick = osMs2Tick(MS_FOUR_SECONDS);
-    osStatus_t retTimer = osTimerStart(hintsCounting, tick);
-    if (retTimer != osOK) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogPresenter::BluetoothHints osTimerStart failed, ret = %lx!", retTimer);
-        if (hintsCounting != NULL) {
-            retTimer = osTimerDelete(hintsCounting);
-            if (retTimer != osOK) {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogPresenter::osTimerDelete failed, ret = %lx!", retTimer);
-                return;
-            }
-            hintsCounting = NULL;
-        }
-        return;
-    }
-}
-void CallerLogPresenter::BuletoothHintsCallbackProc(int data)
-{
-    if (CallerLogView::GetInstance() == nullptr) {
-        return;
-    }
-    CallerLogView::GetInstance()->GetHintsGroup()->SetVisible(false);
-    CallerLogView::GetInstance()->GetContainerView()->SetVisible(true);
-    CallerLogView::GetInstance()->GetGroupView()->SetVisible(true);
-    if (g_pMainView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogPresenter::CallerLogPresenter g_pMainView nullptr");
-        return;
-    }
-    g_pMainView->DisableBluetoothHints();
-}
-
-/* 关闭定时器 */
-void CallerLogPresenter::DisableBluetoothHints()
-{
-    if (hintsCounting != NULL) {
-        osStatus_t ret = osTimerDelete(hintsCounting);
-        if (ret != osOK) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScanBuletoothHintsCallback osTimerDelete failed, ret = %lx!!", ret);
-            return;
-        }
-        hintsCounting = NULL;
-    }
-}
-
-bool CallerLogPresenter::OnClick(UIView &view, const ClickEvent &event)
-{
-    UNUSED(event);
-    if (CallerLogView::GetInstance() == nullptr) {
-        return false;
-    }
-
-    if (CallerLogModel::GetInstance() == nullptr) {
-        return false;
-    }
-
-    uint16 dataNumber = view_->GetCurrentNumber();
-    if (view.GetViewIndex() == dataNumber) {
-        if (ClearCallLogFile() == 0) {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallerLogPresenter::ClearCallLogFile success");
-        }
-        view_->GetContainerView()->SetVisible(false);
-        view_->GetGroupView()->SetVisible(true);
-    } else if (view.GetViewIndex() >= 0 && view.GetViewIndex() < dataNumber) {
-        // 手表拨出呼叫
-        if (GetBtConnectStatus() != PROFILE_STATE_CONNECTED) {
-            CallerLogView::GetInstance()->GetHintsGroup()->SetVisible(true);
-            CallerLogView::GetInstance()->GetContainerView()->SetVisible(false);
-            CallerLogView::GetInstance()->GetGroupView()->SetVisible(false);
-
-            InitBluetoothHints();
-            return false;
-        }
-        if (0 <= view.GetViewIndex() && view.GetViewIndex() < dataNumber) {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "callnumber %s, callnumbernum %d",
-            (char *)(view_->GetCurrentCallInfo() + dataNumber - view.GetViewIndex() - 1)->tel,
-            (view_->GetCurrentCallInfo() + dataNumber - view.GetViewIndex() - 1)->telLen);
-            
-            CallerLogModel::GetInstance()->SetoperateNumber(
-                (char *)(view_->GetCurrentCallInfo() + dataNumber - view.GetViewIndex() - 1)->tel,
-                (view_->GetCurrentCallInfo() + dataNumber - view.GetViewIndex() - 1)->telLen);
-
-            if (DialCall(
-                (unsigned char *)(view_->GetCurrentCallInfo() + dataNumber - view.GetViewIndex() - 1)->tel,
-                (view_->GetCurrentCallInfo() + dataNumber - view.GetViewIndex() - 1)->telLen) == 0) {
-                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallerLogPresenter::Onclick caller success");
-            }
-        }
-    }
-    return false;
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: CallerLogPresenter.cpp\r
+ * Author:\r
+ * Create: 2021-10-12\r
+ */\r
+\r
+#include "CallerLogPresenter.h"\r
+#include "CallerLogView.h"\r
+#include "common/task_manager.h"\r
+#include "wearable_log.h"\r
+#include "PhoneService.h"\r
+\r
+namespace OHOS {\r
+static constexpr uint64_t MS_FOUR_SECONDS = 4000; // 定时器时间\r
+static CallerLogPresenter *g_pMainView = nullptr;\r
+CallerLogPresenter::CallerLogPresenter()\r
+{\r
+    g_pMainView = this;\r
+}\r
+\r
+CallerLogPresenter::~CallerLogPresenter()\r
+{\r
+    g_pMainView = nullptr;\r
+}\r
+\r
+CallerLogPresenter *CallerLogPresenter::GetInstance(void)\r
+{\r
+    return g_pMainView;\r
+}\r
+\r
+void CallerLogPresenter::OnStart()\r
+{\r
+    Presenter<CallerLogView>::OnStart();\r
+}\r
+\r
+void CallerLogPresenter::OnResume(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistPresenter::OnResume()");\r
+    Presenter<CallerLogView>::OnResume();\r
+\r
+    return;\r
+}\r
+\r
+void CallerLogPresenter::OnPause(void) {}\r
+\r
+void CallerLogPresenter::OnStop(void)\r
+{\r
+    if (hintsCounting != NULL) {\r
+        if (g_pMainView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogPresenter::CallerLogPresenter g_pMainView nullptr");\r
+            return;\r
+        }\r
+        g_pMainView->DisableBluetoothHints();\r
+        return;\r
+    }\r
+}\r
+\r
+/* 定时器回调函数 */\r
+void BuletoothHintsCallback(int data)\r
+{\r
+    GraphicService::GetInstance()->PostGraphicEvent(std::bind(&CallerLogPresenter::BuletoothHintsCallbackProc, CallerLogPresenter::GetInstance(), data));\r
+}\r
+\r
+/* 开启定时器 */\r
+void CallerLogPresenter::InitBluetoothHints()\r
+{\r
+    if (hintsCounting != NULL) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallerLogPresenter::BluetoothHints already exists!");\r
+        return;\r
+    }\r
+    hintsCounting = osTimerNew((osTimerFunc_t)BuletoothHintsCallback, osTimerPeriodic, NULL, NULL);\r
+    if (hintsCounting == NULL) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogPresenter::BluetoothHints osTimerNew failed!");\r
+        return;\r
+    }\r
+    int tick = osMs2Tick(MS_FOUR_SECONDS);\r
+    osStatus_t retTimer = osTimerStart(hintsCounting, tick);\r
+    if (retTimer != osOK) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogPresenter::BluetoothHints osTimerStart failed, ret = %lx!", retTimer);\r
+        if (hintsCounting != NULL) {\r
+            retTimer = osTimerDelete(hintsCounting);\r
+            if (retTimer != osOK) {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogPresenter::osTimerDelete failed, ret = %lx!", retTimer);\r
+                return;\r
+            }\r
+            hintsCounting = NULL;\r
+        }\r
+        return;\r
+    }\r
+}\r
+void CallerLogPresenter::BuletoothHintsCallbackProc(int data)\r
+{\r
+    if (CallerLogView::GetInstance() == nullptr) {\r
+        return;\r
+    }\r
+    CallerLogView::GetInstance()->GetHintsGroup()->SetVisible(false);\r
+    CallerLogView::GetInstance()->GetContainerView()->SetVisible(true);\r
+    CallerLogView::GetInstance()->GetGroupView()->SetVisible(true);\r
+    if (g_pMainView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogPresenter::CallerLogPresenter g_pMainView nullptr");\r
+        return;\r
+    }\r
+    g_pMainView->DisableBluetoothHints();\r
+}\r
+\r
+/* 关闭定时器 */\r
+void CallerLogPresenter::DisableBluetoothHints()\r
+{\r
+    if (hintsCounting != NULL) {\r
+        osStatus_t ret = osTimerDelete(hintsCounting);\r
+        if (ret != osOK) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScanBuletoothHintsCallback osTimerDelete failed, ret = %lx!!", ret);\r
+            return;\r
+        }\r
+        hintsCounting = NULL;\r
+    }\r
+}\r
+\r
+bool CallerLogPresenter::OnClick(UIView &view, const ClickEvent &event)\r
+{\r
+    UNUSED(event);\r
+    if (CallerLogView::GetInstance() == nullptr) {\r
+        return false;\r
+    }\r
+\r
+    if (CallerLogModel::GetInstance() == nullptr) {\r
+        return false;\r
+    }\r
+\r
+    uint16 dataNumber = view_->GetCurrentNumber();\r
+    if (view.GetViewIndex() == dataNumber) {\r
+        if (ClearCallLogFile() == 0) {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallerLogPresenter::ClearCallLogFile success");\r
+        }\r
+        view_->GetContainerView()->SetVisible(false);\r
+        view_->GetGroupView()->SetVisible(true);\r
+    } else if (view.GetViewIndex() >= 0 && view.GetViewIndex() < dataNumber) {\r
+        // 手表拨出呼叫\r
+        if (GetBtConnectStatus() != PROFILE_STATE_CONNECTED) {\r
+            CallerLogView::GetInstance()->GetHintsGroup()->SetVisible(true);\r
+            CallerLogView::GetInstance()->GetContainerView()->SetVisible(false);\r
+            CallerLogView::GetInstance()->GetGroupView()->SetVisible(false);\r
+\r
+            InitBluetoothHints();\r
+            return false;\r
+        }\r
+        if (0 <= view.GetViewIndex() && view.GetViewIndex() < dataNumber) {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "callnumber %s, callnumbernum %d",\r
+            (char *)(view_->GetCurrentCallInfo() + dataNumber - view.GetViewIndex() - 1)->tel,\r
+            (view_->GetCurrentCallInfo() + dataNumber - view.GetViewIndex() - 1)->telLen);\r
+            \r
+            CallerLogModel::GetInstance()->SetoperateNumber(\r
+                (char *)(view_->GetCurrentCallInfo() + dataNumber - view.GetViewIndex() - 1)->tel,\r
+                (view_->GetCurrentCallInfo() + dataNumber - view.GetViewIndex() - 1)->telLen);\r
+\r
+            if (DialCall(\r
+                (unsigned char *)(view_->GetCurrentCallInfo() + dataNumber - view.GetViewIndex() - 1)->tel,\r
+                (view_->GetCurrentCallInfo() + dataNumber - view.GetViewIndex() - 1)->telLen) == 0) {\r
+                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallerLogPresenter::Onclick caller success");\r
+            }\r
+        }\r
+    }\r
+    return false;\r
+}\r
 }
\ No newline at end of file
index 52eac40..ac65dc7 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: CallerLogView.cpp
- * Author:
- * Create: 2021-10-12
- */
-
-#include "CallerLogView.h"
-#include "CallerLogPresenter.h"
-#include "CallerLogModel.h"
-#include "wearable_log.h"
-
-namespace OHOS {
-static constexpr int16 ICON_X = 100;
-static constexpr int16 APP_ITEM_BUTTON_HEIGHT = 150;
-
-static constexpr int16 NUM_20 = 20;
-static constexpr int16 APP_ITEM_FONT_SIZE = 30;
-static constexpr int16 HEAD_END_FONT_SIZE = 40;
-
-static constexpr int16 ITEM_GROUP_HEIGHT = 150;
-
-static int32 num = 0;
-static CallerLogView *g_pMainView = nullptr;
-CallerLogView::CallerLogView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "::CallerLogView::CallerLogView ");
-    g_pMainView = this;
-}
-
-CallerLogView::~CallerLogView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "::CallerLogView::~CallerLogView ");
-    group->RemoveAll();
-    container->RemoveAll();
-    hintsGroup->RemoveAll();
-
-    delete hintsImageView;
-    hintsImageView = nullptr;
-
-    delete imageView;
-    imageView = nullptr;
-
-    if (item.IsEmpty() == false) {
-        Vector<CallerItemView *>().Swap(item);
-    }
-
-    delete dragListener;
-    dragListener = nullptr;
-
-    if (num != 0) {
-        delete info;
-        info = nullptr;
-
-        groupFirst->RemoveAll();
-        groupFinal->RemoveAll();
-
-        delete groupFirst;
-        groupFirst = nullptr;
-
-        delete groupFinal;
-        groupFinal = nullptr;
-    }
-
-    delete group;
-    group = nullptr;
-
-    delete hintsGroup;
-    hintsGroup = nullptr;
-
-    delete container;
-    container = nullptr;
-
-    g_pMainView = nullptr;
-}
-
-CallerLogView *CallerLogView::GetInstance()
-{
-    return g_pMainView;
-}
-
-bool CallerLogView::CreateNoDataCallerLogViewGroup()
-{
-    group =  new CallerUIScrollView();
-    if (group == nullptr) {
-        return false;
-    }
-    group->SetPosition(0, 0);
-    group->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);
-
-    imageView = new UIImageView();
-    if (imageView == nullptr) {
-        return false;
-    }
-    imageView->SetPosition(0, 0); // 30 : offset
-    imageView->SetSrc(PNG_NO_CALLER_LOG_IMAGE);
-    group->Add(imageView);
-    return true;
-}
-
-CallerUIScrollView *CallerLogView::GetContainerView()
-{
-    return container;
-}
-
-CallerUIScrollView *CallerLogView::GetGroupView()
-{
-    return group;
-}
-
-void CallerLogView::InitBluetoothHintsGroup()
-{
-    hintsGroup =  new UIViewGroup();
-    if (hintsGroup == nullptr) {
-        return;
-    }
-    hintsGroup->SetPosition(0, 0);
-    hintsGroup->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);
-
-    hintsImageView = new UIImageView();
-    if (hintsImageView == nullptr) {
-        return;
-    }
-    hintsImageView->SetPosition(0, 0); // 30 : offset
-    hintsImageView->SetSrc(PNG_BLUETOOTH_HINTS_PATH);
-    hintsGroup->Add(hintsImageView);
-    
-    RootView::GetInstance()->Add(hintsGroup);
-    hintsGroup->SetVisible(false);
-    return;
-}
-
-UIViewGroup *CallerLogView::GetHintsGroup()
-{
-    return hintsGroup;
-}
-
-void CallerLogView::ChangeLabelsStytleLog()
-{
-    groupFirst = new UIViewGroup();
-    if (groupFirst == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogView::new groupFirst error");
-        return;
-    }
-    groupFirst->SetPosition(0, 0, HORIZONTAL_RESOLUTION, APP_ITEM_BUTTON_HEIGHT);
-    groupFirst->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
-    groupFirst->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);
-
-    labelLog.SetPosition(0, APP_ITEM_FONT_SIZE, HORIZONTAL_RESOLUTION, ICON_X + NUM_20);
-    labelLog.SetText("通话记录");
-    labelLog.SetTextColor(Color::White());
-    labelLog.SetFont(DEFAULT_VECTOR_FONT_FILENAME, HEAD_END_FONT_SIZE);
-    labelLog.SetAlign(TEXT_ALIGNMENT_CENTER);
-    groupFirst->Add(&labelLog);
-}
-
-void CallerLogView::ChangeLabelsStytleClear(int32 groupFinaly, int32 Index)
-{
-    groupFinal = new UIViewGroup();
-    if (groupFinal == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogView::new groupFinal error");
-        return;
-    }
-    groupFinal->SetPosition(0, groupFinaly, HORIZONTAL_RESOLUTION, APP_ITEM_BUTTON_HEIGHT);
-    groupFinal->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
-    groupFinal->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);
-    groupFinal->SetTouchable(true);
-    groupFinal->SetViewIndex(Index);
-    groupFinal->SetOnClickListener(clickLeftListener);
-
-    labelClear.SetPosition(0, NUM_20, HORIZONTAL_RESOLUTION, APP_ITEM_BUTTON_HEIGHT);
-    labelClear.SetText("全部清除");
-    labelClear.SetTextColor(Color::White());
-    labelClear.SetFont(DEFAULT_VECTOR_FONT_FILENAME, HEAD_END_FONT_SIZE);
-    labelClear.SetAlign(TEXT_ALIGNMENT_CENTER);
-    groupFinal->Add(&labelClear);
-}
-
-bool CallerLogView::InitOrBandOnclickEvent()
-{
-    clickLeftListener = (UIView::OnClickListener*)OHOS::CallerLogPresenter::GetInstance();
-    if (clickLeftListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogView::new clickLeftListener error");
-        return false;
-    }
-    return true;
-}
-
-bool CallerLogView::CreateCallerLogViewGroup()
-{
-    container = new CallerUIScrollView();
-    if (container == nullptr) {
-        return false;
-    }
-    container->Resize(HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
-    container->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
-    container->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);
-    container->SetThrowDrag(true);
-    container->SetDraggable(true);
-    return true;
-}
-
-void CallerLogView::OnStart()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallerLogView::OnStart");
-    View<CallerLogPresenter>::OnStart();
-
-    BaseView::RootView(Color::Black().full);
-    if (CreateNoDataCallerLogViewGroup() == false) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogView::CreateNoDataCallerLogViewGroup error");
-        return;
-    }
-    RootView::GetInstance()->Add(group);
-
-    if (CreateCallerLogViewGroup() == false) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogView::CreateCallerLogViewGroup error");
-        return;
-    }
-
-    if (InitOrBandOnclickEvent() == false) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogView::InitOrBandOnclickEvent fail");
-        return;
-    }
-
-    info = new CallLogInfo[sizeof(CallLogInfo) * CALL_LOG_MAX_NUM];
-    if (GetCallLog(&info, &num) == -1) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallerLogModel::GetInstance()->ListIsEmpty");
-        return;
-    }
-
-    if (num != 0) {
-        ChangeLabelsStytleLog();
-        container->Add(groupFirst);
-
-        currentNumber = 0;
-        for (int i  = num; i != 0; i--) {
-            item.PushBack(nullptr);
-            item[currentNumber] = new CallerItemView((currentNumber + 1)*ITEM_GROUP_HEIGHT);
-            item[currentNumber]->SetItemInfo((info + i - 1), (info + i -1)->telLen);
-            item[currentNumber]->SetViewIndex(currentNumber);
-            item[currentNumber]->SetOnClickListener(clickLeftListener);
-            container->Add(item[currentNumber]);
-            currentNumber++;
-        }
-        ChangeLabelsStytleClear((currentNumber + 1)*ITEM_GROUP_HEIGHT, currentNumber);
-        container->Add(groupFinal);
-    }
-
-    dragListener = new CallerListOnDragListener();
-    if (dragListener == nullptr) {
-        return;
-    }
-    InitBluetoothHintsGroup();
-    container->SetOnDragListener(dragListener);
-    group->SetOnDragListener(dragListener);
-}
-
-uint32 CallerLogView::GetCurrentNumber()
-{
-    return currentNumber;
-}
-
-CallLogInfo *CallerLogView::GetCurrentCallInfo()
-{
-    return info;
-}
-
-void CallerLogView::OnSetUpView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallerLogView::OnSetUpView");
-    View<CallerLogPresenter>::OnSetUpView();
-
-    if (container == nullptr) {
-        return;
-    }
-
-    RootView::GetInstance()->Add(container);
-
-    if (num == 0) {
-        group->SetVisible(true);
-        container->SetVisible(false);
-    } else {
-        container->SetVisible(true);
-        group->SetVisible(false);
-    }
-    Draw();
-}
-
-
-void CallerLogView::OnTearDownView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallerLogView::~OnTearDownView");
-    View<CallerLogPresenter>::OnTearDownView();
-    return;
-}
-
-void CallerLogView::OnStop()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallerLogView::~OnStop");
-    View<CallerLogPresenter>::OnStop();
-
-    RootView::GetInstance()->ClearOnKeyActListener();
-    RootView::GetInstance()->RemoveAll();
-    return;
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: CallerLogView.cpp\r
+ * Author:\r
+ * Create: 2021-10-12\r
+ */\r
+\r
+#include "CallerLogView.h"\r
+#include "CallerLogPresenter.h"\r
+#include "CallerLogModel.h"\r
+#include "wearable_log.h"\r
+\r
+namespace OHOS {\r
+static constexpr int16 ICON_X = 100;\r
+static constexpr int16 APP_ITEM_BUTTON_HEIGHT = 150;\r
+\r
+static constexpr int16 NUM_20 = 20;\r
+static constexpr int16 APP_ITEM_FONT_SIZE = 30;\r
+static constexpr int16 HEAD_END_FONT_SIZE = 40;\r
+\r
+static constexpr int16 ITEM_GROUP_HEIGHT = 150;\r
+\r
+static int32 num = 0;\r
+static CallerLogView *g_pMainView = nullptr;\r
+CallerLogView::CallerLogView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "::CallerLogView::CallerLogView ");\r
+    g_pMainView = this;\r
+}\r
+\r
+CallerLogView::~CallerLogView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "::CallerLogView::~CallerLogView ");\r
+    group->RemoveAll();\r
+    container->RemoveAll();\r
+    hintsGroup->RemoveAll();\r
+\r
+    delete hintsImageView;\r
+    hintsImageView = nullptr;\r
+\r
+    delete imageView;\r
+    imageView = nullptr;\r
+\r
+    if (item.IsEmpty() == false) {\r
+        Vector<CallerItemView *>().Swap(item);\r
+    }\r
+\r
+    delete dragListener;\r
+    dragListener = nullptr;\r
+\r
+    if (num != 0) {\r
+        delete info;\r
+        info = nullptr;\r
+\r
+        groupFirst->RemoveAll();\r
+        groupFinal->RemoveAll();\r
+\r
+        delete groupFirst;\r
+        groupFirst = nullptr;\r
+\r
+        delete groupFinal;\r
+        groupFinal = nullptr;\r
+    }\r
+\r
+    delete group;\r
+    group = nullptr;\r
+\r
+    delete hintsGroup;\r
+    hintsGroup = nullptr;\r
+\r
+    delete container;\r
+    container = nullptr;\r
+\r
+    g_pMainView = nullptr;\r
+}\r
+\r
+CallerLogView *CallerLogView::GetInstance()\r
+{\r
+    return g_pMainView;\r
+}\r
+\r
+bool CallerLogView::CreateNoDataCallerLogViewGroup()\r
+{\r
+    group =  new CallerUIScrollView();\r
+    if (group == nullptr) {\r
+        return false;\r
+    }\r
+    group->SetPosition(0, 0);\r
+    group->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);\r
+\r
+    imageView = new UIImageView();\r
+    if (imageView == nullptr) {\r
+        return false;\r
+    }\r
+    imageView->SetPosition(0, 0); // 30 : offset\r
+    imageView->SetSrc(PNG_NO_CALLER_LOG_IMAGE);\r
+    group->Add(imageView);\r
+    return true;\r
+}\r
+\r
+CallerUIScrollView *CallerLogView::GetContainerView()\r
+{\r
+    return container;\r
+}\r
+\r
+CallerUIScrollView *CallerLogView::GetGroupView()\r
+{\r
+    return group;\r
+}\r
+\r
+void CallerLogView::InitBluetoothHintsGroup()\r
+{\r
+    hintsGroup =  new UIViewGroup();\r
+    if (hintsGroup == nullptr) {\r
+        return;\r
+    }\r
+    hintsGroup->SetPosition(0, 0);\r
+    hintsGroup->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);\r
+\r
+    hintsImageView = new UIImageView();\r
+    if (hintsImageView == nullptr) {\r
+        return;\r
+    }\r
+    hintsImageView->SetPosition(0, 0); // 30 : offset\r
+    hintsImageView->SetSrc(PNG_BLUETOOTH_HINTS_PATH);\r
+    hintsGroup->Add(hintsImageView);\r
+    \r
+    RootView::GetInstance()->Add(hintsGroup);\r
+    hintsGroup->SetVisible(false);\r
+    return;\r
+}\r
+\r
+UIViewGroup *CallerLogView::GetHintsGroup()\r
+{\r
+    return hintsGroup;\r
+}\r
+\r
+void CallerLogView::ChangeLabelsStytleLog()\r
+{\r
+    groupFirst = new UIViewGroup();\r
+    if (groupFirst == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogView::new groupFirst error");\r
+        return;\r
+    }\r
+    groupFirst->SetPosition(0, 0, HORIZONTAL_RESOLUTION, APP_ITEM_BUTTON_HEIGHT);\r
+    groupFirst->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
+    groupFirst->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
+\r
+    labelLog.SetPosition(0, APP_ITEM_FONT_SIZE, HORIZONTAL_RESOLUTION, ICON_X + NUM_20);\r
+    labelLog.SetText("通话记录");\r
+    labelLog.SetTextColor(Color::White());\r
+    labelLog.SetFont(DEFAULT_VECTOR_FONT_FILENAME, HEAD_END_FONT_SIZE);\r
+    labelLog.SetAlign(TEXT_ALIGNMENT_CENTER);\r
+    groupFirst->Add(&labelLog);\r
+}\r
+\r
+void CallerLogView::ChangeLabelsStytleClear(int32 groupFinaly, int32 Index)\r
+{\r
+    groupFinal = new UIViewGroup();\r
+    if (groupFinal == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogView::new groupFinal error");\r
+        return;\r
+    }\r
+    groupFinal->SetPosition(0, groupFinaly, HORIZONTAL_RESOLUTION, APP_ITEM_BUTTON_HEIGHT);\r
+    groupFinal->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
+    groupFinal->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
+    groupFinal->SetTouchable(true);\r
+    groupFinal->SetViewIndex(Index);\r
+    groupFinal->SetOnClickListener(clickLeftListener);\r
+\r
+    labelClear.SetPosition(0, NUM_20, HORIZONTAL_RESOLUTION, APP_ITEM_BUTTON_HEIGHT);\r
+    labelClear.SetText("全部清除");\r
+    labelClear.SetTextColor(Color::White());\r
+    labelClear.SetFont(DEFAULT_VECTOR_FONT_FILENAME, HEAD_END_FONT_SIZE);\r
+    labelClear.SetAlign(TEXT_ALIGNMENT_CENTER);\r
+    groupFinal->Add(&labelClear);\r
+}\r
+\r
+bool CallerLogView::InitOrBandOnclickEvent()\r
+{\r
+    clickLeftListener = (UIView::OnClickListener*)OHOS::CallerLogPresenter::GetInstance();\r
+    if (clickLeftListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogView::new clickLeftListener error");\r
+        return false;\r
+    }\r
+    return true;\r
+}\r
+\r
+bool CallerLogView::CreateCallerLogViewGroup()\r
+{\r
+    container = new CallerUIScrollView();\r
+    if (container == nullptr) {\r
+        return false;\r
+    }\r
+    container->Resize(HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
+    container->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
+    container->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);\r
+    container->SetThrowDrag(true);\r
+    container->SetDraggable(true);\r
+    return true;\r
+}\r
+\r
+void CallerLogView::OnStart()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallerLogView::OnStart");\r
+    View<CallerLogPresenter>::OnStart();\r
+\r
+    BaseView::RootView(Color::Black().full);\r
+    if (CreateNoDataCallerLogViewGroup() == false) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogView::CreateNoDataCallerLogViewGroup error");\r
+        return;\r
+    }\r
+    RootView::GetInstance()->Add(group);\r
+\r
+    if (CreateCallerLogViewGroup() == false) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogView::CreateCallerLogViewGroup error");\r
+        return;\r
+    }\r
+\r
+    if (InitOrBandOnclickEvent() == false) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CallerLogView::InitOrBandOnclickEvent fail");\r
+        return;\r
+    }\r
+\r
+    info = new CallLogInfo[sizeof(CallLogInfo) * CALL_LOG_MAX_NUM];\r
+    if (GetCallLog(&info, &num) == -1) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallerLogModel::GetInstance()->ListIsEmpty");\r
+        return;\r
+    }\r
+\r
+    if (num != 0) {\r
+        ChangeLabelsStytleLog();\r
+        container->Add(groupFirst);\r
+\r
+        currentNumber = 0;\r
+        for (int i  = num; i != 0; i--) {\r
+            item.PushBack(nullptr);\r
+            item[currentNumber] = new CallerItemView((currentNumber + 1)*ITEM_GROUP_HEIGHT);\r
+            item[currentNumber]->SetItemInfo((info + i - 1), (info + i -1)->telLen);\r
+            item[currentNumber]->SetViewIndex(currentNumber);\r
+            item[currentNumber]->SetOnClickListener(clickLeftListener);\r
+            container->Add(item[currentNumber]);\r
+            currentNumber++;\r
+        }\r
+        ChangeLabelsStytleClear((currentNumber + 1)*ITEM_GROUP_HEIGHT, currentNumber);\r
+        container->Add(groupFinal);\r
+    }\r
+\r
+    dragListener = new CallerListOnDragListener();\r
+    if (dragListener == nullptr) {\r
+        return;\r
+    }\r
+    InitBluetoothHintsGroup();\r
+    container->SetOnDragListener(dragListener);\r
+    group->SetOnDragListener(dragListener);\r
+}\r
+\r
+uint32 CallerLogView::GetCurrentNumber()\r
+{\r
+    return currentNumber;\r
+}\r
+\r
+CallLogInfo *CallerLogView::GetCurrentCallInfo()\r
+{\r
+    return info;\r
+}\r
+\r
+void CallerLogView::OnSetUpView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallerLogView::OnSetUpView");\r
+    View<CallerLogPresenter>::OnSetUpView();\r
+\r
+    if (container == nullptr) {\r
+        return;\r
+    }\r
+\r
+    RootView::GetInstance()->Add(container);\r
+\r
+    if (num == 0) {\r
+        group->SetVisible(true);\r
+        container->SetVisible(false);\r
+    } else {\r
+        container->SetVisible(true);\r
+        group->SetVisible(false);\r
+    }\r
+    Draw();\r
+}\r
+\r
+\r
+void CallerLogView::OnTearDownView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallerLogView::~OnTearDownView");\r
+    View<CallerLogPresenter>::OnTearDownView();\r
+    return;\r
+}\r
+\r
+void CallerLogView::OnStop()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CallerLogView::~OnStop");\r
+    View<CallerLogPresenter>::OnStop();\r
+\r
+    RootView::GetInstance()->ClearOnKeyActListener();\r
+    RootView::GetInstance()->RemoveAll();\r
+    return;\r
+}\r
 }
\ No newline at end of file
index cb17aa4..0560c8a 100644 (file)
@@ -1,31 +1,31 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: ConnectOpen View
- * Create: 2022-03-22
- */
-#ifndef CONNECT_OPEN_VIEW_H
-#define CONNECT_OPEN_VIEW_H
-
-#include "components/ui_view_group.h"
-#include "components/ui_label.h"
-#include "components/ui_label_button.h"
-#include "components/ui_image_view.h"
-
-namespace OHOS {
-class ConnectOpenView {
-public:
-    ConnectOpenView();
-    ~ConnectOpenView();
-    static ConnectOpenView *GetInstance();
-    UIViewGroup *InitShowUpView(void);
-
-private:
-    void ShowUpBackView(void);
-    UILabel *titleLabel{nullptr};
-    UILabel *watchNameLabel{nullptr};
-    UILabelButton *backButton{nullptr};
-    UIImageView *tipImg{nullptr};
-    UIViewGroup *group{nullptr};
-};
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: ConnectOpen View\r
+ * Create: 2022-03-22\r
+ */\r
+#ifndef CONNECT_OPEN_VIEW_H\r
+#define CONNECT_OPEN_VIEW_H\r
+\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_label_button.h"\r
+#include "components/ui_image_view.h"\r
+\r
+namespace OHOS {\r
+class ConnectOpenView {\r
+public:\r
+    ConnectOpenView();\r
+    ~ConnectOpenView();\r
+    static ConnectOpenView *GetInstance();\r
+    UIViewGroup *InitShowUpView(void);\r
+\r
+private:\r
+    void ShowUpBackView(void);\r
+    UILabel *titleLabel{nullptr};\r
+    UILabel *watchNameLabel{nullptr};\r
+    UILabelButton *backButton{nullptr};\r
+    UIImageView *tipImg{nullptr};\r
+    UIViewGroup *group{nullptr};\r
+};\r
+} // namespace OHOS\r
 #endif // CONNECT_OPEN_VIEW_H
\ No newline at end of file
index fd50c1f..0c73d6f 100644 (file)
@@ -1,55 +1,53 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: Connect Phone Presenter
- * Create: 2022-01-19
- */
-
-#ifndef CONNECT_PHONE_PRESENTER_H
-#define CONNECT_PHONE_PRESENTER_H
-
-#include "Presenter.h"
-#include "ConnectOpenView.h"
-#include "NativeLauncher.h"
-#include "NativeAbility.h"
-#include "BaseView.h"
-
-namespace OHOS {
-enum ConnectPhonePresenterNum : uint8_t {
-        CONNECTSELECTVIEW = 0,
-        CONNECTOPENVIEW,
-        CONNECTPHONE_MAX,
-};
-
-#define CANCEL_BUTTON "cancelButton"
-#define CONFIRM_BUTTON "confirmButton"
-#define CONNECT_OPEN_BACK_BUTTON "backButton"
-
-#define CONNECT_SELECT_VIEW "connectSelectView"
-#define CONNECT_OPEN_VIEW "connectOpenView"
-
-class ConnectPhoneView;
-class ConnectPhonePresenter : public Presenter<ConnectPhoneView>,
-                                 public UIView::OnClickListener,
-                                 public RootView::OnKeyActListener,
-                                 public UIView::OnDragListener {
-public:
-    ConnectPhonePresenter();
-    ~ConnectPhonePresenter();
-    static ConnectPhonePresenter *GetInstance();
-    void OnStart() override;
-    void OnPause() override;
-    void OnResume() override;
-    void OnStop() override;
-    bool OnClick(UIView& view, const ClickEvent& event) override;
-    bool OnDrag(UIView& view, const DragEvent& event) override;
-    bool OnKeyAct(UIView& view, const KeyEvent& event) override;//增加按键事件
-    void ConfirmOnClick();
-    void RemovePair();
-    char* getWatchName();
-
-private:
-    char watchName[32];
-
-};
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: Connect Phone Presenter\r
+ * Create: 2022-01-19\r
+ */\r
+\r
+#ifndef CONNECT_PHONE_PRESENTER_H\r
+#define CONNECT_PHONE_PRESENTER_H\r
+\r
+#include "Presenter.h"\r
+#include "ConnectOpenView.h"\r
+#include "NativeLauncher.h"\r
+#include "NativeAbility.h"\r
+#include "BaseView.h"\r
+\r
+namespace OHOS {\r
+enum ConnectPhonePresenterNum : uint8_t {\r
+        CONNECTSELECTVIEW = 0,\r
+        CONNECTOPENVIEW,\r
+        CONNECTPHONE_MAX,\r
+};\r
+\r
+#define CANCEL_BUTTON "cancelButton"\r
+#define CONFIRM_BUTTON "confirmButton"\r
+#define CONNECT_OPEN_BACK_BUTTON "backButton"\r
+\r
+#define CONNECT_SELECT_VIEW "connectSelectView"\r
+#define CONNECT_OPEN_VIEW "connectOpenView"\r
+\r
+class ConnectPhoneView;\r
+class ConnectPhonePresenter : public Presenter<ConnectPhoneView>,\r
+                                 public UIView::OnClickListener,\r
+                                 public UIView::OnDragListener {\r
+public:\r
+    ConnectPhonePresenter();\r
+    ~ConnectPhonePresenter();\r
+    static ConnectPhonePresenter *GetInstance();\r
+    void OnStart() override;\r
+    void OnPause() override;\r
+    void OnResume() override;\r
+    void OnStop() override;\r
+    bool OnClick(UIView& view, const ClickEvent& event) override;\r
+    bool OnDrag(UIView& view, const DragEvent& event) override;\r
+    void ConfirmOnClick();\r
+    void RemovePair();\r
+    char* getWatchName();\r
+\r
+private:\r
+    char watchName[32];\r
+\r
+};\r
+} // namespace OHOS\r
 #endif
\ No newline at end of file
index dba3515..181506d 100644 (file)
@@ -1,41 +1,41 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: Connect Phone View
- * Create: 2022-01-19
- */
-
-#ifndef CONNECT_PHONE_VIEW_H
-#define CONNECT_PHONE_VIEW_H
-
-#include "View.h"
-#include "ConnectPhonePresenter.h"
-#include "ConnectSelectView.h"
-#include "AppGroupView.h"
-
-namespace OHOS {
-constexpr int16_t NUM_CONNECT_PHONE_CONTAINER = 2;
-
-class ConnectPhonePresenter;
-class ConnectPhoneView : public View<ConnectPhonePresenter> {
-public:
-    ConnectPhoneView();
-    ~ConnectPhoneView();
-    static ConnectPhoneView *GetInstance();
-    void OnStart() override;
-    void OnSetUpView() override;
-    void OnTearDownView() override;
-    void OnStop() override;
-    void ChangeView(int16_t hideView, int16_t showView);
-
-private:
-    bool ChangeConnectSelectView(int16_t hideView, int16_t thisView);
-    bool ChangeConnectOpenView(int16_t hideView, int16_t thisView);
-    bool CheckViewParam(int16_t hideView, int16_t showView);
-    ConnectSelectView *connectSelectView{nullptr};
-    ConnectOpenView *connectOpenView{nullptr};
-    UIViewGroup *container[NUM_CONNECT_PHONE_CONTAINER]{nullptr};
-    typedef bool (ConnectPhoneView::*PreprosssChangeView)(int16_t hideView, int16_t thisView);
-    PreprosssChangeView preProcessView[NUM_CONNECT_PHONE_CONTAINER];
-};
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: Connect Phone View\r
+ * Create: 2022-01-19\r
+ */\r
+\r
+#ifndef CONNECT_PHONE_VIEW_H\r
+#define CONNECT_PHONE_VIEW_H\r
+\r
+#include "View.h"\r
+#include "ConnectPhonePresenter.h"\r
+#include "ConnectSelectView.h"\r
+#include "AppGroupView.h"\r
+\r
+namespace OHOS {\r
+constexpr int16_t NUM_CONNECT_PHONE_CONTAINER = 2;\r
+\r
+class ConnectPhonePresenter;\r
+class ConnectPhoneView : public View<ConnectPhonePresenter> {\r
+public:\r
+    ConnectPhoneView();\r
+    ~ConnectPhoneView();\r
+    static ConnectPhoneView *GetInstance();\r
+    void OnStart() override;\r
+    void OnSetUpView() override;\r
+    void OnTearDownView() override;\r
+    void OnStop() override;\r
+    void ChangeView(int16_t hideView, int16_t showView);\r
+\r
+private:\r
+    bool ChangeConnectSelectView(int16_t hideView, int16_t thisView);\r
+    bool ChangeConnectOpenView(int16_t hideView, int16_t thisView);\r
+    bool CheckViewParam(int16_t hideView, int16_t showView);\r
+    ConnectSelectView *connectSelectView{nullptr};\r
+    ConnectOpenView *connectOpenView{nullptr};\r
+    UIViewGroup *container[NUM_CONNECT_PHONE_CONTAINER]{nullptr};\r
+    typedef bool (ConnectPhoneView::*PreprosssChangeView)(int16_t hideView, int16_t thisView);\r
+    PreprosssChangeView preProcessView[NUM_CONNECT_PHONE_CONTAINER];\r
+};\r
+} // namespace OHOS\r
 #endif // DISCONNECT_PHONE_VIEW_H
\ No newline at end of file
index 3c45fc8..48d9695 100644 (file)
@@ -1,33 +1,33 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: ConnectSelect View
- * Create: 2022-03-22
- */
-
-#ifndef CONNECT_SELECT_VIEW_H
-#define CONNECT_SELECT_VIEW_H
-
-#include "View.h"
-#include "ConnectPhonePresenter.h"
-#include "components/ui_label.h"
-#include "components/ui_button.h"
-#include "components/ui_view_group.h"
-
-namespace OHOS {
-class ConnectSelectView {
-public:
-    ConnectSelectView();
-    ~ConnectSelectView();
-    static ConnectSelectView *GetInstance();
-    UIViewGroup *InitShowUpView(void);
-
-private:
-    void ShowUpTitleLabel(void);
-    void CreateUIButton(void);
-    UILabel *titleLabel{nullptr};
-    UIButton *cancelButton{nullptr};
-    UIButton *confirmButton{nullptr};
-    UIViewGroup *group{nullptr};
-};
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: ConnectSelect View\r
+ * Create: 2022-03-22\r
+ */\r
+\r
+#ifndef CONNECT_SELECT_VIEW_H\r
+#define CONNECT_SELECT_VIEW_H\r
+\r
+#include "View.h"\r
+#include "ConnectPhonePresenter.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_button.h"\r
+#include "components/ui_view_group.h"\r
+\r
+namespace OHOS {\r
+class ConnectSelectView {\r
+public:\r
+    ConnectSelectView();\r
+    ~ConnectSelectView();\r
+    static ConnectSelectView *GetInstance();\r
+    UIViewGroup *InitShowUpView(void);\r
+\r
+private:\r
+    void ShowUpTitleLabel(void);\r
+    void CreateUIButton(void);\r
+    UILabel *titleLabel{nullptr};\r
+    UIButton *cancelButton{nullptr};\r
+    UIButton *confirmButton{nullptr};\r
+    UIViewGroup *group{nullptr};\r
+};\r
+} // namespace OHOS\r
 #endif // CONNECT_SELECT_VIEW_H
\ No newline at end of file
index ab8a65f..b68888a 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: ConnectOpen View
- * Create: 2022-03-22
- */
-#include "ConnectOpenView.h"
-#include "wearable_log.h"
-#include "UiConfig.h"
-#include "ConnectPhonePresenter.h"
-
-namespace OHOS {
-static ConnectOpenView *g_pConnectOpenView{nullptr};
-ConnectOpenView::ConnectOpenView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectOpenView::ConnectOpenView");
-    g_pConnectOpenView = this;
-}
-
-ConnectOpenView::~ConnectOpenView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectOpenView::~ConnectOpenView");
-    group->RemoveAll();
-    delete titleLabel;
-    titleLabel = nullptr;
-    delete backButton;
-    backButton = nullptr;
-    delete group;
-    group = nullptr;
-    delete tipImg;
-    tipImg = nullptr;
-    g_pConnectOpenView = nullptr;
-}
-
-ConnectOpenView *ConnectOpenView::GetInstance()
-{
-    return g_pConnectOpenView;
-}
-
-void ConnectOpenView::ShowUpBackView()
-{
-    if (watchNameLabel == nullptr) {
-        watchNameLabel = new UILabel();
-        if (watchNameLabel == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectOpenView watchNameLabel new fail");
-            return;
-        }
-        watchNameLabel->SetPosition(0, 165, HORIZONTAL_RESOLUTION, 45); // 0:x 244:y 454:width 45:height
-        watchNameLabel->SetText(ConnectPhonePresenter::GetInstance()->getWatchName());
-        watchNameLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data
-        watchNameLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);
-        watchNameLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,
-                             UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-        group->Add(watchNameLabel);
-    }
-
-    if (titleLabel == nullptr) {
-        titleLabel = new UILabel();
-        if (titleLabel == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectOpenView titleLabel new fail");
-            return;
-        }
-        titleLabel->SetPosition(0, 244, HORIZONTAL_RESOLUTION, 45); // 0:x 244:y 454:width 45:height
-        titleLabel->SetText("连接已打开");
-        titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data
-        titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);
-        titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,
-                             UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-        group->Add(titleLabel);
-    }
-    if (backButton == nullptr) {
-        backButton = new UILabelButton();
-        if (backButton == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectOpenView backButton new fail");
-            return;
-        }
-        UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::ConnectPhonePresenter::GetInstance();
-        if (clickListener == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");
-            return;
-        }
-        backButton->SetPosition(65, 359, 324, 101); // 65:x, 359:y, 324:width 101:height
-        backButton->SetText("确定");
-        backButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data
-        backButton->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);
-        backButton->SetViewId(CONNECT_OPEN_BACK_BUTTON);
-        backButton->SetTextColor(Color::Blue());
-        backButton->SetOnClickListener(clickListener);
-        group->Add(backButton);
-    }
-    if (tipImg == nullptr) {
-        tipImg = new UIImageView();
-        if (tipImg == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectOpenView tipImg new fail");
-            return;
-        }
-        tipImg->SetPosition(181, 58, 90, 90); // 181:x 58:y 90:width 90:height
-        tipImg->SetSrc(PNG_RIGHT);
-        group->Add(tipImg);
-    }
-    return;
-}
-
-UIViewGroup *ConnectOpenView::InitShowUpView(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectOpenView::ShowUpViewInit");
-    if (group == nullptr) {
-        group = new UIViewGroup();
-        if (group == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");
-            return nullptr;
-        }
-        group->SetPosition(0, 0);
-        group->SetWidth(HORIZONTAL_RESOLUTION);
-        group->SetHeight(VERTICAL_RESOLUTION);
-    }
-    ShowUpBackView();
-    //增加按键监听
-       RootView::OnKeyActListener*keyactListener = (RootView::OnKeyActListener*)OHOS::ConnectPhonePresenter::GetInstance();
-       RootView::GetInstance()->SetOnKeyActListener(keyactListener);
-
-    UIView::OnDragListener *tipsDragListener = (UIView::OnDragListener *)OHOS::ConnectPhonePresenter::GetInstance();
-    if (tipsDragListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsDragListener GetInstance fail");
-        return nullptr;
-    }
-    group->SetOnDragListener(tipsDragListener);
-    group->SetViewId(CONNECT_OPEN_VIEW);
-    group->SetDraggable(true);
-    group->SetTouchable(true);
-    return group;
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: ConnectOpen View\r
+ * Create: 2022-03-22\r
+ */\r
+#include "ConnectOpenView.h"\r
+#include "wearable_log.h"\r
+#include "UiConfig.h"\r
+#include "ConnectPhonePresenter.h"\r
+\r
+namespace OHOS {\r
+static ConnectOpenView *g_pConnectOpenView{nullptr};\r
+ConnectOpenView::ConnectOpenView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectOpenView::ConnectOpenView");\r
+    g_pConnectOpenView = this;\r
+}\r
+\r
+ConnectOpenView::~ConnectOpenView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectOpenView::~ConnectOpenView");\r
+    group->RemoveAll();\r
+    delete titleLabel;\r
+    titleLabel = nullptr;\r
+    delete backButton;\r
+    backButton = nullptr;\r
+    delete group;\r
+    group = nullptr;\r
+    delete tipImg;\r
+    tipImg = nullptr;\r
+    g_pConnectOpenView = nullptr;\r
+}\r
+\r
+ConnectOpenView *ConnectOpenView::GetInstance()\r
+{\r
+    return g_pConnectOpenView;\r
+}\r
+\r
+void ConnectOpenView::ShowUpBackView()\r
+{\r
+    if (watchNameLabel == nullptr) {\r
+        watchNameLabel = new UILabel();\r
+        if (watchNameLabel == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectOpenView watchNameLabel new fail");\r
+            return;\r
+        }\r
+        watchNameLabel->SetPosition(0, 165, HORIZONTAL_RESOLUTION, 45); // 0:x 244:y 454:width 45:height\r
+        watchNameLabel->SetText(ConnectPhonePresenter::GetInstance()->getWatchName());\r
+        watchNameLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data\r
+        watchNameLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+        watchNameLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+                             UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+        group->Add(watchNameLabel);\r
+    }\r
+\r
+    if (titleLabel == nullptr) {\r
+        titleLabel = new UILabel();\r
+        if (titleLabel == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectOpenView titleLabel new fail");\r
+            return;\r
+        }\r
+        titleLabel->SetPosition(0, 244, HORIZONTAL_RESOLUTION, 45); // 0:x 244:y 454:width 45:height\r
+        titleLabel->SetText("连接已打开");\r
+        titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data\r
+        titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+        titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+                             UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+        group->Add(titleLabel);\r
+    }\r
+    if (backButton == nullptr) {\r
+        backButton = new UILabelButton();\r
+        if (backButton == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectOpenView backButton new fail");\r
+            return;\r
+        }\r
+        UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::ConnectPhonePresenter::GetInstance();\r
+        if (clickListener == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
+            return;\r
+        }\r
+        backButton->SetPosition(65, 359, 324, 101); // 65:x, 359:y, 324:width 101:height\r
+        backButton->SetText("确定");\r
+        backButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data\r
+        backButton->SetImageSrc(PNG_NEW_DEVICE, PNG_NEW_DEVICE);\r
+        backButton->SetViewId(CONNECT_OPEN_BACK_BUTTON);\r
+        backButton->SetTextColor(Color::Blue());\r
+        backButton->SetOnClickListener(clickListener);\r
+        group->Add(backButton);\r
+    }\r
+    if (tipImg == nullptr) {\r
+        tipImg = new UIImageView();\r
+        if (tipImg == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectOpenView tipImg new fail");\r
+            return;\r
+        }\r
+        tipImg->SetPosition(181, 58, 90, 90); // 181:x 58:y 90:width 90:height\r
+        tipImg->SetSrc(PNG_RIGHT);\r
+        group->Add(tipImg);\r
+    }\r
+    return;\r
+}\r
+\r
+UIViewGroup *ConnectOpenView::InitShowUpView(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectOpenView::ShowUpViewInit");\r
+    if (group == nullptr) {\r
+        group = new UIViewGroup();\r
+        if (group == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
+            return nullptr;\r
+        }\r
+        group->SetPosition(0, 0);\r
+        group->SetWidth(HORIZONTAL_RESOLUTION);\r
+        group->SetHeight(VERTICAL_RESOLUTION);\r
+    }\r
+    ShowUpBackView();\r
+    UIView::OnDragListener *tipsDragListener = (UIView::OnDragListener *)OHOS::ConnectPhonePresenter::GetInstance();\r
+    if (tipsDragListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "tipsDragListener GetInstance fail");\r
+        return nullptr;\r
+    }\r
+    group->SetOnDragListener(tipsDragListener);\r
+    group->SetViewId(CONNECT_OPEN_VIEW);\r
+    group->SetDraggable(true);\r
+    group->SetTouchable(true);\r
+    return group;\r
+}\r
 }
\ No newline at end of file
index a7e04c6..6701405 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: Connect Phone Presenter
- * Create: 2022-01-19
- */
-
-#include "ConnectPhonePresenter.h"
-#include "ConnectPhoneView.h"
-#include "BluetoothModel.h"
-#include "bts_br_gap.h"
-#include "bts_le_gap.h"
-#include "drag_event.h"
-#include "cmsis_os.h"
-#include "tcxo.h"
-#include "UiConfig.h"
-#include "wearable_log.h"
-
-namespace OHOS {
-
-static ConnectPhonePresenter *g_pConnectPhonePresenter = nullptr;
-
-ConnectPhonePresenter::ConnectPhonePresenter()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhonePresenter::ConnectPhonePresenter");
-    g_pConnectPhonePresenter = this;
-}
-
-ConnectPhonePresenter::~ConnectPhonePresenter()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhonePresenter::~ConnectPhonePresenter");
-    g_pConnectPhonePresenter = nullptr;
-}
-
-ConnectPhonePresenter *ConnectPhonePresenter::GetInstance()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhonePresenter GetInstance");
-    return g_pConnectPhonePresenter;
-}
-
-void ConnectPhonePresenter::OnStart()
-{
-    Presenter<ConnectPhoneView>::OnStart();
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhonePresenter::On Start ");
-}
-
-void ConnectPhonePresenter::OnPause(void) {}
-
-void ConnectPhonePresenter::OnResume(void) {}
-
-void ConnectPhonePresenter::OnStop(void) {}
-
-bool ConnectPhonePresenter::OnClick(UIView& view, const ClickEvent& event)
-{
-    UNUSED(event);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnClick OnClick");
-    if (strcmp(view.GetViewId(), CANCEL_BUTTON) == 0) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CANCEL_BUTTON OnClick");
-        NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);
-    } else if (strcmp(view.GetViewId(), CONFIRM_BUTTON) == 0) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CONFIRM_BUTTON OnClick");
-        RemovePair();
-        ConfirmOnClick();
-        if (ConnectPhoneView::GetInstance() == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::GetInstance() nullptr");
-            return false;
-        }
-        ConnectPhoneView::GetInstance()->ChangeView(CONNECTSELECTVIEW, CONNECTOPENVIEW);
-    } else if (strcmp(view.GetViewId(), CONNECT_OPEN_BACK_BUTTON) == 0) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CONNECT_OPEN_BACK_BUTTON OnClick");
-        NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);
-    }
-    return true;
-}
-
-void ConnectPhonePresenter::RemovePair()
-{
-    unsigned int connedDevicesNum = 0;
-
-    bool ret = gap_get_paired_devices_num(&connedDevicesNum);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Setup GetPariedDevicesNum ret = %d, num = %d", ret, connedDevicesNum);
-
-    if (connedDevicesNum != 0) {
-        gap_paired_device_info_t *devInfo = (gap_paired_device_info_t *)malloc(sizeof(gap_paired_device_info_t) * connedDevicesNum);
-        if (devInfo == NULL) {
-            return;
-        }
-        ret = gap_get_paired_devices_list(devInfo, (int *)&connedDevicesNum);
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RemovePair gap_get_paired_devices_list ret = %d", ret);
-
-        for (int i = 0; i < static_cast<int>(connedDevicesNum); ++i) {
-            if ((gap_get_device_class((const bd_addr_t *)devInfo[i].addr.addr) & 0x200) != 0) {
-                gap_remove_pair((const bd_addr_t *)devInfo[i].addr.addr);
-                continue;
-            }
-        }
-        free(devInfo);
-    }
-}
-
-void ConnectPhonePresenter::ConfirmOnClick()
-{
-    bool ret;
-
-    memset_s(watchName, sizeof(watchName), 0, sizeof(watchName));
-    (void)sprintf_s(watchName, sizeof(watchName), "Watch%x", ((uint32_t)uapi_tcxo_get_us() & 0xFFFF));
-
-    ret = bluetooth_set_local_name((unsigned char*)watchName, strlen((char*)watchName) + 1);
-    if (ret == false) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectPhonePresenter: bt SetLocalName ret = 0x%x", ret);
-    }
-
-    ret = gap_br_set_bt_scan_mode(GAP_SCAN_MODE_CONNECTABLE_GENERAL_DISCOVERABLE, 60); // start scan
-    if (ret == false) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectPhonePresenter bt gap_br_set_bt_scan_mode ret = 0x%x", ret);
-    }
-
-#ifndef SUPPORT_ALIPAY_SEC
-    BleAdvStart();
-#endif
-}
-
-bool ConnectPhonePresenter::OnDrag(UIView& view, const DragEvent& event)
-{
-    std::string viewId = view.GetViewId();
-
-    if ((viewId == CONNECT_SELECT_VIEW) || (viewId == CONNECT_OPEN_VIEW)) {
-        if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhonePresenter::OnDrag");
-            NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);
-        }
-    }
-    return true;
-}
-//增加按键事件
-bool ConnectPhonePresenter::OnKeyAct(UIView& view, const KeyEvent& event)
-{
-    uint16 keyID = event.GetKeyId();
-    WEARABLE_LOGD("","into key! keyID %u\n",keyID);
-#if 0
-    //如果是power键就返回上一级
-    if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER))
-    {
-        uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
-        NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
-    }
-#endif
-    //目前只有一个按键。直接切换
-    uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
-    NativeAbility::GetInstance().ChangeSlice(preSlice);
-    return true;
-}
-char* ConnectPhonePresenter::getWatchName()
-{
-    return watchName;
-}
-
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: Connect Phone Presenter\r
+ * Create: 2022-01-19\r
+ */\r
+\r
+#include "ConnectPhonePresenter.h"\r
+#include "ConnectPhoneView.h"\r
+#include "BluetoothModel.h"\r
+#include "bts_br_gap.h"\r
+#include "bts_le_gap.h"\r
+#include "drag_event.h"\r
+#include "cmsis_os.h"\r
+#include "tcxo.h"\r
+#include "UiConfig.h"\r
+#include "wearable_log.h"\r
+\r
+namespace OHOS {\r
+\r
+static ConnectPhonePresenter *g_pConnectPhonePresenter = nullptr;\r
+\r
+ConnectPhonePresenter::ConnectPhonePresenter()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhonePresenter::ConnectPhonePresenter");\r
+    g_pConnectPhonePresenter = this;\r
+}\r
+\r
+ConnectPhonePresenter::~ConnectPhonePresenter()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhonePresenter::~ConnectPhonePresenter");\r
+    g_pConnectPhonePresenter = nullptr;\r
+}\r
+\r
+ConnectPhonePresenter *ConnectPhonePresenter::GetInstance()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhonePresenter GetInstance");\r
+    return g_pConnectPhonePresenter;\r
+}\r
+\r
+void ConnectPhonePresenter::OnStart()\r
+{\r
+    Presenter<ConnectPhoneView>::OnStart();\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhonePresenter::On Start ");\r
+}\r
+\r
+void ConnectPhonePresenter::OnPause(void) {}\r
+\r
+void ConnectPhonePresenter::OnResume(void) {}\r
+\r
+void ConnectPhonePresenter::OnStop(void) {}\r
+\r
+bool ConnectPhonePresenter::OnClick(UIView& view, const ClickEvent& event)\r
+{\r
+    UNUSED(event);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnClick OnClick");\r
+    if (strcmp(view.GetViewId(), CANCEL_BUTTON) == 0) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CANCEL_BUTTON OnClick");\r
+        NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);\r
+    } else if (strcmp(view.GetViewId(), CONFIRM_BUTTON) == 0) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CONFIRM_BUTTON OnClick");\r
+        RemovePair();\r
+        ConfirmOnClick();\r
+        if (ConnectPhoneView::GetInstance() == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::GetInstance() nullptr");\r
+            return false;\r
+        }\r
+        ConnectPhoneView::GetInstance()->ChangeView(CONNECTSELECTVIEW, CONNECTOPENVIEW);\r
+    } else if (strcmp(view.GetViewId(), CONNECT_OPEN_BACK_BUTTON) == 0) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CONNECT_OPEN_BACK_BUTTON OnClick");\r
+        NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);\r
+    }\r
+    return true;\r
+}\r
+\r
+void ConnectPhonePresenter::RemovePair()\r
+{\r
+    unsigned int connedDevicesNum = 0;\r
+\r
+    bool ret = gap_get_paired_devices_num(&connedDevicesNum);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Setup GetPariedDevicesNum ret = %d, num = %d", ret, connedDevicesNum);\r
+\r
+    if (connedDevicesNum != 0) {\r
+        gap_paired_device_info_t *devInfo = (gap_paired_device_info_t *)malloc(sizeof(gap_paired_device_info_t) * connedDevicesNum);\r
+        if (devInfo == NULL) {\r
+            return;\r
+        }\r
+        ret = gap_get_paired_devices_list(devInfo, (int *)&connedDevicesNum);\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "RemovePair gap_get_paired_devices_list ret = %d", ret);\r
+\r
+        for (int i = 0; i < static_cast<int>(connedDevicesNum); ++i) {\r
+            if ((gap_get_device_class((const bd_addr_t *)devInfo[i].addr.addr) & 0x200) != 0) {\r
+                gap_remove_pair((const bd_addr_t *)devInfo[i].addr.addr);\r
+                continue;\r
+            }\r
+        }\r
+        free(devInfo);\r
+    }\r
+}\r
+\r
+void ConnectPhonePresenter::ConfirmOnClick()\r
+{\r
+    bool ret;\r
+\r
+    memset_s(watchName, sizeof(watchName), 0, sizeof(watchName));\r
+    (void)sprintf_s(watchName, sizeof(watchName), "Watch%x", ((uint32_t)uapi_tcxo_get_us() & 0xFFFF));\r
+\r
+    ret = bluetooth_set_local_name((unsigned char*)watchName, strlen((char*)watchName) + 1);\r
+    if (ret == false) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectPhonePresenter: bt SetLocalName ret = 0x%x", ret);\r
+    }\r
+\r
+    ret = gap_br_set_bt_scan_mode(GAP_SCAN_MODE_CONNECTABLE_GENERAL_DISCOVERABLE, 60); // start scan\r
+    if (ret == false) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectPhonePresenter bt gap_br_set_bt_scan_mode ret = 0x%x", ret);\r
+    }\r
+#ifndef SUPPORT_ALIPAY_SEC\r
+    BleAdvStart();\r
+#endif\r
+}\r
+\r
+bool ConnectPhonePresenter::OnDrag(UIView& view, const DragEvent& event)\r
+{\r
+    std::string viewId = view.GetViewId();\r
+\r
+    if ((viewId == CONNECT_SELECT_VIEW) || (viewId == CONNECT_OPEN_VIEW)) {\r
+        if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhonePresenter::OnDrag");\r
+            NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);\r
+        }\r
+    }\r
+    return true;\r
+}\r
+\r
+char* ConnectPhonePresenter::getWatchName()\r
+{\r
+    return watchName;\r
+}\r
+\r
 }
\ No newline at end of file
index f4c3531..0738e4b 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: Connect Phone View
- * Create: 2022-01-19
- */
-
-#include "ConnectPhoneView.h"
-#include "components/ui_label.h"
-#include "wearable_log.h"
-#include "UiConfig.h"
-
-namespace OHOS {
-static ConnectPhoneView *g_pConnectPhoneView{nullptr};
-
-ConnectPhoneView::ConnectPhoneView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::ConnectPhoneView");
-    preProcessView[CONNECTSELECTVIEW] = &ConnectPhoneView::ChangeConnectSelectView;
-    preProcessView[CONNECTOPENVIEW] = &ConnectPhoneView::ChangeConnectOpenView;
-    g_pConnectPhoneView = this;
-}
-
-ConnectPhoneView::~ConnectPhoneView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::~ConnectPhoneView");
-    g_pConnectPhoneView = nullptr;
-}
-
-ConnectPhoneView *ConnectPhoneView::GetInstance()
-{
-    return g_pConnectPhoneView;
-}
-
-void ConnectPhoneView::OnStart()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::~OnStart");
-    View<ConnectPhonePresenter>::OnStart();
-    BaseView::RootView(Color::Black().full);
-    ChangeView(CONNECTPHONE_MAX, CONNECTSELECTVIEW);
-    RootView::GetInstance()->Invalidate();
-    return;
-}
-
-void ConnectPhoneView::OnSetUpView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::~OnSetUpView");
-    View<ConnectPhonePresenter>::OnSetUpView();
-    Draw();
-}
-
-void ConnectPhoneView::OnTearDownView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::~OnTearDownView");
-    View<ConnectPhonePresenter>::OnTearDownView();
-    return;
-}
-
-void ConnectPhoneView::OnStop()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::~OnStop");
-    View<ConnectPhonePresenter>::OnStop();
-    if (container_ != nullptr) {
-        container_->RemoveAll();
-        delete container_;
-        container_ = nullptr;
-    }
-    RootView::GetInstance()->ClearOnKeyActListener();
-    RootView::GetInstance()->RemoveAll();
-    return;
-}
-
-bool ConnectPhoneView::ChangeConnectSelectView(int16_t hideView, int16_t thisView)
-{
-    UNUSED(hideView);
-    if (container[thisView] == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeConnectSelectView");
-        connectSelectView = new ConnectSelectView();
-        if (connectSelectView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "connectSelectView new fail");
-            return false;
-        }
-        // init view
-        UIViewGroup *group = connectSelectView->InitShowUpView();
-        if (group == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");
-            return false;
-        }
-        container[thisView] = group;
-        RootView::GetInstance()->Add(container[thisView]);
-    }
-    return true;
-}
-
-bool ConnectPhoneView::ChangeConnectOpenView(int16_t hideView, int16_t thisView)
-{
-    UNUSED(hideView);
-    if (container[thisView] == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeConnectOpenView");
-        connectOpenView = new ConnectOpenView();
-        if (connectOpenView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "connectOpenView new fail");
-            return false;
-        }
-        // init view
-        UIViewGroup *group = connectOpenView->InitShowUpView();
-        if (group == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");
-            return false;
-        }
-        container[thisView] = group;
-        RootView::GetInstance()->Add(container[thisView]);
-    }
-    return true;
-}
-
-bool ConnectPhoneView::CheckViewParam(int16_t hideView, int16_t showView)
-{
-    if (showView < 0 || showView >= CONNECTPHONE_MAX) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::CheckViewParam showView err.");
-        return false;
-    }
-
-    if (hideView < 0 || hideView > CONNECTPHONE_MAX) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::CheckViewParam hideView err.");
-        return false;
-    }
-
-    return true;
-}
-
-void ConnectPhoneView::ChangeView(int16_t hideView, int16_t showView)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::ChangeView %d, %d", hideView, showView);
-
-    if (CheckViewParam(hideView, showView) == false) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::CheckViewParam failed.");
-        return;
-    }
-
-    PreprosssChangeView tmpPreProcessView = preProcessView[showView];
-
-    if ((this->*tmpPreProcessView)(hideView, showView) == false) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::ChangeView %d %dfailed", showView, hideView);
-        return;
-    }
-    if (hideView != CONNECTPHONE_MAX) {
-        if (container[hideView] == nullptr) {
-            return;
-        }
-        container[hideView]->SetVisible(false);
-    }
-    container[showView]->SetVisible(true);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView:: ChangeView end!!!%d", showView);
-    RootView::GetInstance()->Invalidate();
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: Connect Phone View\r
+ * Create: 2022-01-19\r
+ */\r
+\r
+#include "ConnectPhoneView.h"\r
+#include "components/ui_label.h"\r
+#include "wearable_log.h"\r
+#include "UiConfig.h"\r
+\r
+namespace OHOS {\r
+static ConnectPhoneView *g_pConnectPhoneView{nullptr};\r
+\r
+ConnectPhoneView::ConnectPhoneView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::ConnectPhoneView");\r
+    preProcessView[CONNECTSELECTVIEW] = &ConnectPhoneView::ChangeConnectSelectView;\r
+    preProcessView[CONNECTOPENVIEW] = &ConnectPhoneView::ChangeConnectOpenView;\r
+    g_pConnectPhoneView = this;\r
+}\r
+\r
+ConnectPhoneView::~ConnectPhoneView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::~ConnectPhoneView");\r
+    g_pConnectPhoneView = nullptr;\r
+}\r
+\r
+ConnectPhoneView *ConnectPhoneView::GetInstance()\r
+{\r
+    return g_pConnectPhoneView;\r
+}\r
+\r
+void ConnectPhoneView::OnStart()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::~OnStart");\r
+    View<ConnectPhonePresenter>::OnStart();\r
+    BaseView::RootView(Color::Black().full);\r
+    ChangeView(CONNECTPHONE_MAX, CONNECTSELECTVIEW);\r
+    RootView::GetInstance()->Invalidate();\r
+    return;\r
+}\r
+\r
+void ConnectPhoneView::OnSetUpView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::~OnSetUpView");\r
+    View<ConnectPhonePresenter>::OnSetUpView();\r
+    Draw();\r
+}\r
+\r
+void ConnectPhoneView::OnTearDownView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::~OnTearDownView");\r
+    View<ConnectPhonePresenter>::OnTearDownView();\r
+    return;\r
+}\r
+\r
+void ConnectPhoneView::OnStop()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::~OnStop");\r
+    View<ConnectPhonePresenter>::OnStop();\r
+    if (container_ != nullptr) {\r
+        container_->RemoveAll();\r
+        delete container_;\r
+        container_ = nullptr;\r
+    }\r
+    RootView::GetInstance()->ClearOnKeyActListener();\r
+    RootView::GetInstance()->RemoveAll();\r
+    return;\r
+}\r
+\r
+bool ConnectPhoneView::ChangeConnectSelectView(int16_t hideView, int16_t thisView)\r
+{\r
+    UNUSED(hideView);\r
+    if (container[thisView] == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeConnectSelectView");\r
+        connectSelectView = new ConnectSelectView();\r
+        if (connectSelectView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "connectSelectView new fail");\r
+            return false;\r
+        }\r
+        // init view\r
+        UIViewGroup *group = connectSelectView->InitShowUpView();\r
+        if (group == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
+            return false;\r
+        }\r
+        container[thisView] = group;\r
+        RootView::GetInstance()->Add(container[thisView]);\r
+    }\r
+    return true;\r
+}\r
+\r
+bool ConnectPhoneView::ChangeConnectOpenView(int16_t hideView, int16_t thisView)\r
+{\r
+    UNUSED(hideView);\r
+    if (container[thisView] == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeConnectOpenView");\r
+        connectOpenView = new ConnectOpenView();\r
+        if (connectOpenView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "connectOpenView new fail");\r
+            return false;\r
+        }\r
+        // init view\r
+        UIViewGroup *group = connectOpenView->InitShowUpView();\r
+        if (group == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
+            return false;\r
+        }\r
+        container[thisView] = group;\r
+        RootView::GetInstance()->Add(container[thisView]);\r
+    }\r
+    return true;\r
+}\r
+\r
+bool ConnectPhoneView::CheckViewParam(int16_t hideView, int16_t showView)\r
+{\r
+    if (showView < 0 || showView >= CONNECTPHONE_MAX) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::CheckViewParam showView err.");\r
+        return false;\r
+    }\r
+\r
+    if (hideView < 0 || hideView > CONNECTPHONE_MAX) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::CheckViewParam hideView err.");\r
+        return false;\r
+    }\r
+\r
+    return true;\r
+}\r
+\r
+void ConnectPhoneView::ChangeView(int16_t hideView, int16_t showView)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::ChangeView %d, %d", hideView, showView);\r
+\r
+    if (CheckViewParam(hideView, showView) == false) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::CheckViewParam failed.");\r
+        return;\r
+    }\r
+\r
+    PreprosssChangeView tmpPreProcessView = preProcessView[showView];\r
+\r
+    if ((this->*tmpPreProcessView)(hideView, showView) == false) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView::ChangeView %d %dfailed", showView, hideView);\r
+        return;\r
+    }\r
+    if (hideView != CONNECTPHONE_MAX) {\r
+        if (container[hideView] == nullptr) {\r
+            return;\r
+        }\r
+        container[hideView]->SetVisible(false);\r
+    }\r
+    container[showView]->SetVisible(true);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectPhoneView:: ChangeView end!!!%d", showView);\r
+    RootView::GetInstance()->Invalidate();\r
+}\r
 }
\ No newline at end of file
index b4d6398..296c088 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: ConnectSelect View
- * Create: 2022-03-22
- */
-#include "ConnectSelectView.h"
-#include "wearable_log.h"
-#include "UiConfig.h"
-#include "ConnectPhonePresenter.h"
-
-namespace OHOS {
-static ConnectSelectView *g_pConnectSelectView{nullptr};
-
-ConnectSelectView::ConnectSelectView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectSelectView::ConnectSelectView");
-    g_pConnectSelectView = this;
-}
-
-ConnectSelectView::~ConnectSelectView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectSelectView::~ConnectSelectView");
-    group->RemoveAll();
-    delete titleLabel;
-    titleLabel = nullptr;
-    delete cancelButton;
-    cancelButton = nullptr;
-    delete confirmButton;
-    confirmButton = nullptr;
-    g_pConnectSelectView = nullptr;
-}
-
-ConnectSelectView *ConnectSelectView::GetInstance()
-{
-    return g_pConnectSelectView;
-}
-
-void ConnectSelectView::ShowUpTitleLabel()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectSelectView::ShowUpTitleLabel");
-    if (titleLabel == nullptr) {
-        titleLabel = new UILabel();
-        if (titleLabel == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectSelectView titleLabel new fail");
-            return;
-        }
-        titleLabel->SetPosition(65, 100, 324, 160); // 65:x, 100:y, 324:width, 160:height
-        titleLabel->SetText(" 将断开已连接的手 机,同一账号的新手机配对会保留个人数 据。是否继续?");
-        titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 35); // 35:font data
-        titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);
-        titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,
-                             UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-        titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
-        group->Add(titleLabel);
-    }
-}
-
-void ConnectSelectView::CreateUIButton()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectSelectView::CreateUIButton");
-    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::ConnectPhonePresenter::GetInstance();
-    if (clickListener == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener nullptr");
-            return;
-    }
-    if (cancelButton == nullptr) {
-        cancelButton = new UIButton();
-        if (cancelButton == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectSelectView cancelButton new fail");
-            return;
-        }
-        cancelButton->SetPosition(85, 320, 90, 90); // 85:x, 320:y, 90:width, 90:height
-        cancelButton->SetViewId(CANCEL_BUTTON);
-        cancelButton->SetImageSrc(ALARM_DELETE_ADD_PATH, ALARM_DELETE_ADD_PATH);
-        cancelButton->SetOnClickListener(clickListener);
-        group->Add(cancelButton);
-    }
-    if (confirmButton == nullptr) {
-        confirmButton = new UIButton();
-        if (confirmButton == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectSelectView confirmButton new fail");
-            return;
-        }
-        confirmButton->SetPosition(279, 320, 90, 90); // 279:x, 320:y, 90:width, 90:height
-        confirmButton->SetViewId(CONFIRM_BUTTON);
-        confirmButton->SetImageSrc(ALARM_TRUE_ADD_PATH, ALARM_TRUE_ADD_PATH);
-        confirmButton->SetOnClickListener(clickListener);
-        group->Add(confirmButton);
-    }
-}
-
-UIViewGroup *ConnectSelectView::InitShowUpView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectSelectView init");
-    if (group == nullptr) {
-        group = new UIViewGroup();
-        if (group == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");
-            return nullptr;
-        }
-        group->SetPosition(0, 0);
-        group->SetWidth(HORIZONTAL_RESOLUTION);
-        group->SetHeight(VERTICAL_RESOLUTION);
-    }
-    ShowUpTitleLabel();
-    CreateUIButton();
-    //增加按键监听
-       RootView::OnKeyActListener*keyactListener = (RootView::OnKeyActListener*)OHOS::ConnectPhonePresenter::GetInstance();
-       RootView::GetInstance()->SetOnKeyActListener(keyactListener);
-
-    UIView::OnDragListener *connectDragListener = (UIView::OnDragListener *)OHOS::ConnectPhonePresenter::GetInstance();
-    if (connectDragListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "connectDragListener GetInstance fail");
-        return nullptr;
-    }
-    group->SetOnDragListener(connectDragListener);
-    group->SetViewId(CONNECT_SELECT_VIEW);
-    group->SetDraggable(true);
-    group->SetTouchable(true);
-    return group;
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: ConnectSelect View\r
+ * Create: 2022-03-22\r
+ */\r
+#include "ConnectSelectView.h"\r
+#include "wearable_log.h"\r
+#include "UiConfig.h"\r
+#include "ConnectPhonePresenter.h"\r
+\r
+namespace OHOS {\r
+static ConnectSelectView *g_pConnectSelectView{nullptr};\r
+\r
+ConnectSelectView::ConnectSelectView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectSelectView::ConnectSelectView");\r
+    g_pConnectSelectView = this;\r
+}\r
+\r
+ConnectSelectView::~ConnectSelectView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectSelectView::~ConnectSelectView");\r
+    group->RemoveAll();\r
+    delete titleLabel;\r
+    titleLabel = nullptr;\r
+    delete cancelButton;\r
+    cancelButton = nullptr;\r
+    delete confirmButton;\r
+    confirmButton = nullptr;\r
+    g_pConnectSelectView = nullptr;\r
+}\r
+\r
+ConnectSelectView *ConnectSelectView::GetInstance()\r
+{\r
+    return g_pConnectSelectView;\r
+}\r
+\r
+void ConnectSelectView::ShowUpTitleLabel()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectSelectView::ShowUpTitleLabel");\r
+    if (titleLabel == nullptr) {\r
+        titleLabel = new UILabel();\r
+        if (titleLabel == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectSelectView titleLabel new fail");\r
+            return;\r
+        }\r
+        titleLabel->SetPosition(65, 100, 324, 160); // 65:x, 100:y, 324:width, 160:height\r
+        titleLabel->SetText(" 将断开已连接的手 机,同一账号的新手机配对会保留个人数 据。是否继续?");\r
+        titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 35); // 35:font data\r
+        titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+        titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+                             UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+        titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
+        group->Add(titleLabel);\r
+    }\r
+}\r
+\r
+void ConnectSelectView::CreateUIButton()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectSelectView::CreateUIButton");\r
+    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::ConnectPhonePresenter::GetInstance();\r
+    if (clickListener == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener nullptr");\r
+            return;\r
+    }\r
+    if (cancelButton == nullptr) {\r
+        cancelButton = new UIButton();\r
+        if (cancelButton == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectSelectView cancelButton new fail");\r
+            return;\r
+        }\r
+        cancelButton->SetPosition(85, 320, 90, 90); // 85:x, 320:y, 90:width, 90:height\r
+        cancelButton->SetViewId(CANCEL_BUTTON);\r
+        cancelButton->SetImageSrc(ALARM_DELETE_ADD_PATH, ALARM_DELETE_ADD_PATH);\r
+        cancelButton->SetOnClickListener(clickListener);\r
+        group->Add(cancelButton);\r
+    }\r
+    if (confirmButton == nullptr) {\r
+        confirmButton = new UIButton();\r
+        if (confirmButton == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectSelectView confirmButton new fail");\r
+            return;\r
+        }\r
+        confirmButton->SetPosition(279, 320, 90, 90); // 279:x, 320:y, 90:width, 90:height\r
+        confirmButton->SetViewId(CONFIRM_BUTTON);\r
+        confirmButton->SetImageSrc(ALARM_TRUE_ADD_PATH, ALARM_TRUE_ADD_PATH);\r
+        confirmButton->SetOnClickListener(clickListener);\r
+        group->Add(confirmButton);\r
+    }\r
+}\r
+\r
+UIViewGroup *ConnectSelectView::InitShowUpView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ConnectSelectView init");\r
+    if (group == nullptr) {\r
+        group = new UIViewGroup();\r
+        if (group == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
+            return nullptr;\r
+        }\r
+        group->SetPosition(0, 0);\r
+        group->SetWidth(HORIZONTAL_RESOLUTION);\r
+        group->SetHeight(VERTICAL_RESOLUTION);\r
+    }\r
+    ShowUpTitleLabel();\r
+    CreateUIButton();\r
+    UIView::OnDragListener *connectDragListener = (UIView::OnDragListener *)OHOS::ConnectPhonePresenter::GetInstance();\r
+    if (connectDragListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "connectDragListener GetInstance fail");\r
+        return nullptr;\r
+    }\r
+    group->SetOnDragListener(connectDragListener);\r
+    group->SetViewId(CONNECT_SELECT_VIEW);\r
+    group->SetDraggable(true);\r
+    group->SetTouchable(true);\r
+    return group;\r
+}\r
 }
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/dial/include/DialPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/dial/include/DialPresenter.h
deleted file mode 100644 (file)
index 69d34ea..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/*** \r
- * @Author: Caisking 3449750381@qq.com\r
- * @Date: 2024-01-17 19:23:30\r
- * @LastEditors: Caisking 3449750381@qq.com\r
- * @LastEditTime: 2024-01-19 16:02:49\r
- * @FilePath: /FD230/code/sdk/application/wearable/nativeapp/nativeui/dial/include/DialPresenter.h\r
- * @Description: \r
- * @\r
- * @Copyright (c) 2024 by Caisking , All Rights Reserved. \r
- */\r
-#ifndef _Dial_PRESENTER_H\r
-#define _Dial_PRESENTER_H\r
-\r
-#include "Presenter.h"\r
-#include "DialView.h"\r
-#include "dial/include/Digital_clockView.h"\r
-\r
-namespace OHOS\r
-{\r
-    class DialView;\r
-\r
-    class DialPresenter : public Presenter<DialView>,\r
-                          public UIView::OnClickListener,\r
-                          public UIView::OnDragListener\r
-    {\r
-    public:\r
-        DialPresenter();\r
-        virtual ~DialPresenter();\r
-\r
-        void OnStart() override;\r
-        void OnPause() override;\r
-        void OnResume() override;\r
-        void OnStop() override;\r
-\r
-        static DialPresenter *GetInstance();\r
-        int WatchFacenum = 0;\r
-\r
-    private:\r
-        Digital_clockView *g_pDigital_clockView{nullptr};\r
-        DialView *g_pDialView{nullptr};\r
-        // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;\r
-        bool OnClick(UIView &view, const ClickEvent &event) override;\r
-        bool OnDrag(UIView &view, const DragEvent &event) override;\r
-    };\r
-} // namespace OHOS\r
-\r
-#endif // SLEEPDETAIL_PRESENTER_H
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/dial/include/DialSetupView.h b/code/sdk/application/wearable/fd230app/nativeui/dial/include/DialSetupView.h
deleted file mode 100644 (file)
index ebd9bcc..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-#ifndef _DIALSETUP_VIEW_H\r
-#define _DIALSETUP_VIEW_H\r
-\r
-#include "BaseView.h"\r
-#include "View.h"\r
-#include <ui_scroll_view.h>\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_button.h"\r
-\r
-// #include "DialSetupPresenter.h"\r
-namespace OHOS\r
-{\r
-    class DialSetupPresenter;\r
-    class DialSetupView : public View<DialSetupPresenter>\r
-    {\r
-\r
-    public:\r
-        DialSetupView();\r
-        virtual ~DialSetupView();\r
-        static DialSetupView *GetInstance(void);\r
-\r
-        void OnStart() override;\r
-        void OnSetUpView() override;\r
-        void OnTearDownView() override;\r
-        void OnStop() override;\r
-        void Init();\r
-        void DeInit();\r
-        UIView *GetView();\r
-\r
-    private:\r
-        UIView::OnDragListener *draglistener{nullptr};\r
-        // 以下控件属性通过new实例化后,add到对应root属性上;\r
-        DialSetupView(DialSetupView &&) = delete;\r
-        DialSetupView &operator=(DialSetupView &&) = delete;\r
-        \r
-        UIViewGroup *container_ = nullptr;\r
-        UILabel *label1_ = nullptr;\r
-        UIImageView *image2_ = nullptr;\r
-        UILabel *label2_ = nullptr;\r
-        UIImageView *image1_ = nullptr;\r
-    };\r
-} // namespace OHOS\r
-#endif // DialSetup_PRESENTER_H\r
diff --git a/code/sdk/application/wearable/fd230app/nativeui/dial/include/DialSuccesView.h b/code/sdk/application/wearable/fd230app/nativeui/dial/include/DialSuccesView.h
deleted file mode 100644 (file)
index 8839f42..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-#ifndef _DIALSUCCES_VIEW_H\r
-#define _DIALSUCCES_VIEW_H\r
-\r
-#include "BaseView.h"\r
-#include "View.h"\r
-#include <ui_scroll_view.h>\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_button.h"\r
-\r
-// #include "DialSuccesPresenter.h"\r
-namespace OHOS\r
-{\r
-    class DialSuccesPresenter;\r
-    class DialSuccesView : public View<DialSuccesPresenter>\r
-    {\r
-\r
-    public:\r
-        DialSuccesView();\r
-        virtual ~DialSuccesView();\r
-        static DialSuccesView *GetInstance(void);\r
-\r
-        void OnStart() override;\r
-        void OnSetUpView() override;\r
-        void OnTearDownView() override;\r
-        void OnStop() override;\r
-        void Init();\r
-        void DeInit();\r
-        UIView *GetView();\r
-\r
-    private:\r
-        UIView::OnDragListener *draglistener{nullptr};\r
-        // 以下控件属性通过new实例化后,add到对应root属性上;\r
-        DialSuccesView(DialSuccesView &&) = delete;\r
-        DialSuccesView &operator=(DialSuccesView &&) = delete;\r
-\r
-        UIViewGroup *container_ = nullptr;\r
-        UILabel *label1_ = nullptr;\r
-        UIImageView *image1_ = nullptr;\r
-        UILabel *label2_ = nullptr;\r
-    };\r
-} // namespace OHOS\r
-#endif // DialSucces_PRESENTER_H\r
diff --git a/code/sdk/application/wearable/fd230app/nativeui/dial/include/DialView.h b/code/sdk/application/wearable/fd230app/nativeui/dial/include/DialView.h
deleted file mode 100644 (file)
index 8d759cd..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/***\r
- * @Author: Caisking 3449750381@qq.com\r
- * @Date: 2024-01-17 19:23:30\r
- * @LastEditors: Caisking 3449750381@qq.com\r
- * @LastEditTime: 2024-01-19 17:10:03\r
- * @FilePath: /FD230/code/sdk/application/wearable/nativeapp/nativeui/dial/include/DialView.h\r
- * @Description:\r
- * @\r
- * @Copyright (c) 2024 by Caisking , All Rights Reserved.\r
- */\r
-\r
-#ifndef _Dial_VIEW_H\r
-#define _Dial_VIEW_H\r
-\r
-#include "BaseView.h"\r
-#include "View.h"\r
-#include <ui_scroll_view.h>\r
-#include "components/ui_view_group.h"\r
-#include "components/ui_label.h"\r
-#include "components/ui_image_view.h"\r
-#include "components/ui_button.h"\r
-#include "components/ui_image_animator.h"\r
-#include "components/ui_label_button_ext.h"\r
-\r
-#include "DialPresenter.h"\r
-namespace OHOS\r
-{\r
-\r
-    class DialPresenter;\r
-    class DialView : public View<DialPresenter>\r
-    {\r
-\r
-    public:\r
-        DialView();\r
-        virtual ~DialView();\r
-        static DialView *GetInstance(void);\r
-\r
-        void OnStart() override;\r
-        void OnSetUpView() override;\r
-        void OnTearDownView() override;\r
-        void OnStop() override;\r
-        /* -------------------------------------------------------------------------- */\r
-        void SetLabel();\r
-        void SetImage();\r
-        int GetWatch();\r
-        void SetWatch(int setnum);\r
-        bool AddButton();\r
-        bool InitView();\r
-        void DeInit();\r
-        bool PreLoad();\r
-        /* -------------------------------------------------------------------------- */\r
-    private:\r
-        UIView::OnDragListener *draglistener{nullptr};\r
-        DialView(DialView &&) = delete;\r
-        DialView &operator=(DialView &&) = delete;\r
-\r
-        UIViewGroup *container_ = nullptr;\r
-        UILabel *diallabel = nullptr;\r
-        UIImageView *dialimage = nullptr;\r
-        UIButton *choose_button = nullptr;\r
-        UIButton *left_button = nullptr;\r
-        UIButton *right_button = nullptr;\r
-        /* -------------------------------------------------------------------------- */\r
-        UIScrollView *scrollView1_ = nullptr;\r
-        UIButton *button5_ = nullptr;\r
-        UIButton *button4_ = nullptr;\r
-        UIButton *button3_ = nullptr;\r
-        UIButton *button2_ = nullptr;\r
-        UIButton *button1_ = nullptr;\r
-        /* -------------------------------------------------------------------------- */\r
-        bool viewiInitStatus{false};\r
-    };\r
-} // namespace OHOS\r
-#endif // Dial_PRESENTER_H\r
diff --git a/code/sdk/application/wearable/fd230app/nativeui/dial/include/Digital_clockView.h b/code/sdk/application/wearable/fd230app/nativeui/dial/include/Digital_clockView.h
deleted file mode 100644 (file)
index 6963087..0000000
+++ /dev/null
@@ -1,383 +0,0 @@
-/***
- * @Author: Caisking 3449750381@qq.com
- * @Date: 2024-01-16 16:17:50
- * @LastEditors: Caisking 3449750381@qq.com
- * @LastEditTime: 2024-01-17 16:50:57
- * @FilePath: /1.FD230/FD230/code/sdk/application/wearable/nativeapp/nativeui/dial/include/Digital_clockView.h
- * @Description:
- * @
- * @Copyright (c) 2024 by Caisking , All Rights Reserved.
- */
-#ifndef _Digital_clock_VIEW_H
-#define _Digital_clock_VIEW_H
-
-#include "BaseView.h"
-#include <string>
-#include <time.h>
-#include "View.h"
-#include <ui_scroll_view.h>
-#include "components/ui_image_animator.h"
-#include "components/ui_button.h"
-#include "components/ui_view_group.h"
-#include "components/ui_label_button_ext.h"
-#include "components/ui_chart.h"
-#include "components/ui_list.h"
-#include "components/icon_adapter.h"
-#include "wearable_log.h"
-#include "ohos_types.h"
-#include "components/ui_card_page.h"
-#include "components/ui_box_progress.h"
-#include "components/ui_image_view.h"
-#include "components/ui_label.h"
-#include "components/ui_sweep_clock.h"
-#include <ctime>
-#include <fstream>
-#include <string>
-#include "battery_hal.h"
-#include "cJSON.h"
-#include "sys/time.h"
-
-extern uint8_t battery_get_voltage(float *voltage);
-
-#include "hal_tick.h"
-
-#ifdef __cplusplus
-#if __cplusplus
-extern "C"
-{
-#endif
-#endif
-
-    extern uint8_t battery_get_voltage(float *voltage);
-#ifdef XTS_SUPPORT
-    extern uint8_t is_xts_test_done(void);
-#endif
-#ifdef __cplusplus
-#if __cplusplus
-}
-#endif
-#endif
-
-namespace OHOS
-{
-#define CHANGEBUTTON "changebutton" // 切换表盘按键
-    class SweepClockCallback : public AnimatorCallback
-    {
-    public:
-        explicit SweepClockCallback(UISweepClock *clock) : sweepClock(clock) {}
-        ~SweepClockCallback() {}
-
-        virtual void Callback(UIView *view)
-        {
-            // UNUSED(view);
-            struct timeval tv;
-            gettimeofday(&tv, NULL);
-            uint64_t second = tv.tv_sec;
-            uint64_t uSecond = tv.tv_usec;
-            uint64_t minute = second / MIN_TO_HOUR;
-            uint64_t hour = minute / MIN_TO_HOUR;
-            uint8_t realHour = static_cast<uint8_t>(hour % HOURLY_SYSTEM);
-            uint8_t realMinute = static_cast<uint8_t>(minute % MIN_TO_HOUR);
-            uint16_t realMilliSecond = static_cast<uint16_t>((second % MIN_TO_HOUR) *
-                                                                 SEC_TO_MILLI +
-                                                             uSecond / USEC_TO_MILLI);
-            sweepClock->SetSweepTime12Hour(realHour, realMinute, realMilliSecond, 1);
-        }
-
-    private:
-        static constexpr int16_t SEC_TO_MILLI = 1000;
-        static constexpr int16_t USEC_TO_MILLI = 1000;
-        static constexpr int16_t MIN_TO_HOUR = 60;
-        static constexpr int16_t HOURLY_SYSTEM = 24;
-        static constexpr int16_t INTERVAL = 30;
-        UISweepClock *sweepClock{nullptr};
-    };
-    /* -------------------------------------------------------------------------- */
-
-    class timeLableCallback : public AnimatorCallback
-    {
-    private:
-        UILabel *timeLable{nullptr};
-        UILabel *dateLable{nullptr};
-        UILabel *weekLable{nullptr};
-        std::string stringtime;
-        struct tm pTM;
-        time_t seconds;
-        struct timespec Systime;
-
-    public:
-        explicit timeLableCallback(UILabel *timeLable, UILabel *dateLable, UILabel *weekLable) : timeLable(timeLable), dateLable(dateLable), weekLable(weekLable)
-        {
-        }
-        ~timeLableCallback() {}
-        // 时钟更新的回调函数
-        virtual void Callback(UIView *view) override
-        {
-            /* --------------------------------- 时间 --------------------------------- */
-#if 0
-            clock_gettime(CLOCK_MONOTONIC, &Systime);
-            int SystemTime = Systime.tv_sec;
-            printf("--getSystemTime::%d--\n", SystemTime);
-            //clock_settime(CLOCK_MONOTONIC, &pTM);
-#endif
-            // 获取系统时间
-            time(&seconds);
-            localtime_r(&seconds, &pTM);
-            /* -------------------------------------------------------------------------- */
-            // 解析小时和分钟
-            int hour = pTM.tm_hour;
-            int minute = pTM.tm_min;
-            stringtime = (hour < 10 ? "0" : "") + std::to_string(hour) + ":" + (minute < 10 ? "0" : "") + std::to_string(minute);
-            // 将小时和分钟更新显示
-            timeLable->SetText(stringtime.c_str());
-            /* -------------------------------------------------------------------------- */
-#if 0
-            // 解析年月日
-             std::string dateStr = std::to_string(pTM.tm_year + 1900) + "-" + std::to_string(pTM.tm_mon + 1) + "-" + std::to_string(pTM.tm_mday);
-            // 解析星期
-            std::string weekStr = getWeekString(pTM.tm_wday);
-            // 将日期更新显示
-            dateLable->SetText(dateStr.c_str());
-            // 将星期更新显示
-            weekLable->SetText(weekStr.c_str());
-#endif
-        }
-        std::string getWeekString(int wday)
-        {
-            std::string weekDays[] = {"星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
-            return weekDays[wday];
-        }
-    };
-    /* -------------------------------------------------------------------------- */
-    class myProgressCallback : public AnimatorCallback
-    {
-    private:
-        UIImageView *charge{nullptr};     // 充电闪电图标
-        UIBoxProgress *progress{nullptr}; // 电池进度条控件指针
-        UILabel *batterylabel{nullptr};   // 显示电池百分比的文本控件指针
-
-    public:
-        explicit myProgressCallback(UIBoxProgress *progress, UILabel *batterylabel, UIImageView *charge) : progress(progress), batterylabel(batterylabel), charge(charge) {}
-        ~myProgressCallback() {}
-
-        // 电池进度更新的回调函数
-        virtual void Callback(UIView *view) override
-        {
-            // 获取电池电压值
-            float voltage = 0.0F;
-            uint8_t value = 0;
-            value = battery_get_voltage(&voltage);
-            const char *progress1ForeImageSrc = nullptr;
-            const char *progress1BackImageSrc = nullptr;
-            if (get_charge_stat())
-            {
-                char *imageimagesPath = "/user/res/Battery/Charge_Icon.bin";
-                charge->SetSrc(imageimagesPath);
-                progress1ForeImageSrc = "/user/res/Battery/Battery_Charge.bin"; // 充电图片路径
-                charge->SetVisible(true);
-            }
-            else
-            {
-                charge->SetVisible(false);
-#if 0
-            //设置种子
-            srand(static_cast<unsigned int>(time(0)));
-            //生成随机数
-            int value = rand() % 101; // 取余操作可以将随机数限制在0到100之间
-            //printf("value:%d\n", value);
-            //根据电池电量值选择相应的进度条前景图片
-#endif
-                if (value <= 10)
-                {
-                    progress1ForeImageSrc = "/user/res/Battery/Battery_Limit.bin"; // 低电量图片路径
-                }
-                else if (value <= 20)
-                {
-                    progress1ForeImageSrc = "/user/res/Battery/Battery_Save.bin"; // 中等电量图片路径
-                }
-                else
-                {
-                    progress1ForeImageSrc = "/user/res/Battery/Battery_Nomoal.bin"; // 正常电量图片路径
-                }
-            }
-            // 设置进度条的前景和背景图片,并更新进度值
-            progress->SetImage(progress1ForeImageSrc, progress1BackImageSrc);
-            progress->SetValue(value);                                    // 更新界面
-            batterylabel->SetText((std::to_string(value) + "%").c_str()); // 更新百分比显示
-        }
-    };
-    class mytimeimageCallback : public AnimatorCallback
-    {
-    private:
-        UIImageView *hour1{nullptr};   // 时钟小时第一位图像控件指针
-        UIImageView *hour2{nullptr};   // 时钟小时第二位图像控件指针
-        UIImageView *minute1{nullptr}; // 时钟分钟第一位图像控件指针
-        UIImageView *minute2{nullptr}; // 时钟分钟第二位图像控件指针
-        std::string stringtime;
-        std::string imageFolderPath;
-
-    public:
-        explicit mytimeimageCallback(UIImageView *hour1, UIImageView *hour2, UIImageView *minute1, UIImageView *minute2, std::string imageFolderPath, std::string stringtime)
-            : hour1(hour1), hour2(hour2), minute1(minute1), minute2(minute2), imageFolderPath(imageFolderPath), stringtime(stringtime) {}
-        ~mytimeimageCallback() {}
-
-        // 时钟图片更新的回调函数
-        virtual void Callback(UIView *view) override
-        {
-            // 从字符串中解析小时和分钟
-            int hour = std::stoi(stringtime.substr(0, 2));
-            int minute = std::stoi(stringtime.substr(3, 2));
-            // 进位处理
-            minute++;
-            if (minute >= 60)
-            {
-                minute = 0;
-                hour = (hour + 1) % 24; // 修复进位时的处理
-            }
-            // 将小时和分钟转换为字符串,并更新 stringtime
-            stringtime = (hour < 10 ? "0" : "") + std::to_string(hour) + ":" + (minute < 10 ? "0" : "") + std::to_string(minute);
-            printf("Before updating images\n");
-            // printf("--%s:%s--\n", imageFolderPath.c_str(), stringtime.c_str());
-            updateImage(hour1, imageFolderPath.c_str(), stringtime.substr(0, 1));
-            updateImage(hour2, imageFolderPath.c_str(), stringtime.substr(1, 1));
-            updateImage(minute1, imageFolderPath.c_str(), stringtime.substr(3, 1));
-            updateImage(minute2, imageFolderPath.c_str(), stringtime.substr(4, 1));
-            printf("After updating images\n");
-        }
-
-    private:
-        // 更新图片路径
-        void updateImage(UIImageView *imageControl, const std::string &folderPath, const std::string &imageName)
-        {
-            std::string imagePath = folderPath + imageName + ".bin";
-            if (fileExists(imagePath))
-            {
-                printf("File exists: %s\n", imagePath.c_str());
-                imageControl->SetSrc(imagePath.c_str());
-                printf("File set!\n");
-            }
-            else
-            {
-                // 处理文件不存在的情况
-                printf("File does not exist: %s\n", imagePath.c_str());
-                return;
-                // 设置一个默认图片或者采取其他容错处理
-                // imageControl->SetSrc("/user/res/default_image.bin");
-            }
-        }
-        // 检查文件是否存在
-        bool fileExists(const std::string &filePath)
-        {
-            std::ifstream file(filePath);
-            return file.good();
-        }
-    };
-
-    class XTSCallback : public AnimatorCallback
-    {
-    public:
-        explicit XTSCallback(UILabel *XTSlabel) : XTSlabel(XTSlabel) {}
-        ~XTSCallback() {}
-        virtual void Callback(UIView *view)
-        {
-            uint8_t xts_testing = 1;
-#ifdef XTS_SUPPORT
-            xts_testing = is_xts_test_done();
-#endif
-            if (!xts_testing)
-            {
-                // XTS测试进行
-                xts_flag = 1;
-                XTSlabel->SetText("XTS测试进行中\n请勿操作表盘");
-                XTSlabel->SetTextColor(Color::GetColorFromRGBA(0xe6, 0x04, 0x09, 0xff));
-            }
-            else
-            {
-                // XTS测试结束
-                if (xts_flag)
-                {
-                    XTSlabel->SetText("XTS测试结束");
-                    XTSlabel->SetTextColor(Color::GetColorFromRGBA(0x4e, 0xe6, 0x04, 0xff));
-                    xts_flag = 0; // 复位
-                }
-            }
-        }
-
-    private:
-        uint8_t xts_flag = 0; // 标志位
-        UILabel *XTSlabel{nullptr};
-        // std::thread workerThread;
-        // std::atomic<bool> stopThread;
-    };
-
-    class Digital_clockView : public UICardPage
-    {
-
-    public:
-        Digital_clockView();
-        virtual ~Digital_clockView();
-        static Digital_clockView *GetInstance(void);
-
-        bool InitView();
-        void DeInit();
-        void setJsonFilePath(const std::string &filePath);
-        void updateClockTime(const std::string &stringtime);
-        void FreeImagePathsArray(const char **imagePaths);
-        void InitImageAnimatorSource(UIImageAnimatorView *&imageAnimator, const char **imagePaths, int numFrames, int left, int top, int width, int height, const char *viewId, int time);
-        const char **CreateImagePathsArray(const char *basePath, const char *fileExtension, int numImages);
-        void addImageView(int left, int top, const char *imagePath, const char *viewId, int offsetX, int offsetY);
-        bool Initbackground();
-        bool Initpointer();
-        bool Initdigit();
-        bool Initdata();
-        bool Initweek();
-        bool Initbattery();
-        bool AddButton();
-        void PreLoad(void) override;
-        void UnLoad(void) override;
-        void ClockAnimatorStart(void);
-        void ClockAnimatorStop(void);
-
-    private:
-        UIView::OnDragListener *draglistener{nullptr};
-        Digital_clockView(Digital_clockView &&) = delete;
-        Digital_clockView &operator=(Digital_clockView &&) = delete;
-
-        // UIViewGroup *container_ = nullptr;
-        /* --------------------------------- XTS监测标签 -------------------------------- */
-        UILabel *XTSLabel = nullptr;
-        AnimatorCallback *xtsCallback_ = nullptr;
-        Animator *xtsanimator_ = nullptr;
-        /* -------------------------------------------------------------------------- */
-        UIImageView *background = nullptr;
-        UIImageView *hour1 = nullptr;
-        UIImageView *hour2 = nullptr;
-        UIImageView *colon = nullptr;
-        UIImageView *minute1 = nullptr;
-        UIImageView *minute2 = nullptr;
-        UIImageView *charge = nullptr;
-        UILabel *timeLable = nullptr;
-        UILabel *dateLable = nullptr;
-        UILabel *weekLable = nullptr;
-        UILabel *batteryLable = nullptr;
-        UIButton *changebutton = nullptr;
-        UIBoxProgress *progress = nullptr;
-        UISweepClock *sweepClock1_ = nullptr;
-        UIImageAnimatorView *backgroundAnimator = nullptr;
-
-        AnimatorCallback *mytimeimageCallback_ = nullptr;
-        Animator *timeimageanimator_ = nullptr;
-        AnimatorCallback *timeLableCallback_ = nullptr;
-        Animator *timeLableanimator_ = nullptr;
-        AnimatorCallback *progress1callback_ = nullptr;
-        Animator *progress1animator_ = nullptr;
-        AnimatorCallback *sweepClock1callback_ = nullptr;
-        Animator *sweepClock1animator_ = nullptr;
-        bool viewiInitStatus{false};
-        const char **imagePaths;
-        std::string digitspath;
-        std::string stringtime;
-        std::string JosnfilePath = "/user/res/clocks/dialconfig/default.json";
-    };
-} // namespace OHOS
-#endif // Digital_clock_PRESENTER_H
diff --git a/code/sdk/application/wearable/fd230app/nativeui/dial/include/dial_resource_image.h b/code/sdk/application/wearable/fd230app/nativeui/dial/include/dial_resource_image.h
deleted file mode 100644 (file)
index b61ded7..0000000
+++ /dev/null
@@ -1,297 +0,0 @@
-/***
- * @Author: Caisking 3449750381@qq.com
- * @Date: 2024-01-17 10:51:35
- * @LastEditors: Caisking 3449750381@qq.com
- * @LastEditTime: 2024-01-17 10:51:38
- * @FilePath: /1.FD230/FD230/code/sdk/application/wearable/nativeapp/nativeui/dial/include/dial_resource_image.h
- * @Description:
- * @
- * @Copyright (c) 2024 by Caisking , All Rights Reserved.
- */
-#ifndef DIAL_RESOURCE_IMAGE_H
-#define DIAL_RESOURCE_IMAGE_H
-#include <cstdint>
-namespace OHOS
-{
-    static const int DIR_MASK = 0xfff00000;
-    static const int PNG_MASK = 0x000fffff;
-    /* -------------------------------------------------------------------------- */
-    static const int FLOWERBUD_0 = 0x100001;
-    static const int FLOWERBUD_1 = 0x100002;
-    static const int FLOWERBUD_2 = 0x100003;
-    static const int FLOWERBUD_3 = 0x100004;
-    static const int FLOWERBUD_4 = 0x100005;
-    static const int FLOWERBUD_5 = 0x100006;
-    static const int FLOWERBUD_6 = 0x100007;
-    static const int FLOWERBUD_7 = 0x100008;
-    static const int FLOWERBUD_8 = 0x100009;
-    static const int FLOWERBUD_9 = 0x10000a;
-    static const int FLOWERBUD_BACKGROUND = 0x10000b;
-    static const int FLOWERBUD_EIGHT = 0x10000c;
-    static const int FLOWERBUD_FIVE = 0x10000d;
-    static const int FLOWERBUD_FOUR = 0x10000e;
-    static const int FLOWERBUD_NINE = 0x10000f;
-    static const int FLOWERBUD_ONE = 0x100010;
-    static const int FLOWERBUD_POINT = 0x100011;
-    static const int FLOWERBUD_SEVEN = 0x100012;
-    static const int FLOWERBUD_SIX = 0x100013;
-    static const int FLOWERBUD_THREE = 0x100014;
-    static const int FLOWERBUD_TWO = 0x100015;
-    static const int FLOWERBUD_ZERO = 0x100016;
-    /* -------------------------------------------------------------------------- */
-    static const int KUMI_0 = 0x200001;
-    static const int KUMI_1 = 0x200002;
-    static const int KUMI_2 = 0x200003;
-    static const int KUMI_3 = 0x200004;
-    static const int KUMI_4 = 0x200005;
-    static const int KUMI_5 = 0x200006;
-    static const int KUMI_6 = 0x200007;
-    static const int KUMI_7 = 0x200008;
-    static const int KUMI_8 = 0x200009;
-    static const int KUMI_9 = 0x20000a;
-    static const int KUMI_BACKGROUND = 0x20000b;
-    static const int KUMI_POINT = 0x20000c;
-    /* -------------------------------------------------------------------------- */
-    static const int MALIAO_0 = 0x300001;
-    static const int MALIAO_1 = 0x300002;
-    static const int MALIAO_2 = 0x300003;
-    static const int MALIAO_3 = 0x300004;
-    static const int MALIAO_4 = 0x300005;
-    static const int MALIAO_5 = 0x300006;
-    static const int MALIAO_6 = 0x300007;
-    static const int MALIAO_7 = 0x300008;
-    static const int MALIAO_8 = 0x300009;
-    static const int MALIAO_9 = 0x30000a;
-    static const int MALIAO_BACKGROUND = 0x30000b;
-    static const int MALIAO_POINT = 0x30000c;
-    static const int MAOMAO_0 = 0x400001;
-    static const int MAOMAO_1 = 0x400002;
-    static const int MAOMAO_2 = 0x400003;
-    static const int MAOMAO_3 = 0x400004;
-    static const int MAOMAO_4 = 0x400005;
-    static const int MAOMAO_5 = 0x400006;
-    static const int MAOMAO_6 = 0x400007;
-    static const int MAOMAO_7 = 0x400008;
-    static const int MAOMAO_8 = 0x400009;
-    static const int MAOMAO_9 = 0x40000a;
-    static const int MAOMAO_POINT = 0x40000b;
-    /* -------------------------------------------------------------------------- */
-    static const int BACKGROUND_1 = 0x500001;
-    static const int BACKGROUND_10 = 0x500002;
-    static const int BACKGROUND_100 = 0x500003;
-    static const int BACKGROUND_101 = 0x500004;
-    static const int BACKGROUND_102 = 0x500005;
-    static const int BACKGROUND_103 = 0x500006;
-    static const int BACKGROUND_104 = 0x500007;
-    static const int BACKGROUND_105 = 0x500008;
-    static const int BACKGROUND_106 = 0x500009;
-    static const int BACKGROUND_107 = 0x50000a;
-    static const int BACKGROUND_108 = 0x50000b;
-    static const int BACKGROUND_109 = 0x50000c;
-    static const int BACKGROUND_11 = 0x50000d;
-    static const int BACKGROUND_110 = 0x50000e;
-    static const int BACKGROUND_111 = 0x50000f;
-    static const int BACKGROUND_112 = 0x500010;
-    static const int BACKGROUND_113 = 0x500011;
-    static const int BACKGROUND_114 = 0x500012;
-    static const int BACKGROUND_115 = 0x500013;
-    static const int BACKGROUND_116 = 0x500014;
-    static const int BACKGROUND_117 = 0x500015;
-    static const int BACKGROUND_118 = 0x500016;
-    static const int BACKGROUND_119 = 0x500017;
-    static const int BACKGROUND_12 = 0x500018;
-    static const int BACKGROUND_120 = 0x500019;
-    static const int BACKGROUND_121 = 0x50001a;
-    static const int BACKGROUND_122 = 0x50001b;
-    static const int BACKGROUND_123 = 0x50001c;
-    static const int BACKGROUND_124 = 0x50001d;
-    static const int BACKGROUND_125 = 0x50001e;
-    static const int BACKGROUND_126 = 0x50001f;
-    static const int BACKGROUND_127 = 0x500020;
-    static const int BACKGROUND_128 = 0x500021;
-    static const int BACKGROUND_129 = 0x500022;
-    static const int BACKGROUND_13 = 0x500023;
-    static const int BACKGROUND_130 = 0x500024;
-    static const int BACKGROUND_131 = 0x500025;
-    static const int BACKGROUND_132 = 0x500026;
-    static const int BACKGROUND_133 = 0x500027;
-    static const int BACKGROUND_134 = 0x500028;
-    static const int BACKGROUND_135 = 0x500029;
-    static const int BACKGROUND_136 = 0x50002a;
-    static const int BACKGROUND_137 = 0x50002b;
-    static const int BACKGROUND_138 = 0x50002c;
-    static const int BACKGROUND_139 = 0x50002d;
-    static const int BACKGROUND_14 = 0x50002e;
-    static const int BACKGROUND_140 = 0x50002f;
-    static const int BACKGROUND_141 = 0x500030;
-    static const int BACKGROUND_142 = 0x500031;
-    static const int BACKGROUND_143 = 0x500032;
-    static const int BACKGROUND_144 = 0x500033;
-    static const int BACKGROUND_145 = 0x500034;
-    static const int BACKGROUND_146 = 0x500035;
-    static const int BACKGROUND_147 = 0x500036;
-    static const int BACKGROUND_148 = 0x500037;
-    static const int BACKGROUND_149 = 0x500038;
-    static const int BACKGROUND_15 = 0x500039;
-    static const int BACKGROUND_150 = 0x50003a;
-    static const int BACKGROUND_151 = 0x50003b;
-    static const int BACKGROUND_152 = 0x50003c;
-    static const int BACKGROUND_153 = 0x50003d;
-    static const int BACKGROUND_154 = 0x50003e;
-    static const int BACKGROUND_155 = 0x50003f;
-    static const int BACKGROUND_156 = 0x500040;
-    static const int BACKGROUND_157 = 0x500041;
-    static const int BACKGROUND_158 = 0x500042;
-    static const int BACKGROUND_159 = 0x500043;
-    static const int BACKGROUND_16 = 0x500044;
-    static const int BACKGROUND_160 = 0x500045;
-    static const int BACKGROUND_161 = 0x500046;
-    static const int BACKGROUND_162 = 0x500047;
-    static const int BACKGROUND_163 = 0x500048;
-    static const int BACKGROUND_164 = 0x500049;
-    static const int BACKGROUND_165 = 0x50004a;
-    static const int BACKGROUND_166 = 0x50004b;
-    static const int BACKGROUND_167 = 0x50004c;
-    static const int BACKGROUND_168 = 0x50004d;
-    static const int BACKGROUND_169 = 0x50004e;
-    static const int BACKGROUND_17 = 0x50004f;
-    static const int BACKGROUND_170 = 0x500050;
-    static const int BACKGROUND_171 = 0x500051;
-    static const int BACKGROUND_172 = 0x500052;
-    static const int BACKGROUND_173 = 0x500053;
-    static const int BACKGROUND_174 = 0x500054;
-    static const int BACKGROUND_175 = 0x500055;
-    static const int BACKGROUND_176 = 0x500056;
-    static const int BACKGROUND_177 = 0x500057;
-    static const int BACKGROUND_178 = 0x500058;
-    static const int BACKGROUND_179 = 0x500059;
-    static const int BACKGROUND_18 = 0x50005a;
-    static const int BACKGROUND_180 = 0x50005b;
-    static const int BACKGROUND_181 = 0x50005c;
-    static const int BACKGROUND_182 = 0x50005d;
-    static const int BACKGROUND_183 = 0x50005e;
-    static const int BACKGROUND_184 = 0x50005f;
-    static const int BACKGROUND_185 = 0x500060;
-    static const int BACKGROUND_186 = 0x500061;
-    static const int BACKGROUND_187 = 0x500062;
-    static const int BACKGROUND_188 = 0x500063;
-    static const int BACKGROUND_189 = 0x500064;
-    static const int BACKGROUND_19 = 0x500065;
-    static const int BACKGROUND_190 = 0x500066;
-    static const int BACKGROUND_191 = 0x500067;
-    static const int BACKGROUND_192 = 0x500068;
-    static const int BACKGROUND_193 = 0x500069;
-    static const int BACKGROUND_194 = 0x50006a;
-    static const int BACKGROUND_195 = 0x50006b;
-    static const int BACKGROUND_196 = 0x50006c;
-    static const int BACKGROUND_197 = 0x50006d;
-    static const int BACKGROUND_198 = 0x50006e;
-    static const int BACKGROUND_199 = 0x50006f;
-    static const int BACKGROUND_2 = 0x500070;
-    static const int BACKGROUND_20 = 0x500071;
-    static const int BACKGROUND_200 = 0x500072;
-    static const int BACKGROUND_201 = 0x500073;
-    static const int BACKGROUND_202 = 0x500074;
-    static const int BACKGROUND_203 = 0x500075;
-    static const int BACKGROUND_204 = 0x500076;
-    static const int BACKGROUND_205 = 0x500077;
-    static const int BACKGROUND_21 = 0x500078;
-    static const int BACKGROUND_22 = 0x500079;
-    static const int BACKGROUND_23 = 0x50007a;
-    static const int BACKGROUND_24 = 0x50007b;
-    static const int BACKGROUND_25 = 0x50007c;
-    static const int BACKGROUND_26 = 0x50007d;
-    static const int BACKGROUND_27 = 0x50007e;
-    static const int BACKGROUND_28 = 0x50007f;
-    static const int BACKGROUND_29 = 0x500080;
-    static const int BACKGROUND_3 = 0x500081;
-    static const int BACKGROUND_30 = 0x500082;
-    static const int BACKGROUND_31 = 0x500083;
-    static const int BACKGROUND_32 = 0x500084;
-    static const int BACKGROUND_33 = 0x500085;
-    static const int BACKGROUND_34 = 0x500086;
-    static const int BACKGROUND_35 = 0x500087;
-    static const int BACKGROUND_36 = 0x500088;
-    static const int BACKGROUND_37 = 0x500089;
-    static const int BACKGROUND_38 = 0x50008a;
-    static const int BACKGROUND_39 = 0x50008b;
-    static const int BACKGROUND_4 = 0x50008c;
-    static const int BACKGROUND_40 = 0x50008d;
-    static const int BACKGROUND_41 = 0x50008e;
-    static const int BACKGROUND_42 = 0x50008f;
-    static const int BACKGROUND_43 = 0x500090;
-    static const int BACKGROUND_44 = 0x500091;
-    static const int BACKGROUND_45 = 0x500092;
-    static const int BACKGROUND_46 = 0x500093;
-    static const int BACKGROUND_47 = 0x500094;
-    static const int BACKGROUND_48 = 0x500095;
-    static const int BACKGROUND_49 = 0x500096;
-    static const int BACKGROUND_5 = 0x500097;
-    static const int BACKGROUND_50 = 0x500098;
-    static const int BACKGROUND_51 = 0x500099;
-    static const int BACKGROUND_52 = 0x50009a;
-    static const int BACKGROUND_53 = 0x50009b;
-    static const int BACKGROUND_54 = 0x50009c;
-    static const int BACKGROUND_55 = 0x50009d;
-    static const int BACKGROUND_56 = 0x50009e;
-    static const int BACKGROUND_57 = 0x50009f;
-    static const int BACKGROUND_58 = 0x5000a0;
-    static const int BACKGROUND_59 = 0x5000a1;
-    static const int BACKGROUND_6 = 0x5000a2;
-    static const int BACKGROUND_60 = 0x5000a3;
-    static const int BACKGROUND_61 = 0x5000a4;
-    static const int BACKGROUND_62 = 0x5000a5;
-    static const int BACKGROUND_63 = 0x5000a6;
-    static const int BACKGROUND_64 = 0x5000a7;
-    static const int BACKGROUND_65 = 0x5000a8;
-    static const int BACKGROUND_66 = 0x5000a9;
-    static const int BACKGROUND_67 = 0x5000aa;
-    static const int BACKGROUND_68 = 0x5000ab;
-    static const int BACKGROUND_69 = 0x5000ac;
-    static const int BACKGROUND_7 = 0x5000ad;
-    static const int BACKGROUND_70 = 0x5000ae;
-    static const int BACKGROUND_71 = 0x5000af;
-    static const int BACKGROUND_72 = 0x5000b0;
-    static const int BACKGROUND_73 = 0x5000b1;
-    static const int BACKGROUND_74 = 0x5000b2;
-    static const int BACKGROUND_75 = 0x5000b3;
-    static const int BACKGROUND_76 = 0x5000b4;
-    static const int BACKGROUND_77 = 0x5000b5;
-    static const int BACKGROUND_78 = 0x5000b6;
-    static const int BACKGROUND_79 = 0x5000b7;
-    static const int BACKGROUND_8 = 0x5000b8;
-    static const int BACKGROUND_80 = 0x5000b9;
-    static const int BACKGROUND_81 = 0x5000ba;
-    static const int BACKGROUND_82 = 0x5000bb;
-    static const int BACKGROUND_83 = 0x5000bc;
-    static const int BACKGROUND_84 = 0x5000bd;
-    static const int BACKGROUND_85 = 0x5000be;
-    static const int BACKGROUND_86 = 0x5000bf;
-    static const int BACKGROUND_87 = 0x5000c0;
-    static const int BACKGROUND_88 = 0x5000c1;
-    static const int BACKGROUND_89 = 0x5000c2;
-    static const int BACKGROUND_9 = 0x5000c3;
-    static const int BACKGROUND_90 = 0x5000c4;
-    static const int BACKGROUND_91 = 0x5000c5;
-    static const int BACKGROUND_92 = 0x5000c6;
-    static const int BACKGROUND_93 = 0x5000c7;
-    static const int BACKGROUND_94 = 0x5000c8;
-    static const int BACKGROUND_95 = 0x5000c9;
-    static const int BACKGROUND_96 = 0x5000ca;
-    static const int BACKGROUND_97 = 0x5000cb;
-    static const int BACKGROUND_98 = 0x5000cc;
-    static const int BACKGROUND_99 = 0x5000cd;
-    /* -------------------------------------------------------------------------- */
-    static const int MOMO_BACKGROUND = 0x600001;
-    static const int MOMO_HOUR = 0x600002;
-    static const int MOMO_MINUTE = 0x600003;
-    static const int MOMO_SECOND = 0x600004;
-    /* -------------------------------------------------------------------------- */
-    static const int REDUCED_GRAPH_FLOWERBUD = 0x700001;
-    static const int REDUCED_GRAPH_KUMI = 0x700002;
-    static const int REDUCED_GRAPH_MALIAO = 0x700003;
-    static const int REDUCED_GRAPH_MAOMAO = 0x700004;
-    /* -------------------------------------------------------------------------- */
-
-} // OHOS
-#endif // UI_RESOURCE_IMAGE_H
diff --git a/code/sdk/application/wearable/fd230app/nativeui/dial/src/DialPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/dial/src/DialPresenter.cpp
deleted file mode 100644 (file)
index 8956199..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-#include "AppViewIDs.h"\r
-#include "NativeAbility.h"\r
-\r
-#include "dial/include/DialPresenter.h"\r
-\r
-namespace OHOS\r
-{\r
-\r
-    // 当前Presenter属性实例化的内存指针\r
-    static DialPresenter *g_pDialPresenter = nullptr;\r
-\r
-    DialPresenter::DialPresenter()\r
-    {\r
-        g_pDialView = new DialView();\r
-        g_pDialPresenter = this;\r
-    }\r
-\r
-    DialPresenter::~DialPresenter()\r
-    {\r
-\r
-        g_pDialPresenter = nullptr;\r
-    }\r
-\r
-    DialPresenter *DialPresenter::GetInstance()\r
-    {\r
-\r
-        return g_pDialPresenter;\r
-    }\r
-\r
-    void DialPresenter::OnStart()\r
-    {\r
-\r
-        Presenter<DialView>::OnStart();\r
-    }\r
-\r
-    void DialPresenter::OnPause(void)\r
-    {\r
-\r
-        Presenter<DialView>::OnPause();\r
-    }\r
-\r
-    void DialPresenter::OnResume(void)\r
-    {\r
-\r
-        Presenter<DialView>::OnResume();\r
-    }\r
-\r
-    void DialPresenter::OnStop(void)\r
-    {\r
-\r
-        Presenter<DialView>::OnStop();\r
-    }\r
-\r
-    bool DialPresenter::OnDrag(UIView &view, const DragEvent &event)\r
-    {\r
-\r
-        if (event.GetDragDirection() == DragEvent::DIRECTION_BOTTOM_TO_TOP)\r
-        {\r
-            // printf("draglistene is ok!\n");\r
-            NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);\r
-        }\r
-        UNUSED(view);\r
-        return true;\r
-    }\r
-\r
-    bool DialPresenter::OnClick(UIView &view, const ClickEvent &event)\r
-    {\r
-\r
-        // 根据控件id查找是哪个控件触发了点击回调\r
-#if 0\r
-        /* -------------------------------------------------------------------------- */\r
-        int setnum = 0;\r
-        // 右滑按键\r
-        if (strcmp(view.GetViewId(), "button_right") == 0)\r
-        {\r
-            // 如果是第5个,则滑向第1个\r
-            setnum = WatchFacenum == 4 ? 0 : WatchFacenum + 1;\r
-            printf("--%d--\n", setnum);\r
-            WatchFacenum = setnum;\r
-            g_pDialView->SetImage();\r
-            g_pDialView->SetLabel();\r
-        }\r
-        // 左滑按键\r
-        if (strcmp(view.GetViewId(), "button_left") == 0)\r
-        {\r
-            // 如果是第1个,则滑向第5个\r
-            setnum = WatchFacenum == 0 ? 4 : WatchFacenum - 1;\r
-            printf("--%d--\n", setnum);\r
-            WatchFacenum = setnum;\r
-            g_pDialView->SetImage();\r
-            g_pDialView->SetLabel();\r
-        }\r
-#endif\r
-        /* -------------------------------------------------------------------------- */\r
-        /* -------------------------------------------------------------------------- */\r
-#if 1\r
-        if (strcmp(view.GetViewId(), "kumibutton") == 0)\r
-        {\r
-            // printf("join click\n");\r
-            const std::string jsonPath = "/user/res/clocks/dialconfig/KUMI.json";\r
-            g_pDigital_clockView->setJsonFilePath(jsonPath);\r
-            NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);\r
-        }\r
-        if (strcmp(view.GetViewId(), "flowerbudbutton") == 0)\r
-        {\r
-            // printf("join click\n");\r
-            const std::string jsonPath = "/user/res/clocks/dialconfig/flowerbud.json";\r
-            g_pDigital_clockView->setJsonFilePath(jsonPath);\r
-            NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);\r
-        }\r
-        if (strcmp(view.GetViewId(), "maomaobutton") == 0)\r
-        {\r
-            // printf("join click\n");\r
-            const std::string jsonPath = "/user/res/clocks/dialconfig/maomao.json";\r
-            g_pDigital_clockView->setJsonFilePath(jsonPath);\r
-            NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);\r
-        }\r
-        if (strcmp(view.GetViewId(), "momobutton") == 0)\r
-        {\r
-            // printf("join click\n");\r
-            const std::string jsonPath = "/user/res/clocks/dialconfig/momo.json";\r
-            g_pDigital_clockView->setJsonFilePath(jsonPath);\r
-            NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);\r
-        }\r
-        if (strcmp(view.GetViewId(), "maliaobutton") == 0)\r
-        {\r
-            // printf("join click\n");\r
-            const std::string jsonPath = "/user/res/clocks/dialconfig/maliao.json";\r
-            g_pDigital_clockView->setJsonFilePath(jsonPath);\r
-            NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);\r
-        }\r
-#endif\r
-        return true;\r
-    }\r
-\r
-}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/dial/src/DialSucces.cpp b/code/sdk/application/wearable/fd230app/nativeui/dial/src/DialSucces.cpp
deleted file mode 100644 (file)
index 056d3af..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-#include "dial/include/DialSuccesView.h"\r
-\r
-#include "common/image_cache_manager.h"\r
-#include "UiConfig.h"\r
-#include "ui_resource_image.h"\r
-#include <ui_scroll_view.h>\r
-#include "components/ui_button.h"\r
-namespace OHOS\r
-{\r
-\r
-    static DialSuccesView *g_pDialSuccesView{nullptr};\r
-\r
-    DialSuccesView::DialSuccesView()\r
-    {\r
-\r
-        g_pDialSuccesView = this;\r
-    }\r
-\r
-    DialSuccesView::~DialSuccesView()\r
-    {\r
-        DeInit();\r
-        g_pDialSuccesView = nullptr;\r
-    }\r
-\r
-    DialSuccesView *DialSuccesView::GetInstance()\r
-    {\r
-\r
-        return g_pDialSuccesView;\r
-    }\r
-    void DialSuccesView::Init()\r
-    {\r
-        if (container_ == nullptr)\r
-        {\r
-            container_ = new UIViewGroup();\r
-            container_->SetPosition(0, 0, 466, 466);\r
-            container_->SetStyle(STYLE_BACKGROUND_OPA, 0);\r
-        }\r
-\r
-        // Add Label to App\r
-        if (label1_ == nullptr)\r
-        {\r
-            label1_ = new UILabel();\r
-        }\r
-        label1_->SetPosition(173, 52); // widget's left position and top position\r
-        label1_->Resize(220, 35);      // widget's width and height\r
-        label1_->SetViewId("label1");  // Set style\r
-        label1_->SetStyle(STYLE_TEXT_FONT, 30);\r
-\r
-        // Set additional property\r
-        label1_->SetText("安装成功");\r
-        label1_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
-        label1_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
-        label1_->SetRollSpeed(0);\r
-        label1_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
-\r
-        // Add to rootView\r
-        container_->Add(label1_);\r
-        label1_->SetVisible(true);\r
-\r
-        // Add ImageView to App\r
-        if (image1_ == nullptr)\r
-        {\r
-            image1_ = new UIImageView();\r
-        }\r
-        image1_->SetPosition(193, 150); // widget's left position and top position\r
-        image1_->Resize(100, 100);      // widget's width and height\r
-        image1_->SetViewId("success");  // Set style\r
-\r
-        // Set additional property\r
-#ifdef _WIN32\r
-        char *image1imagesPath = "c:/Users/caiking/project/image_converter_tool/output/DialSucces/Vector.bin";\r
-#else\r
-        char *image1imagesPath = "/user/res/Dial/Vector.bin";\r
-#endif\r
-        image1_->SetSrc(image1imagesPath);\r
-\r
-        // Add to rootView\r
-        container_->Add(image1_);\r
-        image1_->SetVisible(true);\r
-\r
-        // Add Label to App\r
-        if (label2_ == nullptr)\r
-        {\r
-            label2_ = new UILabel();\r
-        }\r
-        label2_->SetPosition(83, 293); // widget's left position and top position\r
-        label2_->Resize(200, 60);      // widget's width and height\r
-        label2_->SetViewId("label2");  // Set style\r
-        label2_->SetStyle(STYLE_TEXT_FONT, 30);\r
-\r
-        // Set additional property\r
-        label2_->SetText("表盘安装成功\n正在更新表盘,请稍等");\r
-        label2_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
-        label2_->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff));\r
-        label2_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
-        label2_->SetRollSpeed(0);\r
-        label2_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
-\r
-        // Add to rootView\r
-        container_->Add(label2_);\r
-        label2_->SetVisible(true);\r
-    }\r
-\r
-    void DialSuccesView::DeInit()\r
-    {\r
-        if (container_ != nullptr)\r
-        {\r
-            container_->RemoveAll();\r
-            delete container_;\r
-            container_ = nullptr;\r
-        }\r
-        if (label1_ != nullptr)\r
-        {\r
-            delete label1_;\r
-            label1_ = nullptr;\r
-        }\r
-        if (image1_ != nullptr)\r
-        {\r
-            delete image1_;\r
-            image1_ = nullptr;\r
-        }\r
-        if (label2_ != nullptr)\r
-        {\r
-            delete label2_;\r
-            label2_ = nullptr;\r
-        }\r
-    }\r
-\r
-    UIView *DialSuccesView::GetView()\r
-    {\r
-        Init();\r
-        return container_;\r
-    }\r
-    void DialSuccesView::OnStart()\r
-    {\r
-        container_ = new UIViewGroup();\r
-        if (container_ == nullptr)\r
-        {\r
-            return;\r
-        }\r
-        container_->SetPosition(0, 0);\r
-        container_->SetWidth(Screen::GetInstance().GetWidth());\r
-        container_->SetHeight(Screen::GetInstance().GetHeight());\r
-        container_->SetTouchable(true);\r
-        container_->SetDraggable(true);\r
-\r
-        GetView();\r
-        RootView::GetInstance()->Add(container_);\r
-    }\r
-\r
-    void DialSuccesView::OnSetUpView()\r
-    {\r
-\r
-        View<DialSuccesPresenter>::OnSetUpView();\r
-        Draw();\r
-    }\r
-\r
-    void DialSuccesView::OnTearDownView()\r
-    {\r
-\r
-        View<DialSuccesPresenter>::OnTearDownView();\r
-        return;\r
-    }\r
-\r
-    void DialSuccesView::OnStop()\r
-    {\r
-        View<DialSuccesPresenter>::OnStop();\r
-        RootView::GetInstance()->RemoveAll();\r
-        return;\r
-    }\r
-}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/dial/src/DialView.cpp b/code/sdk/application/wearable/fd230app/nativeui/dial/src/DialView.cpp
deleted file mode 100644 (file)
index 8c047ff..0000000
+++ /dev/null
@@ -1,511 +0,0 @@
-/***\r
- * @Author: Caisking 3449750381@qq.com\r
- * @Date: 2024-01-17 19:23:24\r
- * @LastEditors: Caisking 3449750381@qq.com\r
- * @LastEditTime: 2024-01-19 10:36:39\r
- * @FilePath: /FD230/code/sdk/application/wearable/nativeapp/nativeui/dial/src/DialView.cpp\r
- * @Description:\r
- * @\r
- * @Copyright (c) 2024 by Caisking , All Rights Reserved.\r
- */\r
-\r
-#include "dial/include/DialView.h"\r
-\r
-#include "common/image_cache_manager.h"\r
-#include "UiConfig.h"\r
-#include "ui_resource_image.h"\r
-#include <ui_scroll_view.h>\r
-#include "components/ui_button.h"\r
-#include <string>\r
-#include <vector>\r
-namespace OHOS\r
-{\r
-/* -------------------------------------------------------------------------- */\r
-#define REDUCED_GRAPH_PATH "/user/res/clocks/Reducedgraph/"\r
-    struct WatchFace\r
-    {\r
-        std::string thumbnailPath;\r
-        std::string name;\r
-    };\r
-    std::vector<WatchFace> watchFaces = {\r
-        {REDUCED_GRAPH_PATH "KUMI.bin", "经典表盘"},\r
-        {REDUCED_GRAPH_PATH "momo.bin", "猫猫表盘"},\r
-        {REDUCED_GRAPH_PATH "maliao.bin", "马里奥表盘"},\r
-        {REDUCED_GRAPH_PATH "maomao.bin", "Kitty表盘"},\r
-        {REDUCED_GRAPH_PATH "flowerbud.bin", "花蕾表盘"}};\r
-    /* -------------------------------------------------------------------------- */\r
-    extern int WatchFacenum;\r
-    static DialView *g_pDialView{nullptr};\r
-    DialView::DialView()\r
-    {\r
-        g_pDialView = this;\r
-    }\r
-\r
-    DialView::~DialView()\r
-    {\r
-        DeInit();\r
-        g_pDialView = nullptr;\r
-    }\r
-\r
-    DialView *DialView::GetInstance()\r
-    {\r
-        return g_pDialView;\r
-    }\r
-\r
-    /***\r
-     * @description:\r
-     * @return 设置表盘名称\r
-     */\r
-    void DialView::SetLabel()\r
-    {\r
-        std::string firstName = watchFaces[DialPresenter::GetInstance()->WatchFacenum].name;\r
-        printf("--%s--\n", firstName.c_str());\r
-        // diallabel->SetText(firstName.c_str());\r
-    }\r
-\r
-    /***\r
-     * @description:\r
-     * @return 设置缩约图背景\r
-     */\r
-    void DialView::SetImage()\r
-    {\r
-        std::string firstThumbnailPath = watchFaces[DialPresenter::GetInstance()->WatchFacenum].thumbnailPath;\r
-        printf("--%s--\n", firstThumbnailPath.c_str());\r
-        const char *buttondefaultImgSrc = firstThumbnailPath.c_str();\r
-        const char *buttontriggeredImgSrc = nullptr;\r
-        // choose_button->SetImageSrc(buttondefaultImgSrc, buttontriggeredImgSrc);\r
-    }\r
-/* -------------------------------------------------------------------------- */\r
-#if 0\r
-    /***\r
-     * @description:\r
-     * @param\r
-     * @return 获取映照索引\r
-     */\r
-    int DialView::GetWatch()\r
-    {\r
-        printf("WatchFacenum:%d\n", WatchFacenum);\r
-        return WatchFacenum;\r
-    }\r
-    /***\r
-     * @description:\r
-     * @param {int} setnum\r
-     * @return 设置映照索引\r
-     */\r
-    void DialView::SetWatch(int setnum)\r
-    {\r
-        WatchFacenum = setnum;\r
-        printf("--WatchFacenum:%d\n", WatchFacenum);\r
-    }\r
-#endif\r
-    /* -------------------------------------------------------------------------- */\r
-    /***\r
-     * @description:\r
-     * @return 添加按键\r
-     */\r
-    bool DialView::AddButton()\r
-    {\r
-        // Add Button to App\r
-        if (choose_button == nullptr)\r
-        {\r
-            choose_button = new UIButton();\r
-        }\r
-        choose_button->SetPosition(103, 103);      // widget's left position and top position\r
-        choose_button->Resize(260, 260);           // widget's width and height\r
-        choose_button->SetViewId("button_choose"); // Set style\r
-        choose_button->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
-        choose_button->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
-\r
-        // Set additional property\r
-        // Set additional property\r
-        char *button1defaultImgSrc = REDUCED_GRAPH_PATH "KUMI.bin";\r
-        char *button1triggeredImgSrc = nullptr;\r
-        choose_button->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc);\r
-        choose_button->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
-\r
-        // Add the CallBack about events\r
-        UIView::OnClickListener *button1Click = static_cast<UIView::OnClickListener *>(DialPresenter::GetInstance());\r
-        choose_button->SetOnClickListener(button1Click);\r
-\r
-        // Add to rootView\r
-        container_->Add(choose_button);\r
-        choose_button->SetVisible(true);\r
-\r
-        /* -------------------------------------------------------------------------- */\r
-        // Add Button to App\r
-        if (right_button == nullptr)\r
-        {\r
-            right_button = new UIButton();\r
-        }\r
-        right_button->SetPosition(402, 208);     // widget's left position and top position\r
-        right_button->Resize(23, 50);            // widget's width and height\r
-        right_button->SetViewId("button_right"); // Set style\r
-        right_button->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
-        right_button->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
-\r
-        // Set additional property\r
-        char *button2defaultImgSrc = REDUCED_GRAPH_PATH "right_boutton.bin";\r
-        char *button2triggeredImgSrc = nullptr;\r
-        right_button->SetImageSrc(button2defaultImgSrc, button2triggeredImgSrc);\r
-        right_button->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
-\r
-        // Add the CallBack about events\r
-        UIView::OnClickListener *button2Click = static_cast<UIView::OnClickListener *>(DialPresenter::GetInstance());\r
-        right_button->SetOnClickListener(button2Click);\r
-\r
-        // Add to rootView\r
-        container_->Add(right_button);\r
-        right_button->SetVisible(true);\r
-\r
-        /* -------------------------------------------------------------------------- */\r
-\r
-        // Add Button to App\r
-        if (left_button == nullptr)\r
-        {\r
-            left_button = new UIButton();\r
-        }\r
-        left_button->SetPosition(40, 208);      // widget's left position and top position\r
-        left_button->Resize(23, 50);            // widget's width and height\r
-        left_button->SetViewId("left_boutton"); // Set style\r
-        left_button->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
-        left_button->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
-\r
-        // Set additional property\r
-        char *button3defaultImgSrc = REDUCED_GRAPH_PATH "left_boutton.bin";\r
-        char *button3triggeredImgSrc = nullptr;\r
-        left_button->SetImageSrc(button3defaultImgSrc, button3triggeredImgSrc);\r
-        left_button->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
-\r
-        // Add the CallBack about events\r
-        UIView::OnClickListener *button3Click = static_cast<UIView::OnClickListener *>(DialPresenter::GetInstance());\r
-        left_button->SetOnClickListener(button3Click);\r
-\r
-        // Add to rootView\r
-        container_->Add(left_button);\r
-        left_button->SetVisible(true);\r
-\r
-        return true;\r
-    }\r
-    /***\r
-     * @description:\r
-     * @return 初始化界面\r
-     */\r
-    bool DialView::InitView()\r
-    {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " void DialView::InitView");\r
-        if (container_ == nullptr)\r
-        {\r
-            container_ = new UIViewGroup();\r
-            container_->SetPosition(0, 0, 466, 466);\r
-            container_->SetStyle(STYLE_BACKGROUND_OPA, 0);\r
-        }\r
-        /* -------------------------------------------------------------------------- */\r
-#if 1\r
-        // Add ScrollView to App\r
-        if (scrollView1_ == nullptr)\r
-        {\r
-            scrollView1_ = new UIScrollView();\r
-        }\r
-        scrollView1_->SetPosition(0, 0);        // widget's left position and top position\r
-        scrollView1_->Resize(466, 466);         // widget's width and height\r
-        scrollView1_->SetViewId("scrollView1"); // Set style\r
-        scrollView1_->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
-\r
-        // Set additional property\r
-\r
-        // Add to rootView\r
-        container_->Add(scrollView1_);\r
-        scrollView1_->SetVisible(true);\r
-\r
-        // Add Button to App\r
-        if (button5_ == nullptr)\r
-        {\r
-            button5_ = new UIButton();\r
-        }\r
-        button5_->SetPosition(-480, 103);    // widget's left position and top position\r
-        button5_->Resize(260, 260);          // widget's width and height\r
-        button5_->SetViewId("maliaobutton"); // Set style\r
-        button5_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
-        button5_->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
-        // Set additional property\r
-        char *button5defaultImgSrc = "/user/res/clocks/Reducedgraph/maliao.bin";\r
-        char *button5triggeredImgSrc = nullptr;\r
-        button5_->SetImageSrc(button5defaultImgSrc, button5triggeredImgSrc);\r
-        button5_->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff000000, UIButton::PRESSED);\r
-        button5_->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
-\r
-        // Add the CallBack about events\r
-        UIView::OnClickListener *button5Click = static_cast<UIView::OnClickListener *>(DialPresenter::GetInstance());\r
-        button5_->SetOnClickListener(button5Click);\r
-        // Add to scrollView1\r
-        scrollView1_->Add(button5_);\r
-        button5_->SetVisible(true);\r
-\r
-        // Add Button to App\r
-        if (button4_ == nullptr)\r
-        {\r
-            button4_ = new UIButton();\r
-        }\r
-        button4_->SetPosition(680, 103);   // widget's left position and top position\r
-        button4_->Resize(260, 260);        // widget's width and height\r
-        button4_->SetViewId("momobutton"); // Set style\r
-        button4_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
-        button4_->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
-        // Set additional property\r
-        char *button4defaultImgSrc = "/user/res/clocks/Reducedgraph/momo.bin";\r
-        char *button4triggeredImgSrc = nullptr;\r
-        button4_->SetImageSrc(button4defaultImgSrc, button4triggeredImgSrc);\r
-        button4_->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff000000, UIButton::PRESSED);\r
-        button4_->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
-\r
-        // Add the CallBack about events\r
-        UIView::OnClickListener *button4Click = static_cast<UIView::OnClickListener *>(DialPresenter::GetInstance());\r
-        button4_->SetOnClickListener(button4Click);\r
-        // Add to scrollView1\r
-        scrollView1_->Add(button4_);\r
-        button4_->SetVisible(true);\r
-\r
-        // Add Button to App\r
-        if (button3_ == nullptr)\r
-        {\r
-            button3_ = new UIButton();\r
-        }\r
-        button3_->SetPosition(390, 103);     // widget's left position and top position\r
-        button3_->Resize(260, 260);          // widget's width and height\r
-        button3_->SetViewId("maomaobutton"); // Set style\r
-        button3_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
-        button3_->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
-        // Set additional property\r
-        char *button3defaultImgSrc = "/user/res/clocks/Reducedgraph/maomao.bin";\r
-        char *button3triggeredImgSrc = nullptr;\r
-        button3_->SetImageSrc(button3defaultImgSrc, button3triggeredImgSrc);\r
-        button3_->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff000000, UIButton::PRESSED);\r
-        button3_->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
-        // Add the CallBack about events\r
-        UIView::OnClickListener *button3Click = static_cast<UIView::OnClickListener *>(DialPresenter::GetInstance());\r
-        button3_->SetOnClickListener(button3Click);\r
-        // Add to scrollView1\r
-        scrollView1_->Add(button3_);\r
-        button3_->SetVisible(true);\r
-\r
-        // Add Button to App\r
-        if (button2_ == nullptr)\r
-        {\r
-            button2_ = new UIButton();\r
-        }\r
-        button2_->SetPosition(-190, 103);       // widget's left position and top position\r
-        button2_->Resize(260, 260);             // widget's width and height\r
-        button2_->SetViewId("flowerbudbutton"); // Set style\r
-        button2_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
-        button2_->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
-\r
-        // Set additional property\r
-        char *button2defaultImgSrc = "/user/res/clocks/Reducedgraph/flowerbud.bin";\r
-        char *button2triggeredImgSrc = nullptr;\r
-        button2_->SetImageSrc(button2defaultImgSrc, button2triggeredImgSrc);\r
-        button2_->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff000000, UIButton::PRESSED);\r
-        button2_->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
-        // Add the CallBack about events\r
-        UIView::OnClickListener *button2Click = static_cast<UIView::OnClickListener *>(DialPresenter::GetInstance());\r
-        button2_->SetOnClickListener(button2Click);\r
-        // Add to scrollView1\r
-        scrollView1_->Add(button2_);\r
-        button2_->SetVisible(true);\r
-\r
-        // Add Button to App\r
-        if (button1_ == nullptr)\r
-        {\r
-            button1_ = new UIButton();\r
-        }\r
-        button1_->SetPosition(103, 103);   // widget's left position and top position\r
-        button1_->Resize(260, 260);        // widget's width and height\r
-        button1_->SetViewId("kumibutton"); // Set style\r
-        button1_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
-        button1_->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
-        // Set additional property\r
-        char *button1defaultImgSrc = "/user/res/clocks/Reducedgraph/KUMI.bin";\r
-        char *button1triggeredImgSrc = nullptr;\r
-        button1_->SetImageSrc(button1defaultImgSrc, button1triggeredImgSrc);\r
-        button1_->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff000000, UIButton::PRESSED);\r
-        button1_->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
-\r
-        // Add the CallBack about events\r
-        UIView::OnClickListener *button1Click = static_cast<UIView::OnClickListener *>(DialPresenter::GetInstance());\r
-        button1_->SetOnClickListener(button1Click);\r
-        // Add to scrollView1\r
-        scrollView1_->Add(button1_);\r
-        button1_->SetVisible(true);\r
-#endif\r
-        /* -------------------------------------------------------------------------- */\r
-        /* -------------------------------------------------------------------------- */\r
-#if 0\r
-        /* -------------------------------------------------------------------------- */\r
-        std::string firstThumbnailPath = watchFaces[0].thumbnailPath;\r
-        std::string firstName = watchFaces[0].name;\r
-        printf("firstThumbnailPath:%s -- firstName:%s\n", firstThumbnailPath.c_str(), firstName.c_str());\r
-        /* -------------------------------------------------------------------------- */\r
-        // Add Label to App\r
-        if (diallabel == nullptr)\r
-        {\r
-            diallabel = new UILabel();\r
-        }\r
-\r
-        diallabel->SetPosition(181, 50);    // widget's left position and top positio\r
-        diallabel->Resize(200, 60);         // widget's width and height\r
-        diallabel->SetViewId("titillabel"); // Set style\r
-        diallabel->SetStyle(STYLE_TEXT_FONT, 26);\r
-        // Set additional property\r
-        diallabel->SetText(firstName.c_str());\r
-        diallabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
-        diallabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
-        diallabel->SetRollSpeed(0);\r
-        diallabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 26);\r
-        // Add to rootView\r
-        container_->Add(diallabel);\r
-        diallabel->SetVisible(true);\r
-        /* -------------------------------------------------------------------------- */\r
-        AddButton();\r
-#endif\r
-        return true;\r
-    }\r
-    /***\r
-     * @description:\r
-     * @return {*}\r
-     */\r
-    void DialView::DeInit()\r
-    {\r
-        if (container_ != nullptr)\r
-        {\r
-            container_->RemoveAll();\r
-            delete container_;\r
-            container_ = nullptr;\r
-        }\r
-        if (diallabel != nullptr)\r
-        {\r
-            delete diallabel;\r
-            diallabel = nullptr;\r
-        }\r
-        if (dialimage != nullptr)\r
-        {\r
-            delete dialimage;\r
-            dialimage = nullptr;\r
-        }\r
-        if (choose_button != nullptr)\r
-        {\r
-            delete choose_button;\r
-            choose_button = nullptr;\r
-        }\r
-        if (left_button != nullptr)\r
-        {\r
-            delete left_button;\r
-            left_button = nullptr;\r
-        }\r
-        if (right_button != nullptr)\r
-        {\r
-            delete right_button;\r
-            right_button = nullptr;\r
-        }\r
-        /* -------------------------------------------------------------------------- */\r
-        if (scrollView1_ != nullptr)\r
-        {\r
-            delete scrollView1_;\r
-            scrollView1_ = nullptr;\r
-        }\r
-        if (button5_ != nullptr)\r
-        {\r
-            delete button5_;\r
-            button5_ = nullptr;\r
-        }\r
-        if (button4_ != nullptr)\r
-        {\r
-            delete button4_;\r
-            button4_ = nullptr;\r
-        }\r
-        if (button3_ != nullptr)\r
-        {\r
-            delete button3_;\r
-            button3_ = nullptr;\r
-        }\r
-        if (button2_ != nullptr)\r
-        {\r
-            delete button2_;\r
-            button2_ = nullptr;\r
-        }\r
-        if (button1_ != nullptr)\r
-        {\r
-            delete button1_;\r
-            button1_ = nullptr;\r
-        }\r
-        /* -------------------------------------------------------------------------- */\r
-    }\r
-\r
-    /***\r
-     * @description:\r
-     * @return 加载\r
-     */\r
-    bool DialView::PreLoad()\r
-    {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " void DialView::PreLoad(void)");\r
-        if (!viewiInitStatus)\r
-        {\r
-            InitView();\r
-            viewiInitStatus = true;\r
-            return true;\r
-        }\r
-        return false;\r
-    }\r
-\r
-    void DialView::OnStart()\r
-    {\r
-        View<DialPresenter>::OnStart();\r
-        BaseView::RootView(Color::Black().full);\r
-\r
-        container_ = new UIScrollView();\r
-        if (container_ == nullptr)\r
-        {\r
-            return;\r
-        }\r
-        container_->SetPosition(0, 0);\r
-        container_->SetWidth(Screen::GetInstance().GetWidth());\r
-        container_->SetHeight(Screen::GetInstance().GetHeight());\r
-\r
-        // 创建 draglistener 实例并设置为拖动监听器\r
-        UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(DialPresenter::GetInstance());\r
-        if (draglistener == nullptr)\r
-        {\r
-            return;\r
-        }\r
-        container_->SetOnDragListener(draglistener);\r
-\r
-        container_->SetTouchable(true);\r
-        container_->SetDraggable(true);\r
-\r
-        if (!PreLoad())\r
-        {\r
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " void DialView::PreLoad(void) is error");\r
-        }\r
-\r
-        RootView::GetInstance()->Add(container_);\r
-    }\r
-\r
-    void DialView::OnSetUpView()\r
-    {\r
-\r
-        View<DialPresenter>::OnSetUpView();\r
-        Draw();\r
-    }\r
-\r
-    void DialView::OnTearDownView()\r
-    {\r
-\r
-        View<DialPresenter>::OnTearDownView();\r
-        return;\r
-    }\r
-\r
-    void DialView::OnStop()\r
-    {\r
-        View<DialPresenter>::OnStop();\r
-        RootView::GetInstance()->RemoveAll();\r
-        return;\r
-    }\r
-}\r
diff --git a/code/sdk/application/wearable/fd230app/nativeui/dial/src/Digital_clockView.cpp b/code/sdk/application/wearable/fd230app/nativeui/dial/src/Digital_clockView.cpp
deleted file mode 100644 (file)
index 1b3cb24..0000000
+++ /dev/null
@@ -1,907 +0,0 @@
-/***
- * @Author: Caisking 3449750381@qq.com
- * @Date: 2024-01-17 19:23:24
- * @LastEditors: Caisking 3449750381@qq.com
- * @LastEditTime: 2024-01-18 16:01:02
- * @FilePath: /FD230/code/sdk/application/wearable/nativeapp/nativeui/dial/src/Digital_clockView.cpp
- * @Description:
- * @
- * @Copyright (c) 2024 by Caisking , All Rights Reserved.
- */
-
-#include "dial/include/Digital_clockView.h"
-#include "common/image_cache_manager.h"
-#include "components/ui_view_group.h"
-#include "UiConfig.h"
-#include "ui_resource_image.h"
-#include <ui_scroll_view.h>
-#include "components/ui_button.h"
-#include <iostream>
-#include <fstream>
-#include <filesystem>
-#include <system_error>
-#include <sys/stat.h>
-#include "cJSON.h"
-#include <dirent.h>
-#include <regex>
-#include <iomanip>   // 用于格式化输出
-#include <stdexcept> //异常处理
-#include "timer.h"
-#include "uapi/linux/rtc.h"
-#include <iostream>
-#include <sstream>
-#include "common/image_cache_manager.h"
-
-#include "MainViewSample.h"
-
-#define PRINT_DEBUG_INFO printf("Function: %s, Line: %d\n", __PRETTY_FUNCTION__, __LINE__);
-
-namespace OHOS
-{
-    cJSON *cjson_json = NULL;
-    /***
-     * @description:
-     * @param {string} &filePath
-     * @return 设置json文件
-     */
-    void Digital_clockView::setJsonFilePath(const std::string &filePath)
-    {
-        std::string defaultFile = "/user/res/clocks/dialconfig/default.json";
-        std::ifstream sourceFile(filePath, std::ios::binary);                      // 打开源文件
-        std::ofstream targetFile(defaultFile, std::ios::binary | std::ios::trunc); // 打开目标文件,使用trunc标志来覆盖目标文件
-        //("%s|%s\n", defaultFile.c_str(), filePath.c_str());                  // 使用c_str()将std::string转换为C风格字符串
-        if (sourceFile && targetFile)
-        {
-            char buffer[1024]; // 缓冲区
-            while (sourceFile.read(buffer, sizeof(buffer)) || sourceFile.gcount())
-            {
-                targetFile.write(buffer, sourceFile.gcount());
-            }
-            if (sourceFile.eof())
-            {
-                // printf("File overwrite success\n"); // 使用printf打印成功消息
-                return; // 返回true表示文件拷贝成功
-            }
-            else
-            {
-                fprintf(stderr, "File overwrite failed\n"); // 使用fprintf打印错误消息
-            }
-        }
-        else
-        {
-            fprintf(stderr, "Unable to open file\n"); // 使用fprintf打印错误消息
-        }
-        sourceFile.close();
-        targetFile.close();
-    }
-    /**
-     * @description: 加载json文件
-     * @param {string} &filePath
-     * @return 加载json文件是否成功
-     */
-    bool loadJsonData(const std::string &filePath)
-    {
-
-        std::ifstream file(filePath);
-        if (file.is_open())
-        {
-            std::string json_string((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>());
-            file.close();
-            // 解析JSON数据
-            cjson_json = cJSON_Parse(json_string.c_str());
-            return true;
-        }
-        else
-        {
-            printf("Failed to open JSON file: %s\n", filePath.c_str());
-        }
-        return false;
-    }
-    /* -------------------------------------------------------------------------- */
-    static Digital_clockView *g_pDigital_clockView{nullptr};
-    Digital_clockView::Digital_clockView()
-    {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Digital_clockView::Digital_clockView");
-        SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
-        g_pDigital_clockView = this;
-    }
-    Digital_clockView::~Digital_clockView()
-    {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Digital_clockView::~Digital_clockView");
-        RemoveAll();
-        DeInit();
-        g_pDigital_clockView = nullptr;
-    }
-    Digital_clockView *Digital_clockView::GetInstance()
-    {
-        return g_pDigital_clockView;
-    }
-    /* -------------------------------------------------------------------------- */
-    /**
-     * @description: 生成动画的资源路径数组
-     * @param {char} *basePath
-     * @param {char} *fileExtension
-     * @param {int} numImages
-     * @return 动画的资源路径数组
-     */
-    const char **Digital_clockView::CreateImagePathsArray(const char *basePath, const char *fileExtension, int numImages)
-    {
-        const char **imagePaths = new const char *[numImages + 1]; // 多分配一个元素用于存储数组大小
-        char buffer[256];
-        int total_len = 0;
-        for (int i = 0; i < numImages; i++)
-        {
-            int filename_len = snprintf(buffer, sizeof(buffer), "%s%d.%s", basePath, i + 1, fileExtension);
-            imagePaths[i] = strdup(buffer);
-            total_len += filename_len;
-        }
-        imagePaths[numImages] = reinterpret_cast<const char *>(numImages); // 将数组大小信息存储在最后一个元素中
-        return imagePaths;
-    }
-    /***
-     * @description: 删除动画资源路径数组
-     * @param {char} *imagePaths 动画资源路径数组
-     * @return
-     */
-    void Digital_clockView::FreeImagePathsArray(const char **imagePaths)
-    {
-        int numImages = reinterpret_cast<int>(imagePaths[-1]); // 从最后一个元素中获取数组大小
-        for (int i = 0; i < numImages; i++)
-        {
-            free((void *)imagePaths[i]);
-        }
-        delete[] imagePaths;
-    }
-    /**
-     * @description: 判断路径是否为文件夹
-     * @param {string} &path
-     * @return 路径是否为文件夹
-     */
-    bool isDirectory(const std::string &path)
-    {
-        if (!path.empty() && path.back() == '/')
-        {
-            return true; // 路径以斜杠结尾,认为是文件夹
-        }
-        return false; // 其他情况
-    }
-    /**
-     * @brief 初始化UIImageAnimatorView,并设置为GIF动画。
-     *
-     * 该函数用于使用提供的GIF图像和属性初始化UIImageAnimatorView。
-     *
-     * @param imageAnimator 要初始化的UIImageAnimatorView对象的引用。
-     * @param paths GIF图像文件路径的数组。
-     * @param numFrames GIF中的帧数。
-     * @param left 视图的左侧位置。
-     * @param top 视图的顶部位置。
-     * @param width 视图的宽度。
-     * @param height 视图的高度。
-     * @param viewId 视图的ID。
-     * @param time 视图的帧速
-     * @return 如果初始化成功则返回true,否则返回false。
-     */
-    void Digital_clockView::InitImageAnimatorSource(UIImageAnimatorView *&imageAnimator, const char **imagePaths, int numFrames, int left, int top, int width, int height, const char *viewId, int time)
-    {
-        if (imageAnimator == nullptr)
-        {
-            imageAnimator = new UIImageAnimatorView();
-        }
-        imageAnimator->SetPosition(left, top);
-        imageAnimator->Resize(width, height);
-        imageAnimator->SetViewId(viewId);
-        imageAnimator->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);
-        imageAnimator->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
-
-        ImageAnimatorInfo *imageAnimatorInfo = new ImageAnimatorInfo[numFrames];
-        for (int i = 0; i < numFrames; i++)
-        {
-            imageAnimatorInfo[i].imagePath = imagePaths[i];
-            imageAnimatorInfo[i].pos.x = left;
-            imageAnimatorInfo[i].pos.y = top;
-            imageAnimatorInfo[i].width = width;
-            imageAnimatorInfo[i].height = height;
-            imageAnimatorInfo[i].imageType = IMG_SRC_FILE_PATH;
-        }
-
-        imageAnimator->SetImageAnimatorSrc(imageAnimatorInfo, numFrames, time); // 200 is the default delay time
-        imageAnimator->SetTimeOfPause(time);
-        imageAnimator->SetRepeatTimes(1);
-        imageAnimator->SetReverse(true);
-        imageAnimator->SetVisible(true);
-    }
-    /**
-     * @description: 初始化背景
-     * @return 初始化背景是否成功
-     */
-    bool Digital_clockView::Initbackground()
-    {
-        // 初始化背景
-        if (background == nullptr)
-        {
-            background = new UIImageView();
-        }
-        background->SetPosition(0, 0);            // widget's left position and top position
-        background->Resize(466, 466);             // widget's width and height
-        background->SetViewId("imagebackground"); // Set style
-        cJSON *background_cjson = cJSON_GetObjectItem(cjson_json, "background");
-        std::string backgroundimagesPath = cJSON_GetObjectItem(background_cjson, "backgroundimagesPath")->valuestring;
-        // Check if the path is a directory
-        if (isDirectory(backgroundimagesPath))
-        {
-            // Handle GIF animation
-            // Add code to set the background as a GIF animation
-            cJSON *size = cJSON_GetObjectItem(background_cjson, "size");
-            cJSON *coordinates = cJSON_GetObjectItem(background_cjson, "coordinates");
-            int background_count = cJSON_GetObjectItem(background_cjson, "background_count")->valueint;
-            int background_FPS = cJSON_GetObjectItem(background_cjson, "background_FPS")->valueint;
-            int background_left = cJSON_GetObjectItem(coordinates, "left")->valueint;
-            int background_top = cJSON_GetObjectItem(coordinates, "top")->valueint;
-            int background_width = cJSON_GetObjectItem(size, "width")->valueint;
-            int background_height = cJSON_GetObjectItem(size, "height")->valueint;
-            imagePaths = CreateImagePathsArray(backgroundimagesPath.c_str(), "bin", background_count);
-
-            InitImageAnimatorSource(backgroundAnimator, imagePaths, background_count, background_left, background_top,
-                                    background_width, background_height, "imageAnimator1", background_FPS);
-        }
-        else
-        {
-            // Get the file extension
-            std::string backgroundImagePathStr = backgroundimagesPath;
-            std::string fileExtension = backgroundImagePathStr.substr(backgroundImagePathStr.find_last_of(".") + 1);
-            if (fileExtension == "bin")
-            {
-                // Handle static image
-                ImageInfo *img = ImageCacheManager::GetInstance().LoadSingleRes(backgroundimagesPath.c_str());
-                background->SetSrc(img);
-            }
-            else if (fileExtension == "mp4")
-            {
-                // Handle dynamic background (video)
-                // Add code to set the background as a video
-            }
-        }
-        // 增加背景
-        Add(background);
-        return true;
-        // background->SetVisible(true);
-    }
-
-    /**
-     * @description: 初始化数字图片
-     * @param {int} left
-     * @param {int} top
-     * @param {char} *imagePath
-     * @param {char} *viewId
-     * @param {int} offsetX
-     * @param {int} offsetY
-     * @return
-     */
-    void Digital_clockView::addImageView(int left, int top, const char *imagePath, const char *viewId, int offsetX, int offsetY)
-    {
-        UIImageView *imageView = new UIImageView();
-        imageView->SetPosition(left + offsetX, top + offsetY);
-        imageView->Resize(100, 100);
-        imageView->SetViewId(viewId);
-        imageView->SetSrc(imagePath);
-        Add(imageView);
-        // imageView->SetVisible(true);
-    }
-    /**
-     * @description: 初始化数字表盘
-     * @return 初始化数字表盘是否成功
-     */
-    bool Digital_clockView ::Initdigit()
-    {
-        cJSON *background_cjson = cJSON_GetObjectItem(cjson_json, "background");
-        std::string backgroundimagesPath = cJSON_GetObjectItem(background_cjson, "backgroundimagesPath")->valuestring;
-        if (isDirectory(backgroundimagesPath))
-        {
-            backgroundAnimator->Start();
-            Add(backgroundAnimator);
-            // backgroundAnimator->SetVisible(true);
-        }
-
-        /* -------------------------------------------------------------------------- */
-        struct tm pTM;
-        time_t seconds;
-        time(&seconds);
-        localtime_r(&seconds, &pTM);
-        // 解析小时和分钟
-        int hour = pTM.tm_hour;
-        int minute = pTM.tm_min;
-        // 将小时和分钟转换为字符串,并更新显示
-        stringtime = (hour < 10 ? "0" : "") + std::to_string(hour) + ":" + (minute < 10 ? "0" : "") + std::to_string(minute);
-        /* -------------------------------------------------------------------------- */
-        // updateClockTime(stringtime);
-        cJSON *digits = cJSON_GetObjectItem(cjson_json, "digits");
-        std::string playformat = cJSON_GetObjectItem(digits, "playformat")->valuestring;
-        if (playformat == "picturesdisplay")
-        {
-            cJSON *picturesdisplay = cJSON_GetObjectItem(digits, "picturesdisplay");
-            cJSON *coordinates = cJSON_GetObjectItem(picturesdisplay, "coordinates");
-            digitspath = cJSON_GetObjectItem(cjson_json, "digitspath")->valuestring;
-            int hour1_left = cJSON_GetObjectItem(coordinates, "left")->valueint;
-            int hour1_top = cJSON_GetObjectItem(coordinates, "top")->valueint;
-            int digitsize = cJSON_GetObjectItem(digits, "digitsize")->valueint;
-
-            addImageView(hour1_left, hour1_top, (digitspath + stringtime.substr(0, 1) + ".bin").c_str(), "hour1", 0, 0);
-            addImageView(hour1_left, hour1_top, (digitspath + stringtime.substr(1, 1) + ".bin").c_str(), "hour1", digitsize, 0);
-            addImageView(hour1_left, hour1_top, (digitspath + "point.bin").c_str(), "colon", digitsize * 2 + 10, 20);
-            addImageView(hour1_left, hour1_top, (digitspath + stringtime.substr(3, 1) + ".bin").c_str(), "minute1", digitsize * 3, 0);
-            addImageView(hour1_left, hour1_top, (digitspath + stringtime.substr(4, 1) + ".bin").c_str(), "minute2", digitsize * 4, 0);
-            // printf("--%s--\n", digitspath.c_str());
-            if (mytimeimageCallback_ == nullptr)
-            {
-                mytimeimageCallback_ = new mytimeimageCallback(hour1, hour2, minute1, minute2, digitspath, stringtime);
-                timeimageanimator_ = new Animator(mytimeimageCallback_, minute2, 10000, true);
-            }
-            // callback.mytimeimageCallback("14:57");
-            // timeimageanimator_->Start();
-        }
-        else if (playformat == "textdisplay")
-        {
-            cJSON *textdisplay = cJSON_GetObjectItem(digits, "textdisplay");
-            cJSON *coordinates = cJSON_GetObjectItem(textdisplay, "coordinates");
-            int time_left = cJSON_GetObjectItem(coordinates, "left")->valueint;
-            int time_top = cJSON_GetObjectItem(coordinates, "top")->valueint;
-            int digitsize = cJSON_GetObjectItem(digits, "digitsize")->valueint;
-            // Add Label to App
-            if (timeLable == nullptr)
-            {
-                timeLable = new UILabel();
-            }
-            timeLable->SetPosition(time_left, time_top); // widget's left position and top position
-            timeLable->Resize(200, 60);                  // widget's width and height
-            timeLable->SetViewId("label1");              // Set style
-            timeLable->SetStyle(STYLE_TEXT_FONT, digitsize);
-
-            timeLable->SetText(stringtime.c_str());
-            timeLable->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
-            timeLable->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
-            timeLable->SetRollSpeed(0);
-            timeLable->SetFont(DEFAULT_VECTOR_FONT_FILENAME, digitsize);
-
-            // Add to rootView
-            Add(timeLable);
-            // timeLable->SetVisible(true);
-
-            if (timeLableCallback_ == nullptr)
-            {
-                timeLableCallback_ = new timeLableCallback(timeLable, dateLable, weekLable);
-                timeLableanimator_ = new Animator(timeLableCallback_, timeLable, 1000, true);
-            }
-            timeLableanimator_->Start();
-        }
-        return true;
-    }
-    /**
-     * @description: 初始化指针表盘
-     * @return: 初始化指针表盘是否成功
-     */
-    bool Digital_clockView::Initpointer()
-    {
-        cJSON *hands = cJSON_GetObjectItem(cjson_json, "hands");
-        cJSON *hourHand = cJSON_GetObjectItem(hands, "hourHand");
-        cJSON *minuteHand = cJSON_GetObjectItem(hands, "minuteHand");
-        cJSON *secondHand = cJSON_GetObjectItem(hands, "secondHand");
-        cJSON *hour_coordinates = cJSON_GetObjectItem(hourHand, "coordinates");
-        cJSON *minute_coordinates = cJSON_GetObjectItem(minuteHand, "coordinates");
-        cJSON *second_coordinates = cJSON_GetObjectItem(secondHand, "coordinates");
-        const char *handspath = cJSON_GetObjectItem(cjson_json, "handspath")->valuestring;
-
-        signed short HOUR_POINT_POSITION_X = static_cast<signed short>(cJSON_GetObjectItem(hour_coordinates, "HOUR_POINT_POSITION_X")->valueint);
-        signed short HOUR_POINT_POSITION_Y = static_cast<signed short>(cJSON_GetObjectItem(hour_coordinates, "HOUR_POINT_POSITION_Y")->valueint);
-        signed short HOUR_POINT_CENTER_X = static_cast<signed short>(cJSON_GetObjectItem(hour_coordinates, "HOUR_POINT_CENTER_X")->valueint);
-        signed short HOUR_POINT_CENTER_Y = static_cast<signed short>(cJSON_GetObjectItem(hour_coordinates, "HOUR_POINT_CENTER_Y")->valueint);
-        signed short MINUTE_POINT_POSITION_X = static_cast<signed short>(cJSON_GetObjectItem(minute_coordinates, "MINUTE_POINT_POSITION_X")->valueint);
-        signed short MINUTE_POINT_POSITION_Y = static_cast<signed short>(cJSON_GetObjectItem(minute_coordinates, "MINUTE_POINT_POSITION_Y")->valueint);
-        signed short MINUTE_POINT_CENTER_X = static_cast<signed short>(cJSON_GetObjectItem(minute_coordinates, "MINUTE_POINT_CENTER_X")->valueint);
-        signed short MINUTE_POINT_CENTER_Y = static_cast<signed short>(cJSON_GetObjectItem(minute_coordinates, "MINUTE_POINT_CENTER_Y")->valueint);
-        signed short SECOND_POINT_POSITION_X = static_cast<signed short>(cJSON_GetObjectItem(second_coordinates, "SECOND_POINT_POSITION_X")->valueint);
-        signed short SECOND_POINT_POSITION_Y = static_cast<signed short>(cJSON_GetObjectItem(second_coordinates, "SECOND_POINT_POSITION_Y")->valueint);
-        signed short SECOND_POINT_CENTER_X = static_cast<signed short>(cJSON_GetObjectItem(second_coordinates, "SECOND_POINT_CENTER_X")->valueint);
-        signed short SECOND_POINT_CENTER_Y = static_cast<signed short>(cJSON_GetObjectItem(second_coordinates, "SECOND_POINT_CENTER_Y")->valueint);
-
-        // Add SweepClock to App
-        if (sweepClock1_ == nullptr)
-        {
-            sweepClock1_ = new UISweepClock();
-        }
-        sweepClock1_->SetPosition(0, 0);        // widget's left position and top position
-        sweepClock1_->Resize(466, 466);         // widget's width and height
-        sweepClock1_->SetViewId("sweepClock1"); // Set style
-        sweepClock1_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);
-        sweepClock1_->SetStyle(STYLE_BACKGROUND_OPA, 0x00);
-
-        sweepClock1_->SetWorkMode(UISweepClock::WorkMode::NORMAL);
-        Image *sweepClock1HourImage = new Image();
-        std::string HourImagePath = std::string(handspath) + "hour.bin";
-
-        sweepClock1HourImage->SetSrc(HourImagePath.c_str());
-
-        sweepClock1_->SetHandImage(UISweepClock::HandType::HOUR_HAND, *sweepClock1HourImage, {HOUR_POINT_POSITION_X, HOUR_POINT_POSITION_Y}, {HOUR_POINT_CENTER_X, HOUR_POINT_CENTER_Y});
-
-        Image *sweepClock1MinuteImage = new Image();
-        std::string MinutePath = std::string(handspath) + "minute.bin";
-        sweepClock1MinuteImage->SetSrc(MinutePath.c_str());
-        sweepClock1_->SetHandImage(UISweepClock::HandType::MINUTE_HAND, *sweepClock1MinuteImage, {MINUTE_POINT_POSITION_X, MINUTE_POINT_POSITION_Y}, {MINUTE_POINT_CENTER_X, MINUTE_POINT_CENTER_Y});
-
-        Image *sweepClock1SecondImage = new Image();
-        std::string SecondPath = std::string(handspath) + "second.bin";
-        sweepClock1SecondImage->SetSrc(SecondPath.c_str());
-        sweepClock1_->SetHandImage(UISweepClock::HandType::SECOND_HAND, *sweepClock1SecondImage, {SECOND_POINT_POSITION_X, SECOND_POINT_POSITION_Y}, {SECOND_POINT_CENTER_X, SECOND_POINT_CENTER_Y});
-
-        uint16_t sweepClock1realMilliSecond = 40 * 1000;
-        sweepClock1_->SetSweepTime12Hour(10, 20, sweepClock1realMilliSecond, true);
-        sweepClock1callback_ = new SweepClockCallback(sweepClock1_);
-        sweepClock1animator_ = new Animator(sweepClock1callback_, sweepClock1_, 0, true);
-        sweepClock1animator_->Start();
-        // Add to rootView
-        Add(sweepClock1_);
-        return true;
-        // sweepClock1_->SetVisible(true);
-    }
-    /**
-     * @description: 获取格式化日期,根据不同的日期格式获取
-     * @param {string} &dateStr
-     * @param {string} &displayformat
-     * @return 格式化日期
-     */
-    std::string FormatDate(const std::string &dateStr, const std::string &displayformat)
-    {
-        // 定义默认返回值
-        std::string formattedDate = "Invalid format";
-        // 输出日期字符串和子字符串
-        std::cout << "--date: " << dateStr << "--" << dateStr.substr(0, 4) << "--" << dateStr.substr(5, 2) << "--" << dateStr.substr(8, 2) << std::endl;
-        int year = std::stoi(dateStr.substr(0, 4));  // 从第0个字符开始,提取4个字符作为年份
-        int month = std::stoi(dateStr.substr(5, 2)); // 从第5个字符开始,提取2个字符作为月份
-        int day = std::stoi(dateStr.substr(8, 2));   // 从第8个字符开始,提取2个字符作为日期
-        if (displayformat == "yyyy-mm-dd")
-        {
-            formattedDate = std::to_string(year) + "-" + (month < 10 ? "0" : "") + std::to_string(month) + "-" + (day < 10 ? "0" : "") + std::to_string(day);
-        }
-        else if (displayformat == "mm月dd日")
-        {
-            formattedDate = std::to_string(month) + "月" + (day < 10 ? "0" : "") + std::to_string(day) + "号";
-        }
-        else if (displayformat == "dd")
-        {
-            formattedDate = (day < 10 ? "0" : "") + std::to_string(day);
-        }
-
-        // 添加其他显示格式的处理逻辑
-        return formattedDate;
-    }
-    /**
-     * @description: 初始化日期
-     * @return 初始化日期是否成功
-     */
-    bool Digital_clockView ::Initdata()
-    {
-        // loadJsonData(JosnfilePath);
-        cJSON *date = cJSON_GetObjectItem(cjson_json, "date");
-        cJSON *textdisplay = cJSON_GetObjectItem(date, "textdisplay");
-        cJSON *coordinates = cJSON_GetObjectItem(textdisplay, "coordinates");
-
-        // const char *font = cJSON_GetObjectItem(textdisplay, "font")->valuestring;
-        int fontsize = cJSON_GetObjectItem(textdisplay, "fontsize")->valueint;
-        int date_left = cJSON_GetObjectItem(coordinates, "left")->valueint;
-        int date_top = cJSON_GetObjectItem(coordinates, "top")->valueint;
-
-        // Add Label to App
-        if (dateLable == nullptr)
-        {
-            dateLable = new UILabel();
-        }
-        dateLable->SetPosition(date_left, date_top); // widget's left position and top position
-        dateLable->SetViewId("label1");              // Set style
-        dateLable->SetStyle(STYLE_TEXT_FONT, fontsize);
-        /* -------------------------------------------------------------------------- */
-        // 将时间字段转换为字符串
-        struct tm pTM;
-        time_t seconds;
-        time(&seconds);
-        localtime_r(&seconds, &pTM);
-        std::string yearStr = std::to_string(pTM.tm_year + 1900);                                                             // 年份需要加上 1900
-        std::string monthStr = (pTM.tm_mon + 1 < 10) ? "0" + std::to_string(pTM.tm_mon + 1) : std::to_string(pTM.tm_mon + 1); // 月份是从 0 开始的,需要加上 1
-        std::string dayStr = (pTM.tm_mday < 10) ? "0" + std::to_string(pTM.tm_mday) : std::to_string(pTM.tm_mday);
-        // 连接成日期字符串
-        std::string dateStr = yearStr + "-" + monthStr + "-" + dayStr;
-        /* -------------------------------------------------------------------------- */
-        std::string displayformat = cJSON_GetObjectItem(textdisplay, "displayformat")->valuestring;
-        // 调用日期格式化函数
-        std::string formattedDate = FormatDate(dateStr, displayformat);
-
-        dateLable->SetText(formattedDate.c_str());
-        dateLable->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
-        dateLable->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
-        dateLable->SetRollSpeed(0);
-        dateLable->SetFont(DEFAULT_VECTOR_FONT_FILENAME, fontsize);
-
-        // Add to rootView
-        Add(dateLable);
-        return true;
-        // dateLable->SetVisible(true);
-    };
-    /**
-     * @description: 初始化星期
-     * @return 初始化星期是否成功
-     */
-    bool Digital_clockView ::Initweek()
-    {
-        // loadJsonData(JosnfilePath);
-        cJSON *week = cJSON_GetObjectItem(cjson_json, "week");
-        cJSON *textdisplay = cJSON_GetObjectItem(week, "textdisplay");
-        cJSON *coordinates = cJSON_GetObjectItem(textdisplay, "coordinates");
-        cJSON *displayformat = cJSON_GetObjectItem(textdisplay, "displayformat");
-        // const char *font = cJSON_GetObjectItem(textdisplay, "font")->valuestring;
-        int fontsize = cJSON_GetObjectItem(textdisplay, "fontsize")->valueint;
-        int week_left = cJSON_GetObjectItem(coordinates, "left")->valueint;
-        int week_top = cJSON_GetObjectItem(coordinates, "top")->valueint;
-        // Add Label to App
-        if (weekLable == nullptr)
-        {
-            weekLable = new UILabel();
-        }
-        weekLable->SetPosition(week_left, week_top); // widget's left position and top position
-        // weekLable->Resize(78, 60);        // widget's width and height
-        weekLable->SetViewId("label2"); // Set style
-        weekLable->SetStyle(STYLE_TEXT_FONT, fontsize);
-
-        cJSON *weekformat = cJSON_GetObjectItem(displayformat, "weekformat");
-        std ::string weekStr;
-        if (weekformat != nullptr && cJSON_IsArray(weekformat))
-        {
-            struct tm pTM;
-            time_t seconds;
-            time(&seconds);
-            localtime_r(&seconds, &pTM);
-            cJSON *weekformat1 = cJSON_GetArrayItem(weekformat, pTM.tm_wday);
-            if (weekformat1 != nullptr && cJSON_IsString(weekformat1))
-            {
-                weekStr = weekformat1->valuestring;
-            }
-        }
-        weekLable->SetText(weekStr.c_str());
-        weekLable->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
-        weekLable->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
-        weekLable->SetRollSpeed(0);
-        weekLable->SetFont(DEFAULT_VECTOR_FONT_FILENAME, fontsize);
-
-        // Add to rootView
-        Add(weekLable);
-        return true;
-        // weekLable->SetVisible(true);
-    };
-    /**
-     * @description: 初始化电量
-     * @return 初始化电量是否成功
-     */
-    bool Digital_clockView ::Initbattery()
-    {
-        // loadJsonData(JosnfilePath);
-        cJSON *battery = cJSON_GetObjectItem(cjson_json, "battery");
-        cJSON *progress_json = cJSON_GetObjectItem(battery, "progress");
-        cJSON *textdisplay = cJSON_GetObjectItem(battery, "textdisplay");
-        cJSON *coordinates = cJSON_GetObjectItem(textdisplay, "coordinates");
-        cJSON *coordinates_progress = cJSON_GetObjectItem(progress_json, "coordinates");
-        cJSON *size_progress = cJSON_GetObjectItem(progress_json, "size");
-        // const char *font = cJSON_GetObjectItem(textdisplay, "font")->valuestring;
-        int fontsize = cJSON_GetObjectItem(textdisplay, "fontsize")->valueint;
-        int battery_left = cJSON_GetObjectItem(coordinates, "left")->valueint;
-        int battery_top = cJSON_GetObjectItem(coordinates, "top")->valueint;
-        int progress_left = cJSON_GetObjectItem(coordinates_progress, "left")->valueint;
-        int progress_top = cJSON_GetObjectItem(coordinates_progress, "top")->valueint;
-        int progress_width = cJSON_GetObjectItem(size_progress, "width")->valueint;
-        int progress_height = cJSON_GetObjectItem(size_progress, "height")->valueint;
-
-        float voltage = 0.0F;
-        uint8_t value = 0;
-        value = battery_get_voltage(&voltage);
-        // Add BoxProgress to App
-        if (progress == nullptr)
-        {
-            progress = new UIBoxProgress();
-        }
-        progress->SetPosition(progress_left, progress_top); // widget's left position and top position
-        progress->Resize(progress_width, progress_height);  // widget's width and height
-        progress->SetViewId("progress1");                   // Set style
-        progress->SetValidHeight(progress_height);
-        progress->SetValidWidth(progress_width);
-        progress->SetValue(value);
-        // Set BackgroundStyle
-        progress->SetBackgroundStyle(STYLE_BACKGROUND_OPA, 0x00);
-        progress->SetBackgroundStyle(STYLE_TEXT_COLOR, 0xff000000);
-        // Set ForegroundStyle
-        progress->SetForegroundStyle(STYLE_BACKGROUND_COLOR, 0xff2195F6);
-        progress->SetForegroundStyle(STYLE_TEXT_COLOR, 0xff000000);
-        progress->SetForegroundStyle(STYLE_LINE_COLOR, 0xff45A5FF);
-        const char *progress1ForeImageSrc = "/user/res/Battery/Battery_Nomoal.bin";
-        const char *progress1BackImageSrc = nullptr;
-        progress->SetImage(progress1ForeImageSrc, progress1BackImageSrc);
-        // Add to rootView
-        Add(progress);
-        // progress->SetVisible(true);
-
-        // Add Label to App
-        if (batteryLable == nullptr)
-        {
-            batteryLable = new UILabel();
-        }
-        batteryLable->SetPosition(battery_left, battery_top); // widget's left position and top position
-        // batteryLable->Resize(200, 60);       // widget's width and height
-        batteryLable->SetViewId("label3"); // Set style
-        batteryLable->SetStyle(STYLE_TEXT_FONT, fontsize);
-
-        batteryLable->SetText((std::to_string(value) + "%").c_str());
-        batteryLable->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
-        batteryLable->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
-        batteryLable->SetRollSpeed(0);
-        batteryLable->SetFont(DEFAULT_VECTOR_FONT_FILENAME, fontsize);
-        // Add to rootView
-        Add(batteryLable);
-        // batteryLable->SetVisible(true);
-
-        // Add ImageView to App
-        if (charge == nullptr)
-        {
-            charge = new UIImageView();
-        }
-        charge->SetPosition(190, 27); // widget's left position and top position
-        charge->Resize(100, 100);     // widget's width and height
-        charge->SetViewId("image1");  // Set style
-        Add(charge);
-
-        progress1callback_ = new myProgressCallback(progress, batteryLable, charge);
-        progress1animator_ = new Animator(progress1callback_, progress, 1000, true);
-        progress1animator_->Start();
-        return true;
-    };
-    /***
-     * @description: 添加切换界面按键
-     * @return 添加按键是否成功
-     */
-    bool Digital_clockView ::AddButton()
-    {
-
-        // Add Button to App
-        if (changebutton == nullptr)
-        {
-            changebutton = new UIButton();
-        }
-        changebutton->SetPosition(0, 0);
-        changebutton->Resize(466, 466);
-        changebutton->SetViewId(CHANGEBUTTON);
-        changebutton->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);
-        changebutton->SetStyle(STYLE_BACKGROUND_OPA, 0x00);
-        changebutton->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xffffffff, UIButton::PRESSED);
-        changebutton->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);
-        changebutton->SetStyleForState(STYLE_BORDER_COLOR, 0xffffffff, UIButton::PRESSED);
-        changebutton->SetStyleForState(STYLE_BORDER_OPA, 0x00, UIButton::PRESSED);
-
-        UIView::OnLongPressListener *buttonLongPress = static_cast<UIView::OnLongPressListener *>(MainPresenterSample::GetInstance());
-        changebutton->SetOnLongPressListener(buttonLongPress);
-        // Add to rootView
-        Add(changebutton);
-        return true;
-    }
-    /**
-     * @description: 初始化页面
-     * @return 初始化页面是否成功
-     */
-    bool Digital_clockView ::InitView()
-    {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bool Digital_clockView ::InitView()");
-        if (loadJsonData(JosnfilePath))
-        {
-            std::string Dialtype = cJSON_GetObjectItem(cjson_json, "Dialtype")->valuestring;
-            Initbackground();
-            if (Dialtype == "pointer")
-            {
-                Initpointer();
-            }
-            else
-            {
-                Initdigit();
-            }
-            Initdata();
-            Initweek();
-            Initbattery();
-            /* -------------------------------------------------------------------------- */
-#if XTS_SUPPORT
-            if (XTSLabel == nullptr)
-            {
-                XTSLabel = new UILabel();
-            }
-            XTSLabel->SetPosition(130, 273); // widget's left position and top position
-            XTSLabel->Resize(200, 60);       // widget's width and height
-            XTSLabel->SetViewId("label1");   // Set style
-            XTSLabel->SetStyle(STYLE_TEXT_FONT, 30);
-
-            XTSLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
-            XTSLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
-            XTSLabel->SetRollSpeed(0);
-            XTSLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
-            Add(XTSLabel);
-            xtsCallback_ = new XTSCallback(XTSLabel);
-            xtsanimator_ = new Animator(xtsCallback_, XTSLabel, 1000, true);
-            xtsanimator_->Start();
-#endif
-            /* -------------------------------------------------------------------------- */
-            AddButton();
-            cJSON_Delete(cjson_json);
-        }
-        SetCoverable(true);
-        return true;
-    }
-    /**
-     * @description: 删除组件
-     * @return {*}
-     */
-    void Digital_clockView::DeInit()
-    {
-        /* -------------------------------------------------------------------------- */
-        delete background;
-        background = nullptr;
-        delete hour1;
-        hour1 = nullptr;
-        delete hour2;
-        hour2 = nullptr;
-        delete colon;
-        colon = nullptr;
-        delete minute1;
-        minute1 = nullptr;
-        delete minute2;
-        minute2 = nullptr;
-        delete timeLable;
-        timeLable = nullptr;
-        delete dateLable;
-        dateLable = nullptr;
-        delete weekLable;
-        weekLable = nullptr;
-        delete batteryLable;
-        batteryLable = nullptr;
-        delete progress;
-        progress = nullptr;
-        delete charge;
-        charge = nullptr;
-        /* -------------------------------------------------------------------------- */
-        if (timeLableanimator_ != nullptr)
-        {
-            timeLableanimator_->Stop();
-            delete timeLableanimator_;
-            timeLableanimator_ = nullptr;
-        }
-        if (timeLableCallback_ != nullptr)
-        {
-            delete timeLableCallback_;
-            timeLableCallback_ = nullptr;
-        }
-        /* -------------------------------------------------------------------------- */
-        if (mytimeimageCallback_ != nullptr)
-        {
-            delete mytimeimageCallback_;
-            mytimeimageCallback_ = nullptr;
-        }
-        if (timeimageanimator_ != nullptr)
-        {
-            timeimageanimator_->Stop();
-            delete timeimageanimator_;
-            timeimageanimator_ = nullptr;
-        }
-        /* -------------------------------------------------------------------------- */
-        if (progress1callback_ != nullptr)
-        {
-            delete progress1callback_;
-            progress1callback_ = nullptr;
-        }
-        if (progress1animator_ != nullptr)
-        {
-            progress1animator_->Stop();
-            delete progress1animator_;
-            progress1animator_ = nullptr;
-        }
-        /* -------------------------------------------------------------------------- */
-        if (sweepClock1callback_ != nullptr)
-        {
-            delete sweepClock1callback_;
-            sweepClock1callback_ = nullptr;
-        }
-        if (sweepClock1animator_ != nullptr)
-        {
-            sweepClock1animator_->Stop();
-            delete sweepClock1animator_;
-            sweepClock1animator_ = nullptr;
-        }
-        /* -------------------------------------------------------------------------- */
-        if (backgroundAnimator != nullptr)
-        {
-            backgroundAnimator->Stop();
-            delete backgroundAnimator;
-            backgroundAnimator = nullptr;
-        }
-        /* -------------------------------------------------------------------------- */
-        delete XTSLabel;
-        XTSLabel = nullptr;
-        if (xtsCallback_ != nullptr)
-        {
-            delete xtsCallback_;
-            xtsCallback_ = nullptr;
-        }
-        if (xtsanimator_ != nullptr)
-        {
-            xtsanimator_->Stop();
-            delete xtsanimator_;
-            xtsanimator_ = nullptr;
-        }
-        /* -------------------------------------------------------------------------- */
-    }
-
-    /***
-     * @description: 加载
-     * @return {*}
-     */
-    void Digital_clockView::PreLoad(void)
-    {
-        if (!viewiInitStatus)
-        {
-            InitView();
-            viewiInitStatus = true;
-        }
-    }
-
-    void Digital_clockView::UnLoad(void)
-    {
-        // ImageCacheManager::GetInstance().UnloadSingleRes(RES_PATH"breath.bin");
-    }
-
-    void Digital_clockView::ClockAnimatorStart(void)
-    {
-        if (backgroundAnimator != nullptr)
-        {
-            backgroundAnimator->Start();
-            backgroundAnimator->Start();
-        }
-        if (progress1animator_ != nullptr)
-        {
-            progress1animator_->Start();
-            progress1animator_->Start();
-        }
-        if (sweepClock1animator_ != nullptr)
-        {
-            sweepClock1animator_->Start();
-            sweepClock1animator_->Start();
-        }
-        if (timeLableanimator_ != nullptr)
-        {
-            timeLableanimator_->Start();
-            timeLableanimator_->Start();
-        }
-    }
-
-    void Digital_clockView::ClockAnimatorStop(void)
-    {
-        if (backgroundAnimator != nullptr)
-        {
-            backgroundAnimator->Stop();
-            backgroundAnimator->Stop();
-        }
-        if (progress1animator_ != nullptr)
-        {
-            progress1animator_->Stop();
-            progress1animator_->Stop();
-        }
-        if (sweepClock1animator_ != nullptr)
-        {
-            sweepClock1animator_->Stop();
-            sweepClock1animator_->Stop();
-        }
-        if (timeLableanimator_ != nullptr)
-        {
-            timeLableanimator_->Stop();
-            timeLableanimator_->Stop();
-        }
-    }
-
-}
index c6d4d7f..e073bce 100644 (file)
-#ifndef HEART_MODEL_H
-#define HEART_MODEL_H
-
-#include <time.h>
-#include "broadcast_feature.h"
-#include "broadcast_service.h"
-#include "samgr_lite.h"
-#include "MainClockView.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-int PushOHOSMsgToHeartModel(Request *request);
-void HeartDataSubscribeTopic(Topic topic);
-void HearDatatUnsubscribeTopic(Topic topic);
-
-#define HEART_ALL_POINTS 360
-
-typedef struct {
-    uint16_t x;
-    uint16_t y;
-    bool flag;
-} Point;
-
-typedef struct {
-    /** X coordinate */
-    uint16_t x;
-    /** Y coordinate */
-    uint16_t y;
-} HeartPoint;
-
-typedef struct {
-    uint16_t perSec;
-    uint16_t rest;
-    uint16_t minX;
-    uint16_t minValue;
-    uint16_t maxX;
-    uint16_t maxValue;
-    uint16_t index;
-    Point value[HEART_ALL_POINTS];
-} HeartInfo;
-
-#pragma pack(4)
-typedef struct {
-    uint16_t perSec;
-    uint16_t rest;
-    uint16_t minX;
-    uint16_t minValue;
-    uint16_t maxX;
-    uint16_t maxValue;
-    uint16_t index;
-    HeartPoint value[HEART_ALL_POINTS];
-} HeartDatas;
-
-#pragma pack()
-
-namespace OHOS {
-#define HEART_AVE_NUM 360
-#define HEART_RATE_LIMIT_UPPER 200
-#define HEART_RATE_LIMIT_LOWER 0
-#define INVALID_HEART_VALUE ((int16)0xFFFF)
-#define NUM_1 1
-#define NUM_2 2
-#define NUM_3 3
-#define NUM_4 4
-#define NUM_5 5
-#define NUM_6 6
-#define NUM_7 7
-#define NUM_16 16
-#define NUM_99 99
-
-typedef struct {
-    uint32_t heartRatePerSec;
-    Point heartRateAvg[HEART_AVE_NUM];
-    uint32_t heartRateRest;
-    Point heartRateMax;
-    Point heartRateMin;
-} HealthAllDatas;
-
-class HeartModel {
-public:
-    HeartModel();
-    ~HeartModel();
-    static HeartModel *GetInstance(void);
-    void ObtainingHeartRateData(void);
-    void PushHealthDatas(HealthMsg healthMsg);
-    Point* GetAveHeartRate(void);
-    uint16_t GetAveHeartRateCount(void);
-    void SetAveHeartRateCount(uint16_t value);
-    Point* GetMaximumHeartRate(void);
-    void Init(void);
-    void HeartRatePros(HeartDatas *heartInfo);
-    void RefreshHeartRateScreen(uint16_t perSec, uint16_t rest, uint16_t maxRate, uint16_t minRate);
-    void ClearHeartData(void);
-    void HandleMaxHeart(uint16_t coord, uint16_t value);
-    void HandleMinHeart(uint16_t coord, uint16_t value);
-    void SetHeartRatePerSec(uint32_t sec);
-    void SetWearStatus(bool status);
-    bool GetWearStatus(void);
-    uint16_t GetHeartRateMax(void);
-    uint16_t GetHeartRateMin(void);
-
-private:
-    HealthAllDatas healthDatas;
-    uint16_t pretime{0};
-    uint16_t entryTimes{0};
-    uint16_t aveCount{0};
-    uint16_t preMaxValue{0};
-    uint16_t preMaxX{NUM_1};
-    uint16_t preMinValue{HEART_RATE_LIMIT_UPPER};
-    uint16_t preMinX{NUM_1};
-    uint16_t countMax{0};
-    uint16_t countMin{0};
-    bool wearStatus{false};
-};
-}
-
-#ifdef __cplusplus
-}
-#endif
-#endif
+#ifndef HEART_MODEL_H\r
+#define HEART_MODEL_H\r
+\r
+#include <time.h>\r
+#include "broadcast_feature.h"\r
+#include "broadcast_service.h"\r
+#include "samgr_lite.h"\r
+#include "MainClockView.h"\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+int PushOHOSMsgToHeartModel(Request *request);\r
+void HeartDataSubscribeTopic(Topic topic);\r
+void HearDatatUnsubscribeTopic(Topic topic);\r
+\r
+#define HEART_ALL_POINTS 360\r
+\r
+typedef struct {\r
+    uint16_t x;\r
+    uint16_t y;\r
+    bool flag;\r
+} Point;\r
+\r
+typedef struct {\r
+    /** X coordinate */\r
+    uint16_t x;\r
+    /** Y coordinate */\r
+    uint16_t y;\r
+} HeartPoint;\r
+\r
+typedef struct {\r
+    uint16_t perSec;\r
+    uint16_t rest;\r
+    uint16_t minX;\r
+    uint16_t minValue;\r
+    uint16_t maxX;\r
+    uint16_t maxValue;\r
+    uint16_t index;\r
+    Point value[HEART_ALL_POINTS];\r
+} HeartInfo;\r
+\r
+#pragma pack(4)\r
+typedef struct {\r
+    uint16_t perSec;\r
+    uint16_t rest;\r
+    uint16_t minX;\r
+    uint16_t minValue;\r
+    uint16_t maxX;\r
+    uint16_t maxValue;\r
+    uint16_t index;\r
+    HeartPoint value[HEART_ALL_POINTS];\r
+} HeartDatas;\r
+\r
+#pragma pack()\r
+\r
+namespace OHOS {\r
+#define HEART_AVE_NUM 360\r
+#define HEART_RATE_LIMIT_UPPER 200\r
+#define HEART_RATE_LIMIT_LOWER 0\r
+#define INVALID_HEART_VALUE ((int16)0xFFFF)\r
+#define NUM_1 1\r
+#define NUM_2 2\r
+#define NUM_3 3\r
+#define NUM_4 4\r
+#define NUM_5 5\r
+#define NUM_6 6\r
+#define NUM_7 7\r
+#define NUM_16 16\r
+#define NUM_99 99\r
+\r
+typedef struct {\r
+    uint32_t heartRatePerSec;\r
+    Point heartRateAvg[HEART_AVE_NUM];\r
+    uint32_t heartRateRest;\r
+    Point heartRateMax;\r
+    Point heartRateMin;\r
+} HealthAllDatas;\r
+\r
+class HeartModel {\r
+public:\r
+    HeartModel();\r
+    ~HeartModel();\r
+    static HeartModel *GetInstance(void);\r
+    void ObtainingHeartRateData(void);\r
+    void PushHealthDatas(HealthMsg healthMsg);\r
+    Point* GetAveHeartRate(void);\r
+    uint16_t GetAveHeartRateCount(void);\r
+    void SetAveHeartRateCount(uint16_t value);\r
+    Point* GetMaximumHeartRate(void);\r
+    void Init(void);\r
+    void HeartRatePros(HeartDatas *heartInfo);\r
+    void RefreshHeartRateScreen(uint16_t perSec, uint16_t rest, uint16_t maxRate, uint16_t minRate);\r
+    void ClearHeartData(void);\r
+    void HandleMaxHeart(uint16_t coord, uint16_t value);\r
+    void HandleMinHeart(uint16_t coord, uint16_t value);\r
+    void SetHeartRatePerSec(uint32_t sec);\r
+    void SetWearStatus(bool status);\r
+    bool GetWearStatus(void);\r
+    uint16_t GetHeartRateMax(void);\r
+    uint16_t GetHeartRateMin(void);\r
+\r
+private:\r
+    HealthAllDatas healthDatas;\r
+    uint16_t pretime{0};\r
+    uint16_t entryTimes{0};\r
+    uint16_t aveCount{0};\r
+    uint16_t preMaxValue{0};\r
+    uint16_t preMaxX{NUM_1};\r
+    uint16_t preMinValue{HEART_RATE_LIMIT_UPPER};\r
+    uint16_t preMinX{NUM_1};\r
+    uint16_t countMax{0};\r
+    uint16_t countMin{0};\r
+    bool wearStatus{false};\r
+};\r
+}\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+#endif\r
index 7934c1d..37615cb 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: heartRate view
- * Author:
- * Create: 2021-07-26
- */
-
-#ifndef HEART_RATE_VIEW_H
-#define HEART_RATE_VIEW_H
-
-#include "View.h"
-#include "BaseView.h"
-#include "components/ui_image_animator.h"
-#include "components/ui_chart.h"
-#include "wearable_log.h"
-#include "ohos_types.h"
-#include "components/ui_card_page.h"
-#include "HeartModel.h"
-
-namespace OHOS {
-#define HEART_AVE_NUM 360
-#define HEART_RATE_LIMIT_UPPER 200
-#define HEART_RATE_LIMIT_LOWER 0
-#define INVALID_HEART_VALUE ((int16)0xFFFF)
-
-#define NUM_1 1
-#define NUM_2 2
-#define NUM_3 3
-#define NUM_4 4
-#define NUM_5 5
-#define NUM_7 7
-#define NUM_16 16
-#define NUM_99 99
-
-class HeartRateView : public UICardPage {
-public:
-    HeartRateView();
-    virtual ~HeartRateView();
-    static HeartRateView *GetInstance(void);
-
-    bool InitView(void);
-    void PreLoad(void) override;
-    void UnLoad(void) override;
-    int32_t SetHeartRateData(Point *rateData, uint32 rateDataSize); // 设置心率数据,用于画心率曲线
-    void RefreshElectrocardiogram(void); // 刷新心率曲线
-    void ClearElectrocardiogram(void); // 清空心率曲线
-    void RefreshHeartRatePerSec(uint16_t value); // 刷新每秒心率
-    void RefreshHeartRateMax(uint16_t max); // 刷新心率最大值
-    void RefreshHeartRateMin(uint16_t min); // 刷新心率最小值
-    void RefreshRestHeartRate(uint16_t value); // 刷新静息心率
-    void HeartbeatImageAnimatorStart(void); // 心形动画启动
-    void HeartbeatImageAnimatorStop(void); // 心形动画停止
-    void InitRefreshInterface(void);
-
-private:
-    typedef struct {
-        uint8_t fontSize;
-        int16 x;
-        int16 y;
-        int16 width;
-        int16 height;
-    } LabelInfo;
-
-    int32_t InitHeartRateData(void);
-    void SetLabel(UILabel *label, LabelInfo labelInfo);
-    void HeartRateLabelDisplay(void);
-    void HeartRateCoordinate(void);
-    void HeartRateElectrocardiogram(void);
-    void InsertTopAndBottomRateImage(void);
-    void UpdataTopAndBottomRate(void);
-    void ElectrocardiogramOnePoint(Point *rateData, uint16_t index);
-    void ElectrocardiogramMultiPoint(Point *rateData, uint16_t rateDataNume);
-    int32_t HeartRateDataProc(void);
-    void HeartbeatImageAnimator(void);
-
-private:
-    Point heartRateData[HEART_AVE_NUM];
-    Point rateDataTmp[HEART_AVE_NUM];
-
-    bool viewiInitStatus{false};
-    bool resLoadStatus{false};
-    UIChartPolyline *chart{nullptr};
-    uint16_t dataNume; // 心率曲线记录数据总个数
-    uint16_t currIndex; // 当前已显示心率曲线心率个数
-    UIChartDataSerial *dataSerial[HEART_AVE_NUM]{nullptr};
-    UIChartDataSerial *dataTopAndbottom{nullptr};
-    UIImageView *imageViewTop{nullptr};
-    UIImageView *imageViewBottom{nullptr};
-    uint16_t serialIndex;
-    UIImageAnimatorView *imageAnimator{nullptr};
-    UIImageView *imageViewCoordinate{nullptr};
-
-    UILabel *topRate{nullptr};
-    UILabel *bottomRate{nullptr};
-    UILabel *ratePerSec{nullptr};
-    UILabel *ratePerSecText{nullptr};
-    UILabel *restRate{nullptr};
-    UILabel *restRateText1{nullptr};
-    UILabel *restRateText2{nullptr};
-
-    uint16_t maxRate;
-    uint16_t minRate;
-};
-} // namespace OHOS
-#endif // HEART_RATE_VIEW_H
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: heartRate view\r
+ * Author:\r
+ * Create: 2021-07-26\r
+ */\r
+\r
+#ifndef HEART_RATE_VIEW_H\r
+#define HEART_RATE_VIEW_H\r
+\r
+#include "View.h"\r
+#include "BaseView.h"\r
+#include "components/ui_image_animator.h"\r
+#include "components/ui_chart.h"\r
+#include "wearable_log.h"\r
+#include "ohos_types.h"\r
+#include "components/ui_card_page.h"\r
+#include "HeartModel.h"\r
+\r
+namespace OHOS {\r
+#define HEART_AVE_NUM 360\r
+#define HEART_RATE_LIMIT_UPPER 200\r
+#define HEART_RATE_LIMIT_LOWER 0\r
+#define INVALID_HEART_VALUE ((int16)0xFFFF)\r
+\r
+#define NUM_1 1\r
+#define NUM_2 2\r
+#define NUM_3 3\r
+#define NUM_4 4\r
+#define NUM_5 5\r
+#define NUM_7 7\r
+#define NUM_16 16\r
+#define NUM_99 99\r
+\r
+class HeartRateView : public UICardPage {\r
+public:\r
+    HeartRateView();\r
+    virtual ~HeartRateView();\r
+    static HeartRateView *GetInstance(void);\r
+\r
+    bool InitView(void);\r
+    void PreLoad(void) override;\r
+    void UnLoad(void) override;\r
+    int32_t SetHeartRateData(Point *rateData, uint32 rateDataSize); // 设置心率数据,用于画心率曲线\r
+    void RefreshElectrocardiogram(void); // 刷新心率曲线\r
+    void ClearElectrocardiogram(void); // 清空心率曲线\r
+    void RefreshHeartRatePerSec(uint16_t value); // 刷新每秒心率\r
+    void RefreshHeartRateMax(uint16_t max); // 刷新心率最大值\r
+    void RefreshHeartRateMin(uint16_t min); // 刷新心率最小值\r
+    void RefreshRestHeartRate(uint16_t value); // 刷新静息心率\r
+    void HeartbeatImageAnimatorStart(void); // 心形动画启动\r
+    void HeartbeatImageAnimatorStop(void); // 心形动画停止\r
+    void InitRefreshInterface(void);\r
+\r
+private:\r
+    typedef struct {\r
+        uint8_t fontSize;\r
+        int16 x;\r
+        int16 y;\r
+        int16 width;\r
+        int16 height;\r
+    } LabelInfo;\r
+\r
+    int32_t InitHeartRateData(void);\r
+    void SetLabel(UILabel *label, LabelInfo labelInfo);\r
+    void HeartRateLabelDisplay(void);\r
+    void HeartRateCoordinate(void);\r
+    void HeartRateElectrocardiogram(void);\r
+    void InsertTopAndBottomRateImage(void);\r
+    void UpdataTopAndBottomRate(void);\r
+    void ElectrocardiogramOnePoint(Point *rateData, uint16_t index);\r
+    void ElectrocardiogramMultiPoint(Point *rateData, uint16_t rateDataNume);\r
+    int32_t HeartRateDataProc(void);\r
+    void HeartbeatImageAnimator(void);\r
+\r
+private:\r
+    Point heartRateData[HEART_AVE_NUM];\r
+    Point rateDataTmp[HEART_AVE_NUM];\r
+\r
+    bool viewiInitStatus{false};\r
+    bool resLoadStatus{false};\r
+    UIChartPolyline *chart{nullptr};\r
+    uint16_t dataNume; // 心率曲线记录数据总个数\r
+    uint16_t currIndex; // 当前已显示心率曲线心率个数\r
+    UIChartDataSerial *dataSerial[HEART_AVE_NUM]{nullptr};\r
+    UIChartDataSerial *dataTopAndbottom{nullptr};\r
+    UIImageView *imageViewTop{nullptr};\r
+    UIImageView *imageViewBottom{nullptr};\r
+    uint16_t serialIndex;\r
+    UIImageAnimatorView *imageAnimator{nullptr};\r
+    UIImageView *imageViewCoordinate{nullptr};\r
+\r
+    UILabel *topRate{nullptr};\r
+    UILabel *bottomRate{nullptr};\r
+    UILabel *ratePerSec{nullptr};\r
+    UILabel *ratePerSecText{nullptr};\r
+    UILabel *restRate{nullptr};\r
+    UILabel *restRateText1{nullptr};\r
+    UILabel *restRateText2{nullptr};\r
+\r
+    uint16_t maxRate;\r
+    uint16_t minRate;\r
+};\r
+} // namespace OHOS\r
+#endif // HEART_RATE_VIEW_H\r
index f8bf006..79a4c1c 100644 (file)
-#include "HeartModel.h"
-#include "wearable_log.h"
-#include "graphic_service.h"
-#include "IndoorWalkPreparedView.h"
-#include "IndoorWalkPresenter.h"
-#include "MainViewSample.h"
-#include "HeartRateView.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* 佩戴检测结果 */
-enum {
-    SENSOR_WEAR_ON = 0,
-    SENSOR_WEAR_OFF,
-    SENSOR_WEAR_UNKNOW,
-    SENSOR_WEAR_MAX
-};
-
-using namespace OHOS;
-#define LEN 32
-
-static void Notify(void *args, const Topic topic, Request* request);
-
-Subscriber heartSubscirber = {
-    .identity = NULL,
-    .args = NULL,
-    .Notify = Notify,
-};
-
-void HeartDataSubscribeTopic(Topic topic)
-{
-    BroadcastApi *broadcastApi = NULL;
-    IUnknown *api = SAMGR_GetInstance()->GetFeatureApi(BROADCAST_SERVICE_NAME, BROADCAST_FEATURE_NAME);
-    if (api == NULL) {
-        return;
-    }
-    int result = api->QueryInterface(api, DEFAULT_VERSION, (void **)&broadcastApi);
-    if (result != 0 || broadcastApi == NULL) {
-        return;
-    }
-    int ret = broadcastApi->SubscribeTopic((IUnknown *)broadcastApi, topic, &heartSubscirber);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartSubscribeTopic ret = %d, topic = %u", ret, topic);
-    broadcastApi->Release((IUnknown *)broadcastApi);
-}
-
-void HearDatatUnsubscribeTopic(Topic topic)
-{
-    BroadcastApi *broadcastApi = NULL;
-    IUnknown *api = SAMGR_GetInstance()->GetFeatureApi(BROADCAST_SERVICE_NAME, BROADCAST_FEATURE_NAME);
-    if (api == NULL) {
-        return;
-    }
-    int result = api->QueryInterface(api, DEFAULT_VERSION, (void **)&broadcastApi);
-    if (result != 0 || broadcastApi == NULL) {
-        return;
-    }
-    broadcastApi->UnsubscribeTopic((IUnknown *)broadcastApi, topic, &heartSubscirber);
-    broadcastApi->Release((IUnknown *)broadcastApi);
-}
-
-static void Notify(void *args, const Topic topic, Request* request)
-{
-    UNUSED(args);
-    UNUSED(topic);
-    if (request == NULL) {
-        return;
-    }
-    if (request->msgId == TOPIC_EVENT_HEARTRATE_UPDATA) {
-        HeartDatas *heartInfo = (HeartDatas*)malloc(sizeof(HeartDatas));
-        if (heartInfo == NULL) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[Notify] malloc fail");
-        }
-
-        int rets = memcpy_s(heartInfo, sizeof(HeartDatas), (HeartInfo*)request->data, request->len);
-        if (rets != EOK) {
-            free(heartInfo);
-            heartInfo = NULL;
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "memcpy_s heartRateData fail! ret = %d", rets);
-            return;
-        }
-
-        OHOS::HeartModel::GetInstance()->HeartRatePros(heartInfo);
-
-        free(heartInfo);
-        heartInfo = NULL;
-    }
-    if (request->msgId == TOPIC_EVENT_NEXTDAY_UPDATE) {
-        OHOS::HeartModel::GetInstance()->ClearHeartData();
-    }
-    if (request->msgId == TOPIC_EVENT_UTCTIME_UPDATE) {
-        OHOS::HeartModel::GetInstance()->ClearHeartData();
-    }
-    if (request->msgId == TOPIC_EVENT_WEARSTATE_UPDATE) {
-        uint32 wearStatus = *((uint32*)request->data);
-        if (wearStatus == SENSOR_WEAR_OFF) {
-            OHOS::HeartModel::GetInstance()->SetWearStatus(false);
-            OHOS::HeartModel::GetInstance()->SetHeartRatePerSec(0);
-            if (OHOS::MainClockView::GetInstance() != nullptr) {
-                OHOS::MainClockView::GetInstance()->RefreshHeartRate(0);
-            }
-        } else {
-            OHOS::HeartModel::GetInstance()->SetWearStatus(true);
-        }
-    }
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-namespace OHOS {
-void HeartModel::ClearHeartData(void)
-{
-    pretime = 0;
-    entryTimes = 0;
-    aveCount = 0;
-    preMaxValue = 0;
-    preMaxX = NUM_1;
-    preMinValue = HEART_RATE_LIMIT_UPPER;
-    preMinX = NUM_1;
-    countMax = 0;
-    countMin = 0;
-    healthDatas.heartRateMax.x = (uint16_t)0XFFFF;
-    healthDatas.heartRateMax.y = 0;
-    healthDatas.heartRateMin.x = (uint16_t)0XFFFF;
-    healthDatas.heartRateMin.y = (uint16_t)0XFFFF;
-    for (int i = 0; i < HEART_AVE_NUM; i++) {
-        healthDatas.heartRateAvg[i].x = (uint16_t)0XFFFF;
-        healthDatas.heartRateAvg[i].y = (uint16_t)0XFFFF;
-    }
-    if (HeartRateView::GetInstance() != nullptr) {
-        HeartRateView::GetInstance()->ClearElectrocardiogram();
-    }
-    SetAveHeartRateCount(0);
-    GraphicService::GetInstance()->PostGraphicEvent(std::bind(&HeartModel::RefreshHeartRateScreen, HeartModel::GetInstance(),
-        healthDatas.heartRatePerSec, healthDatas.heartRateRest, healthDatas.heartRateMax.y, healthDatas.heartRateMin.y));
-}
-
-HeartModel::HeartModel()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartModel::HeartModel()");
-}
-
-HeartModel::~HeartModel()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartModel::~HeartModel()");
-    HearDatatUnsubscribeTopic(TOPIC_EVENT_HEARTRATE_UPDATA);
-    HearDatatUnsubscribeTopic(TOPIC_EVENT_NEXTDAY_UPDATE);
-    HearDatatUnsubscribeTopic(TOPIC_EVENT_UTCTIME_UPDATE);
-    HearDatatUnsubscribeTopic(TOPIC_EVENT_WEARSTATE_UPDATE);
-}
-
-HeartModel *HeartModel::GetInstance(void)
-{
-    static HeartModel heartModel;
-    return &heartModel;
-}
-
-void HeartModel::Init(void)
-{
-    HeartDataSubscribeTopic(TOPIC_EVENT_HEARTRATE_UPDATA);
-    HeartDataSubscribeTopic(TOPIC_EVENT_NEXTDAY_UPDATE);
-    HeartDataSubscribeTopic(TOPIC_EVENT_UTCTIME_UPDATE);
-    HeartDataSubscribeTopic(TOPIC_EVENT_WEARSTATE_UPDATE);
-}
-
-Point* HeartModel::GetAveHeartRate(void)
-{
-    return healthDatas.heartRateAvg;
-}
-
-void HeartModel::HandleMaxHeart(uint16 coord, uint16 value)
-{
-    healthDatas.heartRateMax.x = coord;
-    healthDatas.heartRateMax.y = value;
-    // 插入最大心率
-    if (preMaxValue != healthDatas.heartRateMax.y && aveCount < HEART_AVE_NUM) {
-        if (preMaxX == healthDatas.heartRateMax.x && countMax < HEART_AVE_NUM) {
-            healthDatas.heartRateAvg[countMax].y = healthDatas.heartRateMax.y;
-        } else if (aveCount > NUM_2 && (healthDatas.heartRateMax.x == healthDatas.heartRateAvg[aveCount - 1].x)) {
-            healthDatas.heartRateAvg[aveCount - 1].y = healthDatas.heartRateMax.y;
-        } else {
-            healthDatas.heartRateAvg[aveCount] = healthDatas.heartRateMax;
-            countMax = aveCount;
-            aveCount++;
-        }
-        if (healthDatas.heartRateMax.x != 0) {
-            if (healthDatas.heartRateAvg[0].x == 0 && healthDatas.heartRateAvg[1].x == 0) {
-                for (int i = 1; i < (aveCount - 1); i++) {
-                    healthDatas.heartRateAvg[i] = healthDatas.heartRateAvg[i + 1];
-                }
-                aveCount--;
-                countMax--;
-            }
-        }
-    }
-    preMaxValue = healthDatas.heartRateMax.y;
-    preMaxX = healthDatas.heartRateMax.x;
-}
-
-void HeartModel::HandleMinHeart(uint16 coord, uint16 value)
-{
-    // 最小心率
-    healthDatas.heartRateMin.x = coord;
-    healthDatas.heartRateMin.y = value;
-    // 插入最小心率
-    if (preMinValue != healthDatas.heartRateMin.y && aveCount < HEART_AVE_NUM) {
-        if (preMinX == healthDatas.heartRateMin.x && countMin < HEART_AVE_NUM) {
-            healthDatas.heartRateAvg[countMin].y = healthDatas.heartRateMin.y;
-        } else if (aveCount > NUM_2 && (healthDatas.heartRateMin.x == healthDatas.heartRateAvg[aveCount - 1].x)) {
-            healthDatas.heartRateAvg[aveCount - 1].y = healthDatas.heartRateMin.y;
-        } else {
-            healthDatas.heartRateAvg[aveCount] = healthDatas.heartRateMin;
-            countMin = aveCount;
-            aveCount++;
-        }
-        if (healthDatas.heartRateMin.x != 0) {
-            if (healthDatas.heartRateAvg[0].x == 0 && healthDatas.heartRateAvg[1].x == 0) {
-                for (int i = 0; i < (aveCount - 1); i++) {
-                    healthDatas.heartRateAvg[i] = healthDatas.heartRateAvg[i + 1];
-                }
-                aveCount--;
-                countMin--;
-            }
-        }
-    }
-    preMinValue = healthDatas.heartRateMin.y;
-    preMinX = healthDatas.heartRateMin.x;
-}
-
-void  HeartModel::HeartRatePros(HeartDatas *heartInfo)
-{
-    uint16_t perSecHeartRate = 0;
-    uint16_t restHeartRate = 0;
-
-    // 每秒心率
-    perSecHeartRate = heartInfo->perSec;
-    if (perSecHeartRate > HEART_RATE_LIMIT_LOWER && perSecHeartRate <= HEART_RATE_LIMIT_UPPER) {
-        healthDatas.heartRatePerSec = perSecHeartRate;
-    }
-
-    // 静息心率
-    restHeartRate = heartInfo->rest;
-    if (restHeartRate > HEART_RATE_LIMIT_LOWER && restHeartRate <= HEART_RATE_LIMIT_UPPER) {
-        healthDatas.heartRateRest = restHeartRate;
-    }
-    HandleMinHeart(heartInfo->minX, heartInfo->minValue);
-    HandleMaxHeart(heartInfo->maxX, heartInfo->maxValue);
-    // 平均心率
-    uint16_t count = aveCount + heartInfo->index;
-    if (aveCount < HEART_AVE_NUM) {
-        for (int i = aveCount; i < count; i++) {
-            if (healthDatas.heartRateMin.x != heartInfo->value[i - aveCount].x && healthDatas.heartRateMax.x != heartInfo->value[i - aveCount].x) {
-                healthDatas.heartRateAvg[aveCount].x = heartInfo->value[i - aveCount].x;
-                healthDatas.heartRateAvg[aveCount].y = heartInfo->value[i - aveCount].y;
-                aveCount++;
-            }
-        }
-    }
-
-    for (int i = 0; i < aveCount - 1; i++) {
-        if (healthDatas.heartRateAvg[i].x == healthDatas.heartRateAvg[i + 1].x) {
-            if (healthDatas.heartRateAvg[i].y != healthDatas.heartRateMin.y && healthDatas.heartRateAvg[i].y != healthDatas.heartRateMax.y) {
-                for (int j = i; j < aveCount - 1; j++) {
-                    healthDatas.heartRateAvg[j] = healthDatas.heartRateAvg[j + 1];
-                }
-                aveCount--;
-            } else if (healthDatas.heartRateAvg[i + 1].y != healthDatas.heartRateMin.y && healthDatas.heartRateAvg[i + 1].y != healthDatas.heartRateMax.y) {
-                for (int j = i + 1; j < aveCount - 1; j++) {
-                    healthDatas.heartRateAvg[j] = healthDatas.heartRateAvg[j + 1];
-                }
-                aveCount--;
-            }
-        }
-    }
-    GraphicService::GetInstance()->PostGraphicEvent(std::bind(&HeartModel::RefreshHeartRateScreen, HeartModel::GetInstance(),
-        healthDatas.heartRatePerSec, healthDatas.heartRateRest, healthDatas.heartRateMax.y, healthDatas.heartRateMin.y));
-}
-
-uint16_t HeartModel::GetAveHeartRateCount(void)
-{
-    return aveCount;
-}
-
-uint16_t HeartModel::GetHeartRateMax(void)
-{
-    return healthDatas.heartRateMax.y;
-}
-
-uint16_t HeartModel::GetHeartRateMin(void)
-{
-    return healthDatas.heartRateMin.y;
-}
-
-void HeartModel::SetHeartRatePerSec(uint32 sec)
-{
-    healthDatas.heartRatePerSec = sec;
-    if (HeartRateView::GetInstance() == nullptr) {
-        return;
-    }
-    HeartRateView::GetInstance()->RefreshHeartRatePerSec(healthDatas.heartRatePerSec);
-}
-
-void HeartModel::SetAveHeartRateCount(uint16_t value)
-{
-    aveCount = value;
-}
-
-void HeartModel::SetWearStatus(bool status)
-{
-    wearStatus = status;
-}
-
-bool HeartModel::GetWearStatus(void)
-{
-    return wearStatus;
-}
-
-void HeartModel::RefreshHeartRateScreen(uint16_t perSec, uint16_t rest, uint16_t maxRate, uint16_t minRate)
-{
-    UNUSED(rest);
-    Point *rateData;
-    int len = GetAveHeartRateCount();
-    rateData = GetAveHeartRate();
-
-    uint16_t currentViewId = NativeAbility::GetInstance().GetCurSliceId();
-    if (currentViewId == VIEW_MAIN && MainClockView::GetInstance() != nullptr) {
-        MainClockView::GetInstance()->RefreshHeartRate(perSec);
-    }
-
-    if (IndoorWalkPreparedView::GetInstance() != nullptr) {
-        IndoorWalkPreparedView::GetInstance()->RefreshHeartbeatData(perSec);
-    }
-    if (IndoorWalkPresenter::GetInstance() != nullptr) {
-        IndoorWalkPresenter::GetInstance()->ModifiesHeartRate(perSec);
-    }
-
-    if (MainViewSample::GetInstance() != nullptr && HeartRateView::GetInstance() != nullptr) {
-        if (MainViewSample::GetInstance()->GetHorCurrentPage() == HEART_RATE) {
-            HeartRateView::GetInstance()->SetHeartRateData(rateData, sizeof(Point) * len);
-            HeartRateView::GetInstance()->RefreshElectrocardiogram();
-            HeartRateView::GetInstance()->RefreshHeartRatePerSec(perSec);
-            HeartRateView::GetInstance()->RefreshHeartRateMax(maxRate);
-            HeartRateView::GetInstance()->RefreshHeartRateMin(minRate);
-        }
-    }
-}
-}
-
+#include "HeartModel.h"\r
+#include "wearable_log.h"\r
+#include "graphic_service.h"\r
+#include "IndoorWalkPreparedView.h"\r
+#include "IndoorWalkPresenter.h"\r
+#include "MainViewSample.h"\r
+#include "HeartRateView.h"\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+/* 佩戴检测结果 */\r
+enum {\r
+    SENSOR_WEAR_ON = 0,\r
+    SENSOR_WEAR_OFF,\r
+    SENSOR_WEAR_UNKNOW,\r
+    SENSOR_WEAR_MAX\r
+};\r
+\r
+using namespace OHOS;\r
+#define LEN 32\r
+\r
+static void Notify(void *args, const Topic topic, Request* request);\r
+\r
+Subscriber heartSubscirber = {\r
+    .identity = NULL,\r
+    .args = NULL,\r
+    .Notify = Notify,\r
+};\r
+\r
+void HeartDataSubscribeTopic(Topic topic)\r
+{\r
+    BroadcastApi *broadcastApi = NULL;\r
+    IUnknown *api = SAMGR_GetInstance()->GetFeatureApi(BROADCAST_SERVICE_NAME, BROADCAST_FEATURE_NAME);\r
+    if (api == NULL) {\r
+        return;\r
+    }\r
+    int result = api->QueryInterface(api, DEFAULT_VERSION, (void **)&broadcastApi);\r
+    if (result != 0 || broadcastApi == NULL) {\r
+        return;\r
+    }\r
+    int ret = broadcastApi->SubscribeTopic((IUnknown *)broadcastApi, topic, &heartSubscirber);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartSubscribeTopic ret = %d, topic = %u", ret, topic);\r
+    broadcastApi->Release((IUnknown *)broadcastApi);\r
+}\r
+\r
+void HearDatatUnsubscribeTopic(Topic topic)\r
+{\r
+    BroadcastApi *broadcastApi = NULL;\r
+    IUnknown *api = SAMGR_GetInstance()->GetFeatureApi(BROADCAST_SERVICE_NAME, BROADCAST_FEATURE_NAME);\r
+    if (api == NULL) {\r
+        return;\r
+    }\r
+    int result = api->QueryInterface(api, DEFAULT_VERSION, (void **)&broadcastApi);\r
+    if (result != 0 || broadcastApi == NULL) {\r
+        return;\r
+    }\r
+    broadcastApi->UnsubscribeTopic((IUnknown *)broadcastApi, topic, &heartSubscirber);\r
+    broadcastApi->Release((IUnknown *)broadcastApi);\r
+}\r
+\r
+static void Notify(void *args, const Topic topic, Request* request)\r
+{\r
+    UNUSED(args);\r
+    UNUSED(topic);\r
+    if (request == NULL) {\r
+        return;\r
+    }\r
+    if (request->msgId == TOPIC_EVENT_HEARTRATE_UPDATA) {\r
+        HeartDatas *heartInfo = (HeartDatas*)malloc(sizeof(HeartDatas));\r
+        if (heartInfo == NULL) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[Notify] malloc fail");\r
+        }\r
+\r
+        int rets = memcpy_s(heartInfo, sizeof(HeartDatas), (HeartInfo*)request->data, request->len);\r
+        if (rets != EOK) {\r
+            free(heartInfo);\r
+            heartInfo = NULL;\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "memcpy_s heartRateData fail! ret = %d", rets);\r
+            return;\r
+        }\r
+\r
+        OHOS::HeartModel::GetInstance()->HeartRatePros(heartInfo);\r
+\r
+        free(heartInfo);\r
+        heartInfo = NULL;\r
+    }\r
+    if (request->msgId == TOPIC_EVENT_NEXTDAY_UPDATE) {\r
+        OHOS::HeartModel::GetInstance()->ClearHeartData();\r
+    }\r
+    if (request->msgId == TOPIC_EVENT_UTCTIME_UPDATE) {\r
+        OHOS::HeartModel::GetInstance()->ClearHeartData();\r
+    }\r
+    if (request->msgId == TOPIC_EVENT_WEARSTATE_UPDATE) {\r
+        uint32 wearStatus = *((uint32*)request->data);\r
+        if (wearStatus == SENSOR_WEAR_OFF) {\r
+            OHOS::HeartModel::GetInstance()->SetWearStatus(false);\r
+            OHOS::HeartModel::GetInstance()->SetHeartRatePerSec(0);\r
+            if (OHOS::MainClockView::GetInstance() != nullptr) {\r
+                OHOS::MainClockView::GetInstance()->RefreshHeartRate(0);\r
+            }\r
+        } else {\r
+            OHOS::HeartModel::GetInstance()->SetWearStatus(true);\r
+        }\r
+    }\r
+}\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+namespace OHOS {\r
+void HeartModel::ClearHeartData(void)\r
+{\r
+    pretime = 0;\r
+    entryTimes = 0;\r
+    aveCount = 0;\r
+    preMaxValue = 0;\r
+    preMaxX = NUM_1;\r
+    preMinValue = HEART_RATE_LIMIT_UPPER;\r
+    preMinX = NUM_1;\r
+    countMax = 0;\r
+    countMin = 0;\r
+    healthDatas.heartRateMax.x = (uint16_t)0XFFFF;\r
+    healthDatas.heartRateMax.y = 0;\r
+    healthDatas.heartRateMin.x = (uint16_t)0XFFFF;\r
+    healthDatas.heartRateMin.y = (uint16_t)0XFFFF;\r
+    for (int i = 0; i < HEART_AVE_NUM; i++) {\r
+        healthDatas.heartRateAvg[i].x = (uint16_t)0XFFFF;\r
+        healthDatas.heartRateAvg[i].y = (uint16_t)0XFFFF;\r
+    }\r
+    if (HeartRateView::GetInstance() != nullptr) {\r
+        HeartRateView::GetInstance()->ClearElectrocardiogram();\r
+    }\r
+    SetAveHeartRateCount(0);\r
+    GraphicService::GetInstance()->PostGraphicEvent(std::bind(&HeartModel::RefreshHeartRateScreen, HeartModel::GetInstance(),\r
+        healthDatas.heartRatePerSec, healthDatas.heartRateRest, healthDatas.heartRateMax.y, healthDatas.heartRateMin.y));\r
+}\r
+\r
+HeartModel::HeartModel()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartModel::HeartModel()");\r
+}\r
+\r
+HeartModel::~HeartModel()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartModel::~HeartModel()");\r
+    HearDatatUnsubscribeTopic(TOPIC_EVENT_HEARTRATE_UPDATA);\r
+    HearDatatUnsubscribeTopic(TOPIC_EVENT_NEXTDAY_UPDATE);\r
+    HearDatatUnsubscribeTopic(TOPIC_EVENT_UTCTIME_UPDATE);\r
+    HearDatatUnsubscribeTopic(TOPIC_EVENT_WEARSTATE_UPDATE);\r
+}\r
+\r
+HeartModel *HeartModel::GetInstance(void)\r
+{\r
+    static HeartModel heartModel;\r
+    return &heartModel;\r
+}\r
+\r
+void HeartModel::Init(void)\r
+{\r
+    HeartDataSubscribeTopic(TOPIC_EVENT_HEARTRATE_UPDATA);\r
+    HeartDataSubscribeTopic(TOPIC_EVENT_NEXTDAY_UPDATE);\r
+    HeartDataSubscribeTopic(TOPIC_EVENT_UTCTIME_UPDATE);\r
+    HeartDataSubscribeTopic(TOPIC_EVENT_WEARSTATE_UPDATE);\r
+}\r
+\r
+Point* HeartModel::GetAveHeartRate(void)\r
+{\r
+    return healthDatas.heartRateAvg;\r
+}\r
+\r
+void HeartModel::HandleMaxHeart(uint16 coord, uint16 value)\r
+{\r
+    healthDatas.heartRateMax.x = coord;\r
+    healthDatas.heartRateMax.y = value;\r
+    // 插入最大心率\r
+    if (preMaxValue != healthDatas.heartRateMax.y && aveCount < HEART_AVE_NUM) {\r
+        if (preMaxX == healthDatas.heartRateMax.x && countMax < HEART_AVE_NUM) {\r
+            healthDatas.heartRateAvg[countMax].y = healthDatas.heartRateMax.y;\r
+        } else if (aveCount > NUM_2 && (healthDatas.heartRateMax.x == healthDatas.heartRateAvg[aveCount - 1].x)) {\r
+            healthDatas.heartRateAvg[aveCount - 1].y = healthDatas.heartRateMax.y;\r
+        } else {\r
+            healthDatas.heartRateAvg[aveCount] = healthDatas.heartRateMax;\r
+            countMax = aveCount;\r
+            aveCount++;\r
+        }\r
+        if (healthDatas.heartRateMax.x != 0) {\r
+            if (healthDatas.heartRateAvg[0].x == 0 && healthDatas.heartRateAvg[1].x == 0) {\r
+                for (int i = 1; i < (aveCount - 1); i++) {\r
+                    healthDatas.heartRateAvg[i] = healthDatas.heartRateAvg[i + 1];\r
+                }\r
+                aveCount--;\r
+                countMax--;\r
+            }\r
+        }\r
+    }\r
+    preMaxValue = healthDatas.heartRateMax.y;\r
+    preMaxX = healthDatas.heartRateMax.x;\r
+}\r
+\r
+void HeartModel::HandleMinHeart(uint16 coord, uint16 value)\r
+{\r
+    // 最小心率\r
+    healthDatas.heartRateMin.x = coord;\r
+    healthDatas.heartRateMin.y = value;\r
+    // 插入最小心率\r
+    if (preMinValue != healthDatas.heartRateMin.y && aveCount < HEART_AVE_NUM) {\r
+        if (preMinX == healthDatas.heartRateMin.x && countMin < HEART_AVE_NUM) {\r
+            healthDatas.heartRateAvg[countMin].y = healthDatas.heartRateMin.y;\r
+        } else if (aveCount > NUM_2 && (healthDatas.heartRateMin.x == healthDatas.heartRateAvg[aveCount - 1].x)) {\r
+            healthDatas.heartRateAvg[aveCount - 1].y = healthDatas.heartRateMin.y;\r
+        } else {\r
+            healthDatas.heartRateAvg[aveCount] = healthDatas.heartRateMin;\r
+            countMin = aveCount;\r
+            aveCount++;\r
+        }\r
+        if (healthDatas.heartRateMin.x != 0) {\r
+            if (healthDatas.heartRateAvg[0].x == 0 && healthDatas.heartRateAvg[1].x == 0) {\r
+                for (int i = 0; i < (aveCount - 1); i++) {\r
+                    healthDatas.heartRateAvg[i] = healthDatas.heartRateAvg[i + 1];\r
+                }\r
+                aveCount--;\r
+                countMin--;\r
+            }\r
+        }\r
+    }\r
+    preMinValue = healthDatas.heartRateMin.y;\r
+    preMinX = healthDatas.heartRateMin.x;\r
+}\r
+\r
+void  HeartModel::HeartRatePros(HeartDatas *heartInfo)\r
+{\r
+    uint16_t perSecHeartRate = 0;\r
+    uint16_t restHeartRate = 0;\r
+\r
+    // 每秒心率\r
+    perSecHeartRate = heartInfo->perSec;\r
+    if (perSecHeartRate > HEART_RATE_LIMIT_LOWER && perSecHeartRate <= HEART_RATE_LIMIT_UPPER) {\r
+        healthDatas.heartRatePerSec = perSecHeartRate;\r
+    }\r
+\r
+    // 静息心率\r
+    restHeartRate = heartInfo->rest;\r
+    if (restHeartRate > HEART_RATE_LIMIT_LOWER && restHeartRate <= HEART_RATE_LIMIT_UPPER) {\r
+        healthDatas.heartRateRest = restHeartRate;\r
+    }\r
+    HandleMinHeart(heartInfo->minX, heartInfo->minValue);\r
+    HandleMaxHeart(heartInfo->maxX, heartInfo->maxValue);\r
+    // 平均心率\r
+    uint16_t count = aveCount + heartInfo->index;\r
+    if (aveCount < HEART_AVE_NUM) {\r
+        for (int i = aveCount; i < count; i++) {\r
+            if (healthDatas.heartRateMin.x != heartInfo->value[i - aveCount].x && healthDatas.heartRateMax.x != heartInfo->value[i - aveCount].x) {\r
+                healthDatas.heartRateAvg[aveCount].x = heartInfo->value[i - aveCount].x;\r
+                healthDatas.heartRateAvg[aveCount].y = heartInfo->value[i - aveCount].y;\r
+                aveCount++;\r
+            }\r
+        }\r
+    }\r
+\r
+    for (int i = 0; i < aveCount - 1; i++) {\r
+        if (healthDatas.heartRateAvg[i].x == healthDatas.heartRateAvg[i + 1].x) {\r
+            if (healthDatas.heartRateAvg[i].y != healthDatas.heartRateMin.y && healthDatas.heartRateAvg[i].y != healthDatas.heartRateMax.y) {\r
+                for (int j = i; j < aveCount - 1; j++) {\r
+                    healthDatas.heartRateAvg[j] = healthDatas.heartRateAvg[j + 1];\r
+                }\r
+                aveCount--;\r
+            } else if (healthDatas.heartRateAvg[i + 1].y != healthDatas.heartRateMin.y && healthDatas.heartRateAvg[i + 1].y != healthDatas.heartRateMax.y) {\r
+                for (int j = i + 1; j < aveCount - 1; j++) {\r
+                    healthDatas.heartRateAvg[j] = healthDatas.heartRateAvg[j + 1];\r
+                }\r
+                aveCount--;\r
+            }\r
+        }\r
+    }\r
+    GraphicService::GetInstance()->PostGraphicEvent(std::bind(&HeartModel::RefreshHeartRateScreen, HeartModel::GetInstance(),\r
+        healthDatas.heartRatePerSec, healthDatas.heartRateRest, healthDatas.heartRateMax.y, healthDatas.heartRateMin.y));\r
+}\r
+\r
+uint16_t HeartModel::GetAveHeartRateCount(void)\r
+{\r
+    return aveCount;\r
+}\r
+\r
+uint16_t HeartModel::GetHeartRateMax(void)\r
+{\r
+    return healthDatas.heartRateMax.y;\r
+}\r
+\r
+uint16_t HeartModel::GetHeartRateMin(void)\r
+{\r
+    return healthDatas.heartRateMin.y;\r
+}\r
+\r
+void HeartModel::SetHeartRatePerSec(uint32 sec)\r
+{\r
+    healthDatas.heartRatePerSec = sec;\r
+    if (HeartRateView::GetInstance() == nullptr) {\r
+        return;\r
+    }\r
+    HeartRateView::GetInstance()->RefreshHeartRatePerSec(healthDatas.heartRatePerSec);\r
+}\r
+\r
+void HeartModel::SetAveHeartRateCount(uint16_t value)\r
+{\r
+    aveCount = value;\r
+}\r
+\r
+void HeartModel::SetWearStatus(bool status)\r
+{\r
+    wearStatus = status;\r
+}\r
+\r
+bool HeartModel::GetWearStatus(void)\r
+{\r
+    return wearStatus;\r
+}\r
+\r
+void HeartModel::RefreshHeartRateScreen(uint16_t perSec, uint16_t rest, uint16_t maxRate, uint16_t minRate)\r
+{\r
+    UNUSED(rest);\r
+    Point *rateData;\r
+    int len = GetAveHeartRateCount();\r
+    rateData = GetAveHeartRate();\r
+\r
+    uint16_t currentViewId = NativeAbility::GetInstance().GetCurSliceId();\r
+    if (currentViewId == VIEW_MAIN && MainClockView::GetInstance() != nullptr) {\r
+        MainClockView::GetInstance()->RefreshHeartRate(perSec);\r
+    }\r
+\r
+    if (IndoorWalkPreparedView::GetInstance() != nullptr) {\r
+        IndoorWalkPreparedView::GetInstance()->RefreshHeartbeatData(perSec);\r
+    }\r
+    if (IndoorWalkPresenter::GetInstance() != nullptr) {\r
+        IndoorWalkPresenter::GetInstance()->ModifiesHeartRate(perSec);\r
+    }\r
+\r
+    if (MainViewSample::GetInstance() != nullptr && HeartRateView::GetInstance() != nullptr) {\r
+        if (MainViewSample::GetInstance()->GetHorCurrentPage() == HEART_RATE) {\r
+            HeartRateView::GetInstance()->SetHeartRateData(rateData, sizeof(Point) * len);\r
+            HeartRateView::GetInstance()->RefreshElectrocardiogram();\r
+            HeartRateView::GetInstance()->RefreshHeartRatePerSec(perSec);\r
+            HeartRateView::GetInstance()->RefreshHeartRateMax(maxRate);\r
+            HeartRateView::GetInstance()->RefreshHeartRateMin(minRate);\r
+        }\r
+    }\r
+}\r
+}\r
+\r
index 9304794..5ece7d2 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: heartRate view
- * Author:
- * Create: 2021-07-26
- */
-
-#include <securec.h>
-#include "HeartRateView.h"
-#include "common/screen.h"
-#include "UiConfig.h"
-#include "ScreenModels.h"
-#include "ui_resource_image.h"
-#include "common/image_cache_manager.h"
-
-namespace OHOS {
-static HeartRateView *g_pHeartRateView = nullptr;
-
-// 背景坐标图形
-#define ACT_IMAGE_X 0                               // 图片坐标起点
-#define ACT_IMAGE_Y 115                             // 图片坐标起点
-#define ACT_IMAGE_COOR_X 45                         // 200刻度线到最左端的像素点
-#define ACT_IMAGE_COOR_Y 145                        // 200刻度线到顶端的像素点
-#define ACT_IMAGE_COOR_PIXELS 160                   // 实际背景坐标0到200心率值的实际像素点
-#define ACT_IMAGE_COOR_VALUE HEART_RATE_LIMIT_UPPER // 图片刻度表示的心率范围
-#define ACT_IMAGE_COOR_WIDTH 454
-#define ACT_IMAGE_COOR_HEIGHT 220
-
-// 心电图坐标适配
-#define COORDINATE_VALUE 5 // 余量
-#define COORDINATE_POINT_X (ACT_IMAGE_COOR_X - COORDINATE_VALUE)
-#define COORDINATE_POINT_Y (ACT_IMAGE_COOR_Y - COORDINATE_VALUE * 2)
-#define COORDINATE_HEIGHT (ACT_IMAGE_COOR_PIXELS + COORDINATE_VALUE * 2)
-#define COORDINATE_WIDTH (HEART_AVE_NUM + COORDINATE_VALUE * 2) // 360点,每点对应240秒(4分钟)
-#define COORDINATE_GRAD_MIN_OPA 25
-#define COORDINATE_GRAD_MAX_OPA 180
-
-// 心形心跳
-#define HEARTBEAT_IMAGE_WIDTH 92
-#define HEARTBEAT_IMAGE_HEIGHT 92
-#define HEARTBEAT_IMAGE_X 130
-#define HEARTBEAT_IMAGE_Y 25
-#define HEARTBEAT_IMAGE_NUM 19
-#define HEARTBEAT_DELAY 50
-
-// 最高心率
-#define TOP_IMAGE_WIDTH 32
-#define TOP_IMAGE_HEIGHT 32
-#define TOP_IMAGE_X 120
-#define TOP_IMAGE_Y 340
-#define TOP_STROKE_WIDTH 1
-#define TOP_RADIUS 4
-
-#define HEART_RATE_LIMIT_FONT_SIZE 30
-#define TOP_TEXT_WIDTH 80
-#define TOP_TEXT_HEIGHT (HEART_RATE_LIMIT_FONT_SIZE + 5)
-#define TOP_TEXT_X 160
-#define TOP_TEXT_Y 337
-
-// 最低心率
-#define BOTTOM_IMAGE_WIDTH 32
-#define BOTTOM_IMAGE_HEIGHT 32
-#define BOTTOM_IMAGE_X 250
-#define BOTTOM_IMAGE_Y 340
-#define BOTTOM_STROKE_WIDTH 1
-#define BOTTOM_RADIUS 3
-
-#define BOTTOM_TEXT_WIDTH 80
-#define BOTTOM_TEXT_HEIGHT (HEART_RATE_LIMIT_FONT_SIZE + 5)
-#define BOTTOM_TEXT_X 290
-#define BOTTOM_TEXT_Y 337
-
-// 静息心率
-#define REST_HEART_RATE_FONT_SIZE 40
-#define REST_HEART_RATE_X 195
-#define REST_HEART_RATE_Y 380
-#define REST_HEART_RATE_WIDTH 95
-#define REST_HEART_RATE_HEIGHT (REST_HEART_RATE_FONT_SIZE + 5)
-
-#define REST_HEART_TEXT_FONT_SIZE 30
-#define REST_HEART_TEXT_X1 120
-#define REST_HEART_TEXT_Y1 390
-#define REST_HEART_TEXT_WIDTH1 75
-#define REST_HEART_TEXT_HEIGHT1 (REST_HEART_TEXT_FONT_SIZE + 5)
-
-#define REST_HEART_TEXT_X2 265
-#define REST_HEART_TEXT_Y2 390
-#define REST_HEART_TEXT_WIDTH2 75
-#define REST_HEART_TEXT_HEIGHT2 (REST_HEART_TEXT_FONT_SIZE + 5)
-
-// 每秒心率
-#define PERSEC_HEART_RATE_FONT_SIZE 45
-#define PERSEC_HEART_RATE_X 225
-#define PERSEC_HEART_RATE_Y 55
-#define PERSEC_HEART_RATE_WIDTH 90
-#define PERSEC_HEART_RATE_HEIGHT (PERSEC_HEART_RATE_FONT_SIZE + 5)
-
-#define PERSEC_HEART_TEXT_FONT_SIZE 30
-#define PERSEC_HEART_TEXT_X 310
-#define PERSEC_HEART_TEXT_Y 75
-#define PERSEC_HEART_TEXT_WIDTH 75
-#define PERSEC_HEART_TEXT_HEIGHT (PERSEC_HEART_TEXT_FONT_SIZE + 5)
-
-// 心跳image
-static ImageAnimatorInfo g_heartBeatImageInfo[HEARTBEAT_IMAGE_NUM] = {
-    {PNG_A004_070_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-    {PNG_A004_071_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-    {PNG_A004_072_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-    {PNG_A004_073_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-    {PNG_A004_074_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-    {PNG_A004_075_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-    {PNG_A004_076_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-    {PNG_A004_077_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-    {PNG_A004_078_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-    {PNG_A004_079_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-
-    {PNG_A004_080_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-    {PNG_A004_081_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-    {PNG_A004_082_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-    {PNG_A004_083_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-    {PNG_A004_084_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-    {PNG_A004_085_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-    {PNG_A004_086_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-    {PNG_A004_087_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-    {PNG_A004_088_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-};
-
-HeartRateView::HeartRateView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartRateView::HeartRateView");
-    dataNume = 0;
-    currIndex = 0;
-    serialIndex = 0;
-    maxRate = 0;
-    minRate = HEART_RATE_LIMIT_UPPER;
-    InitHeartRateData();
-    SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
-
-    g_pHeartRateView = this;
-}
-
-HeartRateView::~HeartRateView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartRateView::~HeartRateView");
-    if (viewiInitStatus == true) {
-        int32_t i;
-        RemoveAll();
-        delete imageViewCoordinate;
-        imageViewCoordinate = nullptr;
-
-        chart->ClearDataSerial();
-        for (i = 0; i < HEART_AVE_NUM; i++) {
-            delete dataSerial[i];
-            dataSerial[i] = nullptr;
-        }
-        delete chart;
-        chart = nullptr;
-        delete imageViewTop;
-        imageViewTop = nullptr;
-        delete imageViewBottom;
-        imageViewBottom = nullptr;
-        delete dataTopAndbottom;
-        dataTopAndbottom = nullptr;
-        imageAnimator->Stop();
-        delete imageAnimator;
-        imageAnimator = nullptr;
-        delete topRate;
-        topRate = nullptr;
-        delete bottomRate;
-        bottomRate = nullptr;
-        delete ratePerSec;
-        ratePerSec = nullptr;
-        delete ratePerSecText;
-        ratePerSecText = nullptr;
-        delete restRate;
-        restRate = nullptr;
-        delete restRateText1;
-        restRateText1 = nullptr;
-        delete restRateText2;
-        restRateText2 = nullptr;
-    }
-    g_pHeartRateView = nullptr;
-}
-
-HeartRateView *HeartRateView::GetInstance(void)
-{
-    return g_pHeartRateView;
-}
-
-int32_t HeartRateView::InitHeartRateData(void) // 初始化心率数据,将存放心率数据的有效字节设置为无效值
-{
-    int32_t ret;
-
-    heartRateData[0].x = INVALID_HEART_VALUE;
-    heartRateData[0].y = INVALID_HEART_VALUE;
-
-    ret = memset_s(heartRateData, sizeof(Point) * HEART_AVE_NUM, INVALID_HEART_VALUE, sizeof(Point) * HEART_AVE_NUM);
-    if (ret != 0) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[InitHeartRateData] memset_s heartRateData fail! ret = %d", ret);
-    }
-    return ret;
-}
-
-int32_t HeartRateView::SetHeartRateData(Point *rateData, uint32 rateDataSize)
-{
-    int ret;
-
-    if (rateData == nullptr) {
-        return OHOS_FAILURE;
-    }
-
-    if (rateDataSize > sizeof(Point) * HEART_AVE_NUM) {
-        rateDataSize = sizeof(Point) * HEART_AVE_NUM;
-    }
-    InitHeartRateData();
-    ret = memcpy_s(heartRateData, sizeof(Point) * HEART_AVE_NUM, rateData, rateDataSize);
-    if (ret != EOK) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[HeartRateDataProc] memcpy_s heartRateData fail! ret = %d", ret);
-        return OHOS_FAILURE;
-    }
-
-    return OHOS_SUCCESS;
-}
-
-
-int32_t HeartRateView::HeartRateDataProc(void)
-{
-    int32_t i, ret;
-    Point datain[HEART_AVE_NUM];
-
-    ret = memcpy_s(datain, sizeof(Point) * HEART_AVE_NUM, heartRateData, sizeof(Point) * HEART_AVE_NUM);
-    if (ret != EOK) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[HeartRateDataProc] memcpy_s rateDataTmp fail! ret = %d", ret);
-        return OHOS_FAILURE;
-    }
-
-    ret = memset_s(rateDataTmp, sizeof(Point) * HEART_AVE_NUM, INVALID_HEART_VALUE, sizeof(Point) * HEART_AVE_NUM); // 替换为无效值
-    if (ret != EOK) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[HeartRateDataProc] memset_s rateDataTmp fail! ret = %d", ret);
-        return OHOS_FAILURE;
-    }
-
-    dataNume = 0;
-    for (i = 0; i < HEART_AVE_NUM; i++) {
-        if (datain[i].x >= 0 && datain[i].x < HEART_AVE_NUM && datain[i].y > 0 &&
-            datain[i].y <= HEART_RATE_LIMIT_UPPER) {
-            rateDataTmp[dataNume].x = datain[i].x + COORDINATE_VALUE;
-            rateDataTmp[dataNume].y = datain[i].y * ACT_IMAGE_COOR_PIXELS / ACT_IMAGE_COOR_VALUE;
-            dataNume++;
-        }
-    }
-    return OHOS_SUCCESS;
-}
-
-void HeartRateView::SetLabel(UILabel *label, LabelInfo labelInfo)
-{
-    label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, labelInfo.fontSize);
-    label->SetPosition(labelInfo.x, labelInfo.y);
-    label->Resize(labelInfo.width, labelInfo.height);
-    label->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);
-    Add(label);
-}
-
-void HeartRateView::HeartRateLabelDisplay(void)
-{
-    LabelInfo PerSecLabel = { PERSEC_HEART_RATE_FONT_SIZE, PERSEC_HEART_RATE_X, PERSEC_HEART_RATE_Y,
-                              PERSEC_HEART_RATE_WIDTH, PERSEC_HEART_RATE_HEIGHT };
-    LabelInfo PerSecTextLabel = { PERSEC_HEART_TEXT_FONT_SIZE, PERSEC_HEART_TEXT_X, PERSEC_HEART_TEXT_Y,
-                                  PERSEC_HEART_TEXT_WIDTH, PERSEC_HEART_TEXT_HEIGHT };
-
-    LabelInfo topLabel = { HEART_RATE_LIMIT_FONT_SIZE, TOP_TEXT_X, TOP_TEXT_Y, TOP_TEXT_WIDTH, TOP_TEXT_HEIGHT };
-    LabelInfo bottomLabel = { HEART_RATE_LIMIT_FONT_SIZE, BOTTOM_TEXT_X, BOTTOM_TEXT_Y, BOTTOM_TEXT_WIDTH,
-                              BOTTOM_TEXT_HEIGHT };
-
-    LabelInfo restRateLabel = { REST_HEART_RATE_FONT_SIZE, REST_HEART_RATE_X, REST_HEART_RATE_Y, REST_HEART_RATE_WIDTH,
-                                REST_HEART_RATE_HEIGHT };
-    LabelInfo restRateTextLabel1 = { REST_HEART_TEXT_FONT_SIZE, REST_HEART_TEXT_X1, REST_HEART_TEXT_Y1,
-                                     REST_HEART_TEXT_WIDTH1, REST_HEART_TEXT_HEIGHT1 };
-    LabelInfo restRateTextLabel2 = { REST_HEART_TEXT_FONT_SIZE, REST_HEART_TEXT_X2, REST_HEART_TEXT_Y2,
-                                     REST_HEART_TEXT_WIDTH2, REST_HEART_TEXT_HEIGHT2 };
-
-    topRate = new UILabel();
-    bottomRate = new UILabel();
-    ratePerSec = new UILabel();
-    ratePerSecText = new UILabel();
-    restRate = new UILabel();
-    restRateText1 = new UILabel();
-    restRateText2 = new UILabel();
-
-    if (topRate == nullptr || bottomRate == nullptr || ratePerSec == nullptr || ratePerSecText == nullptr ||
-        restRate == nullptr || restRateText1 == nullptr || restRateText2 == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[HeartRateLabelDisplay] new UILabel fail");
-    }
-
-    // 实时心率
-    SetLabel(ratePerSec, PerSecLabel);
-    SetLabel(ratePerSecText, PerSecTextLabel);
-    ratePerSec->SetText("--");
-    ratePerSecText->SetText("次/分");
-
-    // 最高最低心率
-    SetLabel(topRate, topLabel);
-    SetLabel(bottomRate, bottomLabel);
-    topRate->SetText("--");
-    bottomRate->SetText("--");
-
-    // 静息心率
-    SetLabel(restRate, restRateLabel);
-    SetLabel(restRateText1, restRateTextLabel1);
-    SetLabel(restRateText2, restRateTextLabel2);
-    restRateText1->SetText("静息");
-    restRate->SetText("--");
-    restRateText2->SetText("次/分");
-}
-
-void HeartRateView::HeartRateCoordinate(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartRateView::HeartRateCoordinate start");
-    // 坐标图片
-    imageViewCoordinate = new UIImageView();
-    if (imageViewCoordinate == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[HeartRateCoordinate] new imageViewCoordinate fail");
-        return;
-    }
-    imageViewCoordinate->SetPosition(ACT_IMAGE_X, ACT_IMAGE_Y);
-    imageViewCoordinate->SetWidth(ACT_IMAGE_COOR_WIDTH);
-    imageViewCoordinate->SetHeight(ACT_IMAGE_COOR_HEIGHT);
-    Add(imageViewCoordinate);
-
-    //  心电图坐标适配
-    chart = new UIChartPolyline();
-    if (chart == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[HeartRateCoordinate] new chart fail");
-        return;
-    }
-    chart->SetPosition(COORDINATE_POINT_X, COORDINATE_POINT_Y);
-    chart->SetWidth(COORDINATE_WIDTH);
-    chart->SetHeight(COORDINATE_HEIGHT);
-    chart->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
-    chart->SetStyle(STYLE_BACKGROUND_OPA, 0);
-    chart->SetStyle(STYLE_LINE_WIDTH, 1); // line width
-
-    UIXAxis &xAxis = chart->GetXAxis();
-    UIYAxis &yAxis = chart->GetYAxis();
-    xAxis.SetDataRange(0, COORDINATE_WIDTH); // 24小时对应的秒数
-    yAxis.SetDataRange(0, COORDINATE_HEIGHT);
-    xAxis.SetLineColor(Color::GetColorFromRGBA(0, 0, 0, 0));
-    yAxis.SetLineColor(Color::GetColorFromRGBA(0, 0, 0, 0));
-    chart->SetGradientOpacity(COORDINATE_GRAD_MIN_OPA, COORDINATE_GRAD_MAX_OPA);
-    Add(chart);
-}
-
-void HeartRateView::InsertTopAndBottomRateImage(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartRateView::InsertTopAndBottomRateImage start");
-    imageViewTop = new UIImageView();
-    imageViewBottom = new UIImageView();
-    if (imageViewTop == nullptr || imageViewBottom == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[InsertTopAndBottomRateImage] new imageViewTop or imageViewBottom fail");
-        return;
-    }
-    imageViewTop->SetPosition(TOP_IMAGE_X, TOP_IMAGE_Y);
-    imageViewTop->SetWidth(TOP_IMAGE_WIDTH);
-    imageViewTop->SetHeight(TOP_IMAGE_HEIGHT);
-    Add(imageViewTop);
-    imageViewBottom->SetPosition(BOTTOM_IMAGE_X, BOTTOM_IMAGE_Y);
-    imageViewBottom->SetWidth(BOTTOM_IMAGE_WIDTH);
-    imageViewBottom->SetHeight(BOTTOM_IMAGE_HEIGHT);
-    Add(imageViewBottom);
-}
-
-void HeartRateView::UpdataTopAndBottomRate(void)
-{
-    uint16_t bottom, top;
-    if (chart == nullptr) {
-        return;
-    }
-    if (dataTopAndbottom != nullptr) {
-        chart->DeleteDataSerial(dataTopAndbottom);
-        delete dataTopAndbottom;
-        dataTopAndbottom = nullptr;
-    }
-    dataTopAndbottom = new UIChartDataSerial();
-    if (dataTopAndbottom == nullptr) {
-        return;
-    }
-    if (dataNume != 1) {
-        dataTopAndbottom->SetMaxDataCount(dataNume);        // number of data points
-        dataTopAndbottom->AddPoints(rateDataTmp, dataNume); // number of data points
-    } else {
-        Point tmp[NUM_2];
-        tmp[0].x = tmp[1].x = rateDataTmp[0].x;
-        tmp[0].y = tmp[1].y = rateDataTmp[0].y;
-        dataTopAndbottom->SetMaxDataCount(NUM_2); // number of data points
-        dataTopAndbottom->AddPoints(tmp, NUM_2);  // number of data points
-    }
-    dataTopAndbottom->SetLineColor(Color::GetColorFromRGBA(0, 0, 0, 0)); // 设置透明
-    chart->AddDataSerial(dataTopAndbottom);
-    chart->Invalidate();
-
-    UIChartDataSerial::PointStyle pointStyle;
-    // 最低心跳
-    dataTopAndbottom->EnableBottomPoint(true);
-    pointStyle.radius = BOTTOM_RADIUS; // Inner radius
-    pointStyle.fillColor = Color::Gray();
-    pointStyle.strokeWidth = BOTTOM_STROKE_WIDTH; // border width
-    pointStyle.strokeColor = Color::Black();
-    dataTopAndbottom->SetBottomPointStyle(pointStyle);
-    chart->Invalidate();
-
-    bottom = dataTopAndbottom->GetValleyData() * ACT_IMAGE_COOR_VALUE / ACT_IMAGE_COOR_PIXELS;
-    // 最高心跳
-    dataTopAndbottom->EnableTopPoint(true);
-    pointStyle.fillColor = Color::Red();
-    pointStyle.radius = TOP_RADIUS; // Inner radius
-    pointStyle.strokeColor = Color::Black();
-    pointStyle.strokeWidth = TOP_STROKE_WIDTH; // border width
-    dataTopAndbottom->SetTopPointStyle(pointStyle);
-    chart->Invalidate();
-
-    top = dataTopAndbottom->GetPeakData() * ACT_IMAGE_COOR_VALUE / ACT_IMAGE_COOR_PIXELS;
-    if (top <= HEART_RATE_LIMIT_UPPER) {
-        maxRate = (maxRate >= top) ? maxRate : top;
-    }
-    if (bottom != 0) {
-        minRate = (minRate <= bottom) ? minRate : bottom;
-    }
-}
-
-void HeartRateView::ElectrocardiogramOnePoint(Point *rateData, uint16_t index)
-{
-    Point tmp[NUM_2];
-
-    if (rateData == nullptr || chart == nullptr || index >= HEART_AVE_NUM || serialIndex >= HEART_AVE_NUM) {
-        return;
-    }
-
-    tmp[0].x = tmp[1].x = rateData[index].x;
-    tmp[0].y = tmp[1].y = rateData[index].y;
-
-    dataSerial[serialIndex] = new UIChartDataSerial();
-    if (dataSerial[serialIndex] == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[ElectrocardiogramOnePoint] new dataSerial[%d] fail", serialIndex);
-        serialIndex++;
-        return;
-    }
-
-    dataSerial[serialIndex]->SetMaxDataCount(HEART_AVE_NUM); // 设置最大显示的像素点
-    dataSerial[serialIndex]->AddPoints(tmp, NUM_2);
-    dataSerial[serialIndex]->SetLineColor(Color::Red());
-    dataSerial[serialIndex]->SetFillColor(Color::Red());
-    dataSerial[serialIndex]->EnableGradient(true);
-
-    chart->AddDataSerial(dataSerial[serialIndex]);
-    chart->Invalidate();
-    serialIndex++;
-}
-
-void HeartRateView::ElectrocardiogramMultiPoint(Point *rateData, uint16_t rateDataNume)
-{
-    uint16_t i = 0;
-    uint16_t j = 0;
-    uint16_t tmp = 1;
-    if (rateData == nullptr || chart == nullptr || rateDataNume > HEART_AVE_NUM) {
-        return;
-    }
-
-    while (i < rateDataNume) {
-        while ((j + 1 < rateDataNume) && (rateData[j + 1].x - rateData[j].x <= NUM_4)) { // 15分钟对应的秒数
-            tmp++;
-            j++;
-        }
-        if (tmp == 1) {
-            ElectrocardiogramOnePoint(rateData, i);
-        } else {
-            if (serialIndex >= HEART_AVE_NUM) {
-                return;
-            }
-            if (serialIndex > 0 && dataSerial[serialIndex - 1] != nullptr && i == 0) {
-                dataSerial[serialIndex - 1]->AddPoints(rateData + 1, tmp - 1); // number of data points
-                chart->Invalidate();
-            } else {
-                dataSerial[serialIndex] = new UIChartDataSerial();
-                if (dataSerial[serialIndex] == nullptr) {
-                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[ElectrocardiogramMultiPoint] new dataSerial[%d] fail", serialIndex);
-                    serialIndex++;
-                    return;
-                }
-
-                dataSerial[serialIndex]->SetMaxDataCount(HEART_AVE_NUM); // number of data points
-                dataSerial[serialIndex]->AddPoints(rateData + i, tmp);   // number of data points
-                dataSerial[serialIndex]->SetLineColor(Color::Red());
-                dataSerial[serialIndex]->SetFillColor(Color::Red());
-                dataSerial[serialIndex]->EnableGradient(true);
-
-                chart->AddDataSerial(dataSerial[serialIndex]);
-                chart->Invalidate();
-                serialIndex++;
-            }
-        }
-        i += tmp;
-        j = i;
-        tmp = 1;
-    }
-}
-
-void HeartRateView::HeartRateElectrocardiogram(void)
-{
-    if (dataNume == 0) {
-        return;
-    }
-    serialIndex = 0;
-    if (dataNume != 1) {
-        ElectrocardiogramMultiPoint(rateDataTmp, dataNume); // 多个点
-    } else {
-        ElectrocardiogramOnePoint(rateDataTmp, 0); // 一个点
-    }
-    currIndex = dataNume;
-}
-
-void HeartRateView::HeartbeatImageAnimator()
-{
-    imageAnimator = new UIImageAnimatorView();
-    if (imageAnimator == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[HeartbeatImageAnimator] new imageAnimator fail");
-        return;
-    }
-    imageAnimator->SetPosition(HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT);
-    imageAnimator->SetImageAnimatorSrc(g_heartBeatImageInfo, HEARTBEAT_IMAGE_NUM, HEARTBEAT_DELAY);
-    imageAnimator->SetRepeat(true);
-    Add(imageAnimator);
-    imageAnimator->Start();
-}
-
-void HeartRateView::HeartbeatImageAnimatorStart(void)
-{
-    if (imageAnimator != nullptr) {
-        imageAnimator->Start();
-    }
-}
-
-void HeartRateView::HeartbeatImageAnimatorStop(void)
-{
-    if (imageAnimator != nullptr) {
-        imageAnimator->Stop();
-    }
-}
-
-bool HeartRateView::InitView(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartRateView::HeartRateView::InitView");
-    HeartRateDataProc();
-    HeartRateLabelDisplay();
-    HeartbeatImageAnimator();
-    HeartRateCoordinate();
-    InsertTopAndBottomRateImage();
-    HeartRateElectrocardiogram();
-    UpdataTopAndBottomRate();
-    HeartbeatImageAnimatorStop();
-    InitRefreshInterface();
-    return true;
-}
-
-void HeartRateView::PreLoad(void)
-{
-    if (!viewiInitStatus) {
-        if (InitView()) {
-            viewiInitStatus = true;
-        }
-    }
-
-    if (!resLoadStatus) {
-        ScreenModels::GetInstance()->LoadAppImages(HEART_IAMGES, imageViewTop, HEART_HEARTRATE_TOP);
-        ScreenModels::GetInstance()->LoadAppImages(HEART_IAMGES, imageViewBottom, HEART_HEARTRATE_BOTTOM);
-        ScreenModels::GetInstance()->LoadAppImages(HEART_IAMGES, imageViewCoordinate, HEART_HEARTRATECOOR);
-        resLoadStatus = true;
-    }
-}
-
-void HeartRateView::UnLoad(void)
-{
-    if (resLoadStatus) {
-        ImageInfo* img = nullptr;
-        imageViewTop->SetSrc(img);
-        imageViewBottom->SetSrc(img);
-        imageViewCoordinate->SetSrc(img);
-        ImageCacheManager::GetInstance().UnloadAllInMultiRes(HEART_IAMGES);
-        resLoadStatus = false;
-    }
-}
-
-void HeartRateView::InitRefreshInterface(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartRateView::HeartRateView::InitRefreshInterface");
-
-    Point *rateData = HeartModel::GetInstance()->GetAveHeartRate();
-    uint16_t len = HeartModel::GetInstance()->GetAveHeartRateCount();
-    SetHeartRateData(rateData, sizeof(Point) * len);
-    uint16_t maxRate = HeartModel::GetInstance()->GetHeartRateMax();
-    uint16_t minRate = HeartModel::GetInstance()->GetHeartRateMin();
-    RefreshElectrocardiogram();
-    if (maxRate > 0 && maxRate < HEART_RATE_LIMIT_UPPER) {
-        RefreshHeartRateMax(HeartModel::GetInstance()->GetHeartRateMax());
-    }
-    if (minRate > 0 && minRate < HEART_RATE_LIMIT_UPPER) {
-        RefreshHeartRateMin(HeartModel::GetInstance()->GetHeartRateMin());
-    }
-}
-
-// 刷新心率曲线
-void HeartRateView::RefreshElectrocardiogram(void)
-{
-    int32_t ret;
-    uint16_t tmp, count;
-    Point *rate = nullptr;
-    Point modPoint;
-
-    ret = HeartRateDataProc();
-    if (ret != OHOS_SUCCESS) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[RefreshElectrocardiogram()] fail");
-        return;
-    }
-    rate = rateDataTmp;
-
-    if (chart == nullptr) {
-        return;
-    }
-
-    if (currIndex >= HEART_AVE_NUM) {
-        currIndex = HEART_AVE_NUM;
-    }
-    if (dataNume > currIndex) {
-        tmp = dataNume - currIndex;
-        if (currIndex > 0) {
-            rate += (currIndex - 1);
-            tmp += 1;
-        }
-        ElectrocardiogramMultiPoint(rate, tmp);
-        currIndex = dataNume;
-    } else if (dataNume == currIndex) { // 当前点平均心率刷新
-        if (serialIndex > 0 && serialIndex <= HEART_AVE_NUM && dataSerial[serialIndex - 1] != nullptr) {
-            modPoint.x = rate[currIndex - 1].x;
-            modPoint.y = rate[currIndex - 1].y;
-
-            count = dataSerial[serialIndex - 1]->GetDataCount();
-            dataSerial[serialIndex - 1]->ModifyPoint(count - 1, modPoint);
-            chart->Invalidate();
-        }
-    } else {
-        return;
-    }
-    UpdataTopAndBottomRate(); // 最高、最低心率
-}
-
-// 清空心率曲线
-void HeartRateView::ClearElectrocardiogram(void)
-{
-    int32_t i;
-    dataNume = 0;
-    currIndex = 0;
-    maxRate = 0;
-    minRate = HEART_RATE_LIMIT_UPPER;
-    InitHeartRateData();
-
-    if (chart == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "chart == nullptr");
-        return;
-    }
-
-    if (ratePerSec != nullptr && topRate != nullptr && bottomRate != nullptr && restRate != nullptr) {
-        ratePerSec->SetText("--");
-        topRate->SetText("--");
-        bottomRate->SetText("--");
-        restRate->SetText("--");
-    }
-
-    chart->DeleteDataSerial(dataTopAndbottom);
-    delete dataTopAndbottom;
-    dataTopAndbottom = nullptr;
-    for (i = 0; i < serialIndex; i++) {
-        delete dataSerial[i];
-        dataSerial[i] = nullptr;
-    }
-    chart->ClearDataSerial();
-
-    serialIndex = 0;
-    chart->Invalidate();
-}
-
-// 刷新每秒上报的心率
-void HeartRateView::RefreshHeartRatePerSec(uint16_t value)
-{
-    char heartRate[NUM_4] = "--";
-    int32_t ret = 0;
-
-    if (ratePerSec == nullptr) {
-        return;
-    }
-
-    if (value == 0) {
-        ratePerSec->SetText("--");
-        HeartbeatImageAnimatorStop();
-        return;
-    }
-    HeartbeatImageAnimatorStart();
-    if (value > NUM_99) {
-        ret = sprintf_s(heartRate, sizeof(heartRate), "%u", value);
-    } else {
-        ret = sprintf_s(heartRate, sizeof(heartRate), " %u", value);
-    }
-    if (ret > EOK) {
-        ratePerSec->SetText(heartRate);
-    }
-}
-
-// 刷新最大心率
-void HeartRateView::RefreshHeartRateMax(uint16_t max)
-{
-    char top[NUM_4] = "--";
-    int32_t ret = 0;
-    maxRate = (maxRate >= max) ? maxRate : max;
-    if (topRate == nullptr) {
-        return;
-    }
-    if (maxRate <= HEART_RATE_LIMIT_LOWER) {
-        topRate->SetText("--");
-        return;
-    }
-    ret = sprintf_s(top, sizeof(top), "%u", maxRate);
-    if (ret > EOK) {
-        topRate->SetText(top);
-    }
-}
-
-// 刷新最小心率
-void HeartRateView::RefreshHeartRateMin(uint16_t min)
-{
-    char bottom[NUM_4] = "--";
-    int32_t ret = 0;
-
-    minRate = (minRate <= min) ? minRate : min;
-    if (bottomRate == nullptr) {
-        return;
-    }
-    if (minRate >= HEART_RATE_LIMIT_UPPER) {
-        bottomRate->SetText("--");
-        return;
-    }
-    ret = sprintf_s(bottom, sizeof(bottom), "%u", minRate);
-    if (ret > EOK) {
-        bottomRate->SetText(bottom);
-    }
-}
-
-// 刷新静息心率
-void HeartRateView::RefreshRestHeartRate(uint16_t value)
-{
-    char heartRate[NUM_4] = "--";
-    int32_t ret = 0;
-
-    if (restRate == nullptr) {
-        return;
-    }
-
-    if (value == 0 || value == (uint16_t)0xFFFF) { // 无效值
-        restRate->SetText("--");
-    } else {
-        if (value > NUM_99) {
-            ret = sprintf_s(heartRate, sizeof(heartRate), "%u", value);
-        } else {
-            ret = sprintf_s(heartRate, sizeof(heartRate), " %u", value);
-        }
-
-        if (ret > EOK) {
-            restRate->SetText(heartRate);
-        }
-    }
-}
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: heartRate view\r
+ * Author:\r
+ * Create: 2021-07-26\r
+ */\r
+\r
+#include <securec.h>\r
+#include "HeartRateView.h"\r
+#include "common/screen.h"\r
+#include "UiConfig.h"\r
+#include "ScreenModels.h"\r
+#include "ui_resource_image.h"\r
+#include "common/image_cache_manager.h"\r
+\r
+namespace OHOS {\r
+static HeartRateView *g_pHeartRateView = nullptr;\r
+\r
+// 背景坐标图形\r
+#define ACT_IMAGE_X 0                               // 图片坐标起点\r
+#define ACT_IMAGE_Y 115                             // 图片坐标起点\r
+#define ACT_IMAGE_COOR_X 45                         // 200刻度线到最左端的像素点\r
+#define ACT_IMAGE_COOR_Y 145                        // 200刻度线到顶端的像素点\r
+#define ACT_IMAGE_COOR_PIXELS 160                   // 实际背景坐标0到200心率值的实际像素点\r
+#define ACT_IMAGE_COOR_VALUE HEART_RATE_LIMIT_UPPER // 图片刻度表示的心率范围\r
+#define ACT_IMAGE_COOR_WIDTH 454\r
+#define ACT_IMAGE_COOR_HEIGHT 220\r
+\r
+// 心电图坐标适配\r
+#define COORDINATE_VALUE 5 // 余量\r
+#define COORDINATE_POINT_X (ACT_IMAGE_COOR_X - COORDINATE_VALUE)\r
+#define COORDINATE_POINT_Y (ACT_IMAGE_COOR_Y - COORDINATE_VALUE * 2)\r
+#define COORDINATE_HEIGHT (ACT_IMAGE_COOR_PIXELS + COORDINATE_VALUE * 2)\r
+#define COORDINATE_WIDTH (HEART_AVE_NUM + COORDINATE_VALUE * 2) // 360点,每点对应240秒(4分钟)\r
+#define COORDINATE_GRAD_MIN_OPA 25\r
+#define COORDINATE_GRAD_MAX_OPA 180\r
+\r
+// 心形心跳\r
+#define HEARTBEAT_IMAGE_WIDTH 92\r
+#define HEARTBEAT_IMAGE_HEIGHT 92\r
+#define HEARTBEAT_IMAGE_X 130\r
+#define HEARTBEAT_IMAGE_Y 25\r
+#define HEARTBEAT_IMAGE_NUM 19\r
+#define HEARTBEAT_DELAY 50\r
+\r
+// 最高心率\r
+#define TOP_IMAGE_WIDTH 32\r
+#define TOP_IMAGE_HEIGHT 32\r
+#define TOP_IMAGE_X 120\r
+#define TOP_IMAGE_Y 340\r
+#define TOP_STROKE_WIDTH 1\r
+#define TOP_RADIUS 4\r
+\r
+#define HEART_RATE_LIMIT_FONT_SIZE 30\r
+#define TOP_TEXT_WIDTH 80\r
+#define TOP_TEXT_HEIGHT (HEART_RATE_LIMIT_FONT_SIZE + 5)\r
+#define TOP_TEXT_X 160\r
+#define TOP_TEXT_Y 337\r
+\r
+// 最低心率\r
+#define BOTTOM_IMAGE_WIDTH 32\r
+#define BOTTOM_IMAGE_HEIGHT 32\r
+#define BOTTOM_IMAGE_X 250\r
+#define BOTTOM_IMAGE_Y 340\r
+#define BOTTOM_STROKE_WIDTH 1\r
+#define BOTTOM_RADIUS 3\r
+\r
+#define BOTTOM_TEXT_WIDTH 80\r
+#define BOTTOM_TEXT_HEIGHT (HEART_RATE_LIMIT_FONT_SIZE + 5)\r
+#define BOTTOM_TEXT_X 290\r
+#define BOTTOM_TEXT_Y 337\r
+\r
+// 静息心率\r
+#define REST_HEART_RATE_FONT_SIZE 40\r
+#define REST_HEART_RATE_X 195\r
+#define REST_HEART_RATE_Y 380\r
+#define REST_HEART_RATE_WIDTH 95\r
+#define REST_HEART_RATE_HEIGHT (REST_HEART_RATE_FONT_SIZE + 5)\r
+\r
+#define REST_HEART_TEXT_FONT_SIZE 30\r
+#define REST_HEART_TEXT_X1 120\r
+#define REST_HEART_TEXT_Y1 390\r
+#define REST_HEART_TEXT_WIDTH1 75\r
+#define REST_HEART_TEXT_HEIGHT1 (REST_HEART_TEXT_FONT_SIZE + 5)\r
+\r
+#define REST_HEART_TEXT_X2 265\r
+#define REST_HEART_TEXT_Y2 390\r
+#define REST_HEART_TEXT_WIDTH2 75\r
+#define REST_HEART_TEXT_HEIGHT2 (REST_HEART_TEXT_FONT_SIZE + 5)\r
+\r
+// 每秒心率\r
+#define PERSEC_HEART_RATE_FONT_SIZE 45\r
+#define PERSEC_HEART_RATE_X 225\r
+#define PERSEC_HEART_RATE_Y 55\r
+#define PERSEC_HEART_RATE_WIDTH 90\r
+#define PERSEC_HEART_RATE_HEIGHT (PERSEC_HEART_RATE_FONT_SIZE + 5)\r
+\r
+#define PERSEC_HEART_TEXT_FONT_SIZE 30\r
+#define PERSEC_HEART_TEXT_X 310\r
+#define PERSEC_HEART_TEXT_Y 75\r
+#define PERSEC_HEART_TEXT_WIDTH 75\r
+#define PERSEC_HEART_TEXT_HEIGHT (PERSEC_HEART_TEXT_FONT_SIZE + 5)\r
+\r
+// 心跳image\r
+static ImageAnimatorInfo g_heartBeatImageInfo[HEARTBEAT_IMAGE_NUM] = {\r
+    {PNG_A004_070_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+    {PNG_A004_071_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+    {PNG_A004_072_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+    {PNG_A004_073_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+    {PNG_A004_074_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+    {PNG_A004_075_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+    {PNG_A004_076_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+    {PNG_A004_077_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+    {PNG_A004_078_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+    {PNG_A004_079_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+\r
+    {PNG_A004_080_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+    {PNG_A004_081_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+    {PNG_A004_082_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+    {PNG_A004_083_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+    {PNG_A004_084_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+    {PNG_A004_085_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+    {PNG_A004_086_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+    {PNG_A004_087_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+    {PNG_A004_088_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+};\r
+\r
+HeartRateView::HeartRateView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartRateView::HeartRateView");\r
+    dataNume = 0;\r
+    currIndex = 0;\r
+    serialIndex = 0;\r
+    maxRate = 0;\r
+    minRate = HEART_RATE_LIMIT_UPPER;\r
+    InitHeartRateData();\r
+    SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
+\r
+    g_pHeartRateView = this;\r
+}\r
+\r
+HeartRateView::~HeartRateView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartRateView::~HeartRateView");\r
+    if (viewiInitStatus == true) {\r
+        int32_t i;\r
+        RemoveAll();\r
+        delete imageViewCoordinate;\r
+        imageViewCoordinate = nullptr;\r
+\r
+        chart->ClearDataSerial();\r
+        for (i = 0; i < HEART_AVE_NUM; i++) {\r
+            delete dataSerial[i];\r
+            dataSerial[i] = nullptr;\r
+        }\r
+        delete chart;\r
+        chart = nullptr;\r
+        delete imageViewTop;\r
+        imageViewTop = nullptr;\r
+        delete imageViewBottom;\r
+        imageViewBottom = nullptr;\r
+        delete dataTopAndbottom;\r
+        dataTopAndbottom = nullptr;\r
+        imageAnimator->Stop();\r
+        delete imageAnimator;\r
+        imageAnimator = nullptr;\r
+        delete topRate;\r
+        topRate = nullptr;\r
+        delete bottomRate;\r
+        bottomRate = nullptr;\r
+        delete ratePerSec;\r
+        ratePerSec = nullptr;\r
+        delete ratePerSecText;\r
+        ratePerSecText = nullptr;\r
+        delete restRate;\r
+        restRate = nullptr;\r
+        delete restRateText1;\r
+        restRateText1 = nullptr;\r
+        delete restRateText2;\r
+        restRateText2 = nullptr;\r
+    }\r
+    g_pHeartRateView = nullptr;\r
+}\r
+\r
+HeartRateView *HeartRateView::GetInstance(void)\r
+{\r
+    return g_pHeartRateView;\r
+}\r
+\r
+int32_t HeartRateView::InitHeartRateData(void) // 初始化心率数据,将存放心率数据的有效字节设置为无效值\r
+{\r
+    int32_t ret;\r
+\r
+    heartRateData[0].x = INVALID_HEART_VALUE;\r
+    heartRateData[0].y = INVALID_HEART_VALUE;\r
+\r
+    ret = memset_s(heartRateData, sizeof(Point) * HEART_AVE_NUM, INVALID_HEART_VALUE, sizeof(Point) * HEART_AVE_NUM);\r
+    if (ret != 0) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[InitHeartRateData] memset_s heartRateData fail! ret = %d", ret);\r
+    }\r
+    return ret;\r
+}\r
+\r
+int32_t HeartRateView::SetHeartRateData(Point *rateData, uint32 rateDataSize)\r
+{\r
+    int ret;\r
+\r
+    if (rateData == nullptr) {\r
+        return OHOS_FAILURE;\r
+    }\r
+\r
+    if (rateDataSize > sizeof(Point) * HEART_AVE_NUM) {\r
+        rateDataSize = sizeof(Point) * HEART_AVE_NUM;\r
+    }\r
+    InitHeartRateData();\r
+    ret = memcpy_s(heartRateData, sizeof(Point) * HEART_AVE_NUM, rateData, rateDataSize);\r
+    if (ret != EOK) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[HeartRateDataProc] memcpy_s heartRateData fail! ret = %d", ret);\r
+        return OHOS_FAILURE;\r
+    }\r
+\r
+    return OHOS_SUCCESS;\r
+}\r
+\r
+\r
+int32_t HeartRateView::HeartRateDataProc(void)\r
+{\r
+    int32_t i, ret;\r
+    Point datain[HEART_AVE_NUM];\r
+\r
+    ret = memcpy_s(datain, sizeof(Point) * HEART_AVE_NUM, heartRateData, sizeof(Point) * HEART_AVE_NUM);\r
+    if (ret != EOK) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[HeartRateDataProc] memcpy_s rateDataTmp fail! ret = %d", ret);\r
+        return OHOS_FAILURE;\r
+    }\r
+\r
+    ret = memset_s(rateDataTmp, sizeof(Point) * HEART_AVE_NUM, INVALID_HEART_VALUE, sizeof(Point) * HEART_AVE_NUM); // 替换为无效值\r
+    if (ret != EOK) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[HeartRateDataProc] memset_s rateDataTmp fail! ret = %d", ret);\r
+        return OHOS_FAILURE;\r
+    }\r
+\r
+    dataNume = 0;\r
+    for (i = 0; i < HEART_AVE_NUM; i++) {\r
+        if (datain[i].x >= 0 && datain[i].x < HEART_AVE_NUM && datain[i].y > 0 &&\r
+            datain[i].y <= HEART_RATE_LIMIT_UPPER) {\r
+            rateDataTmp[dataNume].x = datain[i].x + COORDINATE_VALUE;\r
+            rateDataTmp[dataNume].y = datain[i].y * ACT_IMAGE_COOR_PIXELS / ACT_IMAGE_COOR_VALUE;\r
+            dataNume++;\r
+        }\r
+    }\r
+    return OHOS_SUCCESS;\r
+}\r
+\r
+void HeartRateView::SetLabel(UILabel *label, LabelInfo labelInfo)\r
+{\r
+    label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, labelInfo.fontSize);\r
+    label->SetPosition(labelInfo.x, labelInfo.y);\r
+    label->Resize(labelInfo.width, labelInfo.height);\r
+    label->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
+    Add(label);\r
+}\r
+\r
+void HeartRateView::HeartRateLabelDisplay(void)\r
+{\r
+    LabelInfo PerSecLabel = { PERSEC_HEART_RATE_FONT_SIZE, PERSEC_HEART_RATE_X, PERSEC_HEART_RATE_Y,\r
+                              PERSEC_HEART_RATE_WIDTH, PERSEC_HEART_RATE_HEIGHT };\r
+    LabelInfo PerSecTextLabel = { PERSEC_HEART_TEXT_FONT_SIZE, PERSEC_HEART_TEXT_X, PERSEC_HEART_TEXT_Y,\r
+                                  PERSEC_HEART_TEXT_WIDTH, PERSEC_HEART_TEXT_HEIGHT };\r
+\r
+    LabelInfo topLabel = { HEART_RATE_LIMIT_FONT_SIZE, TOP_TEXT_X, TOP_TEXT_Y, TOP_TEXT_WIDTH, TOP_TEXT_HEIGHT };\r
+    LabelInfo bottomLabel = { HEART_RATE_LIMIT_FONT_SIZE, BOTTOM_TEXT_X, BOTTOM_TEXT_Y, BOTTOM_TEXT_WIDTH,\r
+                              BOTTOM_TEXT_HEIGHT };\r
+\r
+    LabelInfo restRateLabel = { REST_HEART_RATE_FONT_SIZE, REST_HEART_RATE_X, REST_HEART_RATE_Y, REST_HEART_RATE_WIDTH,\r
+                                REST_HEART_RATE_HEIGHT };\r
+    LabelInfo restRateTextLabel1 = { REST_HEART_TEXT_FONT_SIZE, REST_HEART_TEXT_X1, REST_HEART_TEXT_Y1,\r
+                                     REST_HEART_TEXT_WIDTH1, REST_HEART_TEXT_HEIGHT1 };\r
+    LabelInfo restRateTextLabel2 = { REST_HEART_TEXT_FONT_SIZE, REST_HEART_TEXT_X2, REST_HEART_TEXT_Y2,\r
+                                     REST_HEART_TEXT_WIDTH2, REST_HEART_TEXT_HEIGHT2 };\r
+\r
+    topRate = new UILabel();\r
+    bottomRate = new UILabel();\r
+    ratePerSec = new UILabel();\r
+    ratePerSecText = new UILabel();\r
+    restRate = new UILabel();\r
+    restRateText1 = new UILabel();\r
+    restRateText2 = new UILabel();\r
+\r
+    if (topRate == nullptr || bottomRate == nullptr || ratePerSec == nullptr || ratePerSecText == nullptr ||\r
+        restRate == nullptr || restRateText1 == nullptr || restRateText2 == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[HeartRateLabelDisplay] new UILabel fail");\r
+    }\r
+\r
+    // 实时心率\r
+    SetLabel(ratePerSec, PerSecLabel);\r
+    SetLabel(ratePerSecText, PerSecTextLabel);\r
+    ratePerSec->SetText("--");\r
+    ratePerSecText->SetText("次/分");\r
+\r
+    // 最高最低心率\r
+    SetLabel(topRate, topLabel);\r
+    SetLabel(bottomRate, bottomLabel);\r
+    topRate->SetText("--");\r
+    bottomRate->SetText("--");\r
+\r
+    // 静息心率\r
+    SetLabel(restRate, restRateLabel);\r
+    SetLabel(restRateText1, restRateTextLabel1);\r
+    SetLabel(restRateText2, restRateTextLabel2);\r
+    restRateText1->SetText("静息");\r
+    restRate->SetText("--");\r
+    restRateText2->SetText("次/分");\r
+}\r
+\r
+void HeartRateView::HeartRateCoordinate(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartRateView::HeartRateCoordinate start");\r
+    // 坐标图片\r
+    imageViewCoordinate = new UIImageView();\r
+    if (imageViewCoordinate == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[HeartRateCoordinate] new imageViewCoordinate fail");\r
+        return;\r
+    }\r
+    imageViewCoordinate->SetPosition(ACT_IMAGE_X, ACT_IMAGE_Y);\r
+    imageViewCoordinate->SetWidth(ACT_IMAGE_COOR_WIDTH);\r
+    imageViewCoordinate->SetHeight(ACT_IMAGE_COOR_HEIGHT);\r
+    Add(imageViewCoordinate);\r
+\r
+    //  心电图坐标适配\r
+    chart = new UIChartPolyline();\r
+    if (chart == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[HeartRateCoordinate] new chart fail");\r
+        return;\r
+    }\r
+    chart->SetPosition(COORDINATE_POINT_X, COORDINATE_POINT_Y);\r
+    chart->SetWidth(COORDINATE_WIDTH);\r
+    chart->SetHeight(COORDINATE_HEIGHT);\r
+    chart->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
+    chart->SetStyle(STYLE_BACKGROUND_OPA, 0);\r
+    chart->SetStyle(STYLE_LINE_WIDTH, 1); // line width\r
+\r
+    UIXAxis &xAxis = chart->GetXAxis();\r
+    UIYAxis &yAxis = chart->GetYAxis();\r
+    xAxis.SetDataRange(0, COORDINATE_WIDTH); // 24小时对应的秒数\r
+    yAxis.SetDataRange(0, COORDINATE_HEIGHT);\r
+    xAxis.SetLineColor(Color::GetColorFromRGBA(0, 0, 0, 0));\r
+    yAxis.SetLineColor(Color::GetColorFromRGBA(0, 0, 0, 0));\r
+    chart->SetGradientOpacity(COORDINATE_GRAD_MIN_OPA, COORDINATE_GRAD_MAX_OPA);\r
+    Add(chart);\r
+}\r
+\r
+void HeartRateView::InsertTopAndBottomRateImage(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartRateView::InsertTopAndBottomRateImage start");\r
+    imageViewTop = new UIImageView();\r
+    imageViewBottom = new UIImageView();\r
+    if (imageViewTop == nullptr || imageViewBottom == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[InsertTopAndBottomRateImage] new imageViewTop or imageViewBottom fail");\r
+        return;\r
+    }\r
+    imageViewTop->SetPosition(TOP_IMAGE_X, TOP_IMAGE_Y);\r
+    imageViewTop->SetWidth(TOP_IMAGE_WIDTH);\r
+    imageViewTop->SetHeight(TOP_IMAGE_HEIGHT);\r
+    Add(imageViewTop);\r
+    imageViewBottom->SetPosition(BOTTOM_IMAGE_X, BOTTOM_IMAGE_Y);\r
+    imageViewBottom->SetWidth(BOTTOM_IMAGE_WIDTH);\r
+    imageViewBottom->SetHeight(BOTTOM_IMAGE_HEIGHT);\r
+    Add(imageViewBottom);\r
+}\r
+\r
+void HeartRateView::UpdataTopAndBottomRate(void)\r
+{\r
+    uint16_t bottom, top;\r
+    if (chart == nullptr) {\r
+        return;\r
+    }\r
+    if (dataTopAndbottom != nullptr) {\r
+        chart->DeleteDataSerial(dataTopAndbottom);\r
+        delete dataTopAndbottom;\r
+        dataTopAndbottom = nullptr;\r
+    }\r
+    dataTopAndbottom = new UIChartDataSerial();\r
+    if (dataTopAndbottom == nullptr) {\r
+        return;\r
+    }\r
+    if (dataNume != 1) {\r
+        dataTopAndbottom->SetMaxDataCount(dataNume);        // number of data points\r
+        dataTopAndbottom->AddPoints(rateDataTmp, dataNume); // number of data points\r
+    } else {\r
+        Point tmp[NUM_2];\r
+        tmp[0].x = tmp[1].x = rateDataTmp[0].x;\r
+        tmp[0].y = tmp[1].y = rateDataTmp[0].y;\r
+        dataTopAndbottom->SetMaxDataCount(NUM_2); // number of data points\r
+        dataTopAndbottom->AddPoints(tmp, NUM_2);  // number of data points\r
+    }\r
+    dataTopAndbottom->SetLineColor(Color::GetColorFromRGBA(0, 0, 0, 0)); // 设置透明\r
+    chart->AddDataSerial(dataTopAndbottom);\r
+    chart->Invalidate();\r
+\r
+    UIChartDataSerial::PointStyle pointStyle;\r
+    // 最低心跳\r
+    dataTopAndbottom->EnableBottomPoint(true);\r
+    pointStyle.radius = BOTTOM_RADIUS; // Inner radius\r
+    pointStyle.fillColor = Color::Gray();\r
+    pointStyle.strokeWidth = BOTTOM_STROKE_WIDTH; // border width\r
+    pointStyle.strokeColor = Color::Black();\r
+    dataTopAndbottom->SetBottomPointStyle(pointStyle);\r
+    chart->Invalidate();\r
+\r
+    bottom = dataTopAndbottom->GetValleyData() * ACT_IMAGE_COOR_VALUE / ACT_IMAGE_COOR_PIXELS;\r
+    // 最高心跳\r
+    dataTopAndbottom->EnableTopPoint(true);\r
+    pointStyle.fillColor = Color::Red();\r
+    pointStyle.radius = TOP_RADIUS; // Inner radius\r
+    pointStyle.strokeColor = Color::Black();\r
+    pointStyle.strokeWidth = TOP_STROKE_WIDTH; // border width\r
+    dataTopAndbottom->SetTopPointStyle(pointStyle);\r
+    chart->Invalidate();\r
+\r
+    top = dataTopAndbottom->GetPeakData() * ACT_IMAGE_COOR_VALUE / ACT_IMAGE_COOR_PIXELS;\r
+    if (top <= HEART_RATE_LIMIT_UPPER) {\r
+        maxRate = (maxRate >= top) ? maxRate : top;\r
+    }\r
+    if (bottom != 0) {\r
+        minRate = (minRate <= bottom) ? minRate : bottom;\r
+    }\r
+}\r
+\r
+void HeartRateView::ElectrocardiogramOnePoint(Point *rateData, uint16_t index)\r
+{\r
+    Point tmp[NUM_2];\r
+\r
+    if (rateData == nullptr || chart == nullptr || index >= HEART_AVE_NUM || serialIndex >= HEART_AVE_NUM) {\r
+        return;\r
+    }\r
+\r
+    tmp[0].x = tmp[1].x = rateData[index].x;\r
+    tmp[0].y = tmp[1].y = rateData[index].y;\r
+\r
+    dataSerial[serialIndex] = new UIChartDataSerial();\r
+    if (dataSerial[serialIndex] == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[ElectrocardiogramOnePoint] new dataSerial[%d] fail", serialIndex);\r
+        serialIndex++;\r
+        return;\r
+    }\r
+\r
+    dataSerial[serialIndex]->SetMaxDataCount(HEART_AVE_NUM); // 设置最大显示的像素点\r
+    dataSerial[serialIndex]->AddPoints(tmp, NUM_2);\r
+    dataSerial[serialIndex]->SetLineColor(Color::Red());\r
+    dataSerial[serialIndex]->SetFillColor(Color::Red());\r
+    dataSerial[serialIndex]->EnableGradient(true);\r
+\r
+    chart->AddDataSerial(dataSerial[serialIndex]);\r
+    chart->Invalidate();\r
+    serialIndex++;\r
+}\r
+\r
+void HeartRateView::ElectrocardiogramMultiPoint(Point *rateData, uint16_t rateDataNume)\r
+{\r
+    uint16_t i = 0;\r
+    uint16_t j = 0;\r
+    uint16_t tmp = 1;\r
+    if (rateData == nullptr || chart == nullptr || rateDataNume > HEART_AVE_NUM) {\r
+        return;\r
+    }\r
+\r
+    while (i < rateDataNume) {\r
+        while ((j + 1 < rateDataNume) && (rateData[j + 1].x - rateData[j].x <= NUM_4)) { // 15分钟对应的秒数\r
+            tmp++;\r
+            j++;\r
+        }\r
+        if (tmp == 1) {\r
+            ElectrocardiogramOnePoint(rateData, i);\r
+        } else {\r
+            if (serialIndex >= HEART_AVE_NUM) {\r
+                return;\r
+            }\r
+            if (serialIndex > 0 && dataSerial[serialIndex - 1] != nullptr && i == 0) {\r
+                dataSerial[serialIndex - 1]->AddPoints(rateData + 1, tmp - 1); // number of data points\r
+                chart->Invalidate();\r
+            } else {\r
+                dataSerial[serialIndex] = new UIChartDataSerial();\r
+                if (dataSerial[serialIndex] == nullptr) {\r
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[ElectrocardiogramMultiPoint] new dataSerial[%d] fail", serialIndex);\r
+                    serialIndex++;\r
+                    return;\r
+                }\r
+\r
+                dataSerial[serialIndex]->SetMaxDataCount(HEART_AVE_NUM); // number of data points\r
+                dataSerial[serialIndex]->AddPoints(rateData + i, tmp);   // number of data points\r
+                dataSerial[serialIndex]->SetLineColor(Color::Red());\r
+                dataSerial[serialIndex]->SetFillColor(Color::Red());\r
+                dataSerial[serialIndex]->EnableGradient(true);\r
+\r
+                chart->AddDataSerial(dataSerial[serialIndex]);\r
+                chart->Invalidate();\r
+                serialIndex++;\r
+            }\r
+        }\r
+        i += tmp;\r
+        j = i;\r
+        tmp = 1;\r
+    }\r
+}\r
+\r
+void HeartRateView::HeartRateElectrocardiogram(void)\r
+{\r
+    if (dataNume == 0) {\r
+        return;\r
+    }\r
+    serialIndex = 0;\r
+    if (dataNume != 1) {\r
+        ElectrocardiogramMultiPoint(rateDataTmp, dataNume); // 多个点\r
+    } else {\r
+        ElectrocardiogramOnePoint(rateDataTmp, 0); // 一个点\r
+    }\r
+    currIndex = dataNume;\r
+}\r
+\r
+void HeartRateView::HeartbeatImageAnimator()\r
+{\r
+    imageAnimator = new UIImageAnimatorView();\r
+    if (imageAnimator == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[HeartbeatImageAnimator] new imageAnimator fail");\r
+        return;\r
+    }\r
+    imageAnimator->SetPosition(HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT);\r
+    imageAnimator->SetImageAnimatorSrc(g_heartBeatImageInfo, HEARTBEAT_IMAGE_NUM, HEARTBEAT_DELAY);\r
+    imageAnimator->SetRepeat(true);\r
+    Add(imageAnimator);\r
+    imageAnimator->Start();\r
+}\r
+\r
+void HeartRateView::HeartbeatImageAnimatorStart(void)\r
+{\r
+    if (imageAnimator != nullptr) {\r
+        imageAnimator->Start();\r
+    }\r
+}\r
+\r
+void HeartRateView::HeartbeatImageAnimatorStop(void)\r
+{\r
+    if (imageAnimator != nullptr) {\r
+        imageAnimator->Stop();\r
+    }\r
+}\r
+\r
+bool HeartRateView::InitView(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartRateView::HeartRateView::InitView");\r
+    HeartRateDataProc();\r
+    HeartRateLabelDisplay();\r
+    HeartbeatImageAnimator();\r
+    HeartRateCoordinate();\r
+    InsertTopAndBottomRateImage();\r
+    HeartRateElectrocardiogram();\r
+    UpdataTopAndBottomRate();\r
+    HeartbeatImageAnimatorStop();\r
+    InitRefreshInterface();\r
+    return true;\r
+}\r
+\r
+void HeartRateView::PreLoad(void)\r
+{\r
+    if (!viewiInitStatus) {\r
+        if (InitView()) {\r
+            viewiInitStatus = true;\r
+        }\r
+    }\r
+\r
+    if (!resLoadStatus) {\r
+        ScreenModels::GetInstance()->LoadAppImages(HEART_IAMGES, imageViewTop, HEART_HEARTRATE_TOP);\r
+        ScreenModels::GetInstance()->LoadAppImages(HEART_IAMGES, imageViewBottom, HEART_HEARTRATE_BOTTOM);\r
+        ScreenModels::GetInstance()->LoadAppImages(HEART_IAMGES, imageViewCoordinate, HEART_HEARTRATECOOR);\r
+        resLoadStatus = true;\r
+    }\r
+}\r
+\r
+void HeartRateView::UnLoad(void)\r
+{\r
+    if (resLoadStatus) {\r
+        ImageInfo* img = nullptr;\r
+        imageViewTop->SetSrc(img);\r
+        imageViewBottom->SetSrc(img);\r
+        imageViewCoordinate->SetSrc(img);\r
+        ImageCacheManager::GetInstance().UnloadAllInMultiRes(HEART_IAMGES);\r
+        resLoadStatus = false;\r
+    }\r
+}\r
+\r
+void HeartRateView::InitRefreshInterface(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartRateView::HeartRateView::InitRefreshInterface");\r
+\r
+    Point *rateData = HeartModel::GetInstance()->GetAveHeartRate();\r
+    uint16_t len = HeartModel::GetInstance()->GetAveHeartRateCount();\r
+    SetHeartRateData(rateData, sizeof(Point) * len);\r
+    uint16_t maxRate = HeartModel::GetInstance()->GetHeartRateMax();\r
+    uint16_t minRate = HeartModel::GetInstance()->GetHeartRateMin();\r
+    RefreshElectrocardiogram();\r
+    if (maxRate > 0 && maxRate < HEART_RATE_LIMIT_UPPER) {\r
+        RefreshHeartRateMax(HeartModel::GetInstance()->GetHeartRateMax());\r
+    }\r
+    if (minRate > 0 && minRate < HEART_RATE_LIMIT_UPPER) {\r
+        RefreshHeartRateMin(HeartModel::GetInstance()->GetHeartRateMin());\r
+    }\r
+}\r
+\r
+// 刷新心率曲线\r
+void HeartRateView::RefreshElectrocardiogram(void)\r
+{\r
+    int32_t ret;\r
+    uint16_t tmp, count;\r
+    Point *rate = nullptr;\r
+    Point modPoint;\r
+\r
+    ret = HeartRateDataProc();\r
+    if (ret != OHOS_SUCCESS) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateView::[RefreshElectrocardiogram()] fail");\r
+        return;\r
+    }\r
+    rate = rateDataTmp;\r
+\r
+    if (chart == nullptr) {\r
+        return;\r
+    }\r
+\r
+    if (currIndex >= HEART_AVE_NUM) {\r
+        currIndex = HEART_AVE_NUM;\r
+    }\r
+    if (dataNume > currIndex) {\r
+        tmp = dataNume - currIndex;\r
+        if (currIndex > 0) {\r
+            rate += (currIndex - 1);\r
+            tmp += 1;\r
+        }\r
+        ElectrocardiogramMultiPoint(rate, tmp);\r
+        currIndex = dataNume;\r
+    } else if (dataNume == currIndex) { // 当前点平均心率刷新\r
+        if (serialIndex > 0 && serialIndex <= HEART_AVE_NUM && dataSerial[serialIndex - 1] != nullptr) {\r
+            modPoint.x = rate[currIndex - 1].x;\r
+            modPoint.y = rate[currIndex - 1].y;\r
+\r
+            count = dataSerial[serialIndex - 1]->GetDataCount();\r
+            dataSerial[serialIndex - 1]->ModifyPoint(count - 1, modPoint);\r
+            chart->Invalidate();\r
+        }\r
+    } else {\r
+        return;\r
+    }\r
+    UpdataTopAndBottomRate(); // 最高、最低心率\r
+}\r
+\r
+// 清空心率曲线\r
+void HeartRateView::ClearElectrocardiogram(void)\r
+{\r
+    int32_t i;\r
+    dataNume = 0;\r
+    currIndex = 0;\r
+    maxRate = 0;\r
+    minRate = HEART_RATE_LIMIT_UPPER;\r
+    InitHeartRateData();\r
+\r
+    if (chart == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "chart == nullptr");\r
+        return;\r
+    }\r
+\r
+    if (ratePerSec != nullptr && topRate != nullptr && bottomRate != nullptr && restRate != nullptr) {\r
+        ratePerSec->SetText("--");\r
+        topRate->SetText("--");\r
+        bottomRate->SetText("--");\r
+        restRate->SetText("--");\r
+    }\r
+\r
+    chart->DeleteDataSerial(dataTopAndbottom);\r
+    delete dataTopAndbottom;\r
+    dataTopAndbottom = nullptr;\r
+    for (i = 0; i < serialIndex; i++) {\r
+        delete dataSerial[i];\r
+        dataSerial[i] = nullptr;\r
+    }\r
+    chart->ClearDataSerial();\r
+\r
+    serialIndex = 0;\r
+    chart->Invalidate();\r
+}\r
+\r
+// 刷新每秒上报的心率\r
+void HeartRateView::RefreshHeartRatePerSec(uint16_t value)\r
+{\r
+    char heartRate[NUM_4] = "--";\r
+    int32_t ret = 0;\r
+\r
+    if (ratePerSec == nullptr) {\r
+        return;\r
+    }\r
+\r
+    if (value == 0) {\r
+        ratePerSec->SetText("--");\r
+        HeartbeatImageAnimatorStop();\r
+        return;\r
+    }\r
+    HeartbeatImageAnimatorStart();\r
+    if (value > NUM_99) {\r
+        ret = sprintf_s(heartRate, sizeof(heartRate), "%u", value);\r
+    } else {\r
+        ret = sprintf_s(heartRate, sizeof(heartRate), " %u", value);\r
+    }\r
+    if (ret > EOK) {\r
+        ratePerSec->SetText(heartRate);\r
+    }\r
+}\r
+\r
+// 刷新最大心率\r
+void HeartRateView::RefreshHeartRateMax(uint16_t max)\r
+{\r
+    char top[NUM_4] = "--";\r
+    int32_t ret = 0;\r
+    maxRate = (maxRate >= max) ? maxRate : max;\r
+    if (topRate == nullptr) {\r
+        return;\r
+    }\r
+    if (maxRate <= HEART_RATE_LIMIT_LOWER) {\r
+        topRate->SetText("--");\r
+        return;\r
+    }\r
+    ret = sprintf_s(top, sizeof(top), "%u", maxRate);\r
+    if (ret > EOK) {\r
+        topRate->SetText(top);\r
+    }\r
+}\r
+\r
+// 刷新最小心率\r
+void HeartRateView::RefreshHeartRateMin(uint16_t min)\r
+{\r
+    char bottom[NUM_4] = "--";\r
+    int32_t ret = 0;\r
+\r
+    minRate = (minRate <= min) ? minRate : min;\r
+    if (bottomRate == nullptr) {\r
+        return;\r
+    }\r
+    if (minRate >= HEART_RATE_LIMIT_UPPER) {\r
+        bottomRate->SetText("--");\r
+        return;\r
+    }\r
+    ret = sprintf_s(bottom, sizeof(bottom), "%u", minRate);\r
+    if (ret > EOK) {\r
+        bottomRate->SetText(bottom);\r
+    }\r
+}\r
+\r
+// 刷新静息心率\r
+void HeartRateView::RefreshRestHeartRate(uint16_t value)\r
+{\r
+    char heartRate[NUM_4] = "--";\r
+    int32_t ret = 0;\r
+\r
+    if (restRate == nullptr) {\r
+        return;\r
+    }\r
+\r
+    if (value == 0 || value == (uint16_t)0xFFFF) { // 无效值\r
+        restRate->SetText("--");\r
+    } else {\r
+        if (value > NUM_99) {\r
+            ret = sprintf_s(heartRate, sizeof(heartRate), "%u", value);\r
+        } else {\r
+            ret = sprintf_s(heartRate, sizeof(heartRate), " %u", value);\r
+        }\r
+\r
+        if (ret > EOK) {\r
+            restRate->SetText(heartRate);\r
+        }\r
+    }\r
+}\r
+} // namespace OHOS\r
index 450efee..557cde5 100644 (file)
@@ -1,77 +1,77 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: Customization View
- * Create: 2022-03-02
- */
-
-#ifndef CUSTOMIZATION_VIEW_H
-#define CUSTOMIZATION_VIEW_H
-
-#include "View.h"
-#include "common/screen.h"
-#include "components/ui_label.h"
-#include "components/ui_scroll_view.h"
-#include "components/ui_radio_button.h"
-#include "components/ui_label_button.h"
-#include "components/ui_view_group.h"
-
-namespace OHOS {
-
-class IndoorWalkUIScrollView : public UIScrollView {
-public:
-    IndoorWalkUIScrollView() {}
-    virtual ~IndoorWalkUIScrollView() {}
-
-    bool OnDragEvent(const DragEvent& event) override
-    {
-        return UIScrollView::OnDragEvent(event);
-    }
-};
-
-class CustomizationView {
-public:
-    CustomizationView();
-    ~CustomizationView();
-    static CustomizationView *GetInstance();
-    UIViewGroup *InitPropertiesView();
-    UIViewGroup *GetTimeView(void);
-    UIViewGroup *GetDistancesView(void);
-    UIViewGroup *GetHeartView(void);
-    UIViewGroup *GetSpeedView(void);
-    UIViewGroup *GetStepsView(void);
-    UIRadioButton *GetTimeRadio(void);
-    UIRadioButton *GetDistancesRadio(void);
-    UIRadioButton *GetHeartRadio(void);
-    UIRadioButton *GetSpeedRadio(void);
-    UIRadioButton *GetStepsRadio(void);
-    IndoorWalkUIScrollView *GetCustomizationViewGroup(void);
-
-private:
-    bool ShowUpTitleLabel();
-    bool InitTimeView();
-    bool InitDistancesView();
-    bool InitHeartView();
-    bool InitSpeedView();
-    bool InitStepsView();
-    IndoorWalkUIScrollView *group{nullptr};
-    UILabel *lable{nullptr};
-    UIViewGroup *timeView{nullptr}; // 时间
-    UIViewGroup *distancesView{nullptr}; // 距离
-    UIViewGroup *heartView{nullptr}; // 心率
-    UIViewGroup *speedView{nullptr}; // 速度
-    UIViewGroup *stepsView{nullptr}; // 步数
-
-    UIRadioButton *timeRadio{nullptr}; // 时间
-    UIRadioButton *distancesRadio{nullptr}; // 距离
-    UIRadioButton *heartRadio{nullptr}; // 心率
-    UIRadioButton *speedRadio{nullptr}; // 速度
-    UIRadioButton *stepsRadio{nullptr}; // 步数
-
-    UILabelButton *timeButton{nullptr}; // 时间
-    UILabelButton *distancesButton{nullptr}; // 距离
-    UILabelButton *heartButton{nullptr}; // 心率
-    UILabelButton *speedButton{nullptr}; // 速度
-    UILabelButton *stepsButton{nullptr}; // 步数
-};
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: Customization View\r
+ * Create: 2022-03-02\r
+ */\r
+\r
+#ifndef CUSTOMIZATION_VIEW_H\r
+#define CUSTOMIZATION_VIEW_H\r
+\r
+#include "View.h"\r
+#include "common/screen.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_scroll_view.h"\r
+#include "components/ui_radio_button.h"\r
+#include "components/ui_label_button.h"\r
+#include "components/ui_view_group.h"\r
+\r
+namespace OHOS {\r
+\r
+class IndoorWalkUIScrollView : public UIScrollView {\r
+public:\r
+    IndoorWalkUIScrollView() {}\r
+    virtual ~IndoorWalkUIScrollView() {}\r
+\r
+    bool OnDragEvent(const DragEvent& event) override\r
+    {\r
+        return UIScrollView::OnDragEvent(event);\r
+    }\r
+};\r
+\r
+class CustomizationView {\r
+public:\r
+    CustomizationView();\r
+    ~CustomizationView();\r
+    static CustomizationView *GetInstance();\r
+    UIViewGroup *InitPropertiesView();\r
+    UIViewGroup *GetTimeView(void);\r
+    UIViewGroup *GetDistancesView(void);\r
+    UIViewGroup *GetHeartView(void);\r
+    UIViewGroup *GetSpeedView(void);\r
+    UIViewGroup *GetStepsView(void);\r
+    UIRadioButton *GetTimeRadio(void);\r
+    UIRadioButton *GetDistancesRadio(void);\r
+    UIRadioButton *GetHeartRadio(void);\r
+    UIRadioButton *GetSpeedRadio(void);\r
+    UIRadioButton *GetStepsRadio(void);\r
+    IndoorWalkUIScrollView *GetCustomizationViewGroup(void);\r
+\r
+private:\r
+    bool ShowUpTitleLabel();\r
+    bool InitTimeView();\r
+    bool InitDistancesView();\r
+    bool InitHeartView();\r
+    bool InitSpeedView();\r
+    bool InitStepsView();\r
+    IndoorWalkUIScrollView *group{nullptr};\r
+    UILabel *lable{nullptr};\r
+    UIViewGroup *timeView{nullptr}; // 时间\r
+    UIViewGroup *distancesView{nullptr}; // 距离\r
+    UIViewGroup *heartView{nullptr}; // 心率\r
+    UIViewGroup *speedView{nullptr}; // 速度\r
+    UIViewGroup *stepsView{nullptr}; // 步数\r
+\r
+    UIRadioButton *timeRadio{nullptr}; // 时间\r
+    UIRadioButton *distancesRadio{nullptr}; // 距离\r
+    UIRadioButton *heartRadio{nullptr}; // 心率\r
+    UIRadioButton *speedRadio{nullptr}; // 速度\r
+    UIRadioButton *stepsRadio{nullptr}; // 步数\r
+\r
+    UILabelButton *timeButton{nullptr}; // 时间\r
+    UILabelButton *distancesButton{nullptr}; // 距离\r
+    UILabelButton *heartButton{nullptr}; // 心率\r
+    UILabelButton *speedButton{nullptr}; // 速度\r
+    UILabelButton *stepsButton{nullptr}; // 步数\r
+};\r
+} // namespace OHOS\r
 #endif // CUSTOMIZATION_VIEW_H
\ No newline at end of file
index e32c54f..06fc19d 100644 (file)
@@ -1,34 +1,34 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: IndoorWalk End View
- * Create: 2022-03-02
- */
-
-#ifndef INDOORWALK_END_VIEW_H
-#define INDOORWALK_END_VIEW_H
-
-#include "components/ui_label.h"
-#include "components/ui_button.h"
-#include "components/ui_view_group.h"
-#include "common/screen.h"
-
-namespace OHOS {
-
-class IndoorWalkEndView {
-public:
-    IndoorWalkEndView();
-    ~IndoorWalkEndView();
-    static IndoorWalkEndView *GetInstance();
-    UIViewGroup *InitShowUpView(void);
-
-private:
-    bool ShowUpTitleLabel(void);
-    bool CreateUIButton(void);
-    UILabel *titleLabel{nullptr};
-    UIButton *cancelButton{nullptr};
-    UIButton *confirmButton{nullptr};
-    UIViewGroup *group{nullptr};
-};
-
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: IndoorWalk End View\r
+ * Create: 2022-03-02\r
+ */\r
+\r
+#ifndef INDOORWALK_END_VIEW_H\r
+#define INDOORWALK_END_VIEW_H\r
+\r
+#include "components/ui_label.h"\r
+#include "components/ui_button.h"\r
+#include "components/ui_view_group.h"\r
+#include "common/screen.h"\r
+\r
+namespace OHOS {\r
+\r
+class IndoorWalkEndView {\r
+public:\r
+    IndoorWalkEndView();\r
+    ~IndoorWalkEndView();\r
+    static IndoorWalkEndView *GetInstance();\r
+    UIViewGroup *InitShowUpView(void);\r
+\r
+private:\r
+    bool ShowUpTitleLabel(void);\r
+    bool CreateUIButton(void);\r
+    UILabel *titleLabel{nullptr};\r
+    UIButton *cancelButton{nullptr};\r
+    UIButton *confirmButton{nullptr};\r
+    UIViewGroup *group{nullptr};\r
+};\r
+\r
+} // namespace OHOS\r
 #endif // INDOORWALK_END_VIEW_H
\ No newline at end of file
index 43bccb4..679802a 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: IndoorWalk Model
- * Create: 2022-03-02
- */
-
-#ifndef INDOORWALK_MODEL_H
-#define INDOORWALK_MODEL_H
-
-#include "stdio.h"
-#include "string"
-#include "gfx_utils/list.h"
-#include "components/ui_label.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void InitIndoorWalkTimer();
-void DisableIndoorWalkTimer();
-
-#ifdef __cplusplus
-}
-#endif
-
-namespace OHOS {
-using namespace std;
-class IndoorWalkModel {
-public:
-    ~IndoorWalkModel();
-    static IndoorWalkModel *GetInstance(void);
-    string GetConnectionView();
-    void SetConnectionView(const char* id);
-    void SetTextLableFirstTop(const char *lable, const char *lableUnit);
-    string GetTextLableFirstTop();
-    string GetTextLableUnitFirstTop();
-    void SetTextLableFirstLeft(const char *lable, const char *lableUnit);
-    string GetTextLableFirstLeft();
-    string GetTextLableUnitFirstLeft();
-    void SetTextLableFirstRight(const char *lable, const char *lableUnit);
-    string GetTextLableFirstRight();
-    string GetTextLableUnitFirstRight();
-    void SetTextLableFirstBottom(const char *lable, const char *lableUnit);
-    string GetTextLableFirstBottom();
-    string GetTextLableUnitFirstBottom();
-    void SetTextLableSecondTop(const char *lable, const char *lableUnit);
-    string GetTextLableSecondTop();
-    string GetTextLableUnitSecondTop();
-    void SetTextLableSecondLeft(const char *lable, const char *lableUnit);
-    string GetTextLableSecondLeft();
-    string GetTextLableUnitSecondLeft();
-    void SetTextLableSecondRight(const char *lable, const char *lableUnit);
-    string GetTextLableSecondRight();
-    string GetTextLableUnitSecondRight();
-    void SetTextLableThirdTop(const char *lable, const char *lableUnit);
-    string GetTextLableThirdTop();
-    string GetTextLableUnitThirdTop();
-    void SetTextLableThirdBottom(const char *lable, const char *lableUnit);
-    string GetTextLableThirdBottom();
-    string GetTextLableUnitThirdBottom();
-    void SetTextLableFourth(const char *lable, const char *lableUnit);
-    string GetTextLableFourth();
-    string GetTextLableUnitFourth();
-    void SetInitialStep(const uint32_t &value);
-    int GetInitialStep();
-    char *DisplayMotionDuration();
-    bool OpenDistancesSensor(void);
-    bool CloseDistancesSensor(void);
-    void SetInitialDistances(const float &value);
-    float GetInitialDistances();
-    void SetCurrentDistances(const float &value);
-    float GetCurrentDistances();
-
-private:
-    IndoorWalkModel();
-    string selectPropertiesID;
-    uint32_t initialStep;
-    float initialDistances;
-    float currentDistances;
-    string textLableFirstTop{"00:00:00"};
-    string textLableUnitFirstTop{"时间"};
-    string textLableFirstLeft{"00:00:00"};
-    string textLableUnitFirstLeft{"时间"};
-    string textLableFirstRight{"00:00:00"};
-    string textLableUnitFirstRight{"时间"};
-    string textLableFirstBottom{"00:00:00"};
-    string textLableUnitFirstBottom{"时间"};
-    string textLableSecondTop{"00:00:00"};
-    string textLableUnitSecondTop{"时间"};
-    string textLableSecondLeft{"00:00:00"};
-    string textLableUnitSecondLeft{"时间"};
-    string textLableSecondRight{"00:00:00"};
-    string textLableUnitSecondRight{"时间"};
-    string textLableThirdTop{"00:00:00"};
-    string textLableUnitThirdTop{"时间"};
-    string textLableThirdBottom{"00:00:00"};
-    string textLableUnitThirdBottom{"时间"};
-    string textLableFourth{"00:00:00"};
-    string textLableUnitFourth{"时间"};
-
-    string motionDuration;
-};
-}
-
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: IndoorWalk Model\r
+ * Create: 2022-03-02\r
+ */\r
+\r
+#ifndef INDOORWALK_MODEL_H\r
+#define INDOORWALK_MODEL_H\r
+\r
+#include "stdio.h"\r
+#include "string"\r
+#include "gfx_utils/list.h"\r
+#include "components/ui_label.h"\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+void InitIndoorWalkTimer();\r
+void DisableIndoorWalkTimer();\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+namespace OHOS {\r
+using namespace std;\r
+class IndoorWalkModel {\r
+public:\r
+    ~IndoorWalkModel();\r
+    static IndoorWalkModel *GetInstance(void);\r
+    string GetConnectionView();\r
+    void SetConnectionView(const char* id);\r
+    void SetTextLableFirstTop(const char *lable, const char *lableUnit);\r
+    string GetTextLableFirstTop();\r
+    string GetTextLableUnitFirstTop();\r
+    void SetTextLableFirstLeft(const char *lable, const char *lableUnit);\r
+    string GetTextLableFirstLeft();\r
+    string GetTextLableUnitFirstLeft();\r
+    void SetTextLableFirstRight(const char *lable, const char *lableUnit);\r
+    string GetTextLableFirstRight();\r
+    string GetTextLableUnitFirstRight();\r
+    void SetTextLableFirstBottom(const char *lable, const char *lableUnit);\r
+    string GetTextLableFirstBottom();\r
+    string GetTextLableUnitFirstBottom();\r
+    void SetTextLableSecondTop(const char *lable, const char *lableUnit);\r
+    string GetTextLableSecondTop();\r
+    string GetTextLableUnitSecondTop();\r
+    void SetTextLableSecondLeft(const char *lable, const char *lableUnit);\r
+    string GetTextLableSecondLeft();\r
+    string GetTextLableUnitSecondLeft();\r
+    void SetTextLableSecondRight(const char *lable, const char *lableUnit);\r
+    string GetTextLableSecondRight();\r
+    string GetTextLableUnitSecondRight();\r
+    void SetTextLableThirdTop(const char *lable, const char *lableUnit);\r
+    string GetTextLableThirdTop();\r
+    string GetTextLableUnitThirdTop();\r
+    void SetTextLableThirdBottom(const char *lable, const char *lableUnit);\r
+    string GetTextLableThirdBottom();\r
+    string GetTextLableUnitThirdBottom();\r
+    void SetTextLableFourth(const char *lable, const char *lableUnit);\r
+    string GetTextLableFourth();\r
+    string GetTextLableUnitFourth();\r
+    void SetInitialStep(const uint32_t &value);\r
+    int GetInitialStep();\r
+    char *DisplayMotionDuration();\r
+    bool OpenDistancesSensor(void);\r
+    bool CloseDistancesSensor(void);\r
+    void SetInitialDistances(const float &value);\r
+    float GetInitialDistances();\r
+    void SetCurrentDistances(const float &value);\r
+    float GetCurrentDistances();\r
+\r
+private:\r
+    IndoorWalkModel();\r
+    string selectPropertiesID;\r
+    uint32_t initialStep;\r
+    float initialDistances;\r
+    float currentDistances;\r
+    string textLableFirstTop{"00:00:00"};\r
+    string textLableUnitFirstTop{"时间"};\r
+    string textLableFirstLeft{"00:00:00"};\r
+    string textLableUnitFirstLeft{"时间"};\r
+    string textLableFirstRight{"00:00:00"};\r
+    string textLableUnitFirstRight{"时间"};\r
+    string textLableFirstBottom{"00:00:00"};\r
+    string textLableUnitFirstBottom{"时间"};\r
+    string textLableSecondTop{"00:00:00"};\r
+    string textLableUnitSecondTop{"时间"};\r
+    string textLableSecondLeft{"00:00:00"};\r
+    string textLableUnitSecondLeft{"时间"};\r
+    string textLableSecondRight{"00:00:00"};\r
+    string textLableUnitSecondRight{"时间"};\r
+    string textLableThirdTop{"00:00:00"};\r
+    string textLableUnitThirdTop{"时间"};\r
+    string textLableThirdBottom{"00:00:00"};\r
+    string textLableUnitThirdBottom{"时间"};\r
+    string textLableFourth{"00:00:00"};\r
+    string textLableUnitFourth{"时间"};\r
+\r
+    string motionDuration;\r
+};\r
+}\r
+\r
 #endif
\ No newline at end of file
index 4d46036..4a4ebaa 100644 (file)
@@ -1,56 +1,56 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: IndoorWalk Motion View
- * Create: 2022-03-02
- */
-
-#ifndef INDOORWALK_MOTION_VIEW_H
-#define INDOORWALK_MOTION_VIEW_H
-
-#include "View.h"
-#include "MotionPageFirst.h"
-#include "MotionPageSecond.h"
-#include "MotionPageThird.h"
-#include "MotionPageFourth.h"
-#include "MotionPageFifth.h"
-#include "components/ui_swipe_view.h"
-
-namespace OHOS {
-typedef enum {
-    MOTION_FIRST = 0,
-    MOTION_SECOND,
-    MOTION_THIRD,
-    MOTION_FOURTH,
-    MOTION_FIFTH,
-    MAX_MOTIONPAGE,
-} MotionPageId;
-
-class IndoorWalkMotionView {
-public:
-    IndoorWalkMotionView();
-    ~IndoorWalkMotionView();
-    static IndoorWalkMotionView *GetInstance();
-    void PreLoad(uint16_t index);
-    UIViewGroup *WalkMotionViewInit(void);
-    AppGroupView *InitMotionPageFirst(void);
-    AppGroupView *InitMotionPageSecond(void);
-    AppGroupView *InitMotionPageThird(void);
-    AppGroupView *InitMotionPageFourth(void);
-    AppGroupView *InitMotionPageFifth(void);
-    void InitialStep(void);
-private:
-    int16_t maxPage = MAX_MOTIONPAGE;
-    UISwipeView *walkMotionList{nullptr};
-    MotionPageFirst *motionPageFirst{nullptr};
-    MotionPageSecond *motionPageSecond{nullptr};
-    MotionPageThird *motionPageThird{nullptr};
-    MotionPageFourth *motionPageFourth{nullptr};
-    MotionPageFifth *motionPageFifth{nullptr};
-    AppGroupView *recordCard[MAX_MOTIONPAGE]{nullptr};
-    bool pageStatus[MAX_MOTIONPAGE]{false};
-    UISwipeView::OnSwipeListener* motionclickListener{nullptr};
-    UIView::OnDragListener* motionDragListener{nullptr};
-    AppGroupView *GreatePage(int32_t MotionPageId);
-};
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: IndoorWalk Motion View\r
+ * Create: 2022-03-02\r
+ */\r
+\r
+#ifndef INDOORWALK_MOTION_VIEW_H\r
+#define INDOORWALK_MOTION_VIEW_H\r
+\r
+#include "View.h"\r
+#include "MotionPageFirst.h"\r
+#include "MotionPageSecond.h"\r
+#include "MotionPageThird.h"\r
+#include "MotionPageFourth.h"\r
+#include "MotionPageFifth.h"\r
+#include "components/ui_swipe_view.h"\r
+\r
+namespace OHOS {\r
+typedef enum {\r
+    MOTION_FIRST = 0,\r
+    MOTION_SECOND,\r
+    MOTION_THIRD,\r
+    MOTION_FOURTH,\r
+    MOTION_FIFTH,\r
+    MAX_MOTIONPAGE,\r
+} MotionPageId;\r
+\r
+class IndoorWalkMotionView {\r
+public:\r
+    IndoorWalkMotionView();\r
+    ~IndoorWalkMotionView();\r
+    static IndoorWalkMotionView *GetInstance();\r
+    void PreLoad(uint16_t index);\r
+    UIViewGroup *WalkMotionViewInit(void);\r
+    AppGroupView *InitMotionPageFirst(void);\r
+    AppGroupView *InitMotionPageSecond(void);\r
+    AppGroupView *InitMotionPageThird(void);\r
+    AppGroupView *InitMotionPageFourth(void);\r
+    AppGroupView *InitMotionPageFifth(void);\r
+    void InitialStep(void);\r
+private:\r
+    int16_t maxPage = MAX_MOTIONPAGE;\r
+    UISwipeView *walkMotionList{nullptr};\r
+    MotionPageFirst *motionPageFirst{nullptr};\r
+    MotionPageSecond *motionPageSecond{nullptr};\r
+    MotionPageThird *motionPageThird{nullptr};\r
+    MotionPageFourth *motionPageFourth{nullptr};\r
+    MotionPageFifth *motionPageFifth{nullptr};\r
+    AppGroupView *recordCard[MAX_MOTIONPAGE]{nullptr};\r
+    bool pageStatus[MAX_MOTIONPAGE]{false};\r
+    UISwipeView::OnSwipeListener* motionclickListener{nullptr};\r
+    UIView::OnDragListener* motionDragListener{nullptr};\r
+    AppGroupView *GreatePage(int32_t MotionPageId);\r
+};\r
+} // namespace OHOS\r
 #endif // INDOORWALK_MOTION_VIEW_H
\ No newline at end of file
index 540f56c..8f073ad 100644 (file)
@@ -1,43 +1,43 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: IndoorWalk Prepared View
- * Create: 2022-03-02
- */
-
-#ifndef INDOORWALK_PREPARED_VIEW_H
-#define INDOORWALK_PREPARED_VIEW_H
-
-#include "View.h"
-#include "components/ui_label.h"
-#include "components/ui_image_view.h"
-#include "components/ui_label_button.h"
-#include "components/ui_image_animator.h"
-#include "components/ui_view_group.h"
-#include "common/screen.h"
-
-namespace OHOS {
-class IndoorWalkPreparedView {
-public:
-    IndoorWalkPreparedView();
-    ~IndoorWalkPreparedView();
-    static IndoorWalkPreparedView *GetInstance();
-    UIViewGroup *InitShowUpView(void);
-    bool InitBatteryView();
-    bool InitHeartbeatView();
-    bool InitLableVIew();
-    void IndoorWalkHeartbeatStop();
-    void IndoorWalkHeartbeatStart();
-    void RefreshHeartbeatData(int value);
-
-private:
-    UILabel *timeLabel{nullptr};
-    UIImageView *battery{nullptr};
-    UILabel *batteryLable{nullptr};
-    UIImageAnimatorView *imageAnimator{nullptr};
-    UILabel *heartRateLabel{nullptr};
-    UILabel *titleLabel{nullptr};
-    UIButton *walkButton{nullptr};
-    UIViewGroup *group{nullptr};
-};
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: IndoorWalk Prepared View\r
+ * Create: 2022-03-02\r
+ */\r
+\r
+#ifndef INDOORWALK_PREPARED_VIEW_H\r
+#define INDOORWALK_PREPARED_VIEW_H\r
+\r
+#include "View.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_image_view.h"\r
+#include "components/ui_label_button.h"\r
+#include "components/ui_image_animator.h"\r
+#include "components/ui_view_group.h"\r
+#include "common/screen.h"\r
+\r
+namespace OHOS {\r
+class IndoorWalkPreparedView {\r
+public:\r
+    IndoorWalkPreparedView();\r
+    ~IndoorWalkPreparedView();\r
+    static IndoorWalkPreparedView *GetInstance();\r
+    UIViewGroup *InitShowUpView(void);\r
+    bool InitBatteryView();\r
+    bool InitHeartbeatView();\r
+    bool InitLableVIew();\r
+    void IndoorWalkHeartbeatStop();\r
+    void IndoorWalkHeartbeatStart();\r
+    void RefreshHeartbeatData(int value);\r
+\r
+private:\r
+    UILabel *timeLabel{nullptr};\r
+    UIImageView *battery{nullptr};\r
+    UILabel *batteryLable{nullptr};\r
+    UIImageAnimatorView *imageAnimator{nullptr};\r
+    UILabel *heartRateLabel{nullptr};\r
+    UILabel *titleLabel{nullptr};\r
+    UIButton *walkButton{nullptr};\r
+    UIViewGroup *group{nullptr};\r
+};\r
+} // namespace OHOS\r
 #endif // INDOORWALK_PREPARED_VIEW_H
\ No newline at end of file
index f311a8d..b3f4c7d 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: IndoorWalk Presenter
- * Create: 2022-03-02
- */
-
-#ifndef INDOORWALK_PRESENTER_H
-#define INDOORWALK_PRESENTER_H
-
-#include "Presenter.h"
-#include "components/ui_label.h"
-#include "NativeLauncher.h"
-#include "NativeAbility.h"
-#include "components/ui_swipe_view.h"
-#include "KeyInputListener.h"
-#include "common/key_code.h"
-
-
-namespace OHOS {
-enum IndoorWalkPresenterNum : uint8_t {
-        INDOORWALKPREPAREDVIEW = 0,
-        INDOORWALKMOTIONVIEW,
-        CUSTOMIZATIONVIEW,
-        INDOORWALKENDVIEW,
-        INDOORWALK_MAX,
-    };
-
-static constexpr const char *INDOORWALK_CANCEL_BUTTON = "cancelButton";
-static constexpr const char *INDOORWALK_CONFIRM_BUTTON = "confirmButton";
-static constexpr const char *WALK_BUTTON = "walkButton";
-
-static constexpr const char *INDOORWALK_PREPARED_VIEW = "indoorWalkPreparedView";
-static constexpr const char *INDOORWALK_MOTION_VIEW = "indoorWalkMotionView";
-static constexpr const char *INDOORWALK_END_VIEW = "indoorWalkEndView";
-static constexpr const char *CUSTOMIZATION_VIEW = "customizationView";
-
-static constexpr const char *LABLE_FIRST_TOP = "lableFirstTop";
-static constexpr const char *LABLE_FIRST_LEFT = "lableFirstLeft";
-static constexpr const char *LABLE_FIRST_RIGHT = "lableFirstRight";
-static constexpr const char *LABLE_FIRST_BOTTOM = "lableFirstBottom";
-static constexpr const char *LABLE_SECOND_TOP = "lableSecondTop";
-static constexpr const char *LABLE_SECOND_LEFT = "lableSecondLeft";
-static constexpr const char *LABLE_SECOND_RIGHT = "lableSecondRight";
-static constexpr const char *LABLE_THIRD_TOP = "lableThirdTop";
-static constexpr const char *LABLE_THIRD_BOTTOM = "lableThirdBottom";
-static constexpr const char *LABLE_FOURTH = "lableFourth";
-
-static constexpr const char *IMAGE_FIRST_TOP = "imageFirstTop";
-static constexpr const char *IMAGE_FIRST_LEFT = "imageFirstLeft";
-static constexpr const char *IMAGE_FIRST_RIGHT = "imageFirstRight";
-static constexpr const char *IMAGE_FIRST_BOTTOM = "imageFirstBottom";
-static constexpr const char *IMAGE_SECOND_TOP = "imageSecondTop";
-static constexpr const char *IMAGE_SECOND_LEFT = "imageSecondLeft";
-static constexpr const char *IMAGE_SECOND_RIGHT = "imageSecondRight";
-static constexpr const char *IMAGE_THIRD_TOP = "imageThirdTop";
-static constexpr const char *IMAGE_THIRD_BOTTOM = "imageThirdBottom";
-static constexpr const char *IMAGE_FOURTH = "imageFourth";
-
-static constexpr const char *TIME_BUTTON = "timeView"; // 时间
-static constexpr const char *DISTANCES_BUTTON = "distancesView"; // 距离
-static constexpr const char *HEART_BUTTON = "heartView"; // 心率
-static constexpr const char *SPEED_BUTTON = "speedView"; // 速度
-static constexpr const char *STEPS_BUTTON = "stepsView"; // 步数
-
-class IndoorWalkView;
-class IndoorWalkPresenter : public Presenter<IndoorWalkView>, public UISwipeView::OnSwipeListener,public RootView::OnKeyActListener,
-                                 public UIView::OnClickListener, public UIView::OnLongPressListener,
-                                 public UIView::OnDragListener {
-public:
-    IndoorWalkPresenter();
-    virtual ~IndoorWalkPresenter();
-    static IndoorWalkPresenter *GetInstance();
-    void OnStart() override;
-    void OnPause() override;
-    void OnResume() override;
-    void OnStop() override;
-    bool OnClick(UIView& view, const ClickEvent& event) override;
-    bool OnDrag(UIView& view, const DragEvent& event) override;
-    bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件
-    bool OnLongPress(UIView& view, const LongPressEvent& event) override;
-    virtual void OnSwipe(UISwipeView& view) override;
-    void HidePageImageView(void);
-    void ModifiesProperties(const char* id, const char *lable, const char *lableUnit);
-    void ModifiesPageFirstTop(const char *lable, const char *lableUnit);
-    void ModifiesPageFirstLeft(const char *lable, const char *lableUnit);
-    void ModifiesPageFirstRight(const char *lable, const char *lableUnit);
-    void ModifiesPageFirstBottom(const char *lable, const char *lableUnit);
-    void ModifiesPageSecondTop(const char *lable, const char *lableUnit);
-    void ModifiesPageSecondLeft(const char *lable, const char *lableUnit);
-    void ModifiesPageSecondRight(const char *lable, const char *lableUnit);
-    void ModifiesPageThirdTop(const char *lable, const char *lableUnit);
-    void ModifiesPageThirdBottom(const char *lable, const char *lableUnit);
-    void ModifiesPageFourth(const char *lable, const char *lableUnit);
-    void SetPropertiesState(const char* id);
-    void SetCustomizationState(const char *lableUnit);
-    void InitStepsValue(char *steps);
-    void ModifiesTime(void);
-    void ModifiesDistances(float value);
-    void ModifiesSteps(int step);
-    void ModifiesHeartRate(int value);
-
-    void ImageOnClick(const char* id);
-    void CancelButtonOnClick(const char* id);
-    void ConfirmButtonOnClick(const char* id);
-    void WalkButtonOnClick(const char* id);
-    void TimeViewOnClick(const char* id);
-    void DistancesViewOnClick(const char* id);
-    void HeartViewOnClick(const char* id);
-    void SpeedViewOnClick(const char* id);
-    void StepsViewOnClick(const char* id);
-
-    void LongPressPageFirst();
-    void LongPressPageSecond();
-    void LongPressPageThird();
-    void LongPressPageFourth();
-
-    void DragIndoorWalkPreparedView();
-    void DragIndoorWalkMotionView();
-    void DragIndoorWalkEndView();
-    void DragCustomizationView();
-
-    void SetPropertiesPageFirstTop();
-    void SetPropertiesPageFirstLeft();
-    void SetPropertiesPageFirstRight();
-    void SetPropertiesPageFirstBottom();
-    void SetPropertiesPageSecondTop();
-    void SetPropertiesPageSecondLeft();
-    void SetPropertiesPageSecondRight();
-    void SetPropertiesPageThirdTop();
-    void SetPropertiesPageThirdBottom();
-    void SetPropertiesPageFourth();
-
-private:
-    void ClickFunc(const char *buttonName);
-    void LongPressFunc(const char *buttonId);
-    void DragFunc(const char *buttonId);
-    void ModifiesFunc(const char *buttonName, const char *lable, const char *lableUnit);
-    void SetPropertiesFunc(const char *buttonName);
-};
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: IndoorWalk Presenter\r
+ * Create: 2022-03-02\r
+ */\r
+\r
+#ifndef INDOORWALK_PRESENTER_H\r
+#define INDOORWALK_PRESENTER_H\r
+\r
+#include "Presenter.h"\r
+#include "components/ui_label.h"\r
+#include "NativeLauncher.h"\r
+#include "NativeAbility.h"\r
+#include "components/ui_swipe_view.h"\r
+\r
+\r
+namespace OHOS {\r
+enum IndoorWalkPresenterNum : uint8_t {\r
+        INDOORWALKPREPAREDVIEW = 0,\r
+        INDOORWALKMOTIONVIEW,\r
+        CUSTOMIZATIONVIEW,\r
+        INDOORWALKENDVIEW,\r
+        INDOORWALK_MAX,\r
+    };\r
+\r
+static constexpr const char *INDOORWALK_CANCEL_BUTTON = "cancelButton";\r
+static constexpr const char *INDOORWALK_CONFIRM_BUTTON = "confirmButton";\r
+static constexpr const char *WALK_BUTTON = "walkButton";\r
+\r
+static constexpr const char *INDOORWALK_PREPARED_VIEW = "indoorWalkPreparedView";\r
+static constexpr const char *INDOORWALK_MOTION_VIEW = "indoorWalkMotionView";\r
+static constexpr const char *INDOORWALK_END_VIEW = "indoorWalkEndView";\r
+static constexpr const char *CUSTOMIZATION_VIEW = "customizationView";\r
+\r
+static constexpr const char *LABLE_FIRST_TOP = "lableFirstTop";\r
+static constexpr const char *LABLE_FIRST_LEFT = "lableFirstLeft";\r
+static constexpr const char *LABLE_FIRST_RIGHT = "lableFirstRight";\r
+static constexpr const char *LABLE_FIRST_BOTTOM = "lableFirstBottom";\r
+static constexpr const char *LABLE_SECOND_TOP = "lableSecondTop";\r
+static constexpr const char *LABLE_SECOND_LEFT = "lableSecondLeft";\r
+static constexpr const char *LABLE_SECOND_RIGHT = "lableSecondRight";\r
+static constexpr const char *LABLE_THIRD_TOP = "lableThirdTop";\r
+static constexpr const char *LABLE_THIRD_BOTTOM = "lableThirdBottom";\r
+static constexpr const char *LABLE_FOURTH = "lableFourth";\r
+\r
+static constexpr const char *IMAGE_FIRST_TOP = "imageFirstTop";\r
+static constexpr const char *IMAGE_FIRST_LEFT = "imageFirstLeft";\r
+static constexpr const char *IMAGE_FIRST_RIGHT = "imageFirstRight";\r
+static constexpr const char *IMAGE_FIRST_BOTTOM = "imageFirstBottom";\r
+static constexpr const char *IMAGE_SECOND_TOP = "imageSecondTop";\r
+static constexpr const char *IMAGE_SECOND_LEFT = "imageSecondLeft";\r
+static constexpr const char *IMAGE_SECOND_RIGHT = "imageSecondRight";\r
+static constexpr const char *IMAGE_THIRD_TOP = "imageThirdTop";\r
+static constexpr const char *IMAGE_THIRD_BOTTOM = "imageThirdBottom";\r
+static constexpr const char *IMAGE_FOURTH = "imageFourth";\r
+\r
+static constexpr const char *TIME_BUTTON = "timeView"; // 时间\r
+static constexpr const char *DISTANCES_BUTTON = "distancesView"; // 距离\r
+static constexpr const char *HEART_BUTTON = "heartView"; // 心率\r
+static constexpr const char *SPEED_BUTTON = "speedView"; // 速度\r
+static constexpr const char *STEPS_BUTTON = "stepsView"; // 步数\r
+\r
+class IndoorWalkView;\r
+class IndoorWalkPresenter : public Presenter<IndoorWalkView>, public UISwipeView::OnSwipeListener,\r
+                                 public UIView::OnClickListener, public UIView::OnLongPressListener,\r
+                                 public UIView::OnDragListener {\r
+public:\r
+    IndoorWalkPresenter();\r
+    virtual ~IndoorWalkPresenter();\r
+    static IndoorWalkPresenter *GetInstance();\r
+    void OnStart() override;\r
+    void OnPause() override;\r
+    void OnResume() override;\r
+    void OnStop() override;\r
+    bool OnClick(UIView& view, const ClickEvent& event) override;\r
+    bool OnDrag(UIView& view, const DragEvent& event) override;\r
+    bool OnLongPress(UIView& view, const LongPressEvent& event) override;\r
+    virtual void OnSwipe(UISwipeView& view) override;\r
+    void HidePageImageView(void);\r
+    void ModifiesProperties(const char* id, const char *lable, const char *lableUnit);\r
+    void ModifiesPageFirstTop(const char *lable, const char *lableUnit);\r
+    void ModifiesPageFirstLeft(const char *lable, const char *lableUnit);\r
+    void ModifiesPageFirstRight(const char *lable, const char *lableUnit);\r
+    void ModifiesPageFirstBottom(const char *lable, const char *lableUnit);\r
+    void ModifiesPageSecondTop(const char *lable, const char *lableUnit);\r
+    void ModifiesPageSecondLeft(const char *lable, const char *lableUnit);\r
+    void ModifiesPageSecondRight(const char *lable, const char *lableUnit);\r
+    void ModifiesPageThirdTop(const char *lable, const char *lableUnit);\r
+    void ModifiesPageThirdBottom(const char *lable, const char *lableUnit);\r
+    void ModifiesPageFourth(const char *lable, const char *lableUnit);\r
+    void SetPropertiesState(const char* id);\r
+    void SetCustomizationState(const char *lableUnit);\r
+    void InitStepsValue(char *steps);\r
+    void ModifiesTime(void);\r
+    void ModifiesDistances(float value);\r
+    void ModifiesSteps(int step);\r
+    void ModifiesHeartRate(int value);\r
+\r
+    void ImageOnClick(const char* id);\r
+    void CancelButtonOnClick(const char* id);\r
+    void ConfirmButtonOnClick(const char* id);\r
+    void WalkButtonOnClick(const char* id);\r
+    void TimeViewOnClick(const char* id);\r
+    void DistancesViewOnClick(const char* id);\r
+    void HeartViewOnClick(const char* id);\r
+    void SpeedViewOnClick(const char* id);\r
+    void StepsViewOnClick(const char* id);\r
+\r
+    void LongPressPageFirst();\r
+    void LongPressPageSecond();\r
+    void LongPressPageThird();\r
+    void LongPressPageFourth();\r
+\r
+    void DragIndoorWalkPreparedView();\r
+    void DragIndoorWalkMotionView();\r
+    void DragIndoorWalkEndView();\r
+    void DragCustomizationView();\r
+\r
+    void SetPropertiesPageFirstTop();\r
+    void SetPropertiesPageFirstLeft();\r
+    void SetPropertiesPageFirstRight();\r
+    void SetPropertiesPageFirstBottom();\r
+    void SetPropertiesPageSecondTop();\r
+    void SetPropertiesPageSecondLeft();\r
+    void SetPropertiesPageSecondRight();\r
+    void SetPropertiesPageThirdTop();\r
+    void SetPropertiesPageThirdBottom();\r
+    void SetPropertiesPageFourth();\r
+\r
+private:\r
+    void ClickFunc(const char *buttonName);\r
+    void LongPressFunc(const char *buttonId);\r
+    void DragFunc(const char *buttonId);\r
+    void ModifiesFunc(const char *buttonName, const char *lable, const char *lableUnit);\r
+    void SetPropertiesFunc(const char *buttonName);\r
+};\r
+} // namespace OHOS\r
 #endif
\ No newline at end of file
index c742cdf..3db961a 100644 (file)
@@ -1,48 +1,48 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: IndoorWalk View
- * Create: 2022-03-02
- */
-
-#ifndef INDOORWALK_VIEW_H
-#define INDOORWALK_VIEW_H
-
-#include "IndoorWalkEndView.h"
-#include "View.h"
-#include "IndoorWalkPresenter.h"
-#include "IndoorWalkPreparedView.h"
-#include "CustomizationView.h"
-#include "IndoorWalkMotionView.h"
-#include "components/ui_view_group.h"
-
-namespace OHOS {
-constexpr int16_t NUM_WALKCONTAINER = 4;
-
-class IndoorWalkPresenter;
-class IndoorWalkView : public View<IndoorWalkPresenter> {
-public:
-    IndoorWalkView();
-    ~IndoorWalkView();
-    static IndoorWalkView *GetInstance();
-    void OnStart() override;
-    void OnSetUpView() override;
-    void OnTearDownView() override;
-    void OnStop() override;
-    void ChangeView(int16_t hideView, int16_t showView);
-
-private:
-    bool ChangeIndoorWalkPreparedView(int16_t hideView, int16_t thisView);
-    bool ChangeIndoorWalkMotionView(int16_t hideView, int16_t thisView);
-    bool ChangeCustomizationView(int16_t hideView, int16_t thisView);
-    bool ChangeIndoorWalkEndView(int16_t hideView, int16_t thisView);
-    bool CheckViewParam(int16_t hideView, int16_t showView);
-    IndoorWalkPreparedView *indoorWalkPreparedView{nullptr};
-    IndoorWalkMotionView *indoorWalkMotionView{nullptr};
-    CustomizationView *customizationView{nullptr};
-    IndoorWalkEndView *indoorWalkEndView{nullptr};
-    UIViewGroup *container[NUM_WALKCONTAINER]{nullptr};
-    typedef bool (IndoorWalkView::*PreprosssChangeView)(int16_t hideView, int16_t thisView);
-    PreprosssChangeView preProcessView[NUM_WALKCONTAINER];
-};
-} // namespace OHOS
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: IndoorWalk View\r
+ * Create: 2022-03-02\r
+ */\r
+\r
+#ifndef INDOORWALK_VIEW_H\r
+#define INDOORWALK_VIEW_H\r
+\r
+#include "IndoorWalkEndView.h"\r
+#include "View.h"\r
+#include "IndoorWalkPresenter.h"\r
+#include "IndoorWalkPreparedView.h"\r
+#include "CustomizationView.h"\r
+#include "IndoorWalkMotionView.h"\r
+#include "components/ui_view_group.h"\r
+\r
+namespace OHOS {\r
+constexpr int16_t NUM_WALKCONTAINER = 4;\r
+\r
+class IndoorWalkPresenter;\r
+class IndoorWalkView : public View<IndoorWalkPresenter> {\r
+public:\r
+    IndoorWalkView();\r
+    ~IndoorWalkView();\r
+    static IndoorWalkView *GetInstance();\r
+    void OnStart() override;\r
+    void OnSetUpView() override;\r
+    void OnTearDownView() override;\r
+    void OnStop() override;\r
+    void ChangeView(int16_t hideView, int16_t showView);\r
+\r
+private:\r
+    bool ChangeIndoorWalkPreparedView(int16_t hideView, int16_t thisView);\r
+    bool ChangeIndoorWalkMotionView(int16_t hideView, int16_t thisView);\r
+    bool ChangeCustomizationView(int16_t hideView, int16_t thisView);\r
+    bool ChangeIndoorWalkEndView(int16_t hideView, int16_t thisView);\r
+    bool CheckViewParam(int16_t hideView, int16_t showView);\r
+    IndoorWalkPreparedView *indoorWalkPreparedView{nullptr};\r
+    IndoorWalkMotionView *indoorWalkMotionView{nullptr};\r
+    CustomizationView *customizationView{nullptr};\r
+    IndoorWalkEndView *indoorWalkEndView{nullptr};\r
+    UIViewGroup *container[NUM_WALKCONTAINER]{nullptr};\r
+    typedef bool (IndoorWalkView::*PreprosssChangeView)(int16_t hideView, int16_t thisView);\r
+    PreprosssChangeView preProcessView[NUM_WALKCONTAINER];\r
+};\r
+} // namespace OHOS\r
 #endif // INDOORWALK_VIEW_H
\ No newline at end of file
index 4bd750c..745f0fc 100644 (file)
@@ -1,33 +1,33 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: Motion PageFifth View
- * Create: 2022-03-02
- */
-
-#ifndef MOTION_PAGEFIFTH_VIEW_H
-#define MOTION_PAGEFIFTH_VIEW_H
-
-#include "View.h"
-#include "BaseView.h"
-#include "wearable_log.h"
-#include "ohos_types.h"
-#include "components/ui_label.h"
-#include "components/ui_image_view.h"
-#include "AppGroupView.h"
-
-namespace OHOS {
-class MotionPageFifth : public AppGroupView {
-public:
-    MotionPageFifth();
-    virtual ~MotionPageFifth();
-    static MotionPageFifth *GetInstance(void);
-    bool InitView(void *caller) override;
-    bool InitPageFifthLableView(void);
-    bool InitPageFifthImageView(void);
-private:
-    UILabel *lableFifth{nullptr};
-    UIImageView *imageFifthLeft{nullptr};
-    UIImageView *imageFifthRight{nullptr};
-};
-} // namespace OHOS
-#endif // MOTION_PAGEFIFTH_VIEW_H
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: Motion PageFifth View\r
+ * Create: 2022-03-02\r
+ */\r
+\r
+#ifndef MOTION_PAGEFIFTH_VIEW_H\r
+#define MOTION_PAGEFIFTH_VIEW_H\r
+\r
+#include "View.h"\r
+#include "BaseView.h"\r
+#include "wearable_log.h"\r
+#include "ohos_types.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_image_view.h"\r
+#include "AppGroupView.h"\r
+\r
+namespace OHOS {\r
+class MotionPageFifth : public AppGroupView {\r
+public:\r
+    MotionPageFifth();\r
+    virtual ~MotionPageFifth();\r
+    static MotionPageFifth *GetInstance(void);\r
+    bool InitView(void *caller) override;\r
+    bool InitPageFifthLableView(void);\r
+    bool InitPageFifthImageView(void);\r
+private:\r
+    UILabel *lableFifth{nullptr};\r
+    UIImageView *imageFifthLeft{nullptr};\r
+    UIImageView *imageFifthRight{nullptr};\r
+};\r
+} // namespace OHOS\r
+#endif // MOTION_PAGEFIFTH_VIEW_H\r
index c38134f..8b0c1d1 100644 (file)
@@ -1,58 +1,58 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: Motion PageFirst View
- * Create: 2022-03-02
- */
-
-#ifndef MOTION_PAGEFIRST_VIEW_H
-#define MOTION_PAGEFIRST_VIEW_H
-
-#include "View.h"
-#include "BaseView.h"
-#include "wearable_log.h"
-#include "ohos_types.h"
-#include "components/ui_label.h"
-#include "components/ui_image_view.h"
-#include "AppGroupView.h"
-
-namespace OHOS {
-class MotionPageFirst : public AppGroupView {
-public:
-    MotionPageFirst();
-    virtual ~MotionPageFirst();
-    static MotionPageFirst *GetInstance(void);
-    bool InitView(void *caller) override;
-    bool InitPageFirstImageView(void);
-    bool InitPageFirstLableTopView(void);
-    bool InitPageFirstLableLeftView(void);
-    bool InitPageFirstLableRightView(void);
-    bool InitPageFirstLableBottomView(void);
-    void HideInitPageFirstImageView(void);
-    void ShowInitPageFirstImageView(void);
-    UILabel *GetLableFirstTop(void);
-    UILabel *GetLableUnitFirstTop(void);
-    UILabel *GetLableFirstLeft(void);
-    UILabel *GetLableUnitFirstLeft(void);
-    UILabel *GetLableFirstRight(void);
-    UILabel *GetLableUnitFirstRight(void);
-    UILabel *GetLableFirstBottom(void);
-    UILabel *GetLableUnitFirstBottom(void);
-private:
-    void SetLableTemplate(UILabel *label);
-    void SetUnitLableTemplate(UILabel *label);
-    UILabel *lableFirstTop{nullptr};
-    UILabel *lableFirstLeft{nullptr};
-    UILabel *lableFirstRight{nullptr};
-    UILabel *lableFirstBottom{nullptr};
-    UILabel *lableUnitFirstTop{nullptr};
-    UILabel *lableUnitFirstLeft{nullptr};
-    UILabel *lableUnitFirstRight{nullptr};
-    UILabel *lableUnitFirstBottom{nullptr};
-    UIImageView *backGroundFirst{nullptr};
-    UIImageView *imageFirstTop{nullptr};
-    UIImageView *imageFirstLeft{nullptr};
-    UIImageView *imageFirstRight{nullptr};
-    UIImageView *imageFirstBottom{nullptr};
-};
-} // namespace OHOS
-#endif // MOTION_PAGEFIRST_VIEW_H
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: Motion PageFirst View\r
+ * Create: 2022-03-02\r
+ */\r
+\r
+#ifndef MOTION_PAGEFIRST_VIEW_H\r
+#define MOTION_PAGEFIRST_VIEW_H\r
+\r
+#include "View.h"\r
+#include "BaseView.h"\r
+#include "wearable_log.h"\r
+#include "ohos_types.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_image_view.h"\r
+#include "AppGroupView.h"\r
+\r
+namespace OHOS {\r
+class MotionPageFirst : public AppGroupView {\r
+public:\r
+    MotionPageFirst();\r
+    virtual ~MotionPageFirst();\r
+    static MotionPageFirst *GetInstance(void);\r
+    bool InitView(void *caller) override;\r
+    bool InitPageFirstImageView(void);\r
+    bool InitPageFirstLableTopView(void);\r
+    bool InitPageFirstLableLeftView(void);\r
+    bool InitPageFirstLableRightView(void);\r
+    bool InitPageFirstLableBottomView(void);\r
+    void HideInitPageFirstImageView(void);\r
+    void ShowInitPageFirstImageView(void);\r
+    UILabel *GetLableFirstTop(void);\r
+    UILabel *GetLableUnitFirstTop(void);\r
+    UILabel *GetLableFirstLeft(void);\r
+    UILabel *GetLableUnitFirstLeft(void);\r
+    UILabel *GetLableFirstRight(void);\r
+    UILabel *GetLableUnitFirstRight(void);\r
+    UILabel *GetLableFirstBottom(void);\r
+    UILabel *GetLableUnitFirstBottom(void);\r
+private:\r
+    void SetLableTemplate(UILabel *label);\r
+    void SetUnitLableTemplate(UILabel *label);\r
+    UILabel *lableFirstTop{nullptr};\r
+    UILabel *lableFirstLeft{nullptr};\r
+    UILabel *lableFirstRight{nullptr};\r
+    UILabel *lableFirstBottom{nullptr};\r
+    UILabel *lableUnitFirstTop{nullptr};\r
+    UILabel *lableUnitFirstLeft{nullptr};\r
+    UILabel *lableUnitFirstRight{nullptr};\r
+    UILabel *lableUnitFirstBottom{nullptr};\r
+    UIImageView *backGroundFirst{nullptr};\r
+    UIImageView *imageFirstTop{nullptr};\r
+    UIImageView *imageFirstLeft{nullptr};\r
+    UIImageView *imageFirstRight{nullptr};\r
+    UIImageView *imageFirstBottom{nullptr};\r
+};\r
+} // namespace OHOS\r
+#endif // MOTION_PAGEFIRST_VIEW_H\r
index 83fcd7b..f141257 100644 (file)
@@ -1,38 +1,38 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: Motion PageFourth View
- * Create: 2022-03-02
- */
-
-#ifndef MOTION_PAGEFOURTH_VIEW_H
-#define MOTION_PAGEFOURTH_VIEW_H
-
-#include "View.h"
-#include "BaseView.h"
-#include "wearable_log.h"
-#include "ohos_types.h"
-#include "components/ui_label.h"
-#include "components/ui_image_view.h"
-#include "AppGroupView.h"
-
-namespace OHOS {
-class MotionPageFourth : public AppGroupView {
-public:
-    MotionPageFourth();
-    virtual ~MotionPageFourth();
-    static MotionPageFourth *GetInstance(void);
-    bool InitView(void *caller) override;
-    bool InitPageFourthLableView(void);
-    bool InitPageFourthImageView(void);
-    void HideInitPageFourthImageView(void);
-    void ShowInitPageFourthImageView(void);
-    UILabel *GetLableFourth(void);
-    UILabel *GetLableUnitFourth(void);
-private:
-    UILabel *lableFourth{nullptr};
-    UILabel *lableUnitFourth{nullptr};
-    UIImageView *backGroundFourth{nullptr};
-    UIImageView *imageFourth{nullptr};
-};
-} // namespace OHOS
-#endif // MOTION_PAGEFOURTH_VIEW_H
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: Motion PageFourth View\r
+ * Create: 2022-03-02\r
+ */\r
+\r
+#ifndef MOTION_PAGEFOURTH_VIEW_H\r
+#define MOTION_PAGEFOURTH_VIEW_H\r
+\r
+#include "View.h"\r
+#include "BaseView.h"\r
+#include "wearable_log.h"\r
+#include "ohos_types.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_image_view.h"\r
+#include "AppGroupView.h"\r
+\r
+namespace OHOS {\r
+class MotionPageFourth : public AppGroupView {\r
+public:\r
+    MotionPageFourth();\r
+    virtual ~MotionPageFourth();\r
+    static MotionPageFourth *GetInstance(void);\r
+    bool InitView(void *caller) override;\r
+    bool InitPageFourthLableView(void);\r
+    bool InitPageFourthImageView(void);\r
+    void HideInitPageFourthImageView(void);\r
+    void ShowInitPageFourthImageView(void);\r
+    UILabel *GetLableFourth(void);\r
+    UILabel *GetLableUnitFourth(void);\r
+private:\r
+    UILabel *lableFourth{nullptr};\r
+    UILabel *lableUnitFourth{nullptr};\r
+    UIImageView *backGroundFourth{nullptr};\r
+    UIImageView *imageFourth{nullptr};\r
+};\r
+} // namespace OHOS\r
+#endif // MOTION_PAGEFOURTH_VIEW_H\r
index bc0df6a..005178a 100644 (file)
@@ -1,52 +1,52 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: Motion PageSecond View
- * Create: 2022-03-02
- */
-
-#ifndef MOTION_PAGESECOND_VIEW_H
-#define MOTION_PAGESECOND_VIEW_H
-
-#include "View.h"
-#include "BaseView.h"
-#include "wearable_log.h"
-#include "ohos_types.h"
-#include "components/ui_label.h"
-#include "components/ui_image_view.h"
-#include "AppGroupView.h"
-
-namespace OHOS {
-class MotionPageSecond : public AppGroupView {
-public:
-    MotionPageSecond();
-    virtual ~MotionPageSecond();
-    static MotionPageSecond *GetInstance(void);
-    bool InitView(void *caller) override;
-    bool InitPageSecondImageView(void);
-    bool InitPageSecondLableTopView(void);
-    bool InitPageSecondLableLeftView(void);
-    bool InitPageSecondLableRightView(void);
-    void HideInitPageSecondImageView(void);
-    void ShowInitPageSecondImageView(void);
-    UILabel *GetLableSecondTop(void);
-    UILabel *GetLableUnitSecondTop(void);
-    UILabel *GetLableSecondLeft(void);
-    UILabel *GetLableUnitSecondLeft(void);
-    UILabel *GetLableSecondRight(void);
-    UILabel *GetLableUnitSecondRight(void);
-private:
-    void SetLableTemplate(UILabel *label);
-    void SetUnitLableTemplate(UILabel *label);
-    UILabel *lableSecondTop{nullptr};
-    UILabel *lableSecondLeft{nullptr};
-    UILabel *lableSecondRight{nullptr};
-    UILabel *lableUnitSecondTop{nullptr};
-    UILabel *lableUnitSecondLeft{nullptr};
-    UILabel *lableUnitSecondRight{nullptr};
-    UIImageView *backGroundSecond{nullptr};
-    UIImageView *imageSecondTop{nullptr};
-    UIImageView *imageSecondLeft{nullptr};
-    UIImageView *imageSecondRight{nullptr};
-};
-} // namespace OHOS
-#endif // MOTION_PAGESECOND_VIEW_H
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: Motion PageSecond View\r
+ * Create: 2022-03-02\r
+ */\r
+\r
+#ifndef MOTION_PAGESECOND_VIEW_H\r
+#define MOTION_PAGESECOND_VIEW_H\r
+\r
+#include "View.h"\r
+#include "BaseView.h"\r
+#include "wearable_log.h"\r
+#include "ohos_types.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_image_view.h"\r
+#include "AppGroupView.h"\r
+\r
+namespace OHOS {\r
+class MotionPageSecond : public AppGroupView {\r
+public:\r
+    MotionPageSecond();\r
+    virtual ~MotionPageSecond();\r
+    static MotionPageSecond *GetInstance(void);\r
+    bool InitView(void *caller) override;\r
+    bool InitPageSecondImageView(void);\r
+    bool InitPageSecondLableTopView(void);\r
+    bool InitPageSecondLableLeftView(void);\r
+    bool InitPageSecondLableRightView(void);\r
+    void HideInitPageSecondImageView(void);\r
+    void ShowInitPageSecondImageView(void);\r
+    UILabel *GetLableSecondTop(void);\r
+    UILabel *GetLableUnitSecondTop(void);\r
+    UILabel *GetLableSecondLeft(void);\r
+    UILabel *GetLableUnitSecondLeft(void);\r
+    UILabel *GetLableSecondRight(void);\r
+    UILabel *GetLableUnitSecondRight(void);\r
+private:\r
+    void SetLableTemplate(UILabel *label);\r
+    void SetUnitLableTemplate(UILabel *label);\r
+    UILabel *lableSecondTop{nullptr};\r
+    UILabel *lableSecondLeft{nullptr};\r
+    UILabel *lableSecondRight{nullptr};\r
+    UILabel *lableUnitSecondTop{nullptr};\r
+    UILabel *lableUnitSecondLeft{nullptr};\r
+    UILabel *lableUnitSecondRight{nullptr};\r
+    UIImageView *backGroundSecond{nullptr};\r
+    UIImageView *imageSecondTop{nullptr};\r
+    UIImageView *imageSecondLeft{nullptr};\r
+    UIImageView *imageSecondRight{nullptr};\r
+};\r
+} // namespace OHOS\r
+#endif // MOTION_PAGESECOND_VIEW_H\r
index 8d18ee9..de2e517 100644 (file)
@@ -1,46 +1,46 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: Motion PageThird View
- * Create: 2022-03-02
- */
-
-#ifndef MOTION_PAGETHIRD_VIEW_H
-#define MOTION_PAGETHIRD_VIEW_H
-
-#include "View.h"
-#include "BaseView.h"
-#include "wearable_log.h"
-#include "ohos_types.h"
-#include "components/ui_label.h"
-#include "components/ui_image_view.h"
-#include "AppGroupView.h"
-
-namespace OHOS {
-class MotionPageThird : public AppGroupView {
-public:
-    MotionPageThird();
-    virtual ~MotionPageThird();
-    static MotionPageThird *GetInstance(void);
-    bool InitView(void *caller) override;
-    bool InitPageThirdImageView(void);
-    bool InitPageThirdLableTopView(void);
-    bool InitPageThirdLableBottomView(void);
-    void HideInitPageThirdImageView(void);
-    void ShowInitPageThirdImageView(void);
-    UILabel *GetLableThirdTop(void);
-    UILabel *GetLableUnitThirdTop(void);
-    UILabel *GetLableThirdBottom(void);
-    UILabel *GetLableUnitThirdBottom(void);
-private:
-    void SetLableTemplate(UILabel *label);
-    void SetUnitLableTemplate(UILabel *label);
-    UILabel *lableThirdTop{nullptr};
-    UILabel *lableThirdBottom{nullptr};
-    UILabel *lableUnitThirdTop{nullptr};
-    UILabel *lableUnitThirdBottom{nullptr};
-    UIImageView *backGroundThird{nullptr};
-    UIImageView *imageThirdTop{nullptr};
-    UIImageView *imageThirdBottom{nullptr};
-};
-} // namespace OHOS
-#endif // MOTION_PAGETHIRD_VIEW_H
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: Motion PageThird View\r
+ * Create: 2022-03-02\r
+ */\r
+\r
+#ifndef MOTION_PAGETHIRD_VIEW_H\r
+#define MOTION_PAGETHIRD_VIEW_H\r
+\r
+#include "View.h"\r
+#include "BaseView.h"\r
+#include "wearable_log.h"\r
+#include "ohos_types.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_image_view.h"\r
+#include "AppGroupView.h"\r
+\r
+namespace OHOS {\r
+class MotionPageThird : public AppGroupView {\r
+public:\r
+    MotionPageThird();\r
+    virtual ~MotionPageThird();\r
+    static MotionPageThird *GetInstance(void);\r
+    bool InitView(void *caller) override;\r
+    bool InitPageThirdImageView(void);\r
+    bool InitPageThirdLableTopView(void);\r
+    bool InitPageThirdLableBottomView(void);\r
+    void HideInitPageThirdImageView(void);\r
+    void ShowInitPageThirdImageView(void);\r
+    UILabel *GetLableThirdTop(void);\r
+    UILabel *GetLableUnitThirdTop(void);\r
+    UILabel *GetLableThirdBottom(void);\r
+    UILabel *GetLableUnitThirdBottom(void);\r
+private:\r
+    void SetLableTemplate(UILabel *label);\r
+    void SetUnitLableTemplate(UILabel *label);\r
+    UILabel *lableThirdTop{nullptr};\r
+    UILabel *lableThirdBottom{nullptr};\r
+    UILabel *lableUnitThirdTop{nullptr};\r
+    UILabel *lableUnitThirdBottom{nullptr};\r
+    UIImageView *backGroundThird{nullptr};\r
+    UIImageView *imageThirdTop{nullptr};\r
+    UIImageView *imageThirdBottom{nullptr};\r
+};\r
+} // namespace OHOS\r
+#endif // MOTION_PAGETHIRD_VIEW_H\r
index d45010c..1762a8b 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: Customization View
- * Create: 2022-03-02
- */
-
-#include "CustomizationView.h"
-#include "IndoorWalkPresenter.h"
-#include "wearable_log.h"
-#include "UiConfig.h"
-
-namespace OHOS {
-static constexpr uint16_t VIEW_X = 52;
-static constexpr uint16_t TIME_VIEW_Y = 155;
-static constexpr uint16_t DISTANCES_VIEW_Y = 255;
-static constexpr uint16_t HEART_VIEW_Y = 355;
-static constexpr uint16_t SPEED_VIEW_Y = 455;
-static constexpr uint16_t STEPS_VIEW_Y = 555;
-static constexpr uint16_t VIEW_W = 350;
-static constexpr uint16_t VIEW_H = 70;
-static constexpr uint16_t RADIO_X = 280;
-static constexpr uint16_t RADIO_Y = 0;
-static constexpr uint16_t RADIO_W = 70;
-static constexpr uint16_t RADIO_H = 70;
-
-static constexpr uint16_t LABLE_X = 152;
-static constexpr uint16_t LABLE_Y = 50;
-static constexpr uint16_t LABLE_W = 150;
-static constexpr uint16_t LABLE_H = 60;
-static CustomizationView *g_pCustomizationView{nullptr};
-
-CustomizationView::CustomizationView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CustomizationView::CustomizationView");
-    g_pCustomizationView = this;
-}
-
-CustomizationView::~CustomizationView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CustomizationView::~CustomizationView");
-    if (group != nullptr) {
-        group->RemoveAll();
-    }
-    delete lable;
-    lable = nullptr;
-    delete timeView;
-    timeView = nullptr;
-    delete distancesView;
-    distancesView = nullptr;
-    delete heartView;
-    heartView = nullptr;
-    delete speedView;
-    speedView = nullptr;
-    delete stepsView;
-    stepsView = nullptr;
-    delete timeRadio;
-    timeRadio = nullptr;
-    delete distancesRadio;
-    distancesRadio = nullptr;
-    delete heartRadio;
-    heartRadio = nullptr;
-    delete speedRadio;
-    speedRadio = nullptr;
-    delete stepsRadio;
-    stepsRadio = nullptr;
-    delete timeButton;
-    timeButton = nullptr;
-    delete distancesButton;
-    distancesButton = nullptr;
-    delete heartButton;
-    heartButton = nullptr;
-    delete speedButton;
-    speedButton = nullptr;
-    delete stepsButton;
-    stepsButton = nullptr;
-    g_pCustomizationView = nullptr;
-}
-
-CustomizationView *CustomizationView::GetInstance()
-{
-    return g_pCustomizationView;
-}
-
-UIViewGroup *CustomizationView::GetTimeView(void)
-{
-    return timeView;
-}
-
-UIViewGroup *CustomizationView::GetDistancesView(void)
-{
-    return distancesView;
-}
-
-UIViewGroup *CustomizationView::GetHeartView(void)
-{
-    return heartView;
-}
-
-UIViewGroup *CustomizationView::GetSpeedView(void)
-{
-    return speedView;
-}
-
-UIViewGroup *CustomizationView::GetStepsView(void)
-{
-    return stepsView;
-}
-
-UIRadioButton *CustomizationView::GetTimeRadio(void)
-{
-    return timeRadio;
-}
-
-UIRadioButton *CustomizationView::GetDistancesRadio(void)
-{
-    return distancesRadio;
-}
-
-UIRadioButton *CustomizationView::GetHeartRadio(void)
-{
-    return heartRadio;
-}
-
-UIRadioButton *CustomizationView::GetSpeedRadio(void)
-{
-    return speedRadio;
-}
-
-UIRadioButton *CustomizationView::GetStepsRadio(void)
-{
-    return stepsRadio;
-}
-
-IndoorWalkUIScrollView *CustomizationView::GetCustomizationViewGroup()
-{
-    return group;
-}
-
-bool CustomizationView::InitTimeView()
-{
-    timeView = new UIViewGroup;
-    if (timeView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "timeView new fail");
-        return false;
-    }
-    timeView->SetPosition(VIEW_X, TIME_VIEW_Y, VIEW_W, VIEW_H);
-    timeButton = new UILabelButton;
-    if (timeButton == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "timeButton UILabelButton new fail");
-        return false;
-    }
-    timeButton->SetPosition(0, 0, VIEW_W, VIEW_H); // 0 : X; 0 : Y
-    timeButton->SetImageSrc(PNG_WALK_TIME_IMAGE, PNG_WALK_TIME_IMAGE);
-    timeButton->SetText("时间");
-    timeButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40 : font data
-    timeView->Add(timeButton);
-    timeRadio = new UIRadioButton("Customization");
-    if (timeRadio == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "timeRadio UIRadio new fail");
-        return false;
-    }
-    timeRadio->SetPosition(RADIO_X, RADIO_Y, RADIO_W, RADIO_H);
-    timeView->Add(timeRadio);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "InitPropertiesView::InitTimeView");
-    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();
-    if (clickListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");
-        return false;
-    }
-    timeView->SetOnClickListener(clickListener);
-    timeView->SetViewId(TIME_BUTTON);
-    timeView->SetDraggable(true);
-    timeView->SetTouchable(true);
-    return true;
-}
-
-bool CustomizationView::InitDistancesView()
-{
-    distancesView = new UIViewGroup;
-    if (distancesView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "distancesView new fail");
-        return false;
-    }
-    distancesView->SetPosition(VIEW_X, DISTANCES_VIEW_Y, VIEW_W, VIEW_H);
-    distancesButton = new UILabelButton;
-    if (distancesButton == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "distancesButton UILabelButton new fail");
-        return false;
-    }
-    distancesButton->SetPosition(0, 0, VIEW_W, VIEW_H); // 0 : X; 0 : Y
-    distancesButton->SetImageSrc(PNG_WALK_DISTANCES_IMAGE, PNG_WALK_DISTANCES_IMAGE);
-    distancesButton->SetText("距离");
-    distancesButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40 : font data
-    distancesView->Add(distancesButton);
-    distancesRadio = new UIRadioButton("Customization");
-    if (distancesRadio == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "distancesRadio UIRadio new fail");
-        return false;
-    }
-    distancesRadio->SetPosition(RADIO_X, RADIO_Y, RADIO_W, RADIO_H);
-    distancesView->Add(distancesRadio);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "InitPropertiesView::InitDistancesView");
-    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();
-    if (clickListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");
-        return false;
-    }
-    distancesView->SetOnClickListener(clickListener);
-    distancesView->SetViewId(DISTANCES_BUTTON);
-    distancesView->SetDraggable(true);
-    distancesView->SetTouchable(true);
-    return true;
-}
-
-bool CustomizationView::InitHeartView()
-{
-    heartView = new UIViewGroup;
-    if (heartView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "heartView new fail");
-        return false;
-    }
-    heartView->SetPosition(VIEW_X, HEART_VIEW_Y, VIEW_W, VIEW_H);
-    heartButton = new UILabelButton;
-    if (heartButton == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "heartButton UILabelButton new fail");
-        return false;
-    }
-    heartButton->SetPosition(0, 0, VIEW_W, VIEW_H); // 0 : X; 0 : Y
-    heartButton->SetImageSrc(PNG_WALK_HEART_IMAGE, PNG_WALK_HEART_IMAGE);
-    heartButton->SetText("心率");
-    heartButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40 : font data
-    heartView->Add(heartButton);
-    heartRadio = new UIRadioButton("Customization");
-    if (heartRadio == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "heartRadio UIRadio new fail");
-        return false;
-    }
-    heartRadio->SetPosition(RADIO_X, RADIO_Y, RADIO_W, RADIO_H);
-    heartView->Add(heartRadio);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "InitPropertiesView::InitHeartView");
-    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();
-    if (clickListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");
-        return false;
-    }
-    heartView->SetOnClickListener(clickListener);
-    heartView->SetViewId(HEART_BUTTON);
-    heartView->SetDraggable(true);
-    heartView->SetTouchable(true);
-    return true;
-}
-
-bool CustomizationView::InitSpeedView()
-{
-    speedView = new UIViewGroup;
-    if (speedView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "speedView new fail");
-        return false;
-    }
-    speedView->SetPosition(VIEW_X, SPEED_VIEW_Y, VIEW_W, VIEW_H);
-    speedButton = new UILabelButton;
-    if (speedButton == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "speedButton UILabelButton new fail");
-        return false;
-    }
-    speedButton->SetPosition(0, 0, VIEW_W, VIEW_H); // 0 : X; 0 : Y
-    speedButton->SetImageSrc(PNG_WALK_SPEED_IMAGE, PNG_WALK_SPEED_IMAGE);
-    speedButton->SetText("速度");
-    speedButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40 : font data
-    speedView->Add(speedButton);
-    speedRadio = new UIRadioButton("Customization");
-    if (speedRadio == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "speedRadio UIRadio new fail");
-        return false;
-    }
-    speedRadio->SetPosition(RADIO_X, RADIO_Y, RADIO_W, RADIO_H);
-    speedView->Add(speedRadio);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "InitPropertiesView::InitSpeedView");
-    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();
-    if (clickListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");
-        return false;
-    }
-    speedView->SetOnClickListener(clickListener);
-    speedView->SetViewId(SPEED_BUTTON);
-    speedView->SetDraggable(true);
-    speedView->SetTouchable(true);
-    return true;
-}
-
-bool CustomizationView::InitStepsView()
-{
-    stepsView = new UIViewGroup;
-    if (stepsView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "stepsView new fail");
-        return false;
-    }
-    stepsView->SetPosition(VIEW_X, STEPS_VIEW_Y, VIEW_W, VIEW_H);
-    stepsButton = new UILabelButton;
-    if (stepsButton == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "stepsButton UILabelButton new fail");
-        return false;
-    }
-    stepsButton->SetPosition(0, 0, VIEW_W, VIEW_H); // 0 : X; 0 : Y
-    stepsButton->SetImageSrc(PNG_WALK_STEPS_IMAGE, PNG_WALK_STEPS_IMAGE);
-    stepsButton->SetText("步数");
-    stepsButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40 : font data
-    stepsView->Add(stepsButton);
-    stepsRadio = new UIRadioButton("Customization");
-    if (stepsRadio == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "stepsRadio UIRadio new fail");
-        return false;
-    }
-    stepsRadio->SetPosition(RADIO_X, RADIO_Y, RADIO_W, RADIO_H);
-    stepsView->Add(stepsRadio);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "InitPropertiesView::InitStepsView");
-    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();
-    if (clickListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");
-        return false;
-    }
-    stepsView->SetOnClickListener(clickListener);
-    stepsView->SetViewId(STEPS_BUTTON);
-    stepsView->SetDraggable(true);
-    stepsView->SetTouchable(true);
-    return true;
-}
-
-bool CustomizationView::ShowUpTitleLabel()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CustomizationView::ShowUpTitleLabel");
-    lable = new UILabel();
-    if (lable == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lable new fail");
-        return false;
-    }
-    lable->SetPosition(LABLE_X, LABLE_Y, LABLE_W, LABLE_H);
-    lable->SetText("自定义");
-    lable->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40 : font data
-    lable->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);
-    lable->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-    return true;
-}
-
-UIViewGroup *CustomizationView::InitPropertiesView()
-{
-    group = new IndoorWalkUIScrollView();
-    if (group == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");
-        return nullptr;
-    }
-    group->SetPosition(0, 0); // 0 : X; 0 : Y
-    group->Resize(HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
-    group->SetHorizontalScrollState(false);
-
-    if ((ShowUpTitleLabel() == false) || (InitTimeView() == false) || (InitDistancesView() == false) ||
-        (InitHeartView() == false) || (InitSpeedView() == false) || (InitStepsView() == false)) {
-        return nullptr;
-    }
-    group->Add(lable);
-    group->Add(timeView);
-    group->Add(distancesView);
-    group->Add(heartView);
-    group->Add(speedView);
-    group->Add(stepsView);
-
-    // 增加按键监听
-    RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::IndoorWalkPresenter::GetInstance();
-    RootView::GetInstance()->SetOnKeyActListener(keyactListener);
-
-    UIView::OnDragListener *dragListener = (UIView::OnDragListener *)OHOS::IndoorWalkPresenter::GetInstance();
-    if (dragListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dragListener GetInstance fail");
-        return nullptr;
-    }
-    group->SetOnDragListener(dragListener);
-    group->SetScrollBlankSize(100); // 100 : blank size
-    group->SetViewId(CUSTOMIZATION_VIEW);
-    group->SetThrowDrag(true);
-    group->SetDraggable(true);
-    return group;
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: Customization View\r
+ * Create: 2022-03-02\r
+ */\r
+\r
+#include "CustomizationView.h"\r
+#include "IndoorWalkPresenter.h"\r
+#include "wearable_log.h"\r
+#include "UiConfig.h"\r
+\r
+namespace OHOS {\r
+static constexpr uint16_t VIEW_X = 52;\r
+static constexpr uint16_t TIME_VIEW_Y = 155;\r
+static constexpr uint16_t DISTANCES_VIEW_Y = 255;\r
+static constexpr uint16_t HEART_VIEW_Y = 355;\r
+static constexpr uint16_t SPEED_VIEW_Y = 455;\r
+static constexpr uint16_t STEPS_VIEW_Y = 555;\r
+static constexpr uint16_t VIEW_W = 350;\r
+static constexpr uint16_t VIEW_H = 70;\r
+static constexpr uint16_t RADIO_X = 280;\r
+static constexpr uint16_t RADIO_Y = 0;\r
+static constexpr uint16_t RADIO_W = 70;\r
+static constexpr uint16_t RADIO_H = 70;\r
+\r
+static constexpr uint16_t LABLE_X = 152;\r
+static constexpr uint16_t LABLE_Y = 50;\r
+static constexpr uint16_t LABLE_W = 150;\r
+static constexpr uint16_t LABLE_H = 60;\r
+static CustomizationView *g_pCustomizationView{nullptr};\r
+\r
+CustomizationView::CustomizationView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CustomizationView::CustomizationView");\r
+    g_pCustomizationView = this;\r
+}\r
+\r
+CustomizationView::~CustomizationView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CustomizationView::~CustomizationView");\r
+    if (group != nullptr) {\r
+        group->RemoveAll();\r
+    }\r
+    delete lable;\r
+    lable = nullptr;\r
+    delete timeView;\r
+    timeView = nullptr;\r
+    delete distancesView;\r
+    distancesView = nullptr;\r
+    delete heartView;\r
+    heartView = nullptr;\r
+    delete speedView;\r
+    speedView = nullptr;\r
+    delete stepsView;\r
+    stepsView = nullptr;\r
+    delete timeRadio;\r
+    timeRadio = nullptr;\r
+    delete distancesRadio;\r
+    distancesRadio = nullptr;\r
+    delete heartRadio;\r
+    heartRadio = nullptr;\r
+    delete speedRadio;\r
+    speedRadio = nullptr;\r
+    delete stepsRadio;\r
+    stepsRadio = nullptr;\r
+    delete timeButton;\r
+    timeButton = nullptr;\r
+    delete distancesButton;\r
+    distancesButton = nullptr;\r
+    delete heartButton;\r
+    heartButton = nullptr;\r
+    delete speedButton;\r
+    speedButton = nullptr;\r
+    delete stepsButton;\r
+    stepsButton = nullptr;\r
+    g_pCustomizationView = nullptr;\r
+}\r
+\r
+CustomizationView *CustomizationView::GetInstance()\r
+{\r
+    return g_pCustomizationView;\r
+}\r
+\r
+UIViewGroup *CustomizationView::GetTimeView(void)\r
+{\r
+    return timeView;\r
+}\r
+\r
+UIViewGroup *CustomizationView::GetDistancesView(void)\r
+{\r
+    return distancesView;\r
+}\r
+\r
+UIViewGroup *CustomizationView::GetHeartView(void)\r
+{\r
+    return heartView;\r
+}\r
+\r
+UIViewGroup *CustomizationView::GetSpeedView(void)\r
+{\r
+    return speedView;\r
+}\r
+\r
+UIViewGroup *CustomizationView::GetStepsView(void)\r
+{\r
+    return stepsView;\r
+}\r
+\r
+UIRadioButton *CustomizationView::GetTimeRadio(void)\r
+{\r
+    return timeRadio;\r
+}\r
+\r
+UIRadioButton *CustomizationView::GetDistancesRadio(void)\r
+{\r
+    return distancesRadio;\r
+}\r
+\r
+UIRadioButton *CustomizationView::GetHeartRadio(void)\r
+{\r
+    return heartRadio;\r
+}\r
+\r
+UIRadioButton *CustomizationView::GetSpeedRadio(void)\r
+{\r
+    return speedRadio;\r
+}\r
+\r
+UIRadioButton *CustomizationView::GetStepsRadio(void)\r
+{\r
+    return stepsRadio;\r
+}\r
+\r
+IndoorWalkUIScrollView *CustomizationView::GetCustomizationViewGroup()\r
+{\r
+    return group;\r
+}\r
+\r
+bool CustomizationView::InitTimeView()\r
+{\r
+    timeView = new UIViewGroup;\r
+    if (timeView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "timeView new fail");\r
+        return false;\r
+    }\r
+    timeView->SetPosition(VIEW_X, TIME_VIEW_Y, VIEW_W, VIEW_H);\r
+    timeButton = new UILabelButton;\r
+    if (timeButton == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "timeButton UILabelButton new fail");\r
+        return false;\r
+    }\r
+    timeButton->SetPosition(0, 0, VIEW_W, VIEW_H); // 0 : X; 0 : Y\r
+    timeButton->SetImageSrc(PNG_WALK_TIME_IMAGE, PNG_WALK_TIME_IMAGE);\r
+    timeButton->SetText("时间");\r
+    timeButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40 : font data\r
+    timeView->Add(timeButton);\r
+    timeRadio = new UIRadioButton("Customization");\r
+    if (timeRadio == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "timeRadio UIRadio new fail");\r
+        return false;\r
+    }\r
+    timeRadio->SetPosition(RADIO_X, RADIO_Y, RADIO_W, RADIO_H);\r
+    timeView->Add(timeRadio);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "InitPropertiesView::InitTimeView");\r
+    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
+    if (clickListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
+        return false;\r
+    }\r
+    timeView->SetOnClickListener(clickListener);\r
+    timeView->SetViewId(TIME_BUTTON);\r
+    timeView->SetDraggable(true);\r
+    timeView->SetTouchable(true);\r
+    return true;\r
+}\r
+\r
+bool CustomizationView::InitDistancesView()\r
+{\r
+    distancesView = new UIViewGroup;\r
+    if (distancesView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "distancesView new fail");\r
+        return false;\r
+    }\r
+    distancesView->SetPosition(VIEW_X, DISTANCES_VIEW_Y, VIEW_W, VIEW_H);\r
+    distancesButton = new UILabelButton;\r
+    if (distancesButton == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "distancesButton UILabelButton new fail");\r
+        return false;\r
+    }\r
+    distancesButton->SetPosition(0, 0, VIEW_W, VIEW_H); // 0 : X; 0 : Y\r
+    distancesButton->SetImageSrc(PNG_WALK_DISTANCES_IMAGE, PNG_WALK_DISTANCES_IMAGE);\r
+    distancesButton->SetText("距离");\r
+    distancesButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40 : font data\r
+    distancesView->Add(distancesButton);\r
+    distancesRadio = new UIRadioButton("Customization");\r
+    if (distancesRadio == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "distancesRadio UIRadio new fail");\r
+        return false;\r
+    }\r
+    distancesRadio->SetPosition(RADIO_X, RADIO_Y, RADIO_W, RADIO_H);\r
+    distancesView->Add(distancesRadio);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "InitPropertiesView::InitDistancesView");\r
+    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
+    if (clickListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
+        return false;\r
+    }\r
+    distancesView->SetOnClickListener(clickListener);\r
+    distancesView->SetViewId(DISTANCES_BUTTON);\r
+    distancesView->SetDraggable(true);\r
+    distancesView->SetTouchable(true);\r
+    return true;\r
+}\r
+\r
+bool CustomizationView::InitHeartView()\r
+{\r
+    heartView = new UIViewGroup;\r
+    if (heartView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "heartView new fail");\r
+        return false;\r
+    }\r
+    heartView->SetPosition(VIEW_X, HEART_VIEW_Y, VIEW_W, VIEW_H);\r
+    heartButton = new UILabelButton;\r
+    if (heartButton == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "heartButton UILabelButton new fail");\r
+        return false;\r
+    }\r
+    heartButton->SetPosition(0, 0, VIEW_W, VIEW_H); // 0 : X; 0 : Y\r
+    heartButton->SetImageSrc(PNG_WALK_HEART_IMAGE, PNG_WALK_HEART_IMAGE);\r
+    heartButton->SetText("心率");\r
+    heartButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40 : font data\r
+    heartView->Add(heartButton);\r
+    heartRadio = new UIRadioButton("Customization");\r
+    if (heartRadio == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "heartRadio UIRadio new fail");\r
+        return false;\r
+    }\r
+    heartRadio->SetPosition(RADIO_X, RADIO_Y, RADIO_W, RADIO_H);\r
+    heartView->Add(heartRadio);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "InitPropertiesView::InitHeartView");\r
+    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
+    if (clickListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
+        return false;\r
+    }\r
+    heartView->SetOnClickListener(clickListener);\r
+    heartView->SetViewId(HEART_BUTTON);\r
+    heartView->SetDraggable(true);\r
+    heartView->SetTouchable(true);\r
+    return true;\r
+}\r
+\r
+bool CustomizationView::InitSpeedView()\r
+{\r
+    speedView = new UIViewGroup;\r
+    if (speedView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "speedView new fail");\r
+        return false;\r
+    }\r
+    speedView->SetPosition(VIEW_X, SPEED_VIEW_Y, VIEW_W, VIEW_H);\r
+    speedButton = new UILabelButton;\r
+    if (speedButton == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "speedButton UILabelButton new fail");\r
+        return false;\r
+    }\r
+    speedButton->SetPosition(0, 0, VIEW_W, VIEW_H); // 0 : X; 0 : Y\r
+    speedButton->SetImageSrc(PNG_WALK_SPEED_IMAGE, PNG_WALK_SPEED_IMAGE);\r
+    speedButton->SetText("速度");\r
+    speedButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40 : font data\r
+    speedView->Add(speedButton);\r
+    speedRadio = new UIRadioButton("Customization");\r
+    if (speedRadio == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "speedRadio UIRadio new fail");\r
+        return false;\r
+    }\r
+    speedRadio->SetPosition(RADIO_X, RADIO_Y, RADIO_W, RADIO_H);\r
+    speedView->Add(speedRadio);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "InitPropertiesView::InitSpeedView");\r
+    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
+    if (clickListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
+        return false;\r
+    }\r
+    speedView->SetOnClickListener(clickListener);\r
+    speedView->SetViewId(SPEED_BUTTON);\r
+    speedView->SetDraggable(true);\r
+    speedView->SetTouchable(true);\r
+    return true;\r
+}\r
+\r
+bool CustomizationView::InitStepsView()\r
+{\r
+    stepsView = new UIViewGroup;\r
+    if (stepsView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "stepsView new fail");\r
+        return false;\r
+    }\r
+    stepsView->SetPosition(VIEW_X, STEPS_VIEW_Y, VIEW_W, VIEW_H);\r
+    stepsButton = new UILabelButton;\r
+    if (stepsButton == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "stepsButton UILabelButton new fail");\r
+        return false;\r
+    }\r
+    stepsButton->SetPosition(0, 0, VIEW_W, VIEW_H); // 0 : X; 0 : Y\r
+    stepsButton->SetImageSrc(PNG_WALK_STEPS_IMAGE, PNG_WALK_STEPS_IMAGE);\r
+    stepsButton->SetText("步数");\r
+    stepsButton->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40 : font data\r
+    stepsView->Add(stepsButton);\r
+    stepsRadio = new UIRadioButton("Customization");\r
+    if (stepsRadio == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "stepsRadio UIRadio new fail");\r
+        return false;\r
+    }\r
+    stepsRadio->SetPosition(RADIO_X, RADIO_Y, RADIO_W, RADIO_H);\r
+    stepsView->Add(stepsRadio);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "InitPropertiesView::InitStepsView");\r
+    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
+    if (clickListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
+        return false;\r
+    }\r
+    stepsView->SetOnClickListener(clickListener);\r
+    stepsView->SetViewId(STEPS_BUTTON);\r
+    stepsView->SetDraggable(true);\r
+    stepsView->SetTouchable(true);\r
+    return true;\r
+}\r
+\r
+bool CustomizationView::ShowUpTitleLabel()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CustomizationView::ShowUpTitleLabel");\r
+    lable = new UILabel();\r
+    if (lable == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lable new fail");\r
+        return false;\r
+    }\r
+    lable->SetPosition(LABLE_X, LABLE_Y, LABLE_W, LABLE_H);\r
+    lable->SetText("自定义");\r
+    lable->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40 : font data\r
+    lable->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
+    lable->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+    return true;\r
+}\r
+\r
+UIViewGroup *CustomizationView::InitPropertiesView()\r
+{\r
+    group = new IndoorWalkUIScrollView();\r
+    if (group == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
+        return nullptr;\r
+    }\r
+    group->SetPosition(0, 0); // 0 : X; 0 : Y\r
+    group->Resize(HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
+    group->SetHorizontalScrollState(false);\r
+\r
+    if ((ShowUpTitleLabel() == false) || (InitTimeView() == false) || (InitDistancesView() == false) ||\r
+        (InitHeartView() == false) || (InitSpeedView() == false) || (InitStepsView() == false)) {\r
+        return nullptr;\r
+    }\r
+    group->Add(lable);\r
+    group->Add(timeView);\r
+    group->Add(distancesView);\r
+    group->Add(heartView);\r
+    group->Add(speedView);\r
+    group->Add(stepsView);\r
+\r
+    UIView::OnDragListener *dragListener = (UIView::OnDragListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
+    if (dragListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dragListener GetInstance fail");\r
+        return nullptr;\r
+    }\r
+    group->SetOnDragListener(dragListener);\r
+    group->SetScrollBlankSize(100); // 100 : blank size\r
+    group->SetViewId(CUSTOMIZATION_VIEW);\r
+    group->SetThrowDrag(true);\r
+    group->SetDraggable(true);\r
+    return group;\r
+}\r
 }
\ No newline at end of file
index 55a3df4..ae39724 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: IndoorWalk End View
- * Create: 2022-03-02
- */
-
-#include "IndoorWalkEndView.h"
-#include "IndoorWalkPresenter.h"
-#include "wearable_log.h"
-#include "UiConfig.h"
-
-namespace OHOS {
-static constexpr uint16_t LABELS_X = 75;
-static constexpr uint16_t LABELS_Y = 150;
-static constexpr uint16_t LABELS_W = 324;
-static constexpr uint16_t LABELS_H = 160;
-static constexpr uint16_t BUTTON_X1 = 85;
-static constexpr uint16_t BUTTON_X2 = 279;
-static constexpr uint16_t BUTTON_Y = 320;
-static constexpr uint16_t BUTTON_W = 90;
-static constexpr uint16_t BUTTON_H = 90;
-static IndoorWalkEndView *g_pIndoorWalkEndView{nullptr};
-
-IndoorWalkEndView::IndoorWalkEndView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkEndView::IndoorWalkEndView");
-    g_pIndoorWalkEndView = this;
-}
-
-IndoorWalkEndView::~IndoorWalkEndView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkEndView::~IndoorWalkEndView");
-    if (group != nullptr) {
-        group->RemoveAll();
-    }
-    delete titleLabel;
-    titleLabel = nullptr;
-    delete cancelButton;
-    cancelButton = nullptr;
-    delete confirmButton;
-    confirmButton = nullptr;
-    g_pIndoorWalkEndView = nullptr;
-}
-
-IndoorWalkEndView *IndoorWalkEndView::GetInstance()
-{
-    return g_pIndoorWalkEndView;
-}
-
-bool IndoorWalkEndView::ShowUpTitleLabel()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkEndView::ShowUpTitleLabel");
-    titleLabel = new UILabel();
-    if (titleLabel == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkEndView titleLabel new fail");
-        return false;
-    }
-    titleLabel->SetPosition(LABELS_X, LABELS_Y, LABELS_W, LABELS_H);
-    titleLabel->SetText("是否结束运动?");
-    titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 45); // 45 : font data
-    titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);
-    titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,
-                         UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-    titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
-    return true;
-}
-
-bool IndoorWalkEndView::CreateUIButton()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkEndView::CreateUIButton");
-    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();
-    cancelButton = new UIButton();
-    if (cancelButton == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkEndView cancelButton new fail");
-        return false;
-    }
-    cancelButton->SetPosition(BUTTON_X1, BUTTON_Y, BUTTON_W, BUTTON_H);
-    cancelButton->SetViewId(INDOORWALK_CANCEL_BUTTON);
-    cancelButton->SetImageSrc(ALARM_DELETE_ADD_PATH, ALARM_DELETE_ADD_PATH);
-    cancelButton->SetOnClickListener(clickListener);
-
-    confirmButton = new UIButton();
-    if (confirmButton == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkEndView confirmButton new fail");
-        return false;
-    }
-    confirmButton->SetPosition(BUTTON_X2, BUTTON_Y, BUTTON_W, BUTTON_H);
-    confirmButton->SetViewId(INDOORWALK_CONFIRM_BUTTON);
-    confirmButton->SetImageSrc(ALARM_TRUE_ADD_PATH, ALARM_TRUE_ADD_PATH);
-    confirmButton->SetOnClickListener(clickListener);
-    return true;
-}
-
-UIViewGroup *IndoorWalkEndView::InitShowUpView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkEndView InitShowUpView");
-    bool ret;
-    group = new UIViewGroup();
-    if (group == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");
-        return nullptr;
-    }
-    group->SetPosition(0, 0); // 0 : X; 0 : Y
-    group->SetWidth(HORIZONTAL_RESOLUTION);
-    group->SetHeight(VERTICAL_RESOLUTION);
-    ret = ShowUpTitleLabel();
-    if (ret == false) {
-        return nullptr;
-    }
-    group->Add(titleLabel);
-    ret = CreateUIButton();
-    if (ret == false) {
-        return nullptr;
-    }
-    group->Add(cancelButton);
-    group->Add(confirmButton);
-    // 增加按键监听
-    RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::IndoorWalkPresenter::GetInstance();
-    RootView::GetInstance()->SetOnKeyActListener(keyactListener);
-    UIView::OnDragListener *indoorWalkDragListener = (UIView::OnDragListener *)OHOS::IndoorWalkPresenter::GetInstance();
-    if (indoorWalkDragListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "indoorWalkDragListener GetInstance fail");
-        return nullptr;
-    }
-    group->SetOnDragListener(indoorWalkDragListener);
-    group->SetViewId(INDOORWALK_END_VIEW);
-    group->SetDraggable(true);
-    group->SetTouchable(true);
-    return group;
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: IndoorWalk End View\r
+ * Create: 2022-03-02\r
+ */\r
+\r
+#include "IndoorWalkEndView.h"\r
+#include "IndoorWalkPresenter.h"\r
+#include "wearable_log.h"\r
+#include "UiConfig.h"\r
+\r
+namespace OHOS {\r
+static constexpr uint16_t LABELS_X = 75;\r
+static constexpr uint16_t LABELS_Y = 150;\r
+static constexpr uint16_t LABELS_W = 324;\r
+static constexpr uint16_t LABELS_H = 160;\r
+static constexpr uint16_t BUTTON_X1 = 85;\r
+static constexpr uint16_t BUTTON_X2 = 279;\r
+static constexpr uint16_t BUTTON_Y = 320;\r
+static constexpr uint16_t BUTTON_W = 90;\r
+static constexpr uint16_t BUTTON_H = 90;\r
+static IndoorWalkEndView *g_pIndoorWalkEndView{nullptr};\r
+\r
+IndoorWalkEndView::IndoorWalkEndView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkEndView::IndoorWalkEndView");\r
+    g_pIndoorWalkEndView = this;\r
+}\r
+\r
+IndoorWalkEndView::~IndoorWalkEndView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkEndView::~IndoorWalkEndView");\r
+    if (group != nullptr) {\r
+        group->RemoveAll();\r
+    }\r
+    delete titleLabel;\r
+    titleLabel = nullptr;\r
+    delete cancelButton;\r
+    cancelButton = nullptr;\r
+    delete confirmButton;\r
+    confirmButton = nullptr;\r
+    g_pIndoorWalkEndView = nullptr;\r
+}\r
+\r
+IndoorWalkEndView *IndoorWalkEndView::GetInstance()\r
+{\r
+    return g_pIndoorWalkEndView;\r
+}\r
+\r
+bool IndoorWalkEndView::ShowUpTitleLabel()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkEndView::ShowUpTitleLabel");\r
+    titleLabel = new UILabel();\r
+    if (titleLabel == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkEndView titleLabel new fail");\r
+        return false;\r
+    }\r
+    titleLabel->SetPosition(LABELS_X, LABELS_Y, LABELS_W, LABELS_H);\r
+    titleLabel->SetText("是否结束运动?");\r
+    titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 45); // 45 : font data\r
+    titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+    titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+                         UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+    titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
+    return true;\r
+}\r
+\r
+bool IndoorWalkEndView::CreateUIButton()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkEndView::CreateUIButton");\r
+    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
+    cancelButton = new UIButton();\r
+    if (cancelButton == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkEndView cancelButton new fail");\r
+        return false;\r
+    }\r
+    cancelButton->SetPosition(BUTTON_X1, BUTTON_Y, BUTTON_W, BUTTON_H);\r
+    cancelButton->SetViewId(INDOORWALK_CANCEL_BUTTON);\r
+    cancelButton->SetImageSrc(ALARM_DELETE_ADD_PATH, ALARM_DELETE_ADD_PATH);\r
+    cancelButton->SetOnClickListener(clickListener);\r
+\r
+    confirmButton = new UIButton();\r
+    if (confirmButton == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkEndView confirmButton new fail");\r
+        return false;\r
+    }\r
+    confirmButton->SetPosition(BUTTON_X2, BUTTON_Y, BUTTON_W, BUTTON_H);\r
+    confirmButton->SetViewId(INDOORWALK_CONFIRM_BUTTON);\r
+    confirmButton->SetImageSrc(ALARM_TRUE_ADD_PATH, ALARM_TRUE_ADD_PATH);\r
+    confirmButton->SetOnClickListener(clickListener);\r
+    return true;\r
+}\r
+\r
+UIViewGroup *IndoorWalkEndView::InitShowUpView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkEndView InitShowUpView");\r
+    bool ret;\r
+    group = new UIViewGroup();\r
+    if (group == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
+        return nullptr;\r
+    }\r
+    group->SetPosition(0, 0); // 0 : X; 0 : Y\r
+    group->SetWidth(HORIZONTAL_RESOLUTION);\r
+    group->SetHeight(VERTICAL_RESOLUTION);\r
+    ret = ShowUpTitleLabel();\r
+    if (ret == false) {\r
+        return nullptr;\r
+    }\r
+    group->Add(titleLabel);\r
+    ret = CreateUIButton();\r
+    if (ret == false) {\r
+        return nullptr;\r
+    }\r
+    group->Add(cancelButton);\r
+    group->Add(confirmButton);\r
+    UIView::OnDragListener *indoorWalkDragListener = (UIView::OnDragListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
+    if (indoorWalkDragListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "indoorWalkDragListener GetInstance fail");\r
+        return nullptr;\r
+    }\r
+    group->SetOnDragListener(indoorWalkDragListener);\r
+    group->SetViewId(INDOORWALK_END_VIEW);\r
+    group->SetDraggable(true);\r
+    group->SetTouchable(true);\r
+    return group;\r
+}\r
 }
\ No newline at end of file
index b3c2dff..ebfb885 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: IndoorWalk Model
- * Create: 2022-03-02
- */
-
-#include "IndoorWalkModel.h"
-#include "IndoorWalkPresenter.h"
-#include "cmsis_os.h"
-
-namespace OHOS {
-#define SENSOR_TYPE_TREADMILL_DISTANCE    0x10011
-
-/* 跑步机距离 */
-typedef struct {
-    uint32_t distance_info;
-} fa_treadmill_distance_result;
-
-static int g_motionTimes{0};
-osTimerId_t g_startCounting = NULL; // 定时器
-static constexpr uint64_t MS_ONE_SECONDS = 1000;
-static constexpr uint16_t NUM_TEN = 10;
-static constexpr uint16_t NUM_TIME_MIN = 60;
-static constexpr uint16_t NUM_TIME_HOUR = 3600;
-static constexpr int32_t NUM_TIME_DAY = 86400;
-static constexpr uint16_t STEP_CHAR_NUM = 255;
-
-IndoorWalkModel::IndoorWalkModel() {}
-
-IndoorWalkModel::~IndoorWalkModel() {}
-
-IndoorWalkModel *IndoorWalkModel::GetInstance(void)
-{
-    static IndoorWalkModel instance;
-    return &instance;
-}
-
-void IndoorWalkModel::SetConnectionView(const char* id)
-{
-    selectPropertiesID = id;
-}
-
-string IndoorWalkModel::GetConnectionView()
-{
-    return selectPropertiesID;
-}
-
-void IndoorWalkModel::SetTextLableFirstTop(const char *lable, const char *lableUnit)
-{
-    textLableFirstTop = lable;
-    textLableUnitFirstTop = lableUnit;
-}
-
-string IndoorWalkModel::GetTextLableFirstTop()
-{
-    return textLableFirstTop;
-}
-
-string IndoorWalkModel::GetTextLableUnitFirstTop()
-{
-    return textLableUnitFirstTop;
-}
-
-void IndoorWalkModel::SetTextLableFirstLeft(const char *lable, const char *lableUnit)
-{
-    textLableFirstLeft = lable;
-    textLableUnitFirstLeft = lableUnit;
-}
-
-string IndoorWalkModel::GetTextLableFirstLeft()
-{
-    return textLableFirstLeft;
-}
-
-string IndoorWalkModel::GetTextLableUnitFirstLeft()
-{
-    return textLableUnitFirstLeft;
-}
-
-void IndoorWalkModel::SetTextLableFirstRight(const char *lable, const char *lableUnit)
-{
-    textLableFirstRight = lable;
-    textLableUnitFirstRight = lableUnit;
-}
-
-string IndoorWalkModel::GetTextLableFirstRight()
-{
-    return textLableFirstRight;
-}
-
-string IndoorWalkModel::GetTextLableUnitFirstRight()
-{
-    return textLableUnitFirstRight;
-}
-
-void IndoorWalkModel::SetTextLableFirstBottom(const char *lable, const char *lableUnit)
-{
-    textLableFirstBottom = lable;
-    textLableUnitFirstBottom = lableUnit;
-}
-
-string IndoorWalkModel::GetTextLableFirstBottom()
-{
-    return textLableFirstBottom;
-}
-
-string IndoorWalkModel::GetTextLableUnitFirstBottom()
-{
-    return textLableUnitFirstBottom;
-}
-
-void IndoorWalkModel::SetTextLableSecondTop(const char *lable, const char *lableUnit)
-{
-    textLableSecondTop = lable;
-    textLableUnitSecondTop = lableUnit;
-}
-
-string IndoorWalkModel::GetTextLableSecondTop()
-{
-    return textLableSecondTop;
-}
-
-string IndoorWalkModel::GetTextLableUnitSecondTop()
-{
-    return textLableUnitSecondTop;
-}
-
-void IndoorWalkModel::SetTextLableSecondLeft(const char *lable, const char *lableUnit)
-{
-    textLableSecondLeft = lable;
-    textLableUnitSecondLeft = lableUnit;
-}
-
-string IndoorWalkModel::GetTextLableSecondLeft()
-{
-    return textLableSecondLeft;
-}
-
-string IndoorWalkModel::GetTextLableUnitSecondLeft()
-{
-    return textLableUnitSecondLeft;
-}
-
-void IndoorWalkModel::SetTextLableSecondRight(const char *lable, const char *lableUnit)
-{
-    textLableSecondRight = lable;
-    textLableUnitSecondRight = lableUnit;
-}
-
-string IndoorWalkModel::GetTextLableSecondRight()
-{
-    return textLableSecondRight;
-}
-
-string IndoorWalkModel::GetTextLableUnitSecondRight()
-{
-    return textLableUnitSecondRight;
-}
-
-void IndoorWalkModel::SetTextLableThirdTop(const char *lable, const char *lableUnit)
-{
-    textLableThirdTop = lable;
-    textLableUnitThirdTop = lableUnit;
-}
-
-string IndoorWalkModel::GetTextLableThirdTop()
-{
-    return textLableThirdTop;
-}
-
-string IndoorWalkModel::GetTextLableUnitThirdTop()
-{
-    return textLableUnitThirdTop;
-}
-
-void IndoorWalkModel::SetTextLableThirdBottom(const char *lable, const char *lableUnit)
-{
-    textLableThirdBottom = lable;
-    textLableUnitThirdBottom = lableUnit;
-}
-
-string IndoorWalkModel::GetTextLableThirdBottom()
-{
-    return textLableThirdBottom;
-}
-
-string IndoorWalkModel::GetTextLableUnitThirdBottom()
-{
-    return textLableUnitThirdBottom;
-}
-
-void IndoorWalkModel::SetTextLableFourth(const char *lable, const char *lableUnit)
-{
-    textLableFourth = lable;
-    textLableUnitFourth = lableUnit;
-}
-
-string IndoorWalkModel::GetTextLableFourth()
-{
-    return textLableFourth;
-}
-
-string IndoorWalkModel::GetTextLableUnitFourth()
-{
-    return textLableUnitFourth;
-}
-
-void IndoorWalkModel::SetInitialStep(const uint32_t &value)
-{
-    initialStep = value;
-}
-
-int IndoorWalkModel::GetInitialStep()
-{
-    return initialStep;
-}
-
-void IndoorWalkModel::SetInitialDistances(const float &value)
-{
-    initialDistances = value;
-}
-
-float IndoorWalkModel::GetInitialDistances()
-{
-    return initialDistances;
-}
-
-void IndoorWalkModel::SetCurrentDistances(const float &value)
-{
-    currentDistances = value;
-}
-
-float IndoorWalkModel::GetCurrentDistances()
-{
-    return currentDistances;
-}
-
-/* 时间显示 */
-char *IndoorWalkModel::DisplayMotionDuration()
-{
-    motionDuration.erase();
-    string hours;
-    string minute;
-    string seconds;
-    if (g_motionTimes >= NUM_TIME_DAY) {
-        g_motionTimes = 0;
-    }
-    int hour = g_motionTimes / NUM_TIME_HOUR;
-    int min = (g_motionTimes % NUM_TIME_HOUR) / NUM_TIME_MIN;
-    int sec = (g_motionTimes % NUM_TIME_HOUR) % NUM_TIME_MIN;
-    if (hour >= 0 && hour < NUM_TEN) {
-        hours = "0" + to_string(hour);
-    } else {
-        hours = to_string(hour);
-    }
-    if (min >= 0 && min < NUM_TEN) {
-        minute = "0" + to_string(min);
-    } else {
-        minute = to_string(min);
-    }
-    if (sec >= 0 && sec < NUM_TEN) {
-        seconds = "0" + to_string(sec);
-    } else {
-        seconds = to_string(sec);
-    }
-
-    motionDuration = hours + ":" + minute + ":" + seconds;
-    return (char *)motionDuration.c_str();
-}
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* 定时器回调函数 */
-void IndoorWalkTimerCallback()
-{
-    g_motionTimes++;
-    IndoorWalkPresenter *indoorWalkPresenter = IndoorWalkPresenter::GetInstance();
-    if (indoorWalkPresenter == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkTimerCallback::indoorWalkPresenter new fail");
-        return;
-    }
-    indoorWalkPresenter->ModifiesTime();
-}
-
-/* 开启定时器 */
-void InitIndoorWalkTimer()
-{
-    if (g_startCounting != NULL) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkModel::IndoorWalkTimer already exists!!");
-        return;
-    }
-    g_startCounting = osTimerNew((osTimerFunc_t)IndoorWalkTimerCallback, osTimerPeriodic, NULL, NULL);
-    if (g_startCounting == NULL) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkModel::IndoorWalkTimer osTimerNew failed!!");
-        return;
-    }
-    int tick = osMs2Tick(MS_ONE_SECONDS);
-    osStatus_t retTimer = osTimerStart(g_startCounting, tick);
-    if (retTimer != osOK) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkModel::IndoorWalkTimer osTimerStart failed, ret = %lx!!", retTimer);
-        if (g_startCounting != NULL) {
-            retTimer = osTimerDelete(g_startCounting);
-            if (retTimer != osOK) {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkModel::osTimerDelete failed, ret = %lx!!", retTimer);
-                return;
-            }
-            g_startCounting = NULL;
-        }
-        return;
-    }
-}
-/* 关闭定时器 */
-void DisableIndoorWalkTimer()
-{
-    if (g_startCounting != NULL) {
-        osStatus_t ret = osTimerDelete(g_startCounting);
-        if (ret != osOK) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScanTimerCallback osTimerDelete failed, ret = %lx!!", ret);
-            return;
-        }
-        g_startCounting = NULL;
-        g_motionTimes = 0;
-    }
-}
-
-
-#ifdef __cplusplus
-}
-#endif
-
-// 打开传感器
-bool IndoorWalkModel::OpenDistancesSensor(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkModel::OpenDistancesSensor!!");
-    return true;
-}
-
-bool IndoorWalkModel::CloseDistancesSensor(void)
-{
-    return true;
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: IndoorWalk Model\r
+ * Create: 2022-03-02\r
+ */\r
+\r
+#include "IndoorWalkModel.h"\r
+#include "IndoorWalkPresenter.h"\r
+#include "cmsis_os.h"\r
+\r
+namespace OHOS {\r
+#define SENSOR_TYPE_TREADMILL_DISTANCE    0x10011\r
+\r
+/* 跑步机距离 */\r
+typedef struct {\r
+    uint32_t distance_info;\r
+} fa_treadmill_distance_result;\r
+\r
+static int g_motionTimes{0};\r
+osTimerId_t g_startCounting = NULL; // 定时器\r
+static constexpr uint64_t MS_ONE_SECONDS = 1000;\r
+static constexpr uint16_t NUM_TEN = 10;\r
+static constexpr uint16_t NUM_TIME_MIN = 60;\r
+static constexpr uint16_t NUM_TIME_HOUR = 3600;\r
+static constexpr int32_t NUM_TIME_DAY = 86400;\r
+static constexpr uint16_t STEP_CHAR_NUM = 255;\r
+\r
+IndoorWalkModel::IndoorWalkModel() {}\r
+\r
+IndoorWalkModel::~IndoorWalkModel() {}\r
+\r
+IndoorWalkModel *IndoorWalkModel::GetInstance(void)\r
+{\r
+    static IndoorWalkModel instance;\r
+    return &instance;\r
+}\r
+\r
+void IndoorWalkModel::SetConnectionView(const char* id)\r
+{\r
+    selectPropertiesID = id;\r
+}\r
+\r
+string IndoorWalkModel::GetConnectionView()\r
+{\r
+    return selectPropertiesID;\r
+}\r
+\r
+void IndoorWalkModel::SetTextLableFirstTop(const char *lable, const char *lableUnit)\r
+{\r
+    textLableFirstTop = lable;\r
+    textLableUnitFirstTop = lableUnit;\r
+}\r
+\r
+string IndoorWalkModel::GetTextLableFirstTop()\r
+{\r
+    return textLableFirstTop;\r
+}\r
+\r
+string IndoorWalkModel::GetTextLableUnitFirstTop()\r
+{\r
+    return textLableUnitFirstTop;\r
+}\r
+\r
+void IndoorWalkModel::SetTextLableFirstLeft(const char *lable, const char *lableUnit)\r
+{\r
+    textLableFirstLeft = lable;\r
+    textLableUnitFirstLeft = lableUnit;\r
+}\r
+\r
+string IndoorWalkModel::GetTextLableFirstLeft()\r
+{\r
+    return textLableFirstLeft;\r
+}\r
+\r
+string IndoorWalkModel::GetTextLableUnitFirstLeft()\r
+{\r
+    return textLableUnitFirstLeft;\r
+}\r
+\r
+void IndoorWalkModel::SetTextLableFirstRight(const char *lable, const char *lableUnit)\r
+{\r
+    textLableFirstRight = lable;\r
+    textLableUnitFirstRight = lableUnit;\r
+}\r
+\r
+string IndoorWalkModel::GetTextLableFirstRight()\r
+{\r
+    return textLableFirstRight;\r
+}\r
+\r
+string IndoorWalkModel::GetTextLableUnitFirstRight()\r
+{\r
+    return textLableUnitFirstRight;\r
+}\r
+\r
+void IndoorWalkModel::SetTextLableFirstBottom(const char *lable, const char *lableUnit)\r
+{\r
+    textLableFirstBottom = lable;\r
+    textLableUnitFirstBottom = lableUnit;\r
+}\r
+\r
+string IndoorWalkModel::GetTextLableFirstBottom()\r
+{\r
+    return textLableFirstBottom;\r
+}\r
+\r
+string IndoorWalkModel::GetTextLableUnitFirstBottom()\r
+{\r
+    return textLableUnitFirstBottom;\r
+}\r
+\r
+void IndoorWalkModel::SetTextLableSecondTop(const char *lable, const char *lableUnit)\r
+{\r
+    textLableSecondTop = lable;\r
+    textLableUnitSecondTop = lableUnit;\r
+}\r
+\r
+string IndoorWalkModel::GetTextLableSecondTop()\r
+{\r
+    return textLableSecondTop;\r
+}\r
+\r
+string IndoorWalkModel::GetTextLableUnitSecondTop()\r
+{\r
+    return textLableUnitSecondTop;\r
+}\r
+\r
+void IndoorWalkModel::SetTextLableSecondLeft(const char *lable, const char *lableUnit)\r
+{\r
+    textLableSecondLeft = lable;\r
+    textLableUnitSecondLeft = lableUnit;\r
+}\r
+\r
+string IndoorWalkModel::GetTextLableSecondLeft()\r
+{\r
+    return textLableSecondLeft;\r
+}\r
+\r
+string IndoorWalkModel::GetTextLableUnitSecondLeft()\r
+{\r
+    return textLableUnitSecondLeft;\r
+}\r
+\r
+void IndoorWalkModel::SetTextLableSecondRight(const char *lable, const char *lableUnit)\r
+{\r
+    textLableSecondRight = lable;\r
+    textLableUnitSecondRight = lableUnit;\r
+}\r
+\r
+string IndoorWalkModel::GetTextLableSecondRight()\r
+{\r
+    return textLableSecondRight;\r
+}\r
+\r
+string IndoorWalkModel::GetTextLableUnitSecondRight()\r
+{\r
+    return textLableUnitSecondRight;\r
+}\r
+\r
+void IndoorWalkModel::SetTextLableThirdTop(const char *lable, const char *lableUnit)\r
+{\r
+    textLableThirdTop = lable;\r
+    textLableUnitThirdTop = lableUnit;\r
+}\r
+\r
+string IndoorWalkModel::GetTextLableThirdTop()\r
+{\r
+    return textLableThirdTop;\r
+}\r
+\r
+string IndoorWalkModel::GetTextLableUnitThirdTop()\r
+{\r
+    return textLableUnitThirdTop;\r
+}\r
+\r
+void IndoorWalkModel::SetTextLableThirdBottom(const char *lable, const char *lableUnit)\r
+{\r
+    textLableThirdBottom = lable;\r
+    textLableUnitThirdBottom = lableUnit;\r
+}\r
+\r
+string IndoorWalkModel::GetTextLableThirdBottom()\r
+{\r
+    return textLableThirdBottom;\r
+}\r
+\r
+string IndoorWalkModel::GetTextLableUnitThirdBottom()\r
+{\r
+    return textLableUnitThirdBottom;\r
+}\r
+\r
+void IndoorWalkModel::SetTextLableFourth(const char *lable, const char *lableUnit)\r
+{\r
+    textLableFourth = lable;\r
+    textLableUnitFourth = lableUnit;\r
+}\r
+\r
+string IndoorWalkModel::GetTextLableFourth()\r
+{\r
+    return textLableFourth;\r
+}\r
+\r
+string IndoorWalkModel::GetTextLableUnitFourth()\r
+{\r
+    return textLableUnitFourth;\r
+}\r
+\r
+void IndoorWalkModel::SetInitialStep(const uint32_t &value)\r
+{\r
+    initialStep = value;\r
+}\r
+\r
+int IndoorWalkModel::GetInitialStep()\r
+{\r
+    return initialStep;\r
+}\r
+\r
+void IndoorWalkModel::SetInitialDistances(const float &value)\r
+{\r
+    initialDistances = value;\r
+}\r
+\r
+float IndoorWalkModel::GetInitialDistances()\r
+{\r
+    return initialDistances;\r
+}\r
+\r
+void IndoorWalkModel::SetCurrentDistances(const float &value)\r
+{\r
+    currentDistances = value;\r
+}\r
+\r
+float IndoorWalkModel::GetCurrentDistances()\r
+{\r
+    return currentDistances;\r
+}\r
+\r
+/* 时间显示 */\r
+char *IndoorWalkModel::DisplayMotionDuration()\r
+{\r
+    motionDuration.erase();\r
+    string hours;\r
+    string minute;\r
+    string seconds;\r
+    if (g_motionTimes >= NUM_TIME_DAY) {\r
+        g_motionTimes = 0;\r
+    }\r
+    int hour = g_motionTimes / NUM_TIME_HOUR;\r
+    int min = (g_motionTimes % NUM_TIME_HOUR) / NUM_TIME_MIN;\r
+    int sec = (g_motionTimes % NUM_TIME_HOUR) % NUM_TIME_MIN;\r
+    if (hour >= 0 && hour < NUM_TEN) {\r
+        hours = "0" + to_string(hour);\r
+    } else {\r
+        hours = to_string(hour);\r
+    }\r
+    if (min >= 0 && min < NUM_TEN) {\r
+        minute = "0" + to_string(min);\r
+    } else {\r
+        minute = to_string(min);\r
+    }\r
+    if (sec >= 0 && sec < NUM_TEN) {\r
+        seconds = "0" + to_string(sec);\r
+    } else {\r
+        seconds = to_string(sec);\r
+    }\r
+\r
+    motionDuration = hours + ":" + minute + ":" + seconds;\r
+    return (char *)motionDuration.c_str();\r
+}\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+/* 定时器回调函数 */\r
+void IndoorWalkTimerCallback()\r
+{\r
+    g_motionTimes++;\r
+    IndoorWalkPresenter *indoorWalkPresenter = IndoorWalkPresenter::GetInstance();\r
+    if (indoorWalkPresenter == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkTimerCallback::indoorWalkPresenter new fail");\r
+        return;\r
+    }\r
+    indoorWalkPresenter->ModifiesTime();\r
+}\r
+\r
+/* 开启定时器 */\r
+void InitIndoorWalkTimer()\r
+{\r
+    if (g_startCounting != NULL) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkModel::IndoorWalkTimer already exists!!");\r
+        return;\r
+    }\r
+    g_startCounting = osTimerNew((osTimerFunc_t)IndoorWalkTimerCallback, osTimerPeriodic, NULL, NULL);\r
+    if (g_startCounting == NULL) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkModel::IndoorWalkTimer osTimerNew failed!!");\r
+        return;\r
+    }\r
+    int tick = osMs2Tick(MS_ONE_SECONDS);\r
+    osStatus_t retTimer = osTimerStart(g_startCounting, tick);\r
+    if (retTimer != osOK) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkModel::IndoorWalkTimer osTimerStart failed, ret = %lx!!", retTimer);\r
+        if (g_startCounting != NULL) {\r
+            retTimer = osTimerDelete(g_startCounting);\r
+            if (retTimer != osOK) {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkModel::osTimerDelete failed, ret = %lx!!", retTimer);\r
+                return;\r
+            }\r
+            g_startCounting = NULL;\r
+        }\r
+        return;\r
+    }\r
+}\r
+/* 关闭定时器 */\r
+void DisableIndoorWalkTimer()\r
+{\r
+    if (g_startCounting != NULL) {\r
+        osStatus_t ret = osTimerDelete(g_startCounting);\r
+        if (ret != osOK) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScanTimerCallback osTimerDelete failed, ret = %lx!!", ret);\r
+            return;\r
+        }\r
+        g_startCounting = NULL;\r
+        g_motionTimes = 0;\r
+    }\r
+}\r
+\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+// 打开传感器\r
+bool IndoorWalkModel::OpenDistancesSensor(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkModel::OpenDistancesSensor!!");\r
+    return true;\r
+}\r
+\r
+bool IndoorWalkModel::CloseDistancesSensor(void)\r
+{\r
+    return true;\r
+}\r
 }
\ No newline at end of file
index deb88e3..866e42f 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: IndoorWalk Motion View
- * Create: 2022-03-02
- */
-
-#include "IndoorWalkMotionView.h"
-#include "IndoorWalkPresenter.h"
-#include "wearable_log.h"
-#include "UiConfig.h"
-#include "ScreenModels.h"
-#include "ActivityModel.h"
-#include "IndoorWalkModel.h"
-#include <iomanip>
-
-namespace OHOS {
-static IndoorWalkMotionView *g_pIndoorWalkMotionView{nullptr};
-
-struct WalkMotionViewMapper {
-    MotionPageId id;
-    AppGroupView *(IndoorWalkMotionView::*func)(void);
-};
-
-static const WalkMotionViewMapper g_pageMapper[] = {
-    {MOTION_FIRST, &IndoorWalkMotionView::InitMotionPageFirst},
-    {MOTION_SECOND, &IndoorWalkMotionView::InitMotionPageSecond},
-    {MOTION_THIRD, &IndoorWalkMotionView::InitMotionPageThird},
-    {MOTION_FOURTH, &IndoorWalkMotionView::InitMotionPageFourth},
-    {MOTION_FIFTH, &IndoorWalkMotionView::InitMotionPageFifth},
-};
-
-IndoorWalkMotionView::IndoorWalkMotionView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkMotionView::IndoorWalkMotionView");
-    InitIndoorWalkTimer();
-    IndoorWalkModel::GetInstance()->OpenDistancesSensor();
-    g_pIndoorWalkMotionView = this;
-}
-
-IndoorWalkMotionView::~IndoorWalkMotionView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkMotionView::~IndoorWalkMotionView");
-    for (int32_t i = 0; i < maxPage; i++) {
-        recordCard[i] = nullptr;
-    }
-    delete walkMotionList;
-    walkMotionList = nullptr;
-    delete motionPageFirst;
-    motionPageFirst = nullptr;
-    delete motionPageSecond;
-    motionPageSecond = nullptr;
-    delete motionPageThird;
-    motionPageThird = nullptr;
-    delete motionPageFourth;
-    motionPageFourth = nullptr;
-    delete motionPageFifth;
-    motionPageFifth = nullptr;
-    g_pIndoorWalkMotionView = nullptr;
-}
-
-IndoorWalkMotionView *IndoorWalkMotionView::GetInstance()
-{
-    return g_pIndoorWalkMotionView;
-}
-
-AppGroupView *IndoorWalkMotionView::InitMotionPageFirst(void)
-{
-    motionPageFirst = new MotionPageFirst();
-    if (motionPageFirst == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "motionPageFirst new fail");
-        return nullptr;
-    }
-    return motionPageFirst;
-}
-
-AppGroupView *IndoorWalkMotionView::InitMotionPageSecond(void)
-{
-    motionPageSecond = new MotionPageSecond();
-    if (motionPageSecond == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "motionPageSecond new fail");
-        return nullptr;
-    }
-    return motionPageSecond;
-}
-
-AppGroupView *IndoorWalkMotionView::InitMotionPageThird(void)
-{
-    motionPageThird = new MotionPageThird();
-    if (motionPageThird == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "motionPageThird new fail");
-        return nullptr;
-    }
-    return motionPageThird;
-}
-
-AppGroupView *IndoorWalkMotionView::InitMotionPageFourth(void)
-{
-    motionPageFourth = new MotionPageFourth();
-    if (motionPageFourth == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "motionPageFourth new fail");
-        return nullptr;
-    }
-    return motionPageFourth;
-}
-
-AppGroupView *IndoorWalkMotionView::InitMotionPageFifth(void)
-{
-    motionPageFifth = new MotionPageFifth();
-    if (motionPageFifth == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "motionPageFifth new fail");
-        return nullptr;
-    }
-    return motionPageFifth;
-}
-
-UIViewGroup *IndoorWalkMotionView::WalkMotionViewInit(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkMotionView::WalkMotionViewInit");
-    walkMotionList = new UISwipeView(UISwipeView::VERTICAL);
-    if (walkMotionList == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "walkMotionList new fail");
-        return nullptr;
-    }
-    walkMotionList->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
-    walkMotionList->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION); // 0 : X; 0 : Y
-    walkMotionList->SetLoopState(true);
-    walkMotionList->SetAnimatorTime(50); // 50:animator drag time(ms)
-
-    for (uint16_t i = 0; i < maxPage; i++) {
-        recordCard[i] = GreatePage(i);
-        if (recordCard[i] == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkMotionView:: recordCard %d error", i);
-            return nullptr;
-        }
-        recordCard[i]->InitView(this);
-        walkMotionList->Add(recordCard[i]);
-    }
-    UIView::OnDragListener *motionDragListener = (UIView::OnDragListener *)OHOS::IndoorWalkPresenter::GetInstance();
-    if (motionDragListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "motionDragListener GetInstance fail");
-        return nullptr;
-    }
-    UIView::OnClickListener *motionClickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();
-    if (motionClickListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "motionClickListener GetInstance fail");
-        return nullptr;
-    }
-    UISwipeView::OnSwipeListener *motionSwipeListener = (UISwipeView::OnSwipeListener *)OHOS::IndoorWalkPresenter::GetInstance();
-    if (motionSwipeListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "motionSwipeListener GetInstance fail");
-        return nullptr;
-    }
-    walkMotionList->SetOnSwipeListener(motionSwipeListener);
-    walkMotionList->SetOnClickListener(motionClickListener);
-    walkMotionList->SetOnDragListener(motionDragListener);
-    walkMotionList->SetViewId(INDOORWALK_MOTION_VIEW);
-    walkMotionList->SetDraggable(true);
-    walkMotionList->SetTouchable(true);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkMotionView::InitPage over");
-    IndoorWalkModel::GetInstance()->SetInitialDistances(IndoorWalkModel::GetInstance()->GetCurrentDistances());
-    InitialStep();
-    return walkMotionList;
-}
-
-void IndoorWalkMotionView::InitialStep()
-{
-    uint32_t stepValue;
-    int weekToday = ActivityModel::GetInstance()->GetWeekToday();
-    ActivityModel::GetInstance()->GetStepData((StepDataDistribute)weekToday, &stepValue);
-    IndoorWalkModel::GetInstance()->SetInitialStep(stepValue);
-}
-
-AppGroupView *IndoorWalkMotionView::GreatePage(int32_t StreamId)
-{
-    uint16_t i;
-    AppGroupView *view = nullptr;
-    int32_t MotionPageId = ScreenModels::GetInstance()->GetCardPage(StreamId);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GreatePage MotionPageId:%d", MotionPageId);
-    for (i = 0; i < sizeof(g_pageMapper) / sizeof(g_pageMapper[0]); i++) {
-        if (g_pageMapper[i].id == MotionPageId) {
-            view = (this->*(g_pageMapper[i].func))();
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GreatePage view:%p", view);
-            return view;
-        }
-    }
-    return nullptr;
-}
-
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: IndoorWalk Motion View\r
+ * Create: 2022-03-02\r
+ */\r
+\r
+#include "IndoorWalkMotionView.h"\r
+#include "IndoorWalkPresenter.h"\r
+#include "wearable_log.h"\r
+#include "UiConfig.h"\r
+#include "ScreenModels.h"\r
+#include "ActivityModel.h"\r
+#include "IndoorWalkModel.h"\r
+#include <iomanip>\r
+\r
+namespace OHOS {\r
+static IndoorWalkMotionView *g_pIndoorWalkMotionView{nullptr};\r
+\r
+struct WalkMotionViewMapper {\r
+    MotionPageId id;\r
+    AppGroupView *(IndoorWalkMotionView::*func)(void);\r
+};\r
+\r
+static const WalkMotionViewMapper g_pageMapper[] = {\r
+    {MOTION_FIRST, &IndoorWalkMotionView::InitMotionPageFirst},\r
+    {MOTION_SECOND, &IndoorWalkMotionView::InitMotionPageSecond},\r
+    {MOTION_THIRD, &IndoorWalkMotionView::InitMotionPageThird},\r
+    {MOTION_FOURTH, &IndoorWalkMotionView::InitMotionPageFourth},\r
+    {MOTION_FIFTH, &IndoorWalkMotionView::InitMotionPageFifth},\r
+};\r
+\r
+IndoorWalkMotionView::IndoorWalkMotionView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkMotionView::IndoorWalkMotionView");\r
+    InitIndoorWalkTimer();\r
+    IndoorWalkModel::GetInstance()->OpenDistancesSensor();\r
+    g_pIndoorWalkMotionView = this;\r
+}\r
+\r
+IndoorWalkMotionView::~IndoorWalkMotionView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkMotionView::~IndoorWalkMotionView");\r
+    for (int32_t i = 0; i < maxPage; i++) {\r
+        recordCard[i] = nullptr;\r
+    }\r
+    delete walkMotionList;\r
+    walkMotionList = nullptr;\r
+    delete motionPageFirst;\r
+    motionPageFirst = nullptr;\r
+    delete motionPageSecond;\r
+    motionPageSecond = nullptr;\r
+    delete motionPageThird;\r
+    motionPageThird = nullptr;\r
+    delete motionPageFourth;\r
+    motionPageFourth = nullptr;\r
+    delete motionPageFifth;\r
+    motionPageFifth = nullptr;\r
+    g_pIndoorWalkMotionView = nullptr;\r
+}\r
+\r
+IndoorWalkMotionView *IndoorWalkMotionView::GetInstance()\r
+{\r
+    return g_pIndoorWalkMotionView;\r
+}\r
+\r
+AppGroupView *IndoorWalkMotionView::InitMotionPageFirst(void)\r
+{\r
+    motionPageFirst = new MotionPageFirst();\r
+    if (motionPageFirst == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "motionPageFirst new fail");\r
+        return nullptr;\r
+    }\r
+    return motionPageFirst;\r
+}\r
+\r
+AppGroupView *IndoorWalkMotionView::InitMotionPageSecond(void)\r
+{\r
+    motionPageSecond = new MotionPageSecond();\r
+    if (motionPageSecond == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "motionPageSecond new fail");\r
+        return nullptr;\r
+    }\r
+    return motionPageSecond;\r
+}\r
+\r
+AppGroupView *IndoorWalkMotionView::InitMotionPageThird(void)\r
+{\r
+    motionPageThird = new MotionPageThird();\r
+    if (motionPageThird == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "motionPageThird new fail");\r
+        return nullptr;\r
+    }\r
+    return motionPageThird;\r
+}\r
+\r
+AppGroupView *IndoorWalkMotionView::InitMotionPageFourth(void)\r
+{\r
+    motionPageFourth = new MotionPageFourth();\r
+    if (motionPageFourth == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "motionPageFourth new fail");\r
+        return nullptr;\r
+    }\r
+    return motionPageFourth;\r
+}\r
+\r
+AppGroupView *IndoorWalkMotionView::InitMotionPageFifth(void)\r
+{\r
+    motionPageFifth = new MotionPageFifth();\r
+    if (motionPageFifth == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "motionPageFifth new fail");\r
+        return nullptr;\r
+    }\r
+    return motionPageFifth;\r
+}\r
+\r
+UIViewGroup *IndoorWalkMotionView::WalkMotionViewInit(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkMotionView::WalkMotionViewInit");\r
+    walkMotionList = new UISwipeView(UISwipeView::VERTICAL);\r
+    if (walkMotionList == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "walkMotionList new fail");\r
+        return nullptr;\r
+    }\r
+    walkMotionList->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);\r
+    walkMotionList->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION); // 0 : X; 0 : Y\r
+    walkMotionList->SetLoopState(true);\r
+    walkMotionList->SetAnimatorTime(50); // 50:animator drag time(ms)\r
+\r
+    for (uint16_t i = 0; i < maxPage; i++) {\r
+        recordCard[i] = GreatePage(i);\r
+        if (recordCard[i] == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkMotionView:: recordCard %d error", i);\r
+            return nullptr;\r
+        }\r
+        recordCard[i]->InitView(this);\r
+        walkMotionList->Add(recordCard[i]);\r
+    }\r
+    UIView::OnDragListener *motionDragListener = (UIView::OnDragListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
+    if (motionDragListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "motionDragListener GetInstance fail");\r
+        return nullptr;\r
+    }\r
+    UIView::OnClickListener *motionClickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
+    if (motionClickListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "motionClickListener GetInstance fail");\r
+        return nullptr;\r
+    }\r
+    UISwipeView::OnSwipeListener *motionSwipeListener = (UISwipeView::OnSwipeListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
+    if (motionSwipeListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "motionSwipeListener GetInstance fail");\r
+        return nullptr;\r
+    }\r
+    walkMotionList->SetOnSwipeListener(motionSwipeListener);\r
+    walkMotionList->SetOnClickListener(motionClickListener);\r
+    walkMotionList->SetOnDragListener(motionDragListener);\r
+    walkMotionList->SetViewId(INDOORWALK_MOTION_VIEW);\r
+    walkMotionList->SetDraggable(true);\r
+    walkMotionList->SetTouchable(true);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkMotionView::InitPage over");\r
+    IndoorWalkModel::GetInstance()->SetInitialDistances(IndoorWalkModel::GetInstance()->GetCurrentDistances());\r
+    InitialStep();\r
+    return walkMotionList;\r
+}\r
+\r
+void IndoorWalkMotionView::InitialStep()\r
+{\r
+    uint32_t stepValue;\r
+    int weekToday = ActivityModel::GetInstance()->GetWeekToday();\r
+    ActivityModel::GetInstance()->GetStepData((StepDataDistribute)weekToday, &stepValue);\r
+    IndoorWalkModel::GetInstance()->SetInitialStep(stepValue);\r
+}\r
+\r
+AppGroupView *IndoorWalkMotionView::GreatePage(int32_t StreamId)\r
+{\r
+    uint16_t i;\r
+    AppGroupView *view = nullptr;\r
+    int32_t MotionPageId = ScreenModels::GetInstance()->GetCardPage(StreamId);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GreatePage MotionPageId:%d", MotionPageId);\r
+    for (i = 0; i < sizeof(g_pageMapper) / sizeof(g_pageMapper[0]); i++) {\r
+        if (g_pageMapper[i].id == MotionPageId) {\r
+            view = (this->*(g_pageMapper[i].func))();\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GreatePage view:%p", view);\r
+            return view;\r
+        }\r
+    }\r
+    return nullptr;\r
+}\r
+\r
 }
\ No newline at end of file
index 53689f0..47eeb84 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: IndoorWalk Prepared View
- * Create: 2022-03-02
- */
-
-#include "IndoorWalkPreparedView.h"
-#include "IndoorWalkPresenter.h"
-#include "ScreenModels.h"
-#include "ui_resource_image.h"
-#include "wearable_log.h"
-#include "UiConfig.h"
-
-namespace OHOS {
-static IndoorWalkPreparedView *g_pIndoorWalkPreparedView{nullptr};
-
-static constexpr uint16_t HEARTBEAT_IMAGE_WIDTH = 92;
-static constexpr uint16_t HEARTBEAT_IMAGE_HEIGHT = 92;
-static constexpr uint16_t HEARTBEAT_IMAGE_X = 333;
-static constexpr uint16_t HEARTBEAT_IMAGE_Y = 170;
-static constexpr uint16_t HEARTBEAT_IMAGE_NUM = 19;
-static constexpr uint16_t HEARTBEAT_DELAY = 50;
-
-static constexpr uint16_t BATTERY_X = 175;
-static constexpr uint16_t BATTERY_Y = 84;
-static constexpr uint16_t BATTERY_LABEL_X = 232;
-static constexpr uint16_t BATTERY_LABEL_Y = 75;
-static constexpr uint16_t BATTERY_LABEL_W = 86;
-static constexpr uint16_t BATTERY_LABEL_H = 30;
-
-static constexpr uint16_t HEARTBEAT_LABEL_X = 363;
-static constexpr uint16_t HEARTBEAT_LABEL_Y = 241;
-static constexpr uint16_t HEARTBEAT_LABEL_W = 86;
-static constexpr uint16_t HEARTBEAT_LABEL_H = 30;
-
-static constexpr uint16_t TIME_LABEL_X = 177;
-static constexpr uint16_t TIME_LABEL_Y = 36;
-static constexpr uint16_t TIME_LABEL_W = 100;
-static constexpr uint16_t TIME_LABEL_H = 30;
-
-static constexpr uint16_t TITLE_LABEL_X = 127;
-static constexpr uint16_t TITLE_LABEL_Y = 348;
-static constexpr uint16_t TITLE_LABEL_W = 200;
-static constexpr uint16_t TITLE_LABEL_H = 80;
-
-static constexpr uint16_t WALK_BUTTON_X = 138;
-static constexpr uint16_t WALK_BUTTON_Y = 136;
-static constexpr uint16_t WALK_BUTTON_W = 180;
-static constexpr uint16_t WALK_BUTTON_H = 180;
-static constexpr uint16_t STEP_CHAR_NUM = 255;
-
-// 心跳image
-static ImageAnimatorInfo g_heartBeatImageInfo[HEARTBEAT_IMAGE_NUM] = {
-    {PNG_A004_070_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-    {PNG_A004_071_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-    {PNG_A004_072_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-    {PNG_A004_073_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-    {PNG_A004_074_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-    {PNG_A004_075_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-    {PNG_A004_076_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-    {PNG_A004_077_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-    {PNG_A004_078_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-    {PNG_A004_079_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-
-    {PNG_A004_080_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-    {PNG_A004_081_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-    {PNG_A004_082_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-    {PNG_A004_083_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-    {PNG_A004_084_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-    {PNG_A004_085_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-    {PNG_A004_086_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-    {PNG_A004_087_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-    {PNG_A004_088_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,
-        IMG_SRC_FILE_PATH},
-};
-
-
-IndoorWalkPreparedView::IndoorWalkPreparedView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkPreparedView::IndoorWalkPreparedView");
-    g_pIndoorWalkPreparedView = this;
-}
-
-IndoorWalkPreparedView::~IndoorWalkPreparedView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkPreparedView::~IndoorWalkPreparedView");
-    if (group != nullptr) {
-        group->RemoveAll();
-    }
-    delete walkButton;
-    walkButton = nullptr;
-    delete titleLabel;
-    titleLabel = nullptr;
-    delete battery;
-    battery = nullptr;
-    delete batteryLable;
-    batteryLable = nullptr;
-    delete imageAnimator;
-    imageAnimator = nullptr;
-    delete heartRateLabel;
-    heartRateLabel = nullptr;
-    delete timeLabel;
-    timeLabel = nullptr;
-    g_pIndoorWalkPreparedView = nullptr;
-}
-
-IndoorWalkPreparedView *IndoorWalkPreparedView::GetInstance()
-{
-    return g_pIndoorWalkPreparedView;
-}
-
-bool IndoorWalkPreparedView::InitBatteryView() // 加载电量
-{
-    // battery = new UIImageView(); // 电量状态显示
-    // if (battery == nullptr) {
-    //     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "battery new fail");
-    //     return false;
-    // }
-    // battery->SetPosition(BATTERY_X, BATTERY_Y);
-    // ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, battery, DROPDOWN_DROPDOWN_BATTERY);
-    // group->Add(battery);
-
-    // batteryLable = new UILabel();
-    // if (batteryLable == nullptr) {
-    //     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "batteryLable new fail");
-    //     return false;
-    // }
-    // batteryLable->SetPosition(BATTERY_LABEL_X, BATTERY_LABEL_Y, BATTERY_LABEL_W, BATTERY_LABEL_H);
-    // batteryLable->SetText("--%");
-    // batteryLable->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30 : font data
-    // batteryLable->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);
-    // group->Add(batteryLable);
-    return true;
-}
-
-bool IndoorWalkPreparedView::InitHeartbeatView() // 加载心跳
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkPreparedView::InitHeartbeatView start");
-    imageAnimator = new UIImageAnimatorView();
-    if (imageAnimator == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkPreparedView::InitHeartbeatView new imageAnimator fail");
-        return false;
-    }
-    imageAnimator->SetPosition(HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT);
-    imageAnimator->SetImageAnimatorSrc(g_heartBeatImageInfo, HEARTBEAT_IMAGE_NUM, HEARTBEAT_DELAY);
-    imageAnimator->SetRepeat(true);
-    group->Add(imageAnimator);
-
-    heartRateLabel = new UILabel();
-    if (heartRateLabel == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "heartRateLabel new fail");
-        return false;
-    }
-    heartRateLabel->SetPosition(HEARTBEAT_LABEL_X, HEARTBEAT_LABEL_Y, HEARTBEAT_LABEL_W, HEARTBEAT_LABEL_H);
-    heartRateLabel->SetText("--");
-    heartRateLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30 : font data
-    heartRateLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);
-    group->Add(heartRateLabel);
-    return true;
-}
-
-void IndoorWalkPreparedView::IndoorWalkHeartbeatStart(void)
-{
-    imageAnimator->Start();
-}
-
-void IndoorWalkPreparedView::IndoorWalkHeartbeatStop(void)
-{
-    imageAnimator->Stop();
-}
-
-bool IndoorWalkPreparedView::InitLableVIew() // 加载文本
-{
-    timeLabel = new UILabel();
-    if (timeLabel == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "timeLabel new fail");
-        return false;
-    }
-    timeLabel->SetPosition(TIME_LABEL_X, TIME_LABEL_Y, TIME_LABEL_W, TIME_LABEL_H);
-    timeLabel->SetText("--:--");
-    timeLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30 : font data
-    timeLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);
-    timeLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,
-        UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-    group->Add(timeLabel);
-
-    titleLabel = new UILabel();
-    if (titleLabel == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "titleLabel new fail");
-        return false;
-    }
-    titleLabel->SetPosition(TITLE_LABEL_X, TITLE_LABEL_Y, TITLE_LABEL_W, TITLE_LABEL_H);
-    titleLabel->SetText(" 准备就绪 单击下键开始运动");
-    titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 25); // 25 : font data
-    titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);
-    titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,
-        UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-    group->Add(titleLabel);
-    return true;
-}
-
-
-UIViewGroup *IndoorWalkPreparedView::InitShowUpView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkPreparedView InitShowUpView");
-    bool ret;
-    group = new UIViewGroup();
-    if (group == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");
-        return nullptr;
-    }
-    group->SetPosition(0, 0); // 0 : X; 0 : Y
-    group->SetWidth(HORIZONTAL_RESOLUTION);
-    group->SetHeight(VERTICAL_RESOLUTION);
-
-    walkButton = new UIButton(); // 步行状态显示
-    if (walkButton == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "walkButton new fail");
-        return nullptr;
-    }
-    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();
-    if (clickListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");
-        return nullptr;
-    }
-    walkButton->SetPosition(WALK_BUTTON_X, WALK_BUTTON_Y, WALK_BUTTON_W, WALK_BUTTON_H);
-    walkButton->SetImageSrc(PNG_WALK_IMAGE, PNG_WALK_IMAGE);
-    walkButton->SetOnClickListener(clickListener);
-    walkButton->SetViewId(WALK_BUTTON);
-    group->Add(walkButton);
-    ret = InitBatteryView();
-    if (ret == false) {
-        return nullptr;
-    }
-    ret = InitHeartbeatView();
-    if (ret == false) {
-        return nullptr;
-    }
-    ret = InitLableVIew();
-    if (ret == false) {
-        return
-         nullptr;
-    }
-    // 增加按键监听
-    RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::IndoorWalkPresenter::GetInstance();
-    RootView::GetInstance()->SetOnKeyActListener(keyactListener);
-    UIView::OnDragListener *indoorWalkDragListener = (UIView::OnDragListener *)OHOS::IndoorWalkPresenter::GetInstance();
-    if (indoorWalkDragListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "indoorWalkDragListener GetInstance fail");
-        return nullptr;
-    }
-    group->SetOnDragListener(indoorWalkDragListener);
-    group->SetViewId(INDOORWALK_PREPARED_VIEW);
-    group->SetDraggable(true);
-    group->SetTouchable(true);
-    return group;
-}
-
-void IndoorWalkPreparedView::RefreshHeartbeatData(int value)
-{
-    char heartRateChar[STEP_CHAR_NUM] = {0};
-
-    (void)sprintf_s(heartRateChar, STEP_CHAR_NUM, "%d", value);
-    if (heartRateLabel == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RefreshHeartbeatData heartRateLabel nullptr");
-        return;
-    }
-    heartRateLabel->SetText(heartRateChar);
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: IndoorWalk Prepared View\r
+ * Create: 2022-03-02\r
+ */\r
+\r
+#include "IndoorWalkPreparedView.h"\r
+#include "IndoorWalkPresenter.h"\r
+#include "ScreenModels.h"\r
+#include "ui_resource_image.h"\r
+#include "wearable_log.h"\r
+#include "UiConfig.h"\r
+\r
+namespace OHOS {\r
+static IndoorWalkPreparedView *g_pIndoorWalkPreparedView{nullptr};\r
+\r
+static constexpr uint16_t HEARTBEAT_IMAGE_WIDTH = 92;\r
+static constexpr uint16_t HEARTBEAT_IMAGE_HEIGHT = 92;\r
+static constexpr uint16_t HEARTBEAT_IMAGE_X = 333;\r
+static constexpr uint16_t HEARTBEAT_IMAGE_Y = 170;\r
+static constexpr uint16_t HEARTBEAT_IMAGE_NUM = 19;\r
+static constexpr uint16_t HEARTBEAT_DELAY = 50;\r
+\r
+static constexpr uint16_t BATTERY_X = 175;\r
+static constexpr uint16_t BATTERY_Y = 84;\r
+static constexpr uint16_t BATTERY_LABEL_X = 232;\r
+static constexpr uint16_t BATTERY_LABEL_Y = 75;\r
+static constexpr uint16_t BATTERY_LABEL_W = 86;\r
+static constexpr uint16_t BATTERY_LABEL_H = 30;\r
+\r
+static constexpr uint16_t HEARTBEAT_LABEL_X = 363;\r
+static constexpr uint16_t HEARTBEAT_LABEL_Y = 241;\r
+static constexpr uint16_t HEARTBEAT_LABEL_W = 86;\r
+static constexpr uint16_t HEARTBEAT_LABEL_H = 30;\r
+\r
+static constexpr uint16_t TIME_LABEL_X = 177;\r
+static constexpr uint16_t TIME_LABEL_Y = 36;\r
+static constexpr uint16_t TIME_LABEL_W = 100;\r
+static constexpr uint16_t TIME_LABEL_H = 30;\r
+\r
+static constexpr uint16_t TITLE_LABEL_X = 127;\r
+static constexpr uint16_t TITLE_LABEL_Y = 348;\r
+static constexpr uint16_t TITLE_LABEL_W = 200;\r
+static constexpr uint16_t TITLE_LABEL_H = 80;\r
+\r
+static constexpr uint16_t WALK_BUTTON_X = 138;\r
+static constexpr uint16_t WALK_BUTTON_Y = 136;\r
+static constexpr uint16_t WALK_BUTTON_W = 180;\r
+static constexpr uint16_t WALK_BUTTON_H = 180;\r
+static constexpr uint16_t STEP_CHAR_NUM = 255;\r
+\r
+// 心跳image\r
+static ImageAnimatorInfo g_heartBeatImageInfo[HEARTBEAT_IMAGE_NUM] = {\r
+    {PNG_A004_070_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+    {PNG_A004_071_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+    {PNG_A004_072_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+    {PNG_A004_073_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+    {PNG_A004_074_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+    {PNG_A004_075_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+    {PNG_A004_076_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+    {PNG_A004_077_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+    {PNG_A004_078_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+    {PNG_A004_079_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+\r
+    {PNG_A004_080_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+    {PNG_A004_081_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+    {PNG_A004_082_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+    {PNG_A004_083_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+    {PNG_A004_084_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+    {PNG_A004_085_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+    {PNG_A004_086_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+    {PNG_A004_087_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+    {PNG_A004_088_IMAGE_PATH, {HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y}, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT,\r
+        IMG_SRC_FILE_PATH},\r
+};\r
+\r
+\r
+IndoorWalkPreparedView::IndoorWalkPreparedView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkPreparedView::IndoorWalkPreparedView");\r
+    g_pIndoorWalkPreparedView = this;\r
+}\r
+\r
+IndoorWalkPreparedView::~IndoorWalkPreparedView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkPreparedView::~IndoorWalkPreparedView");\r
+    if (group != nullptr) {\r
+        group->RemoveAll();\r
+    }\r
+    delete walkButton;\r
+    walkButton = nullptr;\r
+    delete titleLabel;\r
+    titleLabel = nullptr;\r
+    delete battery;\r
+    battery = nullptr;\r
+    delete batteryLable;\r
+    batteryLable = nullptr;\r
+    delete imageAnimator;\r
+    imageAnimator = nullptr;\r
+    delete heartRateLabel;\r
+    heartRateLabel = nullptr;\r
+    delete timeLabel;\r
+    timeLabel = nullptr;\r
+    g_pIndoorWalkPreparedView = nullptr;\r
+}\r
+\r
+IndoorWalkPreparedView *IndoorWalkPreparedView::GetInstance()\r
+{\r
+    return g_pIndoorWalkPreparedView;\r
+}\r
+\r
+bool IndoorWalkPreparedView::InitBatteryView() // 加载电量\r
+{\r
+    battery = new UIImageView(); // 电量状态显示\r
+    if (battery == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "battery new fail");\r
+        return false;\r
+    }\r
+    battery->SetPosition(BATTERY_X, BATTERY_Y);\r
+    //ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, battery, DROPDOWN_DROPDOWN_BATTERY);\r
+    group->Add(battery);\r
+\r
+    batteryLable = new UILabel();\r
+    if (batteryLable == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "batteryLable new fail");\r
+        return false;\r
+    }\r
+    batteryLable->SetPosition(BATTERY_LABEL_X, BATTERY_LABEL_Y, BATTERY_LABEL_W, BATTERY_LABEL_H);\r
+    batteryLable->SetText("--%");\r
+    batteryLable->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30 : font data\r
+    batteryLable->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
+    group->Add(batteryLable);\r
+    return true;\r
+}\r
+\r
+bool IndoorWalkPreparedView::InitHeartbeatView() // 加载心跳\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkPreparedView::InitHeartbeatView start");\r
+    imageAnimator = new UIImageAnimatorView();\r
+    if (imageAnimator == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkPreparedView::InitHeartbeatView new imageAnimator fail");\r
+        return false;\r
+    }\r
+    imageAnimator->SetPosition(HEARTBEAT_IMAGE_X, HEARTBEAT_IMAGE_Y, HEARTBEAT_IMAGE_WIDTH, HEARTBEAT_IMAGE_HEIGHT);\r
+    imageAnimator->SetImageAnimatorSrc(g_heartBeatImageInfo, HEARTBEAT_IMAGE_NUM, HEARTBEAT_DELAY);\r
+    imageAnimator->SetRepeat(true);\r
+    group->Add(imageAnimator);\r
+\r
+    heartRateLabel = new UILabel();\r
+    if (heartRateLabel == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "heartRateLabel new fail");\r
+        return false;\r
+    }\r
+    heartRateLabel->SetPosition(HEARTBEAT_LABEL_X, HEARTBEAT_LABEL_Y, HEARTBEAT_LABEL_W, HEARTBEAT_LABEL_H);\r
+    heartRateLabel->SetText("--");\r
+    heartRateLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30 : font data\r
+    heartRateLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
+    group->Add(heartRateLabel);\r
+    return true;\r
+}\r
+\r
+void IndoorWalkPreparedView::IndoorWalkHeartbeatStart(void)\r
+{\r
+    imageAnimator->Start();\r
+}\r
+\r
+void IndoorWalkPreparedView::IndoorWalkHeartbeatStop(void)\r
+{\r
+    imageAnimator->Stop();\r
+}\r
+\r
+bool IndoorWalkPreparedView::InitLableVIew() // 加载文本\r
+{\r
+    timeLabel = new UILabel();\r
+    if (timeLabel == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "timeLabel new fail");\r
+        return false;\r
+    }\r
+    timeLabel->SetPosition(TIME_LABEL_X, TIME_LABEL_Y, TIME_LABEL_W, TIME_LABEL_H);\r
+    timeLabel->SetText("--:--");\r
+    timeLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30 : font data\r
+    timeLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
+    timeLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+        UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+    group->Add(timeLabel);\r
+\r
+    titleLabel = new UILabel();\r
+    if (titleLabel == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "titleLabel new fail");\r
+        return false;\r
+    }\r
+    titleLabel->SetPosition(TITLE_LABEL_X, TITLE_LABEL_Y, TITLE_LABEL_W, TITLE_LABEL_H);\r
+    titleLabel->SetText(" 准备就绪 单击下键开始运动");\r
+    titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 25); // 25 : font data\r
+    titleLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
+    titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+        UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+    group->Add(titleLabel);\r
+    return true;\r
+}\r
+\r
+\r
+UIViewGroup *IndoorWalkPreparedView::InitShowUpView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkPreparedView InitShowUpView");\r
+    bool ret;\r
+    group = new UIViewGroup();\r
+    if (group == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group new fail");\r
+        return nullptr;\r
+    }\r
+    group->SetPosition(0, 0); // 0 : X; 0 : Y\r
+    group->SetWidth(HORIZONTAL_RESOLUTION);\r
+    group->SetHeight(VERTICAL_RESOLUTION);\r
+\r
+    walkButton = new UIButton(); // 步行状态显示\r
+    if (walkButton == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "walkButton new fail");\r
+        return nullptr;\r
+    }\r
+    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
+    if (clickListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
+        return nullptr;\r
+    }\r
+    walkButton->SetPosition(WALK_BUTTON_X, WALK_BUTTON_Y, WALK_BUTTON_W, WALK_BUTTON_H);\r
+    walkButton->SetImageSrc(PNG_WALK_IMAGE, PNG_WALK_IMAGE);\r
+    walkButton->SetOnClickListener(clickListener);\r
+    walkButton->SetViewId(WALK_BUTTON);\r
+    group->Add(walkButton);\r
+    ret = InitBatteryView();\r
+    if (ret == false) {\r
+        return nullptr;\r
+    }\r
+    ret = InitHeartbeatView();\r
+    if (ret == false) {\r
+        return nullptr;\r
+    }\r
+    ret = InitLableVIew();\r
+    if (ret == false) {\r
+        return nullptr;\r
+    }\r
+    UIView::OnDragListener *indoorWalkDragListener = (UIView::OnDragListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
+    if (indoorWalkDragListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "indoorWalkDragListener GetInstance fail");\r
+        return nullptr;\r
+    }\r
+    group->SetOnDragListener(indoorWalkDragListener);\r
+    group->SetViewId(INDOORWALK_PREPARED_VIEW);\r
+    group->SetDraggable(true);\r
+    group->SetTouchable(true);\r
+    return group;\r
+}\r
+\r
+void IndoorWalkPreparedView::RefreshHeartbeatData(int value)\r
+{\r
+    char heartRateChar[STEP_CHAR_NUM] = {0};\r
+\r
+    (void)sprintf_s(heartRateChar, STEP_CHAR_NUM, "%d", value);\r
+    if (heartRateLabel == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RefreshHeartbeatData heartRateLabel nullptr");\r
+        return;\r
+    }\r
+    heartRateLabel->SetText(heartRateChar);\r
+}\r
 }
\ No newline at end of file
index 06bc11d..6e33f8f 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: IndoorWalk Presenter
- * Create: 2022-03-02
- */
-
-#include "IndoorWalkPresenter.h"
-#include "IndoorWalkView.h"
-#include "IndoorWalkModel.h"
-#include "drag_event.h"
-#include "UiConfig.h"
-#include "wearable_log.h"
-#include <sstream>
-#include "ActivityModel.h"
-
-namespace OHOS {
-static IndoorWalkPresenter *g_pIndoorWalkPresenter = nullptr;
-static string g_distancesChar;
-static constexpr uint16_t CENTERED_Y = 192;
-static constexpr uint32_t CONVERSION_NUM = 100000;
-static constexpr uint16_t STEP_CHAR_NUM = 255;
-
-struct IndoorWalkGetViewMapper {
-    const char *viewId;
-    void (IndoorWalkPresenter::*Getfunc)(const char* id);
-};
-
-static const IndoorWalkGetViewMapper g_pWalkGetViewMapper[] = {
-    {IMAGE_FIRST_TOP, &IndoorWalkPresenter::ImageOnClick},
-    {IMAGE_FIRST_LEFT, &IndoorWalkPresenter::ImageOnClick},
-    {IMAGE_FIRST_RIGHT, &IndoorWalkPresenter::ImageOnClick},
-    {IMAGE_FIRST_BOTTOM, &IndoorWalkPresenter::ImageOnClick},
-    {IMAGE_SECOND_TOP, &IndoorWalkPresenter::ImageOnClick},
-    {IMAGE_SECOND_LEFT, &IndoorWalkPresenter::ImageOnClick},
-    {IMAGE_SECOND_RIGHT, &IndoorWalkPresenter::ImageOnClick},
-    {IMAGE_THIRD_TOP, &IndoorWalkPresenter::ImageOnClick},
-    {IMAGE_THIRD_BOTTOM, &IndoorWalkPresenter::ImageOnClick},
-    {IMAGE_FOURTH, &IndoorWalkPresenter::ImageOnClick},
-    {INDOORWALK_CANCEL_BUTTON, &IndoorWalkPresenter::CancelButtonOnClick},
-    {INDOORWALK_CONFIRM_BUTTON, &IndoorWalkPresenter::ConfirmButtonOnClick},
-    {WALK_BUTTON, &IndoorWalkPresenter::WalkButtonOnClick},
-    {TIME_BUTTON, &IndoorWalkPresenter::TimeViewOnClick},
-    {DISTANCES_BUTTON, &IndoorWalkPresenter::DistancesViewOnClick},
-    {HEART_BUTTON, &IndoorWalkPresenter::HeartViewOnClick},
-    {SPEED_BUTTON, &IndoorWalkPresenter::SpeedViewOnClick},
-    {STEPS_BUTTON, &IndoorWalkPresenter::StepsViewOnClick},
-};
-
-void IndoorWalkPresenter::ImageOnClick(const char* id)
-{
-    if (id == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ImageOnClick id nullptr");
-        return;
-    }
-    IndoorWalkModel::GetInstance()->SetConnectionView(id);
-    IndoorWalkView::GetInstance()->ChangeView(INDOORWALKMOTIONVIEW, CUSTOMIZATIONVIEW);
-    SetPropertiesState(id);
-}
-
-void IndoorWalkPresenter::CancelButtonOnClick(const char* id)
-{
-    UNUSED(id);
-    IndoorWalkView::GetInstance()->ChangeView(INDOORWALKENDVIEW, INDOORWALKMOTIONVIEW);
-}
-
-void IndoorWalkPresenter::ConfirmButtonOnClick(const char* id)
-{
-    UNUSED(id);
-    NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
-}
-
-void IndoorWalkPresenter::WalkButtonOnClick(const char* id)
-{
-    UNUSED(id);
-    IndoorWalkView::GetInstance()->ChangeView(INDOORWALKPREPAREDVIEW, INDOORWALKMOTIONVIEW);
-}
-
-void IndoorWalkPresenter::TimeViewOnClick(const char* id)
-{
-    UNUSED(id);
-    string selectPropertiesid = IndoorWalkModel::GetInstance()->GetConnectionView();
-    ModifiesProperties(selectPropertiesid.c_str(), IndoorWalkModel::GetInstance()->DisplayMotionDuration(), "时间");
-}
-
-void IndoorWalkPresenter::DistancesViewOnClick(const char* id)
-{
-    UNUSED(id);
-    string selectPropertiesid = IndoorWalkModel::GetInstance()->GetConnectionView();
-    ModifiesProperties(selectPropertiesid.c_str(), "0.00", "距离(km)");
-}
-
-void IndoorWalkPresenter::HeartViewOnClick(const char* id)
-{
-    UNUSED(id);
-    string selectPropertiesid = IndoorWalkModel::GetInstance()->GetConnectionView();
-    ModifiesProperties(selectPropertiesid.c_str(), "--", "心率(bpm)");
-}
-
-void IndoorWalkPresenter::SpeedViewOnClick(const char* id)
-{
-    UNUSED(id);
-    string selectPropertiesid = IndoorWalkModel::GetInstance()->GetConnectionView();
-    ModifiesProperties(selectPropertiesid.c_str(), "0.00", "速度(km/h)");
-}
-
-void IndoorWalkPresenter::StepsViewOnClick(const char* id)
-{
-    UNUSED(id);
-    string selectPropertiesid = IndoorWalkModel::GetInstance()->GetConnectionView();
-    char stepChar[STEP_CHAR_NUM] = {0};
-    InitStepsValue(stepChar);
-    ModifiesProperties(selectPropertiesid.c_str(), stepChar, "步数(steps)");
-}
-
-void IndoorWalkPresenter::ClickFunc(const char *buttonId)
-{
-    if (buttonId == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ClickFunc buttonId nullptr");
-        return;
-    }
-    unsigned int mapperSize = sizeof(g_pWalkGetViewMapper) / sizeof(g_pWalkGetViewMapper[0]);
-    for (unsigned int i = 0; i < mapperSize; i++) {
-        if (strcmp(buttonId, g_pWalkGetViewMapper[i].viewId) == 0) {
-            (this->*(g_pWalkGetViewMapper[i].Getfunc))(buttonId);
-            return;
-        }
-    }
-    HidePageImageView();
-}
-
-IndoorWalkPresenter::IndoorWalkPresenter()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkPresenter::IndoorWalkPresenter");
-    g_pIndoorWalkPresenter = this;
-}
-
-IndoorWalkPresenter::~IndoorWalkPresenter()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkPresenter::~IndoorWalkPresenter");
-    g_pIndoorWalkPresenter = nullptr;
-}
-
-IndoorWalkPresenter *IndoorWalkPresenter::GetInstance()
-{
-    return g_pIndoorWalkPresenter;
-}
-
-void IndoorWalkPresenter::OnStart()
-{
-    Presenter<IndoorWalkView>::OnStart();
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkPresenter::On Start ");
-}
-
-void IndoorWalkPresenter::OnPause(void) {}
-
-void IndoorWalkPresenter::OnResume(void) {}
-
-void IndoorWalkPresenter::OnStop(void) {}
-
-void IndoorWalkPresenter::OnSwipe(UISwipeView &view)
-{
-    UNUSED(view);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkPresenter::OnSwipe");
-    HidePageImageView();
-    return;
-}
-
-bool IndoorWalkPresenter::OnClick(UIView& view, const ClickEvent& event)
-{
-    UNUSED(event);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "%s OnClick", view.GetViewId());
-    ClickFunc(view.GetViewId());
-    return true;
-}
-
-void IndoorWalkPresenter::InitStepsValue(char *steps)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkPresenter::InitStepsValue");
-    uint32_t stepValue;
-    int weekToday = ActivityModel::GetInstance()->GetWeekToday();
-    ActivityModel::GetInstance()->GetStepData((StepDataDistribute)weekToday, &stepValue);
-    std::ostringstream ostrHour;
-    ostrHour << stepValue - IndoorWalkModel::GetInstance()->GetInitialStep();
-    std::string weekStr = ostrHour.str();
-    uint32_t ret = memcpy_s(steps, STEP_CHAR_NUM, weekStr.c_str(), weekStr.length());
-    if (ret != EOK) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SaveStepToFile memcpy_s fail. ret=%d", ret);
-        return;
-    }
-}
-
-void IndoorWalkPresenter::HidePageImageView()
-{
-    MotionPageFirst *motionPageFirst = MotionPageFirst::GetInstance();
-    if (motionPageFirst == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HidePageImageView:motionPageFirst new fail");
-        return;
-    }
-    motionPageFirst->HideInitPageFirstImageView();
-    MotionPageSecond *motionPageSecond = MotionPageSecond::GetInstance();
-    if (motionPageSecond == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HidePageImageView:motionPageSecond new fail");
-        return;
-    }
-    motionPageSecond->HideInitPageSecondImageView();
-    MotionPageThird *motionPageThird = MotionPageThird::GetInstance();
-    if (motionPageThird == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HidePageImageView:motionPageThird new fail");
-        return;
-    }
-    motionPageThird->HideInitPageThirdImageView();
-    MotionPageFourth *motionPageFourth = MotionPageFourth::GetInstance();
-    if (motionPageFourth == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HidePageImageView:motionPageFourth new fail");
-        return;
-    }
-    motionPageFourth->HideInitPageFourthImageView();
-}
-
-struct IndoorWalkDragMapper {
-    const char *viewId;
-    void (IndoorWalkPresenter::*Getfunc)();
-};
-
-static const IndoorWalkDragMapper g_pWalkDragMapper[] = {
-    {INDOORWALK_PREPARED_VIEW, &IndoorWalkPresenter::DragIndoorWalkPreparedView},
-    {INDOORWALK_MOTION_VIEW, &IndoorWalkPresenter::DragIndoorWalkMotionView},
-    {INDOORWALK_END_VIEW, &IndoorWalkPresenter::DragIndoorWalkEndView},
-    {CUSTOMIZATION_VIEW, &IndoorWalkPresenter::DragCustomizationView},
-};
-
-void IndoorWalkPresenter::DragIndoorWalkPreparedView()
-{
-    NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
-}
-
-void IndoorWalkPresenter::DragIndoorWalkMotionView()
-{
-    IndoorWalkView::GetInstance()->ChangeView(INDOORWALKMOTIONVIEW, INDOORWALKENDVIEW);
-}
-
-void IndoorWalkPresenter::DragIndoorWalkEndView()
-{
-    IndoorWalkView::GetInstance()->ChangeView(INDOORWALKENDVIEW, INDOORWALKMOTIONVIEW);
-}
-
-void IndoorWalkPresenter::DragCustomizationView()
-{
-    IndoorWalkView::GetInstance()->ChangeView(CUSTOMIZATIONVIEW, INDOORWALKMOTIONVIEW);
-}
-
-void IndoorWalkPresenter::DragFunc(const char *buttonId)
-{
-    if (buttonId == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DragFunc nullptr");
-        return;
-    }
-    unsigned int mapperSize = sizeof(g_pWalkDragMapper) / sizeof(g_pWalkDragMapper[0]);
-    for (unsigned int i = 0; i < mapperSize; i++) {
-        if (strcmp(buttonId, g_pWalkDragMapper[i].viewId) == 0) {
-            (this->*(g_pWalkDragMapper[i].Getfunc))();
-            return;
-        }
-    }
-}
-
-bool IndoorWalkPresenter::OnDrag(UIView& view, const DragEvent& event)
-{
-    HidePageImageView();
-    if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {
-        DragFunc(view.GetViewId());
-    }
-    return true;
-}
-
-// 增加按键事件
-bool IndoorWalkPresenter::OnKeyAct(UIView &view, const KeyEvent &event)
-{
-       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;
-}
-
-struct IndoorWalkLongPressMapper {
-    const char *viewId;
-    void (IndoorWalkPresenter::*Getfunc)();
-};
-
-static const IndoorWalkLongPressMapper g_pWalkLongPressMapper[] = {
-    {LABLE_FIRST_TOP, &IndoorWalkPresenter::LongPressPageFirst},
-    {LABLE_FIRST_LEFT, &IndoorWalkPresenter::LongPressPageFirst},
-    {LABLE_FIRST_RIGHT, &IndoorWalkPresenter::LongPressPageFirst},
-    {LABLE_FIRST_BOTTOM, &IndoorWalkPresenter::LongPressPageFirst},
-    {LABLE_SECOND_TOP, &IndoorWalkPresenter::LongPressPageSecond},
-    {LABLE_SECOND_LEFT, &IndoorWalkPresenter::LongPressPageSecond},
-    {LABLE_SECOND_RIGHT, &IndoorWalkPresenter::LongPressPageSecond},
-    {LABLE_THIRD_TOP, &IndoorWalkPresenter::LongPressPageThird},
-    {LABLE_THIRD_BOTTOM, &IndoorWalkPresenter::LongPressPageThird},
-    {LABLE_FOURTH, &IndoorWalkPresenter::LongPressPageFourth},
-};
-
-void IndoorWalkPresenter::LongPressPageFirst()
-{
-    MotionPageFirst *motionPageFirst = MotionPageFirst::GetInstance();
-    if (motionPageFirst == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnLongPress:motionPageFirst new fail");
-        return;
-    }
-    motionPageFirst->ShowInitPageFirstImageView();
-}
-
-void IndoorWalkPresenter::LongPressPageSecond()
-{
-    MotionPageSecond *motionPageSecond = MotionPageSecond::GetInstance();
-    if (motionPageSecond == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnLongPress:motionPageSecond new fail");
-        return;
-    }
-    motionPageSecond->ShowInitPageSecondImageView();
-}
-
-void IndoorWalkPresenter::LongPressPageThird()
-{
-    MotionPageThird *motionPageThird = MotionPageThird::GetInstance();
-    if (motionPageThird == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnLongPress:motionPageThird new fail");
-        return;
-    }
-    motionPageThird->ShowInitPageThirdImageView();
-}
-
-void IndoorWalkPresenter::LongPressPageFourth()
-{
-    MotionPageFourth *motionPageFourth = MotionPageFourth::GetInstance();
-    if (motionPageFourth == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnLongPress:motionPageFourth new fail");
-        return;
-    }
-    motionPageFourth->ShowInitPageFourthImageView();
-}
-
-void IndoorWalkPresenter::LongPressFunc(const char *buttonId)
-{
-    if (buttonId == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LongPressFunc nullptr");
-        return;
-    }
-    unsigned int mapperSize = sizeof(g_pWalkLongPressMapper) / sizeof(g_pWalkLongPressMapper[0]);
-    for (unsigned int i = 0; i < mapperSize; i++) {
-        if (strcmp(buttonId, g_pWalkLongPressMapper[i].viewId) == 0) {
-            (this->*(g_pWalkLongPressMapper[i].Getfunc))();
-            return;
-        }
-    }
-}
-
-bool IndoorWalkPresenter::OnLongPress(UIView& view, const LongPressEvent& event)
-{
-    UNUSED(event);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnLongPress OnLongPress");
-    LongPressFunc(view.GetViewId());
-    return true;
-}
-
-struct IndoorWalkModifiesMapper {
-    const char *viewId;
-    void (IndoorWalkPresenter::*Getfunc)(const char *lable, const char *lableUnit);
-};
-
-static const IndoorWalkModifiesMapper g_pWalkModifiesMapper[] = {
-    {IMAGE_FIRST_TOP, &IndoorWalkPresenter::ModifiesPageFirstTop},
-    {IMAGE_FIRST_LEFT, &IndoorWalkPresenter::ModifiesPageFirstLeft},
-    {IMAGE_FIRST_RIGHT, &IndoorWalkPresenter::ModifiesPageFirstRight},
-    {IMAGE_FIRST_BOTTOM, &IndoorWalkPresenter::ModifiesPageFirstBottom},
-    {IMAGE_SECOND_TOP, &IndoorWalkPresenter::ModifiesPageSecondTop},
-    {IMAGE_SECOND_LEFT, &IndoorWalkPresenter::ModifiesPageSecondLeft},
-    {IMAGE_SECOND_RIGHT, &IndoorWalkPresenter::ModifiesPageSecondRight},
-    {IMAGE_THIRD_TOP, &IndoorWalkPresenter::ModifiesPageThirdTop},
-    {IMAGE_THIRD_BOTTOM, &IndoorWalkPresenter::ModifiesPageThirdBottom},
-    {IMAGE_FOURTH, &IndoorWalkPresenter::ModifiesPageFourth},
-};
-
-void IndoorWalkPresenter::ModifiesFunc(const char *buttonId, const char *lable, const char *lableUnit)
-{
-    if ((buttonId == nullptr) || (lable == nullptr) || (lableUnit == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesFunc nullptr");
-        return;
-    }
-    unsigned int mapperSize = sizeof(g_pWalkModifiesMapper) / sizeof(g_pWalkModifiesMapper[0]);
-    for (unsigned int i = 0; i < mapperSize; i++) {
-        if (strcmp(buttonId, g_pWalkModifiesMapper[i].viewId) == 0) {
-            (this->*(g_pWalkModifiesMapper[i].Getfunc))(lable, lableUnit);
-            IndoorWalkView::GetInstance()->ChangeView(CUSTOMIZATIONVIEW, INDOORWALKMOTIONVIEW);
-            return;
-        }
-    }
-}
-
-void IndoorWalkPresenter::ModifiesProperties(const char* id, const char *lable, const char *lableUnit)
-{
-    if ((id == nullptr) || (lable == nullptr) || (lableUnit == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesProperties nullptr");
-        return;
-    }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ModifiesProperties == %s", id);
-    HidePageImageView();
-    ModifiesFunc(id, lable, lableUnit);
-}
-
-struct IndoorWalkPropertiesMapper {
-    const char *viewId;
-    void (IndoorWalkPresenter::*Getfunc)();
-};
-
-static const IndoorWalkPropertiesMapper g_pWalkPropertiesMapper[] = {
-    {IMAGE_FIRST_TOP, &IndoorWalkPresenter::SetPropertiesPageFirstTop},
-    {IMAGE_FIRST_LEFT, &IndoorWalkPresenter::SetPropertiesPageFirstLeft},
-    {IMAGE_FIRST_RIGHT, &IndoorWalkPresenter::SetPropertiesPageFirstRight},
-    {IMAGE_FIRST_BOTTOM, &IndoorWalkPresenter::SetPropertiesPageFirstBottom},
-    {IMAGE_SECOND_TOP, &IndoorWalkPresenter::SetPropertiesPageSecondTop},
-    {IMAGE_SECOND_LEFT, &IndoorWalkPresenter::SetPropertiesPageSecondLeft},
-    {IMAGE_SECOND_RIGHT, &IndoorWalkPresenter::SetPropertiesPageSecondRight},
-    {IMAGE_THIRD_TOP, &IndoorWalkPresenter::SetPropertiesPageThirdTop},
-    {IMAGE_THIRD_BOTTOM, &IndoorWalkPresenter::SetPropertiesPageThirdBottom},
-    {IMAGE_FOURTH, &IndoorWalkPresenter::SetPropertiesPageFourth},
-};
-
-void IndoorWalkPresenter::SetPropertiesPageFirstTop()
-{
-    string lableUnit;
-    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitFirstTop();
-    SetCustomizationState(lableUnit.c_str());
-}
-
-void IndoorWalkPresenter::SetPropertiesPageFirstLeft()
-{
-    string lableUnit;
-    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitFirstLeft();
-    SetCustomizationState(lableUnit.c_str());
-}
-
-void IndoorWalkPresenter::SetPropertiesPageFirstRight()
-{
-    string lableUnit;
-    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitFirstRight();
-    SetCustomizationState(lableUnit.c_str());
-}
-
-void IndoorWalkPresenter::SetPropertiesPageFirstBottom()
-{
-    string lableUnit;
-    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitFirstBottom();
-    SetCustomizationState(lableUnit.c_str());
-}
-
-void IndoorWalkPresenter::SetPropertiesPageSecondTop()
-{
-    string lableUnit;
-    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitSecondTop();
-    SetCustomizationState(lableUnit.c_str());
-}
-
-void IndoorWalkPresenter::SetPropertiesPageSecondLeft()
-{
-    string lableUnit;
-    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitSecondLeft();
-    SetCustomizationState(lableUnit.c_str());
-}
-
-void IndoorWalkPresenter::SetPropertiesPageSecondRight()
-{
-    string lableUnit;
-    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitSecondRight();
-    SetCustomizationState(lableUnit.c_str());
-}
-
-void IndoorWalkPresenter::SetPropertiesPageThirdTop()
-{
-    string lableUnit;
-    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitThirdTop();
-    SetCustomizationState(lableUnit.c_str());
-}
-
-void IndoorWalkPresenter::SetPropertiesPageThirdBottom()
-{
-    string lableUnit;
-    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitThirdBottom();
-    SetCustomizationState(lableUnit.c_str());
-}
-
-void IndoorWalkPresenter::SetPropertiesPageFourth()
-{
-    string lableUnit;
-    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitFourth();
-    SetCustomizationState(lableUnit.c_str());
-}
-
-void IndoorWalkPresenter::SetPropertiesFunc(const char *buttonId)
-{
-    if (buttonId == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetPropertiesFunc buttonId nullptr");
-        return;
-    }
-    unsigned int mapperSize = sizeof(g_pWalkPropertiesMapper) / sizeof(g_pWalkPropertiesMapper[0]);
-    for (unsigned int i = 0; i < mapperSize; i++) {
-        if (strcmp(buttonId, g_pWalkPropertiesMapper[i].viewId) == 0) {
-            (this->*(g_pWalkPropertiesMapper[i].Getfunc))();
-            return;
-        }
-    }
-}
-
-void IndoorWalkPresenter::SetPropertiesState(const char* id)
-{
-    if (id == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetPropertiesState id nullptr");
-        return;
-    }
-    SetPropertiesFunc(id);
-}
-
-void IndoorWalkPresenter::SetCustomizationState(const char *lableUnit)
-{
-    if (lableUnit == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetCustomizationState lableUnit nullptr");
-        return;
-    }
-    uint16_t customizationY = 0;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetCustomizationState %s", lableUnit);
-    CustomizationView *customizationView = CustomizationView::GetInstance();
-    if (customizationView == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetCustomizationState::customizationView new fail");
-        return;
-    }
-    customizationView->GetTimeRadio()->SetState(UICheckBox::UICheckBoxState::UNSELECTED);
-    customizationView->GetDistancesRadio()->SetState(UICheckBox::UICheckBoxState::UNSELECTED);
-    customizationView->GetHeartRadio()->SetState(UICheckBox::UICheckBoxState::UNSELECTED);
-    customizationView->GetSpeedRadio()->SetState(UICheckBox::UICheckBoxState::UNSELECTED);
-    customizationView->GetStepsRadio()->SetState(UICheckBox::UICheckBoxState::UNSELECTED);
-    if (strcmp(lableUnit, "时间") == 0) {
-        customizationView->GetTimeRadio()->SetState(UICheckBox::UICheckBoxState::SELECTED);
-        customizationY = customizationView->GetTimeView()->GetY();
-    } else if (strcmp(lableUnit, "距离(km)") == 0) {
-        customizationView->GetDistancesRadio()->SetState(UICheckBox::UICheckBoxState::SELECTED);
-        customizationY = customizationView->GetDistancesView()->GetY();
-    } else if (strcmp(lableUnit, "心率(bpm)") == 0) {
-        customizationView->GetHeartRadio()->SetState(UICheckBox::UICheckBoxState::SELECTED);
-        customizationY = customizationView->GetHeartView()->GetY();
-    } else if (strcmp(lableUnit, "速度(km/h)") == 0) {
-        customizationView->GetSpeedRadio()->SetState(UICheckBox::UICheckBoxState::SELECTED);
-        customizationY = customizationView->GetSpeedView()->GetY();
-    } else if (strcmp(lableUnit, "步数(steps)") == 0) {
-        customizationView->GetStepsRadio()->SetState(UICheckBox::UICheckBoxState::SELECTED);
-        customizationY = customizationView->GetStepsView()->GetY();
-    }
-    customizationView->GetCustomizationViewGroup()->ScrollBy(0, CENTERED_Y - customizationY);
-}
-
-void IndoorWalkPresenter::ModifiesTime()
-{
-    if (IndoorWalkModel::GetInstance()->DisplayMotionDuration() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkModel::GetInstance()->DisplayMotionDuration() nullptr");
-        return;
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstTop().c_str(), "时间") == 0) {
-        ModifiesPageFirstTop(IndoorWalkModel::GetInstance()->DisplayMotionDuration(), "时间");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstLeft().c_str(), "时间") == 0) {
-        ModifiesPageFirstLeft(IndoorWalkModel::GetInstance()->DisplayMotionDuration(), "时间");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstRight().c_str(), "时间") == 0) {
-        ModifiesPageFirstRight(IndoorWalkModel::GetInstance()->DisplayMotionDuration(), "时间");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstBottom().c_str(), "时间") == 0) {
-        ModifiesPageFirstBottom(IndoorWalkModel::GetInstance()->DisplayMotionDuration(), "时间");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondTop().c_str(), "时间") == 0) {
-        ModifiesPageSecondTop(IndoorWalkModel::GetInstance()->DisplayMotionDuration(), "时间");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondLeft().c_str(), "时间") == 0) {
-        ModifiesPageSecondLeft(IndoorWalkModel::GetInstance()->DisplayMotionDuration(), "时间");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondRight().c_str(), "时间") == 0) {
-        ModifiesPageSecondRight(IndoorWalkModel::GetInstance()->DisplayMotionDuration(), "时间");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitThirdTop().c_str(), "时间") == 0) {
-        ModifiesPageThirdTop(IndoorWalkModel::GetInstance()->DisplayMotionDuration(), "时间");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitThirdBottom().c_str(), "时间") == 0) {
-        ModifiesPageThirdBottom(IndoorWalkModel::GetInstance()->DisplayMotionDuration(), "时间");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFourth().c_str(), "时间") == 0) {
-        ModifiesPageFourth(IndoorWalkModel::GetInstance()->DisplayMotionDuration(), "时间");
-    }
-}
-
-void IndoorWalkPresenter::ModifiesDistances(float value)
-{
-    g_distancesChar.erase();
-    value -= IndoorWalkModel::GetInstance()->GetInitialDistances();
-    value /= CONVERSION_NUM;
-    string g_distancesChar = to_string(value).substr(0, to_string(value).find(".") + 3);
-
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstTop().c_str(), "距离(km)") == 0) {
-        ModifiesPageFirstTop(g_distancesChar.c_str(), "距离(km)");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstLeft().c_str(), "距离(km)") == 0) {
-        ModifiesPageFirstLeft(g_distancesChar.c_str(), "距离(km)");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstRight().c_str(), "距离(km)") == 0) {
-        ModifiesPageFirstRight(g_distancesChar.c_str(), "距离(km)");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstBottom().c_str(), "距离(km)") == 0) {
-        ModifiesPageFirstBottom(g_distancesChar.c_str(), "距离(km)");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondTop().c_str(), "距离(km)") == 0) {
-        ModifiesPageSecondTop(g_distancesChar.c_str(), "距离(km)");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondLeft().c_str(), "距离(km)") == 0) {
-        ModifiesPageSecondLeft(g_distancesChar.c_str(), "距离(km)");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondRight().c_str(), "距离(km)") == 0) {
-        ModifiesPageSecondRight(g_distancesChar.c_str(), "距离(km)");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitThirdTop().c_str(), "距离(km)") == 0) {
-        ModifiesPageThirdTop(g_distancesChar.c_str(), "距离(km)");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitThirdBottom().c_str(), "距离(km)") == 0) {
-        ModifiesPageThirdBottom(g_distancesChar.c_str(), "距离(km)");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFourth().c_str(), "距离(km)") == 0) {
-        ModifiesPageFourth(g_distancesChar.c_str(), "距离(km)");
-    }
-}
-
-void IndoorWalkPresenter::ModifiesHeartRate(int value)
-{
-    char heartRateChar[STEP_CHAR_NUM] = {0};
-    (void)sprintf_s(heartRateChar, STEP_CHAR_NUM, "%d", value);
-
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstTop().c_str(), "心率(bpm)") == 0) {
-        ModifiesPageFirstTop(heartRateChar, "心率(bpm)");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstLeft().c_str(), "心率(bpm)") == 0) {
-        ModifiesPageFirstLeft(heartRateChar, "心率(bpm)");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstRight().c_str(), "心率(bpm)") == 0) {
-        ModifiesPageFirstRight(heartRateChar, "心率(bpm)");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstBottom().c_str(), "心率(bpm)") == 0) {
-        ModifiesPageFirstBottom(heartRateChar, "心率(bpm)");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondTop().c_str(), "心率(bpm)") == 0) {
-        ModifiesPageSecondTop(heartRateChar, "心率(bpm)");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondLeft().c_str(), "心率(bpm)") == 0) {
-        ModifiesPageSecondLeft(heartRateChar, "心率(bpm)");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondRight().c_str(), "心率(bpm)") == 0) {
-        ModifiesPageSecondRight(heartRateChar, "心率(bpm)");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitThirdTop().c_str(), "心率(bpm)") == 0) {
-        ModifiesPageThirdTop(heartRateChar, "心率(bpm)");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitThirdBottom().c_str(), "心率(bpm)") == 0) {
-        ModifiesPageThirdBottom(heartRateChar, "心率(bpm)");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFourth().c_str(), "心率(bpm)") == 0) {
-        ModifiesPageFourth(heartRateChar, "心率(bpm)");
-    }
-}
-
-void IndoorWalkPresenter::ModifiesSteps(int step)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ModifiesSteps ");
-    char stepChar[STEP_CHAR_NUM] = {0};
-
-    (void)sprintf_s(stepChar, STEP_CHAR_NUM, "%d", step - IndoorWalkModel::GetInstance()->GetInitialStep());
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstTop().c_str(), "步数(steps)") == 0) {
-        ModifiesPageFirstTop(stepChar, "步数(steps)");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstLeft().c_str(), "步数(steps)") == 0) {
-        ModifiesPageFirstLeft(stepChar, "步数(steps)");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstRight().c_str(), "步数(steps)") == 0) {
-        ModifiesPageFirstRight(stepChar, "步数(steps)");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstBottom().c_str(), "步数(steps)") == 0) {
-        ModifiesPageFirstBottom(stepChar, "步数(steps)");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondTop().c_str(), "步数(steps)") == 0) {
-        ModifiesPageSecondTop(stepChar, "步数(steps)");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondLeft().c_str(), "步数(steps)") == 0) {
-        ModifiesPageSecondLeft(stepChar, "步数(steps)");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondRight().c_str(), "步数(steps)") == 0) {
-        ModifiesPageSecondRight(stepChar, "步数(steps)");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitThirdTop().c_str(), "步数(steps)") == 0) {
-        ModifiesPageThirdTop(stepChar, "步数(steps)");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitThirdBottom().c_str(), "步数(steps)") == 0) {
-        ModifiesPageThirdBottom(stepChar, "步数(steps)");
-    }
-    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFourth().c_str(), "步数(steps)") == 0) {
-        ModifiesPageFourth(stepChar, "步数(steps)");
-    }
-}
-
-void IndoorWalkPresenter::ModifiesPageFirstTop(const char *lable, const char *lableUnit)
-{
-    if ((lable == nullptr) || (lableUnit == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageFirstTop lable nullptr");
-        return;
-    }
-    MotionPageFirst *motionPageFirst = MotionPageFirst::GetInstance();
-    if (motionPageFirst == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageFirstTop:motionPageFirst new fail");
-        return;
-    }
-    motionPageFirst->GetLableFirstTop()->SetText(lable);
-    motionPageFirst->GetLableUnitFirstTop()->SetText(lableUnit);
-    IndoorWalkModel::GetInstance()->SetTextLableFirstTop(lable, lableUnit);
-}
-
-void IndoorWalkPresenter::ModifiesPageFirstLeft(const char *lable, const char *lableUnit)
-{
-    if ((lable == nullptr) || (lableUnit == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageFirstLeft lable nullptr");
-        return;
-    }
-    MotionPageFirst *motionPageFirst = MotionPageFirst::GetInstance();
-    if (motionPageFirst == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageFirstLeft:motionPageFirst new fail");
-        return;
-    }
-    motionPageFirst->GetLableFirstLeft()->SetText(lable);
-    motionPageFirst->GetLableUnitFirstLeft()->SetText(lableUnit);
-    IndoorWalkModel::GetInstance()->SetTextLableFirstLeft(lable, lableUnit);
-}
-
-void IndoorWalkPresenter::ModifiesPageFirstRight(const char *lable, const char *lableUnit)
-{
-    if ((lable == nullptr) || (lableUnit == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageFirstRight lable nullptr");
-        return;
-    }
-    MotionPageFirst *motionPageFirst = MotionPageFirst::GetInstance();
-    if (motionPageFirst == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageFirstRight:motionPageFirst new fail");
-        return;
-    }
-    motionPageFirst->GetLableFirstRight()->SetText(lable);
-    motionPageFirst->GetLableUnitFirstRight()->SetText(lableUnit);
-    IndoorWalkModel::GetInstance()->SetTextLableFirstRight(lable, lableUnit);
-}
-
-void IndoorWalkPresenter::ModifiesPageFirstBottom(const char *lable, const char *lableUnit)
-{
-    if ((lable == nullptr) || (lableUnit == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageFirstBottom lable nullptr");
-        return;
-    }
-    MotionPageFirst *motionPageFirst = MotionPageFirst::GetInstance();
-    if (motionPageFirst == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageFirstBottom:motionPageFirst new fail");
-        return;
-    }
-    motionPageFirst->GetLableFirstBottom()->SetText(lable);
-    motionPageFirst->GetLableUnitFirstBottom()->SetText(lableUnit);
-    IndoorWalkModel::GetInstance()->SetTextLableFirstBottom(lable, lableUnit);
-}
-
-void IndoorWalkPresenter::ModifiesPageSecondTop(const char *lable, const char *lableUnit)
-{
-    if ((lable == nullptr) || (lableUnit == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageSecondTop lable nullptr");
-        return;
-    }
-    MotionPageSecond *motionPageSecond = MotionPageSecond::GetInstance();
-    if (motionPageSecond == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageSecondTop:motionPageSecond new fail");
-        return;
-    }
-    motionPageSecond->GetLableSecondTop()->SetText(lable);
-    motionPageSecond->GetLableUnitSecondTop()->SetText(lableUnit);
-    IndoorWalkModel::GetInstance()->SetTextLableSecondTop(lable, lableUnit);
-}
-
-void IndoorWalkPresenter::ModifiesPageSecondLeft(const char *lable, const char *lableUnit)
-{
-    if ((lable == nullptr) || (lableUnit == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageSecondLeft lable nullptr");
-        return;
-    }
-    MotionPageSecond *motionPageSecond = MotionPageSecond::GetInstance();
-    if (motionPageSecond == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageSecondLeft:motionPageSecond new fail");
-        return;
-    }
-    motionPageSecond->GetLableSecondLeft()->SetText(lable);
-    motionPageSecond->GetLableUnitSecondLeft()->SetText(lableUnit);
-    IndoorWalkModel::GetInstance()->SetTextLableSecondLeft(lable, lableUnit);
-}
-
-void IndoorWalkPresenter::ModifiesPageSecondRight(const char *lable, const char *lableUnit)
-{
-    if ((lable == nullptr) || (lableUnit == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageSecondRight lable nullptr");
-        return;
-    }
-    MotionPageSecond *motionPageSecond = MotionPageSecond::GetInstance();
-    if (motionPageSecond == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageSecondRight:motionPageSecond new fail");
-        return;
-    }
-    motionPageSecond->GetLableSecondRight()->SetText(lable);
-    motionPageSecond->GetLableUnitSecondRight()->SetText(lableUnit);
-    IndoorWalkModel::GetInstance()->SetTextLableSecondRight(lable, lableUnit);
-}
-
-void IndoorWalkPresenter::ModifiesPageThirdTop(const char *lable, const char *lableUnit)
-{
-    if ((lable == nullptr) || (lableUnit == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageThirdTop lable nullptr");
-        return;
-    }
-    MotionPageThird *motionPageThird = MotionPageThird::GetInstance();
-    if (motionPageThird == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageThirdTop:motionPageThird new fail");
-        return;
-    }
-    motionPageThird->GetLableThirdTop()->SetText(lable);
-    motionPageThird->GetLableUnitThirdTop()->SetText(lableUnit);
-    IndoorWalkModel::GetInstance()->SetTextLableThirdTop(lable, lableUnit);
-}
-
-void IndoorWalkPresenter::ModifiesPageThirdBottom(const char *lable, const char *lableUnit)
-{
-    if ((lable == nullptr) || (lableUnit == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageThirdBottom lable nullptr");
-        return;
-    }
-    MotionPageThird *motionPageThird = MotionPageThird::GetInstance();
-    if (motionPageThird == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageThirdBottom:motionPageThird new fail");
-        return;
-    }
-    motionPageThird->GetLableThirdBottom()->SetText(lable);
-    motionPageThird->GetLableUnitThirdBottom()->SetText(lableUnit);
-    IndoorWalkModel::GetInstance()->SetTextLableThirdBottom(lable, lableUnit);
-}
-
-void IndoorWalkPresenter::ModifiesPageFourth(const char *lable, const char *lableUnit)
-{
-    if ((lable == nullptr) || (lableUnit == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageFourth lable nullptr");
-        return;
-    }
-    MotionPageFourth *motionPageFourth = MotionPageFourth::GetInstance();
-    if (motionPageFourth == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageFourth:motionPageFourth new fail");
-        return;
-    }
-    motionPageFourth->GetLableFourth()->SetText(lable);
-    motionPageFourth->GetLableUnitFourth()->SetText(lableUnit);
-    IndoorWalkModel::GetInstance()->SetTextLableFourth(lable, lableUnit);
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: IndoorWalk Presenter\r
+ * Create: 2022-03-02\r
+ */\r
+\r
+#include "IndoorWalkPresenter.h"\r
+#include "IndoorWalkView.h"\r
+#include "IndoorWalkModel.h"\r
+#include "drag_event.h"\r
+#include "UiConfig.h"\r
+#include "wearable_log.h"\r
+#include <sstream>\r
+#include "ActivityModel.h"\r
+\r
+namespace OHOS {\r
+static IndoorWalkPresenter *g_pIndoorWalkPresenter = nullptr;\r
+static string g_distancesChar;\r
+static constexpr uint16_t CENTERED_Y = 192;\r
+static constexpr uint32_t CONVERSION_NUM = 100000;\r
+static constexpr uint16_t STEP_CHAR_NUM = 255;\r
+\r
+struct IndoorWalkGetViewMapper {\r
+    const char *viewId;\r
+    void (IndoorWalkPresenter::*Getfunc)(const char* id);\r
+};\r
+\r
+static const IndoorWalkGetViewMapper g_pWalkGetViewMapper[] = {\r
+    {IMAGE_FIRST_TOP, &IndoorWalkPresenter::ImageOnClick},\r
+    {IMAGE_FIRST_LEFT, &IndoorWalkPresenter::ImageOnClick},\r
+    {IMAGE_FIRST_RIGHT, &IndoorWalkPresenter::ImageOnClick},\r
+    {IMAGE_FIRST_BOTTOM, &IndoorWalkPresenter::ImageOnClick},\r
+    {IMAGE_SECOND_TOP, &IndoorWalkPresenter::ImageOnClick},\r
+    {IMAGE_SECOND_LEFT, &IndoorWalkPresenter::ImageOnClick},\r
+    {IMAGE_SECOND_RIGHT, &IndoorWalkPresenter::ImageOnClick},\r
+    {IMAGE_THIRD_TOP, &IndoorWalkPresenter::ImageOnClick},\r
+    {IMAGE_THIRD_BOTTOM, &IndoorWalkPresenter::ImageOnClick},\r
+    {IMAGE_FOURTH, &IndoorWalkPresenter::ImageOnClick},\r
+    {INDOORWALK_CANCEL_BUTTON, &IndoorWalkPresenter::CancelButtonOnClick},\r
+    {INDOORWALK_CONFIRM_BUTTON, &IndoorWalkPresenter::ConfirmButtonOnClick},\r
+    {WALK_BUTTON, &IndoorWalkPresenter::WalkButtonOnClick},\r
+    {TIME_BUTTON, &IndoorWalkPresenter::TimeViewOnClick},\r
+    {DISTANCES_BUTTON, &IndoorWalkPresenter::DistancesViewOnClick},\r
+    {HEART_BUTTON, &IndoorWalkPresenter::HeartViewOnClick},\r
+    {SPEED_BUTTON, &IndoorWalkPresenter::SpeedViewOnClick},\r
+    {STEPS_BUTTON, &IndoorWalkPresenter::StepsViewOnClick},\r
+};\r
+\r
+void IndoorWalkPresenter::ImageOnClick(const char* id)\r
+{\r
+    if (id == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ImageOnClick id nullptr");\r
+        return;\r
+    }\r
+    IndoorWalkModel::GetInstance()->SetConnectionView(id);\r
+    IndoorWalkView::GetInstance()->ChangeView(INDOORWALKMOTIONVIEW, CUSTOMIZATIONVIEW);\r
+    SetPropertiesState(id);\r
+}\r
+\r
+void IndoorWalkPresenter::CancelButtonOnClick(const char* id)\r
+{\r
+    UNUSED(id);\r
+    IndoorWalkView::GetInstance()->ChangeView(INDOORWALKENDVIEW, INDOORWALKMOTIONVIEW);\r
+}\r
+\r
+void IndoorWalkPresenter::ConfirmButtonOnClick(const char* id)\r
+{\r
+    UNUSED(id);\r
+    NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
+}\r
+\r
+void IndoorWalkPresenter::WalkButtonOnClick(const char* id)\r
+{\r
+    UNUSED(id);\r
+    IndoorWalkView::GetInstance()->ChangeView(INDOORWALKPREPAREDVIEW, INDOORWALKMOTIONVIEW);\r
+}\r
+\r
+void IndoorWalkPresenter::TimeViewOnClick(const char* id)\r
+{\r
+    UNUSED(id);\r
+    string selectPropertiesid = IndoorWalkModel::GetInstance()->GetConnectionView();\r
+    ModifiesProperties(selectPropertiesid.c_str(), IndoorWalkModel::GetInstance()->DisplayMotionDuration(), "时间");\r
+}\r
+\r
+void IndoorWalkPresenter::DistancesViewOnClick(const char* id)\r
+{\r
+    UNUSED(id);\r
+    string selectPropertiesid = IndoorWalkModel::GetInstance()->GetConnectionView();\r
+    ModifiesProperties(selectPropertiesid.c_str(), "0.00", "距离(km)");\r
+}\r
+\r
+void IndoorWalkPresenter::HeartViewOnClick(const char* id)\r
+{\r
+    UNUSED(id);\r
+    string selectPropertiesid = IndoorWalkModel::GetInstance()->GetConnectionView();\r
+    ModifiesProperties(selectPropertiesid.c_str(), "--", "心率(bpm)");\r
+}\r
+\r
+void IndoorWalkPresenter::SpeedViewOnClick(const char* id)\r
+{\r
+    UNUSED(id);\r
+    string selectPropertiesid = IndoorWalkModel::GetInstance()->GetConnectionView();\r
+    ModifiesProperties(selectPropertiesid.c_str(), "0.00", "速度(km/h)");\r
+}\r
+\r
+void IndoorWalkPresenter::StepsViewOnClick(const char* id)\r
+{\r
+    UNUSED(id);\r
+    string selectPropertiesid = IndoorWalkModel::GetInstance()->GetConnectionView();\r
+    char stepChar[STEP_CHAR_NUM] = {0};\r
+    InitStepsValue(stepChar);\r
+    ModifiesProperties(selectPropertiesid.c_str(), stepChar, "步数(steps)");\r
+}\r
+\r
+void IndoorWalkPresenter::ClickFunc(const char *buttonId)\r
+{\r
+    if (buttonId == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ClickFunc buttonId nullptr");\r
+        return;\r
+    }\r
+    unsigned int mapperSize = sizeof(g_pWalkGetViewMapper) / sizeof(g_pWalkGetViewMapper[0]);\r
+    for (unsigned int i = 0; i < mapperSize; i++) {\r
+        if (strcmp(buttonId, g_pWalkGetViewMapper[i].viewId) == 0) {\r
+            (this->*(g_pWalkGetViewMapper[i].Getfunc))(buttonId);\r
+            return;\r
+        }\r
+    }\r
+    HidePageImageView();\r
+}\r
+\r
+IndoorWalkPresenter::IndoorWalkPresenter()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkPresenter::IndoorWalkPresenter");\r
+    g_pIndoorWalkPresenter = this;\r
+}\r
+\r
+IndoorWalkPresenter::~IndoorWalkPresenter()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkPresenter::~IndoorWalkPresenter");\r
+    g_pIndoorWalkPresenter = nullptr;\r
+}\r
+\r
+IndoorWalkPresenter *IndoorWalkPresenter::GetInstance()\r
+{\r
+    return g_pIndoorWalkPresenter;\r
+}\r
+\r
+void IndoorWalkPresenter::OnStart()\r
+{\r
+    Presenter<IndoorWalkView>::OnStart();\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkPresenter::On Start ");\r
+}\r
+\r
+void IndoorWalkPresenter::OnPause(void) {}\r
+\r
+void IndoorWalkPresenter::OnResume(void) {}\r
+\r
+void IndoorWalkPresenter::OnStop(void) {}\r
+\r
+void IndoorWalkPresenter::OnSwipe(UISwipeView &view)\r
+{\r
+    UNUSED(view);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkPresenter::OnSwipe");\r
+    HidePageImageView();\r
+    return;\r
+}\r
+\r
+bool IndoorWalkPresenter::OnClick(UIView& view, const ClickEvent& event)\r
+{\r
+    UNUSED(event);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "%s OnClick", view.GetViewId());\r
+    ClickFunc(view.GetViewId());\r
+    return true;\r
+}\r
+\r
+void IndoorWalkPresenter::InitStepsValue(char *steps)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkPresenter::InitStepsValue");\r
+    uint32_t stepValue;\r
+    int weekToday = ActivityModel::GetInstance()->GetWeekToday();\r
+    ActivityModel::GetInstance()->GetStepData((StepDataDistribute)weekToday, &stepValue);\r
+    std::ostringstream ostrHour;\r
+    ostrHour << stepValue - IndoorWalkModel::GetInstance()->GetInitialStep();\r
+    std::string weekStr = ostrHour.str();\r
+    uint32_t ret = memcpy_s(steps, STEP_CHAR_NUM, weekStr.c_str(), weekStr.length());\r
+    if (ret != EOK) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SaveStepToFile memcpy_s fail. ret=%d", ret);\r
+        return;\r
+    }\r
+}\r
+\r
+void IndoorWalkPresenter::HidePageImageView()\r
+{\r
+    MotionPageFirst *motionPageFirst = MotionPageFirst::GetInstance();\r
+    if (motionPageFirst == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HidePageImageView:motionPageFirst new fail");\r
+        return;\r
+    }\r
+    motionPageFirst->HideInitPageFirstImageView();\r
+    MotionPageSecond *motionPageSecond = MotionPageSecond::GetInstance();\r
+    if (motionPageSecond == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HidePageImageView:motionPageSecond new fail");\r
+        return;\r
+    }\r
+    motionPageSecond->HideInitPageSecondImageView();\r
+    MotionPageThird *motionPageThird = MotionPageThird::GetInstance();\r
+    if (motionPageThird == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HidePageImageView:motionPageThird new fail");\r
+        return;\r
+    }\r
+    motionPageThird->HideInitPageThirdImageView();\r
+    MotionPageFourth *motionPageFourth = MotionPageFourth::GetInstance();\r
+    if (motionPageFourth == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HidePageImageView:motionPageFourth new fail");\r
+        return;\r
+    }\r
+    motionPageFourth->HideInitPageFourthImageView();\r
+}\r
+\r
+struct IndoorWalkDragMapper {\r
+    const char *viewId;\r
+    void (IndoorWalkPresenter::*Getfunc)();\r
+};\r
+\r
+static const IndoorWalkDragMapper g_pWalkDragMapper[] = {\r
+    {INDOORWALK_PREPARED_VIEW, &IndoorWalkPresenter::DragIndoorWalkPreparedView},\r
+    {INDOORWALK_MOTION_VIEW, &IndoorWalkPresenter::DragIndoorWalkMotionView},\r
+    {INDOORWALK_END_VIEW, &IndoorWalkPresenter::DragIndoorWalkEndView},\r
+    {CUSTOMIZATION_VIEW, &IndoorWalkPresenter::DragCustomizationView},\r
+};\r
+\r
+void IndoorWalkPresenter::DragIndoorWalkPreparedView()\r
+{\r
+    NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
+}\r
+\r
+void IndoorWalkPresenter::DragIndoorWalkMotionView()\r
+{\r
+    IndoorWalkView::GetInstance()->ChangeView(INDOORWALKMOTIONVIEW, INDOORWALKENDVIEW);\r
+}\r
+\r
+void IndoorWalkPresenter::DragIndoorWalkEndView()\r
+{\r
+    IndoorWalkView::GetInstance()->ChangeView(INDOORWALKENDVIEW, INDOORWALKMOTIONVIEW);\r
+}\r
+\r
+void IndoorWalkPresenter::DragCustomizationView()\r
+{\r
+    IndoorWalkView::GetInstance()->ChangeView(CUSTOMIZATIONVIEW, INDOORWALKMOTIONVIEW);\r
+}\r
+\r
+void IndoorWalkPresenter::DragFunc(const char *buttonId)\r
+{\r
+    if (buttonId == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DragFunc nullptr");\r
+        return;\r
+    }\r
+    unsigned int mapperSize = sizeof(g_pWalkDragMapper) / sizeof(g_pWalkDragMapper[0]);\r
+    for (unsigned int i = 0; i < mapperSize; i++) {\r
+        if (strcmp(buttonId, g_pWalkDragMapper[i].viewId) == 0) {\r
+            (this->*(g_pWalkDragMapper[i].Getfunc))();\r
+            return;\r
+        }\r
+    }\r
+}\r
+\r
+bool IndoorWalkPresenter::OnDrag(UIView& view, const DragEvent& event)\r
+{\r
+    HidePageImageView();\r
+    if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {\r
+        DragFunc(view.GetViewId());\r
+    }\r
+    return true;\r
+}\r
+\r
+struct IndoorWalkLongPressMapper {\r
+    const char *viewId;\r
+    void (IndoorWalkPresenter::*Getfunc)();\r
+};\r
+\r
+static const IndoorWalkLongPressMapper g_pWalkLongPressMapper[] = {\r
+    {LABLE_FIRST_TOP, &IndoorWalkPresenter::LongPressPageFirst},\r
+    {LABLE_FIRST_LEFT, &IndoorWalkPresenter::LongPressPageFirst},\r
+    {LABLE_FIRST_RIGHT, &IndoorWalkPresenter::LongPressPageFirst},\r
+    {LABLE_FIRST_BOTTOM, &IndoorWalkPresenter::LongPressPageFirst},\r
+    {LABLE_SECOND_TOP, &IndoorWalkPresenter::LongPressPageSecond},\r
+    {LABLE_SECOND_LEFT, &IndoorWalkPresenter::LongPressPageSecond},\r
+    {LABLE_SECOND_RIGHT, &IndoorWalkPresenter::LongPressPageSecond},\r
+    {LABLE_THIRD_TOP, &IndoorWalkPresenter::LongPressPageThird},\r
+    {LABLE_THIRD_BOTTOM, &IndoorWalkPresenter::LongPressPageThird},\r
+    {LABLE_FOURTH, &IndoorWalkPresenter::LongPressPageFourth},\r
+};\r
+\r
+void IndoorWalkPresenter::LongPressPageFirst()\r
+{\r
+    MotionPageFirst *motionPageFirst = MotionPageFirst::GetInstance();\r
+    if (motionPageFirst == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnLongPress:motionPageFirst new fail");\r
+        return;\r
+    }\r
+    motionPageFirst->ShowInitPageFirstImageView();\r
+}\r
+\r
+void IndoorWalkPresenter::LongPressPageSecond()\r
+{\r
+    MotionPageSecond *motionPageSecond = MotionPageSecond::GetInstance();\r
+    if (motionPageSecond == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnLongPress:motionPageSecond new fail");\r
+        return;\r
+    }\r
+    motionPageSecond->ShowInitPageSecondImageView();\r
+}\r
+\r
+void IndoorWalkPresenter::LongPressPageThird()\r
+{\r
+    MotionPageThird *motionPageThird = MotionPageThird::GetInstance();\r
+    if (motionPageThird == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnLongPress:motionPageThird new fail");\r
+        return;\r
+    }\r
+    motionPageThird->ShowInitPageThirdImageView();\r
+}\r
+\r
+void IndoorWalkPresenter::LongPressPageFourth()\r
+{\r
+    MotionPageFourth *motionPageFourth = MotionPageFourth::GetInstance();\r
+    if (motionPageFourth == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnLongPress:motionPageFourth new fail");\r
+        return;\r
+    }\r
+    motionPageFourth->ShowInitPageFourthImageView();\r
+}\r
+\r
+void IndoorWalkPresenter::LongPressFunc(const char *buttonId)\r
+{\r
+    if (buttonId == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LongPressFunc nullptr");\r
+        return;\r
+    }\r
+    unsigned int mapperSize = sizeof(g_pWalkLongPressMapper) / sizeof(g_pWalkLongPressMapper[0]);\r
+    for (unsigned int i = 0; i < mapperSize; i++) {\r
+        if (strcmp(buttonId, g_pWalkLongPressMapper[i].viewId) == 0) {\r
+            (this->*(g_pWalkLongPressMapper[i].Getfunc))();\r
+            return;\r
+        }\r
+    }\r
+}\r
+\r
+bool IndoorWalkPresenter::OnLongPress(UIView& view, const LongPressEvent& event)\r
+{\r
+    UNUSED(event);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnLongPress OnLongPress");\r
+    LongPressFunc(view.GetViewId());\r
+    return true;\r
+}\r
+\r
+struct IndoorWalkModifiesMapper {\r
+    const char *viewId;\r
+    void (IndoorWalkPresenter::*Getfunc)(const char *lable, const char *lableUnit);\r
+};\r
+\r
+static const IndoorWalkModifiesMapper g_pWalkModifiesMapper[] = {\r
+    {IMAGE_FIRST_TOP, &IndoorWalkPresenter::ModifiesPageFirstTop},\r
+    {IMAGE_FIRST_LEFT, &IndoorWalkPresenter::ModifiesPageFirstLeft},\r
+    {IMAGE_FIRST_RIGHT, &IndoorWalkPresenter::ModifiesPageFirstRight},\r
+    {IMAGE_FIRST_BOTTOM, &IndoorWalkPresenter::ModifiesPageFirstBottom},\r
+    {IMAGE_SECOND_TOP, &IndoorWalkPresenter::ModifiesPageSecondTop},\r
+    {IMAGE_SECOND_LEFT, &IndoorWalkPresenter::ModifiesPageSecondLeft},\r
+    {IMAGE_SECOND_RIGHT, &IndoorWalkPresenter::ModifiesPageSecondRight},\r
+    {IMAGE_THIRD_TOP, &IndoorWalkPresenter::ModifiesPageThirdTop},\r
+    {IMAGE_THIRD_BOTTOM, &IndoorWalkPresenter::ModifiesPageThirdBottom},\r
+    {IMAGE_FOURTH, &IndoorWalkPresenter::ModifiesPageFourth},\r
+};\r
+\r
+void IndoorWalkPresenter::ModifiesFunc(const char *buttonId, const char *lable, const char *lableUnit)\r
+{\r
+    if ((buttonId == nullptr) || (lable == nullptr) || (lableUnit == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesFunc nullptr");\r
+        return;\r
+    }\r
+    unsigned int mapperSize = sizeof(g_pWalkModifiesMapper) / sizeof(g_pWalkModifiesMapper[0]);\r
+    for (unsigned int i = 0; i < mapperSize; i++) {\r
+        if (strcmp(buttonId, g_pWalkModifiesMapper[i].viewId) == 0) {\r
+            (this->*(g_pWalkModifiesMapper[i].Getfunc))(lable, lableUnit);\r
+            IndoorWalkView::GetInstance()->ChangeView(CUSTOMIZATIONVIEW, INDOORWALKMOTIONVIEW);\r
+            return;\r
+        }\r
+    }\r
+}\r
+\r
+void IndoorWalkPresenter::ModifiesProperties(const char* id, const char *lable, const char *lableUnit)\r
+{\r
+    if ((id == nullptr) || (lable == nullptr) || (lableUnit == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesProperties nullptr");\r
+        return;\r
+    }\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ModifiesProperties == %s", id);\r
+    HidePageImageView();\r
+    ModifiesFunc(id, lable, lableUnit);\r
+}\r
+\r
+struct IndoorWalkPropertiesMapper {\r
+    const char *viewId;\r
+    void (IndoorWalkPresenter::*Getfunc)();\r
+};\r
+\r
+static const IndoorWalkPropertiesMapper g_pWalkPropertiesMapper[] = {\r
+    {IMAGE_FIRST_TOP, &IndoorWalkPresenter::SetPropertiesPageFirstTop},\r
+    {IMAGE_FIRST_LEFT, &IndoorWalkPresenter::SetPropertiesPageFirstLeft},\r
+    {IMAGE_FIRST_RIGHT, &IndoorWalkPresenter::SetPropertiesPageFirstRight},\r
+    {IMAGE_FIRST_BOTTOM, &IndoorWalkPresenter::SetPropertiesPageFirstBottom},\r
+    {IMAGE_SECOND_TOP, &IndoorWalkPresenter::SetPropertiesPageSecondTop},\r
+    {IMAGE_SECOND_LEFT, &IndoorWalkPresenter::SetPropertiesPageSecondLeft},\r
+    {IMAGE_SECOND_RIGHT, &IndoorWalkPresenter::SetPropertiesPageSecondRight},\r
+    {IMAGE_THIRD_TOP, &IndoorWalkPresenter::SetPropertiesPageThirdTop},\r
+    {IMAGE_THIRD_BOTTOM, &IndoorWalkPresenter::SetPropertiesPageThirdBottom},\r
+    {IMAGE_FOURTH, &IndoorWalkPresenter::SetPropertiesPageFourth},\r
+};\r
+\r
+void IndoorWalkPresenter::SetPropertiesPageFirstTop()\r
+{\r
+    string lableUnit;\r
+    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitFirstTop();\r
+    SetCustomizationState(lableUnit.c_str());\r
+}\r
+\r
+void IndoorWalkPresenter::SetPropertiesPageFirstLeft()\r
+{\r
+    string lableUnit;\r
+    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitFirstLeft();\r
+    SetCustomizationState(lableUnit.c_str());\r
+}\r
+\r
+void IndoorWalkPresenter::SetPropertiesPageFirstRight()\r
+{\r
+    string lableUnit;\r
+    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitFirstRight();\r
+    SetCustomizationState(lableUnit.c_str());\r
+}\r
+\r
+void IndoorWalkPresenter::SetPropertiesPageFirstBottom()\r
+{\r
+    string lableUnit;\r
+    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitFirstBottom();\r
+    SetCustomizationState(lableUnit.c_str());\r
+}\r
+\r
+void IndoorWalkPresenter::SetPropertiesPageSecondTop()\r
+{\r
+    string lableUnit;\r
+    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitSecondTop();\r
+    SetCustomizationState(lableUnit.c_str());\r
+}\r
+\r
+void IndoorWalkPresenter::SetPropertiesPageSecondLeft()\r
+{\r
+    string lableUnit;\r
+    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitSecondLeft();\r
+    SetCustomizationState(lableUnit.c_str());\r
+}\r
+\r
+void IndoorWalkPresenter::SetPropertiesPageSecondRight()\r
+{\r
+    string lableUnit;\r
+    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitSecondRight();\r
+    SetCustomizationState(lableUnit.c_str());\r
+}\r
+\r
+void IndoorWalkPresenter::SetPropertiesPageThirdTop()\r
+{\r
+    string lableUnit;\r
+    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitThirdTop();\r
+    SetCustomizationState(lableUnit.c_str());\r
+}\r
+\r
+void IndoorWalkPresenter::SetPropertiesPageThirdBottom()\r
+{\r
+    string lableUnit;\r
+    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitThirdBottom();\r
+    SetCustomizationState(lableUnit.c_str());\r
+}\r
+\r
+void IndoorWalkPresenter::SetPropertiesPageFourth()\r
+{\r
+    string lableUnit;\r
+    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitFourth();\r
+    SetCustomizationState(lableUnit.c_str());\r
+}\r
+\r
+void IndoorWalkPresenter::SetPropertiesFunc(const char *buttonId)\r
+{\r
+    if (buttonId == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetPropertiesFunc buttonId nullptr");\r
+        return;\r
+    }\r
+    unsigned int mapperSize = sizeof(g_pWalkPropertiesMapper) / sizeof(g_pWalkPropertiesMapper[0]);\r
+    for (unsigned int i = 0; i < mapperSize; i++) {\r
+        if (strcmp(buttonId, g_pWalkPropertiesMapper[i].viewId) == 0) {\r
+            (this->*(g_pWalkPropertiesMapper[i].Getfunc))();\r
+            return;\r
+        }\r
+    }\r
+}\r
+\r
+void IndoorWalkPresenter::SetPropertiesState(const char* id)\r
+{\r
+    if (id == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetPropertiesState id nullptr");\r
+        return;\r
+    }\r
+    SetPropertiesFunc(id);\r
+}\r
+\r
+void IndoorWalkPresenter::SetCustomizationState(const char *lableUnit)\r
+{\r
+    if (lableUnit == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetCustomizationState lableUnit nullptr");\r
+        return;\r
+    }\r
+    uint16_t customizationY = 0;\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetCustomizationState %s", lableUnit);\r
+    CustomizationView *customizationView = CustomizationView::GetInstance();\r
+    if (customizationView == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetCustomizationState::customizationView new fail");\r
+        return;\r
+    }\r
+    customizationView->GetTimeRadio()->SetState(UICheckBox::UICheckBoxState::UNSELECTED);\r
+    customizationView->GetDistancesRadio()->SetState(UICheckBox::UICheckBoxState::UNSELECTED);\r
+    customizationView->GetHeartRadio()->SetState(UICheckBox::UICheckBoxState::UNSELECTED);\r
+    customizationView->GetSpeedRadio()->SetState(UICheckBox::UICheckBoxState::UNSELECTED);\r
+    customizationView->GetStepsRadio()->SetState(UICheckBox::UICheckBoxState::UNSELECTED);\r
+    if (strcmp(lableUnit, "时间") == 0) {\r
+        customizationView->GetTimeRadio()->SetState(UICheckBox::UICheckBoxState::SELECTED);\r
+        customizationY = customizationView->GetTimeView()->GetY();\r
+    } else if (strcmp(lableUnit, "距离(km)") == 0) {\r
+        customizationView->GetDistancesRadio()->SetState(UICheckBox::UICheckBoxState::SELECTED);\r
+        customizationY = customizationView->GetDistancesView()->GetY();\r
+    } else if (strcmp(lableUnit, "心率(bpm)") == 0) {\r
+        customizationView->GetHeartRadio()->SetState(UICheckBox::UICheckBoxState::SELECTED);\r
+        customizationY = customizationView->GetHeartView()->GetY();\r
+    } else if (strcmp(lableUnit, "速度(km/h)") == 0) {\r
+        customizationView->GetSpeedRadio()->SetState(UICheckBox::UICheckBoxState::SELECTED);\r
+        customizationY = customizationView->GetSpeedView()->GetY();\r
+    } else if (strcmp(lableUnit, "步数(steps)") == 0) {\r
+        customizationView->GetStepsRadio()->SetState(UICheckBox::UICheckBoxState::SELECTED);\r
+        customizationY = customizationView->GetStepsView()->GetY();\r
+    }\r
+    customizationView->GetCustomizationViewGroup()->ScrollBy(0, CENTERED_Y - customizationY);\r
+}\r
+\r
+void IndoorWalkPresenter::ModifiesTime()\r
+{\r
+    if (IndoorWalkModel::GetInstance()->DisplayMotionDuration() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkModel::GetInstance()->DisplayMotionDuration() nullptr");\r
+        return;\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstTop().c_str(), "时间") == 0) {\r
+        ModifiesPageFirstTop(IndoorWalkModel::GetInstance()->DisplayMotionDuration(), "时间");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstLeft().c_str(), "时间") == 0) {\r
+        ModifiesPageFirstLeft(IndoorWalkModel::GetInstance()->DisplayMotionDuration(), "时间");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstRight().c_str(), "时间") == 0) {\r
+        ModifiesPageFirstRight(IndoorWalkModel::GetInstance()->DisplayMotionDuration(), "时间");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstBottom().c_str(), "时间") == 0) {\r
+        ModifiesPageFirstBottom(IndoorWalkModel::GetInstance()->DisplayMotionDuration(), "时间");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondTop().c_str(), "时间") == 0) {\r
+        ModifiesPageSecondTop(IndoorWalkModel::GetInstance()->DisplayMotionDuration(), "时间");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondLeft().c_str(), "时间") == 0) {\r
+        ModifiesPageSecondLeft(IndoorWalkModel::GetInstance()->DisplayMotionDuration(), "时间");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondRight().c_str(), "时间") == 0) {\r
+        ModifiesPageSecondRight(IndoorWalkModel::GetInstance()->DisplayMotionDuration(), "时间");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitThirdTop().c_str(), "时间") == 0) {\r
+        ModifiesPageThirdTop(IndoorWalkModel::GetInstance()->DisplayMotionDuration(), "时间");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitThirdBottom().c_str(), "时间") == 0) {\r
+        ModifiesPageThirdBottom(IndoorWalkModel::GetInstance()->DisplayMotionDuration(), "时间");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFourth().c_str(), "时间") == 0) {\r
+        ModifiesPageFourth(IndoorWalkModel::GetInstance()->DisplayMotionDuration(), "时间");\r
+    }\r
+}\r
+\r
+void IndoorWalkPresenter::ModifiesDistances(float value)\r
+{\r
+    g_distancesChar.erase();\r
+    value -= IndoorWalkModel::GetInstance()->GetInitialDistances();\r
+    value /= CONVERSION_NUM;\r
+    string g_distancesChar = to_string(value).substr(0, to_string(value).find(".") + 3);\r
+\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstTop().c_str(), "距离(km)") == 0) {\r
+        ModifiesPageFirstTop(g_distancesChar.c_str(), "距离(km)");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstLeft().c_str(), "距离(km)") == 0) {\r
+        ModifiesPageFirstLeft(g_distancesChar.c_str(), "距离(km)");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstRight().c_str(), "距离(km)") == 0) {\r
+        ModifiesPageFirstRight(g_distancesChar.c_str(), "距离(km)");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstBottom().c_str(), "距离(km)") == 0) {\r
+        ModifiesPageFirstBottom(g_distancesChar.c_str(), "距离(km)");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondTop().c_str(), "距离(km)") == 0) {\r
+        ModifiesPageSecondTop(g_distancesChar.c_str(), "距离(km)");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondLeft().c_str(), "距离(km)") == 0) {\r
+        ModifiesPageSecondLeft(g_distancesChar.c_str(), "距离(km)");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondRight().c_str(), "距离(km)") == 0) {\r
+        ModifiesPageSecondRight(g_distancesChar.c_str(), "距离(km)");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitThirdTop().c_str(), "距离(km)") == 0) {\r
+        ModifiesPageThirdTop(g_distancesChar.c_str(), "距离(km)");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitThirdBottom().c_str(), "距离(km)") == 0) {\r
+        ModifiesPageThirdBottom(g_distancesChar.c_str(), "距离(km)");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFourth().c_str(), "距离(km)") == 0) {\r
+        ModifiesPageFourth(g_distancesChar.c_str(), "距离(km)");\r
+    }\r
+}\r
+\r
+void IndoorWalkPresenter::ModifiesHeartRate(int value)\r
+{\r
+    char heartRateChar[STEP_CHAR_NUM] = {0};\r
+    (void)sprintf_s(heartRateChar, STEP_CHAR_NUM, "%d", value);\r
+\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstTop().c_str(), "心率(bpm)") == 0) {\r
+        ModifiesPageFirstTop(heartRateChar, "心率(bpm)");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstLeft().c_str(), "心率(bpm)") == 0) {\r
+        ModifiesPageFirstLeft(heartRateChar, "心率(bpm)");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstRight().c_str(), "心率(bpm)") == 0) {\r
+        ModifiesPageFirstRight(heartRateChar, "心率(bpm)");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstBottom().c_str(), "心率(bpm)") == 0) {\r
+        ModifiesPageFirstBottom(heartRateChar, "心率(bpm)");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondTop().c_str(), "心率(bpm)") == 0) {\r
+        ModifiesPageSecondTop(heartRateChar, "心率(bpm)");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondLeft().c_str(), "心率(bpm)") == 0) {\r
+        ModifiesPageSecondLeft(heartRateChar, "心率(bpm)");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondRight().c_str(), "心率(bpm)") == 0) {\r
+        ModifiesPageSecondRight(heartRateChar, "心率(bpm)");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitThirdTop().c_str(), "心率(bpm)") == 0) {\r
+        ModifiesPageThirdTop(heartRateChar, "心率(bpm)");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitThirdBottom().c_str(), "心率(bpm)") == 0) {\r
+        ModifiesPageThirdBottom(heartRateChar, "心率(bpm)");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFourth().c_str(), "心率(bpm)") == 0) {\r
+        ModifiesPageFourth(heartRateChar, "心率(bpm)");\r
+    }\r
+}\r
+\r
+void IndoorWalkPresenter::ModifiesSteps(int step)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ModifiesSteps ");\r
+    char stepChar[STEP_CHAR_NUM] = {0};\r
+\r
+    (void)sprintf_s(stepChar, STEP_CHAR_NUM, "%d", step - IndoorWalkModel::GetInstance()->GetInitialStep());\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstTop().c_str(), "步数(steps)") == 0) {\r
+        ModifiesPageFirstTop(stepChar, "步数(steps)");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstLeft().c_str(), "步数(steps)") == 0) {\r
+        ModifiesPageFirstLeft(stepChar, "步数(steps)");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstRight().c_str(), "步数(steps)") == 0) {\r
+        ModifiesPageFirstRight(stepChar, "步数(steps)");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFirstBottom().c_str(), "步数(steps)") == 0) {\r
+        ModifiesPageFirstBottom(stepChar, "步数(steps)");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondTop().c_str(), "步数(steps)") == 0) {\r
+        ModifiesPageSecondTop(stepChar, "步数(steps)");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondLeft().c_str(), "步数(steps)") == 0) {\r
+        ModifiesPageSecondLeft(stepChar, "步数(steps)");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitSecondRight().c_str(), "步数(steps)") == 0) {\r
+        ModifiesPageSecondRight(stepChar, "步数(steps)");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitThirdTop().c_str(), "步数(steps)") == 0) {\r
+        ModifiesPageThirdTop(stepChar, "步数(steps)");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitThirdBottom().c_str(), "步数(steps)") == 0) {\r
+        ModifiesPageThirdBottom(stepChar, "步数(steps)");\r
+    }\r
+    if (strcmp(IndoorWalkModel::GetInstance()->GetTextLableUnitFourth().c_str(), "步数(steps)") == 0) {\r
+        ModifiesPageFourth(stepChar, "步数(steps)");\r
+    }\r
+}\r
+\r
+void IndoorWalkPresenter::ModifiesPageFirstTop(const char *lable, const char *lableUnit)\r
+{\r
+    if ((lable == nullptr) || (lableUnit == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageFirstTop lable nullptr");\r
+        return;\r
+    }\r
+    MotionPageFirst *motionPageFirst = MotionPageFirst::GetInstance();\r
+    if (motionPageFirst == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageFirstTop:motionPageFirst new fail");\r
+        return;\r
+    }\r
+    motionPageFirst->GetLableFirstTop()->SetText(lable);\r
+    motionPageFirst->GetLableUnitFirstTop()->SetText(lableUnit);\r
+    IndoorWalkModel::GetInstance()->SetTextLableFirstTop(lable, lableUnit);\r
+}\r
+\r
+void IndoorWalkPresenter::ModifiesPageFirstLeft(const char *lable, const char *lableUnit)\r
+{\r
+    if ((lable == nullptr) || (lableUnit == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageFirstLeft lable nullptr");\r
+        return;\r
+    }\r
+    MotionPageFirst *motionPageFirst = MotionPageFirst::GetInstance();\r
+    if (motionPageFirst == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageFirstLeft:motionPageFirst new fail");\r
+        return;\r
+    }\r
+    motionPageFirst->GetLableFirstLeft()->SetText(lable);\r
+    motionPageFirst->GetLableUnitFirstLeft()->SetText(lableUnit);\r
+    IndoorWalkModel::GetInstance()->SetTextLableFirstLeft(lable, lableUnit);\r
+}\r
+\r
+void IndoorWalkPresenter::ModifiesPageFirstRight(const char *lable, const char *lableUnit)\r
+{\r
+    if ((lable == nullptr) || (lableUnit == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageFirstRight lable nullptr");\r
+        return;\r
+    }\r
+    MotionPageFirst *motionPageFirst = MotionPageFirst::GetInstance();\r
+    if (motionPageFirst == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageFirstRight:motionPageFirst new fail");\r
+        return;\r
+    }\r
+    motionPageFirst->GetLableFirstRight()->SetText(lable);\r
+    motionPageFirst->GetLableUnitFirstRight()->SetText(lableUnit);\r
+    IndoorWalkModel::GetInstance()->SetTextLableFirstRight(lable, lableUnit);\r
+}\r
+\r
+void IndoorWalkPresenter::ModifiesPageFirstBottom(const char *lable, const char *lableUnit)\r
+{\r
+    if ((lable == nullptr) || (lableUnit == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageFirstBottom lable nullptr");\r
+        return;\r
+    }\r
+    MotionPageFirst *motionPageFirst = MotionPageFirst::GetInstance();\r
+    if (motionPageFirst == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageFirstBottom:motionPageFirst new fail");\r
+        return;\r
+    }\r
+    motionPageFirst->GetLableFirstBottom()->SetText(lable);\r
+    motionPageFirst->GetLableUnitFirstBottom()->SetText(lableUnit);\r
+    IndoorWalkModel::GetInstance()->SetTextLableFirstBottom(lable, lableUnit);\r
+}\r
+\r
+void IndoorWalkPresenter::ModifiesPageSecondTop(const char *lable, const char *lableUnit)\r
+{\r
+    if ((lable == nullptr) || (lableUnit == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageSecondTop lable nullptr");\r
+        return;\r
+    }\r
+    MotionPageSecond *motionPageSecond = MotionPageSecond::GetInstance();\r
+    if (motionPageSecond == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageSecondTop:motionPageSecond new fail");\r
+        return;\r
+    }\r
+    motionPageSecond->GetLableSecondTop()->SetText(lable);\r
+    motionPageSecond->GetLableUnitSecondTop()->SetText(lableUnit);\r
+    IndoorWalkModel::GetInstance()->SetTextLableSecondTop(lable, lableUnit);\r
+}\r
+\r
+void IndoorWalkPresenter::ModifiesPageSecondLeft(const char *lable, const char *lableUnit)\r
+{\r
+    if ((lable == nullptr) || (lableUnit == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageSecondLeft lable nullptr");\r
+        return;\r
+    }\r
+    MotionPageSecond *motionPageSecond = MotionPageSecond::GetInstance();\r
+    if (motionPageSecond == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageSecondLeft:motionPageSecond new fail");\r
+        return;\r
+    }\r
+    motionPageSecond->GetLableSecondLeft()->SetText(lable);\r
+    motionPageSecond->GetLableUnitSecondLeft()->SetText(lableUnit);\r
+    IndoorWalkModel::GetInstance()->SetTextLableSecondLeft(lable, lableUnit);\r
+}\r
+\r
+void IndoorWalkPresenter::ModifiesPageSecondRight(const char *lable, const char *lableUnit)\r
+{\r
+    if ((lable == nullptr) || (lableUnit == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageSecondRight lable nullptr");\r
+        return;\r
+    }\r
+    MotionPageSecond *motionPageSecond = MotionPageSecond::GetInstance();\r
+    if (motionPageSecond == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageSecondRight:motionPageSecond new fail");\r
+        return;\r
+    }\r
+    motionPageSecond->GetLableSecondRight()->SetText(lable);\r
+    motionPageSecond->GetLableUnitSecondRight()->SetText(lableUnit);\r
+    IndoorWalkModel::GetInstance()->SetTextLableSecondRight(lable, lableUnit);\r
+}\r
+\r
+void IndoorWalkPresenter::ModifiesPageThirdTop(const char *lable, const char *lableUnit)\r
+{\r
+    if ((lable == nullptr) || (lableUnit == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageThirdTop lable nullptr");\r
+        return;\r
+    }\r
+    MotionPageThird *motionPageThird = MotionPageThird::GetInstance();\r
+    if (motionPageThird == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageThirdTop:motionPageThird new fail");\r
+        return;\r
+    }\r
+    motionPageThird->GetLableThirdTop()->SetText(lable);\r
+    motionPageThird->GetLableUnitThirdTop()->SetText(lableUnit);\r
+    IndoorWalkModel::GetInstance()->SetTextLableThirdTop(lable, lableUnit);\r
+}\r
+\r
+void IndoorWalkPresenter::ModifiesPageThirdBottom(const char *lable, const char *lableUnit)\r
+{\r
+    if ((lable == nullptr) || (lableUnit == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageThirdBottom lable nullptr");\r
+        return;\r
+    }\r
+    MotionPageThird *motionPageThird = MotionPageThird::GetInstance();\r
+    if (motionPageThird == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageThirdBottom:motionPageThird new fail");\r
+        return;\r
+    }\r
+    motionPageThird->GetLableThirdBottom()->SetText(lable);\r
+    motionPageThird->GetLableUnitThirdBottom()->SetText(lableUnit);\r
+    IndoorWalkModel::GetInstance()->SetTextLableThirdBottom(lable, lableUnit);\r
+}\r
+\r
+void IndoorWalkPresenter::ModifiesPageFourth(const char *lable, const char *lableUnit)\r
+{\r
+    if ((lable == nullptr) || (lableUnit == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageFourth lable nullptr");\r
+        return;\r
+    }\r
+    MotionPageFourth *motionPageFourth = MotionPageFourth::GetInstance();\r
+    if (motionPageFourth == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ModifiesPageFourth:motionPageFourth new fail");\r
+        return;\r
+    }\r
+    motionPageFourth->GetLableFourth()->SetText(lable);\r
+    motionPageFourth->GetLableUnitFourth()->SetText(lableUnit);\r
+    IndoorWalkModel::GetInstance()->SetTextLableFourth(lable, lableUnit);\r
+}\r
 }
\ No newline at end of file
index 77610a1..23bd608 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: IndoorWalk View
- * Create: 2022-03-02
- */
-
-#include "IndoorWalkView.h"
-#include "IndoorWalkModel.h"
-#include "wearable_log.h"
-#include "UiConfig.h"
-
-namespace OHOS {
-static IndoorWalkView *g_pIndoorWalkView{nullptr};
-
-IndoorWalkView::IndoorWalkView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkView::IndoorWalkView");
-    preProcessView[INDOORWALKPREPAREDVIEW] = &IndoorWalkView::ChangeIndoorWalkPreparedView;
-    preProcessView[INDOORWALKMOTIONVIEW] = &IndoorWalkView::ChangeIndoorWalkMotionView;
-    preProcessView[CUSTOMIZATIONVIEW] = &IndoorWalkView::ChangeCustomizationView;
-    preProcessView[INDOORWALKENDVIEW] = &IndoorWalkView::ChangeIndoorWalkEndView;
-
-    g_pIndoorWalkView = this;
-}
-
-IndoorWalkView::~IndoorWalkView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkView::~IndoorWalkView");
-    g_pIndoorWalkView = nullptr;
-}
-
-IndoorWalkView *IndoorWalkView::GetInstance()
-{
-    return g_pIndoorWalkView;
-}
-
-void IndoorWalkView::OnStart()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkView::~OnStart");
-    View<IndoorWalkPresenter>::OnStart();
-    BaseView::RootView(Color::Black().full);
-
-    ChangeView(INDOORWALK_MAX, INDOORWALKPREPAREDVIEW);
-    RootView::GetInstance()->Invalidate();
-    return;
-}
-
-void IndoorWalkView::OnSetUpView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkView::~OnSetUpView");
-    View<IndoorWalkPresenter>::OnSetUpView();
-    Draw();
-}
-
-void IndoorWalkView::OnTearDownView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkView::~OnTearDownView");
-    View<IndoorWalkPresenter>::OnTearDownView();
-    return;
-}
-
-void IndoorWalkView::OnStop()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkView::~OnStop");
-    DisableIndoorWalkTimer();
-    IndoorWalkModel::GetInstance()->CloseDistancesSensor();
-    View<IndoorWalkPresenter>::OnStop();
-    if (container_ != nullptr) {
-        container_->RemoveAll();
-        delete container_;
-        container_ = nullptr;
-    }
-    RootView::GetInstance()->ClearOnKeyActListener();
-    RootView::GetInstance()->RemoveAll();
-    return;
-}
-
-bool IndoorWalkView::ChangeIndoorWalkPreparedView(int16_t hideView, int16_t thisView)
-{
-    UNUSED(hideView);
-    if (container[thisView] == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeIndoorWalkPreparedView");
-        indoorWalkPreparedView = new IndoorWalkPreparedView();
-        if (indoorWalkPreparedView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "indoorWalkPreparedView new fail");
-            return false;
-        }
-        // init view
-        UIViewGroup *group = indoorWalkPreparedView->InitShowUpView();
-        if (group == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");
-            return false;
-        }
-        container[thisView] = group;
-        indoorWalkPreparedView->IndoorWalkHeartbeatStart();
-        RootView::GetInstance()->Add(container[thisView]);
-    }
-    return true;
-}
-
-bool IndoorWalkView::ChangeIndoorWalkMotionView(int16_t hideView, int16_t thisView)
-{
-    UNUSED(hideView);
-    if (container[thisView] == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeIndoorWalkMotionView");
-        indoorWalkMotionView = new IndoorWalkMotionView();
-        if (indoorWalkMotionView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "indoorWalkMotionView new fail");
-            return false;
-        }
-        // init view
-        UIViewGroup *group = indoorWalkMotionView->WalkMotionViewInit();
-        if (group == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");
-            return false;
-        }
-        container[thisView] = group;
-        RootView::GetInstance()->Add(container[thisView]);
-    }
-    return true;
-}
-
-bool IndoorWalkView::ChangeCustomizationView(int16_t hideView, int16_t thisView)
-{
-    UNUSED(hideView);
-    if (container[thisView] == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeCustomizationView");
-        customizationView = new CustomizationView();
-        if (customizationView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "customizationView new fail");
-            return false;
-        }
-        // init view
-        UIViewGroup *group = customizationView->InitPropertiesView();
-        if (group == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");
-            return false;
-        }
-        container[thisView] = group;
-        RootView::GetInstance()->Add(container[thisView]);
-    }
-    return true;
-}
-
-bool IndoorWalkView::ChangeIndoorWalkEndView(int16_t hideView, int16_t thisView)
-{
-    UNUSED(hideView);
-    if (container[thisView] == nullptr) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeIndoorWalkEndView");
-        indoorWalkEndView = new IndoorWalkEndView();
-        if (indoorWalkEndView == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "indoorWalkEndView new fail");
-            return false;
-        }
-        // init view
-        UIViewGroup *group = indoorWalkEndView->InitShowUpView();
-        if (group == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");
-            return false;
-        }
-        container[thisView] = group;
-        RootView::GetInstance()->Add(container[thisView]);
-    }
-    return true;
-}
-
-bool IndoorWalkView::CheckViewParam(int16_t hideView, int16_t showView)
-{
-    if (showView < 0 || showView >= INDOORWALK_MAX) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkView::CheckViewParam showView err.");
-        return false;
-    }
-
-    if (hideView < 0 || hideView > INDOORWALK_MAX) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkView::CheckViewParam hideView err.");
-        return false;
-    }
-
-    return true;
-}
-
-void IndoorWalkView::ChangeView(int16_t hideView, int16_t showView)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkView::ChangeView %d, %d", hideView, showView);
-
-    if (CheckViewParam(hideView, showView) == false) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkView::CheckViewParam failed.");
-        return;
-    }
-
-    PreprosssChangeView tmpPreProcessView = preProcessView[showView];
-
-    if ((this->*tmpPreProcessView)(hideView, showView) == false) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkView::ChangeView %d %dfailed", showView, hideView);
-        return;
-    }
-    if (hideView != INDOORWALK_MAX) {
-        if (container[hideView] == nullptr) {
-            return;
-        }
-        container[hideView]->SetVisible(false);
-    }
-    container[showView]->SetVisible(true);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkView:: ChangeView end!!!%d", showView);
-    RootView::GetInstance()->Invalidate();
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: IndoorWalk View\r
+ * Create: 2022-03-02\r
+ */\r
+\r
+#include "IndoorWalkView.h"\r
+#include "IndoorWalkModel.h"\r
+#include "wearable_log.h"\r
+#include "UiConfig.h"\r
+\r
+namespace OHOS {\r
+static IndoorWalkView *g_pIndoorWalkView{nullptr};\r
+\r
+IndoorWalkView::IndoorWalkView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkView::IndoorWalkView");\r
+    preProcessView[INDOORWALKPREPAREDVIEW] = &IndoorWalkView::ChangeIndoorWalkPreparedView;\r
+    preProcessView[INDOORWALKMOTIONVIEW] = &IndoorWalkView::ChangeIndoorWalkMotionView;\r
+    preProcessView[CUSTOMIZATIONVIEW] = &IndoorWalkView::ChangeCustomizationView;\r
+    preProcessView[INDOORWALKENDVIEW] = &IndoorWalkView::ChangeIndoorWalkEndView;\r
+\r
+    g_pIndoorWalkView = this;\r
+}\r
+\r
+IndoorWalkView::~IndoorWalkView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkView::~IndoorWalkView");\r
+    g_pIndoorWalkView = nullptr;\r
+}\r
+\r
+IndoorWalkView *IndoorWalkView::GetInstance()\r
+{\r
+    return g_pIndoorWalkView;\r
+}\r
+\r
+void IndoorWalkView::OnStart()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkView::~OnStart");\r
+    View<IndoorWalkPresenter>::OnStart();\r
+    BaseView::RootView(Color::Black().full);\r
+\r
+    ChangeView(INDOORWALK_MAX, INDOORWALKPREPAREDVIEW);\r
+    RootView::GetInstance()->Invalidate();\r
+    return;\r
+}\r
+\r
+void IndoorWalkView::OnSetUpView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkView::~OnSetUpView");\r
+    View<IndoorWalkPresenter>::OnSetUpView();\r
+    Draw();\r
+}\r
+\r
+void IndoorWalkView::OnTearDownView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkView::~OnTearDownView");\r
+    View<IndoorWalkPresenter>::OnTearDownView();\r
+    return;\r
+}\r
+\r
+void IndoorWalkView::OnStop()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkView::~OnStop");\r
+    DisableIndoorWalkTimer();\r
+    IndoorWalkModel::GetInstance()->CloseDistancesSensor();\r
+    View<IndoorWalkPresenter>::OnStop();\r
+    if (container_ != nullptr) {\r
+        container_->RemoveAll();\r
+        delete container_;\r
+        container_ = nullptr;\r
+    }\r
+    RootView::GetInstance()->ClearOnKeyActListener();\r
+    RootView::GetInstance()->RemoveAll();\r
+    return;\r
+}\r
+\r
+bool IndoorWalkView::ChangeIndoorWalkPreparedView(int16_t hideView, int16_t thisView)\r
+{\r
+    UNUSED(hideView);\r
+    if (container[thisView] == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeIndoorWalkPreparedView");\r
+        indoorWalkPreparedView = new IndoorWalkPreparedView();\r
+        if (indoorWalkPreparedView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "indoorWalkPreparedView new fail");\r
+            return false;\r
+        }\r
+        // init view\r
+        UIViewGroup *group = indoorWalkPreparedView->InitShowUpView();\r
+        if (group == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
+            return false;\r
+        }\r
+        container[thisView] = group;\r
+        indoorWalkPreparedView->IndoorWalkHeartbeatStart();\r
+        RootView::GetInstance()->Add(container[thisView]);\r
+    }\r
+    return true;\r
+}\r
+\r
+bool IndoorWalkView::ChangeIndoorWalkMotionView(int16_t hideView, int16_t thisView)\r
+{\r
+    UNUSED(hideView);\r
+    if (container[thisView] == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeIndoorWalkMotionView");\r
+        indoorWalkMotionView = new IndoorWalkMotionView();\r
+        if (indoorWalkMotionView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "indoorWalkMotionView new fail");\r
+            return false;\r
+        }\r
+        // init view\r
+        UIViewGroup *group = indoorWalkMotionView->WalkMotionViewInit();\r
+        if (group == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
+            return false;\r
+        }\r
+        container[thisView] = group;\r
+        RootView::GetInstance()->Add(container[thisView]);\r
+    }\r
+    return true;\r
+}\r
+\r
+bool IndoorWalkView::ChangeCustomizationView(int16_t hideView, int16_t thisView)\r
+{\r
+    UNUSED(hideView);\r
+    if (container[thisView] == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeCustomizationView");\r
+        customizationView = new CustomizationView();\r
+        if (customizationView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "customizationView new fail");\r
+            return false;\r
+        }\r
+        // init view\r
+        UIViewGroup *group = customizationView->InitPropertiesView();\r
+        if (group == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
+            return false;\r
+        }\r
+        container[thisView] = group;\r
+        RootView::GetInstance()->Add(container[thisView]);\r
+    }\r
+    return true;\r
+}\r
+\r
+bool IndoorWalkView::ChangeIndoorWalkEndView(int16_t hideView, int16_t thisView)\r
+{\r
+    UNUSED(hideView);\r
+    if (container[thisView] == nullptr) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ChangeIndoorWalkEndView");\r
+        indoorWalkEndView = new IndoorWalkEndView();\r
+        if (indoorWalkEndView == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "indoorWalkEndView new fail");\r
+            return false;\r
+        }\r
+        // init view\r
+        UIViewGroup *group = indoorWalkEndView->InitShowUpView();\r
+        if (group == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "group nullptr fail");\r
+            return false;\r
+        }\r
+        container[thisView] = group;\r
+        RootView::GetInstance()->Add(container[thisView]);\r
+    }\r
+    return true;\r
+}\r
+\r
+bool IndoorWalkView::CheckViewParam(int16_t hideView, int16_t showView)\r
+{\r
+    if (showView < 0 || showView >= INDOORWALK_MAX) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkView::CheckViewParam showView err.");\r
+        return false;\r
+    }\r
+\r
+    if (hideView < 0 || hideView > INDOORWALK_MAX) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkView::CheckViewParam hideView err.");\r
+        return false;\r
+    }\r
+\r
+    return true;\r
+}\r
+\r
+void IndoorWalkView::ChangeView(int16_t hideView, int16_t showView)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkView::ChangeView %d, %d", hideView, showView);\r
+\r
+    if (CheckViewParam(hideView, showView) == false) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkView::CheckViewParam failed.");\r
+        return;\r
+    }\r
+\r
+    PreprosssChangeView tmpPreProcessView = preProcessView[showView];\r
+\r
+    if ((this->*tmpPreProcessView)(hideView, showView) == false) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "IndoorWalkView::ChangeView %d %dfailed", showView, hideView);\r
+        return;\r
+    }\r
+    if (hideView != INDOORWALK_MAX) {\r
+        if (container[hideView] == nullptr) {\r
+            return;\r
+        }\r
+        container[hideView]->SetVisible(false);\r
+    }\r
+    container[showView]->SetVisible(true);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "IndoorWalkView:: ChangeView end!!!%d", showView);\r
+    RootView::GetInstance()->Invalidate();\r
+}\r
 }
\ No newline at end of file
index 6d7787e..8a5be9c 100644 (file)
@@ -1,97 +1,97 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: Motion PageFifth View
- * Create: 2022-03-02
- */
-#include "MotionPageFifth.h"
-#include "wearable_log.h"
-#include "UiConfig.h"
-
-namespace OHOS {
-static constexpr uint16_t LABELS_X = 137;
-static constexpr uint16_t LABELS_Y = 62;
-static constexpr uint16_t LABELS_W = 180;
-static constexpr uint16_t LABELS_H = 60;
-static constexpr uint16_t IMAGE_X1 = 42;
-static constexpr uint16_t IMAGE_X2 = 242;
-static constexpr uint16_t IMAGE_Y = 142;
-static MotionPageFifth *g_pMotionPageFifth{nullptr};
-
-MotionPageFifth::MotionPageFifth()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageFifth::MotionPageFifth");
-    g_pMotionPageFifth = this;
-}
-
-MotionPageFifth::~MotionPageFifth()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageFifth::~MotionPageFifth");
-    RemoveAll();
-    delete lableFifth;
-    lableFifth = nullptr;
-    delete imageFifthLeft;
-    imageFifthLeft = nullptr;
-    delete imageFifthRight;
-    imageFifthRight = nullptr;
-    g_pMotionPageFifth = nullptr;
-}
-
-MotionPageFifth *MotionPageFifth::GetInstance()
-{
-    return g_pMotionPageFifth;
-}
-
-bool MotionPageFifth::InitPageFifthLableView()
-{
-    lableFifth = new UILabel();
-    if (lableFifth == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableFifth new fail");
-        return false;
-    }
-    lableFifth->SetPosition(LABELS_X, LABELS_Y, LABELS_W, LABELS_H);
-    lableFifth->SetText("训练压力");
-    lableFifth->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40 : font data
-    lableFifth->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);
-    lableFifth->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,
-        UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-    Add(lableFifth);
-    return true;
-}
-
-bool MotionPageFifth::InitPageFifthImageView()
-{
-    imageFifthLeft = new UIImageView();
-    if (imageFifthLeft == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "imageFifthLeft new fail");
-        return false;
-    }
-    imageFifthLeft->SetPosition(IMAGE_X1, IMAGE_Y);
-    imageFifthLeft->SetSrc(PNG_AEROBIC_IMAGE);
-    Add(imageFifthLeft);
-
-    imageFifthRight = new UIImageView();
-    if (imageFifthRight == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "imageFifthRight new fail");
-        return false;
-    }
-    imageFifthRight->SetPosition(IMAGE_X2, IMAGE_Y);
-    imageFifthRight->SetSrc(PNG_ANAEROBIC_IMAGE);
-    Add(imageFifthRight);
-    return true;
-}
-
-bool MotionPageFifth::InitView(void *caller)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageFifth InitView %p", caller);
-    bool ret;
-    ret = InitPageFifthLableView();
-    if (ret == false) {
-        return false;
-    }
-    ret = InitPageFifthImageView();
-    if (ret == false) {
-        return false;
-    }
-    return true;
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: Motion PageFifth View\r
+ * Create: 2022-03-02\r
+ */\r
+#include "MotionPageFifth.h"\r
+#include "wearable_log.h"\r
+#include "UiConfig.h"\r
+\r
+namespace OHOS {\r
+static constexpr uint16_t LABELS_X = 137;\r
+static constexpr uint16_t LABELS_Y = 62;\r
+static constexpr uint16_t LABELS_W = 180;\r
+static constexpr uint16_t LABELS_H = 60;\r
+static constexpr uint16_t IMAGE_X1 = 42;\r
+static constexpr uint16_t IMAGE_X2 = 242;\r
+static constexpr uint16_t IMAGE_Y = 142;\r
+static MotionPageFifth *g_pMotionPageFifth{nullptr};\r
+\r
+MotionPageFifth::MotionPageFifth()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageFifth::MotionPageFifth");\r
+    g_pMotionPageFifth = this;\r
+}\r
+\r
+MotionPageFifth::~MotionPageFifth()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageFifth::~MotionPageFifth");\r
+    RemoveAll();\r
+    delete lableFifth;\r
+    lableFifth = nullptr;\r
+    delete imageFifthLeft;\r
+    imageFifthLeft = nullptr;\r
+    delete imageFifthRight;\r
+    imageFifthRight = nullptr;\r
+    g_pMotionPageFifth = nullptr;\r
+}\r
+\r
+MotionPageFifth *MotionPageFifth::GetInstance()\r
+{\r
+    return g_pMotionPageFifth;\r
+}\r
+\r
+bool MotionPageFifth::InitPageFifthLableView()\r
+{\r
+    lableFifth = new UILabel();\r
+    if (lableFifth == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableFifth new fail");\r
+        return false;\r
+    }\r
+    lableFifth->SetPosition(LABELS_X, LABELS_Y, LABELS_W, LABELS_H);\r
+    lableFifth->SetText("训练压力");\r
+    lableFifth->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40 : font data\r
+    lableFifth->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
+    lableFifth->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+        UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+    Add(lableFifth);\r
+    return true;\r
+}\r
+\r
+bool MotionPageFifth::InitPageFifthImageView()\r
+{\r
+    imageFifthLeft = new UIImageView();\r
+    if (imageFifthLeft == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "imageFifthLeft new fail");\r
+        return false;\r
+    }\r
+    imageFifthLeft->SetPosition(IMAGE_X1, IMAGE_Y);\r
+    imageFifthLeft->SetSrc(PNG_AEROBIC_IMAGE);\r
+    Add(imageFifthLeft);\r
+\r
+    imageFifthRight = new UIImageView();\r
+    if (imageFifthRight == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "imageFifthRight new fail");\r
+        return false;\r
+    }\r
+    imageFifthRight->SetPosition(IMAGE_X2, IMAGE_Y);\r
+    imageFifthRight->SetSrc(PNG_ANAEROBIC_IMAGE);\r
+    Add(imageFifthRight);\r
+    return true;\r
+}\r
+\r
+bool MotionPageFifth::InitView(void *caller)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageFifth InitView %p", caller);\r
+    bool ret;\r
+    ret = InitPageFifthLableView();\r
+    if (ret == false) {\r
+        return false;\r
+    }\r
+    ret = InitPageFifthImageView();\r
+    if (ret == false) {\r
+        return false;\r
+    }\r
+    return true;\r
+}\r
 }
\ No newline at end of file
index 6466b84..02dbf59 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: Motion PageFirst View
- * Create: 2022-03-02
- */
-
-#include "MotionPageFirst.h"
-#include "IndoorWalkPresenter.h"
-#include "IndoorWalkModel.h"
-#include "wearable_log.h"
-#include "UiConfig.h"
-
-namespace OHOS {
-static constexpr uint16_t TOP_X = 92;
-static constexpr uint16_t TOP_Y = 92;
-static constexpr uint16_t TOP_W = 270;
-static constexpr uint16_t LEFT_X = 47;
-static constexpr uint16_t LEFT_Y = 192;
-static constexpr uint16_t LEFT_W = 180;
-static constexpr uint16_t RIGHT_X = 227;
-static constexpr uint16_t RIGHT_Y = 192;
-static constexpr uint16_t RIGHT_W = 180;
-static constexpr uint16_t BOTTOM_X = 92;
-static constexpr uint16_t BOTTOM_Y = 292;
-static constexpr uint16_t BOTTOM_W = 270;
-static constexpr uint16_t LABLE_H = 70;
-static constexpr uint16_t UNIT_TOP_Y = 151;
-static constexpr uint16_t UNIT_LEFT_Y = 250;
-static constexpr uint16_t UNIT_RIGHT_Y = 250;
-static constexpr uint16_t UNIT_BOTTOM_Y = 350;
-static constexpr uint16_t UNIT_H = 50;
-
-static MotionPageFirst *g_pMotionPageFirst{nullptr};
-
-MotionPageFirst::MotionPageFirst()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageFirst::MotionPageFirst");
-    g_pMotionPageFirst = this;
-}
-
-MotionPageFirst::~MotionPageFirst()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageFirst::~MotionPageFirst");
-    RemoveAll();
-    delete lableFirstTop;
-    lableFirstTop = nullptr;
-    delete lableFirstLeft;
-    lableFirstLeft = nullptr;
-    delete lableFirstRight;
-    lableFirstRight = nullptr;
-    delete lableFirstBottom;
-    lableFirstBottom = nullptr;
-    delete lableUnitFirstTop;
-    lableUnitFirstTop = nullptr;
-    delete lableUnitFirstLeft;
-    lableUnitFirstLeft = nullptr;
-    delete lableUnitFirstRight;
-    lableUnitFirstRight = nullptr;
-    delete lableUnitFirstBottom;
-    lableUnitFirstBottom = nullptr;
-    delete imageFirstTop;
-    imageFirstTop = nullptr;
-    delete imageFirstLeft;
-    imageFirstLeft = nullptr;
-    delete imageFirstRight;
-    imageFirstRight = nullptr;
-    delete imageFirstBottom;
-    imageFirstBottom = nullptr;
-    g_pMotionPageFirst = nullptr;
-}
-
-MotionPageFirst *MotionPageFirst::GetInstance()
-{
-    return g_pMotionPageFirst;
-}
-
-void MotionPageFirst::SetLableTemplate(UILabel *label)
-{
-    if (label == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetLableTemplate label nullptr");
-        return;
-    }
-    UIView::OnLongPressListener *longPressListener = (UIView::OnLongPressListener *)OHOS::IndoorWalkPresenter::GetInstance();
-    if (longPressListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "longPressListener GetInstance fail");
-        return;
-    }
-    label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40 : font data
-    label->SetOnLongPressListener(longPressListener);
-    label->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);
-    label->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,
-        UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-    label->SetTouchable(true);
-}
-
-void MotionPageFirst::SetUnitLableTemplate(UILabel *label)
-{
-    if (label == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetUnitLableTemplate label nullptr");
-        return;
-    }
-    label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30 : font data
-    label->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);
-    label->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,
-        UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-}
-
-bool MotionPageFirst::InitPageFirstLableTopView()
-{
-    string lable;
-    string lableUnit;
-    lable = IndoorWalkModel::GetInstance()->GetTextLableFirstTop();
-    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitFirstTop();
-    if (strcmp(lableUnit.c_str(), "步数(steps)") == 0) {
-        lable = "0";
-    } else if (strcmp(lableUnit.c_str(), "时间") == 0) {
-        lable = "00:00:00";
-    } else if (strcmp(lableUnit.c_str(), "距离(km)") == 0) {
-        lable = "0.00";
-    }
-    lableFirstTop = new UILabel();
-    lableUnitFirstTop = new UILabel();
-    if ((lableFirstTop == nullptr) || (lableUnitFirstTop == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableFirstTop new fail");
-        return false;
-    }
-    lableFirstTop->SetPosition(TOP_X, TOP_Y, TOP_W, LABLE_H);
-    lableFirstTop->SetText(lable.c_str());
-    SetLableTemplate(lableFirstTop);
-    lableFirstTop->SetViewId(LABLE_FIRST_TOP);
-    Add(lableFirstTop);
-
-    lableUnitFirstTop->SetPosition(TOP_X, UNIT_TOP_Y, TOP_W, UNIT_H);
-    lableUnitFirstTop->SetText(lableUnit.c_str());
-    SetUnitLableTemplate(lableUnitFirstTop);
-    Add(lableUnitFirstTop);
-    return true;
-}
-
-bool MotionPageFirst::InitPageFirstLableLeftView()
-{
-    string lable;
-    string lableUnit;
-    lable = IndoorWalkModel::GetInstance()->GetTextLableFirstLeft();
-    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitFirstLeft();
-    if (strcmp(lableUnit.c_str(), "步数(steps)") == 0) {
-        lable = "0";
-    } else if (strcmp(lableUnit.c_str(), "时间") == 0) {
-        lable = "00:00:00";
-    } else if (strcmp(lableUnit.c_str(), "距离(km)") == 0) {
-        lable = "0.00";
-    }
-    lableFirstLeft = new UILabel();
-    lableUnitFirstLeft = new UILabel();
-    if ((lableFirstLeft == nullptr) || (lableUnitFirstLeft == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableFirstLeft new fail");
-        return false;
-    }
-
-    lableFirstLeft->SetPosition(LEFT_X, LEFT_Y, LEFT_W, LABLE_H);
-    lableFirstLeft->SetText(lable.c_str());
-    SetLableTemplate(lableFirstLeft);
-    lableFirstLeft->SetViewId(LABLE_FIRST_LEFT);
-    Add(lableFirstLeft);
-
-    lableUnitFirstLeft->SetPosition(LEFT_X, UNIT_LEFT_Y, LEFT_W, UNIT_H);
-    lableUnitFirstLeft->SetText(lableUnit.c_str());
-    SetUnitLableTemplate(lableUnitFirstLeft);
-    Add(lableUnitFirstLeft);
-    return true;
-}
-
-bool MotionPageFirst::InitPageFirstLableRightView()
-{
-    string lable;
-    string lableUnit;
-    lable = IndoorWalkModel::GetInstance()->GetTextLableFirstRight();
-    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitFirstRight();
-    if (strcmp(lableUnit.c_str(), "步数(steps)") == 0) {
-        lable = "0";
-    } else if (strcmp(lableUnit.c_str(), "时间") == 0) {
-        lable = "00:00:00";
-    } else if (strcmp(lableUnit.c_str(), "距离(km)") == 0) {
-        lable = "0.00";
-    }
-    lableFirstRight = new UILabel();
-    lableUnitFirstRight = new UILabel();
-    if ((lableFirstRight == nullptr) || (lableUnitFirstRight == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableFirstRight new fail");
-        return false;
-    }
-    lableFirstRight->SetPosition(RIGHT_X, RIGHT_Y, RIGHT_W, LABLE_H);
-    lableFirstRight->SetText(lable.c_str());
-    SetLableTemplate(lableFirstRight);
-    lableFirstRight->SetViewId(LABLE_FIRST_RIGHT);
-    Add(lableFirstRight);
-
-    lableUnitFirstRight->SetPosition(RIGHT_X, UNIT_RIGHT_Y, RIGHT_W, UNIT_H);
-    lableUnitFirstRight->SetText(lableUnit.c_str());
-    SetUnitLableTemplate(lableUnitFirstRight);
-    Add(lableUnitFirstRight);
-    return true;
-}
-
-bool MotionPageFirst::InitPageFirstLableBottomView()
-{
-    string lable;
-    string lableUnit;
-    lable = IndoorWalkModel::GetInstance()->GetTextLableFirstBottom();
-    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitFirstBottom();
-    if (strcmp(lableUnit.c_str(), "步数(steps)") == 0) {
-        lable = "0";
-    } else if (strcmp(lableUnit.c_str(), "时间") == 0) {
-        lable = "00:00:00";
-    } else if (strcmp(lableUnit.c_str(), "距离(km)") == 0) {
-        lable = "0.00";
-    }
-    lableFirstBottom = new UILabel();
-    lableUnitFirstBottom = new UILabel();
-    if ((lableFirstBottom == nullptr) || (lableUnitFirstBottom == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableFirstBottom new fail");
-        return false;
-    }
-    lableFirstBottom->SetPosition(BOTTOM_X, BOTTOM_Y, BOTTOM_W, LABLE_H);
-    lableFirstBottom->SetText(lable.c_str());
-    SetLableTemplate(lableFirstBottom);
-    lableFirstBottom->SetViewId(LABLE_FIRST_BOTTOM);
-    Add(lableFirstBottom);
-
-    lableUnitFirstBottom->SetPosition(BOTTOM_X, UNIT_BOTTOM_Y, BOTTOM_W, UNIT_H);
-    lableUnitFirstBottom->SetText(lableUnit.c_str());
-    SetUnitLableTemplate(lableUnitFirstBottom);
-    Add(lableUnitFirstBottom);
-    return true;
-}
-
-UILabel *MotionPageFirst::GetLableFirstTop(void)
-{
-    return lableFirstTop;
-}
-
-UILabel *MotionPageFirst::GetLableUnitFirstTop(void)
-{
-    return lableUnitFirstTop;
-}
-
-UILabel *MotionPageFirst::GetLableFirstLeft(void)
-{
-    return lableFirstLeft;
-}
-
-UILabel *MotionPageFirst::GetLableUnitFirstLeft(void)
-{
-    return lableUnitFirstLeft;
-}
-
-UILabel *MotionPageFirst::GetLableFirstRight(void)
-{
-    return lableFirstRight;
-}
-
-UILabel *MotionPageFirst::GetLableUnitFirstRight(void)
-{
-    return lableUnitFirstRight;
-}
-
-UILabel *MotionPageFirst::GetLableFirstBottom(void)
-{
-    return lableFirstBottom;
-}
-
-UILabel *MotionPageFirst::GetLableUnitFirstBottom(void)
-{
-    return lableUnitFirstBottom;
-}
-
-
-bool MotionPageFirst::InitPageFirstImageView()
-{
-    imageFirstTop = new UIImageView();
-    imageFirstLeft = new UIImageView();
-    imageFirstRight = new UIImageView();
-    imageFirstBottom = new UIImageView();
-    if ((imageFirstTop == nullptr) || (imageFirstLeft == nullptr) || (imageFirstRight == nullptr) || (imageFirstBottom == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "imageFirst new fail");
-        return false;
-    }
-    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();
-    if (clickListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");
-        return false;
-    }
-    imageFirstTop->SetPosition(TOP_X, TOP_Y);
-    imageFirstTop->SetSrc(PNG_OPTIONS_BOX2_IMAGE);
-    imageFirstTop->SetOnClickListener(clickListener);
-    imageFirstTop->SetViewId(IMAGE_FIRST_TOP);
-    imageFirstTop->SetTouchable(true);
-    Add(imageFirstTop);
-
-    imageFirstLeft->SetPosition(LEFT_X, LEFT_Y);
-    imageFirstLeft->SetSrc(PNG_OPTIONS_BOX1_IMAGE);
-    imageFirstLeft->SetOnClickListener(clickListener);
-    imageFirstLeft->SetViewId(IMAGE_FIRST_LEFT);
-    imageFirstLeft->SetTouchable(true);
-    Add(imageFirstLeft);
-
-    imageFirstRight->SetPosition(RIGHT_X, RIGHT_Y);
-    imageFirstRight->SetSrc(PNG_OPTIONS_BOX1_IMAGE);
-    imageFirstRight->SetOnClickListener(clickListener);
-    imageFirstRight->SetViewId(IMAGE_FIRST_RIGHT);
-    imageFirstRight->SetTouchable(true);
-    Add(imageFirstRight);
-
-    imageFirstBottom->SetPosition(BOTTOM_X, BOTTOM_Y);
-    imageFirstBottom->SetSrc(PNG_OPTIONS_BOX2_IMAGE);
-    imageFirstBottom->SetOnClickListener(clickListener);
-    imageFirstBottom->SetViewId(IMAGE_FIRST_BOTTOM);
-    imageFirstBottom->SetTouchable(true);
-    Add(imageFirstBottom);
-    return true;
-}
-
-void MotionPageFirst::HideInitPageFirstImageView()
-{
-    if ((imageFirstTop == nullptr) || (imageFirstLeft == nullptr) || (imageFirstRight == nullptr) || (imageFirstBottom == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HideInitPageFirstImageView imageFirst nullptr");
-        return;
-    }
-    imageFirstTop->SetVisible(false);
-    imageFirstLeft->SetVisible(false);
-    imageFirstRight->SetVisible(false);
-    imageFirstBottom->SetVisible(false);
-}
-
-void MotionPageFirst::ShowInitPageFirstImageView()
-{
-    if ((imageFirstTop == nullptr) || (imageFirstLeft == nullptr) || (imageFirstRight == nullptr) || (imageFirstBottom == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowInitPageFirstImageView imageFirst nullptr");
-        return;
-    }
-    imageFirstTop->SetVisible(true);
-    imageFirstLeft->SetVisible(true);
-    imageFirstRight->SetVisible(true);
-    imageFirstBottom->SetVisible(true);
-}
-
-bool MotionPageFirst::InitView(void *caller)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageFirst InitView %p", caller);
-    bool ret;
-    backGroundFirst = new UIImageView();
-    if (backGroundFirst == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "backGroundFirst new fail");
-        return false;
-    }
-    backGroundFirst->SetPosition(0, 0); // 0 : X; 0 : Y
-    backGroundFirst->SetSrc(PNG_WALK_BACK_GROUND);
-    Add(backGroundFirst);
-    ret = InitPageFirstLableTopView();
-    if (ret == false) {
-        return false;
-    }
-    ret = InitPageFirstLableLeftView();
-    if (ret == false) {
-        return false;
-    }
-    ret = InitPageFirstLableRightView();
-    if (ret == false) {
-        return false;
-    }
-    ret = InitPageFirstLableBottomView();
-    if (ret == false) {
-        return false;
-    }
-    ret = InitPageFirstImageView();
-    if (ret == false) {
-        return false;
-    }
-    HideInitPageFirstImageView();
-    SetTouchable(true);
-    return true;
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: Motion PageFirst View\r
+ * Create: 2022-03-02\r
+ */\r
+\r
+#include "MotionPageFirst.h"\r
+#include "IndoorWalkPresenter.h"\r
+#include "IndoorWalkModel.h"\r
+#include "wearable_log.h"\r
+#include "UiConfig.h"\r
+\r
+namespace OHOS {\r
+static constexpr uint16_t TOP_X = 92;\r
+static constexpr uint16_t TOP_Y = 92;\r
+static constexpr uint16_t TOP_W = 270;\r
+static constexpr uint16_t LEFT_X = 47;\r
+static constexpr uint16_t LEFT_Y = 192;\r
+static constexpr uint16_t LEFT_W = 180;\r
+static constexpr uint16_t RIGHT_X = 227;\r
+static constexpr uint16_t RIGHT_Y = 192;\r
+static constexpr uint16_t RIGHT_W = 180;\r
+static constexpr uint16_t BOTTOM_X = 92;\r
+static constexpr uint16_t BOTTOM_Y = 292;\r
+static constexpr uint16_t BOTTOM_W = 270;\r
+static constexpr uint16_t LABLE_H = 70;\r
+static constexpr uint16_t UNIT_TOP_Y = 151;\r
+static constexpr uint16_t UNIT_LEFT_Y = 250;\r
+static constexpr uint16_t UNIT_RIGHT_Y = 250;\r
+static constexpr uint16_t UNIT_BOTTOM_Y = 350;\r
+static constexpr uint16_t UNIT_H = 50;\r
+\r
+static MotionPageFirst *g_pMotionPageFirst{nullptr};\r
+\r
+MotionPageFirst::MotionPageFirst()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageFirst::MotionPageFirst");\r
+    g_pMotionPageFirst = this;\r
+}\r
+\r
+MotionPageFirst::~MotionPageFirst()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageFirst::~MotionPageFirst");\r
+    RemoveAll();\r
+    delete lableFirstTop;\r
+    lableFirstTop = nullptr;\r
+    delete lableFirstLeft;\r
+    lableFirstLeft = nullptr;\r
+    delete lableFirstRight;\r
+    lableFirstRight = nullptr;\r
+    delete lableFirstBottom;\r
+    lableFirstBottom = nullptr;\r
+    delete lableUnitFirstTop;\r
+    lableUnitFirstTop = nullptr;\r
+    delete lableUnitFirstLeft;\r
+    lableUnitFirstLeft = nullptr;\r
+    delete lableUnitFirstRight;\r
+    lableUnitFirstRight = nullptr;\r
+    delete lableUnitFirstBottom;\r
+    lableUnitFirstBottom = nullptr;\r
+    delete imageFirstTop;\r
+    imageFirstTop = nullptr;\r
+    delete imageFirstLeft;\r
+    imageFirstLeft = nullptr;\r
+    delete imageFirstRight;\r
+    imageFirstRight = nullptr;\r
+    delete imageFirstBottom;\r
+    imageFirstBottom = nullptr;\r
+    g_pMotionPageFirst = nullptr;\r
+}\r
+\r
+MotionPageFirst *MotionPageFirst::GetInstance()\r
+{\r
+    return g_pMotionPageFirst;\r
+}\r
+\r
+void MotionPageFirst::SetLableTemplate(UILabel *label)\r
+{\r
+    if (label == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetLableTemplate label nullptr");\r
+        return;\r
+    }\r
+    UIView::OnLongPressListener *longPressListener = (UIView::OnLongPressListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
+    if (longPressListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "longPressListener GetInstance fail");\r
+        return;\r
+    }\r
+    label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40 : font data\r
+    label->SetOnLongPressListener(longPressListener);\r
+    label->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
+    label->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+        UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+    label->SetTouchable(true);\r
+}\r
+\r
+void MotionPageFirst::SetUnitLableTemplate(UILabel *label)\r
+{\r
+    if (label == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetUnitLableTemplate label nullptr");\r
+        return;\r
+    }\r
+    label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30 : font data\r
+    label->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
+    label->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+        UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+}\r
+\r
+bool MotionPageFirst::InitPageFirstLableTopView()\r
+{\r
+    string lable;\r
+    string lableUnit;\r
+    lable = IndoorWalkModel::GetInstance()->GetTextLableFirstTop();\r
+    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitFirstTop();\r
+    if (strcmp(lableUnit.c_str(), "步数(steps)") == 0) {\r
+        lable = "0";\r
+    } else if (strcmp(lableUnit.c_str(), "时间") == 0) {\r
+        lable = "00:00:00";\r
+    } else if (strcmp(lableUnit.c_str(), "距离(km)") == 0) {\r
+        lable = "0.00";\r
+    }\r
+    lableFirstTop = new UILabel();\r
+    lableUnitFirstTop = new UILabel();\r
+    if ((lableFirstTop == nullptr) || (lableUnitFirstTop == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableFirstTop new fail");\r
+        return false;\r
+    }\r
+    lableFirstTop->SetPosition(TOP_X, TOP_Y, TOP_W, LABLE_H);\r
+    lableFirstTop->SetText(lable.c_str());\r
+    SetLableTemplate(lableFirstTop);\r
+    lableFirstTop->SetViewId(LABLE_FIRST_TOP);\r
+    Add(lableFirstTop);\r
+\r
+    lableUnitFirstTop->SetPosition(TOP_X, UNIT_TOP_Y, TOP_W, UNIT_H);\r
+    lableUnitFirstTop->SetText(lableUnit.c_str());\r
+    SetUnitLableTemplate(lableUnitFirstTop);\r
+    Add(lableUnitFirstTop);\r
+    return true;\r
+}\r
+\r
+bool MotionPageFirst::InitPageFirstLableLeftView()\r
+{\r
+    string lable;\r
+    string lableUnit;\r
+    lable = IndoorWalkModel::GetInstance()->GetTextLableFirstLeft();\r
+    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitFirstLeft();\r
+    if (strcmp(lableUnit.c_str(), "步数(steps)") == 0) {\r
+        lable = "0";\r
+    } else if (strcmp(lableUnit.c_str(), "时间") == 0) {\r
+        lable = "00:00:00";\r
+    } else if (strcmp(lableUnit.c_str(), "距离(km)") == 0) {\r
+        lable = "0.00";\r
+    }\r
+    lableFirstLeft = new UILabel();\r
+    lableUnitFirstLeft = new UILabel();\r
+    if ((lableFirstLeft == nullptr) || (lableUnitFirstLeft == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableFirstLeft new fail");\r
+        return false;\r
+    }\r
+\r
+    lableFirstLeft->SetPosition(LEFT_X, LEFT_Y, LEFT_W, LABLE_H);\r
+    lableFirstLeft->SetText(lable.c_str());\r
+    SetLableTemplate(lableFirstLeft);\r
+    lableFirstLeft->SetViewId(LABLE_FIRST_LEFT);\r
+    Add(lableFirstLeft);\r
+\r
+    lableUnitFirstLeft->SetPosition(LEFT_X, UNIT_LEFT_Y, LEFT_W, UNIT_H);\r
+    lableUnitFirstLeft->SetText(lableUnit.c_str());\r
+    SetUnitLableTemplate(lableUnitFirstLeft);\r
+    Add(lableUnitFirstLeft);\r
+    return true;\r
+}\r
+\r
+bool MotionPageFirst::InitPageFirstLableRightView()\r
+{\r
+    string lable;\r
+    string lableUnit;\r
+    lable = IndoorWalkModel::GetInstance()->GetTextLableFirstRight();\r
+    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitFirstRight();\r
+    if (strcmp(lableUnit.c_str(), "步数(steps)") == 0) {\r
+        lable = "0";\r
+    } else if (strcmp(lableUnit.c_str(), "时间") == 0) {\r
+        lable = "00:00:00";\r
+    } else if (strcmp(lableUnit.c_str(), "距离(km)") == 0) {\r
+        lable = "0.00";\r
+    }\r
+    lableFirstRight = new UILabel();\r
+    lableUnitFirstRight = new UILabel();\r
+    if ((lableFirstRight == nullptr) || (lableUnitFirstRight == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableFirstRight new fail");\r
+        return false;\r
+    }\r
+    lableFirstRight->SetPosition(RIGHT_X, RIGHT_Y, RIGHT_W, LABLE_H);\r
+    lableFirstRight->SetText(lable.c_str());\r
+    SetLableTemplate(lableFirstRight);\r
+    lableFirstRight->SetViewId(LABLE_FIRST_RIGHT);\r
+    Add(lableFirstRight);\r
+\r
+    lableUnitFirstRight->SetPosition(RIGHT_X, UNIT_RIGHT_Y, RIGHT_W, UNIT_H);\r
+    lableUnitFirstRight->SetText(lableUnit.c_str());\r
+    SetUnitLableTemplate(lableUnitFirstRight);\r
+    Add(lableUnitFirstRight);\r
+    return true;\r
+}\r
+\r
+bool MotionPageFirst::InitPageFirstLableBottomView()\r
+{\r
+    string lable;\r
+    string lableUnit;\r
+    lable = IndoorWalkModel::GetInstance()->GetTextLableFirstBottom();\r
+    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitFirstBottom();\r
+    if (strcmp(lableUnit.c_str(), "步数(steps)") == 0) {\r
+        lable = "0";\r
+    } else if (strcmp(lableUnit.c_str(), "时间") == 0) {\r
+        lable = "00:00:00";\r
+    } else if (strcmp(lableUnit.c_str(), "距离(km)") == 0) {\r
+        lable = "0.00";\r
+    }\r
+    lableFirstBottom = new UILabel();\r
+    lableUnitFirstBottom = new UILabel();\r
+    if ((lableFirstBottom == nullptr) || (lableUnitFirstBottom == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableFirstBottom new fail");\r
+        return false;\r
+    }\r
+    lableFirstBottom->SetPosition(BOTTOM_X, BOTTOM_Y, BOTTOM_W, LABLE_H);\r
+    lableFirstBottom->SetText(lable.c_str());\r
+    SetLableTemplate(lableFirstBottom);\r
+    lableFirstBottom->SetViewId(LABLE_FIRST_BOTTOM);\r
+    Add(lableFirstBottom);\r
+\r
+    lableUnitFirstBottom->SetPosition(BOTTOM_X, UNIT_BOTTOM_Y, BOTTOM_W, UNIT_H);\r
+    lableUnitFirstBottom->SetText(lableUnit.c_str());\r
+    SetUnitLableTemplate(lableUnitFirstBottom);\r
+    Add(lableUnitFirstBottom);\r
+    return true;\r
+}\r
+\r
+UILabel *MotionPageFirst::GetLableFirstTop(void)\r
+{\r
+    return lableFirstTop;\r
+}\r
+\r
+UILabel *MotionPageFirst::GetLableUnitFirstTop(void)\r
+{\r
+    return lableUnitFirstTop;\r
+}\r
+\r
+UILabel *MotionPageFirst::GetLableFirstLeft(void)\r
+{\r
+    return lableFirstLeft;\r
+}\r
+\r
+UILabel *MotionPageFirst::GetLableUnitFirstLeft(void)\r
+{\r
+    return lableUnitFirstLeft;\r
+}\r
+\r
+UILabel *MotionPageFirst::GetLableFirstRight(void)\r
+{\r
+    return lableFirstRight;\r
+}\r
+\r
+UILabel *MotionPageFirst::GetLableUnitFirstRight(void)\r
+{\r
+    return lableUnitFirstRight;\r
+}\r
+\r
+UILabel *MotionPageFirst::GetLableFirstBottom(void)\r
+{\r
+    return lableFirstBottom;\r
+}\r
+\r
+UILabel *MotionPageFirst::GetLableUnitFirstBottom(void)\r
+{\r
+    return lableUnitFirstBottom;\r
+}\r
+\r
+\r
+bool MotionPageFirst::InitPageFirstImageView()\r
+{\r
+    imageFirstTop = new UIImageView();\r
+    imageFirstLeft = new UIImageView();\r
+    imageFirstRight = new UIImageView();\r
+    imageFirstBottom = new UIImageView();\r
+    if ((imageFirstTop == nullptr) || (imageFirstLeft == nullptr) || (imageFirstRight == nullptr) || (imageFirstBottom == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "imageFirst new fail");\r
+        return false;\r
+    }\r
+    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
+    if (clickListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
+        return false;\r
+    }\r
+    imageFirstTop->SetPosition(TOP_X, TOP_Y);\r
+    imageFirstTop->SetSrc(PNG_OPTIONS_BOX2_IMAGE);\r
+    imageFirstTop->SetOnClickListener(clickListener);\r
+    imageFirstTop->SetViewId(IMAGE_FIRST_TOP);\r
+    imageFirstTop->SetTouchable(true);\r
+    Add(imageFirstTop);\r
+\r
+    imageFirstLeft->SetPosition(LEFT_X, LEFT_Y);\r
+    imageFirstLeft->SetSrc(PNG_OPTIONS_BOX1_IMAGE);\r
+    imageFirstLeft->SetOnClickListener(clickListener);\r
+    imageFirstLeft->SetViewId(IMAGE_FIRST_LEFT);\r
+    imageFirstLeft->SetTouchable(true);\r
+    Add(imageFirstLeft);\r
+\r
+    imageFirstRight->SetPosition(RIGHT_X, RIGHT_Y);\r
+    imageFirstRight->SetSrc(PNG_OPTIONS_BOX1_IMAGE);\r
+    imageFirstRight->SetOnClickListener(clickListener);\r
+    imageFirstRight->SetViewId(IMAGE_FIRST_RIGHT);\r
+    imageFirstRight->SetTouchable(true);\r
+    Add(imageFirstRight);\r
+\r
+    imageFirstBottom->SetPosition(BOTTOM_X, BOTTOM_Y);\r
+    imageFirstBottom->SetSrc(PNG_OPTIONS_BOX2_IMAGE);\r
+    imageFirstBottom->SetOnClickListener(clickListener);\r
+    imageFirstBottom->SetViewId(IMAGE_FIRST_BOTTOM);\r
+    imageFirstBottom->SetTouchable(true);\r
+    Add(imageFirstBottom);\r
+    return true;\r
+}\r
+\r
+void MotionPageFirst::HideInitPageFirstImageView()\r
+{\r
+    if ((imageFirstTop == nullptr) || (imageFirstLeft == nullptr) || (imageFirstRight == nullptr) || (imageFirstBottom == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HideInitPageFirstImageView imageFirst nullptr");\r
+        return;\r
+    }\r
+    imageFirstTop->SetVisible(false);\r
+    imageFirstLeft->SetVisible(false);\r
+    imageFirstRight->SetVisible(false);\r
+    imageFirstBottom->SetVisible(false);\r
+}\r
+\r
+void MotionPageFirst::ShowInitPageFirstImageView()\r
+{\r
+    if ((imageFirstTop == nullptr) || (imageFirstLeft == nullptr) || (imageFirstRight == nullptr) || (imageFirstBottom == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowInitPageFirstImageView imageFirst nullptr");\r
+        return;\r
+    }\r
+    imageFirstTop->SetVisible(true);\r
+    imageFirstLeft->SetVisible(true);\r
+    imageFirstRight->SetVisible(true);\r
+    imageFirstBottom->SetVisible(true);\r
+}\r
+\r
+bool MotionPageFirst::InitView(void *caller)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageFirst InitView %p", caller);\r
+    bool ret;\r
+    backGroundFirst = new UIImageView();\r
+    if (backGroundFirst == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "backGroundFirst new fail");\r
+        return false;\r
+    }\r
+    backGroundFirst->SetPosition(0, 0); // 0 : X; 0 : Y\r
+    backGroundFirst->SetSrc(PNG_WALK_BACK_GROUND);\r
+    Add(backGroundFirst);\r
+    ret = InitPageFirstLableTopView();\r
+    if (ret == false) {\r
+        return false;\r
+    }\r
+    ret = InitPageFirstLableLeftView();\r
+    if (ret == false) {\r
+        return false;\r
+    }\r
+    ret = InitPageFirstLableRightView();\r
+    if (ret == false) {\r
+        return false;\r
+    }\r
+    ret = InitPageFirstLableBottomView();\r
+    if (ret == false) {\r
+        return false;\r
+    }\r
+    ret = InitPageFirstImageView();\r
+    if (ret == false) {\r
+        return false;\r
+    }\r
+    HideInitPageFirstImageView();\r
+    SetTouchable(true);\r
+    return true;\r
+}\r
 }
\ No newline at end of file
index 9dcb84b..4c72740 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: Motion PageFourth View
- * Create: 2022-03-02
- */
-#include "MotionPageFourth.h"
-#include "IndoorWalkPresenter.h"
-#include "IndoorWalkModel.h"
-#include "wearable_log.h"
-#include "UiConfig.h"
-
-namespace OHOS {
-static constexpr uint16_t LABLE_X = 52;
-static constexpr uint16_t LABLE_Y = 177;
-static constexpr uint16_t LABLE_W = 350;
-static constexpr uint16_t LABLE_H = 100;
-static constexpr uint16_t LABLE_UNIT_Y = 269;
-static constexpr uint16_t LABLE_UNIT_H = 50;
-static MotionPageFourth *g_pMotionPageFourth{nullptr};
-
-MotionPageFourth::MotionPageFourth()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageFourth::MotionPageFourth");
-    g_pMotionPageFourth = this;
-}
-
-MotionPageFourth::~MotionPageFourth()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageFourth::~MotionPageFourth");
-    RemoveAll();
-    delete lableFourth;
-    lableFourth = nullptr;
-    delete lableUnitFourth;
-    lableUnitFourth = nullptr;
-    delete imageFourth;
-    imageFourth = nullptr;
-    g_pMotionPageFourth = nullptr;
-}
-
-MotionPageFourth *MotionPageFourth::GetInstance()
-{
-    return g_pMotionPageFourth;
-}
-
-bool MotionPageFourth::InitPageFourthLableView()
-{
-    string lable;
-    string lableUnit;
-    lable = IndoorWalkModel::GetInstance()->GetTextLableFourth();
-    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitFourth();
-    if (strcmp(lableUnit.c_str(), "步数(steps)") == 0) {
-        lable = "0";
-    } else if (strcmp(lableUnit.c_str(), "时间") == 0) {
-        lable = "00:00:00";
-    } else if (strcmp(lableUnit.c_str(), "距离(km)") == 0) {
-        lable = "0.00";
-    }
-    lableFourth = new UILabel();
-    if (lableFourth == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableFourth new fail");
-        return false;
-    }
-    UIView::OnLongPressListener *longPressListener = (UIView::OnLongPressListener *)OHOS::IndoorWalkPresenter::GetInstance();
-    if (longPressListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "longPressListener GetInstance fail");
-        return false;
-    }
-    lableFourth->SetPosition(LABLE_X, LABLE_Y, LABLE_W, LABLE_H);
-    lableFourth->SetText(lable.c_str());
-    lableFourth->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 65); // 65 : font data
-    lableFourth->SetOnLongPressListener(longPressListener);
-    lableFourth->SetViewId(LABLE_FOURTH);
-    lableFourth->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);
-    lableFourth->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,
-        UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-    lableFourth->SetTouchable(true);
-    Add(lableFourth);
-
-    lableUnitFourth = new UILabel();
-    if (lableUnitFourth == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableUnitFourth new fail");
-        return false;
-    }
-    lableUnitFourth->SetPosition(LABLE_X, LABLE_UNIT_Y, LABLE_W, LABLE_UNIT_H);
-    lableUnitFourth->SetText(lableUnit.c_str());
-    lableUnitFourth->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 45); // 45 : font data
-    lableUnitFourth->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);
-    lableUnitFourth->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,
-        UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-    Add(lableUnitFourth);
-    return true;
-}
-
-UILabel *MotionPageFourth::GetLableFourth(void)
-{
-    return lableFourth;
-}
-
-UILabel *MotionPageFourth::GetLableUnitFourth(void)
-{
-    return lableUnitFourth;
-}
-
-bool MotionPageFourth::InitPageFourthImageView()
-{
-    imageFourth = new UIImageView();
-    if (imageFourth == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "imageFourth new fail");
-        return false;
-    }
-    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();
-    if (clickListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");
-        return false;
-    }
-    imageFourth->SetPosition(LABLE_X, LABLE_Y);
-    imageFourth->SetSrc(PNG_OPTIONS_BOX4_IMAGE);
-    imageFourth->SetViewId(IMAGE_FOURTH);
-    imageFourth->SetOnClickListener(clickListener);
-    imageFourth->SetTouchable(true);
-    Add(imageFourth);
-    return true;
-}
-
-void MotionPageFourth::HideInitPageFourthImageView()
-{
-    if (imageFourth == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HideInitPageFourthImageView imageFourth nullptr");
-        return;
-    }
-    imageFourth->SetVisible(false);
-}
-
-void MotionPageFourth::ShowInitPageFourthImageView()
-{
-    if (imageFourth == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowInitPageFourthImageView imageFourth nullptr");
-        return;
-    }
-    imageFourth->SetVisible(true);
-}
-
-bool MotionPageFourth::InitView(void *caller)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageFourth InitView %p", caller);
-    bool ret;
-    backGroundFourth = new UIImageView();
-    if (backGroundFourth == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "backGroundFourth new fail");
-        return false;
-    }
-    backGroundFourth->SetPosition(0, 0); // 0 : X; 0 : Y
-    backGroundFourth->SetSrc(PNG_WALK_BACK_GROUND);
-    Add(backGroundFourth);
-    ret = InitPageFourthLableView();
-    if (ret == false) {
-        return false;
-    }
-    ret = InitPageFourthImageView();
-    if (ret == false) {
-        return false;
-    }
-    HideInitPageFourthImageView();
-    SetTouchable(true);
-    return true;
-
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: Motion PageFourth View\r
+ * Create: 2022-03-02\r
+ */\r
+#include "MotionPageFourth.h"\r
+#include "IndoorWalkPresenter.h"\r
+#include "IndoorWalkModel.h"\r
+#include "wearable_log.h"\r
+#include "UiConfig.h"\r
+\r
+namespace OHOS {\r
+static constexpr uint16_t LABLE_X = 52;\r
+static constexpr uint16_t LABLE_Y = 177;\r
+static constexpr uint16_t LABLE_W = 350;\r
+static constexpr uint16_t LABLE_H = 100;\r
+static constexpr uint16_t LABLE_UNIT_Y = 269;\r
+static constexpr uint16_t LABLE_UNIT_H = 50;\r
+static MotionPageFourth *g_pMotionPageFourth{nullptr};\r
+\r
+MotionPageFourth::MotionPageFourth()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageFourth::MotionPageFourth");\r
+    g_pMotionPageFourth = this;\r
+}\r
+\r
+MotionPageFourth::~MotionPageFourth()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageFourth::~MotionPageFourth");\r
+    RemoveAll();\r
+    delete lableFourth;\r
+    lableFourth = nullptr;\r
+    delete lableUnitFourth;\r
+    lableUnitFourth = nullptr;\r
+    delete imageFourth;\r
+    imageFourth = nullptr;\r
+    g_pMotionPageFourth = nullptr;\r
+}\r
+\r
+MotionPageFourth *MotionPageFourth::GetInstance()\r
+{\r
+    return g_pMotionPageFourth;\r
+}\r
+\r
+bool MotionPageFourth::InitPageFourthLableView()\r
+{\r
+    string lable;\r
+    string lableUnit;\r
+    lable = IndoorWalkModel::GetInstance()->GetTextLableFourth();\r
+    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitFourth();\r
+    if (strcmp(lableUnit.c_str(), "步数(steps)") == 0) {\r
+        lable = "0";\r
+    } else if (strcmp(lableUnit.c_str(), "时间") == 0) {\r
+        lable = "00:00:00";\r
+    } else if (strcmp(lableUnit.c_str(), "距离(km)") == 0) {\r
+        lable = "0.00";\r
+    }\r
+    lableFourth = new UILabel();\r
+    if (lableFourth == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableFourth new fail");\r
+        return false;\r
+    }\r
+    UIView::OnLongPressListener *longPressListener = (UIView::OnLongPressListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
+    if (longPressListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "longPressListener GetInstance fail");\r
+        return false;\r
+    }\r
+    lableFourth->SetPosition(LABLE_X, LABLE_Y, LABLE_W, LABLE_H);\r
+    lableFourth->SetText(lable.c_str());\r
+    lableFourth->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 65); // 65 : font data\r
+    lableFourth->SetOnLongPressListener(longPressListener);\r
+    lableFourth->SetViewId(LABLE_FOURTH);\r
+    lableFourth->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
+    lableFourth->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+        UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+    lableFourth->SetTouchable(true);\r
+    Add(lableFourth);\r
+\r
+    lableUnitFourth = new UILabel();\r
+    if (lableUnitFourth == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableUnitFourth new fail");\r
+        return false;\r
+    }\r
+    lableUnitFourth->SetPosition(LABLE_X, LABLE_UNIT_Y, LABLE_W, LABLE_UNIT_H);\r
+    lableUnitFourth->SetText(lableUnit.c_str());\r
+    lableUnitFourth->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 45); // 45 : font data\r
+    lableUnitFourth->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
+    lableUnitFourth->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+        UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+    Add(lableUnitFourth);\r
+    return true;\r
+}\r
+\r
+UILabel *MotionPageFourth::GetLableFourth(void)\r
+{\r
+    return lableFourth;\r
+}\r
+\r
+UILabel *MotionPageFourth::GetLableUnitFourth(void)\r
+{\r
+    return lableUnitFourth;\r
+}\r
+\r
+bool MotionPageFourth::InitPageFourthImageView()\r
+{\r
+    imageFourth = new UIImageView();\r
+    if (imageFourth == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "imageFourth new fail");\r
+        return false;\r
+    }\r
+    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
+    if (clickListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
+        return false;\r
+    }\r
+    imageFourth->SetPosition(LABLE_X, LABLE_Y);\r
+    imageFourth->SetSrc(PNG_OPTIONS_BOX4_IMAGE);\r
+    imageFourth->SetViewId(IMAGE_FOURTH);\r
+    imageFourth->SetOnClickListener(clickListener);\r
+    imageFourth->SetTouchable(true);\r
+    Add(imageFourth);\r
+    return true;\r
+}\r
+\r
+void MotionPageFourth::HideInitPageFourthImageView()\r
+{\r
+    if (imageFourth == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HideInitPageFourthImageView imageFourth nullptr");\r
+        return;\r
+    }\r
+    imageFourth->SetVisible(false);\r
+}\r
+\r
+void MotionPageFourth::ShowInitPageFourthImageView()\r
+{\r
+    if (imageFourth == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowInitPageFourthImageView imageFourth nullptr");\r
+        return;\r
+    }\r
+    imageFourth->SetVisible(true);\r
+}\r
+\r
+bool MotionPageFourth::InitView(void *caller)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageFourth InitView %p", caller);\r
+    bool ret;\r
+    backGroundFourth = new UIImageView();\r
+    if (backGroundFourth == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "backGroundFourth new fail");\r
+        return false;\r
+    }\r
+    backGroundFourth->SetPosition(0, 0); // 0 : X; 0 : Y\r
+    backGroundFourth->SetSrc(PNG_WALK_BACK_GROUND);\r
+    Add(backGroundFourth);\r
+    ret = InitPageFourthLableView();\r
+    if (ret == false) {\r
+        return false;\r
+    }\r
+    ret = InitPageFourthImageView();\r
+    if (ret == false) {\r
+        return false;\r
+    }\r
+    HideInitPageFourthImageView();\r
+    SetTouchable(true);\r
+    return true;\r
+\r
+}\r
 }
\ No newline at end of file
index 32f68bd..545fb69 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: Motion PageSecond View
- * Create: 2022-03-02
- */
-#include "MotionPageSecond.h"
-#include "IndoorWalkPresenter.h"
-#include "IndoorWalkModel.h"
-#include "wearable_log.h"
-#include "UiConfig.h"
-
-namespace OHOS {
-static constexpr uint16_t TOP_X = 92;
-static constexpr uint16_t TOP_Y = 97;
-static constexpr uint16_t TOP_W = 270;
-static constexpr uint16_t LEFT_X = 47;
-static constexpr uint16_t LEFT_Y = 232;
-static constexpr uint16_t LEFT_W = 180;
-static constexpr uint16_t RIGHT_X = 227;
-static constexpr uint16_t RIGHT_Y = 232;
-static constexpr uint16_t RIGHT_W = 180;
-static constexpr uint16_t LABLE_H = 70;
-static constexpr uint16_t UNIT_TOP_Y = 154;
-static constexpr uint16_t UNIT_Y = 289;
-static constexpr uint16_t UNIT_H = 50;
-static MotionPageSecond *g_pMotionPageSecond{nullptr};
-
-MotionPageSecond::MotionPageSecond()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageSecond::MotionPageSecond");
-    g_pMotionPageSecond = this;
-}
-
-MotionPageSecond::~MotionPageSecond()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageSecond::~MotionPageSecond");
-    RemoveAll();
-    delete lableSecondTop;
-    lableSecondTop = nullptr;
-    delete lableSecondLeft;
-    lableSecondLeft = nullptr;
-    delete lableSecondRight;
-    lableSecondRight = nullptr;
-    delete lableUnitSecondTop;
-    lableUnitSecondTop = nullptr;
-    delete lableUnitSecondLeft;
-    lableUnitSecondLeft = nullptr;
-    delete lableUnitSecondRight;
-    lableUnitSecondRight = nullptr;
-    delete imageSecondTop;
-    imageSecondTop = nullptr;
-    delete imageSecondLeft;
-    imageSecondLeft = nullptr;
-    delete imageSecondRight;
-    imageSecondRight = nullptr;
-    g_pMotionPageSecond = nullptr;
-}
-
-MotionPageSecond *MotionPageSecond::GetInstance()
-{
-    return g_pMotionPageSecond;
-}
-
-void MotionPageSecond::SetLableTemplate(UILabel *label)
-{
-    if (label == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetLableTemplate label nullptr");
-        return;
-    }
-    UIView::OnLongPressListener *longPressListener = (UIView::OnLongPressListener *)OHOS::IndoorWalkPresenter::GetInstance();
-    if (longPressListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "longPressListener GetInstance fail");
-        return;
-    }
-    label->SetOnLongPressListener(longPressListener);
-    label->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);
-    label->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,
-        UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-    label->SetTouchable(true);
-}
-
-bool MotionPageSecond::InitPageSecondLableTopView()
-{
-    string lable;
-    string lableUnit;
-    lable = IndoorWalkModel::GetInstance()->GetTextLableSecondTop();
-    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitSecondTop();
-    if (strcmp(lableUnit.c_str(), "步数(steps)") == 0) {
-        lable = "0";
-    } else if (strcmp(lableUnit.c_str(), "时间") == 0) {
-        lable = "00:00:00";
-    } else if (strcmp(lableUnit.c_str(), "距离(km)") == 0) {
-        lable = "0.00";
-    }
-    lableSecondTop = new UILabel();
-    lableUnitSecondTop = new UILabel();
-    if ((lableSecondTop == nullptr) || (lableUnitSecondTop == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableSecondTop new fail");
-        return false;
-    }
-    lableSecondTop->SetPosition(TOP_X, TOP_Y, TOP_W, LABLE_H);
-    lableSecondTop->SetText(lable.c_str());
-    lableSecondTop->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 45); // 45 : font data
-    SetLableTemplate(lableSecondTop);
-    lableSecondTop->SetViewId(LABLE_SECOND_TOP);
-    Add(lableSecondTop);
-
-    lableUnitSecondTop->SetPosition(TOP_X, UNIT_TOP_Y, TOP_W, UNIT_H);
-    lableUnitSecondTop->SetText(lableUnit.c_str());
-    SetUnitLableTemplate(lableUnitSecondTop);
-    Add(lableUnitSecondTop);
-    return true;
-}
-
-bool MotionPageSecond::InitPageSecondLableLeftView()
-{
-    string lable;
-    string lableUnit;
-    lable = IndoorWalkModel::GetInstance()->GetTextLableSecondLeft();
-    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitSecondLeft();
-    if (strcmp(lableUnit.c_str(), "步数(steps)") == 0) {
-        lable = "0";
-    } else if (strcmp(lableUnit.c_str(), "时间") == 0) {
-        lable = "00:00:00";
-    } else if (strcmp(lableUnit.c_str(), "距离(km)") == 0) {
-        lable = "0.00";
-    }
-    lableSecondLeft = new UILabel();
-    lableUnitSecondLeft = new UILabel();
-    if ((lableSecondLeft == nullptr) || (lableUnitSecondLeft == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableSecondLeft new fail");
-        return false;
-    }
-    lableSecondLeft->SetPosition(LEFT_X, LEFT_Y, LEFT_W, LABLE_H);
-    lableSecondLeft->SetText(lable.c_str());
-    lableSecondLeft->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40 : font data
-    SetLableTemplate(lableSecondLeft);
-    lableSecondLeft->SetViewId(LABLE_SECOND_LEFT);
-    Add(lableSecondLeft);
-
-    lableUnitSecondLeft->SetPosition(LEFT_X, UNIT_Y, LEFT_W, UNIT_H);
-    lableUnitSecondLeft->SetText(lableUnit.c_str());
-    SetUnitLableTemplate(lableUnitSecondLeft);
-    Add(lableUnitSecondLeft);
-    return true;
-}
-
-bool MotionPageSecond::InitPageSecondLableRightView()
-{
-    string lable;
-    string lableUnit;
-    lable = IndoorWalkModel::GetInstance()->GetTextLableSecondRight();
-    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitSecondRight();
-    if (strcmp(lableUnit.c_str(), "步数(steps)") == 0) {
-        lable = "0";
-    } else if (strcmp(lableUnit.c_str(), "时间") == 0) {
-        lable = "00:00:00";
-    } else if (strcmp(lableUnit.c_str(), "距离(km)") == 0) {
-        lable = "0.00";
-    }
-    lableSecondRight = new UILabel();
-    lableUnitSecondRight = new UILabel();
-    if ((lableSecondRight == nullptr) || (lableUnitSecondRight == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableSecondRight new fail");
-        return false;
-    }
-    lableSecondRight->SetPosition(RIGHT_X, RIGHT_Y, RIGHT_W, LABLE_H);
-    lableSecondRight->SetText(lable.c_str());
-    lableSecondRight->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40 : font data
-    SetLableTemplate(lableSecondRight);
-    lableSecondRight->SetViewId(LABLE_SECOND_RIGHT);
-    Add(lableSecondRight);
-
-    lableUnitSecondRight->SetPosition(RIGHT_X, UNIT_Y, RIGHT_W, UNIT_H);
-    lableUnitSecondRight->SetText(lableUnit.c_str());
-    SetUnitLableTemplate(lableUnitSecondRight);
-    Add(lableUnitSecondRight);
-    return true;
-}
-
-void MotionPageSecond::SetUnitLableTemplate(UILabel *label)
-{
-    if (label == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetUnitLableTemplate label nullptr");
-        return;
-    }
-    label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30 : font data
-    label->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);
-    label->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,
-        UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-}
-
-UILabel *MotionPageSecond::GetLableSecondTop(void)
-{
-    return lableSecondTop;
-}
-
-UILabel *MotionPageSecond::GetLableUnitSecondTop(void)
-{
-    return lableUnitSecondTop;
-}
-
-UILabel *MotionPageSecond::GetLableSecondLeft(void)
-{
-    return lableSecondLeft;
-}
-
-UILabel *MotionPageSecond::GetLableUnitSecondLeft(void)
-{
-    return lableUnitSecondLeft;
-}
-
-UILabel *MotionPageSecond::GetLableSecondRight(void)
-{
-    return lableSecondRight;
-}
-
-UILabel *MotionPageSecond::GetLableUnitSecondRight(void)
-{
-    return lableUnitSecondRight;
-}
-
-bool MotionPageSecond::InitPageSecondImageView()
-{
-    imageSecondTop = new UIImageView();
-    imageSecondLeft = new UIImageView();
-    imageSecondRight = new UIImageView();
-    if ((imageSecondTop == nullptr) || (imageSecondLeft == nullptr) || (imageSecondRight == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "imageSecond new fail");
-        return false;
-    }
-    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();
-    if (clickListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");
-        return false;
-    }
-    imageSecondTop->SetPosition(TOP_X, TOP_Y);
-    imageSecondTop->SetSrc(PNG_OPTIONS_BOX2_IMAGE);
-    imageSecondTop->SetViewId(IMAGE_SECOND_TOP);
-    imageSecondTop->SetOnClickListener(clickListener);
-    imageSecondTop->SetTouchable(true);
-    Add(imageSecondTop);
-
-    imageSecondLeft->SetPosition(LEFT_X, LEFT_Y);
-    imageSecondLeft->SetSrc(PNG_OPTIONS_BOX1_IMAGE);
-    imageSecondLeft->SetViewId(IMAGE_SECOND_LEFT);
-    imageSecondLeft->SetOnClickListener(clickListener);
-    imageSecondLeft->SetTouchable(true);
-    Add(imageSecondLeft);
-
-    imageSecondRight->SetPosition(RIGHT_X, RIGHT_Y);
-    imageSecondRight->SetSrc(PNG_OPTIONS_BOX1_IMAGE);
-    imageSecondRight->SetViewId(IMAGE_SECOND_RIGHT);
-    imageSecondRight->SetOnClickListener(clickListener);
-    imageSecondRight->SetTouchable(true);
-    Add(imageSecondRight);
-    return true;
-}
-
-void MotionPageSecond::HideInitPageSecondImageView()
-{
-    if ((imageSecondTop == nullptr) || (imageSecondLeft == nullptr) || (imageSecondRight == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HideInitPageSecondImageView imageSecond nullptr");
-        return;
-    }
-    imageSecondTop->SetVisible(false);
-    imageSecondLeft->SetVisible(false);
-    imageSecondRight->SetVisible(false);
-}
-
-void MotionPageSecond::ShowInitPageSecondImageView()
-{
-    if ((imageSecondTop == nullptr) || (imageSecondLeft == nullptr) || (imageSecondRight == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowInitPageSecondImageView imageSecond nullptr");
-        return;
-    }
-    imageSecondTop->SetVisible(true);
-    imageSecondLeft->SetVisible(true);
-    imageSecondRight->SetVisible(true);
-}
-
-bool MotionPageSecond::InitView(void *caller)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageSecond InitView %p", caller);
-    bool ret;
-    backGroundSecond = new UIImageView();
-    if (backGroundSecond == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "backGroundSecond new fail");
-        return false;
-    }
-    backGroundSecond->SetPosition(0, 0); // 0 : X; 0 : Y
-    backGroundSecond->SetSrc(PNG_WALK_BACK_GROUND);
-    Add(backGroundSecond);
-    ret = InitPageSecondLableTopView();
-    if (ret == false) {
-        return false;
-    }
-    ret = InitPageSecondLableLeftView();
-    if (ret == false) {
-        return false;
-    }
-    ret = InitPageSecondLableRightView();
-    if (ret == false) {
-        return false;
-    }
-    ret = InitPageSecondImageView();
-    if (ret == false) {
-        return false;
-    }
-    HideInitPageSecondImageView();
-    SetTouchable(true);
-    return true;
-
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: Motion PageSecond View\r
+ * Create: 2022-03-02\r
+ */\r
+#include "MotionPageSecond.h"\r
+#include "IndoorWalkPresenter.h"\r
+#include "IndoorWalkModel.h"\r
+#include "wearable_log.h"\r
+#include "UiConfig.h"\r
+\r
+namespace OHOS {\r
+static constexpr uint16_t TOP_X = 92;\r
+static constexpr uint16_t TOP_Y = 97;\r
+static constexpr uint16_t TOP_W = 270;\r
+static constexpr uint16_t LEFT_X = 47;\r
+static constexpr uint16_t LEFT_Y = 232;\r
+static constexpr uint16_t LEFT_W = 180;\r
+static constexpr uint16_t RIGHT_X = 227;\r
+static constexpr uint16_t RIGHT_Y = 232;\r
+static constexpr uint16_t RIGHT_W = 180;\r
+static constexpr uint16_t LABLE_H = 70;\r
+static constexpr uint16_t UNIT_TOP_Y = 154;\r
+static constexpr uint16_t UNIT_Y = 289;\r
+static constexpr uint16_t UNIT_H = 50;\r
+static MotionPageSecond *g_pMotionPageSecond{nullptr};\r
+\r
+MotionPageSecond::MotionPageSecond()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageSecond::MotionPageSecond");\r
+    g_pMotionPageSecond = this;\r
+}\r
+\r
+MotionPageSecond::~MotionPageSecond()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageSecond::~MotionPageSecond");\r
+    RemoveAll();\r
+    delete lableSecondTop;\r
+    lableSecondTop = nullptr;\r
+    delete lableSecondLeft;\r
+    lableSecondLeft = nullptr;\r
+    delete lableSecondRight;\r
+    lableSecondRight = nullptr;\r
+    delete lableUnitSecondTop;\r
+    lableUnitSecondTop = nullptr;\r
+    delete lableUnitSecondLeft;\r
+    lableUnitSecondLeft = nullptr;\r
+    delete lableUnitSecondRight;\r
+    lableUnitSecondRight = nullptr;\r
+    delete imageSecondTop;\r
+    imageSecondTop = nullptr;\r
+    delete imageSecondLeft;\r
+    imageSecondLeft = nullptr;\r
+    delete imageSecondRight;\r
+    imageSecondRight = nullptr;\r
+    g_pMotionPageSecond = nullptr;\r
+}\r
+\r
+MotionPageSecond *MotionPageSecond::GetInstance()\r
+{\r
+    return g_pMotionPageSecond;\r
+}\r
+\r
+void MotionPageSecond::SetLableTemplate(UILabel *label)\r
+{\r
+    if (label == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetLableTemplate label nullptr");\r
+        return;\r
+    }\r
+    UIView::OnLongPressListener *longPressListener = (UIView::OnLongPressListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
+    if (longPressListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "longPressListener GetInstance fail");\r
+        return;\r
+    }\r
+    label->SetOnLongPressListener(longPressListener);\r
+    label->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
+    label->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+        UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+    label->SetTouchable(true);\r
+}\r
+\r
+bool MotionPageSecond::InitPageSecondLableTopView()\r
+{\r
+    string lable;\r
+    string lableUnit;\r
+    lable = IndoorWalkModel::GetInstance()->GetTextLableSecondTop();\r
+    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitSecondTop();\r
+    if (strcmp(lableUnit.c_str(), "步数(steps)") == 0) {\r
+        lable = "0";\r
+    } else if (strcmp(lableUnit.c_str(), "时间") == 0) {\r
+        lable = "00:00:00";\r
+    } else if (strcmp(lableUnit.c_str(), "距离(km)") == 0) {\r
+        lable = "0.00";\r
+    }\r
+    lableSecondTop = new UILabel();\r
+    lableUnitSecondTop = new UILabel();\r
+    if ((lableSecondTop == nullptr) || (lableUnitSecondTop == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableSecondTop new fail");\r
+        return false;\r
+    }\r
+    lableSecondTop->SetPosition(TOP_X, TOP_Y, TOP_W, LABLE_H);\r
+    lableSecondTop->SetText(lable.c_str());\r
+    lableSecondTop->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 45); // 45 : font data\r
+    SetLableTemplate(lableSecondTop);\r
+    lableSecondTop->SetViewId(LABLE_SECOND_TOP);\r
+    Add(lableSecondTop);\r
+\r
+    lableUnitSecondTop->SetPosition(TOP_X, UNIT_TOP_Y, TOP_W, UNIT_H);\r
+    lableUnitSecondTop->SetText(lableUnit.c_str());\r
+    SetUnitLableTemplate(lableUnitSecondTop);\r
+    Add(lableUnitSecondTop);\r
+    return true;\r
+}\r
+\r
+bool MotionPageSecond::InitPageSecondLableLeftView()\r
+{\r
+    string lable;\r
+    string lableUnit;\r
+    lable = IndoorWalkModel::GetInstance()->GetTextLableSecondLeft();\r
+    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitSecondLeft();\r
+    if (strcmp(lableUnit.c_str(), "步数(steps)") == 0) {\r
+        lable = "0";\r
+    } else if (strcmp(lableUnit.c_str(), "时间") == 0) {\r
+        lable = "00:00:00";\r
+    } else if (strcmp(lableUnit.c_str(), "距离(km)") == 0) {\r
+        lable = "0.00";\r
+    }\r
+    lableSecondLeft = new UILabel();\r
+    lableUnitSecondLeft = new UILabel();\r
+    if ((lableSecondLeft == nullptr) || (lableUnitSecondLeft == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableSecondLeft new fail");\r
+        return false;\r
+    }\r
+    lableSecondLeft->SetPosition(LEFT_X, LEFT_Y, LEFT_W, LABLE_H);\r
+    lableSecondLeft->SetText(lable.c_str());\r
+    lableSecondLeft->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40 : font data\r
+    SetLableTemplate(lableSecondLeft);\r
+    lableSecondLeft->SetViewId(LABLE_SECOND_LEFT);\r
+    Add(lableSecondLeft);\r
+\r
+    lableUnitSecondLeft->SetPosition(LEFT_X, UNIT_Y, LEFT_W, UNIT_H);\r
+    lableUnitSecondLeft->SetText(lableUnit.c_str());\r
+    SetUnitLableTemplate(lableUnitSecondLeft);\r
+    Add(lableUnitSecondLeft);\r
+    return true;\r
+}\r
+\r
+bool MotionPageSecond::InitPageSecondLableRightView()\r
+{\r
+    string lable;\r
+    string lableUnit;\r
+    lable = IndoorWalkModel::GetInstance()->GetTextLableSecondRight();\r
+    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitSecondRight();\r
+    if (strcmp(lableUnit.c_str(), "步数(steps)") == 0) {\r
+        lable = "0";\r
+    } else if (strcmp(lableUnit.c_str(), "时间") == 0) {\r
+        lable = "00:00:00";\r
+    } else if (strcmp(lableUnit.c_str(), "距离(km)") == 0) {\r
+        lable = "0.00";\r
+    }\r
+    lableSecondRight = new UILabel();\r
+    lableUnitSecondRight = new UILabel();\r
+    if ((lableSecondRight == nullptr) || (lableUnitSecondRight == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableSecondRight new fail");\r
+        return false;\r
+    }\r
+    lableSecondRight->SetPosition(RIGHT_X, RIGHT_Y, RIGHT_W, LABLE_H);\r
+    lableSecondRight->SetText(lable.c_str());\r
+    lableSecondRight->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40 : font data\r
+    SetLableTemplate(lableSecondRight);\r
+    lableSecondRight->SetViewId(LABLE_SECOND_RIGHT);\r
+    Add(lableSecondRight);\r
+\r
+    lableUnitSecondRight->SetPosition(RIGHT_X, UNIT_Y, RIGHT_W, UNIT_H);\r
+    lableUnitSecondRight->SetText(lableUnit.c_str());\r
+    SetUnitLableTemplate(lableUnitSecondRight);\r
+    Add(lableUnitSecondRight);\r
+    return true;\r
+}\r
+\r
+void MotionPageSecond::SetUnitLableTemplate(UILabel *label)\r
+{\r
+    if (label == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetUnitLableTemplate label nullptr");\r
+        return;\r
+    }\r
+    label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30 : font data\r
+    label->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
+    label->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+        UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+}\r
+\r
+UILabel *MotionPageSecond::GetLableSecondTop(void)\r
+{\r
+    return lableSecondTop;\r
+}\r
+\r
+UILabel *MotionPageSecond::GetLableUnitSecondTop(void)\r
+{\r
+    return lableUnitSecondTop;\r
+}\r
+\r
+UILabel *MotionPageSecond::GetLableSecondLeft(void)\r
+{\r
+    return lableSecondLeft;\r
+}\r
+\r
+UILabel *MotionPageSecond::GetLableUnitSecondLeft(void)\r
+{\r
+    return lableUnitSecondLeft;\r
+}\r
+\r
+UILabel *MotionPageSecond::GetLableSecondRight(void)\r
+{\r
+    return lableSecondRight;\r
+}\r
+\r
+UILabel *MotionPageSecond::GetLableUnitSecondRight(void)\r
+{\r
+    return lableUnitSecondRight;\r
+}\r
+\r
+bool MotionPageSecond::InitPageSecondImageView()\r
+{\r
+    imageSecondTop = new UIImageView();\r
+    imageSecondLeft = new UIImageView();\r
+    imageSecondRight = new UIImageView();\r
+    if ((imageSecondTop == nullptr) || (imageSecondLeft == nullptr) || (imageSecondRight == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "imageSecond new fail");\r
+        return false;\r
+    }\r
+    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
+    if (clickListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
+        return false;\r
+    }\r
+    imageSecondTop->SetPosition(TOP_X, TOP_Y);\r
+    imageSecondTop->SetSrc(PNG_OPTIONS_BOX2_IMAGE);\r
+    imageSecondTop->SetViewId(IMAGE_SECOND_TOP);\r
+    imageSecondTop->SetOnClickListener(clickListener);\r
+    imageSecondTop->SetTouchable(true);\r
+    Add(imageSecondTop);\r
+\r
+    imageSecondLeft->SetPosition(LEFT_X, LEFT_Y);\r
+    imageSecondLeft->SetSrc(PNG_OPTIONS_BOX1_IMAGE);\r
+    imageSecondLeft->SetViewId(IMAGE_SECOND_LEFT);\r
+    imageSecondLeft->SetOnClickListener(clickListener);\r
+    imageSecondLeft->SetTouchable(true);\r
+    Add(imageSecondLeft);\r
+\r
+    imageSecondRight->SetPosition(RIGHT_X, RIGHT_Y);\r
+    imageSecondRight->SetSrc(PNG_OPTIONS_BOX1_IMAGE);\r
+    imageSecondRight->SetViewId(IMAGE_SECOND_RIGHT);\r
+    imageSecondRight->SetOnClickListener(clickListener);\r
+    imageSecondRight->SetTouchable(true);\r
+    Add(imageSecondRight);\r
+    return true;\r
+}\r
+\r
+void MotionPageSecond::HideInitPageSecondImageView()\r
+{\r
+    if ((imageSecondTop == nullptr) || (imageSecondLeft == nullptr) || (imageSecondRight == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HideInitPageSecondImageView imageSecond nullptr");\r
+        return;\r
+    }\r
+    imageSecondTop->SetVisible(false);\r
+    imageSecondLeft->SetVisible(false);\r
+    imageSecondRight->SetVisible(false);\r
+}\r
+\r
+void MotionPageSecond::ShowInitPageSecondImageView()\r
+{\r
+    if ((imageSecondTop == nullptr) || (imageSecondLeft == nullptr) || (imageSecondRight == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowInitPageSecondImageView imageSecond nullptr");\r
+        return;\r
+    }\r
+    imageSecondTop->SetVisible(true);\r
+    imageSecondLeft->SetVisible(true);\r
+    imageSecondRight->SetVisible(true);\r
+}\r
+\r
+bool MotionPageSecond::InitView(void *caller)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageSecond InitView %p", caller);\r
+    bool ret;\r
+    backGroundSecond = new UIImageView();\r
+    if (backGroundSecond == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "backGroundSecond new fail");\r
+        return false;\r
+    }\r
+    backGroundSecond->SetPosition(0, 0); // 0 : X; 0 : Y\r
+    backGroundSecond->SetSrc(PNG_WALK_BACK_GROUND);\r
+    Add(backGroundSecond);\r
+    ret = InitPageSecondLableTopView();\r
+    if (ret == false) {\r
+        return false;\r
+    }\r
+    ret = InitPageSecondLableLeftView();\r
+    if (ret == false) {\r
+        return false;\r
+    }\r
+    ret = InitPageSecondLableRightView();\r
+    if (ret == false) {\r
+        return false;\r
+    }\r
+    ret = InitPageSecondImageView();\r
+    if (ret == false) {\r
+        return false;\r
+    }\r
+    HideInitPageSecondImageView();\r
+    SetTouchable(true);\r
+    return true;\r
+\r
+}\r
 }
\ No newline at end of file
index b291c35..a0898ba 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: Motion PageThird View
- * Create: 2022-03-02
- */
-#include "MotionPageThird.h"
-#include "IndoorWalkPresenter.h"
-#include "IndoorWalkModel.h"
-#include "wearable_log.h"
-#include "UiConfig.h"
-
-namespace OHOS {
-static constexpr uint16_t LABLE_X = 52;
-static constexpr uint16_t TOP_Y = 112;
-static constexpr uint16_t BOTTOM_Y = 252;
-static constexpr uint16_t LABLE_W = 350;
-static constexpr uint16_t LABLE_H = 80;
-static constexpr uint16_t UNIT_TOP_Y = 180;
-static constexpr uint16_t UNIT_BOTTOM_Y = 320;
-static constexpr uint16_t UNIT_H = 50;
-static MotionPageThird *g_pMotionPageThird{nullptr};
-
-MotionPageThird::MotionPageThird()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageThird::MotionPageThird");
-    g_pMotionPageThird = this;
-}
-
-MotionPageThird::~MotionPageThird()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageThird::~MotionPageThird");
-    RemoveAll();
-    delete lableThirdTop;
-    lableThirdTop = nullptr;
-    delete lableUnitThirdTop;
-    lableUnitThirdTop = nullptr;
-    delete lableThirdBottom;
-    lableThirdBottom = nullptr;
-    delete lableUnitThirdBottom;
-    lableUnitThirdBottom = nullptr;
-    delete imageThirdTop;
-    imageThirdTop = nullptr;
-    delete imageThirdBottom;
-    imageThirdBottom = nullptr;
-    g_pMotionPageThird = nullptr;
-}
-
-MotionPageThird *MotionPageThird::GetInstance()
-{
-    return g_pMotionPageThird;
-}
-
-void MotionPageThird::SetLableTemplate(UILabel *label)
-{
-    if (label == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetLableTemplate label nullptr");
-        return;
-    }
-    UIView::OnLongPressListener *longPressListener = (UIView::OnLongPressListener *)OHOS::IndoorWalkPresenter::GetInstance();
-    if (longPressListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "longPressListener GetInstance fail");
-        return;
-    }
-    label->SetOnLongPressListener(longPressListener);
-    label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 60); // 60 : font data
-    label->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);
-    label->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,
-        UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-    label->SetTouchable(true);
-}
-
-bool MotionPageThird::InitPageThirdLableTopView()
-{
-    string lable;
-    string lableUnit;
-    lable = IndoorWalkModel::GetInstance()->GetTextLableThirdTop();
-    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitThirdTop();
-    if (strcmp(lableUnit.c_str(), "步数(steps)") == 0) {
-        lable = "0";
-    } else if (strcmp(lableUnit.c_str(), "时间") == 0) {
-        lable = "00:00:00";
-    } else if (strcmp(lableUnit.c_str(), "距离(km)") == 0) {
-        lable = "0.00";
-    }
-    lableThirdTop = new UILabel();
-    lableUnitThirdTop = new UILabel();
-    if ((lableThirdTop == nullptr) || (lableUnitThirdTop == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableThirdTop new fail");
-        return false;
-    }
-    lableThirdTop->SetPosition(LABLE_X, TOP_Y, LABLE_W, LABLE_H);
-    lableThirdTop->SetText(lable.c_str());
-    SetLableTemplate(lableThirdTop);
-    lableThirdTop->SetViewId(LABLE_THIRD_TOP);
-    Add(lableThirdTop);
-
-    lableUnitThirdTop->SetPosition(LABLE_X, UNIT_TOP_Y, LABLE_W, UNIT_H);
-    lableUnitThirdTop->SetText(lableUnit.c_str());
-    SetUnitLableTemplate(lableUnitThirdTop);
-    Add(lableUnitThirdTop);
-    return true;
-}
-
-void MotionPageThird::SetUnitLableTemplate(UILabel *label)
-{
-    if (label == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetUnitLableTemplate label nullptr");
-        return;
-    }
-    label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30 : font data
-    label->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);
-    label->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,
-        UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
-}
-
-bool MotionPageThird::InitPageThirdLableBottomView()
-{
-    string lable;
-    string lableUnit;
-    lable = IndoorWalkModel::GetInstance()->GetTextLableThirdBottom();
-    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitThirdBottom();
-    if (strcmp(lableUnit.c_str(), "步数(steps)") == 0) {
-        lable = "0";
-    } else if (strcmp(lableUnit.c_str(), "时间") == 0) {
-        lable = "00:00:00";
-    } else if (strcmp(lableUnit.c_str(), "距离(km)") == 0) {
-        lable = "0.00";
-    }
-    lableThirdBottom = new UILabel();
-    lableUnitThirdBottom = new UILabel();
-    if ((lableThirdBottom == nullptr) || (lableUnitThirdBottom == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableThirdBottom new fail");
-        return false;
-    }
-    lableThirdBottom->SetPosition(LABLE_X, BOTTOM_Y, LABLE_W, LABLE_H);
-    lableThirdBottom->SetText(lable.c_str());
-    SetLableTemplate(lableThirdBottom);
-    lableThirdBottom->SetViewId(LABLE_THIRD_BOTTOM);
-    Add(lableThirdBottom);
-
-    lableUnitThirdBottom->SetPosition(LABLE_X, UNIT_BOTTOM_Y, LABLE_W, UNIT_H);
-    lableUnitThirdBottom->SetText(lableUnit.c_str());
-    SetUnitLableTemplate(lableUnitThirdBottom);
-    Add(lableUnitThirdBottom);
-    return true;
-}
-
-UILabel *MotionPageThird::GetLableThirdTop(void)
-{
-    return lableThirdTop;
-}
-
-UILabel *MotionPageThird::GetLableUnitThirdTop(void)
-{
-    return lableUnitThirdTop;
-}
-
-UILabel *MotionPageThird::GetLableThirdBottom(void)
-{
-    return lableThirdBottom;
-}
-
-UILabel *MotionPageThird::GetLableUnitThirdBottom(void)
-{
-    return lableUnitThirdBottom;
-}
-
-bool MotionPageThird::InitPageThirdImageView()
-{
-    imageThirdTop = new UIImageView();
-    imageThirdBottom = new UIImageView();
-    if ((imageThirdTop == nullptr) || (imageThirdBottom == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "imageThird new fail");
-        return false;
-    }
-    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();
-    if (clickListener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");
-        return false;
-    }
-    imageThirdTop->SetPosition(LABLE_X, TOP_Y);
-    imageThirdTop->SetSrc(PNG_OPTIONS_BOX3_IMAGE);
-    imageThirdTop->SetViewId(IMAGE_THIRD_TOP);
-    imageThirdTop->SetOnClickListener(clickListener);
-    imageThirdTop->SetTouchable(true);
-    Add(imageThirdTop);
-
-    imageThirdBottom->SetPosition(LABLE_X, BOTTOM_Y);
-    imageThirdBottom->SetSrc(PNG_OPTIONS_BOX3_IMAGE);
-    imageThirdBottom->SetViewId(IMAGE_THIRD_BOTTOM);
-    imageThirdBottom->SetOnClickListener(clickListener);
-    imageThirdBottom->SetTouchable(true);
-    Add(imageThirdBottom);
-    return true;
-}
-
-void MotionPageThird::HideInitPageThirdImageView()
-{
-    if ((imageThirdTop == nullptr) || (imageThirdBottom == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HideInitPageThirdImageView imageThird nullptr");
-        return;
-    }
-    imageThirdTop->SetVisible(false);
-    imageThirdBottom->SetVisible(false);
-}
-
-void MotionPageThird::ShowInitPageThirdImageView()
-{
-    if ((imageThirdTop == nullptr) || (imageThirdBottom == nullptr)) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowInitPageThirdImageView imageThird nullptr");
-        return;
-    }
-    imageThirdTop->SetVisible(true);
-    imageThirdBottom->SetVisible(true);
-}
-
-bool MotionPageThird::InitView(void *caller)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageThird InitView %p", caller);
-    bool ret;
-    backGroundThird = new UIImageView();
-    if (backGroundThird == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "backGroundThird new fail");
-        return false;
-    }
-    backGroundThird->SetPosition(0, 0); // 0 : X; 0 : Y
-    backGroundThird->SetSrc(PNG_WALK_BACK_GROUND);
-    Add(backGroundThird);
-    ret = InitPageThirdLableTopView();
-    if (ret == false) {
-        return false;
-    }
-    ret = InitPageThirdLableBottomView();
-    if (ret == false) {
-        return false;
-    }
-    ret = InitPageThirdImageView();
-    if (ret == false) {
-        return false;
-    }
-    HideInitPageThirdImageView();
-    SetTouchable(true);
-    return true;
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: Motion PageThird View\r
+ * Create: 2022-03-02\r
+ */\r
+#include "MotionPageThird.h"\r
+#include "IndoorWalkPresenter.h"\r
+#include "IndoorWalkModel.h"\r
+#include "wearable_log.h"\r
+#include "UiConfig.h"\r
+\r
+namespace OHOS {\r
+static constexpr uint16_t LABLE_X = 52;\r
+static constexpr uint16_t TOP_Y = 112;\r
+static constexpr uint16_t BOTTOM_Y = 252;\r
+static constexpr uint16_t LABLE_W = 350;\r
+static constexpr uint16_t LABLE_H = 80;\r
+static constexpr uint16_t UNIT_TOP_Y = 180;\r
+static constexpr uint16_t UNIT_BOTTOM_Y = 320;\r
+static constexpr uint16_t UNIT_H = 50;\r
+static MotionPageThird *g_pMotionPageThird{nullptr};\r
+\r
+MotionPageThird::MotionPageThird()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageThird::MotionPageThird");\r
+    g_pMotionPageThird = this;\r
+}\r
+\r
+MotionPageThird::~MotionPageThird()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageThird::~MotionPageThird");\r
+    RemoveAll();\r
+    delete lableThirdTop;\r
+    lableThirdTop = nullptr;\r
+    delete lableUnitThirdTop;\r
+    lableUnitThirdTop = nullptr;\r
+    delete lableThirdBottom;\r
+    lableThirdBottom = nullptr;\r
+    delete lableUnitThirdBottom;\r
+    lableUnitThirdBottom = nullptr;\r
+    delete imageThirdTop;\r
+    imageThirdTop = nullptr;\r
+    delete imageThirdBottom;\r
+    imageThirdBottom = nullptr;\r
+    g_pMotionPageThird = nullptr;\r
+}\r
+\r
+MotionPageThird *MotionPageThird::GetInstance()\r
+{\r
+    return g_pMotionPageThird;\r
+}\r
+\r
+void MotionPageThird::SetLableTemplate(UILabel *label)\r
+{\r
+    if (label == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetLableTemplate label nullptr");\r
+        return;\r
+    }\r
+    UIView::OnLongPressListener *longPressListener = (UIView::OnLongPressListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
+    if (longPressListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "longPressListener GetInstance fail");\r
+        return;\r
+    }\r
+    label->SetOnLongPressListener(longPressListener);\r
+    label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 60); // 60 : font data\r
+    label->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
+    label->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+        UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+    label->SetTouchable(true);\r
+}\r
+\r
+bool MotionPageThird::InitPageThirdLableTopView()\r
+{\r
+    string lable;\r
+    string lableUnit;\r
+    lable = IndoorWalkModel::GetInstance()->GetTextLableThirdTop();\r
+    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitThirdTop();\r
+    if (strcmp(lableUnit.c_str(), "步数(steps)") == 0) {\r
+        lable = "0";\r
+    } else if (strcmp(lableUnit.c_str(), "时间") == 0) {\r
+        lable = "00:00:00";\r
+    } else if (strcmp(lableUnit.c_str(), "距离(km)") == 0) {\r
+        lable = "0.00";\r
+    }\r
+    lableThirdTop = new UILabel();\r
+    lableUnitThirdTop = new UILabel();\r
+    if ((lableThirdTop == nullptr) || (lableUnitThirdTop == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableThirdTop new fail");\r
+        return false;\r
+    }\r
+    lableThirdTop->SetPosition(LABLE_X, TOP_Y, LABLE_W, LABLE_H);\r
+    lableThirdTop->SetText(lable.c_str());\r
+    SetLableTemplate(lableThirdTop);\r
+    lableThirdTop->SetViewId(LABLE_THIRD_TOP);\r
+    Add(lableThirdTop);\r
+\r
+    lableUnitThirdTop->SetPosition(LABLE_X, UNIT_TOP_Y, LABLE_W, UNIT_H);\r
+    lableUnitThirdTop->SetText(lableUnit.c_str());\r
+    SetUnitLableTemplate(lableUnitThirdTop);\r
+    Add(lableUnitThirdTop);\r
+    return true;\r
+}\r
+\r
+void MotionPageThird::SetUnitLableTemplate(UILabel *label)\r
+{\r
+    if (label == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SetUnitLableTemplate label nullptr");\r
+        return;\r
+    }\r
+    label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30 : font data\r
+    label->SetStyle(STYLE_BACKGROUND_COLOR, OPA_TRANSPARENT);\r
+    label->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+        UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+}\r
+\r
+bool MotionPageThird::InitPageThirdLableBottomView()\r
+{\r
+    string lable;\r
+    string lableUnit;\r
+    lable = IndoorWalkModel::GetInstance()->GetTextLableThirdBottom();\r
+    lableUnit = IndoorWalkModel::GetInstance()->GetTextLableUnitThirdBottom();\r
+    if (strcmp(lableUnit.c_str(), "步数(steps)") == 0) {\r
+        lable = "0";\r
+    } else if (strcmp(lableUnit.c_str(), "时间") == 0) {\r
+        lable = "00:00:00";\r
+    } else if (strcmp(lableUnit.c_str(), "距离(km)") == 0) {\r
+        lable = "0.00";\r
+    }\r
+    lableThirdBottom = new UILabel();\r
+    lableUnitThirdBottom = new UILabel();\r
+    if ((lableThirdBottom == nullptr) || (lableUnitThirdBottom == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "lableThirdBottom new fail");\r
+        return false;\r
+    }\r
+    lableThirdBottom->SetPosition(LABLE_X, BOTTOM_Y, LABLE_W, LABLE_H);\r
+    lableThirdBottom->SetText(lable.c_str());\r
+    SetLableTemplate(lableThirdBottom);\r
+    lableThirdBottom->SetViewId(LABLE_THIRD_BOTTOM);\r
+    Add(lableThirdBottom);\r
+\r
+    lableUnitThirdBottom->SetPosition(LABLE_X, UNIT_BOTTOM_Y, LABLE_W, UNIT_H);\r
+    lableUnitThirdBottom->SetText(lableUnit.c_str());\r
+    SetUnitLableTemplate(lableUnitThirdBottom);\r
+    Add(lableUnitThirdBottom);\r
+    return true;\r
+}\r
+\r
+UILabel *MotionPageThird::GetLableThirdTop(void)\r
+{\r
+    return lableThirdTop;\r
+}\r
+\r
+UILabel *MotionPageThird::GetLableUnitThirdTop(void)\r
+{\r
+    return lableUnitThirdTop;\r
+}\r
+\r
+UILabel *MotionPageThird::GetLableThirdBottom(void)\r
+{\r
+    return lableThirdBottom;\r
+}\r
+\r
+UILabel *MotionPageThird::GetLableUnitThirdBottom(void)\r
+{\r
+    return lableUnitThirdBottom;\r
+}\r
+\r
+bool MotionPageThird::InitPageThirdImageView()\r
+{\r
+    imageThirdTop = new UIImageView();\r
+    imageThirdBottom = new UIImageView();\r
+    if ((imageThirdTop == nullptr) || (imageThirdBottom == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "imageThird new fail");\r
+        return false;\r
+    }\r
+    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::IndoorWalkPresenter::GetInstance();\r
+    if (clickListener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "clickListener GetInstance fail");\r
+        return false;\r
+    }\r
+    imageThirdTop->SetPosition(LABLE_X, TOP_Y);\r
+    imageThirdTop->SetSrc(PNG_OPTIONS_BOX3_IMAGE);\r
+    imageThirdTop->SetViewId(IMAGE_THIRD_TOP);\r
+    imageThirdTop->SetOnClickListener(clickListener);\r
+    imageThirdTop->SetTouchable(true);\r
+    Add(imageThirdTop);\r
+\r
+    imageThirdBottom->SetPosition(LABLE_X, BOTTOM_Y);\r
+    imageThirdBottom->SetSrc(PNG_OPTIONS_BOX3_IMAGE);\r
+    imageThirdBottom->SetViewId(IMAGE_THIRD_BOTTOM);\r
+    imageThirdBottom->SetOnClickListener(clickListener);\r
+    imageThirdBottom->SetTouchable(true);\r
+    Add(imageThirdBottom);\r
+    return true;\r
+}\r
+\r
+void MotionPageThird::HideInitPageThirdImageView()\r
+{\r
+    if ((imageThirdTop == nullptr) || (imageThirdBottom == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HideInitPageThirdImageView imageThird nullptr");\r
+        return;\r
+    }\r
+    imageThirdTop->SetVisible(false);\r
+    imageThirdBottom->SetVisible(false);\r
+}\r
+\r
+void MotionPageThird::ShowInitPageThirdImageView()\r
+{\r
+    if ((imageThirdTop == nullptr) || (imageThirdBottom == nullptr)) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ShowInitPageThirdImageView imageThird nullptr");\r
+        return;\r
+    }\r
+    imageThirdTop->SetVisible(true);\r
+    imageThirdBottom->SetVisible(true);\r
+}\r
+\r
+bool MotionPageThird::InitView(void *caller)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MotionPageThird InitView %p", caller);\r
+    bool ret;\r
+    backGroundThird = new UIImageView();\r
+    if (backGroundThird == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "backGroundThird new fail");\r
+        return false;\r
+    }\r
+    backGroundThird->SetPosition(0, 0); // 0 : X; 0 : Y\r
+    backGroundThird->SetSrc(PNG_WALK_BACK_GROUND);\r
+    Add(backGroundThird);\r
+    ret = InitPageThirdLableTopView();\r
+    if (ret == false) {\r
+        return false;\r
+    }\r
+    ret = InitPageThirdLableBottomView();\r
+    if (ret == false) {\r
+        return false;\r
+    }\r
+    ret = InitPageThirdImageView();\r
+    if (ret == false) {\r
+        return false;\r
+    }\r
+    HideInitPageThirdImageView();\r
+    SetTouchable(true);\r
+    return true;\r
+}\r
 }
\ No newline at end of file
index 8b017a3..b9724f9 100644 (file)
@@ -1,36 +1,36 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: KeyPresenter.h
- * Author:
- * Create: 2021-09-18
- */
-
-#ifndef KEY_INPUT_LISTENER_H
-#define KEY_INPUT_LISTENER_H
-
-#include "VolumeSettingView.h"
-#include "VolumeSettingPresenter.h"
-#include "components/root_view.h"
-#include "events/key_event.h"
-#include "ohos_types.h"
-
-namespace OHOS {
-class KeyInputListener : public RootView::OnKeyActListener {
-public:
-    explicit KeyInputListener() {}
-    virtual ~KeyInputListener() {}
-    bool OnKeyAct(UIView& view, const KeyEvent& event) override;
-
-private:
-    void OnKeyPress(void);
-    void OnKeyLongPress(const KeyEvent& event);
-    void OnKeyRelease(const KeyEvent& event);
-    void CallVolumeDipSwitchControl(uint8_t status);
-    void PlayerVolumeDipSwitchControl(uint8_t model);
-private:
-    int32 pressFlag{0};
-    int32 longPressFlag{0};
-    VolumeSliderEventListener *volumeSliderEventListener{nullptr};
-};
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: KeyPresenter.h\r
+ * Author:\r
+ * Create: 2021-09-18\r
+ */\r
+\r
+#ifndef KEY_INPUT_LISTENER_H\r
+#define KEY_INPUT_LISTENER_H\r
+\r
+#include "VolumeSettingView.h"\r
+#include "VolumeSettingPresenter.h"\r
+#include "components/root_view.h"\r
+#include "events/key_event.h"\r
+#include "ohos_types.h"\r
+\r
+namespace OHOS {\r
+class KeyInputListener : public RootView::OnKeyActListener {\r
+public:\r
+    explicit KeyInputListener() {}\r
+    virtual ~KeyInputListener() {}\r
+    bool OnKeyAct(UIView& view, const KeyEvent& event) override;\r
+\r
+private:\r
+    void OnKeyPress(void);\r
+    void OnKeyLongPress(const KeyEvent& event);\r
+    void OnKeyRelease(const KeyEvent& event);\r
+    void CallVolumeDipSwitchControl(uint8_t status);\r
+    void PlayerVolumeDipSwitchControl(uint8_t model);\r
+private:\r
+    int32 pressFlag{0};\r
+    int32 longPressFlag{0};\r
+    VolumeSliderEventListener *volumeSliderEventListener{nullptr};\r
+};\r
+}\r
 #endif // KEY_INPUT_LISTENER_H
\ No newline at end of file
index 23c3f83..b00cd41 100644 (file)
@@ -32,6 +32,18 @@ static bool IsCallingNotify()
     }
 }
 
+static bool IsNotifyCallStatus()
+{
+    uint16_t notifyId = NotificationManager::GetInstance()->GetShowingNotifyId();
+    if (NotificationManager::GetInstance()->hasNotifyShowing() == true &&
+        (notifyId == TOPIC_EVENT_HFP_WATCH_ACTIVE ||
+         notifyId == TOPIC_EVENT_HFP_PHONE_TO_WATCH)) {
+        return true;
+    } else {
+        return false;
+    }
+}
+
 static void PressAlarmNotify()
 {
     uint16_t notifyId = NotificationManager::GetInstance()->GetShowingNotifyId();
@@ -53,7 +65,6 @@ void KeyInputListener::OnKeyLongPress(const KeyEvent& event)
     longPressFlag = 1; // 长按标志
 
     uint16 keyID = event.GetKeyId();
-    WEARABLE_LOGD("","into key! keyID %u\n",keyID);
     if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER)) { // 电源按键
         // 切换到关机/重启卡片
         NativeAbility::GetInstance().ChangeSlice(VIEW_SHUTDOWN_OR_REBOOT);
@@ -77,41 +88,38 @@ void KeyInputListener::CallVolumeDipSwitchControl(uint8_t model)
             CallerLogModel::GetInstance()->SetVolumeScreenStatus(true);
         }
     }
+    if (IsNotifyCallStatus() == true) {
+        if (NotificationManager::GetInstance()->GetVolumeScreenStatus() == true) {
+            volumeSliderEventListener = VolumeSliderEventListener::GetInstance();
+            if (volumeSliderEventListener == nullptr) {
+                return;
+            }
+            volumeSliderEventListener->ChangeVolume(model);
+        } else {
+            HonrsViewChange();
+            NotificationManager::GetInstance()->SetVolumeScreenStatus(true);
+        }
+    }
 }
-extern "C" {
-    uint32_t mcu_pm_lcd_on(uint8_t *para, uint32_t para_len);
-    uint32_t mcu_pm_lcd_off(uint8_t *para, uint32_t para_len);
-    uint8_t mcu_pms_is_screen_on(void);
-}
+
 void KeyInputListener::OnKeyRelease(const KeyEvent& event)
 {
     uint16_t currentViewId = NativeAbility::GetInstance().GetCurSliceId();
     uint16 keyID = event.GetKeyId();
     if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER)) { // 电源按键
         if (longPressFlag == 0 && pressFlag == 1) { // 短按电源键
-
-
             if (currentViewId == VIEW_INCOMING_CALL || IsCallingNotify() == true) { // 音量卡片
                 // 音量+
                 CallVolumeDipSwitchControl(1);
-            }else if (currentViewId != VIEW_MAIN) { // 主表盘
-                if(mcu_pms_is_screen_on()){ //只有亮屏的时候才做界面切换
-                    PressAlarmNotify(); // 当前为闹钟通知页面时,先处理闹钟再切换页面
-                    NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN, TRANSITION_ZOOM);
-                }
+            } else if (currentViewId != VIEW_MAIN) { // 主表盘
+                PressAlarmNotify(); // 当前为闹钟通知页面时,先处理闹钟再切换页面
+                NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN, TRANSITION_ZOOM);
             } else {
-                if (!MainViewSample::GetInstance()->IsMainView()) { // 当前页面为主表盘的其他页面时,切换回主表盘页面
-                    if(mcu_pms_is_screen_on()){ //只有亮屏的时候才做界面切换
-                        PressAlarmNotify(); // 当前为闹钟通知页面时,先处理闹钟再切换页面
-                        NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);
-                    }
+                PressAlarmNotify(); // 当前为闹钟通知页面时,先处理闹钟再切换页面
+                if (!MainViewSample::GetInstance()->IsMainClockPage()) { // 当前页面为主表盘的其他页面时,切换回主表盘页面
+                    MainViewSample::GetInstance()->SwitchToClockPage();
                 } else {
-                    //power键要进入休眠
-                    if(mcu_pms_is_screen_on()){
-                        mcu_pm_lcd_off(NULL,0);
-                    }else{
-                        mcu_pm_lcd_on(NULL,0);
-                    }
+                    NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST, TRANSITION_ZOOM);
                 }
             }
         }
@@ -120,20 +128,8 @@ void KeyInputListener::OnKeyRelease(const KeyEvent& event)
             if (currentViewId == VIEW_INCOMING_CALL || IsCallingNotify() == true) { // 音量卡片
                 // 音量-
                 CallVolumeDipSwitchControl(0);
-            } else if (currentViewId != VIEW_MAIN) { // 主表盘
-               if(mcu_pms_is_screen_on()){ //只有亮屏的时候才做界面切换
-                    PressAlarmNotify(); // 当前为闹钟通知页面时,先处理闹钟再切换页面
-                    NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN, TRANSITION_ZOOM);
-               }
             } else {
-                if(mcu_pms_is_screen_on()){ //只有亮屏的时候才做界面切换
-                   PressAlarmNotify(); // 当前为闹钟通知页面时,先处理闹钟再切换页面
-                    if (!MainViewSample::GetInstance()->IsMainView()) { // 当前页面为主表盘的其他页面时,切换回主表盘页面
-                        NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);
-                    } else {
-                        NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST, TRANSITION_ZOOM);
-                    }
-                }
+                // 切换到用户配置的快捷卡片
             }
         }
     }
index 554625c..137c189 100644 (file)
@@ -1,12 +1,12 @@
-/*** 
+/***
  * @Author: Caisking 3449750381@qq.com
  * @Date: 2023-12-13 19:33:14
  * @LastEditors: Caisking 3449750381@qq.com
  * @LastEditTime: 2024-01-17 19:53:31
  * @FilePath: /FD230/code/sdk/application/wearable/nativeapp/nativeui/main/include/MainPresenterSample.h
- * @Description: 
+ * @Description:
  * @
- * @Copyright (c) 2024 by Caisking , All Rights Reserved. 
+ * @Copyright (c) 2024 by Caisking , All Rights Reserved.
  */
 /*
  * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
 
 using namespace std;
 
-namespace OHOS {
-static constexpr const char *MAIN_CLICK_WEATHER = "mainclickweather";
-static constexpr const char *MAIN_CLICK_ACTIVITY = "mainclickactivity";
-static constexpr const char *MAIN_CLICK_MESSAGE = "mainclickmessage";
-static constexpr const char *MAIN_CLICK_HEARTRATE = "mainclickheartrate";
+namespace OHOS
+{
+    static constexpr const char *MAIN_CLICK_WEATHER = "mainclickweather";
+    static constexpr const char *MAIN_CLICK_ACTIVITY = "mainclickactivity";
+    static constexpr const char *MAIN_CLICK_MESSAGE = "mainclickmessage";
+    static constexpr const char *MAIN_CLICK_HEARTRATE = "mainclickheartrate";
 
-static constexpr const char *DROPDOWN_CLICK_DONOTDISTURB = "dropdownclickdonotdisturb";
-static constexpr const char *DROPDOWN_CLICK_BRIGHTENSCREEN = "dropdownclickbrightscreen";
+    static constexpr const char *DROPDOWN_CLICK_DONOTDISTURB = "dropdownclickdonotdisturb";
+    static constexpr const char *DROPDOWN_CLICK_BRIGHTENSCREEN = "dropdownclickbrightscreen";
 
-static constexpr const char *DROPDOWN_CLICK_ALARM = "dropdownclickalarm";
-static constexpr const char *DROPDOWN_CLICK_SETTING = "dropdownclicksetting";           //设置
-static constexpr const char *DROPDOWN_CLICK_LIGHTING = "dropdownclicklighting";         //亮屏
-static constexpr const char *DROPDOWN_CLICK_BLUETOOTH = "dropdownclickbluetooth";       //蓝牙
-static constexpr const char *DROPDOWN_CLICK_SAVEELE = "dropdownclicksaveele";           //省电
-static constexpr const char *DROPDOWN_CLICK_FINDMYPHONE = "dropdownclickfindmyphone";   //找手机
+    static constexpr const char *DROPDOWN_CLICK_ALARM = "dropdownclickalarm";
+    static constexpr const char *DROPDOWN_CLICK_SETTING = "dropdownclicksetting";         // 设置
+    static constexpr const char *DROPDOWN_CLICK_LIGHTING = "dropdownclicklighting";       // 亮屏
+    static constexpr const char *DROPDOWN_CLICK_BLUETOOTH = "dropdownclickbluetooth";     // 蓝牙
+    static constexpr const char *DROPDOWN_CLICK_SAVEELE = "dropdownclicksaveele";         // 省电
+    static constexpr const char *DROPDOWN_CLICK_FINDMYPHONE = "dropdownclickfindmyphone"; // 找手机
 
-constexpr uint16_t VERTICAL_STATUS = 1;
-constexpr uint16_t HORIZONTAL_STATUS = 0;
+    constexpr uint16_t VERTICAL_STATUS = 1;
+    constexpr uint16_t HORIZONTAL_STATUS = 0;
 
-class MainViewSample;
-class MainPresenterSample : public Presenter<MainViewSample>, public ModelListenerSample,
-                            public UIView::OnClickListener, public UISwipeView::OnSwipeListener,
-                            public UISwipeView, public CompassPresenter, public UIView::OnLongPressListener {
-public:
-    MainPresenterSample();
-    virtual ~MainPresenterSample();
-    static MainPresenterSample *GetInstance(void);
-
-    void OnStart() override;
-    void OnPause() override;
-    void OnResume() override;
-    void OnStop() override;
-    virtual void Notify() override;
-    bool OnClick(UIView& view, const ClickEvent& event) override;
-      bool OnLongPress(UIView& view, const LongPressEvent& event) override;
-    virtual void OnSwipe(UISwipeView& view) override;
-    void setCallback(ZoomEffect* callback)
+    class MainViewSample;
+    class MainPresenterSample : public Presenter<MainViewSample>, public ModelListenerSample, public UIView::OnClickListener, public UISwipeView::OnSwipeListener, public UISwipeView, public CompassPresenter, public UIView::OnLongPressListener
     {
-        callback_ = callback;
-    }
+    public:
+        MainPresenterSample();
+        virtual ~MainPresenterSample();
+        static MainPresenterSample *GetInstance(void);
+
+        void OnStart() override;
+        void OnPause() override;
+        void OnResume() override;
+        void OnStop() override;
+        virtual void Notify() override;
+        bool OnClick(UIView &view, const ClickEvent &event) override;
+        virtual void OnSwipe(UISwipeView &view) override;
+        void SetPage(int8_t id);
+        void SetTaskPeroid(int page);
+        void setCallback(ZoomEffect *callback)
+        {
+            callback_ = callback;
+        }
+
+        void SetDialPath(std::string filePath)
+        {
+            filePath_ = filePath;
+        }
+
+        std::string GetDialPath()
+        {
+            return filePath_;
+        }
 
-private:
-    void ProcessDataNotify(void);
-    void SetCircleProgress(void);
-    void SetCompassRotate(void);
-    KeyInputListener *keyActListenr{nullptr};
-    ZoomEffect* callback_{nullptr};
-    uint8_t state = UICheckBox::UICheckBoxState::MAX_STATUS_NUM;
-    int16_t musicCount{0};
-    int64_t playerCurrentTime{0};
-    int64_t playerMusicDuration{0};
-    int64_t playerProgressVlaue{0};
-    int8_t entryTimes{1};
-};
+    private:
+        void ProcessDataNotify(void);
+        void SetCircleProgress(void);
+        void SetCompassRotate(void);
+        KeyInputListener *keyActListener_{nullptr};
+        ZoomEffect *callback_{nullptr};
+        uint8_t state = UICheckBox::UICheckBoxState::MAX_STATUS_NUM;
+        int16_t musicCount{0};
+        int64_t playerCurrentTime{0};
+        int64_t playerMusicDuration{0};
+        int64_t playerProgressVlaue{0};
+        int8_t entryTimes{1};
+        std::string filePath_;
+        bool isCompassSensorOpened_{false};
+    };
 }
 
 #endif // MAIN_PRESENTER_H
index 52d572a..be960f8 100644 (file)
 #include "ScreenModels.h"
 #include "ActivityWeekView.h"
 #include "compass/include/CompassControlView.h"
+#if USE_OFFLINE_DIAL
+#include "DialViewGroup.h"
+#else
 #include "MainClockView.h"
+#endif
 #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"
+
 #include "blood/include/BloodCardView.h"
 #include "traing/include/TraingView.h"
 #include "ApplistCardView.h"
@@ -68,27 +72,43 @@ namespace OHOS
             return mainSwipeGroup;
         }
 
-        bool IsMainView(void);
+        UICardPage *GetViewById(int16_t id) const
+        {
+            return recordCard[id];
+        }
+
+        void SwitchToClockPage(void)
+        {
+            if (mainClockView != nullptr)
+            {
+                SetPage(mainClockView->GetViewIndex());
+            }
+        }
+
+        bool IsMainClockPage(void);
         void SetDragFg(bool continFg);
         bool GetDragFg(void);
+        void SetPage(int16_t page);
 
     private:
-        int16_t maxPage{0};
-        bool continuDragFg{false};
         PullUpDownView *dropDownView{nullptr};
+#if USE_OFFLINE_DIAL
+        DialViewGroup *mainClockView{nullptr};
+#else
+        MainClockView *mainClockView{nullptr};
+#endif
+
         /* -------------------------------------------------------------------------- */
         MessageCardView *messageView{nullptr};
         UILabel *MessageLable = nullptr;
-        UIList *Messagelist = nullptr;
-        IconAdapter *list1adapter_ = nullptr;
-        List<IconItemNode *> *Messagelistdate = 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};
@@ -103,7 +123,6 @@ namespace OHOS
         void VerticalViewInit(void);
         void VertViewLoad(void);
         void HorViewLoad(void);
-        UICardPage *CreatePage(int32_t cardId);
     };
 } // namespace OHOS
 #endif // MAIN_VIEW_SAMPLE_H
index 80e288d..7c2bd82 100644 (file)
 #include "common/task.h"
 
 namespace OHOS {
-class ModelListenerSample : public Task {
+class ModelListenerSample : public HeapBase {
 public:
     ModelListenerSample();
     virtual ~ModelListenerSample();
     virtual void Notify(void) = 0;
-    virtual void Callback() override;
+    void Callback();
 };
 }
 #endif
index d25d24c..e655268 100644 (file)
@@ -1,22 +1,22 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
- * Description: Presenter task
- * Create: 2021-12-22
- */
- 
-#ifndef PRESENTER_TASK_H
-#define PRESENTER_TASK_H
-#include "common/task.h"
-
-namespace OHOS {
-class ModelListenerSample;
-class PresenterTask : public Task {
-public:
-    void SetModelListenr(ModelListenerSample* listener);
-    void Callback() override;
-    static PresenterTask* GetInstance();
-    void Init() override;
-    ModelListenerSample* taskListener{nullptr};
-};
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: Presenter task\r
+ * Create: 2021-12-22\r
+ */\r
+\r
+#ifndef PRESENTER_TASK_H\r
+#define PRESENTER_TASK_H\r
+#include "common/task.h"\r
+\r
+namespace OHOS {\r
+class ModelListenerSample;\r
+class PresenterTask : public Task {\r
+public:\r
+    void SetModelListener(ModelListenerSample* listener);\r
+    void Callback() override;\r
+    static PresenterTask* GetInstance();\r
+    void Init() override;\r
+    ModelListenerSample* taskListener{nullptr};\r
+};\r
+}\r
 #endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialArcLabelView.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialArcLabelView.h
new file mode 100644 (file)
index 0000000..ded3418
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag. 2023. All rights reserved.
+ */
+
+#ifndef DIAL_ARC_LABEL_VIEW_H
+#define DIAL_ARC_LABEL_VIEW_H
+
+#include "stdint.h"
+#include "DialView.h"
+#include "components/ui_arc_label.h"
+
+namespace OHOS {
+class DialArcLabelView : public UIArcLabel, public DialView {
+public:
+    DialArcLabelView();
+    virtual ~DialArcLabelView();
+
+    bool SetText(const char* text);
+    bool SetTextWithWildcard(const char* text);
+    void HandleTextData(const std::string* data, uint16_t num) override;
+    void HandleFloatData(const float* data, uint16_t num) override;
+    void HandleFloatData(float data) override;
+
+private:
+    void SetTextWithWildcardInner(const char* text);
+    static const uint8_t MAX_BUF_SIZE = 255;
+    char* text_ = nullptr;
+    char dstBuf_[MAX_BUF_SIZE] = {0};
+};
+}
+#endif
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialArcProgressView.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialArcProgressView.h
new file mode 100644 (file)
index 0000000..eab0298
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag. 2023. All rights reserved.
+ */
+
+#ifndef DIAL_ARC_PROGRESS_VIEW_H
+#define DIAL_ARC_PROGRESS_VIEW_H
+
+#include "DialView.h"
+#include "components/ui_circle_progress.h"
+
+namespace OHOS {
+class DialArcProgressView : public UICircleProgress, public DialView {
+public:
+    DialArcProgressView();
+    virtual ~DialArcProgressView();
+    void HandleFloatData(float data) override;
+private:
+    int32_t value_ = -1;
+};
+}
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialBaseModel.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialBaseModel.h
new file mode 100644 (file)
index 0000000..1154955
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2023. All rights reserved.
+ * Description: DialBaseModel
+ * Author:
+ * Create: 2023-12
+ */
+
+#ifndef DIAL_BASE_MODEL_H
+#define DIAL_BASE_MODEL_H
+
+#include <cstdint>
+#include "heap_base.h"
+#include "OnDialDataUpdateListener.h"
+
+using namespace std;
+namespace OHOS {
+class DialBaseModel : public HeapBase {
+public:
+    DialBaseModel() {}
+    virtual ~DialBaseModel() {}
+
+    /* *
+     * @brief Regist on dial data change listener
+     */
+    void RegisterDialDataListener(OnDialDataUpdateListener* listener)
+    {
+        onChangeListener_ = listener;
+    }
+
+    /* *
+     * @brief Unregist on dial data change listener
+     */
+    void UnRegisterDialDataListener()
+    {
+        onChangeListener_ = nullptr;
+    }
+
+    /* *
+     * @brief Get dial data of text type
+     */
+    virtual bool GetDialTextData(DialDataType& type, string*& out, int16_t& strNum)
+    {
+        return false;
+    }
+
+    /* *
+     * @brief Get dial data of single float type
+     */
+    virtual bool GetDialFloatData(DialDataType& type, float& out)
+    {
+        return false;
+    }
+
+    /* *
+     * @brief Get dial data of multi float type
+     */
+    virtual bool GetDialFloatData(DialDataType& type, float*& out, int16_t len)
+    {
+        return false;
+    }
+
+protected:
+    OnDialDataUpdateListener* onChangeListener_ = nullptr;
+};
+}
+#endif
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialBoxProgressView.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialBoxProgressView.h
new file mode 100644 (file)
index 0000000..b5ea601
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag. 2023. All rights reserved.
+ */
+
+#ifndef DIAL_BOX_PROGRESS_VIEW_H
+#define DIAL_BOX_PROGRESS_VIEW_H
+
+#include "DialView.h"
+#include "components/ui_box_progress.h"
+
+namespace OHOS {
+class DialBoxProgressView : public UIBoxProgress, public DialView {
+public:
+    DialBoxProgressView();
+    virtual ~DialBoxProgressView();
+    void HandleFloatData(float data) override;
+private:
+    int32_t value_ = -1;
+};
+}
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialDataBase.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialDataBase.h
new file mode 100644 (file)
index 0000000..bfb1a05
--- /dev/null
@@ -0,0 +1,41 @@
+
+/*
+ * Copyright (c) CompanyNameMagicTag 2023. All rights reserved.
+ * Description: DialBaseModel
+ * Author:
+ * Create: 2023-12
+ */
+
+#ifndef DIAL_DATA_BASE_H
+#define DIAL_DATA_BASE_H
+
+enum class DialDataType
+{
+    DATA_TYPE_FLOAT_BASE = 0, 
+    DATA_TYPE_STEPS,          // 步数
+    DATA_TYPE_HEART_RATE,     // 心率
+    DATA_TYPE_CALORIE,        // 卡路里
+    DATA_TYPE_TEMPERATURE,    // 温度
+    DATA_TYPE_PM25,           // PM2.5
+    DATA_TYPE_PRESSURE,       // 压力
+    DATA_TYPE_AILTITUDE,      // 海拔
+    DATA_TYPE_POWER,          // 电量
+    DATA_TYPE_CLOCK_ANGLE_H,  // 时针角度
+    DATA_TYPE_CLOCK_ANGLE_M,  // 分针角度
+    DATA_TYPE_CLOCK_ANGLE_S,  // 秒针角度
+    DATA_TYPE_CLOCK_ANGLE_MS, // 毫秒针角度
+    DATA_TYPE_TIME_SECOND,    // 秒
+    DATA_TYPE_TIME_MINUTE,    // 分钟
+    DATA_TYPE_TIME_HOUR,      // 小时
+    DATA_TYPE_TIME_DATE,      // 日期
+    DATA_TYPE_TIME_WEEK,      // 星期
+    DATA_TYPE_TIME_MONTH,     // 月份
+    DATA_TYPE_TIME_YEAR,      // 年份
+
+    DATA_TYPE_MULTI_FLOAT_BASE = 0x2fff, // 多个浮点数据类型基值
+
+    DATA_TYPE_TEXT_BASE = 0x4fff, // 文本数据类型基值
+
+    DATA_TYPE_MAX = 0x7fff, // 数据类型的最大值
+};
+#endif
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialDigitalImgView.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialDigitalImgView.h
new file mode 100644 (file)
index 0000000..7a67038
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag. 2023. All rights reserved.
+ */
+
+#ifndef DIAL_DIGITAL_IMG_VIEW_H
+#define DIAL_DIGITAL_IMG_VIEW_H
+
+#include "stdint.h"
+#include "DialView.h"
+#include "components/ui_image_view.h"
+#include "gfx_utils/graphic_math.h"
+#include "components/ui_view_group.h"
+
+namespace OHOS {
+
+enum class ImgAlign {
+    LEFT,
+    CENTER,
+    RIGHT,
+};
+
+class DialDigitalImgView : public UIImageView, public DialView {
+public:
+    DialDigitalImgView();
+    virtual ~DialDigitalImgView();
+
+    void HandleFloatData(float data) override;
+
+    bool SetNumRes(const ImageInfo** src, uint16_t num);
+    void SetSignRes(const ImageInfo* src);
+    void SetDecimalPointRes(const ImageInfo* src);
+    void SetIntegerLength(uint8_t length);
+    void SetSpace(uint16_t space);
+    void SetAlign(ImgAlign align);
+    void SetAlignPos(Point pos);
+    void SetDecimalPrecision(uint8_t precision);
+    void SetParent(UIViewGroup* parent);
+
+private:
+    void SetNumImg(UIImageView* img, const ImageInfo *info);
+    void FillIntegerPart(uint16_t intVal);
+    void FillDecimalPart(uint16_t intVal);
+    void HandlePosition();
+    bool CreateImageViews(float data);
+
+    static const uint8_t NUM_IMG_MAX_SIZE = 10;
+    ImageInfo* numInfo_[NUM_IMG_MAX_SIZE];
+    uint16_t numCnt_ = 0;
+    ImageInfo* signInfo_ = nullptr;
+    ImageInfo* decimalPointInfo_ = nullptr;
+    uint16_t space_ = 0;
+    ImgAlign align_ = ImgAlign::LEFT;
+    Point alignPos_ = {0, 0};
+    uint8_t integerLength_ = 0;
+    uint8_t allocIntegerLen_ = 0;
+    uint8_t decimalPrecision_ = 0;
+    uint8_t currentIndex_ = 0;
+
+    UIViewGroup* parent_ = nullptr;
+    UIImageView** imgs_ = nullptr;
+    uint8_t imgCnt_ = 0;
+    bool isValueSet_ = false;
+    float value_ = 0.0f;
+};
+}
+#endif
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialLabelView.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialLabelView.h
new file mode 100644 (file)
index 0000000..133ae6b
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag. 2023. All rights reserved.
+ */
+
+#ifndef DIAL_LABEL_VIEW_H
+#define DIAL_LABEL_VIEW_H
+
+#include "stdint.h"
+#include "DialView.h"
+#include "components/ui_label.h"
+
+namespace OHOS {
+class DialLabelView : public UILabel, public DialView {
+public:
+    DialLabelView();
+    virtual ~DialLabelView();
+
+    bool SetText(const char* text);
+    bool SetTextWithWildcard(const char* text);
+    void HandleTextData(const std::string* data, uint16_t num) override;
+    void HandleFloatData(const float* data, uint16_t num) override;
+    void HandleFloatData(float data) override;
+
+private:
+    void SetTextWithWildcardInner(const char* text);
+    static const uint8_t MAX_BUF_SIZE = 255;
+    char* text_ = nullptr;
+    char dstBuf_[MAX_BUF_SIZE] = {0};
+};
+}
+#endif
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelHeartRate.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelHeartRate.h
new file mode 100644 (file)
index 0000000..9fd0909
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2023. All rights reserved.
+ * Description: DialModelHeartRate
+ * Author:
+ * Create: 2023-12
+ */
+
+#ifndef DIAL_MODEL_HEART_RATE_H
+#define DIAL_MODEL_HEART_RATE_H
+
+#include "DialBaseModel.h"
+
+namespace OHOS {
+class DialModelHeartRate : public DialBaseModel {
+public:
+    DialModelHeartRate() {}
+    virtual ~DialModelHeartRate() {}
+    static DialModelHeartRate* GetInstance()
+    {
+        static DialModelHeartRate instance;
+        return &instance;
+    }
+    bool GetDialFloatData(DialDataType& type, float& out) override;
+    void UpdateHeartRate(int16_t heartRate);
+
+private:
+    float heartRate_ = 67.0; // 67.0: default heart value as reference
+};
+}
+#endif
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelPower.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelPower.h
new file mode 100644 (file)
index 0000000..c09fbc8
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2023. All rights reserved.
+ * Description: DialModelPower
+ * Author:
+ * Create: 2023-12
+ */
+
+#ifndef DIAL_MODEL_POWER_H
+#define DIAL_MODEL_POWER_H
+
+#include "DialBaseModel.h"
+
+namespace OHOS {
+class DialModelPower : public DialBaseModel {
+public:
+    DialModelPower() {}
+    virtual ~DialModelPower() {}
+    static DialModelPower* GetInstance()
+    {
+        static DialModelPower instance;
+        return &instance;
+    }
+    bool GetDialFloatData(DialDataType& type, float& out) override;
+
+private:
+    int16_t power_ = 90; // 90: default power level
+};
+}
+#endif
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelSteps.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelSteps.h
new file mode 100644 (file)
index 0000000..412007d
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2023. All rights reserved.
+ * Description: DialModelSteps
+ * Author:
+ * Create: 2023-12
+ */
+
+#ifndef DIAL_MODEL_STEPS_H
+#define DIAL_MODEL_STEPS_H
+
+#include "DialBaseModel.h"
+
+namespace OHOS {
+class DialModelSteps : public DialBaseModel {
+public:
+    DialModelSteps() {}
+    virtual ~DialModelSteps() {}
+    static DialModelSteps* GetInstance()
+    {
+        static DialModelSteps instance;
+        return &instance;
+    }
+    bool GetDialFloatData(DialDataType& type, float& out) override;
+    void UpdateSteps(int16_t steps);
+
+private:
+    float steps_ = 11520.0; // 11520.0: default step value as reference
+};
+}
+#endif
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelTime.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelTime.h
new file mode 100644 (file)
index 0000000..d813c65
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2023. All rights reserved.
+ * Description: DialModelTime
+ * Author:
+ * Create: 2023-12
+ */
+
+#ifndef DIAL_MODEL_TIME_H
+#define DIAL_MODEL_TIME_H
+
+#include "DialBaseModel.h"
+
+namespace OHOS {
+class DialModelTime : public DialBaseModel {
+public:
+    DialModelTime() {}
+    virtual ~DialModelTime() {}
+    static DialModelTime* GetInstance()
+    {
+        static DialModelTime instance;
+        return &instance;
+    }
+    bool GetDialFloatData(DialDataType& type, float& out) override;
+    void UpdateTime();
+
+private:
+    struct tm *tblock_;
+    uint16_t angleH_ = 0;
+    uint16_t angleM_ = 0;
+    uint16_t angleS_ = 0;
+    float angleMS_ = 0;
+};
+}
+#endif
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialOptionImgView.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialOptionImgView.h
new file mode 100644 (file)
index 0000000..837b244
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag. 2023. All rights reserved.
+ */
+
+#ifndef DIAL_OPTION_IMG_VIEW_H
+#define DIAL_OPTION_IMG_VIEW_H
+
+#include "stdint.h"
+#include "DialView.h"
+#include "components/ui_image_view.h"
+
+namespace OHOS {
+
+class DialOptionImgView : public UIImageView, public DialView {
+public:
+    DialOptionImgView();
+    virtual ~DialOptionImgView();
+
+    void HandleFloatData(float data) override;
+
+    bool SetOptionRes(const ImageInfo* src, uint16_t num);
+
+private:
+    ImageInfo* info_ = nullptr;
+    uint16_t infoNum_ = 0;
+    int16_t selected_ = -1;
+};
+}
+#endif
+/**
+ * @}
+ */
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialRotateImgView.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialRotateImgView.h
new file mode 100644 (file)
index 0000000..23d49eb
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag. 2023. All rights reserved.
+ */
+
+#ifndef DIAL_ROTATE_IMG_VIEW_H
+#define DIAL_ROTATE_IMG_VIEW_H
+
+#include "stdint.h"
+#include "DialView.h"
+#include "components/ui_image_view.h"
+#include "gfx_utils/graphic_math.h"
+
+namespace OHOS {
+
+class DialRotateImgView : public UIImageView, public DialView {
+public:
+    DialRotateImgView();
+    virtual ~DialRotateImgView();
+
+    void HandleFloatData(float data) override;
+
+    void SetRotatePivot(const Vector2<float>& pivot);
+    void SetRotateStart(float rotateStart);
+    void SetRotateEnd(float rotateEnd);
+
+private:
+    Vector2<float> rotatePivot_ = {0.0f, 0.0f};
+    float rotateStart_ = 0.0f;
+    float rotateEnd_ = 360.0f;
+    bool isRotateSet_ = false;
+    float rotate_ = 0.0f;
+};
+}
+#endif
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialSequenceImgView.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialSequenceImgView.h
new file mode 100644 (file)
index 0000000..ef885b6
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag. 2023. All rights reserved.
+ */
+
+#ifndef DIAL_SEQUENCE_IMG_VIEW_H
+#define DIAL_SEQUENCE_IMG_VIEW_H
+
+#include "components/ui_image_animator.h"
+
+namespace OHOS {
+
+class DialSequenceImgView : public UIImageAnimatorView {
+public:
+    DialSequenceImgView();
+    virtual ~DialSequenceImgView();
+
+    bool SetSequenceRes(const ImageAnimatorInfo* imgSrc, uint8_t imgNum);
+
+private:
+    ImageAnimatorInfo* imgSrc_ = nullptr;
+    uint8_t imgNum_ = 0;
+};
+}
+#endif
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialStaticImgView.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialStaticImgView.h
new file mode 100644 (file)
index 0000000..a405bd8
--- /dev/null
@@ -0,0 +1,17 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag. 2023. All rights reserved.
+ */
+
+#ifndef DIAL_STATIC_IMG_VIEW_H
+#define DIAL_STATIC_IMG_VIEW_H
+
+#include "components/ui_image_view.h"
+
+namespace OHOS {
+class DialStaticImgView : public UIImageView {
+public:
+    DialStaticImgView();
+    virtual ~DialStaticImgView();
+};
+}
+#endif
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialVideoView.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialVideoView.h
new file mode 100644 (file)
index 0000000..eca3227
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag. 2023. All rights reserved.
+ */
+
+#ifndef DIAL_VIDEO_VIEW
+#define DIAL_VIDEO_VIEW
+
+#include "stdint.h"
+#include "components/ui_lite_surface_view.h"
+#include "video_play_wrapper.h"
+
+namespace OHOS {
+class DialVideoView : public UILiteSurfaceView {
+public:
+    DialVideoView();
+    virtual ~DialVideoView();
+    bool SetVideoRes(FILE* fp, uint32_t offset);
+    bool StartPlay();
+    bool ResumePlay();
+    bool PausePlay();
+    bool StopPlay();
+    bool IsPaused();
+    bool IsPlayed();
+    bool IsStopped();
+
+private:
+    FILE* fp_ = nullptr;
+    uint32_t offset_ = 0;
+    MediaVideoPlay* videoPlayer_ = nullptr;
+};
+}
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialView.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialView.h
new file mode 100644 (file)
index 0000000..4f933a0
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag. 2023. All rights reserved.
+ */
+
+#ifndef DIAL_VIEW_H
+#define DIAL_VIEW_H
+
+#include "stdint.h"
+#include <string>
+
+namespace OHOS {
+
+class DialView {
+public:
+    DialView() {}
+    virtual ~DialView() {}
+
+    virtual void HandleFloatData(float data) {}
+    virtual void HandleFloatData(const float* data, uint16_t num) {}
+    virtual void HandleTextData(const std::string* data, uint16_t num) {}
+};
+}
+#endif
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialViewGroup.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialViewGroup.h
new file mode 100644 (file)
index 0000000..91c68a8
--- /dev/null
@@ -0,0 +1,133 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2023. All rights reserved.
+ */
+
+#ifndef DIAL_VIEW_GROUP_H
+#define DIAL_VIEW_GROUP_H
+
+#include "DialDataBase.h"
+#include <unordered_map>
+#include "components/ui_view_group.h"
+#include "OnDialDataUpdateListener.h"
+#include "components/ui_card_page.h"
+#include "gfx_utils/list.h"
+#include "DialView.h"
+#include "DialVideoView.h"
+
+namespace OHOS {
+class DialViewGroup : public UICardPage, public OnDialDataUpdateListener {
+public:
+    DialViewGroup();
+    virtual ~DialViewGroup();
+
+    /**
+    * @brief  Set dial resource path.
+    */
+    void SetDial(std::string filePath);
+
+    /**
+    * @brief  Add a view which binds with data of a specific type and could be updated periodically.
+    */
+    void AddView(DialDataType type, DialView* view, bool isPeriodic = false);
+
+    /**
+    * @brief  Add a view. If the view is DialVideoView, the second parameter should be true.
+    */
+    void AddView(UIView* view, bool isDialVideoView = false);
+
+    /**
+    * @brief  Add a click rect. When the rect is clicked, it will start a js app with the given bundleName.
+    */
+    void AddDialClick(Rect& rect, const char* bundleName);
+
+    /**
+    * @brief  Add a click rect. When the rect is clicked, it will change to a slice with the given sliceId.
+    */
+    void AddDialClick(Rect& rect, uint32_t sliceId);
+
+    /**
+    * @brief  Set update period.
+    */
+    void SetPeriod(uint32_t period);
+
+    /**
+    * @brief  Get update period.
+    */
+    uint32_t GetPeriod(void);
+
+    /**
+    * @brief  Update views periodically.
+    */
+    void UpdateViewsByPeriodicUpdateData();
+
+    /**
+    * @brief  Dial float data update callback.
+    */
+    void OnDialFloatDataUpdate(DialDataType type, float data) override;
+
+    /**
+    * @brief  Dial multi-float data update callback.
+    */
+    void OnDialFloatDataUpdate(DialDataType type, const float* data, uint16_t num) override;
+
+    /**
+    * @brief  Dial text data update callback.
+    */
+    void OnDialTextDataUpdate(DialDataType type, const std::string* data, uint16_t num) override;
+
+    /**
+    * @brief  Click event callback.
+    */
+    bool OnClickEvent(const ClickEvent& event) override;
+
+    /**
+    * @brief  Preload resource callback.
+    */
+    void PreLoad(void) override;
+
+    /**
+    * @brief  Scroll begin callback. If a video is played, it will be paused.
+    */
+    void ScrollBegin(bool isActive) override;
+
+    /**
+    * @brief  Scroll end callback. If a video is paused or stopped, it will be resumed or started.
+    */
+    void ScrollEnd(bool isActive) override;
+
+    /**
+    * @brief  Cover begin callback. If a video is played, it will be paused.
+    */
+    void CoverBegin(bool isCovered) override;
+
+    /**
+    * @brief  Cover end callback. If a video is paused or stopped, it will be resumed or started.
+    */
+    void CoverEnd(bool isCovered) override;
+
+private:
+    void ProcessData(DialDataType type, DialView* view);
+    std::unordered_map<int16_t, DialView*> dataTypeMap_;
+    List<DialDataType> periodicUpdateTypes_;
+    List<DialDataType> passiveUpdateTypes_;
+    List<UIView*> dialViews_;
+    uint32_t period_ = DEFAULT_TASK_PERIOD;
+    bool resPreloaded_ = false;
+    std::string filePath_;
+    FILE* fp_ = nullptr;
+    DialVideoView* video_ = nullptr;
+
+    typedef struct {
+        Rect area;
+        bool isSliceType;
+        union {
+            uint32_t sliceId;
+            char* bundleName;
+        };
+    } DialClick;
+    List<DialClick> dialClicks_;
+
+    void ClearDial();
+};
+}
+#endif
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/ModelDialDataFactory.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/ModelDialDataFactory.h
new file mode 100644 (file)
index 0000000..602586a
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2023. All rights reserved.
+ * Description: ModelDialDataFactory
+ * Author:
+ * Create: 2023-12
+ */
+
+#ifndef MODE_DIAL_DATA_FACTORY
+#define MODE_DIAL_DATA_FACTORY
+
+#include <unordered_map>
+#include "DialBaseModel.h"
+#include "DialDataBase.h"
+#include "ModelDialDataFactory.h"
+
+namespace OHOS {
+class ModelDialDataFactory : public HeapBase {
+public:
+    ModelDialDataFactory() {}
+    virtual ~ModelDialDataFactory() {}
+
+    static ModelDialDataFactory& GetInstance()
+    {
+        static ModelDialDataFactory instance;
+        return instance;
+    }
+
+    void RegisterModel(DialDataType type, DialBaseModel* model)
+    {
+        models_[static_cast<int16_t>(type)] = model;
+    }
+
+    bool RegisterDialDataListener(DialDataType type, OnDialDataUpdateListener* listener);
+    bool UnRegisterDialDataListener(DialDataType type);
+    bool GetDialTextData(DialDataType& type, string*& out, int16_t& strNum);
+    bool GetDialFloatData(DialDataType& type, float& out);
+    bool GetDialFloatData(DialDataType& type, float*& out, int16_t& len);
+    DialBaseModel* GetModuleByType(DialDataType& type);
+    void DumpModules();
+
+private:
+    std::unordered_map<int16_t, DialBaseModel*> models_;
+};
+}
+#endif
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/OnDialDataUpdateListener.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/OnDialDataUpdateListener.h
new file mode 100644 (file)
index 0000000..c2af344
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2023. All rights reserved.
+ * Description: OnDialDataUpdateListener
+ * Author:
+ * Create: 2023-12
+ */
+
+#ifndef ON_DIAL_DATA_UPDATE_LISTENER_H
+#define ON_DIAL_DATA_UPDATE_LISTENER_H
+
+#include "DialDataBase.h"
+
+namespace OHOS {
+class OnDialDataUpdateListener : public HeapBase {
+public:
+    OnDialDataUpdateListener() {}
+    virtual ~OnDialDataUpdateListener() {}
+    virtual void OnDialFloatDataUpdate(DialDataType type, float data) {}
+    virtual void OnDialFloatDataUpdate(DialDataType type, const float* data, uint16_t num) {}
+    virtual void OnDialTextDataUpdate(DialDataType type, const std::string* data, uint16_t num) {}
+};
+}
+#endif
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/RegisterDialModel.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/RegisterDialModel.h
new file mode 100644 (file)
index 0000000..f648a5d
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2023. All rights reserved.
+ * Description: RegisterDialModel
+ * Author:
+ * Create: 2023-12
+ */
+
+#ifndef REGISTER_DIAL_MODEL_H
+#define REGISTER_DIAL_MODEL_H
+
+#include "DialDataBase.h"
+#include "ModelDialDataFactory.h"
+namespace OHOS {
+class RegisterDialModel {
+public:
+    RegisterDialModel(DialDataType type, DialBaseModel* func)
+    {
+        ModelDialDataFactory::GetInstance().RegisterModel(type, func);
+    }
+    virtual ~RegisterDialModel() {}
+};
+}
+
+#define REGIST_DIAL_MODULE(type, func) static OHOS::RegisterDialModel(REGIST_OCCURRENCES)(type, func)
+#endif
index 9a390ac..3672941 100644 (file)
 #include "ui_resource_image.h"
 #include <iostream>
 #include <map>
+#include "ModelDialDataFactory.h"
+#include "PresenterTask.h"
+#include "DialModelTime.h"
+#if USE_OFFLINE_DIAL
+#include "DialViewGroup.h"
+#endif
+#include "ui_service.h"
 
 namespace OHOS
 {
 
-map<string, AppViewId> g_jumpView = { { MAIN_CLICK_WEATHER, VIEW_MAIN },            // 天气界面
-                                      { MAIN_CLICK_ACTIVITY, VIEW_MAIN_ACTIVITY },         // 活动记录界面
-                                      { MAIN_CLICK_MESSAGE, VIEW_MAIN },            // 消息app
-                                      { MAIN_CLICK_HEARTRATE, VIEW_MAIN },          // 心率界面
-                                      { DROPDOWN_CLICK_SETTING,VIEW_SETTING},              // 设置
-                                      { DROPDOWN_CLICK_BLUETOOTH,VIEW_BLUETOOTH_EARPHONE}, // 蓝牙
-                                      };
+    map<string, AppViewId> g_jumpView = {
+        {MAIN_CLICK_WEATHER, VIEW_MAIN},                     // 天气界面
+        {MAIN_CLICK_ACTIVITY, VIEW_MAIN_ACTIVITY},           // 活动记录界面
+        {MAIN_CLICK_MESSAGE, VIEW_MAIN},                     // 消息app
+        {MAIN_CLICK_HEARTRATE, VIEW_MAIN},                   // 心率界面
+        {DROPDOWN_CLICK_SETTING, VIEW_SETTING},              // 设置
+        {DROPDOWN_CLICK_BLUETOOTH, VIEW_BLUETOOTH_EARPHONE}, // 蓝牙
+    };
 
     // map<string, int> g_chanColor = {         { DROPDOWN_CLICK_FINDMYPHONE, DROPDOWN_DROPDOWN_FIND_PHONE_B },
     //                                          { DROPDOWN_CLICK_APPLIST, DROPDOWN_DROPDOWN_FIND_PHONE_B},
@@ -41,8 +49,9 @@ map<string, AppViewId> g_jumpView = { { MAIN_CLICK_WEATHER, VIEW_MAIN },
 
     static constexpr uint16_t DROP_X_MAX = 360;
     static constexpr uint16_t PROGRESS_PERCENTAGE = 100;
-    static constexpr uint16_t PROGRESS_COUNTDOWN = 20;
     static constexpr uint16_t HORIZONTAL_SWIPE = 1;
+    static constexpr uint16_t PLAYER_PERIOD = 500;
+    static constexpr uint16_t MAX_PERIOD = 1000;
 
     MainPresenterSample::MainPresenterSample()
     {
@@ -63,12 +72,12 @@ map<string, AppViewId> g_jumpView = { { MAIN_CLICK_WEATHER, VIEW_MAIN },
     void MainPresenterSample::OnStart()
     {
         Presenter<MainViewSample>::OnStart();
-        if (keyActListenr == nullptr)
+        if (keyActListener_ == nullptr)
         {
-            keyActListenr = new KeyInputListener();
-            if (keyActListenr != nullptr)
+            keyActListener_ = new KeyInputListener();
+            if (keyActListener_ != nullptr)
             {
-                RootView::GetInstance()->SetOnKeyActListener(keyActListenr);
+                RootView::GetInstance()->SetOnKeyActListener(keyActListener_);
             }
         }
     }
@@ -85,10 +94,10 @@ map<string, AppViewId> g_jumpView = { { MAIN_CLICK_WEATHER, VIEW_MAIN },
         }
         Presenter<MainViewSample>::OnStop();
         RootView::GetInstance()->ClearOnKeyActListener();
-        if (keyActListenr != nullptr)
+        if (keyActListener_ != nullptr)
         {
-            delete keyActListenr;
-            keyActListenr = nullptr;
+            delete keyActListener_;
+            keyActListener_ = nullptr;
         }
     }
 
@@ -97,74 +106,108 @@ map<string, AppViewId> g_jumpView = { { MAIN_CLICK_WEATHER, VIEW_MAIN },
         UNUSED(event);
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "StatusButtonClickListener: %s", view.GetViewId());
         string curViewId = view.GetViewId();
-
+#if 0
         UIImageView *imgView = static_cast<UIImageView *>(&view);
         if (HealthModel::GetInstance() == nullptr)
         {
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "health model nullptr");
             return false;
         }
-#if 0
-    if (curViewId == DROPDOWN_CLICK_DONOTDISTURB) {
-        if (HealthModel::GetInstance()->GetDntDistStatus() == 0) {
-            ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, imgView, DROPDOWN_DROPDOWN_DN_DISTURB_B);
-            HealthModel::GetInstance()->UpdateDntDistStatus(1);
-        } else {
-            ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, imgView, DROPDOWN_DROPDOWN_DN_DISTURB);
-            HealthModel::GetInstance()->UpdateDntDistStatus(0);
+        if (curViewId == DROPDOWN_CLICK_DONOTDISTURB)
+        {
+            if (HealthModel::GetInstance()->GetDntDistStatus() == 0)
+            {
+                ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, imgView, DROPDOWN_DROPDOWN_DN_DISTURB_B);
+                HealthModel::GetInstance()->UpdateDntDistStatus(1);
+            }
+            else
+            {
+                ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, imgView, DROPDOWN_DROPDOWN_DN_DISTURB);
+                HealthModel::GetInstance()->UpdateDntDistStatus(0);
+            }
         }
-    }
-    if (curViewId == DROPDOWN_CLICK_BRIGHTENSCREEN) {
-        if (HealthModel::GetInstance()->GetBriScrStatus() == 0) {
-            ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, imgView, DROPDOWN_DROPDOWN_BRI_SCREEN_B);
-            HealthModel::GetInstance()->UpdateBriScrStatus(1);
-        } else {
-            ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, imgView, DROPDOWN_DROPDOWN_BRI_SCREEN);
-            HealthModel::GetInstance()->UpdateBriScrStatus(0);
+        if (curViewId == DROPDOWN_CLICK_BRIGHTENSCREEN)
+        {
+            if (HealthModel::GetInstance()->GetBriScrStatus() == 0)
+            {
+                ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, imgView, DROPDOWN_DROPDOWN_BRI_SCREEN_B);
+                HealthModel::GetInstance()->UpdateBriScrStatus(1);
+                int32_t enable = 0;
+                SendMsgToUIService(SCREEN_OFF_ENABLE_TO_UI, 0, &enable, sizeof(int32_t));
+            }
+            else
+            {
+                ScreenModels::GetInstance()->LoadAppImages(DROPDOWN_IAMGES, imgView, DROPDOWN_DROPDOWN_BRI_SCREEN);
+                HealthModel::GetInstance()->UpdateBriScrStatus(0);
+                int32_t enable = 1;
+                SendMsgToUIService(SCREEN_OFF_ENABLE_TO_UI, 0, &enable, sizeof(int32_t));
+            }
         }
-    }
-#endif
-        if (g_jumpView.count(curViewId) != 0) {
+
+        if (g_jumpView.count(curViewId) != 0)
+        {
             NativeAbility::GetInstance().ChangeSlice(g_jumpView[curViewId]);
         }
+#endif
         return true;
     }
-    bool MainPresenterSample::OnLongPress(UIView &view, const LongPressEvent &event)
+
+    void MainPresenterSample::SetPage(int8_t id)
     {
-        //printf("coming LongPress\n");
-        UNUSED(event);
-        string curViewId = view.GetViewId();
-        // int page = MainViewSample::GetInstance()->GetHorCurrentPage();
-        // callback_->OnSwipe(view);
-        if (curViewId == CHANGEBUTTON)
+        if (view_ != nullptr)
+        {
+            view_->SetPage(id);
+        }
+    }
+
+    void MainPresenterSample::SetTaskPeroid(int page)
+    {
+        if (page == COMPASS)
+        {
+            PresenterTask::GetInstance()->SetPeriod(DEFAULT_TASK_PERIOD);
+        }
+        else if (page == WATCH_FACE)
+        {
+#if USE_OFFLINE_DIAL
+            uint32_t time = dynamic_cast<DialViewGroup *>(view_->GetViewById(WATCH_FACE))->GetPeriod();
+#else
+            uint32_t time = DEFAULT_TASK_PERIOD;
+#endif
+            PresenterTask::GetInstance()->SetPeriod(time);
+        }
+        else if (page == MUSIC_PLAYER)
         {
-            NativeAbility::GetInstance().ChangeSlice(VIEW_DIAL);
-            return true;
+            PresenterTask::GetInstance()->SetPeriod(PLAYER_PERIOD);
+        }
+        else
+        {
+            PresenterTask::GetInstance()->SetPeriod(MAX_PERIOD);
         }
     }
+
     void MainPresenterSample::OnSwipe(UISwipeView &view)
     {
         UNUSED(view);
-        int page = MainViewSample::GetInstance()->GetHorCurrentPage();
+        int page = view_->GetHorCurrentPage();
         callback_->OnSwipe(view);
+        SetTaskPeroid(page);
         if (page == COMPASS)
         {
-            if (entryTimes != 0)
+            if (!isCompassSensorOpened_)
             {
                 CompassModel::GetInstance()->OpenCompassSensor();
-                entryTimes = 0;
+                isCompassSensorOpened_ = true;
+            }
+            else if (entryTimes == 0)
+            {
+                CompassModel::GetInstance()->CloseCompassSensor();
+                entryTimes++;
             }
-        }
-        else if (entryTimes == 0)
-        {
-            CompassModel::GetInstance()->CloseCompassSensor();
-            entryTimes++;
-        }
 
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnSwipe OnSwipe");
-        return;
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnSwipe OnSwipe");
+            return;
+        }
     }
-
     void MainPresenterSample::ProcessDataNotify(void)
     {
         HealthMsg healthMsg;
@@ -184,7 +227,7 @@ map<string, AppViewId> g_jumpView = { { MAIN_CLICK_WEATHER, VIEW_MAIN },
 
     void MainPresenterSample::SetCircleProgress()
     {
-        PlayersView *playersView = PlayersView::GetInstance();
+        PlayersView *playersView = dynamic_cast<PlayersView *>(view_->GetViewById(MUSIC_PLAYER));
         if (playersView == nullptr)
         {
             return;
@@ -197,27 +240,19 @@ map<string, AppViewId> g_jumpView = { { MAIN_CLICK_WEATHER, VIEW_MAIN },
         state = playersView->GetPlayerButtonState();
         if (state == UICheckBox::UICheckBoxState::SELECTED)
         {
-            if (musicCount++ % PROGRESS_COUNTDOWN == 0)
+            PlayersModel::GetInstance()->GetPlayerCtr()->GetCurrentTime(playerCurrentTime);
+            PlayersModel::GetInstance()->GetDuration(playerMusicDuration);
+            if (playerMusicDuration != 0)
             {
-                PlayersModel::GetInstance()->GetPlayerCtr()->GetCurrentTime(playerCurrentTime);
-                PlayersModel::GetInstance()->GetDuration(playerMusicDuration);
-                if (playerMusicDuration != 0)
-                {
-                    playerProgressVlaue = (playerCurrentTime * PROGRESS_PERCENTAGE) / playerMusicDuration;
-                    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playerProgressVlaue %lld", playerProgressVlaue);
-                }
-                else
-                {
-                    playerProgressVlaue = 100;
-                }
-                PlayersModel::GetInstance()->SetCircleProgress(playerProgressVlaue);
-                GraphicService::GetInstance()->PostGraphicEvent(std::bind(&PlayersPresenter::SetPlaybackProgress,
-                                                                          PlayersPresenter::GetInstance(), playerProgressVlaue));
+                playerProgressVlaue = (playerCurrentTime * PROGRESS_PERCENTAGE) / playerMusicDuration;
+                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playerProgressVlaue %lld", playerProgressVlaue);
             }
-            if (musicCount >= PROGRESS_COUNTDOWN)
+            else
             {
-                musicCount = 0;
+                playerProgressVlaue = 100; // 100: max progress value
             }
+            PlayersModel::GetInstance()->SetCircleProgress(playerProgressVlaue);
+            PlayersPresenter::GetInstance()->SetPlaybackProgress(playerProgressVlaue);
         }
     }
 
@@ -248,8 +283,23 @@ map<string, AppViewId> g_jumpView = { { MAIN_CLICK_WEATHER, VIEW_MAIN },
 
     void MainPresenterSample::Notify(void)
     {
-        SetCircleProgress();
-        SetCompassRotate();
+        if (view_->GetHorCurrentPage() == COMPASS)
+        {
+            SetCompassRotate();
+        }
+        else if (view_->GetHorCurrentPage() == MUSIC_PLAYER)
+        {
+            SetCircleProgress();
+        }
+        else if (view_->GetHorCurrentPage() == WATCH_FACE)
+        {
+#if USE_OFFLINE_DIAL
+            DialModelTime::GetInstance()->UpdateTime();
+            dynamic_cast<DialViewGroup *>(view_->GetViewById(WATCH_FACE))->UpdateViewsByPeriodicUpdateData();
+#else
+            dynamic_cast<MainClockView *>(view_->GetViewById(WATCH_FACE))->UpdateTime();
+#endif
+        }
     }
 
-}
+}
\ No newline at end of file
index a6a5973..779cdaf 100644 (file)
@@ -26,13 +26,13 @@ namespace OHOS
     };
 
     static const MainViewMapper PageMapper[] = {
-        {NEW_DAIL, &MainViewSample::InitWatchFacePage},
+        {WATCH_FACE, &MainViewSample::InitWatchFacePage},
         {HEART_RATE, &MainViewSample::InitHeartRatePage},
         {BloodOxygen, &MainViewSample::InitBloodOxygenPage},
         {TRAINING, &MainViewSample::InitTrainingPage},
         {COMPASS, &MainViewSample::InitCompassPage},
         {WEATHER, &MainViewSample::InitWeatherPage},
-        {PLAYER, &MainViewSample::InitMusicPlayerPage},
+        {MUSIC_PLAYER, &MainViewSample::InitMusicPlayerPage},
 #if 0
         {APPLIST,&MainViewSample::InitApplistPage}
 #endif
@@ -49,28 +49,24 @@ namespace OHOS
         dropDownView->ClearBackgroundBlur();
         messageView->ClearBackgroundBlur();
 
-        for (int32_t i = 0; i < maxPage; i++)
+        for (int32_t i = 0; i < MAX_CARD; i++)
         {
             recordCard[i] = nullptr;
             pageStatus[i] = false;
         }
-        mainSwipeGroup->RemoveAll();
-        /* -------------------------------------------------------------------------- */
-#if 0
-        UIView *view = static_cast<UICrossView *>(MainViewSample::mainSwipeGroup)->GetChildrenHead();
-        while (view != nullptr)
+
+        if (mainSwipeGroup != nullptr)
         {
-            printf("delete\n");
-            UIView *tempView = view;
-            view = view->GetNextSibling();
-            if (tempView->GetParent())
-            {
-                static_cast<UICardPage *>(tempView->GetParent())->Remove(tempView);
-            }
-            delete tempView;
+            delete mainSwipeGroup;
+            mainSwipeGroup = nullptr;
         }
-#endif
-        /* -------------------------------------------------------------------------- */
+
+        if (mainClockView != nullptr)
+        {
+            delete mainClockView;
+            mainClockView = nullptr;
+        }
+
         if (activityWeekView != nullptr)
         {
             delete activityWeekView;
@@ -105,16 +101,6 @@ namespace OHOS
             delete MessageLable;
             MessageLable = nullptr;
         }
-        if (Messagelist != nullptr)
-        {
-            delete Messagelist;
-            Messagelist = nullptr;
-        }
-        if (list1adapter_ != nullptr)
-        {
-            delete list1adapter_;
-            list1adapter_ = nullptr;
-        }
         /* -------------------------------------------------------------------------- */
         if (compassControlView != nullptr)
         {
@@ -128,11 +114,6 @@ namespace OHOS
             delete mainClockView;
             mainClockView = nullptr;
         }
-        if (dialView != nullptr)
-        {
-            delete dialView;
-            dialView = nullptr;
-        }
         if (bloodView != nullptr)
         {
             // bloodView->RemoveAll();
@@ -199,8 +180,7 @@ namespace OHOS
         mainSwipeGroup->SetLoopState(true);
         mainSwipeGroup->EnableScreenCap(true);
         mainSwipeGroup->RegisterSwipeCallback(callback);
-        // 卡片切换
-        mainSwipeGroup->SetHorCurrentPage(mainClockView->GetViewIndex());
+        SwitchToClockPage();
         SetContainerView(mainSwipeGroup);
     }
 
@@ -209,12 +189,9 @@ namespace OHOS
         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++)
+        for (int16_t i = 0; i < MAX_CARD; i++)
         {
-            recordCard[i] = CreatePage(i);
+            recordCard[i] = (this->*(PageMapper[i].func))();
             if (recordCard[i] == nullptr)
             {
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainViewSample:: recordCard %d error", i);
@@ -236,7 +213,7 @@ namespace OHOS
 
     void MainViewSample::HorViewLoad(void)
     {
-        for (int16_t i = 0; i < maxPage; i++)
+        for (int16_t i = 0; i < MAX_CARD; i++)
         {
             mainSwipeGroup->HorAdd(recordCard[i]);
         }
@@ -352,7 +329,18 @@ namespace OHOS
 
     UICardPage *MainViewSample::InitWatchFacePage(void)
     {
-        mainClockView = new Digital_clockView();
+#if USE_OFFLINE_DIAL
+        mainClockView = new DialViewGroup();
+        std::string filePath = dynamic_cast<MainPresenterSample *>(presenter_)->GetDialPath();
+        if (filePath.size() == 0)
+        {
+            filePath = RES_PATH "maomao.bin";
+        }
+        mainClockView->SetDial(filePath);
+#else
+        mainClockView = new MainClockView();
+#endif
+
         if (mainClockView == nullptr)
         {
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainClockView new fail");
@@ -426,7 +414,6 @@ namespace OHOS
         }
         return traingView;
     }
-
     // 主界面天气卡片
     UICardPage *MainViewSample::InitWeatherPage(void)
     {
@@ -438,69 +425,22 @@ namespace OHOS
         }
         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)
+    void MainViewSample::SetPage(int16_t page)
     {
-        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))
+        if (mainSwipeGroup != nullptr)
         {
-            dialView->ClockAnimatorStart();
+            mainSwipeGroup->SetHorCurrentPage(page);
         }
-    }
 
-    void MainViewSample::AnimatorStop(void)
-    {
-        if (heartRateView != nullptr)
-        {
-            heartRateView->HeartbeatImageAnimatorStop();
-        }
-        if (dialView != nullptr)
+        if (presenter_ != nullptr)
         {
-            dialView->ClockAnimatorStop();
+            presenter_->SetTaskPeroid(page);
         }
     }
 
-    bool MainViewSample::IsMainView(void)
+    bool MainViewSample::IsMainClockPage(void)
     {
-
-        if (mainSwipeGroup->GetCurrentPageId(0) == ScreenModels::GetInstance()->GetCardPage(NEW_DAIL) &&
+        if (mainSwipeGroup->GetCurrentPageId(0) == WATCH_FACE &&
             mainSwipeGroup->GetCurrentPageId(1) == 1)
         { // 0: horizontal; 1: vertical
             return true;
@@ -510,14 +450,4 @@ namespace OHOS
             return false;
         }
     }
-
-    void MainViewSample::SetDragFg(bool continFg)
-    {
-        continuDragFg = continFg;
-    }
-
-    bool MainViewSample::GetDragFg(void)
-    {
-        return continuDragFg;
-    }
 }
index b2c3914..e430954 100644 (file)
@@ -1,3 +1,13 @@
+/*** 
+ * @Author: Caisking 3449750381@qq.com
+ * @Date: 2024-02-19 17:06:19
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-02-19 18:59:28
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/main/src/ModelListenerSample.cpp
+ * @Description: 
+ * @
+ * @Copyright (c) 2024 by Caisking , All Rights Reserved. 
+ */
 /*
  * Copyright (c) 2020-2021 CompanyNameMagicTag.
  * Licensed under the Apache License, Version 2.0 (the "License");
 namespace OHOS {
 ModelListenerSample::ModelListenerSample()
 {
-    PresenterTask::GetInstance()->SetModelListenr(this);
+    PresenterTask::GetInstance()->SetModelListener(this);
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ModelListenerSample::ModelListenerSample");
 }
 ModelListenerSample::~ModelListenerSample()
 {
-    PresenterTask::GetInstance()->SetModelListenr(nullptr);
+    PresenterTask::GetInstance()->SetModelListener(nullptr);
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ModelListenerSample::~ModelListenerSample");
 }
 
index 35f6035..b824460 100644 (file)
@@ -1,3 +1,13 @@
+/*** 
+ * @Author: Caisking 3449750381@qq.com
+ * @Date: 2024-02-19 17:06:50
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-02-19 18:59:02
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/main/src/PresenterTask.cpp
+ * @Description: 
+ * @
+ * @Copyright (c) 2024 by Caisking , All Rights Reserved. 
+ */
 
 #include "ModelListenerSample.h"
 #include "PresenterTask.h"
@@ -9,7 +19,7 @@ PresenterTask* PresenterTask::GetInstance() {
     return &PresenterTask;
 }
 
-void PresenterTask::SetModelListenr(ModelListenerSample* listener)
+void PresenterTask::SetModelListener(ModelListenerSample* listener)
 {
     taskListener = listener;
 }
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialArcLabelView.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialArcLabelView.cpp
new file mode 100644 (file)
index 0000000..dbfa000
--- /dev/null
@@ -0,0 +1,132 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag. 2023. All rights reserved.
+ */
+
+#include "DialArcLabelView.h"
+#include "securec.h"
+
+namespace OHOS {
+DialArcLabelView::DialArcLabelView(void)
+{
+}
+
+DialArcLabelView::~DialArcLabelView(void)
+{
+    if (text_ != nullptr) {
+        UIFree(text_);
+    }
+}
+
+bool DialArcLabelView::SetText(const char* text)
+{
+    if (text == nullptr) {
+        return false;
+    }
+    UIArcLabel::SetText(text);
+    return true;
+}
+
+void DialArcLabelView::SetTextWithWildcardInner(const char* text)
+{
+    if (strcmp(text, dstBuf_) == 0) {
+        return;
+    }
+    memset_s(dstBuf_, sizeof(dstBuf_), 0, sizeof(dstBuf_));
+    if (strcpy_s(dstBuf_, MAX_BUF_SIZE, text) != EOK) {
+        GRAPHIC_LOGE("strcpy_s failed!\n");
+        return;
+    }
+    UIArcLabel::SetText(dstBuf_);
+}
+
+bool DialArcLabelView::SetTextWithWildcard(const char* text)
+{
+    if (text == nullptr) {
+        return false;
+    }
+    if (text_ != nullptr) {
+        if (strcmp(text, text_) == 0) {
+            return true;
+        }
+        UIFree(text_);
+        text_ = nullptr;
+    }
+
+    uint32_t textLen = static_cast<uint32_t>(strlen(text));
+    if (textLen > (MAX_BUF_SIZE - 1)) {
+        return false;
+    }
+    text_ = static_cast<char*>(UIMalloc(++textLen));
+    if (text_ == nullptr) {
+        return false;
+    }
+    if (memcpy_s(text_, textLen, text, textLen) != EOK) {
+        UIFree(text_);
+        text_ = nullptr;
+        return false;
+    }
+    text_[textLen] = '\0';
+    return true;
+}
+
+void DialArcLabelView::HandleTextData(const std::string* data, uint16_t num)
+{
+    char tempBuf[MAX_BUF_SIZE] = {0};
+    if (num == 1) {
+        if (snprintf_s(tempBuf, MAX_BUF_SIZE, MAX_BUF_SIZE - 1, text_, data[0].c_str()) < 0) {
+            GRAPHIC_LOGE("snprintf_s failed.\n");
+            return;
+        }
+    } else if (num == 2) { // 2: wildcard cnt
+        if (snprintf_s(tempBuf, MAX_BUF_SIZE, MAX_BUF_SIZE - 1, text_, data[0].c_str(), data[1].c_str()) < 0) {
+            GRAPHIC_LOGE("snprintf_s failed.\n");
+            return;
+        }
+    } else if (num == 3) { // 3: wildcard cnt
+        if (snprintf_s(tempBuf, MAX_BUF_SIZE, MAX_BUF_SIZE - 1, text_,
+            data[0].c_str(), data[1].c_str(), data[2].c_str()) < 0) { // 2: index
+            GRAPHIC_LOGE("snprintf_s failed.\n");
+            return;
+        }
+    } else {
+        GRAPHIC_LOGE("max size is 3.\n");
+        return;
+    }
+    SetTextWithWildcardInner(tempBuf);
+}
+
+void DialArcLabelView::HandleFloatData(const float* data, uint16_t num)
+{
+    char tempBuf[MAX_BUF_SIZE] = {0};
+    if (num == 1) {
+        if (snprintf_s(tempBuf, MAX_BUF_SIZE, MAX_BUF_SIZE - 1, text_, data[0]) < 0) {
+            GRAPHIC_LOGE("snprintf_s failed.\n");
+            return;
+        }
+    } else if (num == 2) { // 2: wildcard cnt
+        if (snprintf_s(tempBuf, MAX_BUF_SIZE, MAX_BUF_SIZE - 1, text_, data[0], data[1]) < 0) {
+            GRAPHIC_LOGE("snprintf_s failed.\n");
+            return;
+        }
+    } else if (num == 3) { // 3: wildcard cnt
+        if (snprintf_s(tempBuf, MAX_BUF_SIZE, MAX_BUF_SIZE - 1, text_, data[0], data[1], data[2]) < 0) { // 2: index
+            GRAPHIC_LOGE("snprintf_s failed.\n");
+            return;
+        }
+    } else {
+        GRAPHIC_LOGE("max size is 3.\n");
+        return;
+    }
+    SetTextWithWildcardInner(tempBuf);
+}
+
+void DialArcLabelView::HandleFloatData(float data)
+{
+    char tempBuf[MAX_BUF_SIZE] = {0};
+    if (snprintf_s(tempBuf, MAX_BUF_SIZE, MAX_BUF_SIZE - 1, text_, data) < 0) {
+        GRAPHIC_LOGE("snprintf_s failed.\n");
+        return;
+    }
+    SetTextWithWildcardInner(tempBuf);
+}
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialArcProgressView.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialArcProgressView.cpp
new file mode 100644 (file)
index 0000000..67dadd4
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag. 2023. All rights reserved.
+ */
+
+#include "DialArcProgressView.h"
+
+namespace OHOS {
+DialArcProgressView::DialArcProgressView(void)
+{
+}
+
+DialArcProgressView::~DialArcProgressView(void)
+{
+}
+
+void DialArcProgressView::HandleFloatData(float data)
+{
+    float ratio = data;
+    if (ratio > 1.0f) {
+        ratio = 1.0f;
+    } else if (ratio < 0.0f) {
+        ratio = 0.0f;
+    }
+    int32_t value = ratio * (GetRangeMax() - GetRangeMin());
+    if (value_ == value) {
+        return;
+    }
+    value_ = value;
+    SetValue(value_);
+}
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialBoxProgressView.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialBoxProgressView.cpp
new file mode 100644 (file)
index 0000000..8084dfb
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag. 2023. All rights reserved.
+ */
+
+#include "DialBoxProgressView.h"
+
+namespace OHOS {
+DialBoxProgressView::DialBoxProgressView(void)
+{
+}
+
+DialBoxProgressView::~DialBoxProgressView(void)
+{
+}
+
+void DialBoxProgressView::HandleFloatData(float data)
+{
+    float ratio = data;
+    if (ratio > 1.0f) {
+        ratio = 1.0f;
+    } else if (ratio < 0.0f) {
+        ratio = 0.0f;
+    }
+    int32_t value = ratio * (GetRangeMax() - GetRangeMin());
+    if (value_ == value) {
+        return;
+    }
+    value_ = value;
+    SetValue(value_);
+}
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialDigitalImgView.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialDigitalImgView.cpp
new file mode 100644 (file)
index 0000000..04ccf10
--- /dev/null
@@ -0,0 +1,221 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag. 2023. All rights reserved.
+ */
+
+#include "DialDigitalImgView.h"
+#include <cmath>
+#include "securec.h"
+
+namespace OHOS {
+DialDigitalImgView::DialDigitalImgView(void)
+{
+}
+
+DialDigitalImgView::~DialDigitalImgView(void)
+{
+    if (imgs_ != nullptr) {
+        for (uint8_t i = 0; i < imgCnt_; i++) {
+            if (parent_ != nullptr) {
+                parent_->Remove(imgs_[i]);
+            }
+            if (imgs_[i] != nullptr) {
+                delete imgs_[i];
+            }
+        }
+        UIFree(imgs_);
+        imgs_ = nullptr;
+    }
+}
+
+bool DialDigitalImgView::SetNumRes(const ImageInfo** src, uint16_t num)
+{
+    if (num > NUM_IMG_MAX_SIZE) {
+        return false;
+    }
+    if (memcpy_s(numInfo_, sizeof(ImageInfo*) * num, src, sizeof(ImageInfo*) * num) != EOK) {
+        return false;
+    }
+    numCnt_ = num;
+    return true;
+}
+
+void DialDigitalImgView::SetSignRes(const ImageInfo* src)
+{
+    signInfo_ = const_cast<ImageInfo*>(src);
+}
+
+void DialDigitalImgView::SetDecimalPointRes(const ImageInfo* src)
+{
+    decimalPointInfo_ = const_cast<ImageInfo*>(src);
+}
+
+void DialDigitalImgView::SetIntegerLength(uint8_t length)
+{
+    integerLength_ = length;
+}
+
+void DialDigitalImgView::SetSpace(uint16_t space)
+{
+    space_ = space;
+}
+
+void DialDigitalImgView::SetAlign(ImgAlign align)
+{
+    align_ = align;
+}
+
+void DialDigitalImgView::SetAlignPos(Point pos)
+{
+    alignPos_ = pos;
+}
+
+void DialDigitalImgView::SetParent(UIViewGroup* parent)
+{
+    parent_ = parent;
+}
+
+void DialDigitalImgView::SetDecimalPrecision(uint8_t precision)
+{
+    decimalPrecision_ = precision;
+}
+
+void DialDigitalImgView::SetNumImg(UIImageView* img, const ImageInfo *info)
+{
+    if (img == nullptr || info == nullptr) {
+        return;
+    }
+    img->SetAutoEnable(true);
+    img->SetSrc(info);
+    currentIndex_++;
+}
+
+void DialDigitalImgView::FillIntegerPart(uint16_t intVal)
+{
+    uint8_t length = log10(intVal) + 1;
+    if (length < allocIntegerLen_) {
+        for (uint8_t i = 0; i < (allocIntegerLen_ - length); i++) {
+            SetNumImg(imgs_[currentIndex_], numInfo_[0]);
+        }
+    }
+    for (uint8_t i = 0; i < length; i++) {
+        uint8_t curNum = static_cast<uint16_t>(intVal / (pow(10, length - i - 1))) % 10; // 10: conversion
+        SetNumImg(imgs_[currentIndex_], numInfo_[curNum]);
+    }
+}
+
+void DialDigitalImgView::FillDecimalPart(uint16_t intVal)
+{
+    uint8_t length = log10(intVal) + 1;
+    if (length < decimalPrecision_) {
+        for (uint8_t i = 0; i < (decimalPrecision_ - length); i++) {
+            SetNumImg(imgs_[currentIndex_], numInfo_[0]);
+        }
+    }
+    for (uint8_t i = 0; i < length; i++) {
+        uint8_t curNum = static_cast<uint16_t>(intVal / (pow(10, length - i - 1))) % 10; // 10: conversion
+        SetNumImg(imgs_[currentIndex_], numInfo_[curNum]);
+    }
+}
+
+void DialDigitalImgView::HandlePosition()
+{
+    uint32_t totalWidth = 0;
+    for (uint8_t i = 0; i < currentIndex_; i++) {
+        totalWidth += imgs_[i]->GetWidth();
+    }
+    totalWidth += (currentIndex_ - 1) * space_;
+
+    int16_t curX = alignPos_.x;
+    if (align_ == ImgAlign::RIGHT) {
+        curX -= totalWidth;
+    } else if (align_ == ImgAlign::CENTER) {
+        curX -= totalWidth / 2; // 2: half
+    }
+    for (uint8_t i = 0; i < currentIndex_; i++) {
+        parent_->Add(imgs_[i]);
+        imgs_[i]->SetPosition(curX, alignPos_.y);
+        curX += imgs_[i]->GetWidth() + space_;
+    }
+}
+
+bool DialDigitalImgView::CreateImageViews(float data)
+{
+    uint8_t imgCnt = 0;
+    uint32_t integer = static_cast<uint32_t>(abs(data));
+    uint8_t actualIntegerLen = log10(integer) + 1;
+
+    if (integerLength_ == 0) {
+        imgCnt = actualIntegerLen;
+        allocIntegerLen_ = actualIntegerLen;
+    } else {
+        if (integerLength_ < actualIntegerLen) {
+            GRAPHIC_LOGE("The integer part is too long.set len:%d, data len %d", integerLength_, actualIntegerLen);
+            return false;
+        }
+        imgCnt = integerLength_;
+        allocIntegerLen_ = integerLength_;
+    }
+    if (decimalPrecision_ != 0) {
+        imgCnt += (decimalPrecision_ + 1);
+    }
+    if (data < 0.0f) {
+        imgCnt++;
+    }
+    if (imgCnt_ != 0) {
+        for (uint8_t i = 0; i < imgCnt_; i++) {
+            if (parent_ != nullptr) {
+                parent_->Remove(imgs_[i]);
+            }
+        }
+    }
+
+    if (imgCnt_ < imgCnt) {
+        UIImageView** temp = static_cast<UIImageView**>(UIMalloc(sizeof(UIImageView*) * imgCnt));
+        if (temp == nullptr) {
+            return false;
+        }
+        if (imgs_ != nullptr) {
+            memcpy_s(temp, sizeof(UIImageView*) * imgCnt, imgs_, sizeof(UIImageView*) * imgCnt);
+            UIFree(imgs_);
+        }
+        imgs_ = temp;
+        for (uint8_t i = imgCnt_; i < imgCnt; i++) {
+            imgs_[i] = new UIImageView();
+        }
+    }
+
+    imgCnt_ = imgCnt;
+    currentIndex_ = 0;
+    return true;
+}
+
+void DialDigitalImgView::HandleFloatData(float data)
+{
+    if (isValueSet_ && FloatEqual(value_, data)) {
+        return;
+    }
+    if (parent_ == nullptr) {
+        return;
+    }
+    if (!CreateImageViews(data)) {
+        GRAPHIC_LOGE("CreateImageViews failed.");
+        return;
+    }
+    if (data < 0.0f && signInfo_ != nullptr) {
+        SetNumImg(imgs_[currentIndex_], signInfo_);
+    }
+    float absVal = abs(data);
+    uint16_t intVal = static_cast<uint16_t>(absVal);
+    FillIntegerPart(intVal);
+
+    if (decimalPrecision_ != 0 && decimalPointInfo_ != nullptr) {
+        SetNumImg(imgs_[currentIndex_], decimalPointInfo_);
+        // 10: conversion
+        uint16_t decimalVal = static_cast<uint16_t>((abs(data) - intVal) * (pow(10, decimalPrecision_)));
+        FillDecimalPart(decimalVal);
+    }
+    HandlePosition();
+    value_ = data;
+    isValueSet_ = true;
+}
+}
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialLabelView.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialLabelView.cpp
new file mode 100644 (file)
index 0000000..9216d67
--- /dev/null
@@ -0,0 +1,163 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag. 2023. All rights reserved.
+ */
+
+#include "DialLabelView.h"
+#include "securec.h"
+
+namespace OHOS
+{
+    DialLabelView::DialLabelView(void)
+    {
+    }
+
+    DialLabelView::~DialLabelView(void)
+    {
+        if (text_ != nullptr)
+        {
+            UIFree(text_);
+        }
+    }
+
+    bool DialLabelView::SetText(const char *text)
+    {
+        if (text == nullptr)
+        {
+            return false;
+        }
+        UILabel::SetText(text);
+        return true;
+    }
+
+    void DialLabelView::SetTextWithWildcardInner(const char *text)
+    {
+        if (strcmp(text, dstBuf_) == 0)
+        {
+            return;
+        }
+        memset_s(dstBuf_, sizeof(dstBuf_), 0, sizeof(dstBuf_));
+        if (strcpy_s(dstBuf_, MAX_BUF_SIZE, text) != EOK)
+        {
+            GRAPHIC_LOGE("strcpy_s failed!\n");
+        }
+        UILabel::SetText(dstBuf_);
+    }
+
+    bool DialLabelView::SetTextWithWildcard(const char *text)
+    {
+        if (text == nullptr)
+        {
+            return false;
+        }
+        if (text_ != nullptr)
+        {
+            if (strcmp(text, text_) == 0)
+            {
+                return true;
+            }
+            UIFree(text_);
+            text_ = nullptr;
+        }
+
+        uint32_t textLen = static_cast<uint32_t>(strlen(text));
+        if (textLen > (MAX_BUF_SIZE - 1))
+        {
+            return false;
+        }
+        text_ = static_cast<char *>(UIMalloc(++textLen));
+        if (text_ == nullptr)
+        {
+            return false;
+        }
+        if (memcpy_s(text_, textLen, text, textLen) != EOK)
+        {
+            UIFree(text_);
+            text_ = nullptr;
+            return false;
+        }
+        text_[textLen] = '\0';
+        return true;
+    }
+
+    void DialLabelView::HandleTextData(const std::string *data, uint16_t num)
+    {
+        char tempBuf[MAX_BUF_SIZE] = {0};
+        if (num == 1)
+        {
+            if (snprintf_s(tempBuf, MAX_BUF_SIZE, MAX_BUF_SIZE - 1, text_, data[0].c_str()) < 0)
+            {
+                GRAPHIC_LOGE("snprintf_s failed.\n");
+                return;
+            }
+        }
+        else if (num == 2)
+        { // 2: wildcard cnt
+            if (snprintf_s(tempBuf, MAX_BUF_SIZE, MAX_BUF_SIZE - 1, text_, data[0].c_str(), data[1].c_str()) < 0)
+            {
+                GRAPHIC_LOGE("snprintf_s failed.\n");
+                return;
+            }
+        }
+        else if (num == 3)
+        { // 3: wildcard cnt
+            if (snprintf_s(tempBuf, MAX_BUF_SIZE, MAX_BUF_SIZE - 1, text_,
+                           data[0].c_str(), "年", data[1].c_str(), "月", data[2].c_str(), "日") < 0)
+            { // 2: index
+                GRAPHIC_LOGE("snprintf_s failed.\n");
+                return;
+            }
+        }
+        else
+        {
+            GRAPHIC_LOGE("max size is 3.\n");
+            return;
+        }
+        SetTextWithWildcardInner(tempBuf);
+    }
+
+    void DialLabelView::HandleFloatData(const float *data, uint16_t num)
+    {
+        char tempBuf[MAX_BUF_SIZE] = {0};
+        if (num == 1)
+        {
+            if (snprintf_s(tempBuf, MAX_BUF_SIZE, MAX_BUF_SIZE - 1, text_, data[0]) < 0)
+            {
+                GRAPHIC_LOGE("snprintf_s failed.\n");
+                return;
+            }
+        }
+        else if (num == 2)
+        { // 2: wildcard cnt
+            if (snprintf_s(tempBuf, MAX_BUF_SIZE, MAX_BUF_SIZE - 1, text_, data[0], data[1]) < 0)
+            {
+                GRAPHIC_LOGE("snprintf_s failed.\n");
+                return;
+            }
+        }
+        else if (num == 3)
+        { // 3: wildcard cnt
+            if (snprintf_s(tempBuf, MAX_BUF_SIZE, MAX_BUF_SIZE - 1, text_, data[0], data[1], data[2]) < 0)
+            { // 2: index
+                GRAPHIC_LOGE("snprintf_s failed.\n");
+                return;
+            }
+        }
+        else
+        {
+            GRAPHIC_LOGE("max size is 3.\n");
+            return;
+        }
+        SetTextWithWildcardInner(tempBuf);
+    }
+
+    void DialLabelView::HandleFloatData(float data)
+    {
+        char tempBuf[MAX_BUF_SIZE] = {0};
+        if (snprintf_s(tempBuf, MAX_BUF_SIZE, MAX_BUF_SIZE - 1, text_, data) < 0)
+        {
+            GRAPHIC_LOGE("snprintf_s failed.\n");
+            return;
+        }
+        SetTextWithWildcardInner(tempBuf);
+    }
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelHeartRate.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelHeartRate.cpp
new file mode 100644 (file)
index 0000000..f4a337e
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2023. All rights reserved.
+ * Description: DialModelHeartRate
+ * Author:
+ * Create: 2023-12
+ */
+
+#include "RegisterDialModel.h"
+#include "DialModelHeartRate.h"
+
+REGIST_DIAL_MODULE(DialDataType::DATA_TYPE_HEART_RATE, OHOS::DialModelHeartRate::GetInstance());
+
+namespace OHOS {
+bool DialModelHeartRate::GetDialFloatData(DialDataType& type, float& out)
+{
+    (void)type;
+    out = heartRate_;
+    return true;
+}
+
+void DialModelHeartRate::UpdateHeartRate(int16_t heartRate)
+{
+    heartRate_ = static_cast<float>(heartRate);
+    if (onChangeListener_ != nullptr) {
+        onChangeListener_->OnDialFloatDataUpdate(DialDataType::DATA_TYPE_HEART_RATE, heartRate_);
+    }
+}
+}
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelPower.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelPower.cpp
new file mode 100644 (file)
index 0000000..e0e1877
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2023. All rights reserved.
+ * Description: DialModelPower
+ * Author:
+ * Create: 2023-12
+ */
+
+#include "RegisterDialModel.h"
+#include "DialModelPower.h"
+
+REGIST_DIAL_MODULE(DialDataType::DATA_TYPE_POWER, OHOS::DialModelPower::GetInstance());
+
+namespace OHOS {
+bool DialModelPower::GetDialFloatData(DialDataType& type, float& out)
+{
+    (void)type;
+    out = power_;
+    return true;
+}
+}
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelSteps.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelSteps.cpp
new file mode 100644 (file)
index 0000000..b21f8cc
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2023. All rights reserved.
+ * Description: DialModelSteps
+ * Author:
+ * Create: 2023-12
+ */
+
+#include "RegisterDialModel.h"
+#include "DialModelSteps.h"
+
+REGIST_DIAL_MODULE(DialDataType::DATA_TYPE_STEPS, OHOS::DialModelSteps::GetInstance());
+
+namespace OHOS {
+bool DialModelSteps::GetDialFloatData(DialDataType& type, float& out)
+{
+    (void)type;
+    out = steps_;
+    return true;
+}
+
+void DialModelSteps::UpdateSteps(int16_t steps)
+{
+    steps_ = static_cast<float>(steps);
+    if(onChangeListener_ != nullptr) {
+        onChangeListener_->OnDialFloatDataUpdate(DialDataType::DATA_TYPE_STEPS, steps_);
+    }
+}
+}
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelTime.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelTime.cpp
new file mode 100644 (file)
index 0000000..dbc4eff
--- /dev/null
@@ -0,0 +1,129 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2023. All rights reserved.
+ * Description: DialModelTime
+ * Author:
+ * Create: 2023-12
+ */
+
+#include "sys/time.h"
+#include "RegisterDialModel.h"
+#include "DialModelTime.h"
+
+#define REGIST_DIAL_MODULE_ANGLE_H(type, func) static OHOS::RegisterDialModel(REGIST_ANGLE_H)(type, func)
+#define REGIST_DIAL_MODULE_ANGLE_M(type, func) static OHOS::RegisterDialModel(REGIST_ANGLE_M)(type, func)
+#define REGIST_DIAL_MODULE_ANGLE_S(type, func) static OHOS::RegisterDialModel(REGIST_ANGLE_S)(type, func)
+#define REGIST_DIAL_MODULE_ANGLE_MS(type, func) static OHOS::RegisterDialModel(REGIST_ANGLE_MS)(type, func)
+
+#define REGIST_DIAL_MODULE_SECOND(type, func) static OHOS::RegisterDialModel(REGIST_SECOND)(type, func)
+#define REGIST_DIAL_MODULE_MINUTE(type, func) static OHOS::RegisterDialModel(REGIST_MINUTE)(type, func)
+#define REGIST_DIAL_MODULE_HOUR(type, func) static OHOS::RegisterDialModel(REGIST_HOUR)(type, func)
+#define REGIST_DIAL_MODULE_DATE(type, func) static OHOS::RegisterDialModel(REGIST_DATE)(type, func)
+#define REGIST_DIAL_MODULE_WEEK(type, func) static OHOS::RegisterDialModel(REGIST_WEEK)(type, func)
+#define REGIST_DIAL_MODULE_MOUNTH(type, func) static OHOS::RegisterDialModel(REGIST_MOUNTH)(type, func)
+#define REGIST_DIAL_MODULE_YEAR(type, func) static OHOS::RegisterDialModel(REGIST_YEAR)(type, func)
+
+REGIST_DIAL_MODULE_ANGLE_H(DialDataType::DATA_TYPE_CLOCK_ANGLE_H, OHOS::DialModelTime::GetInstance());
+REGIST_DIAL_MODULE_ANGLE_M(DialDataType::DATA_TYPE_CLOCK_ANGLE_M, OHOS::DialModelTime::GetInstance());
+REGIST_DIAL_MODULE_ANGLE_S(DialDataType::DATA_TYPE_CLOCK_ANGLE_S, OHOS::DialModelTime::GetInstance());
+REGIST_DIAL_MODULE_ANGLE_MS(DialDataType::DATA_TYPE_CLOCK_ANGLE_MS, OHOS::DialModelTime::GetInstance());
+
+REGIST_DIAL_MODULE_SECOND(DialDataType::DATA_TYPE_TIME_SECOND, OHOS::DialModelTime::GetInstance());
+REGIST_DIAL_MODULE_MINUTE(DialDataType::DATA_TYPE_TIME_MINUTE, OHOS::DialModelTime::GetInstance());
+REGIST_DIAL_MODULE_HOUR(DialDataType::DATA_TYPE_TIME_HOUR, OHOS::DialModelTime::GetInstance());
+REGIST_DIAL_MODULE_DATE(DialDataType::DATA_TYPE_TIME_DATE, OHOS::DialModelTime::GetInstance());
+REGIST_DIAL_MODULE_WEEK(DialDataType::DATA_TYPE_TIME_WEEK, OHOS::DialModelTime::GetInstance());
+REGIST_DIAL_MODULE_MOUNTH(DialDataType::DATA_TYPE_TIME_MONTH, OHOS::DialModelTime::GetInstance());
+REGIST_DIAL_MODULE_YEAR(DialDataType::DATA_TYPE_TIME_YEAR, OHOS::DialModelTime::GetInstance());
+
+namespace OHOS {
+static constexpr int16_t S_MS_US_TRANS = 1000;      // 1000: seconds, milliseconds, microsecond transform value
+static constexpr uint16_t CIRCLE_IN_DEGREE = 360;   // 360: A full rotation: 360 degrees
+static constexpr uint8_t ONE_MINUTE_IN_SECOND = 60; // 60: 60 seconds per minute
+static constexpr uint8_t ONE_HOUR_IN_MINUTE = 60;   // 60: 60 minutes per hour
+static constexpr uint8_t HALF_DAY_IN_HOUR = 12;     // 60: 12 hours every half day
+
+static uint16_t ConvertHandValueToAngle(int32_t handValue, uint8_t range, int32_t secondHandValue, uint16_t ratio)
+{
+    if ((range == 0) || (ratio == 0)) {
+        return 0;
+    }
+    /*
+     * Example: calculate the angle of hour hand
+     * Assume that the time is 5: 30, then range is 12, radio is 60
+     * angle is [(5 * 60  + 30) / (12 * 60)] * 360
+     */
+    int32_t degree = (handValue * ratio + secondHandValue);
+    degree = CIRCLE_IN_DEGREE * degree / (static_cast<uint16_t>(range) * ratio);
+
+    return static_cast<uint16_t>(degree % CIRCLE_IN_DEGREE);
+}
+
+static float ConvertHandSecondValueToAngle(int32_t handValue, uint16_t range)
+{
+    /*
+     * Example: calculate the angle of second hand without millisecond handle
+     * Assume that the time is 5:30:30, then range is 60
+     * angle is (30 / 60) * 360
+     */
+    return (static_cast<float>(handValue * CIRCLE_IN_DEGREE) / range);
+}
+
+void DialModelTime::UpdateTime()
+{
+    struct timeval tv;
+    gettimeofday(&tv, NULL);
+    tblock_ = localtime(&tv.tv_sec);
+    int realMS = tblock_->tm_sec * S_MS_US_TRANS + tv.tv_usec / S_MS_US_TRANS;
+
+    angleH_ = ConvertHandValueToAngle(tblock_->tm_hour, HALF_DAY_IN_HOUR, tblock_->tm_min, ONE_HOUR_IN_MINUTE);
+    angleM_ = ConvertHandValueToAngle(tblock_->tm_min, ONE_HOUR_IN_MINUTE, tblock_->tm_sec, ONE_MINUTE_IN_SECOND);
+    angleS_ = ConvertHandValueToAngle(tblock_->tm_sec, ONE_MINUTE_IN_SECOND, 0, 1);
+    angleMS_ = ConvertHandSecondValueToAngle(realMS, S_MS_US_TRANS * ONE_MINUTE_IN_SECOND);
+}
+
+bool DialModelTime::GetDialFloatData(DialDataType& type, float& out)
+{
+    if (tblock_ == nullptr) {
+        UpdateTime();
+    }
+
+    switch (type) {
+        case DialDataType::DATA_TYPE_CLOCK_ANGLE_H:
+            out = static_cast<float>(angleH_);
+            break;
+        case DialDataType::DATA_TYPE_CLOCK_ANGLE_M:
+            out = static_cast<float>(angleM_);
+            break;
+        case DialDataType::DATA_TYPE_CLOCK_ANGLE_S:
+            out = static_cast<float>(angleS_);
+            break;
+        case DialDataType::DATA_TYPE_CLOCK_ANGLE_MS:
+            out = static_cast<float>(angleMS_);
+            break;
+        case DialDataType::DATA_TYPE_TIME_YEAR:
+            out = static_cast<float>((tblock_->tm_year) + 1900);
+            break;
+        case DialDataType::DATA_TYPE_TIME_MONTH:
+            out = static_cast<float>((tblock_->tm_mon) + 1);
+            break;
+        case DialDataType::DATA_TYPE_TIME_WEEK:
+            out = static_cast<float>(tblock_->tm_wday);
+            break;
+        case DialDataType::DATA_TYPE_TIME_DATE:
+            out = static_cast<float>(tblock_->tm_mday);
+            break;
+        case DialDataType::DATA_TYPE_TIME_HOUR:
+            out = static_cast<float>(tblock_->tm_hour);
+            break;
+        case DialDataType::DATA_TYPE_TIME_MINUTE:
+            out = static_cast<float>(tblock_->tm_min);
+            break;
+        case DialDataType::DATA_TYPE_TIME_SECOND:
+            out = static_cast<float>(tblock_->tm_sec);
+            break;
+        default:
+            return false;
+    }
+    return true;
+}
+}
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialOptionImgView.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialOptionImgView.cpp
new file mode 100644 (file)
index 0000000..8c78ad4
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag. 2023. All rights reserved.
+ */
+
+#include "DialOptionImgView.h"
+#include "securec.h"
+
+namespace OHOS {
+DialOptionImgView::DialOptionImgView(void)
+{
+    SetAutoEnable(true);
+}
+
+DialOptionImgView::~DialOptionImgView(void)
+{
+    if (info_ != nullptr) {
+        UIFree(info_);
+        info_ = nullptr;
+    }
+}
+
+bool DialOptionImgView::SetOptionRes(const ImageInfo* src, uint16_t num)
+{
+    if (info_ != nullptr) {
+        UIFree(info_);
+        info_ = nullptr;
+    }
+    uint32_t size = sizeof(ImageInfo) * num;
+    info_ = static_cast<ImageInfo*>(UIMalloc(size));
+    if (info_ == nullptr) {
+        return false;
+    }
+    if (memcpy_s(info_, size, src, size) != EOK) {
+        UIFree(info_);
+        return false;
+    }
+    infoNum_ = num;
+    return true;
+}
+
+void DialOptionImgView::HandleFloatData(float data)
+{
+    if (info_ == nullptr) {
+        return;
+    }
+    int16_t selected = (int16_t)data;
+    if ((selected > infoNum_) || (selected < 0)) {
+        return;
+    }
+    if (selected_ == selected) {
+        return;
+    }
+    selected_ = selected;
+    SetSrc(&info_[selected_]);
+}
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialRotateImgView.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialRotateImgView.cpp
new file mode 100644 (file)
index 0000000..bec17ca
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag. 2023. All rights reserved.
+ */
+
+#include "DialRotateImgView.h"
+
+namespace OHOS {
+DialRotateImgView::DialRotateImgView(void)
+{
+    SetAutoEnable(true);
+}
+
+DialRotateImgView::~DialRotateImgView(void)
+{
+}
+
+void DialRotateImgView::SetRotatePivot(const Vector2<float>& pivot)
+{
+    rotatePivot_ = pivot;
+}
+
+void DialRotateImgView::SetRotateStart(float rotateStart)
+{
+    rotateStart_ = rotateStart;
+}
+
+void DialRotateImgView::SetRotateEnd(float rotateEnd)
+{
+    rotateEnd_ = rotateEnd;
+}
+
+void DialRotateImgView::HandleFloatData(float data)
+{
+    float min = MATH_MIN(rotateStart_, rotateEnd_);
+    float max = MATH_MAX(rotateEnd_, rotateStart_);
+
+    float angle = data;
+    if (angle < min) {
+        angle = min;
+    } else if (angle > max) {
+        angle = max;
+    }
+    if (isRotateSet_ && FloatEqual(rotate_, angle)) {
+        return;
+    }
+    rotate_ = angle;
+    isRotateSet_ = true;
+    Rotate(rotate_, rotatePivot_);
+}
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialSequenceImgView.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialSequenceImgView.cpp
new file mode 100644 (file)
index 0000000..5c9c31e
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag. 2023. All rights reserved.
+ */
+
+#include "DialSequenceImgView.h"
+#include "securec.h"
+
+namespace OHOS {
+DialSequenceImgView::DialSequenceImgView(void)
+{
+}
+
+DialSequenceImgView::~DialSequenceImgView(void)
+{
+    if (imgSrc_ != nullptr) {
+        UIFree(imgSrc_);
+    }
+}
+
+bool DialSequenceImgView::SetSequenceRes(const ImageAnimatorInfo* imgSrc, uint8_t imgNum)
+{
+    if (imgSrc == nullptr || imgNum == 0) {
+        return false;
+    }
+    if (imgSrc_ != nullptr) {
+        UIFree(imgSrc_);
+        imgNum_ = 0;
+    }
+    uint32_t size = sizeof(ImageAnimatorInfo) * imgNum;
+    imgSrc_ = static_cast<ImageAnimatorInfo*>(UIMalloc(size));
+    if (imgSrc_ == nullptr) {
+        return false;
+    }
+    if (memcpy_s(imgSrc_, size, imgSrc, size) != EOK) {
+        UIFree(imgSrc_);
+        return false;
+    }
+    imgNum_ = imgNum;
+    SetImageAnimatorSrc(imgSrc_, imgNum_);
+    return true;
+}
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialStaticImgView.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialStaticImgView.cpp
new file mode 100644 (file)
index 0000000..dd3126f
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag. 2023. All rights reserved.
+ */
+
+#include "DialStaticImgView.h"
+
+namespace OHOS {
+DialStaticImgView::DialStaticImgView()
+{
+    SetAutoEnable(true);
+}
+
+DialStaticImgView::~DialStaticImgView() {}
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialVideoView.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialVideoView.cpp
new file mode 100644 (file)
index 0000000..7770f16
--- /dev/null
@@ -0,0 +1,156 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag. 2023. All rights reserved.
+ */
+
+#include "DialVideoView.h"
+#ifdef SUPPORT_AT_OHOSFWK
+#include "ui_screennotify.h"
+#endif
+
+namespace OHOS {
+static constexpr int16_t JPEG_HEIGHT_DIVISOR = 2;
+static constexpr int16_t JPEG_WIDTH_BYTE_ALIGNMENT = 128;
+static constexpr int16_t JPEG_HEIGHT_BYTE_ALIGNMENT = 16;
+static constexpr int16_t BUFFER_QUEUE_SIZE = 2;
+static constexpr int16_t STRIDE_ALIGNMENT_VALUE = 64;
+
+#ifdef SUPPORT_AT_OHOSFWK
+static MediaVideoPlay *g_videoPlay = nullptr;
+static void ScreenStatusNotify(ScreenStatus status)
+{
+    if (g_videoPlay == nullptr) {
+        return;
+    }
+
+    if (status == SCREEN_STATUS_OFF && g_videoPlay->isPlayed_) {
+        g_videoPlay->PauseVideoPlay();
+    } else if (status == SCREEN_STATUS_ON) {
+        if (g_videoPlay->isPause_) {
+            g_videoPlay->ResumeVideoPlay();
+        } else if (g_videoPlay->isExited_) {
+            g_videoPlay->StartVideoPlay();
+        }
+    }
+}
+#endif
+
+static inline int32_t MediaByteAlign(int16_t value, int16_t align)
+{
+    return (((value) + (align) - 1) & (~((align) - 1)));
+}
+
+DialVideoView::DialVideoView()
+{
+}
+
+DialVideoView::~DialVideoView()
+{
+#ifdef SUPPORT_AT_OHOSFWK
+    g_videoPlay = nullptr;
+    deregisterNotifyScreenStatus(ScreenStatusNotify);
+#endif
+    if (videoPlayer_ != nullptr) {
+        videoPlayer_->StopVideoPlay();
+        delete videoPlayer_;
+    }
+}
+
+bool DialVideoView::SetVideoRes(FILE* fp, uint32_t offset)
+{
+    if (videoPlayer_ != nullptr) {
+        GRAPHIC_LOGE("Cannot set video res repeatedly!\n");
+        return false;
+    }
+
+    fp_ = fp;
+    offset_ = offset;
+
+    Surface* surface = GetSurface();
+    Rect area = GetRect();
+    int16_t w = area.GetWidth();
+    int16_t h = area.GetHeight();
+    surface->SetStrideAlignment(STRIDE_ALIGNMENT_VALUE);
+    surface->SetWidthAndHeight(w, h);
+    surface->SetQueueSize(BUFFER_QUEUE_SIZE);
+    surface->SetFormat(PIXEL_FMT_YCBCR_420_SP);
+
+    // jpeg decoder output buffer size calculation formula
+    int32_t ySize = MediaByteAlign(w, JPEG_WIDTH_BYTE_ALIGNMENT) * h;
+    int32_t uvSize = MediaByteAlign(w, JPEG_WIDTH_BYTE_ALIGNMENT) *
+        MediaByteAlign(h, JPEG_HEIGHT_BYTE_ALIGNMENT) / JPEG_HEIGHT_DIVISOR;
+    int32_t bufferSize = ySize + uvSize;
+    surface->SetSize(bufferSize);
+
+    int32_t fd = fileno(fp_);
+    if (fd == -1) {
+        return false;
+    }
+
+    videoPlayer_ = new MediaVideoPlay(surface, fd, offset_, true);
+#ifdef SUPPORT_AT_OHOSFWK
+    g_videoPlay = videoPlayer_;
+    registerNotifyScreenStatus(ScreenStatusNotify);
+#endif
+    return true;
+}
+
+bool DialVideoView::StartPlay()
+{
+    if (videoPlayer_ == nullptr) {
+        return false;
+    }
+    videoPlayer_->StartVideoPlay();
+    return true;
+}
+
+bool DialVideoView::ResumePlay()
+{
+    if (videoPlayer_ == nullptr) {
+        return false;
+    }
+    videoPlayer_->ResumeVideoPlay();
+    return true;
+}
+
+bool DialVideoView::PausePlay()
+{
+    if (videoPlayer_ == nullptr) {
+        return false;
+    }
+    videoPlayer_->PauseVideoPlay();
+    return true;
+}
+
+bool DialVideoView::StopPlay()
+{
+    if (videoPlayer_ == nullptr) {
+        return false;
+    }
+    videoPlayer_->StopVideoPlay();
+    return true;
+}
+
+bool DialVideoView::IsPaused()
+{
+    if (videoPlayer_ == nullptr) {
+        return false;
+    }
+    return videoPlayer_->isPause_;
+}
+
+bool DialVideoView::IsPlayed()
+{
+    if (videoPlayer_ == nullptr) {
+        return false;
+    }
+    return videoPlayer_->isPlayed_;
+}
+
+bool DialVideoView::IsStopped()
+{
+    if (videoPlayer_ == nullptr) {
+        return false;
+    }
+    return videoPlayer_->isExited_;
+}
+}
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialViewGroup.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialViewGroup.cpp
new file mode 100644 (file)
index 0000000..1b022d7
--- /dev/null
@@ -0,0 +1,303 @@
+#include "DialViewGroup.h"
+#include <cstdio>
+#include <iostream>
+#include "NativeAbility.h"
+#include "msg_center.h"
+#include "securec.h"
+#include "DialBinParser.h"
+#include "ModelDialDataFactory.h"
+#include "common/low_power_manager.h"
+
+namespace OHOS {
+DialViewGroup::DialViewGroup(void)
+{
+    SetTouchable(true);
+    SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
+    SetCoverable(true);
+}
+
+DialViewGroup::~DialViewGroup(void)
+{
+    ClearDial();
+}
+
+void DialViewGroup::ClearDial()
+{
+    ListNode<DialDataType>* passiveNode = passiveUpdateTypes_.Head();
+    while (passiveNode != passiveUpdateTypes_.End()) {
+        DialDataType type = passiveNode->data_;
+        ModelDialDataFactory::GetInstance().UnRegisterDialDataListener(type);
+        passiveNode = passiveNode->next_;
+    }
+    passiveUpdateTypes_.Clear();
+
+    ListNode<DialClick>* clickNode = dialClicks_.Head();
+    while (clickNode != dialClicks_.End()) {
+        DialClick click = clickNode->data_;
+        if (!click.isSliceType) {
+            UIFree(click.bundleName);
+        }
+        clickNode = clickNode->next_;
+    }
+    dialClicks_.Clear();
+
+    periodicUpdateTypes_.Clear();
+
+    dataTypeMap_.clear();
+
+    ListNode<UIView*>* viewNode = dialViews_.Head();
+    while (viewNode != dialViews_.End()) {
+        UIViewGroup::Remove(viewNode->data_);
+        delete(viewNode->data_);
+        viewNode = viewNode->next_;
+    }
+    dialViews_.Clear();
+
+    period_ = DEFAULT_TASK_PERIOD;
+
+    video_ = nullptr;
+
+    if (fp_ != nullptr) {
+        fclose(fp_);
+        fp_ = nullptr;
+    }
+}
+
+void DialViewGroup::SetDial(std::string filePath)
+{
+    ClearDial();
+    resPreloaded_ = false;
+    filePath_ = filePath;
+}
+
+void DialViewGroup::PreLoad(void)
+{
+    if (!resPreloaded_) {
+        fp_ = fopen(filePath_.c_str(), "rb");
+        if (fp_ == nullptr) {
+            GRAPHIC_LOGE("cannot open file: %s\n", filePath_.c_str());
+            return;
+        }
+        DialBinParser::GetInstance()->UpdateDial(filePath_, fp_, this);
+        if (video_ != nullptr) {
+            video_->StartPlay();
+        }
+        resPreloaded_ = true;
+    }
+}
+
+void DialViewGroup::ProcessData(DialDataType type, DialView* view)
+{
+    int16_t value = static_cast<int16_t>(type) >> 13; // 13: bit shift
+    if (value == 0) { // 0: float
+        float floatData = 0;
+        ModelDialDataFactory::GetInstance().GetDialFloatData(type, floatData);
+        view->HandleFloatData(floatData);
+    } else if (value == 1) { // 1: text
+        std::string* textData = nullptr;
+        int16_t num = 0;
+        ModelDialDataFactory::GetInstance().GetDialTextData(type, textData, num);
+        view->HandleTextData(textData, num);
+    } else if (value == 2) { // 2: multifloat
+        float* floatsData = nullptr;
+        int16_t num = 0;
+        ModelDialDataFactory::GetInstance().GetDialFloatData(type, floatsData, num);
+        view->HandleFloatData(floatsData, num);
+    }
+}
+
+void DialViewGroup::AddView(UIView* view, bool isDialVideoView)
+{
+    if (view == nullptr) {
+        GRAPHIC_LOGE("Parameter is nullptr.\n");
+        return;
+    }
+    dialViews_.PushBack(view);
+    Add(view);
+
+    if (isDialVideoView) {
+        if (video_ != nullptr) {
+            GRAPHIC_LOGE("Already added a video view.\n");
+            return;
+        }
+        video_ = reinterpret_cast<DialVideoView*>(view);
+    }
+}
+
+void DialViewGroup::AddView(DialDataType type, DialView* view, bool isPeriodic)
+{
+    if (view == nullptr) {
+        GRAPHIC_LOGE("Parameter is nullptr.\n");
+        return;
+    }
+
+    dataTypeMap_.insert(std::make_pair(static_cast<int16_t>(type), view));
+    if (isPeriodic) {
+        periodicUpdateTypes_.PushBack(type);
+    } else {
+        ModelDialDataFactory::GetInstance().RegisterDialDataListener(type, this);
+        passiveUpdateTypes_.PushBack(type);
+    }
+    dialViews_.PushBack(dynamic_cast<UIView*>(view));
+    ProcessData(type, view);
+    Add(dynamic_cast<UIView*>(view));
+}
+
+void DialViewGroup::SetPeriod(uint32_t period)
+{
+    if (period_ < DEFAULT_TASK_PERIOD) {
+        period_ = DEFAULT_TASK_PERIOD;
+    } else {
+        period_ = period;
+    }
+}
+
+uint32_t DialViewGroup::GetPeriod()
+{
+    return period_;
+}
+
+void DialViewGroup::UpdateViewsByPeriodicUpdateData()
+{
+    ListNode<DialDataType>* node = periodicUpdateTypes_.Head();
+    while (node != periodicUpdateTypes_.End()) {
+        DialDataType type = node->data_;
+        auto iter = dataTypeMap_.find(static_cast<int16_t>(type));
+        if (iter != dataTypeMap_.end()) {
+            ProcessData(type, iter->second);
+        }
+        node = node->next_;
+    }
+    if (LowPowerManager::GetInstance()->IsLiteSurfaceInRootView()) {
+        Invalidate();
+    }
+}
+
+void DialViewGroup::OnDialFloatDataUpdate(DialDataType type, float data)
+{
+    auto iter = dataTypeMap_.find(static_cast<int16_t>(type));
+    if (iter != dataTypeMap_.end()) {
+        DialView* view = iter->second;
+        view->HandleFloatData(data);
+    }
+}
+
+void DialViewGroup::OnDialFloatDataUpdate(DialDataType type, const float* data, uint16_t num)
+{
+    auto iter = dataTypeMap_.find(static_cast<int16_t>(type));
+    if (iter != dataTypeMap_.end()) {
+        DialView* view = iter->second;
+        view->HandleFloatData(data, num);
+    }
+}
+
+void DialViewGroup::OnDialTextDataUpdate(DialDataType type, const std::string* data, uint16_t num)
+{
+    auto iter = dataTypeMap_.find(static_cast<int16_t>(type));
+    if (iter != dataTypeMap_.end()) {
+        DialView* view = iter->second;
+        view->HandleTextData(data, num);
+    }
+}
+
+void DialViewGroup::AddDialClick(Rect& rect, const char* bundleName)
+{
+    if (bundleName == nullptr) {
+        return;
+    }
+    uint32_t len = static_cast<uint32_t>(strlen(bundleName));
+    char* name = static_cast<char*>(UIMalloc(++len));
+    if (name == nullptr) {
+        return;
+    }
+    if (memcpy_s(name, len, bundleName, len) != EOK) {
+        UIFree(name);
+        name = nullptr;
+        return;
+    }
+    name[len] = '\0';
+    DialClick click = {rect, false, {.bundleName = name}};
+    dialClicks_.PushBack(click);
+}
+
+void DialViewGroup::AddDialClick(Rect& rect, uint32_t sliceId)
+{
+    if (sliceId == 0) {
+        return;
+    }
+
+    DialClick click = {rect, true, {.sliceId = sliceId}};
+    dialClicks_.PushBack(click);
+}
+
+bool DialViewGroup::OnClickEvent(const ClickEvent& event)
+{
+    Point point = event.GetCurrentPos();
+    ListNode<DialClick>* node = dialClicks_.Head();
+    while (node != dialClicks_.End()) {
+        DialClick dialClick = node->data_;
+        if (dialClick.area.IsContains(point)) {
+            if (dialClick.isSliceType) {
+                NativeAbility::GetInstance().ChangeSlice(dialClick.sliceId);
+            } else {
+#ifdef JS_ENABLE
+                StartJsApp(dialClick.bundleName);
+#endif
+            }
+            return true;
+        }
+        node = node->next_;
+    }
+    return false;
+}
+
+void DialViewGroup::ScrollBegin(bool isActive)
+{
+    if (video_ == nullptr) {
+        return;
+    }
+    if (video_->IsPlayed()) {
+        video_->PausePlay();
+    }
+}
+
+void DialViewGroup::ScrollEnd(bool isActive)
+{
+    if (video_ == nullptr) {
+        return;
+    }
+
+    if (isActive) {
+        if (video_->IsPaused()) {
+            video_->ResumePlay();
+        } else if (video_->IsStopped()) {
+            video_->StartPlay();
+        }
+    }
+}
+
+void DialViewGroup::CoverBegin(bool isCovered)
+{
+    if (video_ == nullptr) {
+        return;
+    }
+
+    if (video_->IsPlayed()) {
+        video_->PausePlay();
+    }
+}
+
+void DialViewGroup::CoverEnd(bool isCovered)
+{
+    if (video_ == nullptr) {
+        return;
+    }
+    if (!isCovered) {
+        if (video_->IsPaused()) {
+            video_->ResumePlay();
+        } else if (video_->IsStopped()) {
+            video_->StartPlay();
+        }
+    }
+}
+}
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/ModelDialDataFactory.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/ModelDialDataFactory.cpp
new file mode 100644 (file)
index 0000000..9d02e69
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2023. All rights reserved.
+ * Description: ModelDialDataFactory
+ * Author:
+ * Create: 2023-12
+ */
+
+#include "ModelDialDataFactory.h"
+namespace OHOS {
+bool ModelDialDataFactory::GetDialTextData(DialDataType& type, string*& out, int16_t& strNum)
+{
+    DialBaseModel* model = GetModuleByType(type);
+    if (model == nullptr) {
+        return false;
+    }
+    return model->GetDialTextData(type, out, strNum);
+}
+
+bool ModelDialDataFactory::GetDialFloatData(DialDataType& type, float& out)
+{
+    DialBaseModel* model = GetModuleByType(type);
+    if (model == nullptr) {
+        return false;
+    }
+    return model->GetDialFloatData(type, out);
+}
+
+bool ModelDialDataFactory::GetDialFloatData(DialDataType& type, float*& out, int16_t& len)
+{
+    DialBaseModel* model = GetModuleByType(type);
+    if (model == nullptr) {
+        return false;
+    }
+    return model->GetDialFloatData(type, out, len);
+}
+
+DialBaseModel* ModelDialDataFactory::GetModuleByType(DialDataType& type)
+{
+    auto iter = models_.find(static_cast<int16_t>(type));
+    if (iter == models_.end()) {
+        return nullptr;
+    }
+    return iter->second;
+}
+
+bool ModelDialDataFactory::RegisterDialDataListener(DialDataType type, OnDialDataUpdateListener* listener)
+{
+    DialBaseModel* model = GetModuleByType(type);
+    if (model == nullptr) {
+        return false;
+    }
+    model->RegisterDialDataListener(listener);
+    return true;
+}
+
+bool ModelDialDataFactory::UnRegisterDialDataListener(DialDataType type)
+{
+    DialBaseModel* model = GetModuleByType(type);
+    if (model == nullptr) {
+        return false;
+    }
+    model->UnRegisterDialDataListener();
+    return true;
+}
+
+void ModelDialDataFactory::DumpModules()
+{
+    printf("ModelDialDataFactory::DumpModules start\n");
+    for (auto it : models_) {
+        printf("module: %d\n", it.first);
+    }
+    printf("ModelDialDataFactory::DumpModules end\n");
+}
+}
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/parser/DialBinParser.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/parser/DialBinParser.cpp
new file mode 100644 (file)
index 0000000..3316e96
--- /dev/null
@@ -0,0 +1,570 @@
+/*\r
+ * Copyright (c) 2023 CompanyNameMagicTag.\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
+#include "DialBinParser.h"\r
+#include <securec.h>\r
+#include "common/image_cache_manager.h"\r
+#include "gfx_utils/mem_api.h"\r
+#if ENABLE_MEMORY_CHECK\r
+#include "gfx_utils/mem_check.h"\r
+#endif\r
+#include "DialStaticImgView.h"\r
+#include "DialVideoView.h"\r
+#include "DialSequenceImgView.h"\r
+#include "DialRotateImgView.h"\r
+#include "DialOptionImgView.h"\r
+#include "DialLabelView.h"\r
+#include "DialDigitalImgView.h"\r
+#include "DialBoxProgressView.h"\r
+#include "DialArcProgressView.h"\r
+#include "DialArcLabelView.h"\r
+\r
+namespace OHOS {\r
+DialBinParser::DialBinParser()\r
+{\r
+    funcArray_[0] = &DialBinParser::ParserDialStaticImg;\r
+    funcArray_[1] = &DialBinParser::ParserDialSequenceImg;\r
+    funcArray_[2] = &DialBinParser::ParserDialRotateImg; // 2: index\r
+    funcArray_[3] = &DialBinParser::ParserDialOptionImg; // 3: index\r
+    funcArray_[4] = &DialBinParser::ParserDialDigitalImg; // 4: index\r
+    funcArray_[5] = &DialBinParser::ParserDialLabel; // 5: index\r
+    funcArray_[6] = &DialBinParser::ParserDialArcLabel; // 6: index\r
+    funcArray_[7] = &DialBinParser::ParserDialBoxProgress; // 7: index\r
+    funcArray_[8] = &DialBinParser::ParserDialArcProgress; // 8: index\r
+    funcArray_[9] = &DialBinParser::ParserDialVideo; // 9: index\r
+    funcArray_[10] = &DialBinParser::ParserDialClick; // 10: index\r
+}\r
+\r
+DialBinParser::~DialBinParser()\r
+{\r
+}\r
+\r
+void* DialBinParser::MallocAndReadBuf(FILE* file, uint32_t readSize)\r
+{\r
+    if (file == nullptr || readSize == 0) {\r
+        GRAPHIC_LOGE("[%s: %d]param error!\n", __FUNCTION__, __LINE__);\r
+        return nullptr;\r
+    }\r
+    uint8_t* data = static_cast<uint8_t*>(UIMalloc(readSize));\r
+    if (data == nullptr) {\r
+        GRAPHIC_LOGE("UIMalloc fail!\n");\r
+        return nullptr;\r
+    }\r
+\r
+    if (fread(data, 1, readSize, file) != readSize) {\r
+        UIFree(data);\r
+        GRAPHIC_LOGE("fread fail!\n");\r
+        return nullptr;\r
+    }\r
+    return data;\r
+}\r
+\r
+DialBinParser* DialBinParser::GetInstance(void)\r
+{\r
+    static DialBinParser instance;\r
+    return &instance;\r
+}\r
+\r
+bool DialBinParser::UpdateDial(const std::string& file, FILE* fp, DialViewGroup* group)\r
+{\r
+    if (fp == nullptr) {\r
+        GRAPHIC_LOGE("fp is nullptr!\n");\r
+        return false;\r
+    }\r
+    if (group == nullptr) {\r
+        GRAPHIC_LOGE("update dial param error!\n");\r
+        return false;\r
+    }\r
+    file_ = file;\r
+    dialGroup_ = group;\r
+\r
+    int32_t ret = ParseDialHeader(fp);\r
+    if (ret == -1) {\r
+        GRAPHIC_LOGE("Parse dial header fail, allom header mem fail!\n");\r
+        return false;\r
+    }\r
+    return true;\r
+}\r
+\r
+int32_t DialBinParser::ParseDialHeader(FILE* file)\r
+{\r
+    if (file == nullptr) {\r
+        GRAPHIC_LOGE("Parser dial header fail, param error!\n");\r
+        return -1;\r
+    }\r
+\r
+    DialHeader* dialHeader = static_cast<DialHeader*>(MallocAndReadBuf(file, sizeof(DialHeader)));\r
+    if (dialHeader == nullptr) {\r
+        GRAPHIC_LOGE("[%s: %d]malloc or read fail!\n", __FUNCTION__, __LINE__);\r
+        return -1;\r
+    }\r
+\r
+    dialGroup_->SetWidth(dialHeader->width);\r
+    dialGroup_->SetHeight(dialHeader->height);\r
+    dialGroup_->SetPeriod(1000 / dialHeader->freq); // 1000: ms\r
+    imageOffset_ = dialHeader->imageOffset;\r
+\r
+    uint8_t* viewType = static_cast<uint8_t*>(MallocAndReadBuf(file, (sizeof(uint8_t) * dialHeader->dialViewCount)));\r
+    if (viewType == nullptr) {\r
+        UIFree(dialHeader);\r
+        GRAPHIC_LOGE("[%s: %d]malloc or read fail!\n", __FUNCTION__, __LINE__);\r
+        return -1;\r
+    }\r
+\r
+    for (uint8_t i = 0; i < dialHeader->dialViewCount; i++) {\r
+        if (viewType[i] < DIAL_BIN_PARSER_FUNC_NUM) {\r
+            int32_t ret = (this->*funcArray_[viewType[i]])(file);\r
+            if (ret == -1) {\r
+                GRAPHIC_LOGE("parser dial view fail, view type id is %d!\n", viewType[i]);\r
+                break;\r
+            }\r
+        }\r
+    }\r
+\r
+    UIFree(viewType);\r
+    UIFree(dialHeader);\r
+    return 0;\r
+}\r
+\r
+int32_t DialBinParser::ParserDialStaticImg(FILE* fp)\r
+{\r
+    if (fp == nullptr) {\r
+        GRAPHIC_LOGE("Parser dial static image fail, file is nullptr!\n");\r
+        return -1;\r
+    }\r
+\r
+    DialStaticImg* data = static_cast<DialStaticImg*>(MallocAndReadBuf(fp, sizeof(DialStaticImg)));\r
+    if (data == nullptr) {\r
+        GRAPHIC_LOGE("[%s: %d]malloc or read fail!\n", __FUNCTION__, __LINE__);\r
+        return -1;\r
+    }\r
+\r
+    DialStaticImgView* view = new DialStaticImgView();\r
+    view->SetPosition(data->pos.x, data->pos.y);\r
+    view->Rotate(data->rotate, {data->center.x, data->center.y});\r
+    uint32_t resId = data->imgId | dirId_;\r
+    uint32_t curReadPt = ftell(fp);\r
+    ImageInfo* info = ImageCacheManager::GetInstance().LoadOneInMultiRes(resId, file_, fp, false, imageOffset_);\r
+    if (info == nullptr) {\r
+        GRAPHIC_LOGE("[%s: %d]load img fail! file:%s resId:%x\n", __FUNCTION__, __LINE__, file_.c_str(), resId);\r
+        UIFree(data);\r
+        return -1;\r
+    }\r
+    fseek(fp, curReadPt, SEEK_SET);\r
+    view->SetSrc(info);\r
+    dialGroup_->AddView(view);\r
+\r
+    UIFree(data);\r
+    return 0;\r
+}\r
+\r
+int32_t DialBinParser::ParserDialSequenceImg(FILE* fp)\r
+{\r
+    if (fp == nullptr) {\r
+        GRAPHIC_LOGE("Parser dial sequence image fail, file is nullptr!\n");\r
+        return -1;\r
+    }\r
+\r
+    DialSequenceImg* data = static_cast<DialSequenceImg*>(MallocAndReadBuf(fp, sizeof(DialSequenceImg)));\r
+    if (data == nullptr) {\r
+        GRAPHIC_LOGE("[%s: %d]malloc or read fail!\n", __FUNCTION__, __LINE__);\r
+        return -1;\r
+    }\r
+\r
+    uint16_t* imgIdArray = static_cast<uint16_t*>(MallocAndReadBuf(fp, (sizeof(uint16_t) * data->imgNum)));\r
+    if (imgIdArray == nullptr) {\r
+        GRAPHIC_LOGE("[%s: %d]malloc or read fail!\n", __FUNCTION__, __LINE__);\r
+        UIFree(data);\r
+        return -1;\r
+    }\r
+\r
+    DialSequenceImgView* view = new DialSequenceImgView();\r
+    view->SetPosition(data->pos.x, data->pos.y);\r
+    view->SetRepeat(data->repeat);\r
+    view->SetTimeOfUpdate(data->interval);\r
+    ImageAnimatorInfo* imgInfoArray = new ImageAnimatorInfo[data->imgNum]();\r
+    ImageInfo* info = nullptr;\r
+    for (uint8_t i = 0; i < data->imgNum; i++) {\r
+        uint32_t resId = imgIdArray[i] | dirId_;\r
+        uint32_t curReadPt = ftell(fp);\r
+        info = ImageCacheManager::GetInstance().LoadOneInMultiRes(resId, file_, fp, false, imageOffset_);\r
+        if (info == nullptr) {\r
+            UIFree(imgIdArray);\r
+            UIFree(data);\r
+            GRAPHIC_LOGE("[%s: %d]load img fail! file:%s resId:%x\n", __FUNCTION__, __LINE__, file_.c_str(), resId);\r
+            return -1;\r
+        }\r
+        fseek(fp, curReadPt, SEEK_SET);\r
+        imgInfoArray[i].imageInfo = info;\r
+        imgInfoArray[i].pos = {data->pos.x, data->pos.y};\r
+        imgInfoArray[i].width = info->header.width;\r
+        imgInfoArray[i].height = info->header.height;\r
+        imgInfoArray[i].imageType = IMG_SRC_IMAGE_INFO;\r
+    }\r
+    view->SetSequenceRes(imgInfoArray, data->imgNum);\r
+    delete [] imgInfoArray;\r
+    view->Start();\r
+    dialGroup_->AddView(view);\r
+\r
+    UIFree(imgIdArray);\r
+    UIFree(data);\r
+    return 0;\r
+}\r
+\r
+int32_t DialBinParser::ParserDialRotateImg(FILE* fp)\r
+{\r
+    if (fp == nullptr) {\r
+        GRAPHIC_LOGE("Parser dial sequence image fail, file is nullptr!\n");\r
+        return -1;\r
+    }\r
+\r
+    DialRotateImg* data = static_cast<DialRotateImg*>(MallocAndReadBuf(fp, sizeof(DialRotateImg)));\r
+    if (data == nullptr) {\r
+        GRAPHIC_LOGE("[%s: %d]malloc or read fail!\n", __FUNCTION__, __LINE__);\r
+        return -1;\r
+    }\r
+    DialRotateImgView* view = new DialRotateImgView();\r
+    view->SetPosition(data->pos.x, data->pos.y);\r
+    view->SetRotatePivot({data->center.x, data->center.y});\r
+    view->SetRotateStart(data->rotateStart);\r
+    view->SetRotateEnd(data->rotateEnd);\r
+    uint32_t resId = data->imgId | dirId_;\r
+    uint32_t curReadPt = ftell(fp);\r
+    ImageInfo* info = ImageCacheManager::GetInstance().LoadOneInMultiRes(resId, file_, fp, false, imageOffset_);\r
+    if (info == nullptr) {\r
+        GRAPHIC_LOGE("[%s: %d]load img fail! file:%s resId:%x\n", __FUNCTION__, __LINE__, file_.c_str(), resId);\r
+        UIFree(data);\r
+        return -1;\r
+    }\r
+    fseek(fp, curReadPt, SEEK_SET);\r
+    view->SetSrc(info);\r
+    dialGroup_->AddView(static_cast<DialDataType>(data->bindData), view, data->isPeriod);\r
+\r
+    UIFree(data);\r
+    return 0;\r
+}\r
+\r
+int32_t DialBinParser::ParserDialOptionImg(FILE* fp)\r
+{\r
+    if (fp == nullptr) {\r
+        GRAPHIC_LOGE("Parser dial option image fail, file is nullptr!\n");\r
+        return -1;\r
+    }\r
+\r
+    DialOptionImg* data = static_cast<DialOptionImg*>(MallocAndReadBuf(fp, sizeof(DialOptionImg)));\r
+    if (data == nullptr) {\r
+        GRAPHIC_LOGE("[%s: %d]malloc or read fail!\n", __FUNCTION__, __LINE__);\r
+        return -1;\r
+    }\r
+\r
+    uint16_t* imgIdArray = static_cast<uint16_t*>(MallocAndReadBuf(fp, (sizeof(uint16_t) * data->count)));\r
+    if (data == nullptr) {\r
+        UIFree(data);\r
+        GRAPHIC_LOGE("[%s: %d]malloc or read fail!\n", __FUNCTION__, __LINE__);\r
+        return -1;\r
+    }\r
+\r
+    DialOptionImgView* view = new DialOptionImgView();\r
+    view->SetPosition(data->pos.x, data->pos.y);\r
+\r
+    ImageInfo* infoArray = new ImageInfo[data->count]();\r
+    for (uint8_t i = 0; i < data->count; i++) {\r
+        uint32_t resId = imgIdArray[i] | dirId_;\r
+        uint32_t curReadPt = ftell(fp);\r
+        ImageInfo* info = ImageCacheManager::GetInstance().LoadOneInMultiRes(resId,\r
+            file_, fp, false, imageOffset_);\r
+        if (info == nullptr) {\r
+            GRAPHIC_LOGE("[%s: %d]load img fail! file:%s resId:%x\n", __FUNCTION__, __LINE__, file_.c_str(), resId);\r
+            UIFree(imgIdArray);\r
+            UIFree(data);\r
+            return -1;\r
+        }\r
+        fseek(fp, curReadPt, SEEK_SET);\r
+        infoArray[i] = *info;\r
+    }\r
+    view->SetOptionRes(infoArray, data->count);\r
+    delete []infoArray;\r
+\r
+    dialGroup_->AddView(static_cast<DialDataType>(data->bindData), view, data->isPeriod);\r
+\r
+    UIFree(imgIdArray);\r
+    UIFree(data);\r
+    return 0;\r
+}\r
+\r
+int32_t DialBinParser::ParserDialDigitalImg(FILE* fp)\r
+{\r
+    DialDigitalImg* data = static_cast<DialDigitalImg*>(MallocAndReadBuf(fp, sizeof(DialDigitalImg)));\r
+    if (data == nullptr) {\r
+        GRAPHIC_LOGE("[%s: %d]malloc or read fail!\n", __FUNCTION__, __LINE__);\r
+        return -1;\r
+    }\r
+\r
+    DialDigitalImgView* view = new DialDigitalImgView();\r
+    view->SetAlignPos({data->alignPosition.x, data->alignPosition.y});\r
+    view->SetAlign(static_cast<ImgAlign>(data->alignType));\r
+    view->SetSpace(data->space);\r
+    view->SetDecimalPrecision(data->decimalPrecision);\r
+    view->SetIntegerLength(data->integerLength);\r
+    uint32_t resId = 0;\r
+    uint32_t curReadPt = 0;\r
+    if (data->signImgId != 0) {\r
+        resId = data->signImgId | dirId_;\r
+        curReadPt = ftell(fp);\r
+        ImageInfo* signImgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(resId,\r
+            file_, fp, false, imageOffset_);\r
+        if (signImgInfo != nullptr) {\r
+            view->SetSignRes(signImgInfo);\r
+        }\r
+        fseek(fp, curReadPt, SEEK_SET);\r
+    }\r
+    if (data->decimalPointImgId != 0) {\r
+        resId = data->decimalPointImgId | dirId_;\r
+        curReadPt = ftell(fp);\r
+        ImageInfo* decimalPointInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(resId,\r
+            file_, fp, false, imageOffset_);\r
+        if (decimalPointInfo != nullptr) {\r
+            view->SetDecimalPointRes(decimalPointInfo);\r
+        }\r
+        fseek(fp, curReadPt, SEEK_SET);\r
+    }\r
+\r
+    ImageInfo* numInfoArray[DIGITALIMG_IMG_MAX_NUM] = {};\r
+    for (uint16_t i = 0; i < DIGITALIMG_IMG_MAX_NUM; i++) {\r
+        resId = data->imgIds[i] | dirId_;\r
+        curReadPt = ftell(fp);\r
+        numInfoArray[i] = ImageCacheManager::GetInstance().LoadOneInMultiRes(resId,\r
+            file_, fp, false, imageOffset_);\r
+        if (numInfoArray[i] == nullptr) {\r
+            GRAPHIC_LOGE("[%s: %d]load img fail! file: %s resId: %x\n",\r
+                __FUNCTION__, __LINE__, file_.c_str(), data->imgIds[i]);\r
+            UIFree(data);\r
+            return -1;\r
+        }\r
+        fseek(fp, curReadPt, SEEK_SET);\r
+    }\r
+    view->SetParent(dialGroup_);\r
+    view->SetNumRes(const_cast<const ImageInfo**>(numInfoArray), DIGITALIMG_IMG_MAX_NUM);\r
+    dialGroup_->AddView(static_cast<DialDataType>(data->bindData), view, data->isPeriod);\r
+\r
+    UIFree(data);\r
+    return 0;\r
+}\r
+\r
+int32_t DialBinParser::ParserDialLabel(FILE* fp)\r
+{\r
+    if (fp == nullptr) {\r
+        GRAPHIC_LOGE("Parser dial option image fail, file is nullptr!\n");\r
+        return -1;\r
+    }\r
+\r
+    DialLabel* data = static_cast<DialLabel*>(MallocAndReadBuf(fp, sizeof(DialLabel)));\r
+    if (data == nullptr) {\r
+        GRAPHIC_LOGE("[%s: %d]malloc or read fail!\n", __FUNCTION__, __LINE__);\r
+        return -1;\r
+    }\r
+\r
+    DialLabelView* view = new DialLabelView();\r
+    view->SetPosition(data->rect.x, data->rect.y, data->rect.w, data->rect.h);\r
+    view->SetLineBreakMode(data->breakMode);\r
+    view->SetFont(data->fontName, data->fontSize);\r
+    Color32 color = {.full = data->color};\r
+    view->SetTextColor(color);\r
+    view->SetAlign(static_cast<UITextLanguageAlignment>(data->align));\r
+    if (data->bindData != 0) {\r
+        view->SetTextWithWildcard(data->text);\r
+        dialGroup_->AddView(static_cast<DialDataType>(data->bindData), view, data->isPeriod);\r
+    } else {\r
+        view->SetText(data->text);\r
+        dialGroup_->AddView(view);\r
+    }\r
+    UIFree(data);\r
+    return 0;\r
+}\r
+\r
+int32_t DialBinParser::ParserDialArcLabel(FILE* fp)\r
+{\r
+    if (fp == nullptr) {\r
+        GRAPHIC_LOGE("Parser dial option image fail, file is nullptr!\n");\r
+        return -1;\r
+    }\r
+\r
+    DialArcLabel* data = static_cast<DialArcLabel*>(MallocAndReadBuf(fp, sizeof(DialArcLabel)));\r
+    if (data == nullptr) {\r
+        GRAPHIC_LOGE("[%s: %d]malloc or read fail!\n", __FUNCTION__, __LINE__);\r
+        return -1;\r
+    }\r
+\r
+    DialArcLabelView* view = new DialArcLabelView();\r
+    view->SetAlign(static_cast<UITextLanguageAlignment>(data->align));\r
+    view->SetFont(data->fontName, data->fontSize);\r
+    view->SetArcTextCenter(data->center.x, data->center.y);\r
+    view->SetArcTextRadius(data->radius);\r
+    view->SetArcTextAngle(data->rotateStart, data->rotateEnd);\r
+    view->SetStyle(STYLE_TEXT_COLOR, data->color);\r
+    if (data->bindData != 0) {\r
+        view->SetTextWithWildcard(data->text);\r
+        dialGroup_->AddView(static_cast<DialDataType>(data->bindData), view, data->isPeriod);\r
+    } else {\r
+        view->SetText(data->text);\r
+        dialGroup_->AddView(view);\r
+    }\r
+    UIFree(data);\r
+    return 0;\r
+}\r
+\r
+bool DialBinParser::SetProgressType(FILE* fp, UIAbstractProgress* view, DialProgressType data)\r
+{\r
+    if (view == nullptr || fp == nullptr) {\r
+        GRAPHIC_LOGE("[%s: %d]param error!\n", __FUNCTION__, __LINE__);\r
+        return false;\r
+    }\r
+\r
+    if (data.type == 0) {\r
+        uint32_t resId = data.imgId | dirId_;\r
+        uint32_t curReadPt = ftell(fp);\r
+        ImageInfo* foregroundInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(resId,\r
+            file_, fp, false, imageOffset_);\r
+        if (foregroundInfo == nullptr) {\r
+            GRAPHIC_LOGE("[%s: %d]load img fail! file: %s resId: %x\n",\r
+                __FUNCTION__, __LINE__, file_.c_str(), resId);\r
+            return false;\r
+        }\r
+        fseek(fp, curReadPt, SEEK_SET);\r
+        view->SetImage(foregroundInfo, nullptr);\r
+    } else if (data.type == 1) {\r
+        view->SetForegroundStyle(STYLE_BACKGROUND_COLOR, data.color.full);\r
+    } else if (data.type == 2) { // 2: gradient\r
+        ColorStop* stopArray = static_cast<ColorStop*>(MallocAndReadBuf(fp, (sizeof(ColorStop) * data.stopCount)));\r
+        if (stopArray == nullptr) {\r
+            GRAPHIC_LOGE("[%s: %d]malloc or read fail!\n", __FUNCTION__, __LINE__);\r
+            return false;\r
+        }\r
+\r
+        LinearGradient linear = {data.rect.x, data.rect.y,\r
+            data.rect.x + data.rect.w - 1, data.rect.y + data.rect.h - 1};\r
+        view->SetForegroundGradient(linear, stopArray, data.stopCount);\r
+        UIFree(stopArray);\r
+    }\r
+    return true;\r
+}\r
+\r
+int32_t DialBinParser::ParserDialBoxProgress(FILE* fp)\r
+{\r
+    if (fp == nullptr) {\r
+        GRAPHIC_LOGE("Parser dial option image fail, file is nullptr!\n");\r
+        return -1;\r
+    }\r
+\r
+    DialBoxProgress* data = static_cast<DialBoxProgress*>(MallocAndReadBuf(fp, sizeof(DialBoxProgress)));\r
+    if (data == nullptr) {\r
+        GRAPHIC_LOGE("[%s: %d]malloc or read fail!\n", __FUNCTION__, __LINE__);\r
+        return -1;\r
+    }\r
+\r
+    DialBoxProgressView* view = new DialBoxProgressView();\r
+    view->SetPosition(data->typeData.rect.x, data->typeData.rect.y, data->typeData.rect.w, data->typeData.rect.h);\r
+    view->SetCapType(static_cast<CapType>(data->cap));\r
+    view->SetDirection(static_cast<UIBoxProgress::Direction>(data->direction));\r
+    view->SetBackgroundStyle(STYLE_BACKGROUND_COLOR, data->bgColor);\r
+\r
+    if (!SetProgressType(fp, view, data->typeData)) {\r
+        UIFree(data);\r
+        return -1;\r
+    }\r
+    dialGroup_->AddView(static_cast<DialDataType>(data->bindData), view, data->isPeriod);\r
+    UIFree(data);\r
+    return 0;\r
+}\r
+\r
+int32_t DialBinParser::ParserDialArcProgress(FILE* fp)\r
+{\r
+    if (fp == nullptr) {\r
+        GRAPHIC_LOGE("Parser dial option image fail, file is nullptr!\n");\r
+        return -1;\r
+    }\r
+\r
+    DialArcProgress* data = static_cast<DialArcProgress*>(MallocAndReadBuf(fp, sizeof(DialArcProgress)));\r
+    if (data == nullptr) {\r
+        GRAPHIC_LOGE("[%s: %d]malloc or read fail!\n", __FUNCTION__, __LINE__);\r
+        return -1;\r
+    }\r
+\r
+    DialArcProgressView* view = new DialArcProgressView();\r
+    view->SetPosition(data->typeData.rect.x, data->typeData.rect.y, data->typeData.rect.w, data->typeData.rect.h);\r
+    view->SetCenterPosition(data->typeData.rect.x + data->typeData.rect.w / 2, // 2: half\r
+        data->typeData.rect.y + data->typeData.rect.h / 2); // 2: half\r
+    view->SetRadius(data->radius);\r
+    view->SetStartAngle(data->startAngle);\r
+    view->SetEndAngle(data->endAngle);\r
+    view->SetForegroundStyle(STYLE_LINE_WIDTH, data->lineWidth);\r
+    view->SetCapType(static_cast<CapType>(data->cap));\r
+    view->SetBackgroundStyle(STYLE_BACKGROUND_COLOR, data->bgColor);\r
+\r
+    if (!SetProgressType(fp, view, data->typeData)) {\r
+        UIFree(data);\r
+        return -1;\r
+    }\r
+\r
+    dialGroup_->AddView(static_cast<DialDataType>(data->bindData), view, data->isPeriod);\r
+    UIFree(data);\r
+    return 0;\r
+}\r
+\r
+int32_t DialBinParser::ParserDialVideo(FILE* fp)\r
+{\r
+    if (fp == nullptr) {\r
+        GRAPHIC_LOGE("Parser dial option image fail, file is nullptr!\n");\r
+        return -1;\r
+    }\r
+\r
+    DialVideo* data = static_cast<DialVideo*>(MallocAndReadBuf(fp, sizeof(DialVideo)));\r
+    if (data == nullptr) {\r
+        GRAPHIC_LOGE("[%s: %d]malloc or read fail!\n", __FUNCTION__, __LINE__);\r
+        return -1;\r
+    }\r
+\r
+    DialVideoView* view = new DialVideoView();\r
+    view->SetPosition(data->rect.x, data->rect.y, data->rect.w, data->rect.h);\r
+    view->SetSurfaceColorkey(data->colorKey);\r
+    view->SetVideoRes(fp, data->offset);\r
+    dialGroup_->AddView(view, true);\r
+    UIFree(data);\r
+    return 0;\r
+}\r
+\r
+int32_t DialBinParser::ParserDialClick(FILE* fp)\r
+{\r
+    if (fp == nullptr) {\r
+        GRAPHIC_LOGE("Parser dial option image fail, file is nullptr!\n");\r
+        return -1;\r
+    }\r
+\r
+    DialClick* data = static_cast<DialClick*>(MallocAndReadBuf(fp, sizeof(DialClick)));\r
+    if (data == nullptr) {\r
+        GRAPHIC_LOGE("[%s: %d]malloc or read fail!\n", __FUNCTION__, __LINE__);\r
+        return -1;\r
+    }\r
+\r
+    Rect rect = {data->rect.x, data->rect.y, data->rect.x + data->rect.w - 1, data->rect.y + data->rect.h - 1};\r
+    if (data->type == 0) {\r
+        dialGroup_->AddDialClick(rect, data->sliceId);\r
+    } else if (data->type == 1) {\r
+        dialGroup_->AddDialClick(rect, data->bundleName);\r
+    }\r
+    UIFree(data);\r
+\r
+    return 0;\r
+}\r
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/parser/DialBinParser.h b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/parser/DialBinParser.h
new file mode 100644 (file)
index 0000000..2cd1305
--- /dev/null
@@ -0,0 +1,60 @@
+/*\r
+ * Copyright (c) 2023 CompanyNameMagicTag.\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
+#ifndef GRAPHIC_LITE_DIAL_BIN_PARSER_H\r
+#define GRAPHIC_LITE_DIAL_BIN_PARSER_H\r
+#include <iostream>\r
+#include <cstring>\r
+#include "graphic_types.h"\r
+#include "DialViewGroup.h"\r
+#include "DialBinTypes.h"\r
+#include "components/ui_abstract_progress.h"\r
+\r
+namespace OHOS {\r
+\r
+class DialBinParser {\r
+public:\r
+    static DialBinParser* GetInstance(void);\r
+    bool UpdateDial(const std::string& file, FILE* fp, DialViewGroup* group);\r
+\r
+protected:\r
+    int32_t ParseDialHeader(FILE* file);\r
+    int32_t ParserDialStaticImg(FILE* fp);\r
+    int32_t ParserDialSequenceImg(FILE* fp);\r
+    int32_t ParserDialRotateImg(FILE* fp);\r
+    int32_t ParserDialOptionImg(FILE* fp);\r
+    int32_t ParserDialDigitalImg(FILE* fp);\r
+    int32_t ParserDialLabel(FILE* fp);\r
+    int32_t ParserDialArcLabel(FILE* fp);\r
+    int32_t ParserDialBoxProgress(FILE* fp);\r
+    int32_t ParserDialArcProgress(FILE* fp);\r
+    int32_t ParserDialVideo(FILE* fp);\r
+    int32_t ParserDialClick(FILE* fp);\r
+\r
+private:\r
+    DialBinParser();\r
+    virtual ~DialBinParser();\r
+    void* MallocAndReadBuf(FILE* file, uint32_t readSize);\r
+    bool SetProgressType(FILE* fp, UIAbstractProgress* view, DialProgressType data);\r
+\r
+    static constexpr uint8_t DIAL_BIN_PARSER_FUNC_NUM = 11;\r
+    int32_t (DialBinParser::*funcArray_[DIAL_BIN_PARSER_FUNC_NUM])(FILE*);\r
+\r
+    DialViewGroup* dialGroup_ = nullptr;\r
+    std::string file_;\r
+    uint32_t dirId_ = 0xfef << 20;\r
+    uint32_t imageOffset_ = 0;\r
+};\r
+}\r
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/parser/DialBinTypes.h b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/parser/DialBinTypes.h
new file mode 100644 (file)
index 0000000..aadaf21
--- /dev/null
@@ -0,0 +1,158 @@
+/*\r
+ * Copyright (c) 2023 CompanyNameMagicTag.\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
+#ifndef GRAPHIC_LITE_DIAL_BIN_TYPE_H\r
+#define GRAPHIC_LITE_DIAL_BIN_TYPE_H\r
+#include "color.h"\r
+#include "graphic_types.h"\r
+#include "components/ui_canvas_ext.h"\r
+\r
+namespace OHOS {\r
+struct DialRect {\r
+    int16_t x;\r
+    int16_t y;\r
+    int16_t w;\r
+    int16_t h;\r
+};\r
+\r
+struct DialHeader {\r
+    char dialName[16];\r
+    int16_t width;\r
+    int16_t height;\r
+    char version[16];\r
+    uint16_t previewImgId;\r
+    char description[128];\r
+    uint32_t imageOffset;\r
+    uint8_t freq;\r
+    uint8_t dialViewCount;\r
+};\r
+\r
+struct DialStaticImg {\r
+    Point pos;\r
+    Point center;\r
+    float rotate;\r
+    uint16_t imgId;\r
+};\r
+\r
+struct DialSequenceImg {\r
+    Point pos;\r
+    uint16_t interval;\r
+    bool repeat;\r
+    uint8_t imgNum;\r
+};\r
+\r
+struct DialRotateImg {\r
+    Point pos;\r
+    Point center;\r
+    int16_t rotateStart;\r
+    int16_t rotateEnd;\r
+    uint16_t imgId;\r
+    int16_t bindData;\r
+    bool isPeriod;\r
+};\r
+\r
+struct DialOptionImg {\r
+    Point pos;\r
+    int16_t bindData;\r
+    bool isPeriod;\r
+    uint8_t count;\r
+};\r
+\r
+constexpr uint8_t DIGITALIMG_IMG_MAX_NUM = 10;\r
+struct DialDigitalImg {\r
+    uint8_t alignType : 4;\r
+    uint8_t integerLength : 4;\r
+    uint8_t decimalPrecision;\r
+    uint16_t imgIds[DIGITALIMG_IMG_MAX_NUM];\r
+    int16_t signImgId;\r
+    int16_t decimalPointImgId;\r
+    uint16_t space;\r
+    Point alignPosition;\r
+    int16_t bindData;\r
+    bool isPeriod;\r
+};\r
+\r
+struct DialLabel {\r
+    uint8_t breakMode;\r
+    uint8_t align;\r
+    uint8_t fontSize;\r
+    bool isPeriod;\r
+    DialRect rect;\r
+    uint32_t color;\r
+    char fontName[64];\r
+    char text[64];\r
+    int16_t bindData;\r
+};\r
+\r
+struct DialArcLabel {\r
+    uint8_t align;\r
+    uint8_t fontSize;\r
+    Point center;\r
+    int16_t radius;\r
+    int16_t rotateStart;\r
+    int16_t rotateEnd;\r
+    uint32_t color;\r
+    char fontName[64];\r
+    char text[64];\r
+    int16_t bindData;\r
+    bool isPeriod;\r
+};\r
+\r
+struct DialProgressType {\r
+    uint8_t type;       //  image | color | gradient_color\r
+    DialRect rect;\r
+    union {\r
+        uint8_t stopCount;\r
+        uint16_t imgId;\r
+        Color32 color;\r
+    };\r
+};\r
+\r
+struct DialBoxProgress {\r
+    uint8_t cap;\r
+    uint8_t direction;\r
+    bool isPeriod;\r
+    int16_t bindData;\r
+    uint32_t bgColor;\r
+    DialProgressType typeData;\r
+};\r
+\r
+struct DialArcProgress {\r
+    uint8_t cap;\r
+    bool isPeriod;\r
+    uint16_t radius;\r
+    uint16_t startAngle;\r
+    uint16_t endAngle;\r
+    uint16_t lineWidth;\r
+    int16_t bindData;\r
+    uint32_t bgColor;\r
+    DialProgressType typeData;\r
+};\r
+\r
+struct DialVideo {\r
+    DialRect rect;\r
+    uint32_t offset;\r
+    Color32 colorKey;\r
+};\r
+\r
+struct DialClick {\r
+    uint8_t type;\r
+    DialRect rect;\r
+    union {\r
+        uint32_t sliceId;\r
+        char bundleName[64];\r
+    };\r
+};\r
+}\r
+#endif // GRAPHIC_LITE_DIAL_BIN_TYPE_H
\ No newline at end of file
index 8ce8a5d..194e59a 100644 (file)
@@ -1,32 +1,32 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: voice assistant
- * Author: CompanyName
- * Create: 2022-01-18
- */
-#ifndef MAIN_VOCASSIST_VIEW_H
-#define MAIN_VOCASSIST_VIEW_H
-
-#include "BaseView.h"
-#include "View.h"
-#include "VocassistModel.h"
-#include "VocassistView.h"
-
-namespace OHOS {
-class VocassistPresenter;
-class MainVocassistView : public View<VocassistPresenter> {
-public:
-    MainVocassistView();
-    virtual ~MainVocassistView();
-    void OnStart() override;
-    void OnSetUpView() override;
-    void OnTearDownView() override;
-    void OnStop() override;
-    static MainVocassistView *GetInstance();
-    VoiceAssistance *GetVocassist();
-private:
-    VoiceAssistance* vocassistance{nullptr};
-    UIView::OnDragListener* draglistener{nullptr};
-};
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: voice assistant\r
+ * Author: CompanyName\r
+ * Create: 2022-01-18\r
+ */\r
+#ifndef MAIN_VOCASSIST_VIEW_H\r
+#define MAIN_VOCASSIST_VIEW_H\r
+\r
+#include "BaseView.h"\r
+#include "View.h"\r
+#include "VocassistModel.h"\r
+#include "VocassistView.h"\r
+\r
+namespace OHOS {\r
+class VocassistPresenter;\r
+class MainVocassistView : public View<VocassistPresenter> {\r
+public:\r
+    MainVocassistView();\r
+    virtual ~MainVocassistView();\r
+    void OnStart() override;\r
+    void OnSetUpView() override;\r
+    void OnTearDownView() override;\r
+    void OnStop() override;\r
+    static MainVocassistView *GetInstance();\r
+    VoiceAssistance *GetVocassist();\r
+private:\r
+    VoiceAssistance* vocassistance{nullptr};\r
+    UIView::OnDragListener* draglistener{nullptr};\r
+};\r
+}\r
 #endif
\ No newline at end of file
index 32a7420..e17d153 100644 (file)
@@ -1,64 +1,64 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: voice assistant
- * Author: CompanyName
- * Create: 2022-01-18
- */
-
-#ifndef VOCASSIST_MODEL_H
-#define VOCASSIST_MODEL_H
-
-#include "smart_voice_service.h"
-#include "VocassistView.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-void VoiceFunction(SmartVoiceEventType type, td_void *data, td_s32 size);
-#ifdef __cplusplus
-}
-#endif
-
-namespace OHOS {
-typedef enum {
-    ONE_ROAD_AND_INCOMING,
-    ONE_OR_MORE_ROAD_AND_OTHER_STATUS,
-    OTHER_STATUS
-} PhoneStatus;
-
-typedef enum {
-    DISABLE,
-    ENABLE
-} EnableChoice;
-
-class VocassistModel {
-public:
-    VocassistModel();
-    virtual ~VocassistModel();
-    static VocassistModel *GetInstance(void);
-    void Init();                // 初始化语音识别服务
-    void UnInit();              // 结束语音识别服务
-
-    int GetPhoneDetailStatus();                         // 获取来电时的状态
-    int GetToggleFlag();                                // 获取语音图标到波形变换的转换标志位
-    void SetToggleFlag(int val);                        // 设置语音图标到波形变换的转换标志位
-    int GetRegFlag();                                   // 获取识别出的命令操作标志位
-    void SetRegFlag(int val);                           // 设置识别出的命令操作标志位
-    int GetExitStatus();                                // 获取退出语音助手状态标志位
-    void SetExitStatus(int val);                        // 设置退出语音助手状态标志位
-    int GetConnectFlag();                               // 获取连接动画标志位
-    void SetConnectFlag(int flag);                      // 设置连接动画标志位
-    bool GetHasOneCmd();
-    void SetHasOneCmd(bool fg);
-
-private:
-    int toggleFg{ALREADY_OPEN_VOCASSIST_IMAGE};     // 记录语音图标和波形标志位
-    int regFlag{SWITCH_TO_UNKNOWN};         // 命令操作标志位
-    int exitStatus{INTERRUPT_EXIT};         // 判断是否因太长时间未操作退出语音助手
-    int imgConnectFlag{CONNECT_TO_VOCASSIST};  // 记录动画标志位
-    bool hasOneCmd{false};                      // 每次只执行一条命令
-};
-}
-
-#endif
-
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: voice assistant\r
+ * Author: CompanyName\r
+ * Create: 2022-01-18\r
+ */\r
+\r
+#ifndef VOCASSIST_MODEL_H\r
+#define VOCASSIST_MODEL_H\r
+\r
+#include "smart_voice_service.h"\r
+#include "VocassistView.h"\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+void VoiceFunction(SmartVoiceEventType type, td_void *data, td_s32 size);\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+namespace OHOS {\r
+typedef enum {\r
+    ONE_ROAD_AND_INCOMING,\r
+    ONE_OR_MORE_ROAD_AND_OTHER_STATUS,\r
+    OTHER_STATUS\r
+} PhoneStatus;\r
+\r
+typedef enum {\r
+    DISABLE,\r
+    ENABLE\r
+} EnableChoice;\r
+\r
+class VocassistModel {\r
+public:\r
+    VocassistModel();\r
+    virtual ~VocassistModel();\r
+    static VocassistModel *GetInstance(void);\r
+    void Init();                // 初始化语音识别服务\r
+    void UnInit();              // 结束语音识别服务\r
+\r
+    int GetPhoneDetailStatus();                         // 获取来电时的状态\r
+    int GetToggleFlag();                                // 获取语音图标到波形变换的转换标志位\r
+    void SetToggleFlag(int val);                        // 设置语音图标到波形变换的转换标志位\r
+    int GetRegFlag();                                   // 获取识别出的命令操作标志位\r
+    void SetRegFlag(int val);                           // 设置识别出的命令操作标志位\r
+    int GetExitStatus();                                // 获取退出语音助手状态标志位\r
+    void SetExitStatus(int val);                        // 设置退出语音助手状态标志位\r
+    int GetConnectFlag();                               // 获取连接动画标志位\r
+    void SetConnectFlag(int flag);                      // 设置连接动画标志位\r
+    bool GetHasOneCmd();\r
+    void SetHasOneCmd(bool fg);\r
+\r
+private:\r
+    int toggleFg{ALREADY_OPEN_VOCASSIST_IMAGE};     // 记录语音图标和波形标志位\r
+    int regFlag{SWITCH_TO_UNKNOWN};         // 命令操作标志位\r
+    int exitStatus{INTERRUPT_EXIT};         // 判断是否因太长时间未操作退出语音助手\r
+    int imgConnectFlag{CONNECT_TO_VOCASSIST};  // 记录动画标志位\r
+    bool hasOneCmd{false};                      // 每次只执行一条命令\r
+};\r
+}\r
+\r
+#endif\r
+\r
index 2edfc43..d0bf0c6 100644 (file)
@@ -1,37 +1,36 @@
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: voice assistant
- * Author: CompanyName
- * Create: 2022-01-18
- */
-
-#ifndef VOCASSIST_PRESENTER_H
-#define VOCASSIST_PRESENTER_H
-
-#include "Presenter.h"
-#include "NativeAbility.h"
-#include "VocassistView.h"
-#include "MainVocassistView.h"
-
-namespace OHOS {
-class MainVocassistView;
-class VocassistPresenter : public Presenter<MainVocassistView>, public UIView::OnClickListener,
-    public UIView::OnDragListener,public RootView::OnKeyActListener,public UIImageAnimatorView::AnimatorStopListener {
-public:
-    VocassistPresenter();
-    ~VocassistPresenter();
-    void OnStart() override;
-    void OnPause() override;
-    void OnResume() override;
-    void OnStop() override;
-    static VocassistPresenter *GetInstance();
-private:
-    bool OnClick(UIView& view, const ClickEvent& event) override;
-    bool OnDrag(UIView& view, const DragEvent& event) override;
-    bool OnKeyAct(UIView& view, const KeyEvent& event) override;//增加按键事件
-    void OnAnimatorStop(UIView& view) override;
-    void VocAssistDeal(int flag);
-};
-}
-
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: voice assistant\r
+ * Author: CompanyName\r
+ * Create: 2022-01-18\r
+ */\r
+\r
+#ifndef VOCASSIST_PRESENTER_H\r
+#define VOCASSIST_PRESENTER_H\r
+\r
+#include "Presenter.h"\r
+#include "NativeAbility.h"\r
+#include "VocassistView.h"\r
+#include "MainVocassistView.h"\r
+\r
+namespace OHOS {\r
+class MainVocassistView;\r
+class VocassistPresenter : public Presenter<MainVocassistView>, public UIView::OnClickListener,\r
+    public UIView::OnDragListener, public UIImageAnimatorView::AnimatorStopListener {\r
+public:\r
+    VocassistPresenter();\r
+    ~VocassistPresenter();\r
+    void OnStart() override;\r
+    void OnPause() override;\r
+    void OnResume() override;\r
+    void OnStop() override;\r
+    static VocassistPresenter *GetInstance();\r
+private:\r
+    bool OnClick(UIView& view, const ClickEvent& event) override;\r
+    bool OnDrag(UIView& view, const DragEvent& event) override;\r
+    void OnAnimatorStop(UIView& view) override;\r
+    void VocAssistDeal(int flag);\r
+};\r
+}\r
+\r
 #endif
\ No newline at end of file
index 2061b67..e22acc3 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: voice assistant
- * Author: CompanyName
- * Create: 2022-01-18
- */
-
-#ifndef VOICE_ASSISTANCE_H
-#define VOICE_ASSISTANCE_H
-
-#include <string>
-#include "components/ui_image_animator.h"
-#include "components/ui_scroll_view.h"
-#include "components/ui_label.h"
-#include "UiConfig.h"
-#include "dfx/event_injector.h"
-#include "wearable_log.h"
-#include "AppGroupView.h"
-
-static constexpr const char VOCPHOTO_ID[]  = "VOCPIC";
-static constexpr const char VOC_ID[] = "VOC";
-
-static constexpr uint16_t WORKFRAME_X_COORDINATE = 24;
-static constexpr uint16_t WORKFRAME_Y_COORDINATE = 140;
-static constexpr uint16_t WORKFRAME_WIDTH = 400;
-static constexpr uint16_t WORKFRAME_HEIGHT = 250;
-
-static constexpr uint16_t LABEL_TEXT_SIZE = 35;
-static constexpr uint16_t LABEL_TEXT_X_COORDINATE = 80;
-static constexpr uint16_t LABEL_TEXT_Y_COORDINATE = 0;
-static constexpr uint16_t LABEL_TEXT_WIDTH = 260;
-static constexpr uint16_t LABEL_TEXT_HEIGHT = 140;
-
-static constexpr uint16_t ENTER_VOCASSIST_TRANSITION_START = 1;
-static constexpr uint16_t ENTER_VOCASSIST_TRANSITION_TOTAL = 9;
-static constexpr uint16_t ENTER_VOCASSIST_TRANSITION_INTERVAL = 80;
-
-static constexpr uint16_t EXIT_VOCASSIST_TRANSITION_START = 44;
-static constexpr uint16_t EXIT_VOCASSIST_TRANSITION_TOTAL = 8;
-static constexpr uint16_t EXIT_VOCASSIST_TRANSITION_INTERVAL = 80;
-
-static constexpr uint16_t SCROLL_POINT_BASE_X_COORDINATE = 50;
-static constexpr uint16_t SCROLL_POINT_START_Y_COORDINATE = 200;
-static constexpr uint16_t SCROLL_POINT_END_Y_COORDINATE = 0;
-static constexpr uint16_t SCROLL_POINT_INTERVAL = 20;
-
-static constexpr uint64_t DELAY_TWO_SECONDS = 2000;
-static constexpr uint64_t DELAY_FOUR_SECONDS = 4000;
-static constexpr uint64_t DELAY_SIX_SECONDS = 6000;
-
-constexpr int ANI_TOTAL_NUM = 71;
-static constexpr int PATH_LENGTH = 60;
-
-namespace OHOS {
-    typedef enum {
-        ALREADY_OPEN_VOCASSIST_IMAGE = 1,
-        ALREADY_CLOSE_VOCASSIST_IMAGE
-    } VocAssistStatus;
-
-    typedef enum {
-        CONNECT_TO_WAVEFORM = 1,
-        CONNECT_TO_VOCASSIST
-    } ConnectStatus;
-
-    typedef enum {
-        ERASE_LABEL_TEXT = 1,
-        NERASE_LABEL_TEXT
-    } LabelEraseChoice;
-
-    enum SwitchApp {
-        SWITCH_TO_XIAOYI,
-        SWITCH_TO_MAKECALL,
-        SWITCH_TO_CUTCALL,
-        PRE_SONG,
-        NEXT_SONG,
-        INCREASE_VOLUME,
-        DECREASE_VOLUME,
-        SWITCH_TO_PLAYER,
-        PAUSE_PLAYBACK,
-        RESUME_PLAYBACK,
-        SWITCH_TO_UNKNOWN,
-        SWITCH_TO_VOCASSIST,
-    };
-
-    enum SwitchWordOrGraph {
-        CREATE_CMD_LABEL = SWITCH_TO_VOCASSIST + 1,
-        VOC_VIEW,
-        WAVE_VIEW,
-        VOC_TO_WAVE_VIEW,
-        WAVE_TO_VOC_VIEW
-    };
-
-    enum ExitVaStatus {
-        INTERRUPT_EXIT,
-        CONTINUTE_EXIT_MODE1,   // 退出语音助手标志
-        CONTINUTE_EXIT_MODE2,   // 退出波形图标标志
-        CONTINUTE_EXIT_MODE3    // 退出到来电界面标志
-    };
-
-    enum CurInterface {
-        AT_VOCASSIST,
-        AT_PLAYER,
-        AT_MAX
-    };
-
-    class VoiceAssistance : public AppGroupView {
-    public:
-        VoiceAssistance();
-        virtual ~VoiceAssistance();
-        static VoiceAssistance *GetInstance();
-        bool InitView(void *caller) override;               // 初始化所有控件
-
-        int WithDetectVocImg();                            // 语音助手图标转化到波形变换
-        int WithoutDetectVocImg();                         // 波形变换转化到语音助手图标
-        int WaveFormChange();                          // 波形持续变化
-        int VocAssistChange();                         // 语音助手图标持续变化
-        void SwitchMedium(uint16_t targetView);
-        void VocSwitchApp(uint16_t targetView);
-        int VocResponse();              // 小艺回复我在
-        int ChangeViewToPlayer();       // 切换到音乐播放界面
-        int ChangePreSong();            // 切换到上一首
-        int ChangeNextSong();           // 切换到下一首
-        int ChangeStopPlayback();      // 停止播放
-        int ChangePausePlayback();      // 切换到暂停
-        int ChangeResumePlayback();     // 切换到播放
-        int ChangeIncreaseVolume();     // 增加音量
-        int ChangeDecreaseVolume();     // 减少音量
-        int ChangeAcceptPhone();        // 接听电话
-        int ChangeHangupPhone();        // 挂断电话
-        int CreateCmdLabel();           // 展示命令词
-        int ResponseWithoutUse();        // 打开语音助手没有操作
-        void DetermineCause(const int *eventRet);                 // 根据场景回复命令词
-
-        void DelayDisplayTime(int32_t waitSec);                      // 延迟展示一段时间
-        void SetCmdContext(std::string str);                         // 设置要展示的文字
-        void DelayTimeCallbackExtend();
-        void DeleteWordLabel();                             // 删除识别到的文字
-    private:
-        void InitVocassist(void);                           // 初始化语音图标控件
-        void InitWordlabel(void);                               // 初始化文本控件
-        void InitImageAnimatorSource(void);                     // 初始化图片文件
-        void CreateWordLabel(std::string Word, int isclearFlag);         // 显示识别到的文字
-        
-        void ExitProgress();                                // 退出语音程序
-        void CloseVocassist();                           // 波形切换为语音助手图标并清除文字
-        std::string GetCmdContext();
-        UILabel *wordContext{nullptr};
-        UIScrollView *workFrame{nullptr};
-        UIImageAnimatorView::AnimatorStopListener* stoplistener{nullptr};
-        UIView::OnClickListener* onClickListener{nullptr};
-        UIImageAnimatorView *voicePhoto{nullptr};
-        char storPicPathBuf[ANI_TOTAL_NUM][PATH_LENGTH];
-        ImageAnimatorInfo imageAnimatorInfo[ANI_TOTAL_NUM];
-        std::string allWord;                    // 记录显示文字
-    };
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: voice assistant\r
+ * Author: CompanyName\r
+ * Create: 2022-01-18\r
+ */\r
+\r
+#ifndef VOICE_ASSISTANCE_H\r
+#define VOICE_ASSISTANCE_H\r
+\r
+#include <string>\r
+#include "components/ui_image_animator.h"\r
+#include "components/ui_scroll_view.h"\r
+#include "components/ui_label.h"\r
+#include "UiConfig.h"\r
+#include "dfx/event_injector.h"\r
+#include "wearable_log.h"\r
+#include "AppGroupView.h"\r
+\r
+static constexpr const char VOCPHOTO_ID[]  = "VOCPIC";\r
+static constexpr const char VOC_ID[] = "VOC";\r
+\r
+static constexpr uint16_t WORKFRAME_X_COORDINATE = 24;\r
+static constexpr uint16_t WORKFRAME_Y_COORDINATE = 140;\r
+static constexpr uint16_t WORKFRAME_WIDTH = 400;\r
+static constexpr uint16_t WORKFRAME_HEIGHT = 250;\r
+\r
+static constexpr uint16_t LABEL_TEXT_SIZE = 35;\r
+static constexpr uint16_t LABEL_TEXT_X_COORDINATE = 80;\r
+static constexpr uint16_t LABEL_TEXT_Y_COORDINATE = 0;\r
+static constexpr uint16_t LABEL_TEXT_WIDTH = 260;\r
+static constexpr uint16_t LABEL_TEXT_HEIGHT = 140;\r
+\r
+static constexpr uint16_t ENTER_VOCASSIST_TRANSITION_START = 1;\r
+static constexpr uint16_t ENTER_VOCASSIST_TRANSITION_TOTAL = 9;\r
+static constexpr uint16_t ENTER_VOCASSIST_TRANSITION_INTERVAL = 80;\r
+\r
+static constexpr uint16_t EXIT_VOCASSIST_TRANSITION_START = 44;\r
+static constexpr uint16_t EXIT_VOCASSIST_TRANSITION_TOTAL = 8;\r
+static constexpr uint16_t EXIT_VOCASSIST_TRANSITION_INTERVAL = 80;\r
+\r
+static constexpr uint16_t SCROLL_POINT_BASE_X_COORDINATE = 50;\r
+static constexpr uint16_t SCROLL_POINT_START_Y_COORDINATE = 200;\r
+static constexpr uint16_t SCROLL_POINT_END_Y_COORDINATE = 0;\r
+static constexpr uint16_t SCROLL_POINT_INTERVAL = 20;\r
+\r
+static constexpr uint64_t DELAY_TWO_SECONDS = 2000;\r
+static constexpr uint64_t DELAY_FOUR_SECONDS = 4000;\r
+static constexpr uint64_t DELAY_SIX_SECONDS = 6000;\r
+\r
+constexpr int ANI_TOTAL_NUM = 71;\r
+static constexpr int PATH_LENGTH = 60;\r
+\r
+namespace OHOS {\r
+    typedef enum {\r
+        ALREADY_OPEN_VOCASSIST_IMAGE = 1,\r
+        ALREADY_CLOSE_VOCASSIST_IMAGE\r
+    } VocAssistStatus;\r
+\r
+    typedef enum {\r
+        CONNECT_TO_WAVEFORM = 1,\r
+        CONNECT_TO_VOCASSIST\r
+    } ConnectStatus;\r
+\r
+    typedef enum {\r
+        ERASE_LABEL_TEXT = 1,\r
+        NERASE_LABEL_TEXT\r
+    } LabelEraseChoice;\r
+\r
+    enum SwitchApp {\r
+        SWITCH_TO_XIAOYI,\r
+        SWITCH_TO_MAKECALL,\r
+        SWITCH_TO_CUTCALL,\r
+        PRE_SONG,\r
+        NEXT_SONG,\r
+        INCREASE_VOLUME,\r
+        DECREASE_VOLUME,\r
+        SWITCH_TO_PLAYER,\r
+        PAUSE_PLAYBACK,\r
+        RESUME_PLAYBACK,\r
+        SWITCH_TO_UNKNOWN,\r
+        SWITCH_TO_VOCASSIST,\r
+    };\r
+\r
+    enum SwitchWordOrGraph {\r
+        CREATE_CMD_LABEL = SWITCH_TO_VOCASSIST + 1,\r
+        VOC_VIEW,\r
+        WAVE_VIEW,\r
+        VOC_TO_WAVE_VIEW,\r
+        WAVE_TO_VOC_VIEW\r
+    };\r
+\r
+    enum ExitVaStatus {\r
+        INTERRUPT_EXIT,\r
+        CONTINUTE_EXIT_MODE1,   // 退出语音助手标志\r
+        CONTINUTE_EXIT_MODE2,   // 退出波形图标标志\r
+        CONTINUTE_EXIT_MODE3    // 退出到来电界面标志\r
+    };\r
+\r
+    enum CurInterface {\r
+        AT_VOCASSIST,\r
+        AT_PLAYER,\r
+        AT_MAX\r
+    };\r
+\r
+    class VoiceAssistance : public AppGroupView {\r
+    public:\r
+        VoiceAssistance();\r
+        virtual ~VoiceAssistance();\r
+        static VoiceAssistance *GetInstance();\r
+        bool InitView(void *caller) override;               // 初始化所有控件\r
+\r
+        int WithDetectVocImg();                            // 语音助手图标转化到波形变换\r
+        int WithoutDetectVocImg();                         // 波形变换转化到语音助手图标\r
+        int WaveFormChange();                          // 波形持续变化\r
+        int VocAssistChange();                         // 语音助手图标持续变化\r
+        void SwitchMedium(uint16_t targetView);\r
+        void VocSwitchApp(uint16_t targetView);\r
+        int VocResponse();              // 小艺回复我在\r
+        int ChangeViewToPlayer();       // 切换到音乐播放界面\r
+        int ChangePreSong();            // 切换到上一首\r
+        int ChangeNextSong();           // 切换到下一首\r
+        int ChangeStopPlayback();      // 停止播放\r
+        int ChangePausePlayback();      // 切换到暂停\r
+        int ChangeResumePlayback();     // 切换到播放\r
+        int ChangeIncreaseVolume();     // 增加音量\r
+        int ChangeDecreaseVolume();     // 减少音量\r
+        int ChangeAcceptPhone();        // 接听电话\r
+        int ChangeHangupPhone();        // 挂断电话\r
+        int CreateCmdLabel();           // 展示命令词\r
+        int ResponseWithoutUse();        // 打开语音助手没有操作\r
+        void DetermineCause(const int *eventRet);                 // 根据场景回复命令词\r
+\r
+        void DelayDisplayTime(int32_t waitSec);                      // 延迟展示一段时间\r
+        void SetCmdContext(std::string str);                         // 设置要展示的文字\r
+        void DelayTimeCallbackExtend();\r
+        void DeleteWordLabel();                             // 删除识别到的文字\r
+    private:\r
+        void InitVocassist(void);                           // 初始化语音图标控件\r
+        void InitWordlabel(void);                               // 初始化文本控件\r
+        void InitImageAnimatorSource(void);                     // 初始化图片文件\r
+        void CreateWordLabel(std::string Word, int isclearFlag);         // 显示识别到的文字\r
+        \r
+        void ExitProgress();                                // 退出语音程序\r
+        void CloseVocassist();                           // 波形切换为语音助手图标并清除文字\r
+        std::string GetCmdContext();\r
+        UILabel *wordContext{nullptr};\r
+        UIScrollView *workFrame{nullptr};\r
+        UIImageAnimatorView::AnimatorStopListener* stoplistener{nullptr};\r
+        UIView::OnClickListener* onClickListener{nullptr};\r
+        UIImageAnimatorView *voicePhoto{nullptr};\r
+        char storPicPathBuf[ANI_TOTAL_NUM][PATH_LENGTH];\r
+        ImageAnimatorInfo imageAnimatorInfo[ANI_TOTAL_NUM];\r
+        std::string allWord;                    // 记录显示文字\r
+    };\r
+}\r
 #endif
\ No newline at end of file
index 58c25ce..3eebdb8 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: voice assistant
- * Author: CompanyName
- * Create: 2022-01-18
- */
-
-#include "MainVocassistView.h"
-#include "VocassistPresenter.h"
-
-namespace OHOS {
-static MainVocassistView *g_pMainVocassistView = nullptr;
-
-MainVocassistView::MainVocassistView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[MainVocassistView] MainVocassistView");
-    g_pMainVocassistView = this;
-}
-
-MainVocassistView::~MainVocassistView()
-{
-    LocalAsrStop();
-    if (vocassistance != nullptr) {
-        delete vocassistance;
-        vocassistance = nullptr;
-    }
-    g_pMainVocassistView = nullptr;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[MainVocassistView] ~MainVocassistView");
-}
-
-MainVocassistView *MainVocassistView::GetInstance()
-{
-    return g_pMainVocassistView;
-}
-
-void MainVocassistView::OnStart()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[MainVocassistView] OnStart");
-    View<VocassistPresenter>::OnStart();
-
-    BaseView::RootView(Color::Black().full);
-    vocassistance = new VoiceAssistance();
-    if (vocassistance == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VoiceAssistance::GetInstance is nullptr!!");
-        return;
-    }
-    if (VocassistPresenter::GetInstance() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VocassistPresenter::GetInstance is nullptr!!");
-        return;
-    }
-    //增加按键监听
-       RootView::OnKeyActListener*keyactListener = (RootView::OnKeyActListener*)OHOS::VocassistPresenter::GetInstance();
-       RootView::GetInstance()->SetOnKeyActListener(keyactListener);
-    draglistener = static_cast<UIView::OnDragListener*>(VocassistPresenter::GetInstance());
-    if (draglistener == nullptr) {
-        return;
-    }
-    vocassistance->SetViewId(VOC_ID);
-    vocassistance->SetDraggable(true);
-    vocassistance->SetTouchable(true);
-    vocassistance->SetOnDragListener(draglistener);
-    vocassistance->InitView(this);
-    RootView::GetInstance()->Add(vocassistance);
-
-    if (VocassistModel::GetInstance()->GetPhoneDetailStatus() != ONE_OR_MORE_ROAD_AND_OTHER_STATUS) {
-        AsrWorkMode curMode = LocalAsrGetMode();
-        LocalAsrSetMode(curMode);
-    }
-
-    // 六秒钟未操作分两步退出语音助手,波形图标先转化为语音助手图标,再退出语音助手
-    if (VoiceAssistance::GetInstance() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VoiceAssistance GetInstance() is nullptr!!");
-        return;
-    }
-
-    VocassistModel::GetInstance()->SetExitStatus(CONTINUTE_EXIT_MODE2);
-    VoiceAssistance::GetInstance()->DelayDisplayTime(DELAY_SIX_SECONDS);
-}
-
-void MainVocassistView::OnSetUpView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[MainVocassistView] OnSetUpView");
-    View<VocassistPresenter>::OnSetUpView();
-
-    Draw();
-}
-
-void MainVocassistView::OnTearDownView()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[MainVocassistView] OnTearDownView");
-    View<VocassistPresenter>::OnTearDownView();
-    return;
-}
-
-void MainVocassistView::OnStop()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[MainVocassistView] OnStop");
-    View<VocassistPresenter>::OnStop();
-    VocassistModel::GetInstance()->UnInit();
-    RootView::GetInstance()->ClearOnKeyActListener();
-    RootView::GetInstance()->RemoveAll();
-    return;
-}
-
-VoiceAssistance *MainVocassistView::GetVocassist()
-{
-    return vocassistance;
-}
-
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: voice assistant\r
+ * Author: CompanyName\r
+ * Create: 2022-01-18\r
+ */\r
+\r
+#include "MainVocassistView.h"\r
+#include "VocassistPresenter.h"\r
+\r
+namespace OHOS {\r
+static MainVocassistView *g_pMainVocassistView = nullptr;\r
+\r
+MainVocassistView::MainVocassistView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[MainVocassistView] MainVocassistView");\r
+    g_pMainVocassistView = this;\r
+}\r
+\r
+MainVocassistView::~MainVocassistView()\r
+{\r
+    LocalAsrStop();\r
+    if (vocassistance != nullptr) {\r
+        delete vocassistance;\r
+        vocassistance = nullptr;\r
+    }\r
+    g_pMainVocassistView = nullptr;\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[MainVocassistView] ~MainVocassistView");\r
+}\r
+\r
+MainVocassistView *MainVocassistView::GetInstance()\r
+{\r
+    return g_pMainVocassistView;\r
+}\r
+\r
+void MainVocassistView::OnStart()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[MainVocassistView] OnStart");\r
+    View<VocassistPresenter>::OnStart();\r
+\r
+    BaseView::RootView(Color::Black().full);\r
+    vocassistance = new VoiceAssistance();\r
+    if (vocassistance == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VoiceAssistance::GetInstance is nullptr!!");\r
+        return;\r
+    }\r
+    if (VocassistPresenter::GetInstance() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VocassistPresenter::GetInstance is nullptr!!");\r
+        return;\r
+    }\r
+    draglistener = static_cast<UIView::OnDragListener*>(VocassistPresenter::GetInstance());\r
+    if (draglistener == nullptr) {\r
+        return;\r
+    }\r
+    vocassistance->SetViewId(VOC_ID);\r
+    vocassistance->SetDraggable(true);\r
+    vocassistance->SetTouchable(true);\r
+    vocassistance->SetOnDragListener(draglistener);\r
+    vocassistance->InitView(this);\r
+    RootView::GetInstance()->Add(vocassistance);\r
+\r
+    if (VocassistModel::GetInstance()->GetPhoneDetailStatus() != ONE_OR_MORE_ROAD_AND_OTHER_STATUS) {\r
+        AsrWorkMode curMode = LocalAsrGetMode();\r
+        LocalAsrSetMode(curMode);\r
+    }\r
+\r
+    // 六秒钟未操作分两步退出语音助手,波形图标先转化为语音助手图标,再退出语音助手\r
+    if (VoiceAssistance::GetInstance() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VoiceAssistance GetInstance() is nullptr!!");\r
+        return;\r
+    }\r
+\r
+    VocassistModel::GetInstance()->SetExitStatus(CONTINUTE_EXIT_MODE2);\r
+    VoiceAssistance::GetInstance()->DelayDisplayTime(DELAY_SIX_SECONDS);\r
+}\r
+\r
+void MainVocassistView::OnSetUpView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[MainVocassistView] OnSetUpView");\r
+    View<VocassistPresenter>::OnSetUpView();\r
+\r
+    Draw();\r
+}\r
+\r
+void MainVocassistView::OnTearDownView()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[MainVocassistView] OnTearDownView");\r
+    View<VocassistPresenter>::OnTearDownView();\r
+    return;\r
+}\r
+\r
+void MainVocassistView::OnStop()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[MainVocassistView] OnStop");\r
+    View<VocassistPresenter>::OnStop();\r
+    VocassistModel::GetInstance()->UnInit();\r
+    RootView::GetInstance()->ClearOnKeyActListener();\r
+    RootView::GetInstance()->RemoveAll();\r
+    return;\r
+}\r
+\r
+VoiceAssistance *MainVocassistView::GetVocassist()\r
+{\r
+    return vocassistance;\r
+}\r
+\r
 }
\ No newline at end of file
index ff92201..000fd86 100644 (file)
@@ -50,7 +50,7 @@ static void RecognVoiceEvent(const SmartVoiceCmdParam data)
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistModel] CurSliceId does not equal VIEW_OFFLINEVOICE");
         if (strcmp(g_voiceWordName[param->cmdId], "小艺小艺") == 0) {
             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Current view is not offlineassist");
-            NativeAbility::GetInstance().ChangeSlice(VIEW_OFFLINEVOICE, gSliceDefaultPriority);
+            NativeAbility::GetInstance().ChangeSlice(VIEW_OFFLINEVOICE);
         }
     } else if (NativeAbility::GetInstance().GetCurSliceId() == VIEW_OFFLINEVOICE) {  // 已经进入语音助手
         if (VoiceAssistance::GetInstance() == nullptr) {
index d7f9b04..71f87d9 100644 (file)
@@ -7,9 +7,7 @@
 #include "AppViewIDs.h"
 #include "VocassistPresenter.h"
 #include "PlayersModel.h"
-#if defined(SUPPORT_POWER_MANAGER)
-#include "power_display_service.h"
-#endif
+#include "ui_service.h"
 
 namespace OHOS {
 
@@ -124,34 +122,12 @@ bool VocassistPresenter::OnDrag(UIView& view, const DragEvent& event)
     }
     return true;
 }
-//增加按键事件
-bool VocassistPresenter::OnKeyAct(UIView& view, const KeyEvent& event)
-{
-    uint16 keyID = event.GetKeyId();
-    WEARABLE_LOGD("","into key! keyID %u\n",keyID);
-#if 0
-    //如果是power键就返回上一级
-    if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER))
-    {
-        uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
-        NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
-    }
-#endif
-    //目前只有一个按键。直接切换
-    uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
-    NativeAbility::GetInstance().ChangeSlice(preSlice);
-    return true;
-}
+
 void VocassistPresenter::OnStart()
 {
     Presenter<MainVocassistView>::OnStart();
-#if defined(SUPPORT_POWER_MANAGER)
-    const power_display_svr_api_t *display_api = power_display_svr_get_api();
-    if (display_api->get_screen_state() != SCREEN_ON) {
-        display_api->turn_on_screen();
-    }
-    display_api->set_screen_set_keepon_timeout(-1);
-#endif
+    int32_t timeout = -1;
+    SendMsgToUIService(SCREEN_TURN_ON_TO_UI, 0, &timeout, sizeof(int32_t));
 }
 
 void VocassistPresenter::OnPause(void) {}
@@ -161,10 +137,7 @@ void VocassistPresenter::OnResume(void) {}
 void VocassistPresenter::OnStop(void)
 {
     Presenter<MainVocassistView>::OnStop();
-#if defined(SUPPORT_POWER_MANAGER)
-    const power_display_svr_api_t *display_api = power_display_svr_get_api();
-    display_api->set_screen_set_keepon_timeout(0);
-#endif
+    SendMsgToUIService(SCREEN_TURN_OFF_TO_UI, 0, NULL, 0);
 
 }
 }
index 893cbd9..8c58506 100644 (file)
-/*
- * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.
- * Description: voice assistant
- * Author: CompanyName
- * Create: 2022-01-18
- */
-
-#include <limits>
-#include "cmsis_os.h"
-#include "AppViewIDs.h"
-#include "PlayersModel.h"
-#include "CallerLogModel.h"
-#include "VocassistModel.h"
-#include "VocassistView.h"
-#include "VocassistPresenter.h"
-
-static constexpr uint16_t SWITCH_MAP_NUM = 16;
-static constexpr uint16_t ANI_X = 84;
-static constexpr uint16_t ANI_Y = 108;
-static constexpr uint16_t ANI_SL = 116;
-
-static constexpr uint16_t WAVEFORM_CHANGE_START = 9;
-static constexpr uint16_t WAVEFORM_CHANGE_PICTURE_TOTAL = 34;
-static constexpr uint16_t WAVEFORM_CHANGE_PICTURE_INTERVAL = 50;
-
-static constexpr uint16_t WAVEFORM_CHANGE_END = 51;
-static constexpr uint16_t ACTIVE_VOCASSIST_PICTURE_TOTAL = 20;
-static constexpr uint16_t ACTIVE_VOCASSIST_PICTURE_INTERVAL = 100;
-
-static constexpr uint16_t VOCASSIST_XLABEL = 180;
-static constexpr uint16_t VOCASSIST_YLABEL = 60;
-static constexpr uint16_t VOCASSIST_WIDTH = 80;
-static constexpr uint16_t VOCASSIST_HEIGHTH = 80;
-
-static constexpr uint16_t WORD_LENGTH = 60;
-static constexpr int16_t ERROR_RETVAL = -1;
-
-namespace OHOS {
-static osTimerId_t g_closeVocassistHandle = NULL;
-static VoiceAssistance *g_pVoiceAssistance = nullptr;
-
-enum {
-    WITHOUT_OPERATE = PLAYER_RESPONESE_MAX,
-    NO_SUPPORT_VOC_IN_CALLING,
-    VOC_RESPONSE,
-    WITHOUT_INCOMING_PHONE,
-    RESPONESE_MAX
-};
-
-using viewFunct = int (VoiceAssistance::*)();
-
-using Viewmapper = struct {
-    uint16_t viewIndex;
-    viewFunct funct;
-};
-
-static constexpr Viewmapper g_switchMap[SWITCH_MAP_NUM] = {
-    {SWITCH_TO_XIAOYI, &VoiceAssistance::VocResponse},
-    {SWITCH_TO_MAKECALL, &VoiceAssistance::ChangeAcceptPhone},
-    {SWITCH_TO_CUTCALL, &VoiceAssistance::ChangeHangupPhone},
-    {PRE_SONG, &VoiceAssistance::ChangePreSong},
-    {NEXT_SONG, &VoiceAssistance::ChangeNextSong},
-    {INCREASE_VOLUME, &VoiceAssistance::ChangeIncreaseVolume},
-    {DECREASE_VOLUME, &VoiceAssistance::ChangeDecreaseVolume},
-    {SWITCH_TO_PLAYER, &VoiceAssistance::ChangeViewToPlayer},
-    {PAUSE_PLAYBACK, &VoiceAssistance::ChangePausePlayback},
-    {RESUME_PLAYBACK, &VoiceAssistance::ChangeResumePlayback},
-    {SWITCH_TO_UNKNOWN, &VoiceAssistance::ResponseWithoutUse},
-    {CREATE_CMD_LABEL, &VoiceAssistance::CreateCmdLabel},
-    {VOC_VIEW, &VoiceAssistance::VocAssistChange},
-    {WAVE_VIEW, &VoiceAssistance::WaveFormChange},
-    {VOC_TO_WAVE_VIEW, &VoiceAssistance::WithDetectVocImg},
-    {WAVE_TO_VOC_VIEW, &VoiceAssistance::WithoutDetectVocImg}
-};
-
-static constexpr char g_resStr[RESPONESE_MAX][WORD_LENGTH]{
-    {"好的,马上"},
-    {"没有歌曲正在播放"},
-    {"已经在播放歌曲"},
-    {"歌曲已经暂停"},
-    {"歌曲已经停止"},
-    {"抱歉,执行失败"},
-    {"抱歉当前状态不支持此操作"},
-    {"抱歉,我刚才开小差了,没听清你说了什么"},
-    {"抱歉,通话时不支持使用语音助手"},
-    {"我在"},
-    {"当前没有来电"}
-};
-
-VoiceAssistance::VoiceAssistance()
-{
-    g_pVoiceAssistance = this;
-}
-
-VoiceAssistance::~VoiceAssistance()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "~VoiceAssistance!!");
-    RemoveAll();
-    g_pVoiceAssistance = nullptr;
-    // 切换为其它slice时将定时器删除
-    if (g_closeVocassistHandle != NULL) {
-        osStatus_t statusRet = osTimerDelete(g_closeVocassistHandle);
-        if (statusRet != osOK) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Delete timer failed!!");
-        }
-        g_closeVocassistHandle = NULL;
-    }
-
-    delete voicePhoto;
-    voicePhoto = nullptr;
-    workFrame->RemoveAll();
-    delete wordContext;
-    wordContext = nullptr;
-    delete workFrame;
-    workFrame = nullptr;
-}
-
-VoiceAssistance *VoiceAssistance::GetInstance()
-{
-    return g_pVoiceAssistance;
-}
-
-void VoiceAssistance::InitImageAnimatorSource(void)
-{
-    int ret;
-    (void)memset_s(storPicPathBuf, sizeof(storPicPathBuf), 0, sizeof(storPicPathBuf));
-    for (int i = 0; i < ANI_TOTAL_NUM; i++) {
-        ret = sprintf_s(storPicPathBuf[i], sizeof(storPicPathBuf[i]),
-                RES_PATH"/VOICE_ASSISTANT_%02d.bin", i + 1);
-        if (ret == ERROR_RETVAL) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Splice failed!!");
-            return;
-        }
-        imageAnimatorInfo[i].imagePath = (const char *)storPicPathBuf[i];
-        imageAnimatorInfo[i].pos.x = ANI_X;
-        imageAnimatorInfo[i].pos.y = ANI_Y;
-        imageAnimatorInfo[i].width = ANI_SL;
-        imageAnimatorInfo[i].height = ANI_SL;
-        imageAnimatorInfo[i].imageType = IMG_SRC_FILE_PATH;
-    }
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] VoiceAssistanceInitImageAnimatorSource success!!");
-}
-
-void VoiceAssistance::DetermineCause(const int *eventRet)        // 根据能否执行用户指令做出回复
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] Enter DetermineCause");
-    if (eventRet == NULL) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "EventRet is NULL!!");
-        return;
-    }
-    if (VoiceAssistance::GetInstance() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VoiceAssistance instance is NULL!!");
-        return;
-    }
-    int temp = *eventRet;
-    CreateWordLabel(g_resStr[temp], ERASE_LABEL_TEXT);
-    VocassistModel::GetInstance()->SetToggleFlag(ALREADY_CLOSE_VOCASSIST_IMAGE);
-}
-
-void VoiceAssistance::InitVocassist(void)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] InitVocassist");
-    voicePhoto = new UIImageAnimatorView();
-    if (voicePhoto == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VoiceAssistance : failed to Create vociePhoto!!");
-        return;
-    }
-    voicePhoto->SetPosition(VOCASSIST_XLABEL, VOCASSIST_YLABEL, VOCASSIST_WIDTH, VOCASSIST_HEIGHTH);
-    voicePhoto->SetRepeat(true);
-    voicePhoto->SetVisible(true);
-    voicePhoto->SetSizeFixed(true);
-
-    if (VoiceAssistance::GetInstance() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VoiceAssistance instance is NULL!!");
-        return;
-    }
-    VoiceAssistance::GetInstance()->SwitchMedium(WAVE_VIEW);
-    voicePhoto->SetViewId(VOCPHOTO_ID);
-    voicePhoto->SetTouchable(true);
-    onClickListener = static_cast<UIView::OnClickListener*>(VocassistPresenter::GetInstance());
-    voicePhoto->SetOnClickListener(onClickListener);
-
-    stoplistener = static_cast<UIImageAnimatorView::AnimatorStopListener*>(VocassistPresenter::GetInstance());
-    if (stoplistener == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to Create stoplistener!!");
-        return;
-    }
-    voicePhoto->SetAnimatorStopListener(stoplistener);
-}
-
-void VoiceAssistance::SwitchMedium(uint16_t targetView)
-{
-    if (GraphicService::GetInstance() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GraphicService instance is NULL!!");
-        return;
-    }
-    GraphicService::GetInstance()->PostGraphicEvent(std::bind(&VoiceAssistance::VocSwitchApp, this, targetView));
-}
-
-static viewFunct FindIndex(uint16_t target)
-{
-    for (int i = 0; i < SWITCH_MAP_NUM; i++) {
-        if (g_switchMap[i].viewIndex == target) {
-            return (g_switchMap[i].funct);
-        }
-    }
-    return nullptr;
-}
-
-void VoiceAssistance::VocSwitchApp(uint16_t targetView)
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] Start Operation!!");
-    if (VoiceAssistance::GetInstance() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VoiceAssistance instance is NULL!!");
-        return;
-    }
-    viewFunct func = FindIndex(targetView);
-    if (func != nullptr) {
-        int retVal = (this->*(func))();
-        if (SWITCH_TO_XIAOYI <= targetView && targetView <= SWITCH_TO_UNKNOWN) {
-            DetermineCause(&retVal);            // 回复文本显示
-        }
-    }
-}
-
-int VoiceAssistance::VocResponse()
-{
-    return VOC_RESPONSE;
-}
-
-int VoiceAssistance::ChangeViewToPlayer()           // 播放音乐
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] Enter ChangeViewToPlayer");
-
-    if(!PlayersModel::GetInstance()->HasPlayerPlayed()) {       // 播放过了就不用再初始化
-        PlayersListGroup::GetInstance()->SetUpListCase();
-        PlayersModel::GetInstance()->PlayerInit();
-    }
-
-    int ret = PlayersModel::GetInstance()->PlayerPlay();
-    return ret;
-}
-
-int VoiceAssistance::ChangePreSong()               // 上一首
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] Enter ChangePreSong!!");
-
-    int ret = PlayersModel::GetInstance()->PreSongOperate();
-    if (ret == NORMAL) {
-        ret = PlayersModel::GetInstance()->PlayerPlay();
-        if (ret != EXECUTE_FUNC_FAILED) {
-            return NORMAL;
-        }
-    }
-    return ret;
-}
-
-int VoiceAssistance::ChangeNextSong()              // 下一首
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] Enter ChangeNextSong!!");
-
-    int ret = PlayersModel::GetInstance()->NextSongOperate();
-    if (ret == NORMAL) {
-        ret = PlayersModel::GetInstance()->PlayerPlay();
-        if (ret != EXECUTE_FUNC_FAILED) {
-            return NORMAL;
-        }
-    }
-    return ret;
-}
-
-int VoiceAssistance::ChangeStopPlayback()      // 停止播放
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] Enter ChangeStopPlaybcak!!");
-
-    int ret = PlayersModel::GetInstance()->PlayerStop();
-    return ret;
-}
-
-int VoiceAssistance::ChangePausePlayback() // 暂停
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] Enter ChangePausePlayback!!");
-
-    int ret = PlayersModel::GetInstance()->PlayerPause();
-    return ret;
-}
-
-int VoiceAssistance::ChangeResumePlayback() // 继续播放
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] Enter ChangeResumePlayback!!");
-
-    int ret = PlayersModel::GetInstance()->PlayerPlay();
-    return ret;
-}
-
-int VoiceAssistance::ChangeIncreaseVolume()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] Enter ChangeResumePlayback!!");
-
-    int ret = PlayersModel::GetInstance()->IncreaseVolume();
-    return ret;
-}
-
-int VoiceAssistance::ChangeDecreaseVolume()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] Enter ChangeResumePlayback!!");
-
-    int ret = PlayersModel::GetInstance()->DecreaseVolume();
-    return ret;
-}
-
-int VoiceAssistance::ChangeAcceptPhone()    // 接听电话
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] Enter ChangeAcceptPhone!!");
-
-    int phoneStatus = VocassistModel::GetInstance()->GetPhoneDetailStatus();    // 扫描设置此时通话的状态和个数
-    if (phoneStatus == ONE_ROAD_AND_INCOMING) {
-        int ret = AcceptIncomingCall();
-        if (ret == 0) {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AcceptPhone Success!!");
-            return NORMAL;
-        } else {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AcceptPhone Failed!!");
-            return EXECUTE_FUNC_FAILED;
-        }
-    } else {
-        return WITHOUT_INCOMING_PHONE;
-    }
-}
-
-int VoiceAssistance::ChangeHangupPhone()    // 挂断电话
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] Enter ChangeHangupPhone!!");
-
-    int phoneStatus = VocassistModel::GetInstance()->GetPhoneDetailStatus();    // 扫描设置此时通话的状态和个数
-    if (phoneStatus == ONE_ROAD_AND_INCOMING) {
-        int ret = RejectIncomingCall();
-        if (ret == 0) {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HangupPhone Success!!");
-            return NORMAL;
-        } else {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HangupPhone Failed!!");
-            return EXECUTE_FUNC_FAILED;
-        }
-    } else {
-        return WITHOUT_INCOMING_PHONE;
-    }
-}
-
-std::string VoiceAssistance::GetCmdContext()
-{
-    return allWord;
-}
-
-void VoiceAssistance::SetCmdContext(std::string str)
-{
-    allWord = str;
-}
-
-int VoiceAssistance::ResponseWithoutUse()
-{
-    int phoneStatus = VocassistModel::GetInstance()->GetPhoneDetailStatus();    // 扫描设置此时通话的状态和个数
-    if (phoneStatus == ONE_OR_MORE_ROAD_AND_OTHER_STATUS) {
-        return NO_SUPPORT_VOC_IN_CALLING;
-    } else {
-        return WITHOUT_OPERATE;
-    }
-}
-
-int VoiceAssistance::CreateCmdLabel()
-{
-    std::string temp = GetCmdContext();
-    CreateWordLabel(temp, ERASE_LABEL_TEXT);
-    return NORMAL;
-}
-
-int VoiceAssistance::VocAssistChange() // 语音助手图标
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] VocAssistChange");
-    if (voicePhoto == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VoicePhoto is nullptr, please use function InitView firstly!!");
-        return EXECUTE_FUNC_FAILED;
-    }
-    voicePhoto->SetImageAnimatorSrc(imageAnimatorInfo+WAVEFORM_CHANGE_END,
-        ACTIVE_VOCASSIST_PICTURE_TOTAL, ACTIVE_VOCASSIST_PICTURE_INTERVAL);
-    voicePhoto->SetRepeat(true);
-    voicePhoto->Start();
-    return NORMAL;
-}
-
-int VoiceAssistance::WaveFormChange() // 波形图标
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] WaveFormChange");
-    if (voicePhoto == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VoicePhoto is nullptr, please use function InitView firstly!!");
-        return EXECUTE_FUNC_FAILED;
-    }
-    voicePhoto->SetImageAnimatorSrc(imageAnimatorInfo+WAVEFORM_CHANGE_START,
-        WAVEFORM_CHANGE_PICTURE_TOTAL, WAVEFORM_CHANGE_PICTURE_INTERVAL);
-    voicePhoto->SetRepeat(true);
-    voicePhoto->Start();
-    return NORMAL;
-}
-
-void VoiceAssistance::InitWordlabel() // 识别出的命令文本初始化
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] InitWordlabel");
-    workFrame = new UIScrollView();
-    if (workFrame == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to create workFrame!!");
-        return;
-    }
-    workFrame->SetVerticalScrollState(true);
-    workFrame->SetHorizontalScrollState(false);
-    workFrame->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
-    workFrame->SetPosition(WORKFRAME_X_COORDINATE, WORKFRAME_Y_COORDINATE, WORKFRAME_WIDTH, WORKFRAME_HEIGHT);
-
-    wordContext = new UILabel();
-    if (wordContext == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to Create wordContext!!");
-        return;
-    }
-    wordContext->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABEL_TEXT_SIZE);
-    wordContext->SetPosition(LABEL_TEXT_X_COORDINATE, LABEL_TEXT_Y_COORDINATE,
-                             LABEL_TEXT_WIDTH, LABEL_TEXT_HEIGHT);
-    wordContext->SetAlign(TEXT_ALIGNMENT_CENTER);
-    wordContext->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
-    workFrame->Add(wordContext);
-}
-
-bool VoiceAssistance::InitView(void *caller) // 界面初始化
-{
-    UNUSED(caller);
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] InitView %p", caller);
-
-    EventInjector::GetInstance()->RegisterEventInjector(EventDataType::POINT_TYPE);
-
-    VocassistModel::GetInstance()->SetToggleFlag(ALREADY_OPEN_VOCASSIST_IMAGE);
-    VocassistModel::GetInstance()->SetRegFlag(SWITCH_TO_UNKNOWN);
-    VocassistModel::GetInstance()->SetExitStatus(INTERRUPT_EXIT);
-    VocassistModel::GetInstance()->SetConnectFlag(CONNECT_TO_VOCASSIST);
-    InitImageAnimatorSource();
-    InitVocassist();
-    if (voicePhoto == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VoicePhoto is nullptr!!");
-        return false;
-    }
-    Add(voicePhoto);
-
-    InitWordlabel();
-    if (workFrame == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WorkFrame is nullptr!!");
-        return false;
-    }
-    Add(workFrame);
-
-    voicePhoto->Start();
-    return true;
-}
-
-int VoiceAssistance::WithDetectVocImg() // 波形变化的过渡图形
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] WithDetectVocImg!!");
-    VocassistModel::GetInstance()->SetConnectFlag(CONNECT_TO_WAVEFORM);
-    if (voicePhoto == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VoicePhoto is nullptr, please use function InitView firstly");
-        return EXECUTE_FUNC_FAILED;
-    }
-    voicePhoto->SetImageAnimatorSrc(imageAnimatorInfo+ENTER_VOCASSIST_TRANSITION_START,
-                                    ENTER_VOCASSIST_TRANSITION_TOTAL, ENTER_VOCASSIST_TRANSITION_INTERVAL);
-    voicePhoto->SetRepeat(false);
-    voicePhoto->Start();
-
-    return NORMAL;
-}
-
-int VoiceAssistance::WithoutDetectVocImg()  // 结束波形变化的过渡图形
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] WithoutDetectVocImg!!");
-    VocassistModel::GetInstance()->SetConnectFlag(CONNECT_TO_VOCASSIST);
-    if (voicePhoto == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VoicePhoto is nullptr, please use function InitView firstly!!");
-        return EXECUTE_FUNC_FAILED;
-    }
-    voicePhoto->SetImageAnimatorSrc(imageAnimatorInfo+EXIT_VOCASSIST_TRANSITION_START,
-                                    EXIT_VOCASSIST_TRANSITION_TOTAL, EXIT_VOCASSIST_TRANSITION_INTERVAL);
-    voicePhoto->SetRepeat(false);
-    voicePhoto->Start();
-
-    return NORMAL;
-}
-
-void VoiceAssistance::CreateWordLabel(std::string Word, int isclearFlag) // 识别语音后展示文字Label
-{
-    Point scrollPoint;
-
-    if (isclearFlag == ERASE_LABEL_TEXT) {
-        DeleteWordLabel();
-    }
-
-    allWord  = allWord + Word;
-    if (wordContext == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WorkFrame is nullptr, please use function InitView firstly!!");
-        return;
-    }
-    wordContext->SetText(allWord.c_str()); // 在Label设置识别到的文字
-    wordContext->Invalidate();
-
-    // 保持显示得到最后一行
-    if (workFrame == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WorkFrame is nullptr, please use function InitView firstly!!");
-        return;
-    }
-    scrollPoint = {workFrame->GetRect().GetX(), workFrame->GetRect().GetY()};
-    Point startPoint = {static_cast<int16_t>(scrollPoint.x + SCROLL_POINT_BASE_X_COORDINATE),
-        static_cast<int16_t>(scrollPoint.y + SCROLL_POINT_START_Y_COORDINATE)};
-    Point endPoint = {static_cast<int16_t>(scrollPoint.x + SCROLL_POINT_BASE_X_COORDINATE),
-        static_cast<int16_t>(scrollPoint.y + SCROLL_POINT_END_Y_COORDINATE)};
-    EventInjector::GetInstance()->SetDragEvent(startPoint, endPoint, SCROLL_POINT_INTERVAL);
-
-    // 刷新界面
-    if (MainVocassistView::GetInstance() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateWordLabel MainVocassistView GetInstance() is nullptr!!");
-        return;
-    }
-    if (MainVocassistView::GetInstance()->GetVocassist() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateWordLabel MainVocassistView GetVocassist() is nullptr!!");
-        return;
-    }
-    MainVocassistView::GetInstance()->GetVocassist()->Invalidate();
-    RootView::GetInstance()->Invalidate();
-    return;
-}
-
-void VoiceAssistance::DeleteWordLabel()   // 删除文字
-{
-    allWord.clear();
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] DeleteWordLabel!!");
-    if (wordContext == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WorkFrame is nullptr, please use function InitView firstly!!");
-        return;
-    }
-    wordContext->SetText(allWord.c_str());
-    if (workFrame == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WorkFrame is nullptr, please use function InitView firstly!!");
-        return;
-    }
-    workFrame->Invalidate();
-    return;
-}
-
-void VoiceAssistance::CloseVocassist()
-{
-    if (VoiceAssistance::GetInstance() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CloseVocassist GetInstance() is nullptr!!");
-        return;
-    }
-
-    if (VocassistModel::GetInstance()->GetToggleFlag() == ALREADY_OPEN_VOCASSIST_IMAGE) {
-        VoiceAssistance::GetInstance()->SwitchMedium(WAVE_TO_VOC_VIEW);
-        DeleteWordLabel();
-        if (MainVocassistView::GetInstance() == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CloseVocassist MainVocassistView GetInstance() is nullptr!!");
-            return;
-        }
-        if (MainVocassistView::GetInstance()->GetVocassist() == nullptr) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateWordLabel MainVocassistView GetVocassist() is nullptr!!");
-            return;
-        }
-        // 刷新界面
-        MainVocassistView::GetInstance()->GetVocassist()->Invalidate();
-        RootView::GetInstance()->Invalidate();
-    } else {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Somethings wrongs cause in CloseVocassist!!");
-        return;
-    }
-}
-
-static void DeleteTimeTick()
-{
-    if (g_closeVocassistHandle != NULL) {
-        osStatus_t ret = osTimerDelete(g_closeVocassistHandle);
-        if (ret != osOK) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Delete timer failed!!");
-            return;
-        }
-        g_closeVocassistHandle = NULL;
-    }
-}
-
-void VoiceAssistance::DelayTimeCallbackExtend()
-{
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] Delay time callback extend!!");
-    DeleteTimeTick();                       // 删除定时器
-
-    // 太长没操作图标有两种形态转换,第一种是MODE1,当前为语音助手图标时,会推出语音助手;另一种是MODE2,当前为波形图标时,会转化为语音助手图标。
-    if (VoiceAssistance::GetInstance() == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VoiceAssistance::GetInstance() is nullptr");
-        return;
-    }
-
-    VoiceAssistance::GetInstance()->ExitProgress(); // 退出语音助手流程
-
-    if (VocassistModel::GetInstance()->GetRegFlag() == SWITCH_TO_VOCASSIST) {
-        DeleteWordLabel();
-        VoiceAssistance::GetInstance()->SwitchMedium(VOC_TO_WAVE_VIEW);
-        VocassistModel::GetInstance()->SetToggleFlag(ALREADY_OPEN_VOCASSIST_IMAGE);
-        VocassistModel::GetInstance()->SetHasOneCmd(false);     // 点击后可以继续喊命令
-        VocassistModel::GetInstance()->SetRegFlag(SWITCH_TO_UNKNOWN);
-        VocassistModel::GetInstance()->SetExitStatus(CONTINUTE_EXIT_MODE2);
-        DelayDisplayTime(DELAY_SIX_SECONDS);
-    } else {
-        VoiceAssistance::GetInstance()->CloseVocassist();                       // 将波形图标转化为语音助手图标
-    }
-    return;
-}
-
-void DelayTimeCallback(const void *argument)
-{
-    UNUSED(argument);
-    if (VoiceAssistance::GetInstance() == nullptr) {
-        return;
-    }
-    VoiceAssistance *ptr = VoiceAssistance::GetInstance();
-    GraphicService::GetInstance()->PostGraphicEvent(std::bind(&VoiceAssistance::DelayTimeCallbackExtend, ptr));
-}
-
-void VoiceAssistance::ExitProgress()
-{
-    int quitStatus =  VocassistModel::GetInstance()->GetExitStatus();
-    if (CONTINUTE_EXIT_MODE1 <= quitStatus && quitStatus <= CONTINUTE_EXIT_MODE2) {
-        if (quitStatus == CONTINUTE_EXIT_MODE1) {
-            int phoneStatus = VocassistModel::GetInstance()->GetPhoneDetailStatus();    // 扫描设置此时通话的状态和个数
-            if (phoneStatus == ONE_ROAD_AND_INCOMING) {
-                NativeAbility::GetInstance().ChangeSlice(VIEW_INCOMING_CALL, gSliceDefaultPriority); // 返回来电界面
-                return;
-            }
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Too long no operate, now exit vocassist");
-            NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);
-            return;
-        } else if (quitStatus == CONTINUTE_EXIT_MODE2) {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Too long no operate, now change model to vocassist label");
-            return;
-        }
-    }
-}
-
-void VoiceAssistance::DelayDisplayTime(int32_t waitSec)
-{
-    if (waitSec < 0 || waitSec > std::numeric_limits<int32_t>::max()) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WaitSec beyond range !!");
-        return;
-    }
-    int quitStatus = VocassistModel::GetInstance()->GetExitStatus();
-    // 删除定时器,打断退出语音助手的操作
-    if (g_closeVocassistHandle != NULL && (quitStatus == CONTINUTE_EXIT_MODE1 ||
-        quitStatus == CONTINUTE_EXIT_MODE2)) {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Interrupt Timer!!");
-        osStatus_t statusRet = osTimerDelete(g_closeVocassistHandle);
-        if (statusRet != osOK) {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Delete timer failed!!");
-        }
-        g_closeVocassistHandle = NULL;
-        VocassistModel::GetInstance()->SetExitStatus(INTERRUPT_EXIT);
-    }
-
-    // 创建新的定时器
-    g_closeVocassistHandle = osTimerNew((osTimerFunc_t)DelayTimeCallback, osTimerOnce, NULL, NULL);
-    if (g_closeVocassistHandle == NULL) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "New timer failed !!");
-        return;
-    }
-    int tick = osMs2Tick(waitSec);
-    osStatus_t statusRet = osTimerStart(g_closeVocassistHandle, tick);
-    if (statusRet != osOK) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Start timer failed !!");
-        if (g_closeVocassistHandle != NULL) {
-            statusRet = osTimerDelete(g_closeVocassistHandle);
-            if (statusRet != osOK) {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Delete timer failed !!");
-                return;
-            }
-            g_closeVocassistHandle = NULL;
-        }
-        return;
-    }
-}
-}
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2022-2022. All rights reserved.\r
+ * Description: voice assistant\r
+ * Author: CompanyName\r
+ * Create: 2022-01-18\r
+ */\r
+\r
+#include <limits>\r
+#include "cmsis_os.h"\r
+#include "AppViewIDs.h"\r
+#include "PlayersModel.h"\r
+#include "CallerLogModel.h"\r
+#include "VocassistModel.h"\r
+#include "VocassistView.h"\r
+#include "VocassistPresenter.h"\r
+\r
+static constexpr uint16_t SWITCH_MAP_NUM = 16;\r
+static constexpr uint16_t ANI_X = 84;\r
+static constexpr uint16_t ANI_Y = 108;\r
+static constexpr uint16_t ANI_SL = 116;\r
+\r
+static constexpr uint16_t WAVEFORM_CHANGE_START = 9;\r
+static constexpr uint16_t WAVEFORM_CHANGE_PICTURE_TOTAL = 34;\r
+static constexpr uint16_t WAVEFORM_CHANGE_PICTURE_INTERVAL = 50;\r
+\r
+static constexpr uint16_t WAVEFORM_CHANGE_END = 51;\r
+static constexpr uint16_t ACTIVE_VOCASSIST_PICTURE_TOTAL = 20;\r
+static constexpr uint16_t ACTIVE_VOCASSIST_PICTURE_INTERVAL = 100;\r
+\r
+static constexpr uint16_t VOCASSIST_XLABEL = 180;\r
+static constexpr uint16_t VOCASSIST_YLABEL = 60;\r
+static constexpr uint16_t VOCASSIST_WIDTH = 80;\r
+static constexpr uint16_t VOCASSIST_HEIGHTH = 80;\r
+\r
+static constexpr uint16_t WORD_LENGTH = 60;\r
+static constexpr int16_t ERROR_RETVAL = -1;\r
+\r
+namespace OHOS {\r
+static osTimerId_t g_closeVocassistHandle = NULL;\r
+static VoiceAssistance *g_pVoiceAssistance = nullptr;\r
+\r
+enum {\r
+    WITHOUT_OPERATE = PLAYER_RESPONESE_MAX,\r
+    NO_SUPPORT_VOC_IN_CALLING,\r
+    VOC_RESPONSE,\r
+    WITHOUT_INCOMING_PHONE,\r
+    RESPONESE_MAX\r
+};\r
+\r
+using viewFunct = int (VoiceAssistance::*)();\r
+\r
+using Viewmapper = struct {\r
+    uint16_t viewIndex;\r
+    viewFunct funct;\r
+};\r
+\r
+static constexpr Viewmapper g_switchMap[SWITCH_MAP_NUM] = {\r
+    {SWITCH_TO_XIAOYI, &VoiceAssistance::VocResponse},\r
+    {SWITCH_TO_MAKECALL, &VoiceAssistance::ChangeAcceptPhone},\r
+    {SWITCH_TO_CUTCALL, &VoiceAssistance::ChangeHangupPhone},\r
+    {PRE_SONG, &VoiceAssistance::ChangePreSong},\r
+    {NEXT_SONG, &VoiceAssistance::ChangeNextSong},\r
+    {INCREASE_VOLUME, &VoiceAssistance::ChangeIncreaseVolume},\r
+    {DECREASE_VOLUME, &VoiceAssistance::ChangeDecreaseVolume},\r
+    {SWITCH_TO_PLAYER, &VoiceAssistance::ChangeViewToPlayer},\r
+    {PAUSE_PLAYBACK, &VoiceAssistance::ChangePausePlayback},\r
+    {RESUME_PLAYBACK, &VoiceAssistance::ChangeResumePlayback},\r
+    {SWITCH_TO_UNKNOWN, &VoiceAssistance::ResponseWithoutUse},\r
+    {CREATE_CMD_LABEL, &VoiceAssistance::CreateCmdLabel},\r
+    {VOC_VIEW, &VoiceAssistance::VocAssistChange},\r
+    {WAVE_VIEW, &VoiceAssistance::WaveFormChange},\r
+    {VOC_TO_WAVE_VIEW, &VoiceAssistance::WithDetectVocImg},\r
+    {WAVE_TO_VOC_VIEW, &VoiceAssistance::WithoutDetectVocImg}\r
+};\r
+\r
+static constexpr char g_resStr[RESPONESE_MAX][WORD_LENGTH]{\r
+    {"好的,马上"},\r
+    {"没有歌曲正在播放"},\r
+    {"已经在播放歌曲"},\r
+    {"歌曲已经暂停"},\r
+    {"歌曲已经停止"},\r
+    {"抱歉,执行失败"},\r
+    {"抱歉当前状态不支持此操作"},\r
+    {"抱歉,我刚才开小差了,没听清你说了什么"},\r
+    {"抱歉,通话时不支持使用语音助手"},\r
+    {"我在"},\r
+    {"当前没有来电"}\r
+};\r
+\r
+VoiceAssistance::VoiceAssistance()\r
+{\r
+    g_pVoiceAssistance = this;\r
+}\r
+\r
+VoiceAssistance::~VoiceAssistance()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "~VoiceAssistance!!");\r
+    RemoveAll();\r
+    g_pVoiceAssistance = nullptr;\r
+    // 切换为其它slice时将定时器删除\r
+    if (g_closeVocassistHandle != NULL) {\r
+        osStatus_t statusRet = osTimerDelete(g_closeVocassistHandle);\r
+        if (statusRet != osOK) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Delete timer failed!!");\r
+        }\r
+        g_closeVocassistHandle = NULL;\r
+    }\r
+\r
+    delete voicePhoto;\r
+    voicePhoto = nullptr;\r
+    workFrame->RemoveAll();\r
+    delete wordContext;\r
+    wordContext = nullptr;\r
+    delete workFrame;\r
+    workFrame = nullptr;\r
+}\r
+\r
+VoiceAssistance *VoiceAssistance::GetInstance()\r
+{\r
+    return g_pVoiceAssistance;\r
+}\r
+\r
+void VoiceAssistance::InitImageAnimatorSource(void)\r
+{\r
+    int ret;\r
+    (void)memset_s(storPicPathBuf, sizeof(storPicPathBuf), 0, sizeof(storPicPathBuf));\r
+    for (int i = 0; i < ANI_TOTAL_NUM; i++) {\r
+        ret = sprintf_s(storPicPathBuf[i], sizeof(storPicPathBuf[i]),\r
+                RES_PATH"/VOICE_ASSISTANT_%02d.bin", i + 1);\r
+        if (ret == ERROR_RETVAL) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Splice failed!!");\r
+            return;\r
+        }\r
+        imageAnimatorInfo[i].imagePath = (const char *)storPicPathBuf[i];\r
+        imageAnimatorInfo[i].pos.x = ANI_X;\r
+        imageAnimatorInfo[i].pos.y = ANI_Y;\r
+        imageAnimatorInfo[i].width = ANI_SL;\r
+        imageAnimatorInfo[i].height = ANI_SL;\r
+        imageAnimatorInfo[i].imageType = IMG_SRC_FILE_PATH;\r
+    }\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] VoiceAssistanceInitImageAnimatorSource success!!");\r
+}\r
+\r
+void VoiceAssistance::DetermineCause(const int *eventRet)        // 根据能否执行用户指令做出回复\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] Enter DetermineCause");\r
+    if (eventRet == NULL) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "EventRet is NULL!!");\r
+        return;\r
+    }\r
+    if (VoiceAssistance::GetInstance() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VoiceAssistance instance is NULL!!");\r
+        return;\r
+    }\r
+    int temp = *eventRet;\r
+    CreateWordLabel(g_resStr[temp], ERASE_LABEL_TEXT);\r
+    VocassistModel::GetInstance()->SetToggleFlag(ALREADY_CLOSE_VOCASSIST_IMAGE);\r
+}\r
+\r
+void VoiceAssistance::InitVocassist(void)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] InitVocassist");\r
+    voicePhoto = new UIImageAnimatorView();\r
+    if (voicePhoto == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VoiceAssistance : failed to Create vociePhoto!!");\r
+        return;\r
+    }\r
+    voicePhoto->SetPosition(VOCASSIST_XLABEL, VOCASSIST_YLABEL, VOCASSIST_WIDTH, VOCASSIST_HEIGHTH);\r
+    voicePhoto->SetRepeat(true);\r
+    voicePhoto->SetVisible(true);\r
+    voicePhoto->SetSizeFixed(true);\r
+\r
+    if (VoiceAssistance::GetInstance() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VoiceAssistance instance is NULL!!");\r
+        return;\r
+    }\r
+    VoiceAssistance::GetInstance()->SwitchMedium(WAVE_VIEW);\r
+    voicePhoto->SetViewId(VOCPHOTO_ID);\r
+    voicePhoto->SetTouchable(true);\r
+    onClickListener = static_cast<UIView::OnClickListener*>(VocassistPresenter::GetInstance());\r
+    voicePhoto->SetOnClickListener(onClickListener);\r
+\r
+    stoplistener = static_cast<UIImageAnimatorView::AnimatorStopListener*>(VocassistPresenter::GetInstance());\r
+    if (stoplistener == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to Create stoplistener!!");\r
+        return;\r
+    }\r
+    voicePhoto->SetAnimatorStopListener(stoplistener);\r
+}\r
+\r
+void VoiceAssistance::SwitchMedium(uint16_t targetView)\r
+{\r
+    if (GraphicService::GetInstance() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GraphicService instance is NULL!!");\r
+        return;\r
+    }\r
+    GraphicService::GetInstance()->PostGraphicEvent(std::bind(&VoiceAssistance::VocSwitchApp, this, targetView));\r
+}\r
+\r
+static viewFunct FindIndex(uint16_t target)\r
+{\r
+    for (int i = 0; i < SWITCH_MAP_NUM; i++) {\r
+        if (g_switchMap[i].viewIndex == target) {\r
+            return (g_switchMap[i].funct);\r
+        }\r
+    }\r
+    return nullptr;\r
+}\r
+\r
+void VoiceAssistance::VocSwitchApp(uint16_t targetView)\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] Start Operation!!");\r
+    if (VoiceAssistance::GetInstance() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VoiceAssistance instance is NULL!!");\r
+        return;\r
+    }\r
+    viewFunct func = FindIndex(targetView);\r
+    if (func != nullptr) {\r
+        int retVal = (this->*(func))();\r
+        if (SWITCH_TO_XIAOYI <= targetView && targetView <= SWITCH_TO_UNKNOWN) {\r
+            DetermineCause(&retVal);            // 回复文本显示\r
+        }\r
+    }\r
+}\r
+\r
+int VoiceAssistance::VocResponse()\r
+{\r
+    return VOC_RESPONSE;\r
+}\r
+\r
+int VoiceAssistance::ChangeViewToPlayer()           // 播放音乐\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] Enter ChangeViewToPlayer");\r
+\r
+    if(!PlayersModel::GetInstance()->HasPlayerPlayed()) {       // 播放过了就不用再初始化\r
+        PlayersListGroup::GetInstance()->SetUpListCase();\r
+        PlayersModel::GetInstance()->PlayerInit();\r
+    }\r
+\r
+    int ret = PlayersModel::GetInstance()->PlayerPlay();\r
+    return ret;\r
+}\r
+\r
+int VoiceAssistance::ChangePreSong()               // 上一首\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] Enter ChangePreSong!!");\r
+\r
+    int ret = PlayersModel::GetInstance()->PreSongOperate();\r
+    if (ret == NORMAL) {\r
+        ret = PlayersModel::GetInstance()->PlayerPlay();\r
+        if (ret != EXECUTE_FUNC_FAILED) {\r
+            return NORMAL;\r
+        }\r
+    }\r
+    return ret;\r
+}\r
+\r
+int VoiceAssistance::ChangeNextSong()              // 下一首\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] Enter ChangeNextSong!!");\r
+\r
+    int ret = PlayersModel::GetInstance()->NextSongOperate();\r
+    if (ret == NORMAL) {\r
+        ret = PlayersModel::GetInstance()->PlayerPlay();\r
+        if (ret != EXECUTE_FUNC_FAILED) {\r
+            return NORMAL;\r
+        }\r
+    }\r
+    return ret;\r
+}\r
+\r
+int VoiceAssistance::ChangeStopPlayback()      // 停止播放\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] Enter ChangeStopPlaybcak!!");\r
+\r
+    int ret = PlayersModel::GetInstance()->PlayerStop();\r
+    return ret;\r
+}\r
+\r
+int VoiceAssistance::ChangePausePlayback() // 暂停\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] Enter ChangePausePlayback!!");\r
+\r
+    int ret = PlayersModel::GetInstance()->PlayerPause();\r
+    return ret;\r
+}\r
+\r
+int VoiceAssistance::ChangeResumePlayback() // 继续播放\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] Enter ChangeResumePlayback!!");\r
+\r
+    int ret = PlayersModel::GetInstance()->PlayerPlay();\r
+    return ret;\r
+}\r
+\r
+int VoiceAssistance::ChangeIncreaseVolume()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] Enter ChangeResumePlayback!!");\r
+\r
+    int ret = PlayersModel::GetInstance()->IncreaseVolume();\r
+    return ret;\r
+}\r
+\r
+int VoiceAssistance::ChangeDecreaseVolume()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] Enter ChangeResumePlayback!!");\r
+\r
+    int ret = PlayersModel::GetInstance()->DecreaseVolume();\r
+    return ret;\r
+}\r
+\r
+int VoiceAssistance::ChangeAcceptPhone()    // 接听电话\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] Enter ChangeAcceptPhone!!");\r
+\r
+    int phoneStatus = VocassistModel::GetInstance()->GetPhoneDetailStatus();    // 扫描设置此时通话的状态和个数\r
+    if (phoneStatus == ONE_ROAD_AND_INCOMING) {\r
+        int ret = AcceptIncomingCall();\r
+        if (ret == 0) {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AcceptPhone Success!!");\r
+            return NORMAL;\r
+        } else {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AcceptPhone Failed!!");\r
+            return EXECUTE_FUNC_FAILED;\r
+        }\r
+    } else {\r
+        return WITHOUT_INCOMING_PHONE;\r
+    }\r
+}\r
+\r
+int VoiceAssistance::ChangeHangupPhone()    // 挂断电话\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] Enter ChangeHangupPhone!!");\r
+\r
+    int phoneStatus = VocassistModel::GetInstance()->GetPhoneDetailStatus();    // 扫描设置此时通话的状态和个数\r
+    if (phoneStatus == ONE_ROAD_AND_INCOMING) {\r
+        int ret = RejectIncomingCall();\r
+        if (ret == 0) {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HangupPhone Success!!");\r
+            return NORMAL;\r
+        } else {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HangupPhone Failed!!");\r
+            return EXECUTE_FUNC_FAILED;\r
+        }\r
+    } else {\r
+        return WITHOUT_INCOMING_PHONE;\r
+    }\r
+}\r
+\r
+std::string VoiceAssistance::GetCmdContext()\r
+{\r
+    return allWord;\r
+}\r
+\r
+void VoiceAssistance::SetCmdContext(std::string str)\r
+{\r
+    allWord = str;\r
+}\r
+\r
+int VoiceAssistance::ResponseWithoutUse()\r
+{\r
+    int phoneStatus = VocassistModel::GetInstance()->GetPhoneDetailStatus();    // 扫描设置此时通话的状态和个数\r
+    if (phoneStatus == ONE_OR_MORE_ROAD_AND_OTHER_STATUS) {\r
+        return NO_SUPPORT_VOC_IN_CALLING;\r
+    } else {\r
+        return WITHOUT_OPERATE;\r
+    }\r
+}\r
+\r
+int VoiceAssistance::CreateCmdLabel()\r
+{\r
+    std::string temp = GetCmdContext();\r
+    CreateWordLabel(temp, ERASE_LABEL_TEXT);\r
+    return NORMAL;\r
+}\r
+\r
+int VoiceAssistance::VocAssistChange() // 语音助手图标\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] VocAssistChange");\r
+    if (voicePhoto == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VoicePhoto is nullptr, please use function InitView firstly!!");\r
+        return EXECUTE_FUNC_FAILED;\r
+    }\r
+    voicePhoto->SetImageAnimatorSrc(imageAnimatorInfo+WAVEFORM_CHANGE_END,\r
+        ACTIVE_VOCASSIST_PICTURE_TOTAL, ACTIVE_VOCASSIST_PICTURE_INTERVAL);\r
+    voicePhoto->SetRepeat(true);\r
+    voicePhoto->Start();\r
+    return NORMAL;\r
+}\r
+\r
+int VoiceAssistance::WaveFormChange() // 波形图标\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] WaveFormChange");\r
+    if (voicePhoto == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VoicePhoto is nullptr, please use function InitView firstly!!");\r
+        return EXECUTE_FUNC_FAILED;\r
+    }\r
+    voicePhoto->SetImageAnimatorSrc(imageAnimatorInfo+WAVEFORM_CHANGE_START,\r
+        WAVEFORM_CHANGE_PICTURE_TOTAL, WAVEFORM_CHANGE_PICTURE_INTERVAL);\r
+    voicePhoto->SetRepeat(true);\r
+    voicePhoto->Start();\r
+    return NORMAL;\r
+}\r
+\r
+void VoiceAssistance::InitWordlabel() // 识别出的命令文本初始化\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] InitWordlabel");\r
+    workFrame = new UIScrollView();\r
+    if (workFrame == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to create workFrame!!");\r
+        return;\r
+    }\r
+    workFrame->SetVerticalScrollState(true);\r
+    workFrame->SetHorizontalScrollState(false);\r
+    workFrame->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);\r
+    workFrame->SetPosition(WORKFRAME_X_COORDINATE, WORKFRAME_Y_COORDINATE, WORKFRAME_WIDTH, WORKFRAME_HEIGHT);\r
+\r
+    wordContext = new UILabel();\r
+    if (wordContext == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to Create wordContext!!");\r
+        return;\r
+    }\r
+    wordContext->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABEL_TEXT_SIZE);\r
+    wordContext->SetPosition(LABEL_TEXT_X_COORDINATE, LABEL_TEXT_Y_COORDINATE,\r
+                             LABEL_TEXT_WIDTH, LABEL_TEXT_HEIGHT);\r
+    wordContext->SetAlign(TEXT_ALIGNMENT_CENTER);\r
+    wordContext->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
+    workFrame->Add(wordContext);\r
+}\r
+\r
+bool VoiceAssistance::InitView(void *caller) // 界面初始化\r
+{\r
+    UNUSED(caller);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] InitView %p", caller);\r
+\r
+    EventInjector::GetInstance()->RegisterEventInjector(EventDataType::POINT_TYPE);\r
+\r
+    VocassistModel::GetInstance()->SetToggleFlag(ALREADY_OPEN_VOCASSIST_IMAGE);\r
+    VocassistModel::GetInstance()->SetRegFlag(SWITCH_TO_UNKNOWN);\r
+    VocassistModel::GetInstance()->SetExitStatus(INTERRUPT_EXIT);\r
+    VocassistModel::GetInstance()->SetConnectFlag(CONNECT_TO_VOCASSIST);\r
+    InitImageAnimatorSource();\r
+    InitVocassist();\r
+    if (voicePhoto == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VoicePhoto is nullptr!!");\r
+        return false;\r
+    }\r
+    Add(voicePhoto);\r
+\r
+    InitWordlabel();\r
+    if (workFrame == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WorkFrame is nullptr!!");\r
+        return false;\r
+    }\r
+    Add(workFrame);\r
+\r
+    voicePhoto->Start();\r
+    return true;\r
+}\r
+\r
+int VoiceAssistance::WithDetectVocImg() // 波形变化的过渡图形\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] WithDetectVocImg!!");\r
+    VocassistModel::GetInstance()->SetConnectFlag(CONNECT_TO_WAVEFORM);\r
+    if (voicePhoto == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VoicePhoto is nullptr, please use function InitView firstly");\r
+        return EXECUTE_FUNC_FAILED;\r
+    }\r
+    voicePhoto->SetImageAnimatorSrc(imageAnimatorInfo+ENTER_VOCASSIST_TRANSITION_START,\r
+                                    ENTER_VOCASSIST_TRANSITION_TOTAL, ENTER_VOCASSIST_TRANSITION_INTERVAL);\r
+    voicePhoto->SetRepeat(false);\r
+    voicePhoto->Start();\r
+\r
+    return NORMAL;\r
+}\r
+\r
+int VoiceAssistance::WithoutDetectVocImg()  // 结束波形变化的过渡图形\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] WithoutDetectVocImg!!");\r
+    VocassistModel::GetInstance()->SetConnectFlag(CONNECT_TO_VOCASSIST);\r
+    if (voicePhoto == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VoicePhoto is nullptr, please use function InitView firstly!!");\r
+        return EXECUTE_FUNC_FAILED;\r
+    }\r
+    voicePhoto->SetImageAnimatorSrc(imageAnimatorInfo+EXIT_VOCASSIST_TRANSITION_START,\r
+                                    EXIT_VOCASSIST_TRANSITION_TOTAL, EXIT_VOCASSIST_TRANSITION_INTERVAL);\r
+    voicePhoto->SetRepeat(false);\r
+    voicePhoto->Start();\r
+\r
+    return NORMAL;\r
+}\r
+\r
+void VoiceAssistance::CreateWordLabel(std::string Word, int isclearFlag) // 识别语音后展示文字Label\r
+{\r
+    Point scrollPoint;\r
+\r
+    if (isclearFlag == ERASE_LABEL_TEXT) {\r
+        DeleteWordLabel();\r
+    }\r
+\r
+    allWord  = allWord + Word;\r
+    if (wordContext == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WorkFrame is nullptr, please use function InitView firstly!!");\r
+        return;\r
+    }\r
+    wordContext->SetText(allWord.c_str()); // 在Label设置识别到的文字\r
+    wordContext->Invalidate();\r
+\r
+    // 保持显示得到最后一行\r
+    if (workFrame == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WorkFrame is nullptr, please use function InitView firstly!!");\r
+        return;\r
+    }\r
+    scrollPoint = {workFrame->GetRect().GetX(), workFrame->GetRect().GetY()};\r
+    Point startPoint = {static_cast<int16_t>(scrollPoint.x + SCROLL_POINT_BASE_X_COORDINATE),\r
+        static_cast<int16_t>(scrollPoint.y + SCROLL_POINT_START_Y_COORDINATE)};\r
+    Point endPoint = {static_cast<int16_t>(scrollPoint.x + SCROLL_POINT_BASE_X_COORDINATE),\r
+        static_cast<int16_t>(scrollPoint.y + SCROLL_POINT_END_Y_COORDINATE)};\r
+    EventInjector::GetInstance()->SetDragEvent(startPoint, endPoint, SCROLL_POINT_INTERVAL);\r
+\r
+    // 刷新界面\r
+    if (MainVocassistView::GetInstance() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateWordLabel MainVocassistView GetInstance() is nullptr!!");\r
+        return;\r
+    }\r
+    if (MainVocassistView::GetInstance()->GetVocassist() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateWordLabel MainVocassistView GetVocassist() is nullptr!!");\r
+        return;\r
+    }\r
+    MainVocassistView::GetInstance()->GetVocassist()->Invalidate();\r
+    RootView::GetInstance()->Invalidate();\r
+    return;\r
+}\r
+\r
+void VoiceAssistance::DeleteWordLabel()   // 删除文字\r
+{\r
+    allWord.clear();\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] DeleteWordLabel!!");\r
+    if (wordContext == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WorkFrame is nullptr, please use function InitView firstly!!");\r
+        return;\r
+    }\r
+    wordContext->SetText(allWord.c_str());\r
+    if (workFrame == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WorkFrame is nullptr, please use function InitView firstly!!");\r
+        return;\r
+    }\r
+    workFrame->Invalidate();\r
+    return;\r
+}\r
+\r
+void VoiceAssistance::CloseVocassist()\r
+{\r
+    if (VoiceAssistance::GetInstance() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CloseVocassist GetInstance() is nullptr!!");\r
+        return;\r
+    }\r
+\r
+    if (VocassistModel::GetInstance()->GetToggleFlag() == ALREADY_OPEN_VOCASSIST_IMAGE) {\r
+        VoiceAssistance::GetInstance()->SwitchMedium(WAVE_TO_VOC_VIEW);\r
+        DeleteWordLabel();\r
+        if (MainVocassistView::GetInstance() == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CloseVocassist MainVocassistView GetInstance() is nullptr!!");\r
+            return;\r
+        }\r
+        if (MainVocassistView::GetInstance()->GetVocassist() == nullptr) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateWordLabel MainVocassistView GetVocassist() is nullptr!!");\r
+            return;\r
+        }\r
+        // 刷新界面\r
+        MainVocassistView::GetInstance()->GetVocassist()->Invalidate();\r
+        RootView::GetInstance()->Invalidate();\r
+    } else {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Somethings wrongs cause in CloseVocassist!!");\r
+        return;\r
+    }\r
+}\r
+\r
+static void DeleteTimeTick()\r
+{\r
+    if (g_closeVocassistHandle != NULL) {\r
+        osStatus_t ret = osTimerDelete(g_closeVocassistHandle);\r
+        if (ret != osOK) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Delete timer failed!!");\r
+            return;\r
+        }\r
+        g_closeVocassistHandle = NULL;\r
+    }\r
+}\r
+\r
+void VoiceAssistance::DelayTimeCallbackExtend()\r
+{\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[VoiceAssistView] Delay time callback extend!!");\r
+    DeleteTimeTick();                       // 删除定时器\r
+\r
+    // 太长没操作图标有两种形态转换,第一种是MODE1,当前为语音助手图标时,会推出语音助手;另一种是MODE2,当前为波形图标时,会转化为语音助手图标。\r
+    if (VoiceAssistance::GetInstance() == nullptr) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VoiceAssistance::GetInstance() is nullptr");\r
+        return;\r
+    }\r
+\r
+    VoiceAssistance::GetInstance()->ExitProgress(); // 退出语音助手流程\r
+\r
+    if (VocassistModel::GetInstance()->GetRegFlag() == SWITCH_TO_VOCASSIST) {\r
+        DeleteWordLabel();\r
+        VoiceAssistance::GetInstance()->SwitchMedium(VOC_TO_WAVE_VIEW);\r
+        VocassistModel::GetInstance()->SetToggleFlag(ALREADY_OPEN_VOCASSIST_IMAGE);\r
+        VocassistModel::GetInstance()->SetHasOneCmd(false);     // 点击后可以继续喊命令\r
+        VocassistModel::GetInstance()->SetRegFlag(SWITCH_TO_UNKNOWN);\r
+        VocassistModel::GetInstance()->SetExitStatus(CONTINUTE_EXIT_MODE2);\r
+        DelayDisplayTime(DELAY_SIX_SECONDS);\r
+    } else {\r
+        VoiceAssistance::GetInstance()->CloseVocassist();                       // 将波形图标转化为语音助手图标\r
+    }\r
+    return;\r
+}\r
+\r
+void DelayTimeCallback(const void *argument)\r
+{\r
+    UNUSED(argument);\r
+    if (VoiceAssistance::GetInstance() == nullptr) {\r
+        return;\r
+    }\r
+    VoiceAssistance *ptr = VoiceAssistance::GetInstance();\r
+    GraphicService::GetInstance()->PostGraphicEvent(std::bind(&VoiceAssistance::DelayTimeCallbackExtend, ptr));\r
+}\r
+\r
+void VoiceAssistance::ExitProgress()\r
+{\r
+    int quitStatus =  VocassistModel::GetInstance()->GetExitStatus();\r
+    if (CONTINUTE_EXIT_MODE1 <= quitStatus && quitStatus <= CONTINUTE_EXIT_MODE2) {\r
+        if (quitStatus == CONTINUTE_EXIT_MODE1) {\r
+            int phoneStatus = VocassistModel::GetInstance()->GetPhoneDetailStatus();    // 扫描设置此时通话的状态和个数\r
+            if (phoneStatus == ONE_ROAD_AND_INCOMING) {\r
+                NativeAbility::GetInstance().ChangeSlice(VIEW_INCOMING_CALL); // 返回来电界面\r
+                return;\r
+            }\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Too long no operate, now exit vocassist");\r
+            NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);\r
+            return;\r
+        } else if (quitStatus == CONTINUTE_EXIT_MODE2) {\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Too long no operate, now change model to vocassist label");\r
+            return;\r
+        }\r
+    }\r
+}\r
+\r
+void VoiceAssistance::DelayDisplayTime(int32_t waitSec)\r
+{\r
+    if (waitSec < 0 || waitSec > std::numeric_limits<int32_t>::max()) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WaitSec beyond range !!");\r
+        return;\r
+    }\r
+    int quitStatus = VocassistModel::GetInstance()->GetExitStatus();\r
+    // 删除定时器,打断退出语音助手的操作\r
+    if (g_closeVocassistHandle != NULL && (quitStatus == CONTINUTE_EXIT_MODE1 ||\r
+        quitStatus == CONTINUTE_EXIT_MODE2)) {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Interrupt Timer!!");\r
+        osStatus_t statusRet = osTimerDelete(g_closeVocassistHandle);\r
+        if (statusRet != osOK) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Delete timer failed!!");\r
+        }\r
+        g_closeVocassistHandle = NULL;\r
+        VocassistModel::GetInstance()->SetExitStatus(INTERRUPT_EXIT);\r
+    }\r
+\r
+    // 创建新的定时器\r
+    g_closeVocassistHandle = osTimerNew((osTimerFunc_t)DelayTimeCallback, osTimerOnce, NULL, NULL);\r
+    if (g_closeVocassistHandle == NULL) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "New timer failed !!");\r
+        return;\r
+    }\r
+    int tick = osMs2Tick(waitSec);\r
+    osStatus_t statusRet = osTimerStart(g_closeVocassistHandle, tick);\r
+    if (statusRet != osOK) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Start timer failed !!");\r
+        if (g_closeVocassistHandle != NULL) {\r
+            statusRet = osTimerDelete(g_closeVocassistHandle);\r
+            if (statusRet != osOK) {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Delete timer failed !!");\r
+                return;\r
+            }\r
+            g_closeVocassistHandle = NULL;\r
+        }\r
+        return;\r
+    }\r
+}\r
+}\r
index b38f6f4..b91515d 100644 (file)
@@ -1,13 +1,4 @@
-/*** 
- * @Author: Caisking 3449750381@qq.com
- * @Date: 2024-01-17 14:36:35
- * @LastEditors: Caisking 3449750381@qq.com
- * @LastEditTime: 2024-01-18 18:13:24
- * @FilePath: /FD230/code/sdk/application/wearable/nativeapp/nativeui/screensetting/include/ScreenModels.h
- * @Description: 
- * @
- * @Copyright (c) 2024 by Caisking , All Rights Reserved. 
- */
+
 /*
  * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
  * Description: ScreenModels
 #include "gfx_utils/list.h"
 #include "ui_image_view.h"
 
-namespace OHOS {
-typedef enum {
-    NEW_DAIL = 0,
-    HEART_RATE,
-    TRAINING,
-    BloodOxygen,
-    COMPASS,
-    WEATHER,
-    PLAYER,
-    //APPLIST,
-    MAX_CARD,
-} CardId;
+namespace OHOS
+{
+    typedef enum
+    {
+        WATCH_FACE = 0,
+        HEART_RATE,
+        TRAINING,
+        BloodOxygen,
+        COMPASS,
+        WEATHER,
+        MUSIC_PLAYER,
+        // APPLIST,
+        MAX_CARD,
+    } CardId;
 
+    struct CardInfo
+    {
+        int16_t cardId;
+    };
 
-struct CardInfo {
-    int16_t cardId;
-};
+    class ScreenModels
+    {
+    public:
+        ScreenModels();
+        ~ScreenModels();
+        static ScreenModels *GetInstance(void);
+        // card funtion
+        bool SetUpListCase(void);
+        bool SaveCardConfig(void);
+        bool InitCardConfig(void);
+        void SetCardConfigDefault(void);
+        int16_t GetCardPage(uint16_t page);
+        bool CardInsertFirst(int32_t card);
+        bool CardDelete(int32_t card);
+        int16_t GetMaxCard(void);
+        int16_t GetLastCardPage(void);
+        bool LoadAppImages(std::string file, UIImageView *view, uint32_t resId);
+        void PreLoadAppimages(void);
 
-class ScreenModels {
-public:
-    ScreenModels();
-    ~ScreenModels();
-    static ScreenModels *GetInstance(void);
- // card funtion
-    bool SetUpListCase(void);
-    bool SaveCardConfig(void);
-    bool InitCardConfig(void);
-    void SetCardConfigDefault(void);
-    int16_t GetCardPage(uint16_t page);
-    bool CardInsertFirst(int32_t card);
-    bool CardDelete(int32_t card);
-    int16_t GetMaxCard(void);
-    int16_t GetLastCardPage(void);
-    bool LoadAppImages(std::string file, UIImageView *view, uint32_t resId);
-    void PreLoadAppimages(void);
-private:
-    void LoadAppMultiImages(std::string file, uint32_t startId, uint32_t lastId);
-    List<CardInfo> *listMainView{nullptr};  // record main view pages
-    int16_t maxPage = MAX_CARD;
-};
+    private:
+        void LoadAppMultiImages(std::string file, uint32_t startId, uint32_t lastId);
+        List<CardInfo> *listMainView{nullptr}; // record main view pages
+        int16_t maxPage = MAX_CARD;
+    };
 }
 #endif
index f8f7ce9..5e442e7 100644 (file)
@@ -28,7 +28,7 @@ extern "C" {
 
 typedef struct UiServiceFeatureApi {
     INHERIT_IUNKNOWN;
-    int32_t (*SendMsg)(IUnknown *publicApi, Request *request);
+    int32_t (*SendMsg)(int32_t msgId, uint32_t msgValue, void *data, int32_t dataLen);
 } UiServiceFeatureApi;
 
 typedef struct UiService UiService;
@@ -44,6 +44,9 @@ typedef enum {
     JS_UNINSTALL_SUCESS_TO_UI,
     BT_CONNECTED_TO_UI,
     BT_DISCONNECTED_TO_UI,
+    SCREEN_TURN_ON_TO_UI,
+    SCREEN_TURN_OFF_TO_UI,
+    SCREEN_OFF_ENABLE_TO_UI,
 } UiServiceMsgId;
 
 #define BUNDLE_NAME_LEN 128
index d6bd68a..b12fcf3 100644 (file)
 #include "bundle_install_msg.h"
 #include "graphic_service.h"
 #include "ApplistModel.h"
+#if defined(SUPPORT_POWER_MANAGER)
+#include "power_display_service.h"
+#endif
+#include "ui_screennotify.h"
+#include "HealthModel.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -35,7 +40,7 @@ static BOOL ServiceInitialize(Service *service, Identity identity);
 static TaskConfig GetServiceTaskConfig(Service *service);
 static BOOL ServiceMessageHandle(Service *service, Request *request);
 static void ServiceMsgProcess(Request *request);
-static int32_t SendMsg(IUnknown *publicApi, Request *request);
+static int32_t SendMsg(int32_t msgId, uint32_t msgValue, void *data, int32_t dataLen);
 
 static UiService g_uiService = {
     .GetName = GetServiceName,
@@ -51,6 +56,50 @@ static UiService g_uiService = {
 const int DATA_DIST_STACK_SIZE = 0xC00;
 const int DATA_DIST_MAIL_LENGTH = 10;
 const int BYTE_OFFSET = 8;
+static uint32_t g_interval = 5;
+
+static void ScreenTurnOn(Request *request)
+{
+    if (OHOS::HealthModel::GetInstance()->GetBriScrStatus() == 1) {
+        return;
+    }
+#if defined(SUPPORT_POWER_MANAGER)
+    int32_t timeout = *((int32_t*)request->data);
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ScreenTurn] timeout = %d", timeout);
+    g_interval = get_back_to_home_interval();
+    set_back_to_home_interval(0xFFFFFFFF);
+    const power_display_svr_api_t *display_api = power_display_svr_get_api();
+    if (display_api->get_screen_state() != SCREEN_ON) {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ScreenTurn] turn_on_screen");
+        display_api->turn_on_screen();
+    }
+    display_api->set_screen_set_keepon_timeout(timeout);
+#endif
+    return;
+}
+
+static void ScreenTurnOff(Request *request)
+{
+    if (OHOS::HealthModel::GetInstance()->GetBriScrStatus() == 1) {
+        return;
+    }
+#if defined(SUPPORT_POWER_MANAGER)
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ScreenTurnOff] timeout auto");
+    set_back_to_home_interval(g_interval);
+    const power_display_svr_api_t *display_api = power_display_svr_get_api();
+    display_api->set_screen_set_keepon_timeout(0);
+#endif
+    return;
+}
+
+static void ScreenOffEnable(Request *request)
+{
+#if defined(SUPPORT_POWER_MANAGER)
+    int32_t enable = *((int32_t*)request->data);
+    const power_display_svr_api_t *display_api = power_display_svr_get_api();
+    display_api->set_auto_timeout_function(enable);
+#endif
+}
 
 static void Init()
 {
@@ -100,6 +149,16 @@ void ServiceMsgProcess(Request *request)
             GraphicService::GetInstance()->PostGraphicEvent(std::bind(&OHOS::SettingModel::UpdateBlueToothConnectStatus,
                                                                   &OHOS::SettingModel::GetInstance(), false));
             break;
+        case SCREEN_TURN_ON_TO_UI:
+            ScreenTurnOn(request);
+            break;
+        case SCREEN_TURN_OFF_TO_UI:
+            ScreenTurnOff(request);
+            break;
+        case SCREEN_OFF_ENABLE_TO_UI:
+            ScreenOffEnable(request);
+            break;
+
     }
     SAMGR_FreeRequestMsg(request);
 }
@@ -122,10 +181,20 @@ TaskConfig GetServiceTaskConfig(Service *service)
     return config;
 }
 
-static int32_t SendMsg(IUnknown *publicApi, Request *request)
+static int32_t SendMsg(int32_t msgId, uint32_t msgValue, void *data, int32_t dataLen)
 {
-    UiService *uiService = GET_OBJECT(publicApi, UiService, iUnknown);
-    int32_t ret = SAMGR_SendRequest(&uiService->id, request, NULL);
+    Request *request = SAMGR_AllocRequestMsg(0, PLATFORM_CORE, UI_SVR_ID, dataLen);
+    if (request == NULL) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_UI_SERVICE, "SAMGR_AllocRequestMsg failed");
+        return FALSE;
+    }
+    request->msgId = msgId;
+    request->msgValue = msgValue;
+    if (data != NULL) {
+        (void)memcpy_s(request->data, dataLen, data, dataLen);
+    }
+
+    int32_t ret = SAMGR_SendRequest(IUNKNOWN_GetIdentity(GET_IUNKNOWN(g_uiService)), request, NULL);
     if (ret != 0) {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_UI_SERVICE, "SendMsg failed ret = %d ", ret);
         return FALSE;
@@ -147,19 +216,8 @@ void SendMsgToUIService(int32_t msgId, uint32_t msgValue, void *data, int32_t da
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_UI_SERVICE, "QueryInterface comApi failed");
         return;
     }
-
-    Request *request = SAMGR_AllocRequestMsg(0, PLATFORM_CORE, UI_SVR_ID, dataLen);
-    if (request == NULL) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_UI_SERVICE, "SAMGR_AllocRequestMsg failed");
-        return;
-    }
-    request->msgId = msgId;
-    request->msgValue = msgValue;
-    if (data != NULL) {
-        (void)memcpy_s(request->data, dataLen, data, dataLen);
-    }
-
-    comApi->SendMsg((IUnknown *)comApi, request);
+    comApi->SendMsg(msgId, msgValue, data, dataLen);
+    comApi->Release((IUnknown *)comApi);
 }
 
 #ifdef __cplusplus
diff --git a/code/sdk/application/wearable/nativeapp/nativelauncher/include/ui_resource_string.h b/code/sdk/application/wearable/nativeapp/nativelauncher/include/ui_resource_string.h
deleted file mode 100644 (file)
index 39202f6..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-* Copyright (c) xxxxxxxx Technologies Co., Ltd. 2021-2021. All rights reserved.
-* Description: language
-* Author: Graphic develop team
-* Create: 2021-07-06
-*/
-
-#ifndef UI_RESOURCE_STRING_H
-#define UI_RESOURCE_STRING_H
-#include <cstdint>
-namespace OHOS {
-enum UIResourceTextId : uint16_t {
-    STR_IMAGE = 0,\r
-    STR_PROGRESSBAR = 1,\r
-    STR_SLIDEUNLOCK = 2,\r
-    STR_LISTBOX = 3,\r
-    STR_BUTTON = 4,\r
-    STR_SCROLLVIEW = 5,\r
-    STR_SCROLLGRID = 6,\r
-    STR_CLOCK = 7,\r
-    STR_22 = 8,\r
-    GLIDE_DISTURBANCE = 9,\r
-    GLIDE_BRIGHT = 10,\r
-    GLIDE_PHONE = 11,\r
-    GLIDE_ALARM = 12,\r
-    GLIDE_SYSTEM = 13,\r
-    STR_11 = 14,\r
-    GLIDE_SYSTEMSETTING = 15,\r
-    STR_MAX_ID = 16,\r
-}; // UIResourceTextId\r
-
-enum FontLanguageId : uint8_t {
-    LANGUAGE_ID_ZH,\r
-    LANGUAGE_ID_EN,\r
-    LANGUAGE_ID_MAX\r
-}; // UITextLanguageTextId\r
-}\r
-#endif  /* UI_RESOURCE_STRING_H */\r
index 9a695b9..bfb1a05 100644 (file)
@@ -1,3 +1,4 @@
+
 /*
  * Copyright (c) CompanyNameMagicTag 2023. All rights reserved.
  * Description: DialBaseModel
@@ -8,32 +9,33 @@
 #ifndef DIAL_DATA_BASE_H
 #define DIAL_DATA_BASE_H
 
-enum class DialDataType {
-    DATA_TYPE_FLOAT_BASE = 0,
-    DATA_TYPE_STEPS,
-    DATA_TYPE_HEART_RATE,
-    DATA_TYPE_CALORIE,
-    DATA_TYPE_TEMPERATURE,
-    DATA_TYPE_PM25,
-    DATA_TYPE_PRESSURE,
-    DATA_TYPE_AILTITUDE,
-    DATA_TYPE_POWER,
-    DATA_TYPE_CLOCK_ANGLE_H,
-    DATA_TYPE_CLOCK_ANGLE_M,
-    DATA_TYPE_CLOCK_ANGLE_S,
-    DATA_TYPE_CLOCK_ANGLE_MS,
-    DATA_TYPE_TIME_SECOND,
-    DATA_TYPE_TIME_MINUTE,
-    DATA_TYPE_TIME_HOUR,
-    DATA_TYPE_TIME_DATE,
-    DATA_TYPE_TIME_WEEK,
-    DATA_TYPE_TIME_MONTH,
-    DATA_TYPE_TIME_YEAR,
+enum class DialDataType
+{
+    DATA_TYPE_FLOAT_BASE = 0, 
+    DATA_TYPE_STEPS,          // 步数
+    DATA_TYPE_HEART_RATE,     // 心率
+    DATA_TYPE_CALORIE,        // 卡路里
+    DATA_TYPE_TEMPERATURE,    // 温度
+    DATA_TYPE_PM25,           // PM2.5
+    DATA_TYPE_PRESSURE,       // 压力
+    DATA_TYPE_AILTITUDE,      // 海拔
+    DATA_TYPE_POWER,          // 电量
+    DATA_TYPE_CLOCK_ANGLE_H,  // 时针角度
+    DATA_TYPE_CLOCK_ANGLE_M,  // 分针角度
+    DATA_TYPE_CLOCK_ANGLE_S,  // 秒针角度
+    DATA_TYPE_CLOCK_ANGLE_MS, // 毫秒针角度
+    DATA_TYPE_TIME_SECOND,    // 秒
+    DATA_TYPE_TIME_MINUTE,    // 分钟
+    DATA_TYPE_TIME_HOUR,      // 小时
+    DATA_TYPE_TIME_DATE,      // 日期
+    DATA_TYPE_TIME_WEEK,      // 星期
+    DATA_TYPE_TIME_MONTH,     // 月份
+    DATA_TYPE_TIME_YEAR,      // 年份
 
-    DATA_TYPE_MULTI_FLOAT_BASE = 0x2fff,
+    DATA_TYPE_MULTI_FLOAT_BASE = 0x2fff, // 多个浮点数据类型基值
 
-    DATA_TYPE_TEXT_BASE = 0x4fff,
+    DATA_TYPE_TEXT_BASE = 0x4fff, // 文本数据类型基值
 
-    DATA_TYPE_MAX = 0x7fff,
+    DATA_TYPE_MAX = 0x7fff, // 数据类型的最大值
 };
 #endif
index 2470c12..6be82a6 100755 (executable)
@@ -299,6 +299,7 @@ UICardPage *MainViewSample::InitMusicPlayerPage(void)
     return playersView;
 }
 
+
 void MainViewSample::SetPage(int16_t page)
 {
     if (mainSwipeGroup != nullptr) {
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/maomao.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/maomao.bin
new file mode 100644 (file)
index 0000000..767ad3a
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/maomao.bin differ