#include "notification_manager.h"\r
#include "wearable_log.h"\r
#include "UiConfig.h"\r
-#include "AlarmPopUpPresenter.h"\r
+#include "alarm/include/AlarmPopUpPresenter.h"\r
#include "components/ui_image_view.h"\r
-#include "components/ui_label.h"\r
-\r
-namespace OHOS {\r
-static constexpr const char* RING_AGAIN = "响铃将在十分钟后再次响起";\r
-constexpr int32_t NOTIFY_THREE_SECONDS = 3000;\r
-constexpr int32_t NOTIFY_ONE_SECOND = 1000;\r
-constexpr int32_t NOTIFY_THIRTY_SECONDS = 30000;\r
-constexpr int32_t NOTIFY_ONE_MINUTE = 60000;\r
-constexpr int32_t NOTOFY_NO_OPERATE_TIME = 35000;\r
-GraphicTimer* g_notifyStopHandle = nullptr; // timer of close view and alarm ring view\r
-GraphicTimer* g_alarmRing = nullptr; // timer of alarm view\r
-\r
-UIViewGroup* g_alarmView = nullptr;\r
-UIViewGroup* g_closeView = nullptr;\r
-UIViewGroup* g_ringView = nullptr;\r
-UIImageView* g_imageClose = nullptr;\r
-UIImageView* g_imageRing = nullptr;\r
-UIImageView* g_imageDelete = nullptr;\r
-UIImageView* g_imageClock = nullptr;\r
-UILabel* g_closeLable = nullptr;\r
-UILabel* g_ringLable = nullptr;\r
-UILabel* g_mainLable = nullptr;\r
-UIDigitalClock* g_dClock = nullptr;\r
-\r
-// alarm close view\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
-// alarm main view\r
-constexpr int16_t CONTAINER_X = 0;\r
-constexpr int16_t CONTAINER_Y = 0;\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
-\r
-// alarm delay view\r
-constexpr int16_t SET_ZERO = 0;\r
-constexpr int16_t SET_SRC = 150;\r
-constexpr int16_t DELAY_IMAGE_X = 150;\r
-constexpr int16_t DELAY_IMAGE_Y = 140;\r
-constexpr int16_t DELAY_LABEL_X = 80;\r
-constexpr int16_t DELAY_LABEL_Y = 300;\r
-constexpr int16_t DELAY_LABEL_LENGTH = 350;\r
-constexpr int16_t DELAY_LABEL_HEIGHT = 35;\r
-constexpr int16_t DELAY_LABEL_FONT = 25;\r
-\r
-void StopNotifyCallback(void* data)\r
+#include "components/ui_label_ext.h"\r
+#include "components/ui_label_button_ext.h"\r
+#include "components/ui_digital_clock.h"\r
+#include "time.h"\r
+#include "cmsis_os2.h"\r
+#include "cmsis_os.h"\r
+#include <service/graphic_service.h>\r
+#include "ConfigModel.h"\r
+#include <custom_runtime.h>\r
+#include <custom_utils.h>\r
+#include <custom_save_runtime.h>\r
+#include "alarm_notification.h"\r
+#include "vibrator/service/vibrator_service.h"\r
+#include "ui_resource_string.h"\r
+#include "findwatch_notification.h"\r
+\r
+namespace OHOS\r
{\r
- (void)data;\r
- NotificationManager::GetInstance()->StopNotify();\r
-}\r
+ constexpr int32_t NOTIFY_THREE_SECONDS = 3000;\r
+ constexpr int32_t NOTIFY_ONE_SECOND = 1000;\r
+ constexpr int32_t NOTIFY_THIRTY_SECONDS = 30 * 1000; // 30秒\r
+ constexpr int32_t NOTIFY_ONE_MINUTE = 60 * 1000;\r
+ static int popalarm_time = 40;\r
+ constexpr int32_t NOTOFY_NO_OPERATE_TIME = 30 * 1000; // 无操作30s超时时间\r
+ osTimerId_t g_notifyStopHandle = nullptr; // timer of close view and alarm ring view\r
+ osTimerId_t g_alarmRing = nullptr; // timer of alarm view\r
+\r
+ UIViewGroup *g_alarmView = nullptr;\r
+ UIViewGroup *g_closeView = nullptr;\r
+ UIViewGroup *g_ringView = nullptr;\r
+ UIImageView *g_imageClose = nullptr;\r
+ UIImageView *g_imageRing = nullptr;\r
+ UIImageView *g_imageDelete = nullptr;\r
+ UILabelButtonExt *g_StopBtn = nullptr;\r
+ UIImageView *g_ClockPrompt = nullptr;\r
+ UIImageView *g_imageClock = nullptr;\r
+ UILabel *g_closeLable = nullptr;\r
+ UILabel *g_ringLable = nullptr;\r
+ UILabelExt *g_mainLable = nullptr;\r
+ UILabelExt *g_popTime = nullptr;\r
+ UIDigitalClock *g_dClock = nullptr;\r
+\r
+ // alarm close view\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
+ // alarm main view\r
+ constexpr int16_t CONTAINER_X = 0;\r
+ constexpr int16_t CONTAINER_Y = 0;\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
+\r
+ // alarm delay view\r
+ constexpr int16_t SET_ZERO = 0;\r
+ constexpr int16_t SET_SRC = 150;\r
+ constexpr int16_t DELAY_IMAGE_X = 150;\r
+ constexpr int16_t DELAY_IMAGE_Y = 140;\r
+ constexpr int16_t DELAY_LABEL_X = 80;\r
+ constexpr int16_t DELAY_LABEL_Y = 300;\r
+ constexpr int16_t DELAY_LABEL_LENGTH = 350;\r
+ constexpr int16_t DELAY_LABEL_HEIGHT = 35;\r
+ constexpr int16_t DELAY_LABEL_FONT = 25;\r
+\r
+ uint8_t AlarmViewEventListener::pre_screen_status = 0;//屏幕之前的状态\r
+ static OHOS::RootView::OnKeyActListener *g_onKeyActListener = nullptr;\r
+\r
+ void StopNotifyCallback()\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "StopNotifyCallback");\r
+ NotificationManager::GetInstance()->StopNotify();\r
+ }\r
\r
-void NoOperateCallback(void* data)\r
-{\r
- (void)data;\r
- NotificationManager::GetInstance()->StopNotify();\r
-}\r
+ static void NoOperateCallbackProc(int data)\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NoOperateCallback");\r
+ popalarm_time--;\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NoOperateCallback popalarm_time = %d",popalarm_time);\r
+ if (popalarm_time <= 0)\r
+ {\r
+ NotificationManager::GetInstance()->StopNotify();\r
+ }\r
+ else\r
+ {\r
+ // if (true == ConfigModel::GetInstance()->GetDnotdisturb() || (uapi_sleep_mode_flag_get()))\r
+ // {\r
+ // return;\r
+ // }\r
+ if (g_alarmView)\r
+ {\r
+ ui_api_vibrate_once_func();\r
+ }\r
+ }\r
+ }\r
\r
-void StartAlarmTimer(AlarmTimerType type, int32_t interval)\r
-{\r
- uint32_t tick;\r
- bool retTimer;\r
- if (type >= AlarmTimerType::NOTIFY_ALARM_UNKNOWN) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "StartAlarmTimer type:%d invalid!!", type);\r
- return;\r
+ static void NoOperateCallback(int data)\r
+ {\r
+ GraphicService::GetInstance()->PostGraphicEvent(std::bind(NoOperateCallbackProc, data));\r
}\r
- switch (type) {\r
+\r
+ /*\r
+ * @brief 启动特定类型的闹钟定时器\r
+ * @param 1 闹钟定时器的类型\r
+ * @param 2 时间间隔,以毫秒为单位\r
+ */\r
+ void StartAlarmTimer(AlarmTimerType type, int32_t interval)\r
+ {\r
+ uint32_t tick;\r
+ osStatus_t retTimer;\r
+ // 1.检查传入的闹钟类型是否有效\r
+ if (type >= AlarmTimerType::NOTIFY_ALARM_UNKNOWN)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "StartAlarmTimer type:%d invalid!!", type);\r
+ return;\r
+ }\r
+ switch (type)\r
+ {\r
case AlarmTimerType::NOTIFY_ALARM_CLOSE:\r
case AlarmTimerType::NOTIFY_ALARM_DELAY:\r
- tick = GetOSTick(interval);\r
- g_notifyStopHandle = new GraphicTimer(tick, StopNotifyCallback, nullptr, true);\r
- retTimer = g_notifyStopHandle->Start();\r
- if (!retTimer && g_notifyStopHandle != nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,\r
- "StartAlarmTimer osTimerStart failed, type= %d!!", type);\r
- delete g_notifyStopHandle;\r
- g_notifyStopHandle = nullptr;\r
- return;\r
+ if (g_notifyStopHandle == nullptr)\r
+ {\r
+ g_notifyStopHandle = osTimerNew((osTimerFunc_t)StopNotifyCallback, osTimerPeriodic, nullptr, nullptr);\r
+ tick = osMs2Tick(interval);\r
+ retTimer = osTimerStart(g_notifyStopHandle, tick);\r
+ if (retTimer != osOK && g_notifyStopHandle != nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "StartAlarmTimer osTimerStart failed, type= %d ret = %lx!!", type, retTimer);\r
+ osTimerDelete(g_notifyStopHandle);\r
+ g_notifyStopHandle = nullptr;\r
+ return;\r
+ }\r
}\r
break;\r
case AlarmTimerType::NOTIFY_ALARM_RING:\r
- tick = GetOSTick(interval);\r
- g_alarmRing = new GraphicTimer(tick, NoOperateCallback, nullptr, true);\r
- retTimer = g_alarmRing->Start();\r
- if (!retTimer && g_alarmRing != nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,\r
- "StartAlarmTimer osTimerStart failed, type= %d!!", type);\r
- delete g_alarmRing;\r
- g_alarmRing = nullptr;\r
- return;\r
+ if (g_alarmRing == nullptr)\r
+ {\r
+ g_alarmRing = osTimerNew((osTimerFunc_t)NoOperateCallback, osTimerPeriodic, nullptr, nullptr);\r
+ tick = osMs2Tick(interval);\r
+ retTimer = osTimerStart(g_alarmRing, tick);\r
+ if (retTimer != osOK && g_alarmRing != nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "StartAlarmTimer osTimerStart failed, type= %d ret = %lx!!", type, retTimer);\r
+ osTimerDelete(g_alarmRing);\r
+ g_alarmRing = nullptr;\r
+ return;\r
+ }\r
}\r
break;\r
default:\r
break;\r
+ }\r
}\r
-}\r
\r
-void DisableAlarmTimer(AlarmTimerType type)\r
-{\r
- if (type >= AlarmTimerType::NOTIFY_ALARM_UNKNOWN) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisableAlarmTimer type:%d invalid!!", type);\r
- return;\r
- }\r
- switch (type) {\r
+ /*\r
+ * @brief 取消特定类型的闹钟定时器\r
+ * @param 闹钟定时器的类型\r
+ */\r
+ void DisableAlarmTimer(AlarmTimerType type)\r
+ {\r
+ if (type >= AlarmTimerType::NOTIFY_ALARM_UNKNOWN)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisableAlarmTimer type:%d invalid!!", type);\r
+ return;\r
+ }\r
+ osStatus_t ret;\r
+ switch (type)\r
+ {\r
case AlarmTimerType::NOTIFY_ALARM_CLOSE:\r
case AlarmTimerType::NOTIFY_ALARM_DELAY:\r
- if (g_notifyStopHandle != nullptr) {\r
- delete g_notifyStopHandle;\r
+ if (g_notifyStopHandle != nullptr)\r
+ {\r
+ osTimerStop(g_notifyStopHandle);\r
+ ret = osTimerDelete(g_notifyStopHandle);\r
+ if (ret != osOK)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisableAlarmTimer failed, type= %d ret = %lx!", type, ret);\r
+ return;\r
+ }\r
g_notifyStopHandle = nullptr;\r
}\r
break;\r
case AlarmTimerType::NOTIFY_ALARM_RING:\r
- if (g_alarmRing != nullptr) {\r
- delete g_alarmRing;\r
+ if (g_alarmRing != nullptr)\r
+ {\r
+ osTimerStop(g_alarmRing);\r
+ ret = osTimerDelete(g_alarmRing);\r
+ if (ret != osOK)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisableAlarmTimer failed, type= %d ret = %lx!", type, ret);\r
+ return;\r
+ }\r
g_alarmRing = nullptr;\r
+ popalarm_time = 40;\r
}\r
break;\r
default:\r
break;\r
+ }\r
}\r
-}\r
\r
-UIViewGroup *CreateAlarmCloseView()\r
-{\r
- g_closeView = new UIViewGroup();\r
- if (g_closeView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmCloseView g_closeView null!");\r
- return nullptr;\r
- }\r
- g_closeView->SetPosition(MAX_SET_ZERO_LEN, MAX_SET_ZERO_LEN);\r
- g_closeView->SetWidth(Screen::GetInstance().GetWidth());\r
- g_closeView->SetHeight(Screen::GetInstance().GetHeight());\r
- g_imageClose = new UIImageView();\r
- if (g_imageClose == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmCloseView g_imageClose null!");\r
- delete g_closeView;\r
- g_closeView = nullptr;\r
- return nullptr;\r
+ UIViewGroup *CreateAlarmCloseView()\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CreateAlarmCloseView");\r
+ g_closeView = new UIViewGroup();\r
+ if (g_closeView == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmCloseView g_closeView null!");\r
+ return nullptr;\r
+ }\r
+ g_closeView->SetPosition(MAX_SET_ZERO_LEN, MAX_SET_ZERO_LEN);\r
+ g_closeView->SetWidth(Screen::GetInstance().GetWidth());\r
+ g_closeView->SetHeight(Screen::GetInstance().GetHeight());\r
+ g_imageClose = new UIImageView();\r
+ if (g_imageClose == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmCloseView g_imageClose null!");\r
+ delete g_closeView;\r
+ g_closeView = nullptr;\r
+ return nullptr;\r
+ }\r
+ g_imageClose->SetPosition(MAX_IMAGE_X_LEN, MAX_IMAGE_Y_LEN);\r
+ g_imageClose->SetWidth(MAX_SET_SRC_LEN);\r
+ g_imageClose->SetHeight(MAX_SET_SRC_LEN);\r
+ g_imageClose->SetSrc(ALARM_CLOCK_CLOSE_ADD_PATH);\r
+ g_imageClose->SetTouchable(true);\r
+ g_closeView->Add(g_imageClose);\r
+\r
+ g_closeLable = new UILabel();\r
+ if (g_closeLable == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmCloseView g_closeLable null!");\r
+ delete g_closeView;\r
+ g_closeView = nullptr;\r
+ delete g_imageClose;\r
+ g_imageClose = nullptr;\r
+ return nullptr;\r
+ }\r
+ g_closeLable->SetPosition(MAX_LABEL_X_LEN, MAX_LABEL_Y_LEN, MAX_LABEL_LENGTH_LEN, MAX_LABEL_HEIGHT_LEN);\r
+ g_closeLable->SetFont(DEFAULT_VECTOR_FONT_FILENAME, MAX_LABEL_FONT_LEN);\r
+ g_closeLable->SetText("CLOSE");\r
+ g_closeView->Add(g_closeLable);\r
+ g_closeView->SetViewId(ALARM_VIEW_CLOSE);\r
+ UIView::OnDragListener *listener = static_cast<UIView::OnDragListener *>(AlarmViewEventListener::GetInstance());\r
+ g_closeView->SetOnDragListener(listener);\r
+ g_closeView->SetDraggable(true);\r
+ g_closeView->SetTouchable(true);\r
+ NotificationManager::GetInstance()->RegisterNotifyCleanupFunction(FreeAlarmCloseView);\r
+ return g_closeView;\r
}\r
- g_imageClose->SetPosition(MAX_IMAGE_X_LEN, MAX_IMAGE_Y_LEN);\r
- g_imageClose->SetWidth(MAX_SET_SRC_LEN);\r
- g_imageClose->SetHeight(MAX_SET_SRC_LEN);\r
- g_imageClose->SetSrc(ALARM_CLOCK_CLOSE_ADD_PATH);\r
- g_imageClose->SetTouchable(true);\r
- g_closeView->Add(g_imageClose);\r
\r
- g_closeLable = new UILabel();\r
- if (g_closeLable == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmCloseView g_closeLable null!");\r
- delete g_closeView;\r
- g_closeView = nullptr;\r
- delete g_imageClose;\r
- g_imageClose = nullptr;\r
- return nullptr;\r
+ void FreeAlarmCloseView(void)\r
+ {\r
+ if (g_closeView != nullptr)\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FreeAlarmCloseView");\r
+ DisableAlarmTimer(AlarmTimerType::NOTIFY_ALARM_CLOSE);\r
+ g_closeView->RemoveAll();\r
+ delete g_imageClose;\r
+ g_imageClose = nullptr;\r
+ delete g_closeLable;\r
+ g_closeLable = nullptr;\r
+ RootView::GetInstance()->Remove(g_closeView);\r
+ delete g_closeView;\r
+ g_closeView = nullptr;\r
+ }\r
}\r
- g_closeLable->SetPosition(MAX_LABEL_X_LEN, MAX_LABEL_Y_LEN, MAX_LABEL_LENGTH_LEN, MAX_LABEL_HEIGHT_LEN);\r
- g_closeLable->SetFont(DEFAULT_VECTOR_FONT_FILENAME, MAX_LABEL_FONT_LEN);\r
- g_closeLable->SetText("CLOSE");\r
- g_closeView->Add(g_closeLable);\r
- g_closeView->SetViewId(ALARM_VIEW_CLOSE);\r
- UIView::OnDragListener *listener = static_cast<UIView::OnDragListener*>(AlarmViewEventListener::GetInstance());\r
- g_closeView->SetOnDragListener(listener);\r
- g_closeView->SetDraggable(true);\r
- g_closeView->SetTouchable(true);\r
- NotificationManager::GetInstance()->RegisterNotifyCleanupFunction(FreeAlarmCloseView);\r
- return g_closeView;\r
-}\r
\r
-void FreeAlarmCloseView(void)\r
-{\r
- if (g_closeView != nullptr) {\r
- DisableAlarmTimer(AlarmTimerType::NOTIFY_ALARM_CLOSE);\r
- g_closeView->RemoveAll();\r
- delete g_imageClose;\r
- g_imageClose = nullptr;\r
- delete g_closeLable;\r
- g_closeLable = nullptr;\r
- RootView::GetInstance()->Remove(g_closeView);\r
- delete g_closeView;\r
- g_closeView = nullptr;\r
+ /*创建一个响铃闹钟视图*/\r
+ UIViewGroup *CreateAlarmRingView()\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CreateAlarmRingView");\r
+ if (g_ringView == nullptr)\r
+ {\r
+ g_ringView = new UIViewGroup();\r
+ if (g_ringView == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmRingView g_ringView null!");\r
+ return nullptr;\r
+ }\r
+ g_ringView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
+ g_ringView->SetViewId(ALARM_VIEW_DELAY);\r
+ UIView::OnDragListener *listener = static_cast<UIView::OnDragListener *>(AlarmViewEventListener::GetInstance());\r
+ if (listener == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmViewEventListener::GetInstance fail!!");\r
+ return nullptr;\r
+ }\r
+ g_ringView->SetOnDragListener(listener);\r
+ g_ringView->SetDraggable(true);\r
+ g_ringView->SetTouchable(true);\r
+ /* -------------------------------------------------------------------------- */\r
+ if (g_imageRing == nullptr)\r
+ {\r
+ g_imageRing = new UIImageView();\r
+ if (g_imageRing == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmRingView g_imageRing null!");\r
+ return nullptr;\r
+ }\r
+ }\r
+ g_imageRing->SetPosition(DELAY_IMAGE_X, DELAY_IMAGE_Y);\r
+ g_imageRing->SetWidth(SET_SRC);\r
+ g_imageRing->SetHeight(SET_SRC);\r
+ g_imageRing->SetSrc(ALARM_CLOCK_POP_ADD_PATH);\r
+ /* -------------------------------------------------------------------------- */\r
+ if (g_ringLable == nullptr)\r
+ {\r
+ g_ringLable = new UILabel();\r
+ if (g_ringLable == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmRingView::g_ringLable null!");\r
+ return nullptr;\r
+ }\r
+ }\r
+ g_ringLable->SetPosition(DELAY_LABEL_X, DELAY_LABEL_Y, DELAY_LABEL_LENGTH, DELAY_LABEL_HEIGHT);\r
+ g_ringLable->SetFont(DEFAULT_VECTOR_FONT_FILENAME, DELAY_LABEL_FONT);\r
+ g_ringLable->SetText("响铃将在十分钟后再次响起");\r
+ /* ----------------------------------- Add ---------------------------------- */\r
+ g_ringView->Add(g_imageRing);\r
+ g_ringView->Add(g_ringLable);\r
+ }\r
+ NotificationManager::GetInstance()->RegisterNotifyCleanupFunction(FreeAlarmRingView);\r
+ return g_ringView;\r
}\r
-}\r
\r
-UIViewGroup *CreateAlarmRingView()\r
-{\r
- g_ringView = new UIViewGroup();\r
- if (g_ringView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmRingView g_ringView null!");\r
- return nullptr;\r
- }\r
- g_ringView->SetPosition(SET_ZERO, SET_ZERO);\r
- g_ringView->SetWidth(Screen::GetInstance().GetWidth());\r
- g_ringView->SetHeight(Screen::GetInstance().GetHeight());\r
- g_imageRing = new UIImageView();\r
- if (g_imageRing == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmRingView g_imageRing null!");\r
- delete g_ringView;\r
- g_ringView = nullptr;\r
- return nullptr;\r
- }\r
- g_imageRing->SetPosition(DELAY_IMAGE_X, DELAY_IMAGE_Y);\r
- g_imageRing->SetWidth(SET_SRC);\r
- g_imageRing->SetHeight(SET_SRC);\r
- g_imageRing->SetSrc(ALARM_CLOCK_POP_ADD_PATH);\r
- g_ringView->Add(g_imageRing);\r
- g_ringLable = new UILabel();\r
- if (g_ringLable == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmRingView::g_ringLable null!");\r
- delete g_ringView;\r
- g_ringView = nullptr;\r
- delete g_imageRing;\r
- return nullptr;\r
+ // 析构一个响铃闹钟视图\r
+ void FreeAlarmRingView(void)\r
+ {\r
+ if (g_ringView != nullptr)\r
+ {\r
+ DisableAlarmTimer(AlarmTimerType::NOTIFY_ALARM_DELAY);\r
+ g_ringView->RemoveAll();\r
+ if (g_imageRing)\r
+ {\r
+ delete g_imageRing;\r
+ g_imageRing = nullptr;\r
+ }\r
+ if (g_ringLable)\r
+ {\r
+ delete g_ringLable;\r
+ g_ringLable = nullptr;\r
+ }\r
+ RootView::GetInstance()->Remove(g_ringView);\r
+ delete g_ringView;\r
+ g_ringView = nullptr;\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FreeAlarmRingView over!!");\r
+ }\r
}\r
- g_ringLable->SetPosition(DELAY_LABEL_X, DELAY_LABEL_Y, DELAY_LABEL_LENGTH, DELAY_LABEL_HEIGHT);\r
- g_ringLable->SetFont(DEFAULT_VECTOR_FONT_FILENAME, DELAY_LABEL_FONT);\r
- g_ringLable->SetText(RING_AGAIN);\r
- g_ringView->Add(g_ringLable);\r
- g_ringView->SetViewId(ALARM_VIEW_DELAY);\r
- UIView::OnDragListener *listener = static_cast<UIView::OnDragListener*>(AlarmViewEventListener::GetInstance());\r
- g_ringView->SetOnDragListener(listener);\r
- g_ringView->SetDraggable(true);\r
- g_ringView->SetTouchable(true);\r
- NotificationManager::GetInstance()->RegisterNotifyCleanupFunction(FreeAlarmRingView);\r
- return g_ringView;\r
-}\r
\r
-void FreeAlarmRingView(void)\r
-{\r
- if (g_ringView != nullptr) {\r
- DisableAlarmTimer(AlarmTimerType::NOTIFY_ALARM_DELAY);\r
- g_ringView->RemoveAll();\r
- delete g_imageRing;\r
- g_imageRing = nullptr;\r
- delete g_ringLable;\r
- g_ringLable = nullptr;\r
- RootView::GetInstance()->Remove(g_ringView);\r
- delete g_ringView;\r
- g_ringView = nullptr;\r
+ // 创建一个闹钟弹窗视图\r
+ UIViewGroup *CreateAlarmView(void)\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CreateAlarmView");\r
+ AlarmClockModel::GetInstance()->AlarmGetClockNum();\r
+ if (g_alarmView == nullptr)\r
+ {\r
+ g_alarmView = new UIViewGroup();\r
+ if (g_alarmView == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmView g_alarmView null!");\r
+ return nullptr;\r
+ }\r
+ g_alarmView->SetPosition(CONTAINER_X, CONTAINER_Y, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
+ g_alarmView->SetViewId(ALARM_VIEW_POPUP);\r
+ g_alarmView->SetDraggable(true);\r
+ g_alarmView->SetTouchable(true);\r
+ UIView::OnDragListener *listener = static_cast<UIView::OnDragListener *>(AlarmViewEventListener::GetInstance());\r
+ if (nullptr == listener)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmViewEventListener::GetInstance fail!!");\r
+ return nullptr;\r
+ }\r
+ g_alarmView->SetOnDragListener(listener);\r
+ /* -------------------------------------------------------------------------- */\r
+ if (g_mainLable == nullptr)\r
+ {\r
+ g_mainLable = new UILabelExt();\r
+ if (g_mainLable == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmView g_mainLable is nullptr");\r
+ return nullptr;\r
+ }\r
+ }\r
+ g_mainLable->SetPosition(83, 50, 300, 35);\r
+ g_mainLable->SetTextId(STR_ALARM); // 闹钟\r
+ g_mainLable->SetStyle(STYLE_TEXT_FONT, 30);\r
+ g_mainLable->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+ g_mainLable->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ g_mainLable->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);\r
+ g_mainLable->SetRollSpeed(23);\r
+ g_mainLable->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+ g_alarmView->Add(g_mainLable);\r
+ /* -------------------------------------------------------------------------- */\r
+ if (g_ClockPrompt == nullptr)\r
+ {\r
+ g_ClockPrompt = new UIImageView();\r
+ if (g_ClockPrompt == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmView g_ClockPrompt is nullptr");\r
+ return nullptr;\r
+ }\r
+ }\r
+ g_ClockPrompt->SetPosition(184, 129, 100, 100);\r
+ g_ClockPrompt->SetSrc("/user/res/Alarm/alarm_prompt.bin");\r
+ g_alarmView->Add(g_ClockPrompt);\r
+ /* -------------------------------------------------------------------------- */\r
+ struct tm localTime;\r
+ int16 thisHour;\r
+ int16 thisMin;\r
+ if (g_dClock == nullptr)\r
+ {\r
+ g_dClock = new UIDigitalClock();\r
+ if (g_dClock == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmViewLabel g_dClock is nullptr");\r
+ return nullptr;\r
+ }\r
+ }\r
+ g_dClock->SetPosition((g_alarmView->GetWidth() - 200) / 2, 236, 200, 70);\r
+ g_dClock->SetStyle(STYLE_TEXT_FONT, 60);\r
+ g_dClock->SetStyle(STYLE_LINE_HEIGHT, 69);\r
+ g_dClock->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 60);\r
+ time_t seconds = time(nullptr);\r
+ if (localtime_r(&seconds, &localTime) == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmViewLabel get localtime error!");\r
+ return nullptr;\r
+ }\r
+ AlarmClockModel::GetInstance()->GetPopTimeData(&thisHour, &thisMin);\r
+ g_dClock->SetDisplayMode(UIDigitalClock::DISPLAY_24_HOUR_NO_SECONDS);\r
+ g_dClock->SetTime24Hour(thisHour, thisMin, 0);\r
+ g_dClock->SetVisible(false);\r
+ g_alarmView->Add(g_dClock);\r
+ /* -------------------------------- g_popTime ------------------------------- */\r
+ if (g_popTime == nullptr)\r
+ {\r
+ g_popTime = new UILabelExt();\r
+ if (g_popTime == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmView g_popTime is nullptr");\r
+ return nullptr;\r
+ }\r
+ }\r
+ g_popTime->SetPosition(83, 236, 200, 70);\r
+ // std::string poptime = std::to_string(thisHour) + ":" + std::to_string(thisMin);\r
+ char poptime[12] = {0};\r
+ sprintf(poptime, "%02d:%02d", thisHour, thisMin);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "poptime = %s",poptime);\r
+ g_popTime->SetText(poptime);\r
+ g_popTime->SetStyle(STYLE_TEXT_FONT, 60);\r
+ g_popTime->SetStyle(STYLE_LINE_HEIGHT, 70);\r
+ g_popTime->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 60);\r
+ g_popTime->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+ g_popTime->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+ g_alarmView->Add(g_popTime);\r
+ g_popTime->SetPosition((g_alarmView->GetWidth() - g_popTime->GetTextWidth()) / 2, 236);\r
+ /* -------------------------------------------------------------------------- */\r
+ if (g_StopBtn == nullptr)\r
+ {\r
+ g_StopBtn = new UILabelButtonExt();\r
+ if (g_StopBtn == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmView g_StopBtn is nullptr");\r
+ return nullptr;\r
+ }\r
+ }\r
+ g_StopBtn->SetPosition(0, 366, 466, 100);\r
+ g_StopBtn->SetViewId(ALARM_IMAGE_STOP);\r
+ g_StopBtn->SetTextId(STR_STOP); // 停止\r
+ g_StopBtn->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ g_StopBtn->SetTextColor(Color::GetColorFromRGBA(0xff, 0x5a, 0x36, 0xff));\r
+ g_StopBtn->SetImageSrc(PNG_BUTTON_466x100_IMAGE, PNG_BUTTON_466x100_IMAGE);\r
+ g_StopBtn->SetStyleForState(STYLE_BACKGROUND_COLOR, 0x00, UIButton::PRESSED);\r
+ g_StopBtn->SetTouchable(true);\r
+ UIView::OnClickListener *closeListener = static_cast<UIView::OnClickListener *>(AlarmViewEventListener::GetInstance());\r
+ if (nullptr == closeListener)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmViewEventListener::GetInstance fail!!");\r
+ return nullptr;\r
+ }\r
+ g_StopBtn->SetOnClickListener(closeListener);\r
+ g_alarmView->Add(g_StopBtn);\r
+ /* -------------------------------------------------------------------------- */\r
+ StartAlarmTimer(AlarmTimerType::NOTIFY_ALARM_RING, NOTIFY_ONE_SECOND);\r
+\r
+ AlarmViewEventListener::GetInstance()->PopAlarmRing(); //闹钟响铃\r
+ g_onKeyActListener = RootView::GetInstance()->GetOnKeyActListener();\r
+ RootView::GetInstance()->SetOnKeyActListener(AlarmViewEventListener::GetInstance());\r
+\r
+ AlarmViewEventListener::pre_screen_status = uapi_dev_runtime_get_screen_always_on_status();//获取闹钟弹窗之前是否是长亮屏状态\r
+ if(!AlarmViewEventListener::pre_screen_status)\r
+ {\r
+ ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON);\r
+ }\r
+ }\r
+ NotificationManager::GetInstance()->RegisterNotifyCleanupFunction(FreeAlarmView);\r
+ return g_alarmView;\r
}\r
-}\r
-\r
-static bool CreateAlarmViewImage(void)\r
-{\r
- g_imageDelete = new UIImageView();\r
- if (g_imageDelete == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "showAlarmNotify g_imageDelete null!");\r
- return false;\r
+ // 释放闹钟视图\r
+ void FreeAlarmView(void)\r
+ {\r
+ if (g_alarmView != nullptr)\r
+ {\r
+ AlarmViewEventListener::GetInstance()->CancelAlarmRing();//取消闹钟响铃\r
+ g_alarmView->RemoveAll();\r
+ if (g_mainLable != nullptr)\r
+ {\r
+ delete g_mainLable;\r
+ g_mainLable = nullptr;\r
+ }\r
+ if (g_dClock != nullptr)\r
+ {\r
+ delete g_dClock;\r
+ g_dClock = nullptr;\r
+ }\r
+ if (g_popTime != nullptr)\r
+ {\r
+ delete g_popTime;\r
+ g_popTime = nullptr;\r
+ }\r
+ if (g_ClockPrompt != nullptr)\r
+ {\r
+ delete g_ClockPrompt;\r
+ g_ClockPrompt = nullptr;\r
+ }\r
+ if (g_StopBtn != nullptr)\r
+ {\r
+ delete g_StopBtn;\r
+ g_StopBtn = nullptr;\r
+ }\r
+ RootView::GetInstance()->SetOnKeyActListener(g_onKeyActListener);\r
+ RootView::GetInstance()->Remove(g_alarmView);\r
+ delete g_alarmView; \r
+ g_alarmView = nullptr;\r
+ if(!AlarmViewEventListener::pre_screen_status) //如果闹钟弹窗之前不是长亮屏状态,就取消闹钟弹窗设置的常亮屏\r
+ {\r
+ ScreenAlwaysOnCtr(CANCEL_SCREEN_ALWAYS_ON);\r
+ }\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FreeAlarmView over!!");\r
+ }\r
}\r
- g_imageDelete->SetPosition(IMAGE_DELETE_X, IMAGE_DELETE_Y);\r
- g_imageDelete->SetWidth(MAX_SET_SRC_LEN);\r
- g_imageDelete->SetHeight(MAX_SET_SRC_LEN);\r
- g_imageDelete->SetViewId(ALARM_IMAGE_DELETE);\r
- g_imageDelete->SetSrc(ALARM_DELETE_ADD_PATH);\r
- g_imageDelete->SetTouchable(true);\r
- UIView::OnClickListener *closeListener = static_cast<UIView::OnClickListener *>\\r
- (AlarmViewEventListener::GetInstance());\r
- g_imageDelete->SetOnClickListener(closeListener);\r
\r
- g_imageClock = new UIImageView();\r
- if (g_imageClock == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "showAlarmNotify g_imageClock null!");\r
- delete g_imageDelete;\r
- return false;\r
+ AlarmViewEventListener::AlarmViewEventListener()\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmViewEventListener :%p", this);\r
}\r
- g_imageClock->SetPosition(IMAGE_CLOCK_X, IMAGE_CLOCK_Y);\r
- g_imageClock->SetWidth(MAX_SET_SRC_LEN);\r
- g_imageClock->SetHeight(MAX_SET_SRC_LEN);\r
- g_imageClock->SetViewId(ALARM_IMAGE_CLOCK);\r
- g_imageClock->SetSrc(ALARM_CLOCK_ADD_PATH);\r
- g_imageClock->SetTouchable(true);\r
- g_imageClock->SetTouchable(true);\r
- UIView::OnClickListener *clockListener = static_cast<UIView::OnClickListener *>\\r
- (OHOS::AlarmViewEventListener::GetInstance());\r
- g_imageClock->SetOnClickListener(clockListener);\r
- return true;\r
-}\r
-\r
-static void FreeAlarmViewImage(void)\r
-{\r
- delete g_imageDelete;\r
- g_imageDelete = nullptr;\r
- delete g_imageClock;\r
- g_imageClock = nullptr;\r
-}\r
-\r
-static bool CreateAlarmViewLabel(void)\r
-{\r
- struct tm localTime;\r
- int16 thisHour;\r
- int16 thisMin;\r
\r
- g_mainLable = new UILabel();\r
- if (g_mainLable == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmViewLabel g_mainLable is nullptr");\r
- return false;\r
+ AlarmViewEventListener::~AlarmViewEventListener()\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "~AlarmViewEventListener");\r
}\r
- g_mainLable->SetPosition(LABEL_X, LABEL_Y, LABEL_WIDTH, LABEL_HEIGHT);\r
- g_mainLable->SetText("闹钟");\r
- g_mainLable->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABEL_FONT);\r
\r
- g_dClock = new UIDigitalClock();\r
- if (g_dClock == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmViewLabel g_dClock is nullptr");\r
- delete g_mainLable;\r
- return false;\r
+ AlarmViewEventListener *AlarmViewEventListener::GetInstance(void)\r
+ {\r
+ static AlarmViewEventListener alarmViewEventListener;\r
+ return &alarmViewEventListener;\r
}\r
- g_dClock->SetPosition(CLOCK_X, CLOCK_Y);\r
- g_dClock->Resize(DIGITAL_CLOCK_WIDTH, DIGITAL_CLOCK_HEIGHT);\r
- g_dClock->SetFont(DEFAULT_VECTOR_FONT_FILENAME, CLOCK_FONT);\r
- time_t seconds = time(nullptr);\r
- if (localtime_r(&seconds, &localTime) == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmViewLabel get localtime error!");\r
- delete g_mainLable;\r
- delete g_dClock;\r
- return false;\r
- }\r
- AlarmClockModel::GetInstance()->GetPopTimeData(&thisHour, &thisMin);\r
- g_dClock->SetDisplayMode(UIDigitalClock::DISPLAY_24_HOUR_NO_SECONDS);\r
- g_dClock->SetTime24Hour(thisHour, thisMin, 0);\r
- return true;\r
-}\r
-\r
-static void FreeAlarmViewLabel(void)\r
-{\r
- delete g_mainLable;\r
- g_mainLable = nullptr;\r
- delete g_dClock;\r
- g_dClock = nullptr;\r
-}\r
\r
-UIViewGroup* CreateAlarmView(void)\r
-{\r
- AlarmClockModel::GetInstance()->AlarmGetClockNum();\r
- g_alarmView = new UIViewGroup();\r
- if (g_alarmView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmView g_alarmView null!");\r
- return nullptr;\r
+ bool AlarmViewEventListener::OnDrag(UIView &view, const DragEvent &event)\r
+ {\r
+ return true;\r
}\r
- g_alarmView->SetPosition(CONTAINER_X, CONTAINER_Y,\r
- Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
- g_alarmView->SetViewId(ALARM_VIEW_POPUP);\r
\r
- if (!CreateAlarmViewLabel()) {\r
- delete g_alarmView;\r
- g_alarmView = nullptr;\r
- return nullptr;\r
+ bool AlarmViewEventListener::OnDragEnd(UIView &view, const DragEvent &event)\r
+ {\r
+ if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)\r
+ {\r
+ if (strcmp(view.GetViewId(), ALARM_VIEW_POPUP) == 0)\r
+ { \r
+ NotificationManager::GetInstance()->StopNotify();\r
+ }\r
+ }\r
+ return true;\r
}\r
\r
- if (!CreateAlarmViewImage()) {\r
- delete g_alarmView;\r
- g_alarmView = nullptr;\r
- FreeAlarmViewLabel();\r
- return nullptr;\r
+ bool AlarmViewEventListener::OnClick(UIView &view, const ClickEvent &event)\r
+ {\r
+ UNUSED(event);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlamNotify ClickListener %s", view.GetViewId());\r
+ if (strcmp(view.GetViewId(), ALARM_IMAGE_STOP) == 0) // 点击停止闹钟响铃\r
+ {\r
+ NotificationManager::GetInstance()->StopNotify();\r
+ }\r
+ return true;\r
}\r
- g_alarmView->Add(g_mainLable);\r
- g_alarmView->Add(g_dClock);\r
- g_alarmView->Add(g_imageDelete);\r
- g_alarmView->Add(g_imageClock);\r
\r
- g_alarmView->SetDraggable(true);\r
- g_alarmView->SetTouchable(true);\r
- UIView::OnDragListener *listener = static_cast<UIView::OnDragListener*>(AlarmViewEventListener::GetInstance());\r
- g_alarmView->SetOnDragListener(listener);\r
- StartAlarmTimer(AlarmTimerType::NOTIFY_ALARM_RING, NOTOFY_NO_OPERATE_TIME);\r
- NotificationManager::GetInstance()->RegisterNotifyCleanupFunction(FreeAlarmView);\r
- return g_alarmView;\r
-}\r
-void FreeAlarmView(void)\r
-{\r
- if (g_alarmView != nullptr) {\r
- DisableAlarmTimer(AlarmTimerType::NOTIFY_ALARM_RING);\r
- g_alarmView->RemoveAll();\r
- FreeAlarmViewLabel();\r
- FreeAlarmViewImage();\r
- RootView::GetInstance()->Remove(g_alarmView);\r
- delete g_alarmView;\r
- g_alarmView = nullptr;\r
+ void AlarmViewEventListener::PopAlarmRing()\r
+ {\r
+#ifdef SINGLE_USER_PARTITION\r
+ FindWatchViewEventListener::GetInstance().PopInterPlayMusic("/user/music/ring/alarm.mp3");//播放铃声\r
+#else\r
+ FindWatchViewEventListener::GetInstance().PopInterPlayMusic("/music/ring/alarm.mp3");//播放铃声\r
+#endif\r
+ //如果闹钟铃声播放成功,记录该事件\r
+ uapi_save_runtime_log(RUNTIME_LOG_RING_PLAY_START_ALARM);//TOOD*\r
}\r
-}\r
-\r
-AlarmViewEventListener::AlarmViewEventListener()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmViewEventListener :%p", this);\r
-}\r
\r
-AlarmViewEventListener::~AlarmViewEventListener()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "~AlarmViewEventListener");\r
-}\r
-\r
-AlarmViewEventListener *AlarmViewEventListener::GetInstance(void)\r
-{\r
- static AlarmViewEventListener alarmViewEventListener;\r
- return &alarmViewEventListener;\r
-}\r
-\r
-bool AlarmViewEventListener::OnDrag(UIView& view, const DragEvent& event)\r
-{\r
- return true;\r
-}\r
-\r
-bool AlarmViewEventListener::OnDragEnd(UIView& view, const DragEvent& event)\r
-{\r
- if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {\r
- if (strcmp(view.GetViewId(), ALARM_VIEW_POPUP) == 0) {\r
- DisableAlarmTimer(AlarmTimerType::NOTIFY_ALARM_RING);\r
- AlarmPopUpPresenter::GetInstance()->DelayAlarmRing();\r
- UIViewGroup* alarmRingView = CreateAlarmRingView();\r
- NotificationManager::GetInstance()->screenContainer_->SetVisible(false);\r
- RootView::GetInstance()->Add(alarmRingView);\r
- alarmRingView->SetVisible(true);\r
- StartAlarmTimer(AlarmTimerType::NOTIFY_ALARM_DELAY, NOTIFY_THREE_SECONDS);\r
- } else if (strcmp(view.GetViewId(), ALARM_VIEW_CLOSE) == 0 ||\r
- strcmp(view.GetViewId(), ALARM_VIEW_DELAY) == 0) {\r
- NotificationManager::GetInstance()->StopNotify();\r
- }\r
+ void AlarmViewEventListener::CancelAlarmRing()\r
+ {\r
+ DisableAlarmTimer(AlarmTimerType::NOTIFY_ALARM_RING);\r
+ FindWatchViewEventListener::GetInstance().PopInterCancelMusic();\r
+ AlarmClockModel::GetInstance()->CancelAlarmRing();\r
+ //如果闹钟铃声停止播放成功,记录该事件\r
+ uapi_save_runtime_log(RUNTIME_LOG_RING_PLAY_STOP_ALARM);//TOOD*\r
}\r
- return true;\r
-}\r
\r
-bool AlarmViewEventListener::OnClick(UIView& view, const ClickEvent& event)\r
-{\r
- UNUSED(event);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlamNotify ClickListener %s", view.GetViewId());\r
- if (strcmp(view.GetViewId(), ALARM_IMAGE_DELETE) == 0) {\r
- DisableAlarmTimer(AlarmTimerType::NOTIFY_ALARM_RING);\r
- AlarmPopUpPresenter::GetInstance()->CancelAlarmRing();\r
- UIViewGroup* alarmCloseView = CreateAlarmCloseView();\r
- NotificationManager::GetInstance()->screenContainer_->SetVisible(false);\r
- RootView::GetInstance()->Add(alarmCloseView);\r
- alarmCloseView->SetVisible(true);\r
- StartAlarmTimer(AlarmTimerType::NOTIFY_ALARM_CLOSE, NOTIFY_THREE_SECONDS);\r
- return true;\r
- } else if (strcmp(view.GetViewId(), ALARM_IMAGE_CLOCK) == 0) {\r
- DisableAlarmTimer(AlarmTimerType::NOTIFY_ALARM_RING);\r
- AlarmPopUpPresenter::GetInstance()->DelayAlarmRing();\r
- UIViewGroup* alarmRingView = CreateAlarmRingView();\r
- NotificationManager::GetInstance()->screenContainer_->SetVisible(false);\r
- RootView::GetInstance()->Add(alarmRingView);\r
- alarmRingView->SetVisible(true);\r
- StartAlarmTimer(AlarmTimerType::NOTIFY_ALARM_DELAY, NOTIFY_THREE_SECONDS);\r
+ void AlarmViewEventListener::DelayAlarmRing()\r
+ {\r
+ CancelAlarmRing();//先取消闹铃\r
+ AlarmClockModel::GetInstance()->AlarmGetClockNum();\r
+ AlarmClockModel::GetInstance()->DelayAlarmRing();\r
}\r
- return true;\r
-}\r
-} // namespace OHOS\r
+} // namespace OHOS\r