${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
${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
${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
${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
${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
${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
+/***
+ * @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
/* -------------------------------------------------------------------------- */
void InitDisplayBrightnessSlice(void);
/* --------------------------------测试界面------------------------------------ */
- void InitDialSlice(void);
+
void InitBloodSlice(void);
void InitMainAlipaySlice(void);
/* -------------------------------------------------------------------------- */
#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"
{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}, // 未来天气
}
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) // 天气
{
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
#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" {
}
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++;
}
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;
}
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;
}
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;
}
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;
}
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) {
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++) {
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;
} 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;
}
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;
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;
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)
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)
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;
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]);
{
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) {
}
}
-void AlarmClockModel::GetPopTimeData(int16 *hour, int16* min)
+void AlarmClockModel::GetPopTimeData(int16 *hour, int16 *min)
{
*hour = popHour;
*min = popMin;
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;
}
}
}
}
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()
// 设置回调函数
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);
{
// 本地播放文件路径和状态
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;
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;
}
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);
}
void AlarmClockModel::DeactAudioInter(void)
-{
+{
bool alarmStatus;
uint8_t alarmId = 0;
alarmStatus = AlarmClockModel::GetInstance()->GetListenClockId(&alarmId);
}
currentAlarm[num]->delayNum = 0;
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::AlarmNextDayNotify currentAlarm[%u]->delayNum = %u",
- num, currentAlarm[num]->delayNum);
+ num, currentAlarm[num]->delayNum);
}
}
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;
}
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
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");
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);
}
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();
return;
}
group->SetOnDragListener(alarmDragListener);
-
}
void MainAlarmView::OnSetUpView()
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");
return false;
}
container[thisView] = setWeekView->InitSetWeekView();
- RootView::GetInstance()->Add(container[thisView]);
+ RootView::GetInstance()->Add(container[thisView]);
}
return true;
}
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);
-/*
- * 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
-/*
- * 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
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);
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) {
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;
}
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;
}
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); // 第一个闹钟已响应直接跳过
{
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;
}
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++;
}
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;
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;
}
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 &&
}
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;
}
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) {
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;
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;
}
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
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;
/* 点击事件 */
// 跳转可选页
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) {
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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), ¶m.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(¶m, 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), ¶m.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(¶m, 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
-/*
- * 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(¤tAddr);
- 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(¤tAddr);
- 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(¤tAddr);\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(¤tAddr);\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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
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);
}
}
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) {
}
// 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);
}
// 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);
}
}
}
// 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);
}
}
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
+++ /dev/null
-/*** \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
+++ /dev/null
-#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
+++ /dev/null
-#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
+++ /dev/null
-/***\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
+++ /dev/null
-/***
- * @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
+++ /dev/null
-/***
- * @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
+++ /dev/null
-#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
+++ /dev/null
-#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
+++ /dev/null
-/***\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
+++ /dev/null
-/***
- * @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();
- }
- }
-
-}
-#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
-/*
- * 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
-#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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
}
}
+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();
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);
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);
}
}
}
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);
- }
- }
+ // 切换到用户配置的快捷卡片
}
}
}
-/***
+/***
* @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
#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"
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};
void VerticalViewInit(void);
void VertViewLoad(void);
void HorViewLoad(void);
- UICardPage *CreatePage(int32_t cardId);
};
} // namespace OHOS
#endif // MAIN_VIEW_SAMPLE_H
#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
-/*
- * 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
--- /dev/null
+/*
+ * 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
--- /dev/null
+/*
+ * 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
--- /dev/null
+/*
+ * 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
--- /dev/null
+/*
+ * 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
--- /dev/null
+
+/*
+ * 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
--- /dev/null
+/*
+ * 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
--- /dev/null
+/*
+ * 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
--- /dev/null
+/*
+ * 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
--- /dev/null
+/*
+ * 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
--- /dev/null
+/*
+ * 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
--- /dev/null
+/*
+ * 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
--- /dev/null
+/*
+ * 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
+/**
+ * @}
+ */
--- /dev/null
+/*
+ * 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
--- /dev/null
+/*
+ * 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
--- /dev/null
+/*
+ * 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
--- /dev/null
+/*
+ * 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
--- /dev/null
+/*
+ * 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
--- /dev/null
+/*
+ * 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
--- /dev/null
+/*
+ * 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
--- /dev/null
+/*
+ * 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
--- /dev/null
+/*
+ * 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
#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},
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()
{
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_);
}
}
}
}
Presenter<MainViewSample>::OnStop();
RootView::GetInstance()->ClearOnKeyActListener();
- if (keyActListenr != nullptr)
+ if (keyActListener_ != nullptr)
{
- delete keyActListenr;
- keyActListenr = nullptr;
+ delete keyActListener_;
+ keyActListener_ = nullptr;
}
}
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;
void MainPresenterSample::SetCircleProgress()
{
- PlayersView *playersView = PlayersView::GetInstance();
+ PlayersView *playersView = dynamic_cast<PlayersView *>(view_->GetViewById(MUSIC_PLAYER));
if (playersView == nullptr)
{
return;
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);
}
}
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
};
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
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;
delete MessageLable;
MessageLable = nullptr;
}
- if (Messagelist != nullptr)
- {
- delete Messagelist;
- Messagelist = nullptr;
- }
- if (list1adapter_ != nullptr)
- {
- delete list1adapter_;
- list1adapter_ = nullptr;
- }
/* -------------------------------------------------------------------------- */
if (compassControlView != nullptr)
{
delete mainClockView;
mainClockView = nullptr;
}
- if (dialView != nullptr)
- {
- delete dialView;
- dialView = nullptr;
- }
if (bloodView != nullptr)
{
// bloodView->RemoveAll();
mainSwipeGroup->SetLoopState(true);
mainSwipeGroup->EnableScreenCap(true);
mainSwipeGroup->RegisterSwipeCallback(callback);
- // 卡片切换
- mainSwipeGroup->SetHorCurrentPage(mainClockView->GetViewIndex());
+ SwitchToClockPage();
SetContainerView(mainSwipeGroup);
}
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);
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]);
}
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");
}
return traingView;
}
-
// 主界面天气卡片
UICardPage *MainViewSample::InitWeatherPage(void)
{
}
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;
return false;
}
}
-
- void MainViewSample::SetDragFg(bool continFg)
- {
- continuDragFg = continFg;
- }
-
- bool MainViewSample::GetDragFg(void)
- {
- return continuDragFg;
- }
}
+/***
+ * @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");
}
+/***
+ * @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"
return &PresenterTask;
}
-void PresenterTask::SetModelListenr(ModelListenerSample* listener)
+void PresenterTask::SetModelListener(ModelListenerSample* listener)
{
taskListener = listener;
}
--- /dev/null
+/*
+ * 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
--- /dev/null
+/*
+ * 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
--- /dev/null
+/*
+ * 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
--- /dev/null
+/*
+ * 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;
+}
+}
--- /dev/null
+/*
+ * 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
--- /dev/null
+/*
+ * 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_);
+ }
+}
+}
--- /dev/null
+/*
+ * 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;
+}
+}
--- /dev/null
+/*
+ * 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_);
+ }
+}
+}
--- /dev/null
+/*
+ * 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;
+}
+}
--- /dev/null
+/*
+ * 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
--- /dev/null
+/*
+ * 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
--- /dev/null
+/*
+ * 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
--- /dev/null
+/*
+ * Copyright (c) @CompanyNameMagicTag. 2023. All rights reserved.
+ */
+
+#include "DialStaticImgView.h"
+
+namespace OHOS {
+DialStaticImgView::DialStaticImgView()
+{
+ SetAutoEnable(true);
+}
+
+DialStaticImgView::~DialStaticImgView() {}
+}
\ No newline at end of file
--- /dev/null
+/*
+ * 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_;
+}
+}
--- /dev/null
+#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();
+ }
+ }
+}
+}
--- /dev/null
+/*
+ * 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");
+}
+}
--- /dev/null
+/*\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
--- /dev/null
+/*\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
--- /dev/null
+/*\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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
-/*
- * 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
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) {
#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 {
}
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) {}
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);
}
}
-/*
- * 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
-/***
- * @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
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;
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
#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" {
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,
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()
{
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);
}
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;
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
+++ /dev/null
-/*
-* 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
+
/*
* Copyright (c) CompanyNameMagicTag 2023. All rights reserved.
* Description: DialBaseModel
#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
return playersView;
}
+
void MainViewSample::SetPage(int16_t page)
{
if (mainSwipeGroup != nullptr) {