From: luozheng <1732036298@qq.com> Date: Thu, 9 May 2024 03:29:51 +0000 (+0800) Subject: 优化下拉界面的数据更新逻辑 X-Git-Tag: release_V1.2.70_20241020_135402~1121^2~4^2~9 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=0fb2a781343281a437fdccfed96b8f8dc89c5ffe;p=mirrors%2FFD230.git 优化下拉界面的数据更新逻辑 如果当前是下拉界面,先更新一次下拉窗口的数据包括,电池电量时间,信号强度等等数据,然后开启一个每2秒更新数据的定时器。 如果不在下拉界面了停止定时器。 遗留一个问题:如果在下拉界面息屏时候停止了定时器,亮屏后需要手动上拉界面再下拉回到下拉界面才能更新数据。 --- diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/MainPresenterSample.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/MainPresenterSample.h index ac3329ee9..b02956da6 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/main/include/MainPresenterSample.h +++ b/code/sdk/application/wearable/fd230app/nativeui/main/include/MainPresenterSample.h @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-03-01 15:10:34 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-05-08 15:57:02 + * @LastEditTime: 2024-05-09 10:00:40 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/main/include/MainPresenterSample.h */ @@ -79,6 +79,7 @@ public: CardId *GetCardSettings(void); void InitDialSettings(void); DialSetting& GetDialSetting(); + void UpdataTime(); void UpdataBaseData(); void PullUpDown_StartTimer(uint32_t interval); void PullUpDown_StopTimer(void); diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/MainPresenterSample.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/MainPresenterSample.cpp index 5fa5d6a18..ffef8d019 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/main/src/MainPresenterSample.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/main/src/MainPresenterSample.cpp @@ -80,7 +80,6 @@ namespace OHOS RootView::GetInstance()->SetOnKeyActListener(keyActListener_); } } - PullUpDown_StartTimer(1000); } void MainPresenterSample::OnPause(void) {} @@ -196,22 +195,6 @@ namespace OHOS UNUSED(event); UNUSED(view); WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainPresenterSample OnDrag"); - - uint8_t cardId = view_->GetHorCurrentCard(); - if (cardId == WATCH_FACE) - { - PRINT("WATCH_FACE!\r\n"); - if (event.GetDragDirection() == DragEvent::DIRECTION_TOP_TO_BOTTOM) - { - PRINT("DIRECTION_TOP_TO_BOTTOM!\r\n"); - if (PullUpDownView::GetInstance() == nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TempPresenter::OnDrag TempMainView::GetInstance() nullptr"); - return false; - } - UpdataBaseData(); - } - } return true; } void MainPresenterSample::SetPage(int8_t id) @@ -254,11 +237,24 @@ namespace OHOS void MainPresenterSample::OnSwipe(UISwipeView &view) { - //UNUSED(view); - // if(MainViewSample::GetInstance()->IsPullUpViewPage()) - // { - // UpdataBaseData(); - // } + // UNUSED(view); + /* -------------------------------------------------------------------------- */ + /* + * @brief 如果当前是下拉界面,先更新一次下拉窗口的数据包括,电池电量,时间,信号强度等等数据, + * 然后开启一个每2秒更新数据的定时器。 + * 如果不在下拉界面了停止定时器 + */ + if (MainViewSample::GetInstance()->IsPullUpViewPage()) + { + UpdataBaseData(); + PullUpDownView::GetInstance()->UpdateSignalStrengthStatusAndBatteryPosition(); + PullUpDown_StartTimer(1000); + } + else + { + PullUpDown_StopTimer(); + } + /* -------------------------------------------------------------------------- */ CardId cardId = view_->GetHorCurrentCard(); callback_->OnSwipe(view); @@ -369,11 +365,6 @@ namespace OHOS dynamic_cast(view_->GetViewById(WATCH_FACE))->UpdateTime(); } } - //当前在下拉界面 - // if (view_->IsPullUpViewPage()) - // { - // UpdataBaseData(); - // } } void MainPresenterSample::InitCardSettings(void) @@ -400,10 +391,25 @@ namespace OHOS return MainModel::GetInstance().GetDialSetting(); } + // 更新时间 + void MainPresenterSample::UpdataTime() + { + // 获取当前时间 + char *timeStr = (char *)malloc(9); + if (!timeStr || uapi_get_HHMMSS_Time(timeStr, ':', false) != ERRCODE_SUCC) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to get start time"); + free(timeStr); + return; + } + PullUpDownView::GetInstance()->GetTimeLabel()->SetText(timeStr); + free(timeStr); + } + void MainPresenterSample::UpdataBaseData() { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::UpdataBaseData"); - // 获取当前时间 + // 解析日期信息 char *dateStr = (char *)malloc(9); if (uapi_get_YYMMDD_Time(dateStr, '/') != ERRCODE_SUCC) { @@ -411,7 +417,7 @@ namespace OHOS free(dateStr); return; } - // 解析日期信息 + // 获取当前时间 char *timeStr = (char *)malloc(9); if (uapi_get_HHMMSS_Time(timeStr, ':', false) != ERRCODE_SUCC) { @@ -430,7 +436,6 @@ namespace OHOS free(weekStr); return; } - PRINT("Read ALLData!\n"); // 获取电池电量信息 float voltage = 0.0F; @@ -448,7 +453,7 @@ namespace OHOS if (value <= (i + 1) * 10) { progressImageSrc = progressImages[i]; - PRINT("Update progressImageSrc!\n"); + // PRINT("Update progressImageSrc!\n"); break; } } @@ -463,28 +468,37 @@ namespace OHOS free(dateStr); free(timeStr); free(weekStr); + + PRINT("ALLData are refresh!\n"); } /* -------------------------------------------------------------------------- */ // 声明定时器变量 static osTimerId_t g_timer = NULL; - uint8_t MainPresenterSample::g_PullUpDownTimes = 5;//5秒 + static uint8_t UPDATETIME = 2; + uint8_t MainPresenterSample::g_PullUpDownTimes = UPDATETIME; // 2秒 /*定时器到期时的处理*/ static void PullUpDown_TimerCallbackProc(int data) { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDown_TimerCallbackProc"); MainPresenterSample::g_PullUpDownTimes--; - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "%d",MainPresenterSample::g_PullUpDownTimes); - if(MainPresenterSample::g_PullUpDownTimes <= 0) + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "%d", MainPresenterSample::g_PullUpDownTimes); + if (MainPresenterSample::g_PullUpDownTimes <= 0) { - MainPresenterSample::g_PullUpDownTimes = 5;//每5秒更新一次,时间 - MainPresenterSample::GetInstance()->UpdataBaseData(); + MainPresenterSample::g_PullUpDownTimes = UPDATETIME; // + MainPresenterSample::GetInstance()->UpdataTime(); PullUpDownView::GetInstance()->UpdateSignalStrengthStatusAndBatteryPosition(); } + + if (uapi_get_screen_state() == 1) // 息屏停止更新数据 + { + GraphicService::GetInstance()->PostGraphicEvent(std::bind(&MainPresenterSample::PullUpDown_StopTimer, MainPresenterSample::GetInstance())); + } + return; } - + /* * @brief 回调函数 */ @@ -549,6 +563,7 @@ namespace OHOS WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "osTimerDelete failed, ret = %lx!!", ret); } g_timer = NULL; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "g_timer stop success"); } } diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/PullUpDownView.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/PullUpDownView.cpp index 06951fcca..ff564c821 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/main/src/PullUpDownView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/main/src/PullUpDownView.cpp @@ -520,7 +520,7 @@ namespace OHOS progress->SetImage(progressImageSrc, nullptr); progress->SetBackgroundStyle(STYLE_BACKGROUND_OPA, 0x00); progress->SetBackgroundStyle(STYLE_TEXT_COLOR, 0xff000000); - progress->SetForegroundStyle(STYLE_BACKGROUND_COLOR, 0xff2195F6); + progress->SetForegroundStyle(STYLE_BACKGROUND_COLOR, 0xffffffff); progress->SetForegroundStyle(STYLE_TEXT_COLOR, 0xff000000); progress->SetForegroundStyle(STYLE_LINE_COLOR, 0xff45A5FF);