* @Author: luozheng 1732036298@qq.com\r
* @Date: 2024-04-07 18:15:53\r
* @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-09-28 17:51:27\r
+ * @LastEditTime: 2024-10-11 16:17:52\r
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/countdown/src/CountDownModel.cpp\r
*/\r
#include "countdown/include/CountDownModel.h"\r
#include "ui_resource_string.h"\r
#include "custom_runtime.h"\r
#include "uiservice/include/ui_service.h"\r
+#include "AppViewIDs.h"\r
+#include "NativeAbility.h"\r
namespace OHOS\r
{\r
/* -------------------------------------------------------------------------- */\r
// 声明定时器变量\r
- static osTimerId_t g_timer = NULL;\r
+ static osTimerId_t g_timer = nullptr;\r
int CountDownModel::g_CountDownTimes = {0};\r
static constexpr int32 NUM_TEN = 10; // 主要用于格式化输出,当小时、分钟或秒小于10时,在其前面添加一个’0’以保持常规时间格式,例如“09:05:03”。\r
static constexpr int16 NUM_TIME_MIN = 60;\r
/*触发铃声的开始*/\r
void CountDownModel::RequestStartRingtone(void)\r
{\r
- if(uapi_sleep_mode_flag_get())\r
+ if (uapi_sleep_mode_flag_get())\r
{\r
return;\r
}\r
PostRingtoneEvent(&CountDownModel::StopRingtonePlaybackAndReleaseResources);\r
}\r
\r
+ // 判断计时器是否结束\r
+ bool CountDownModel::CountDownTimerIsEnd() // 计时器是否结束\r
+ {\r
+ if (g_timer == nullptr)\r
+ {\r
+ return true;\r
+ }\r
+ return false;\r
+ }\r
+ //获取是否需要跳转到开始到计时界面\r
+ bool CountDownModel::GetChanageToStartCountDownView()\r
+ {\r
+ return IsChanageToStartCountDownViewFlag;\r
+ }\r
+\r
+ //设置是否需要跳转到开始到计时界面\r
+ void CountDownModel::SetChanageToStartCountDownView(bool val)\r
+ {\r
+ IsChanageToStartCountDownViewFlag = val;\r
+ }\r
+\r
+ bool CountDownModel::CountDownViewIsExit() // 计时器界面是否退出\r
+ {\r
+ MainCountDownView *g_CountDownView = MainCountDownView::GetInstance();\r
+ if (g_CountDownView == nullptr)\r
+ {\r
+ return true;\r
+ }\r
+ return false;\r
+ }\r
+\r
+ //处理倒计时到期时的一些操作\r
+ void CountDownModel::HandCountDownEndOperator(void)\r
+ {\r
+ StartCountDownView *p_StartCountDownView = StartCountDownView::GetInstance();\r
+ if (p_StartCountDownView)\r
+ {\r
+ CountDown_StopTimer(); // 停止定时器\r
+ ScreenTurnOn(5 * 1000); // 亮屏5s\r
+ CountDownModel::GetInstance()->RequestStartRingtone(); // 播放铃声\r
+\r
+ StartCountDownView::GetInstance()->GetPlayOrPauseToggleButton()->SetVisible(false);\r
+ p_StartCountDownView->GetRepeatButton()->SetVisible(true);\r
+ /*倒计时结束 显示大图标 */\r
+ p_StartCountDownView->ShowEndView(true);\r
+ }\r
+ }\r
+\r
+ bool CountDownModel::GetCountDownTimerIsPause()\r
+ {\r
+ return CountDownTimerIsPauseFlag;\r
+ }\r
+ void CountDownModel::SetCountDownTimerIsPause(bool val)\r
+ {\r
+ CountDownTimerIsPauseFlag = val;\r
+ }\r
/* ----------------------------------- 定时器 ---------------------------------- */\r
\r
/*\r
*/\r
static void CountDown_TimerCallbackProc(int data)\r
{\r
- // CountDownModel::g_CountDownTimes--; // 每次回调减少1秒\r
- // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "g_CountDownTimes:%d\n", CountDownModel::g_CountDownTimes);\r
-\r
- if (MainCountDownView::GetInstance() == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CountDown_TimerCallbackProc] GetInstance is NULL");\r
- return;\r
- }\r
-\r
- if (MainCountDownView::GetInstance()->GetStartCountDownView()->GetShowCountDownTimelabel() == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CountDown_TimerCallbackProc] GetShowCountDownTimelabel is NULL");\r
- return;\r
- }\r
-\r
- if (MainCountDownView::GetInstance()->GetStartCountDownView()->GetPlayOrPauseToggleButton() == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CountDown_TimerCallbackProc] GetPlayOrPauseToggleButton is NULL");\r
- return;\r
- }\r
-\r
- if (CountDownModel::GetInstance()->DisplayCountDownDuration() == nullptr)\r
- {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CountDown_TimerCallbackProc] DisplayCountDownDuration is NULL");\r
- return;\r
- }\r
-\r
+ StartCountDownView *p_StartCountDownView = StartCountDownView::GetInstance();\r
// 检查倒计时是否结束\r
if (CountDownModel::g_CountDownTimes <= 0)\r
{\r
- ScreenTurnOn(5*1000);//亮屏5s\r
-\r
- MainCountDownView::GetInstance()->GetStartCountDownView()->GetPlayOrPauseToggleButton()->SetVisible(false);\r
- MainCountDownView::GetInstance()->GetStartCountDownView()->GetRepeatButton()->SetVisible(true);\r
- CountDownModel::GetInstance()->CountDown_StopTimer(); // 停止定时器\r
-\r
- /*倒计时结束 显示大图标 */\r
- MainCountDownView::GetInstance()->GetStartCountDownView()->ShowEndView(true);\r
-\r
- // 进行倒计时结束时的额外操作,播放声音等\r
- CountDownModel::GetInstance()->RequestStartRingtone();\r
+ if (CountDownModel::GetInstance()->CountDownViewIsExit()) // 如果已经退出了界面定时器还在跑,就先跳转Slice\r
+ {\r
+ CountDownModel::GetInstance()->CountDown_StopTimer(); // 停止定时器\r
+ CountDownModel::GetInstance()->SetChanageToStartCountDownView(true);\r
+ NativeAbility::GetInstance().EnterSlice(VIEW_MAIN_COUNTDOWN);\r
+ return;\r
+ }\r
+ else\r
+ {\r
+ if (p_StartCountDownView)\r
+ {\r
+ CountDownModel::GetInstance()->HandCountDownEndOperator();\r
+ }\r
+ }\r
}\r
else\r
{\r
- // 更新显示\r
- MainCountDownView::GetInstance()->GetStartCountDownView()->GetShowCountDownTimelabel()->SetText(CountDownModel::GetInstance()->DisplayCountDownDuration());\r
+ if (p_StartCountDownView)\r
+ {\r
+ // 更新显示\r
+ p_StartCountDownView->GetShowCountDownTimelabel()->SetText(CountDownModel::GetInstance()->DisplayCountDownDuration());\r
+ }\r
}\r
\r
return;\r
void CountDownModel::CountDown_StartTimer(uint32_t interval)\r
{\r
/* -------------------------- 1.检查定时器是否已经存在,如果存在则返回 ------------------------- */\r
- if (g_timer != NULL)\r
+ if (g_timer != nullptr)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CountDownModel::CountDown_StartTimer Timer already exists!!");\r
return;\r
}\r
\r
/* --------------------------------- 2.创建定时器 -------------------------------- */\r
- g_timer = osTimerNew((osTimerFunc_t)CountDown_TimerCallback, osTimerPeriodic, NULL, NULL);\r
+ g_timer = osTimerNew((osTimerFunc_t)CountDown_TimerCallback, osTimerPeriodic, nullptr, nullptr);\r
// 检查定时器创建是否成功\r
- if (g_timer == NULL)\r
+ if (g_timer == nullptr)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CountDownModel::CountDown_StartTimer Timer create failed!!");\r
return;\r
/* --------------------------------- 4.启动定时器 -------------------------------- */\r
// g_timerStartTimestamp = GetCurrentTimestamp(); // 假设GetCurrentTimestamp()是获取当前时间戳的函数\r
osStatus_t ret = osTimerStart(g_timer, tick);\r
- /* -------------------- 5.检查定时器启动是否成功,如果启动失败,删除定时器并置为 NULL -------------------- */\r
+ /* -------------------- 5.检查定时器启动是否成功,如果启动失败,删除定时器并置为 nullptr -------------------- */\r
if (ret != osOK)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[CountDown_StartTimer] osTimerDelete failed, ret = %lx!!", ret);\r
- if (g_timer != NULL)\r
+ if (g_timer != nullptr)\r
{\r
ret = osTimerDelete(g_timer);\r
}\r
- g_timer = NULL;\r
+ g_timer = nullptr;\r
return;\r
}\r
return;\r
void CountDownModel::CountDown_StopTimer(void)\r
{\r
// 检查定时器是否存在\r
- if (g_timer != NULL)\r
+ if (g_timer != nullptr)\r
{\r
osTimerStop(g_timer);\r
- // 删除定时器并置为 NULL\r
+ // 删除定时器并置为 nullptr\r
osStatus_t ret = osTimerDelete(g_timer);\r
if (ret != osOK)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScanTimerCallback osTimerDelete failed, ret = %lx!!", ret);\r
}\r
- g_timer = NULL;\r
+ g_timer = nullptr;\r
g_CountDownTimes = 0;\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "stop timer success!!");\r
}\r
}\r
/*\r
void CountDownModel::CountDown_PauseTimer(void)\r
{\r
// 检查定时器是否存在\r
- if (g_timer != NULL)\r
+ if (g_timer != nullptr)\r
{\r
// 暂停定时器,但不删除它\r
osStatus_t ret = osTimerStop(g_timer);\r
void CountDownModel::CountDown_ResumeTimer(uint32_t interval)\r
{\r
// 检查定时器是否存在\r
- if (g_timer != NULL)\r
+ if (g_timer != nullptr)\r
{\r
int tick = osMs2Tick(interval);\r
// 恢复定时器\r
#include "countdown/include/MainCountDownPresenter.h"\r
#include "wearable_log.h"\r
#include "common/image_cache_manager.h"\r
+#include "countdown/include/CountDownModel.h"\r
/*倒计时的主界面*/\r
namespace OHOS\r
{\r
MainCountDownView::~MainCountDownView()\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainCountDownView::~MainCountDownView");\r
- ClearAll();\r
g_pMainCountDownView = nullptr;\r
}\r
\r
\r
void MainCountDownView::ClearAll()\r
{\r
- group->RemoveAll();\r
- scrollView[MAIN_COUNTDOWN]->RemoveAll();\r
- ImageCacheManager::GetInstance().UnloadSingleRes(COUNTDOWM_TIMER_ICON);\r
-\r
- if (Title != nullptr)\r
- {\r
- delete Title;\r
- Title = nullptr;\r
- }\r
-\r
- if (QuickStart != nullptr)\r
- {\r
- delete QuickStart;\r
- QuickStart = nullptr;\r
- }\r
-\r
- if (CUSTOM_COUNTDOWN != nullptr)\r
- {\r
- delete CUSTOM_COUNTDOWN;\r
- CUSTOM_COUNTDOWN = nullptr;\r
- }\r
-\r
- if (COUNTDOWN_ONE_MINUTE_BUTTON != nullptr)\r
- {\r
- delete COUNTDOWN_ONE_MINUTE_BUTTON;\r
- COUNTDOWN_ONE_MINUTE_BUTTON = nullptr;\r
- }\r
-\r
- if (COUNTDOWN_FIVE_MINUTE_BUTTON != nullptr)\r
- {\r
- delete COUNTDOWN_FIVE_MINUTE_BUTTON;\r
- COUNTDOWN_FIVE_MINUTE_BUTTON = nullptr;\r
- }\r
-\r
- if (COUNTDOWN_TEN_MINUTE_BUTTON != nullptr)\r
- {\r
- delete COUNTDOWN_TEN_MINUTE_BUTTON;\r
- COUNTDOWN_TEN_MINUTE_BUTTON = nullptr;\r
- }\r
-\r
- if (COUNTDOWN_THIRTY_MINUTE_BUTTON != nullptr)\r
+ if (scrollView[MAIN_COUNTDOWN] != nullptr)\r
{\r
- delete COUNTDOWN_THIRTY_MINUTE_BUTTON;\r
- COUNTDOWN_THIRTY_MINUTE_BUTTON = nullptr;\r
+ scrollView[MAIN_COUNTDOWN]->RemoveAll();\r
+ if (Title != nullptr)\r
+ {\r
+ delete Title;\r
+ Title = nullptr;\r
+ }\r
+ if (QuickStart != nullptr)\r
+ {\r
+ delete QuickStart;\r
+ QuickStart = nullptr;\r
+ }\r
+ ImageCacheManager::GetInstance().UnloadSingleRes(COUNTDOWM_TIMER_ICON);\r
+ if (CUSTOM_COUNTDOWN != nullptr)\r
+ {\r
+ delete CUSTOM_COUNTDOWN;\r
+ CUSTOM_COUNTDOWN = nullptr;\r
+ }\r
+ if (COUNTDOWN_ONE_MINUTE_BUTTON != nullptr)\r
+ {\r
+ delete COUNTDOWN_ONE_MINUTE_BUTTON;\r
+ COUNTDOWN_ONE_MINUTE_BUTTON = nullptr;\r
+ }\r
+ if (COUNTDOWN_FIVE_MINUTE_BUTTON != nullptr)\r
+ {\r
+ delete COUNTDOWN_FIVE_MINUTE_BUTTON;\r
+ COUNTDOWN_FIVE_MINUTE_BUTTON = nullptr;\r
+ }\r
+ if (COUNTDOWN_TEN_MINUTE_BUTTON != nullptr)\r
+ {\r
+ delete COUNTDOWN_TEN_MINUTE_BUTTON;\r
+ COUNTDOWN_TEN_MINUTE_BUTTON = nullptr;\r
+ }\r
+ if (COUNTDOWN_THIRTY_MINUTE_BUTTON != nullptr)\r
+ {\r
+ delete COUNTDOWN_THIRTY_MINUTE_BUTTON;\r
+ COUNTDOWN_THIRTY_MINUTE_BUTTON = nullptr;\r
+ }\r
+ delete scrollView[MAIN_COUNTDOWN];\r
+ scrollView[MAIN_COUNTDOWN] = nullptr;\r
}\r
-\r
if (p_CountDownTimeConfigView != nullptr)\r
{\r
delete p_CountDownTimeConfigView;\r
p_CountDownTimeConfigView = nullptr;\r
}\r
-\r
if (p_CountDownTimeNotNullView != nullptr)\r
{\r
delete p_CountDownTimeNotNullView;\r
p_CountDownTimeNotNullView = nullptr;\r
}\r
-\r
if (p_StartCountDownView != nullptr)\r
{\r
delete p_StartCountDownView;\r
p_StartCountDownView = nullptr;\r
}\r
-\r
- if (scrollView[MAIN_COUNTDOWN] != nullptr)\r
- {\r
- delete scrollView[MAIN_COUNTDOWN];\r
- scrollView[MAIN_COUNTDOWN] = nullptr;\r
- }\r
-\r
- if (group != nullptr)\r
- {\r
- delete group;\r
- group = nullptr;\r
- }\r
}\r
\r
- void MainCountDownView::MainCountDownViewInit()\r
+ UIScrollView *MainCountDownView::MainCountDownViewInit()\r
{\r
- if (group == nullptr)\r
+ if (scrollView[MAIN_COUNTDOWN] == nullptr)\r
{\r
- /* ---------------------------------- group --------------------------------- */\r
- group = new UIViewGroup();\r
- group->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
- group->SetTouchable(true);\r
- group->SetDraggable(true);\r
/* ----------------------- scrollView[MAIN_COUNTDOWN] ----------------------- */\r
scrollView[MAIN_COUNTDOWN] = new UIScrollView();\r
if (scrollView[MAIN_COUNTDOWN] == nullptr)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "scrollView[MAIN_COUNTDOWN] is new fail!!");\r
- return;\r
+ return nullptr;\r
}\r
scrollView[MAIN_COUNTDOWN]->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
scrollView[MAIN_COUNTDOWN]->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
if (draglistener == nullptr)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "draglistener is nullptr!!");\r
- return;\r
+ return nullptr;\r
}\r
scrollView[MAIN_COUNTDOWN]->SetOnDragListener(draglistener);\r
scrollView[MAIN_COUNTDOWN]->SetReboundSize(50); // 设置回弹大小\r
if (Title == nullptr)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Title is new fail!!");\r
- return;\r
+ return nullptr;\r
}\r
Title->SetPosition(83, 50, 300, 35);\r
Title->SetStyle(STYLE_TEXT_FONT, 30);\r
if (CUSTOM_COUNTDOWN == nullptr)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CUSTOM_COUNTDOWN is new fail!!");\r
- return;\r
+ return nullptr;\r
}\r
CUSTOM_COUNTDOWN->SetPosition(43, 130, 380, 100);\r
CUSTOM_COUNTDOWN->SetViewId(COUNTDOWN_LABELBUTTON_VIEWID);\r
if (QuickStart == nullptr)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "QuickStart is new fail!!");\r
- return;\r
+ return nullptr;\r
}\r
QuickStart->SetPosition(83, 270, 300, 35);\r
QuickStart->SetStyle(STYLE_TEXT_FONT, 30);\r
if (COUNTDOWN_ONE_MINUTE_BUTTON == nullptr)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "COUNTDOWN_ONE_MINUTE_BUTTON is new fail!!");\r
- return;\r
+ return nullptr;\r
}\r
/* ---------------------- COUNTDOWN_FIVE_MINUTE_BUTTON ---------------------- */\r
COUNTDOWN_FIVE_MINUTE_BUTTON = SetUILabelButton(243, 345, 180, 150, COUNTDOWN_FIVE_MINUTE_BUTTON_VIEWID, "5分钟", STR_5_MIN);\r
if (COUNTDOWN_FIVE_MINUTE_BUTTON == nullptr)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "COUNTDOWN_FIVE_MINUTE_BUTTON is new fail!!");\r
- return;\r
+ return nullptr;\r
}\r
/* ----------------------- COUNTDOWN_TEN_MINUTE_BUTTON ---------------------- */\r
COUNTDOWN_TEN_MINUTE_BUTTON = SetUILabelButton(43, 515, 180, 150, COUNTDOWN_TEN_MINUTE_BUTTON_VIEWID, "10分钟", STR_10_MIN);\r
if (COUNTDOWN_TEN_MINUTE_BUTTON == nullptr)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "COUNTDOWN_TEN_MINUTE_BUTTON is new fail!!");\r
- return;\r
+ return nullptr;\r
}\r
/* --------------------- COUNTDOWN_THIRTY_MINUTE_BUTTON --------------------- */\r
COUNTDOWN_THIRTY_MINUTE_BUTTON = SetUILabelButton(243, 515, 180, 150, COUNTDOWN_THIRTY_MINUTE_BUTTON_VIEWID, "30分钟", STR_30_MIN);\r
if (COUNTDOWN_THIRTY_MINUTE_BUTTON == nullptr)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "COUNTDOWN_THIRTY_MINUTE_BUTTON is new fail!!");\r
- return;\r
+ return nullptr;\r
}\r
/* -------------------------------------------------------------------------- */\r
UIView::OnClickListener *ButtonOnClick = static_cast<UIView::OnClickListener *>(MainCountDownPresenter::GetInstance());\r
COUNTDOWN_FIVE_MINUTE_BUTTON->SetOnClickListener(ButtonOnClick);\r
COUNTDOWN_TEN_MINUTE_BUTTON->SetOnClickListener(ButtonOnClick);\r
COUNTDOWN_THIRTY_MINUTE_BUTTON->SetOnClickListener(ButtonOnClick);\r
+ /* -------------------------------------------------------------------------- */\r
+ scrollView[MAIN_COUNTDOWN]->Add(Title);\r
+ scrollView[MAIN_COUNTDOWN]->Add(CUSTOM_COUNTDOWN);\r
+ scrollView[MAIN_COUNTDOWN]->Add(QuickStart);\r
+ scrollView[MAIN_COUNTDOWN]->Add(COUNTDOWN_ONE_MINUTE_BUTTON);\r
+ scrollView[MAIN_COUNTDOWN]->Add(COUNTDOWN_FIVE_MINUTE_BUTTON);\r
+ scrollView[MAIN_COUNTDOWN]->Add(COUNTDOWN_TEN_MINUTE_BUTTON);\r
+ scrollView[MAIN_COUNTDOWN]->Add(COUNTDOWN_THIRTY_MINUTE_BUTTON);\r
}\r
+ return scrollView[MAIN_COUNTDOWN];\r
}\r
\r
UILabelButtonExt *MainCountDownView::SetUILabelButton(int x, int y, int w, int h, const char *id, const char *text, int textId)\r
return button;\r
}\r
\r
- //获取开始倒计时视图\r
+ // 获取开始倒计时视图\r
StartCountDownView *MainCountDownView::GetStartCountDownView(void)\r
{\r
return p_StartCountDownView;\r
/*1.切换到主倒计时视图*/\r
bool MainCountDownView::ChangeMainCountDown(int16_t thisView)\r
{\r
- if (scrollView[thisView] == nullptr)\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainCountDownView::ChangeMainCountDown");\r
+ UIScrollView *view = MainCountDownViewInit();\r
+ if (view == nullptr)\r
{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainCountDownView::ChangeMainCountDown");\r
- group->Add(scrollView[thisView]);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "view nullptr fail");\r
+ return false;\r
}\r
+ scrollView[thisView] = view;\r
+ container_->Add(scrollView[thisView]);\r
return true;\r
}\r
\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainCountDownView:: new scrollView[%d] fail", thisView);\r
return false;\r
}\r
- scrollView[thisView] = p_CountDownTimeConfigView->CountDownTimeConfigViewInit();\r
- group->Add(scrollView[thisView]);\r
+ UIScrollView *view = p_CountDownTimeConfigView->CountDownTimeConfigViewInit();\r
+ if (view == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "view nullptr fail");\r
+ return false;\r
+ }\r
+ scrollView[thisView] = view;\r
+ container_->Add(scrollView[thisView]);\r
}\r
return true;\r
}\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainCountDownView:: new scrollView[%d] fail", thisView);\r
return false;\r
}\r
- scrollView[thisView] = p_StartCountDownView->StartCountDownViewInit();\r
- group->Add(scrollView[thisView]);\r
+ UIScrollView *view = p_StartCountDownView->StartCountDownViewInit();\r
+ if (view == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "view nullptr fail");\r
+ return false;\r
+ }\r
+ scrollView[thisView] = view;\r
+ container_->Add(scrollView[thisView]);\r
}\r
if (p_StartCountDownView)\r
{\r
p_StartCountDownView->UpdateimageAndLabelPosition();\r
+ if(CountDownModel::GetInstance()->GetChanageToStartCountDownView() == true)\r
+ {\r
+ CountDownModel::GetInstance()->SetChanageToStartCountDownView(false);\r
+ CountDownModel::GetInstance()->HandCountDownEndOperator();\r
+ }\r
}\r
return true;\r
}\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainCountDownView:: new scrollView[%d] fail", thisView);\r
return false;\r
}\r
- scrollView[thisView] = p_CountDownTimeNotNullView->CountDownTimeNotNullViewInit();\r
- group->Add(scrollView[thisView]);\r
+ UIScrollView *view = p_CountDownTimeNotNullView->CountDownTimeNotNullViewInit();\r
+ if (view == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "view nullptr fail");\r
+ return false;\r
+ }\r
+ scrollView[thisView] = view;\r
+ container_->Add(scrollView[thisView]);\r
}\r
return true;\r
}\r
return false;\r
}\r
\r
+ bool MainCountDownView::CheckViewParam(int16_t hideView, int16_t showView)\r
+ {\r
+ if (showView < 0 || showView >= COUNTDOWN_MAX)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RebootView::CheckViewParam showView err.");\r
+ return false;\r
+ }\r
+\r
+ if (hideView < 0 || hideView > COUNTDOWN_MAX)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RebootView::CheckViewParam hideView err.");\r
+ return false;\r
+ }\r
+\r
+ return true;\r
+ }\r
+\r
// 4.切换视图\r
void MainCountDownView::ChangeView(int16_t hideView, int16_t showView)\r
{\r
- if (hideView > COUNTDOWN_MAX)\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainCountDownView::ChangeView %d, %d", hideView, showView);\r
+ if (!CheckViewParam(hideView, showView))\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainCountDownView:: CountDownViewId Overstep ones bounds");\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainCountDownView::CheckViewParam failed.");\r
return;\r
}\r
- scrollView[hideView]->SetVisible(false);\r
+ if (hideView != COUNTDOWN_MAX)\r
+ {\r
+ if (scrollView[hideView] == nullptr)\r
+ {\r
+ return;\r
+ }\r
+ scrollView[hideView]->SetVisible(false);\r
+ }\r
ClickFunc(showView);\r
scrollView[showView]->SetVisible(true);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainCountDownView:: ChangeView end!!!%d", showView);\r
Draw();\r
}\r
/* -------------------------------------------------------------------------- */\r
void MainCountDownView::OnStart()\r
{\r
View<MainCountDownPresenter>::OnStart();\r
- MainCountDownViewInit();\r
+ SetContainerView(new UIViewGroup());\r
+ if (GetContainer() == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "container_ new fail!!");\r
+ return;\r
+ }\r
+ container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
+ container_->SetTouchable(true);\r
+ container_->SetDraggable(true);\r
+ /* -------------------------------------------------------------------------- */\r
+ if (CountDownModel::GetInstance()->CountDownTimerIsEnd() == false ||\r
+ CountDownModel::GetInstance()->GetChanageToStartCountDownView() == true)\r
+ {\r
+ ChangeView(COUNTDOWN_MAX, START_COUNTDOWN); // 如果倒计时的timer没有结束或需要跳转到开始倒计时界面,则跳转到开始倒计时界面\r
+ }\r
+ else\r
+ {\r
+ ChangeView(COUNTDOWN_MAX, MAIN_COUNTDOWN); // 如果倒计时的timer已经结束,则跳转到主界面\r
+ }\r
+ /* -------------------------------------------------------------------------- */\r
// 增加按键监听\r
RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::MainCountDownPresenter::GetInstance();\r
RootView::GetInstance()->SetOnKeyActListener(keyactListener);\r
void MainCountDownView::OnSetUpView()\r
{\r
View<MainCountDownPresenter>::OnSetUpView();\r
- scrollView[MAIN_COUNTDOWN]->Add(Title);\r
- scrollView[MAIN_COUNTDOWN]->Add(CUSTOM_COUNTDOWN);\r
- scrollView[MAIN_COUNTDOWN]->Add(QuickStart);\r
- scrollView[MAIN_COUNTDOWN]->Add(COUNTDOWN_ONE_MINUTE_BUTTON);\r
- scrollView[MAIN_COUNTDOWN]->Add(COUNTDOWN_FIVE_MINUTE_BUTTON);\r
- scrollView[MAIN_COUNTDOWN]->Add(COUNTDOWN_TEN_MINUTE_BUTTON);\r
- scrollView[MAIN_COUNTDOWN]->Add(COUNTDOWN_THIRTY_MINUTE_BUTTON);\r
- group->Add(scrollView[MAIN_COUNTDOWN]);\r
- RootView::GetInstance()->Add(group);\r
- container_ = group;\r
Draw();\r
}\r
\r
{\r
View<MainCountDownPresenter>::OnStop();\r
RootView::GetInstance()->ClearOnKeyActListener();\r
- RootView::GetInstance()->RemoveAll();\r
+ if (container_ != nullptr)\r
+ {\r
+ container_->RemoveAll();\r
+ delete container_;\r
+ container_ = nullptr;\r
+ }\r
+ ClearAll();\r
return;\r
}\r
}
\ No newline at end of file