#include "samgr_lite.h"
#include "thread_adapter.h"
#include "UiConfig.h"
-#include "AlarmClockModel.h"
-#include "AlarmPopUpPresenter.h"
+#include "alarm/include/AlarmClockModel.h"
+#include "alarm/include/AlarmPopUpPresenter.h"
#include "graphic_service.h"
-#include "PlayersModel.h"
-#include "PhoneService.h"
+#include "player/include/PlayersModel.h"
+#include "phoneservice/include/PhoneService.h"
#include "ui_service.h"
#include "notification_manager.h"
-#include "../../../../../../../drivers/peripheral/config/include/ConfigModel.h"
+#include "ConfigModel.h"
#include "custom_runtime.h"
#ifdef __cplusplus
AlarmClockModel::AlarmClockModel()
{
g_alarmClockDataMutex = MUTEX_InitValue();
- InitAlarmData();
+ // InitAlarmData();
}
AlarmClockModel::~AlarmClockModel()
return 0;
}
+//获取闹钟数量
int32_t AlarmClockModel::GetAlarmNum(void)
{
return alarmSerial;
}
}
+//获取一个可用的闹钟 ID
uint8_t AlarmClockModel::GetAlarmId(void)
{
for (int num = 0; num < CLOCK_MAX; num++) {
- if (alarmId[num] == 0) {
+ if (alarmId[num] == 0) { //如果某个元素的值为 0,表示这个 ID 尚未被使用
return num;
}
}
return 0;
}
+//将指定id的闹钟标记为已删除状态
void AlarmClockModel::DeleteAlarmId(uint8_t id)
{
for (int num = 0; num < CLOCK_MAX; num++) {
return;
}
+//将指定id的闹钟标记为已设置状态
void AlarmClockModel::SetAlarmId(uint8_t id)
{
for (int num = 0; num < CLOCK_MAX; num++) {
// SetAlarmId(currentAlarm[0]->alarmClockId);
// return;
// }
-
+#if 0
void AlarmClockModel::DeleteClockModel(uint16_t num)
{
// WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteClockModel num=%d", num);
}
currentAlarm[alarmSerial - 1] = nullptr;
}
+#endif
+
+//删除闹钟信息
+void AlarmClockModel::DeleteClockModel(uint16_t id)
+{
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteClockModel id=%d", id);
+ if (id >= CLOCK_MAX || currentAlarm[id] == nullptr) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteClockModel delete clock error!");
+ return;
+ }
+ uint8_t clockId = currentAlarm[id]->alarmClockId;
+ int status = DeleteAlarmClock(currentAlarm[id]);
+ if (status!= 0) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteAlarmClock delete clock error!");
+ return;
+ }
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"AlarmClockModel::DeleteAlarmClock = %d, currentAlarm[alarmListener] = %p, alarmClockId = %u!", status, currentAlarm[id],currentAlarm[id]->alarmClockId);
+ DeleteAlarmId(clockId);
+ int alarmNum = GetAlarmNum();
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteClockModel alarmNum = %u!", alarmNum);
+
+ bool isFirstAlarm = (alarmNum == 0);
+ if (isFirstAlarm) {
+ // 如果是第一个闹钟,直接处理删除,无需检查下一个闹钟状态
+ if (alarmNum > 1) {
+ // 如果有多个闹钟,将第二个闹钟赋给第一个位置,并更新索引
+ currentAlarm[0] = currentAlarm[1];
+ currentAlarm[0]->index = 0;
+ int ret = UpdataAlarmClock(currentAlarm[0]);
+ if (ret!= 0) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteClockModel update first alarm failed!");
+ return;
+ }
+ } else {
+ // 如果只有一个闹钟,直接将其置为 nullptr
+ currentAlarm[0] = nullptr;
+ }
+ } else {
+ // 如果不是第一个闹钟,按照原逻辑处理
+ for (; id < alarmNum; id++)
+ {
+ AlarmClockInfo *tempAlarm = currentAlarm[id];
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteClockModel. current_index = %u!", currentAlarm[id]->index);
+ // 判断是否到达最后一个闹钟或者下一个闹钟为 nullptr 或无效类型
+ if ((id + 1) == alarmNum || currentAlarm[id + 1] == nullptr || currentAlarm[id + 1]->alarmType == TYPE_INVALID_ALARM_CLOCK)
+ {
+ // 如果是最后一个闹钟,直接置为 nullptr
+ if ((id + 1) == alarmNum) {
+ currentAlarm[id] = nullptr;
+ } else {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteClockModel fail");
+ currentAlarm[id] = tempAlarm;
+ return;
+ }
+ break;
+ }
+ currentAlarm[id] = currentAlarm[id + 1];
+ currentAlarm[id]->index = id;
+
+ int ret = UpdataAlarmClock(currentAlarm[id]);
+ if (ret!= 0)
+ {
+ currentAlarm[id] = tempAlarm;
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DeleteClockModel [%d]", __LINE__);
+ return;
+ }
+ }
+ }
+}
+//切换特定闹钟的启用状态
bool AlarmClockModel::ButtonStatusRing(int16_t num, bool alarmStatus)
{
if (num >= CLOCK_MAX || currentAlarm[num] == nullptr) {
} else if (!alarmStatus) {
currentAlarm[num]->alarmClockEnable = 0;
}
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::ButtonStatusRing alarm[%d] status is %u", num,
- currentAlarm[num]->alarmClockEnable);
+ WEARABLE_LOGE(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;
return true;
}
+//延迟某个闹钟
void AlarmClockModel::SetDelayAlarm(uint8_t alarm)
{
AlarmClockQueueMsg *clockQueueMsg = new AlarmClockQueueMsg();
}
currentAlarm[clockListener]->delayNum++;
clockQueueMsg->eventType = EVENT_ALARM_RING_DELAY;
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::ButtonStatusRing clockQueueMsg->eventType is %u",
- clockQueueMsg->eventType);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::ButtonStatusRing clockQueueMsg->eventType is %u",clockQueueMsg->eventType);
(clockQueueMsg->data).value = alarm;
AlmmgrAlarmClockEventProcess(clockQueueMsg);
return;
}
+//取消某个闹钟
void AlarmClockModel::SetCancelAlarm(uint8_t alarm)
{
AlarmClockQueueMsg *clockQueueMsg = new AlarmClockQueueMsg();
return;
}
clockQueueMsg->eventType = EVENT_ALARM_RING_CANCEL;
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::ButtonStatusRing clockQueueMsg->eventType is %u",
- clockQueueMsg->eventType);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::ButtonStatusRing clockQueueMsg->eventType is %u",clockQueueMsg->eventType);
(clockQueueMsg->data).value = alarm;
AlmmgrAlarmClockEventProcess(clockQueueMsg);
return;
}
+//设置闹钟时间
void AlarmClockModel::SetAlarmTime(uint32_t time_hour, uint32_t time_min, int16_t num)
{
if (num >= CLOCK_MAX || currentAlarm[num] == nullptr) {
currentAlarm[num]->alarmTime);
}
+//设置闹钟星期
void AlarmClockModel::SetAlarmWeek(uint8_t week, int16_t num)
{
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::SetAlarmWeek set week!");
void AlarmClockModel::DelAlarmDelay(int16_t num)
{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::SetAlarmWeek set week!");
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DelAlarmDelay set week!");
if (num >= CLOCK_MAX || currentAlarm[num] == nullptr) {
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClcokModel::SetAlarmTime new alarm_clock! num = %d", num);
return;
currentAlarm[num]->delayNum = tempAlarmDelay;
return;
}
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::SetAlarmWeek currentAlarm[num]->delayNum = %u",
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::DelAlarmDelay 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)
+/*
+ * @brief 设置闹钟信息
+ * @param 1 闹钟的小时数
+ * @param 2 闹钟的分钟数
+ * @param 3 表示闹钟的重复周期,按位表示一周中哪些天重复的数值
+ * @param 4 标识特定闹钟的索引
+ * @param 5 区分是新建闹钟还是修改闹钟的标志
+ */
+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 &&
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);
+ currentAlarm[alarmListener]->alarmTime = ((time_hour << 16) | time_min); // 闹钟时间数据:小时存储在高 16 位,分钟存储在低 16 位
+ 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;
}
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::NewAlarmTime clock name = %s, id = %u",
currentAlarm[alarmListener]->alarmClockName, currentAlarm[alarmListener]->alarmClockId);
- if (setListener == 0) {
+ if (setListener == 0) { //表示新建闹钟
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::SetAlarmWeek new time!");
int ret = AddAlarmClock(currentAlarm[alarmListener]);
if (ret != 0) {
return;
}
SetAlarmId(currentAlarm[alarmListener]->alarmClockId);
- } else {
+ } else { //表示修改闹钟
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::SetAlarmWeek modify time!");
UpdataAlarmClock(currentAlarm[alarmListener]);
}
void AlarmClockModel::PopInterPlayMusic()
{
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::PopInterPlayMusic");
if(true == ConfigModel::GetInstance()->GetDnotdisturb() || (uapi_sleep_mode_flag_get()))
{
return;
#include "notification_manager.h"
#include "wearable_log.h"
#include "UiConfig.h"
-#include "AlarmPopUpPresenter.h"
+#include "alarm/include/AlarmPopUpPresenter.h"
#include "components/ui_image_view.h"
#include "components/ui_label_ext.h"
#include "components/ui_label_button_ext.h"
-namespace OHOS {
-static constexpr const char* RING_AGAIN = "响铃将在十分钟后再次响起";
-constexpr int32_t NOTIFY_THREE_SECONDS = 3000;
-constexpr int32_t NOTIFY_ONE_SECOND = 1000;
-constexpr int32_t NOTIFY_THIRTY_SECONDS = 30000;
-constexpr int32_t NOTIFY_ONE_MINUTE = 60000;
-constexpr int32_t NOTOFY_NO_OPERATE_TIME = 35000;
-osTimerId_t g_notifyStopHandle = nullptr; // timer of close view and alarm ring view
-osTimerId_t g_alarmRing = nullptr; // timer of alarm view
-
-UIViewGroup* g_alarmView = nullptr;
-UIViewGroup* g_closeView = nullptr;
-UIViewGroup* g_ringView = nullptr;
-UIImageView* g_imageClose = nullptr;
-UIImageView* g_imageRing = nullptr;
-UIImageView* g_imageDelete = nullptr;
-UILabelButtonExt * g_StopBtn = nullptr;
-UIImageView * g_ClockPrompt = nullptr;
-UIImageView* g_imageClock = nullptr;
-UILabel* g_closeLable = nullptr;
-UILabel* g_ringLable = nullptr;
-UILabelExt* g_mainLable = nullptr;
-UIDigitalClock* g_dClock = nullptr;
-
-// alarm close view
-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;
-
-// alarm main view
-constexpr int16_t CONTAINER_X = 0;
-constexpr int16_t CONTAINER_Y = 0;
-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;
-
-// alarm delay view
-constexpr int16_t SET_ZERO = 0;
-constexpr int16_t SET_SRC = 150;
-constexpr int16_t DELAY_IMAGE_X = 150;
-constexpr int16_t DELAY_IMAGE_Y = 140;
-constexpr int16_t DELAY_LABEL_X = 80;
-constexpr int16_t DELAY_LABEL_Y = 300;
-constexpr int16_t DELAY_LABEL_LENGTH = 350;
-constexpr int16_t DELAY_LABEL_HEIGHT = 35;
-constexpr int16_t DELAY_LABEL_FONT = 25;
-
-void StopNotifyCallback()
+#include "components/ui_digital_clock.h"
+#include "time.h"
+#include "cmsis_os2.h"
+#include <service/graphic_service.h>
+#include "ConfigModel.h"
+#include <custom_runtime.h>
+#include "../../../../../../drivers/peripheral/vibrator/service/vibrator_service.h"
+namespace OHOS
{
- NotificationManager::GetInstance()->StopNotify();
-}
+ static constexpr const char *RING_AGAIN = "响铃将在十分钟后再次响起";
+ constexpr int32_t NOTIFY_THREE_SECONDS = 3000;
+ constexpr int32_t NOTIFY_ONE_SECOND = 1000;
+ constexpr int32_t NOTIFY_THIRTY_SECONDS = 30 * 1000; // 30秒
+ constexpr int32_t NOTIFY_ONE_MINUTE = 60 * 1000;
+ static int popalarm_time = 60;
+ constexpr int32_t NOTOFY_NO_OPERATE_TIME = 30 * 1000; // 无操作30s超时时间
+ osTimerId_t g_notifyStopHandle = nullptr; // timer of close view and alarm ring view
+ osTimerId_t g_alarmRing = nullptr; // timer of alarm view
+
+ UIViewGroup *g_alarmView = nullptr;
+ UIViewGroup *g_closeView = nullptr;
+ UIViewGroup *g_ringView = nullptr;
+ UIImageView *g_imageClose = nullptr;
+ UIImageView *g_imageRing = nullptr;
+ UIImageView *g_imageDelete = nullptr;
+ UILabelButtonExt *g_StopBtn = nullptr;
+ UIImageView *g_ClockPrompt = nullptr;
+ UIImageView *g_imageClock = nullptr;
+ UILabel *g_closeLable = nullptr;
+ UILabel *g_ringLable = nullptr;
+ UILabelExt *g_mainLable = nullptr;
+ UILabelExt *g_popTime = nullptr;
+ UIDigitalClock *g_dClock = nullptr;
+
+ // alarm close view
+ 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;
+
+ // alarm main view
+ constexpr int16_t CONTAINER_X = 0;
+ constexpr int16_t CONTAINER_Y = 0;
+ 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;
+
+ // alarm delay view
+ constexpr int16_t SET_ZERO = 0;
+ constexpr int16_t SET_SRC = 150;
+ constexpr int16_t DELAY_IMAGE_X = 150;
+ constexpr int16_t DELAY_IMAGE_Y = 140;
+ constexpr int16_t DELAY_LABEL_X = 80;
+ constexpr int16_t DELAY_LABEL_Y = 300;
+ constexpr int16_t DELAY_LABEL_LENGTH = 350;
+ constexpr int16_t DELAY_LABEL_HEIGHT = 35;
+ constexpr int16_t DELAY_LABEL_FONT = 25;
+
+ void StopNotifyCallback()
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "StopNotifyCallback");
+ NotificationManager::GetInstance()->StopNotify();
+ }
-void NoOperateCallback()
-{
- NotificationManager::GetInstance()->StopNotify();
-}
+ static void NoOperateCallbackProc(int data)
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NoOperateCallback");
+ popalarm_time--;
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NoOperateCallback popalarm_time = %d",popalarm_time);
+ if (popalarm_time <= 0)
+ {
+ DisableAlarmTimer(AlarmTimerType::NOTIFY_ALARM_RING);
+ // AlarmPopUpPresenter::GetInstance()->CancelAlarmRing();
+ FindWatchViewEventListener::GetInstance().PopInterCancelMusic();
+ NotificationManager::GetInstance()->StopNotify();
+ }
+ else
+ {
+ if (true == ConfigModel::GetInstance()->GetDnotdisturb() || (uapi_sleep_mode_flag_get()))
+ {
+ return;
+ }
+ if (g_alarmView)
+ {
+ ui_api_vibrate_once_func();
+ }
+ }
+ }
-void StartAlarmTimer(AlarmTimerType type, int32_t interval)
-{
- uint32_t tick;
- osStatus_t retTimer;
- if (type >= AlarmTimerType::NOTIFY_ALARM_UNKNOWN) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "StartAlarmTimer type:%d invalid!!", type);
- return;
+ static void NoOperateCallback(int data)
+ {
+ GraphicService::GetInstance()->PostGraphicEvent(std::bind(NoOperateCallbackProc, data));
}
- switch (type) {
+
+ /*
+ * @brief 启动特定类型的闹钟定时器
+ * @param 1 闹钟定时器的类型
+ * @param 2 时间间隔,以毫秒为单位
+ */
+ void StartAlarmTimer(AlarmTimerType type, int32_t interval)
+ {
+ uint32_t tick;
+ osStatus_t retTimer;
+ // 1.检查传入的闹钟类型是否有效
+ if (type >= AlarmTimerType::NOTIFY_ALARM_UNKNOWN)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "StartAlarmTimer type:%d invalid!!", type);
+ return;
+ }
+ switch (type)
+ {
case AlarmTimerType::NOTIFY_ALARM_CLOSE:
case AlarmTimerType::NOTIFY_ALARM_DELAY:
- g_notifyStopHandle = osTimerNew((osTimerFunc_t)StopNotifyCallback, osTimerPeriodic, nullptr, nullptr);
- tick = osMs2Tick(interval);
- retTimer = osTimerStart(g_notifyStopHandle, tick);
- if (retTimer != osOK && g_notifyStopHandle != nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
- "StartAlarmTimer osTimerStart failed, type= %d ret = %lx!!", type, retTimer);
- osTimerDelete(g_notifyStopHandle);
- g_notifyStopHandle = nullptr;
- return;
+ if (g_notifyStopHandle == nullptr)
+ {
+ g_notifyStopHandle = osTimerNew((osTimerFunc_t)StopNotifyCallback, osTimerPeriodic, nullptr, nullptr);
+ tick = osMs2Tick(interval);
+ retTimer = osTimerStart(g_notifyStopHandle, tick);
+ if (retTimer != osOK && g_notifyStopHandle != nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "StartAlarmTimer osTimerStart failed, type= %d ret = %lx!!", type, retTimer);
+ osTimerDelete(g_notifyStopHandle);
+ g_notifyStopHandle = nullptr;
+ return;
+ }
}
break;
case AlarmTimerType::NOTIFY_ALARM_RING:
- g_alarmRing = osTimerNew((osTimerFunc_t)NoOperateCallback, osTimerPeriodic, nullptr, nullptr);
- tick = osMs2Tick(interval);
- retTimer = osTimerStart(g_alarmRing, tick);
- if (retTimer != osOK && g_alarmRing != nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
- "StartAlarmTimer osTimerStart failed, type= %d ret = %lx!!", type, retTimer);
- osTimerDelete(g_alarmRing);
- g_alarmRing = nullptr;
- return;
+ if (g_alarmRing == nullptr)
+ {
+ g_alarmRing = osTimerNew((osTimerFunc_t)NoOperateCallback, osTimerPeriodic, nullptr, nullptr);
+ tick = osMs2Tick(interval);
+ retTimer = osTimerStart(g_alarmRing, tick);
+ if (retTimer != osOK && g_alarmRing != nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "StartAlarmTimer osTimerStart failed, type= %d ret = %lx!!", type, retTimer);
+ osTimerDelete(g_alarmRing);
+ g_alarmRing = nullptr;
+ return;
+ }
}
break;
default:
break;
+ }
}
-}
-void DisableAlarmTimer(AlarmTimerType type)
-{
- if (type >= AlarmTimerType::NOTIFY_ALARM_UNKNOWN) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisableAlarmTimer type:%d invalid!!", type);
- return;
- }
- osStatus_t ret;
- switch (type) {
+ /*
+ * @brief 取消特定类型的闹钟定时器
+ * @param 闹钟定时器的类型
+ */
+ void DisableAlarmTimer(AlarmTimerType type)
+ {
+ if (type >= AlarmTimerType::NOTIFY_ALARM_UNKNOWN)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisableAlarmTimer type:%d invalid!!", type);
+ return;
+ }
+ osStatus_t ret;
+ switch (type)
+ {
case AlarmTimerType::NOTIFY_ALARM_CLOSE:
case AlarmTimerType::NOTIFY_ALARM_DELAY:
- if (g_notifyStopHandle != nullptr) {
+ if (g_notifyStopHandle != nullptr)
+ {
+ osTimerStop(g_notifyStopHandle);
ret = osTimerDelete(g_notifyStopHandle);
- if (ret != osOK) {
+ if (ret != osOK)
+ {
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisableAlarmTimer failed, type= %d ret = %lx!", type, ret);
return;
}
}
break;
case AlarmTimerType::NOTIFY_ALARM_RING:
- if (g_alarmRing != nullptr) {
+ if (g_alarmRing != nullptr)
+ {
+ osTimerStop(g_alarmRing);
ret = osTimerDelete(g_alarmRing);
- if (ret != osOK) {
+ if (ret != osOK)
+ {
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisableAlarmTimer failed, type= %d ret = %lx!", type, ret);
return;
}
g_alarmRing = nullptr;
+ popalarm_time = 60;
}
break;
default:
break;
+ }
}
-}
-
-UIViewGroup *CreateAlarmCloseView()
-{
- g_closeView = new UIViewGroup();
- if (g_closeView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmCloseView g_closeView null!");
- return nullptr;
- }
- g_closeView->SetPosition(MAX_SET_ZERO_LEN, MAX_SET_ZERO_LEN);
- g_closeView->SetWidth(Screen::GetInstance().GetWidth());
- g_closeView->SetHeight(Screen::GetInstance().GetHeight());
- g_imageClose = new UIImageView();
- if (g_imageClose == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmCloseView g_imageClose null!");
- delete g_closeView;
- g_closeView = nullptr;
- return nullptr;
- }
- g_imageClose->SetPosition(MAX_IMAGE_X_LEN, MAX_IMAGE_Y_LEN);
- g_imageClose->SetWidth(MAX_SET_SRC_LEN);
- g_imageClose->SetHeight(MAX_SET_SRC_LEN);
- g_imageClose->SetSrc(ALARM_CLOCK_CLOSE_ADD_PATH);
- g_imageClose->SetTouchable(true);
- g_closeView->Add(g_imageClose);
-
- g_closeLable = new UILabel();
- if (g_closeLable == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmCloseView g_closeLable null!");
- delete g_closeView;
- g_closeView = nullptr;
- delete g_imageClose;
- g_imageClose = nullptr;
- return nullptr;
- }
- g_closeLable->SetPosition(MAX_LABEL_X_LEN, MAX_LABEL_Y_LEN, MAX_LABEL_LENGTH_LEN, MAX_LABEL_HEIGHT_LEN);
- g_closeLable->SetFont(DEFAULT_VECTOR_FONT_FILENAME, MAX_LABEL_FONT_LEN);
- g_closeLable->SetText("CLOSE");
- g_closeView->Add(g_closeLable);
- g_closeView->SetViewId(ALARM_VIEW_CLOSE);
- UIView::OnDragListener *listener = static_cast<UIView::OnDragListener*>(AlarmViewEventListener::GetInstance());
- g_closeView->SetOnDragListener(listener);
- g_closeView->SetDraggable(true);
- g_closeView->SetTouchable(true);
- NotificationManager::GetInstance()->RegisterNotifyCleanupFunction(FreeAlarmCloseView);
- return g_closeView;
-}
-void FreeAlarmCloseView(void)
-{
- if (g_closeView != nullptr) {
- DisableAlarmTimer(AlarmTimerType::NOTIFY_ALARM_CLOSE);
- g_closeView->RemoveAll();
- delete g_imageClose;
- g_imageClose = nullptr;
- delete g_closeLable;
- g_closeLable = nullptr;
- RootView::GetInstance()->Remove(g_closeView);
- delete g_closeView;
- g_closeView = nullptr;
+ UIViewGroup *CreateAlarmCloseView()
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmCloseView");
+ g_closeView = new UIViewGroup();
+ if (g_closeView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmCloseView g_closeView null!");
+ return nullptr;
+ }
+ g_closeView->SetPosition(MAX_SET_ZERO_LEN, MAX_SET_ZERO_LEN);
+ g_closeView->SetWidth(Screen::GetInstance().GetWidth());
+ g_closeView->SetHeight(Screen::GetInstance().GetHeight());
+ g_imageClose = new UIImageView();
+ if (g_imageClose == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmCloseView g_imageClose null!");
+ delete g_closeView;
+ g_closeView = nullptr;
+ return nullptr;
+ }
+ g_imageClose->SetPosition(MAX_IMAGE_X_LEN, MAX_IMAGE_Y_LEN);
+ g_imageClose->SetWidth(MAX_SET_SRC_LEN);
+ g_imageClose->SetHeight(MAX_SET_SRC_LEN);
+ g_imageClose->SetSrc(ALARM_CLOCK_CLOSE_ADD_PATH);
+ g_imageClose->SetTouchable(true);
+ g_closeView->Add(g_imageClose);
+
+ g_closeLable = new UILabel();
+ if (g_closeLable == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmCloseView g_closeLable null!");
+ delete g_closeView;
+ g_closeView = nullptr;
+ delete g_imageClose;
+ g_imageClose = nullptr;
+ return nullptr;
+ }
+ g_closeLable->SetPosition(MAX_LABEL_X_LEN, MAX_LABEL_Y_LEN, MAX_LABEL_LENGTH_LEN, MAX_LABEL_HEIGHT_LEN);
+ g_closeLable->SetFont(DEFAULT_VECTOR_FONT_FILENAME, MAX_LABEL_FONT_LEN);
+ g_closeLable->SetText("CLOSE");
+ g_closeView->Add(g_closeLable);
+ g_closeView->SetViewId(ALARM_VIEW_CLOSE);
+ UIView::OnDragListener *listener = static_cast<UIView::OnDragListener *>(AlarmViewEventListener::GetInstance());
+ g_closeView->SetOnDragListener(listener);
+ g_closeView->SetDraggable(true);
+ g_closeView->SetTouchable(true);
+ NotificationManager::GetInstance()->RegisterNotifyCleanupFunction(FreeAlarmCloseView);
+ return g_closeView;
}
-}
-UIViewGroup *CreateAlarmRingView()
-{
- g_ringView = new UIViewGroup();
- if (g_ringView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmRingView g_ringView null!");
- return nullptr;
- }
- g_ringView->SetPosition(SET_ZERO, SET_ZERO);
- g_ringView->SetWidth(Screen::GetInstance().GetWidth());
- g_ringView->SetHeight(Screen::GetInstance().GetHeight());
- g_imageRing = new UIImageView();
- if (g_imageRing == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmRingView g_imageRing null!");
- delete g_ringView;
- g_ringView = nullptr;
- return nullptr;
- }
- g_imageRing->SetPosition(DELAY_IMAGE_X, DELAY_IMAGE_Y);
- g_imageRing->SetWidth(SET_SRC);
- g_imageRing->SetHeight(SET_SRC);
- g_imageRing->SetSrc(ALARM_CLOCK_POP_ADD_PATH);
- g_ringView->Add(g_imageRing);
- g_ringLable = new UILabel();
- if (g_ringLable == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmRingView::g_ringLable null!");
- delete g_ringView;
- g_ringView = nullptr;
- delete g_imageRing;
- return nullptr;
+ void FreeAlarmCloseView(void)
+ {
+ if (g_closeView != nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FreeAlarmCloseView");
+ DisableAlarmTimer(AlarmTimerType::NOTIFY_ALARM_CLOSE);
+ g_closeView->RemoveAll();
+ delete g_imageClose;
+ g_imageClose = nullptr;
+ delete g_closeLable;
+ g_closeLable = nullptr;
+ RootView::GetInstance()->Remove(g_closeView);
+ delete g_closeView;
+ g_closeView = nullptr;
+ }
}
- g_ringLable->SetPosition(DELAY_LABEL_X, DELAY_LABEL_Y, DELAY_LABEL_LENGTH, DELAY_LABEL_HEIGHT);
- g_ringLable->SetFont(DEFAULT_VECTOR_FONT_FILENAME, DELAY_LABEL_FONT);
- g_ringLable->SetText(RING_AGAIN);
- g_ringView->Add(g_ringLable);
- g_ringView->SetViewId(ALARM_VIEW_DELAY);
- UIView::OnDragListener *listener = static_cast<UIView::OnDragListener*>(AlarmViewEventListener::GetInstance());
- g_ringView->SetOnDragListener(listener);
- g_ringView->SetDraggable(true);
- g_ringView->SetTouchable(true);
- NotificationManager::GetInstance()->RegisterNotifyCleanupFunction(FreeAlarmRingView);
- return g_ringView;
-}
-void FreeAlarmRingView(void)
-{
- if (g_ringView != nullptr) {
- DisableAlarmTimer(AlarmTimerType::NOTIFY_ALARM_DELAY);
- g_ringView->RemoveAll();
- delete g_imageRing;
- g_imageRing = nullptr;
- delete g_ringLable;
- g_ringLable = nullptr;
- RootView::GetInstance()->Remove(g_ringView);
- delete g_ringView;
- g_ringView = nullptr;
+ /*创建一个响铃闹钟视图*/
+ UIViewGroup *CreateAlarmRingView()
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmRingView");
+ if (g_ringView == nullptr)
+ {
+ g_ringView = new UIViewGroup();
+ if (g_ringView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmRingView g_ringView null!");
+ return nullptr;
+ }
+ g_ringView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
+ g_ringView->SetViewId(ALARM_VIEW_DELAY);
+ UIView::OnDragListener *listener = static_cast<UIView::OnDragListener *>(AlarmViewEventListener::GetInstance());
+ if (listener == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmViewEventListener::GetInstance fail!!");
+ return nullptr;
+ }
+ g_ringView->SetOnDragListener(listener);
+ g_ringView->SetDraggable(true);
+ g_ringView->SetTouchable(true);
+ /* -------------------------------------------------------------------------- */
+ if (g_imageRing == nullptr)
+ {
+ g_imageRing = new UIImageView();
+ if (g_imageRing == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmRingView g_imageRing null!");
+ return nullptr;
+ }
+ }
+ g_imageRing->SetPosition(DELAY_IMAGE_X, DELAY_IMAGE_Y);
+ g_imageRing->SetWidth(SET_SRC);
+ g_imageRing->SetHeight(SET_SRC);
+ g_imageRing->SetSrc(ALARM_CLOCK_POP_ADD_PATH);
+ /* -------------------------------------------------------------------------- */
+ if (g_ringLable == nullptr)
+ {
+ g_ringLable = new UILabel();
+ if (g_ringLable == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmRingView::g_ringLable null!");
+ return nullptr;
+ }
+ }
+ g_ringLable->SetPosition(DELAY_LABEL_X, DELAY_LABEL_Y, DELAY_LABEL_LENGTH, DELAY_LABEL_HEIGHT);
+ g_ringLable->SetFont(DEFAULT_VECTOR_FONT_FILENAME, DELAY_LABEL_FONT);
+ g_ringLable->SetText("响铃将在十分钟后再次响起");
+ /* ----------------------------------- Add ---------------------------------- */
+ g_ringView->Add(g_imageRing);
+ g_ringView->Add(g_ringLable);
+ }
+ NotificationManager::GetInstance()->RegisterNotifyCleanupFunction(FreeAlarmRingView);
+ return g_ringView;
}
-}
-static bool CreateAlarmViewImage(void)
-{
- g_imageDelete = new UIImageView();
- if (g_imageDelete == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "showAlarmNotify g_imageDelete null!");
- return false;
+ // 析构一个响铃闹钟视图
+ void FreeAlarmRingView(void)
+ {
+ if (g_ringView != nullptr)
+ {
+ DisableAlarmTimer(AlarmTimerType::NOTIFY_ALARM_DELAY);
+ g_ringView->RemoveAll();
+ if (g_imageRing)
+ {
+ delete g_imageRing;
+ g_imageRing = nullptr;
+ }
+ if (g_ringLable)
+ {
+ delete g_ringLable;
+ g_ringLable = nullptr;
+ }
+ RootView::GetInstance()->Remove(g_ringView);
+ delete g_ringView;
+ g_ringView = nullptr;
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FreeAlarmRingView over!!");
+ }
}
- g_imageDelete->SetPosition(IMAGE_DELETE_X, IMAGE_DELETE_Y);
- g_imageDelete->SetWidth(MAX_SET_SRC_LEN);
- g_imageDelete->SetHeight(MAX_SET_SRC_LEN);
- g_imageDelete->SetViewId(ALARM_IMAGE_DELETE);
- g_imageDelete->SetSrc(ALARM_DELETE_ADD_PATH);
- g_imageDelete->SetTouchable(true);
- UIView::OnClickListener *closeListener = static_cast<UIView::OnClickListener *>\
- (AlarmViewEventListener::GetInstance());
- g_imageDelete->SetOnClickListener(closeListener);
- g_imageDelete->SetVisible(false);
- g_imageClock = new UIImageView();
- if (g_imageClock == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "showAlarmNotify g_imageClock null!");
- delete g_imageDelete;
- return false;
+ // 创建一个闹钟弹窗视图
+ UIViewGroup *CreateAlarmView(void)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmView");
+ AlarmClockModel::GetInstance()->AlarmGetClockNum();
+ if (g_alarmView == nullptr)
+ {
+ g_alarmView = new UIViewGroup();
+ if (g_alarmView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmView g_alarmView null!");
+ return nullptr;
+ }
+ g_alarmView->SetPosition(CONTAINER_X, CONTAINER_Y, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
+ g_alarmView->SetViewId(ALARM_VIEW_POPUP);
+ g_alarmView->SetDraggable(true);
+ g_alarmView->SetTouchable(true);
+ UIView::OnDragListener *listener = static_cast<UIView::OnDragListener *>(AlarmViewEventListener::GetInstance());
+ if (nullptr == listener)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmViewEventListener::GetInstance fail!!");
+ return nullptr;
+ }
+ g_alarmView->SetOnDragListener(listener);
+ /* -------------------------------------------------------------------------- */
+ if (g_mainLable == nullptr)
+ {
+ g_mainLable = new UILabelExt();
+ if (g_mainLable == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmView g_mainLable is nullptr");
+ return nullptr;
+ }
+ }
+ g_mainLable->SetPosition(83, 50, 300, 35);
+ g_mainLable->SetTextId(STR_ALARM); // 闹钟
+ g_mainLable->SetStyle(STYLE_TEXT_FONT, 30);
+ g_mainLable->SetStyle(STYLE_LINE_HEIGHT, 35);
+ g_mainLable->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+ g_mainLable->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);
+ g_mainLable->SetRollSpeed(70);
+ g_mainLable->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ g_alarmView->Add(g_mainLable);
+ /* -------------------------------------------------------------------------- */
+ if (g_ClockPrompt == nullptr)
+ {
+ g_ClockPrompt = new UIImageView();
+ if (g_ClockPrompt == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmView g_ClockPrompt is nullptr");
+ return nullptr;
+ }
+ }
+ g_ClockPrompt->SetPosition(184, 129, 100, 100);
+ g_ClockPrompt->SetSrc("/user/res/Alarm/alarm_prompt.bin");
+ g_alarmView->Add(g_ClockPrompt);
+ /* -------------------------------------------------------------------------- */
+ struct tm localTime;
+ int16 thisHour;
+ int16 thisMin;
+ if (g_dClock == nullptr)
+ {
+ g_dClock = new UIDigitalClock();
+ if (g_dClock == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmViewLabel g_dClock is nullptr");
+ return nullptr;
+ }
+ }
+ g_dClock->SetPosition((g_alarmView->GetWidth() - 200) / 2, 236, 200, 70);
+ g_dClock->SetStyle(STYLE_TEXT_FONT, 60);
+ g_dClock->SetStyle(STYLE_LINE_HEIGHT, 69);
+ g_dClock->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 60);
+ time_t seconds = time(nullptr);
+ if (localtime_r(&seconds, &localTime) == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmViewLabel get localtime error!");
+ return nullptr;
+ }
+ AlarmClockModel::GetInstance()->GetPopTimeData(&thisHour, &thisMin);
+ g_dClock->SetDisplayMode(UIDigitalClock::DISPLAY_24_HOUR_NO_SECONDS);
+ g_dClock->SetTime24Hour(thisHour, thisMin, 0);
+ g_dClock->SetVisible(false);
+ g_alarmView->Add(g_dClock);
+ /* -------------------------------- g_popTime ------------------------------- */
+ if (g_popTime == nullptr)
+ {
+ g_popTime = new UILabelExt();
+ if (g_popTime == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmView g_popTime is nullptr");
+ return nullptr;
+ }
+ }
+ g_popTime->SetPosition(83, 236, 200, 70);
+ // std::string poptime = std::to_string(thisHour) + ":" + std::to_string(thisMin);
+ char poptime[12] = {0};
+ sprintf(poptime, "%02d:%02d", thisHour, thisMin);
+ g_popTime->SetText(poptime);
+ g_popTime->SetStyle(STYLE_TEXT_FONT, 60);
+ g_popTime->SetStyle(STYLE_LINE_HEIGHT, 70);
+ g_popTime->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 60);
+ g_popTime->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
+ g_popTime->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ g_alarmView->Add(g_popTime);
+ g_popTime->SetPosition((g_alarmView->GetWidth() - g_popTime->GetTextWidth()) / 2, 236);
+ /* -------------------------------------------------------------------------- */
+ if (g_StopBtn == nullptr)
+ {
+ g_StopBtn = new UILabelButtonExt();
+ if (g_StopBtn == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmView g_StopBtn is nullptr");
+ return nullptr;
+ }
+ }
+ g_StopBtn->SetPosition(0, 366, 466, 100);
+ g_StopBtn->SetViewId(ALARM_IMAGE_STOP);
+ g_StopBtn->SetTextId(STR_STOP); // 停止
+ g_StopBtn->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+ g_StopBtn->SetTextColor(Color::GetColorFromRGBA(0xff, 0x5a, 0x36, 0xff));
+ g_StopBtn->SetImageSrc(PNG_BUTTON_466x100_IMAGE, PNG_BUTTON_466x100_IMAGE);
+ g_StopBtn->SetStyleForState(STYLE_BACKGROUND_COLOR, 0x00, UIButton::PRESSED);
+ g_StopBtn->SetTouchable(true);
+ UIView::OnClickListener *closeListener = static_cast<UIView::OnClickListener *>(AlarmViewEventListener::GetInstance());
+ if (nullptr == closeListener)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmViewEventListener::GetInstance fail!!");
+ return nullptr;
+ }
+ g_StopBtn->SetOnClickListener(closeListener);
+ g_alarmView->Add(g_StopBtn);
+ /* -------------------------------------------------------------------------- */
+ StartAlarmTimer(AlarmTimerType::NOTIFY_ALARM_RING, NOTIFY_ONE_SECOND);
+ }
+ NotificationManager::GetInstance()->RegisterNotifyCleanupFunction(FreeAlarmView);
+ return g_alarmView;
}
- g_imageClock->SetPosition(IMAGE_CLOCK_X, IMAGE_CLOCK_Y);
- g_imageClock->SetWidth(MAX_SET_SRC_LEN);
- g_imageClock->SetHeight(MAX_SET_SRC_LEN);
- g_imageClock->SetViewId(ALARM_IMAGE_CLOCK);
- g_imageClock->SetSrc(ALARM_CLOCK_ADD_PATH);
- g_imageClock->SetTouchable(true);
- g_imageClock->SetTouchable(true);
- UIView::OnClickListener *clockListener = static_cast<UIView::OnClickListener *>\
- (OHOS::AlarmViewEventListener::GetInstance());
- g_imageClock->SetOnClickListener(clockListener);
- g_imageClock->SetVisible(false);
-
-
- g_ClockPrompt = new UIImageView();
- if (g_ClockPrompt == nullptr)
- return false;
-
- g_ClockPrompt->SetPosition(184, 129, 100, 100);
- g_ClockPrompt->SetSrc("/user/res/Alarm/alarm_prompt.bin");
-
-
- g_StopBtn = new UILabelButtonExt();
- if (g_StopBtn == nullptr)
- return false;
-
- g_StopBtn->SetPosition(0, 366, 466, 100);
- g_StopBtn->SetViewId(ALARM_IMAGE_DELETE);
- g_StopBtn->SetTextId(STR_STOP);
- g_StopBtn->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
- g_StopBtn->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0x5A, 0x36));
- g_StopBtn->SetImageSrc(PNG_BUTTON_466x100_IMAGE, PNG_BUTTON_466x100_IMAGE);
- g_StopBtn->SetStyleForState(STYLE_BACKGROUND_COLOR, 0x00, UIButton::PRESSED);
- g_StopBtn->SetTouchable(true);
- // closeListener = static_cast<UIView::OnClickListener *>(AlarmViewEventListener::GetInstance());
- g_StopBtn->SetOnClickListener(closeListener);
-
- return true;
-}
-
-static void FreeAlarmViewImage(void)
-{
- delete g_imageDelete;
- g_imageDelete = nullptr;
- delete g_imageClock;
- g_imageClock = nullptr;
-
- delete g_StopBtn;
- g_StopBtn = nullptr;
- delete g_ClockPrompt;
- g_ClockPrompt = nullptr;
-}
-
-static bool CreateAlarmViewLabel(void)
-{
- struct tm localTime;
- int16 thisHour;
- int16 thisMin;
-
- g_mainLable = new UILabelExt(); // UILabel();
- if (g_mainLable == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmViewLabel g_mainLable is nullptr");
- return false;
+ // 释放闹钟视图
+ void FreeAlarmView(void)
+ {
+ if (g_alarmView != nullptr)
+ {
+ DisableAlarmTimer(AlarmTimerType::NOTIFY_ALARM_RING);
+ g_alarmView->RemoveAll();
+ if (g_mainLable != nullptr)
+ {
+ delete g_mainLable;
+ g_mainLable = nullptr;
+ }
+ if (g_dClock != nullptr)
+ {
+ delete g_dClock;
+ g_dClock = nullptr;
+ }
+ if (g_popTime != nullptr)
+ {
+ delete g_popTime;
+ g_popTime = nullptr;
+ }
+ if (g_ClockPrompt != nullptr)
+ {
+ delete g_ClockPrompt;
+ g_ClockPrompt = nullptr;
+ }
+ if (g_StopBtn != nullptr)
+ {
+ delete g_StopBtn;
+ g_StopBtn = nullptr;
+ }
+ RootView::GetInstance()->Remove(g_alarmView);
+ delete g_alarmView;
+ g_alarmView = nullptr;
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FreeAlarmView over!!");
+ }
}
- g_mainLable->SetPosition(83, 50, 300, 35); // (LABEL_X, LABEL_Y, LABEL_WIDTH, LABEL_HEIGHT);
- // g_mainLable->SetText("闹钟");
- g_mainLable->SetTextId(STR_ALARM);
- g_mainLable->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // LABEL_FONT);
- g_mainLable->SetStyle(STYLE_TEXT_FONT, 30);
- g_mainLable->SetStyle(STYLE_LINE_HEIGHT, 35);
- g_mainLable->SetLineBreakMode(UILabel::LINE_BREAK_OSCILLATION);
- g_mainLable->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
- g_mainLable->SetRollSpeed(70);
- g_dClock = new UIDigitalClock();
- if (g_dClock == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmViewLabel g_dClock is nullptr");
- delete g_mainLable;
- return false;
+ AlarmViewEventListener::AlarmViewEventListener()
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmViewEventListener :%p", this);
}
- g_dClock->SetPosition(155, 236, 156, 70); // (CLOCK_X, CLOCK_Y);
- // g_dClock->Resize(DIGITAL_CLOCK_WIDTH, DIGITAL_CLOCK_HEIGHT);
- g_dClock->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 60); // CLOCK_FONT);
- time_t seconds = time(nullptr);
- if (localtime_r(&seconds, &localTime) == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmViewLabel get localtime error!");
- delete g_mainLable;
- delete g_dClock;
- return false;
- }
- AlarmClockModel::GetInstance()->GetPopTimeData(&thisHour, &thisMin);
- g_dClock->SetDisplayMode(UIDigitalClock::DISPLAY_24_HOUR_NO_SECONDS);
- g_dClock->SetTime24Hour(thisHour, thisMin, 0);
- return true;
-}
-
-static void FreeAlarmViewLabel(void)
-{
- delete g_mainLable;
- g_mainLable = nullptr;
- delete g_dClock;
- g_dClock = nullptr;
-}
-UIViewGroup* CreateAlarmView(void)
-{
- AlarmClockModel::GetInstance()->AlarmGetClockNum();
- g_alarmView = new UIViewGroup();
- if (g_alarmView == nullptr) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateAlarmView g_alarmView null!");
- return nullptr;
+ AlarmViewEventListener::~AlarmViewEventListener()
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "~AlarmViewEventListener");
}
- g_alarmView->SetPosition(CONTAINER_X, CONTAINER_Y,
- Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
- g_alarmView->SetViewId(ALARM_VIEW_POPUP);
- if (!CreateAlarmViewLabel()) {
- delete g_alarmView;
- g_alarmView = nullptr;
- return nullptr;
+ AlarmViewEventListener *AlarmViewEventListener::GetInstance(void)
+ {
+ static AlarmViewEventListener alarmViewEventListener;
+ return &alarmViewEventListener;
}
- if (!CreateAlarmViewImage()) {
- delete g_alarmView;
- g_alarmView = nullptr;
- FreeAlarmViewLabel();
- return nullptr;
+ bool AlarmViewEventListener::OnDrag(UIView &view, const DragEvent &event)
+ {
+ return true;
}
- g_alarmView->Add(g_mainLable);
- g_alarmView->Add(g_dClock);
- g_alarmView->Add(g_imageDelete);
- g_alarmView->Add(g_imageClock);
- g_alarmView->Add(g_ClockPrompt);
- g_alarmView->Add(g_StopBtn);
- g_alarmView->SetDraggable(true);
- g_alarmView->SetTouchable(true);
- UIView::OnDragListener *listener = static_cast<UIView::OnDragListener*>(AlarmViewEventListener::GetInstance());
- g_alarmView->SetOnDragListener(listener);
- StartAlarmTimer(AlarmTimerType::NOTIFY_ALARM_RING, NOTOFY_NO_OPERATE_TIME);
- NotificationManager::GetInstance()->RegisterNotifyCleanupFunction(FreeAlarmView);
- return g_alarmView;
-}
-void FreeAlarmView(void)
-{
- if (g_alarmView != nullptr) {
- DisableAlarmTimer(AlarmTimerType::NOTIFY_ALARM_RING);
- g_alarmView->RemoveAll();
- FreeAlarmViewLabel();
- FreeAlarmViewImage();
- RootView::GetInstance()->Remove(g_alarmView);
- delete g_alarmView;
- g_alarmView = nullptr;
+ bool AlarmViewEventListener::OnDragEnd(UIView &view, const DragEvent &event)
+ {
+ // if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)
+ // {
+ // if (strcmp(view.GetViewId(), ALARM_VIEW_POPUP) == 0)
+ // {
+ // DisableAlarmTimer(AlarmTimerType::NOTIFY_ALARM_RING);
+ // AlarmPopUpPresenter::GetInstance()->DelayAlarmRing();
+ // UIViewGroup *alarmRingView = CreateAlarmRingView();
+ // NotificationManager::GetInstance()->screenContainer_->SetVisible(false);
+ // RootView::GetInstance()->Add(alarmRingView);
+ // alarmRingView->SetVisible(true);
+ // StartAlarmTimer(AlarmTimerType::NOTIFY_ALARM_DELAY, NOTIFY_THREE_SECONDS);
+ // }
+ // else if (strcmp(view.GetViewId(), ALARM_VIEW_CLOSE) == 0 ||
+ // strcmp(view.GetViewId(), ALARM_VIEW_DELAY) == 0)
+ // {
+ // NotificationManager::GetInstance()->StopNotify();
+ // }
+ // }
+ // return true;
+ if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)
+ {
+ if (strcmp(view.GetViewId(), ALARM_VIEW_POPUP) == 0)
+ {
+ DisableAlarmTimer(AlarmTimerType::NOTIFY_ALARM_RING);
+ // AlarmPopUpPresenter::GetInstance()->CancelAlarmRing();
+ FindWatchViewEventListener::GetInstance().PopInterCancelMusic();
+ NotificationManager::GetInstance()->StopNotify();
+ }
+ }
+ return true;
}
-}
-
-AlarmViewEventListener::AlarmViewEventListener()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmViewEventListener :%p", this);
-}
-
-AlarmViewEventListener::~AlarmViewEventListener()
-{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "~AlarmViewEventListener");
-}
-
-AlarmViewEventListener *AlarmViewEventListener::GetInstance(void)
-{
- static AlarmViewEventListener alarmViewEventListener;
- return &alarmViewEventListener;
-}
-
-bool AlarmViewEventListener::OnDrag(UIView& view, const DragEvent& event)
-{
- return true;
-}
-bool AlarmViewEventListener::OnDragEnd(UIView& view, const DragEvent& event)
-{
- if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {
- if (strcmp(view.GetViewId(), ALARM_VIEW_POPUP) == 0) {
+ bool AlarmViewEventListener::OnClick(UIView &view, const ClickEvent &event)
+ {
+ // UNUSED(event);
+ // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlamNotify ClickListener %s", view.GetViewId());
+ // if (strcmp(view.GetViewId(), ALARM_IMAGE_DELETE) == 0)
+ // {
+ // DisableAlarmTimer(AlarmTimerType::NOTIFY_ALARM_RING);
+ // AlarmPopUpPresenter::GetInstance()->CancelAlarmRing();
+ // UIViewGroup *alarmCloseView = CreateAlarmCloseView();
+ // NotificationManager::GetInstance()->screenContainer_->SetVisible(false);
+ // RootView::GetInstance()->Add(alarmCloseView);
+ // alarmCloseView->SetVisible(true);
+ // StartAlarmTimer(AlarmTimerType::NOTIFY_ALARM_CLOSE, NOTIFY_THREE_SECONDS);
+ // return true;
+ // }
+ // else if (strcmp(view.GetViewId(), ALARM_IMAGE_CLOCK) == 0)
+ // {
+ // DisableAlarmTimer(AlarmTimerType::NOTIFY_ALARM_RING);
+ // AlarmPopUpPresenter::GetInstance()->DelayAlarmRing();
+ // UIViewGroup *alarmRingView = CreateAlarmRingView();
+ // NotificationManager::GetInstance()->screenContainer_->SetVisible(false);
+ // RootView::GetInstance()->Add(alarmRingView);
+ // alarmRingView->SetVisible(true);
+ // StartAlarmTimer(AlarmTimerType::NOTIFY_ALARM_DELAY, NOTIFY_THREE_SECONDS);
+ // }
+ // return true;
+
+ UNUSED(event);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlamNotify ClickListener %s", view.GetViewId());
+ if (strcmp(view.GetViewId(), ALARM_IMAGE_STOP) == 0) // 点击停止闹钟响铃
+ {
DisableAlarmTimer(AlarmTimerType::NOTIFY_ALARM_RING);
- AlarmPopUpPresenter::GetInstance()->DelayAlarmRing();
- UIViewGroup* alarmRingView = CreateAlarmRingView();
- NotificationManager::GetInstance()->screenContainer_->SetVisible(false);
- RootView::GetInstance()->Add(alarmRingView);
- alarmRingView->SetVisible(true);
- StartAlarmTimer(AlarmTimerType::NOTIFY_ALARM_DELAY, NOTIFY_THREE_SECONDS);
- } else if (strcmp(view.GetViewId(), ALARM_VIEW_CLOSE) == 0 ||
- strcmp(view.GetViewId(), ALARM_VIEW_DELAY) == 0) {
+ // AlarmPopUpPresenter::GetInstance()->CancelAlarmRing();
+ FindWatchViewEventListener::GetInstance().PopInterCancelMusic();
NotificationManager::GetInstance()->StopNotify();
}
- }
- return true;
-}
-
-bool AlarmViewEventListener::OnClick(UIView& view, const ClickEvent& event)
-{
- UNUSED(event);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlamNotify ClickListener %s", view.GetViewId());
- if (strcmp(view.GetViewId(), ALARM_IMAGE_DELETE) == 0) {
- DisableAlarmTimer(AlarmTimerType::NOTIFY_ALARM_RING);
- AlarmPopUpPresenter::GetInstance()->CancelAlarmRing();
- UIViewGroup* alarmCloseView = CreateAlarmCloseView();
- NotificationManager::GetInstance()->screenContainer_->SetVisible(false);
- RootView::GetInstance()->Add(alarmCloseView);
- alarmCloseView->SetVisible(true);
- StartAlarmTimer(AlarmTimerType::NOTIFY_ALARM_CLOSE, NOTIFY_THREE_SECONDS);
return true;
- } else if (strcmp(view.GetViewId(), ALARM_IMAGE_CLOCK) == 0) {
- DisableAlarmTimer(AlarmTimerType::NOTIFY_ALARM_RING);
- AlarmPopUpPresenter::GetInstance()->DelayAlarmRing();
- UIViewGroup* alarmRingView = CreateAlarmRingView();
- NotificationManager::GetInstance()->screenContainer_->SetVisible(false);
- RootView::GetInstance()->Add(alarmRingView);
- alarmRingView->SetVisible(true);
- StartAlarmTimer(AlarmTimerType::NOTIFY_ALARM_DELAY, NOTIFY_THREE_SECONDS);
}
- return true;
-}
-} // namespace OHOS
+} // namespace OHOS