RootView::GetInstance()->SetOnKeyActListener(keyActListener_);
}
}
+ PullUpDown_StartTimer(1000);
}
void MainPresenterSample::OnPause(void) {}
delete keyActListener_;
keyActListener_ = nullptr;
}
+ PullUpDown_StopTimer();
}
bool MainPresenterSample::OnClick(UIView &view, const ClickEvent &event)
void MainPresenterSample::OnSwipe(UISwipeView &view)
{
//UNUSED(view);
- if(MainViewSample::GetInstance()->IsPullUpViewPage())
- {
- UpdataBaseData();
- }
+ // if(MainViewSample::GetInstance()->IsPullUpViewPage())
+ // {
+ // UpdataBaseData();
+ // }
CardId cardId = view_->GetHorCurrentCard();
callback_->OnSwipe(view);
void MainPresenterSample::UpdataBaseData()
{
- PRINT("RefreshData Begin!\n");
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PullUpDownView::UpdataBaseData");
// 获取当前时间
char *dateStr = (char *)malloc(9);
if (uapi_get_YYMMDD_Time(dateStr, '/') != ERRCODE_SUCC)
free(weekStr);
}
+ /* -------------------------------------------------------------------------- */
+ // 声明定时器变量
+ static osTimerId_t g_timer = NULL;
+ uint8_t MainPresenterSample::g_PullUpDownTimes = 5;//5秒
+
+ /*定时器到期时的处理*/
+ 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)
+ {
+ MainPresenterSample::g_PullUpDownTimes = 5;//每5秒更新一次,时间
+ MainPresenterSample::GetInstance()->UpdataBaseData();
+ PullUpDownView::GetInstance()->UpdateSignalStrengthStatusAndBatteryPosition();
+ }
+ return;
+ }
+
+ /*
+ * @brief 回调函数
+ */
+ static void PullUpDown_TimerCallback(int data)
+ {
+ GraphicService::GetInstance()->PostGraphicEvent(std::bind(PullUpDown_TimerCallbackProc, data));
+ }
+
+ /*
+ * @brief 开启定时器函数
+ * @param interval 时间间隔,单位ms
+ */
+ void MainPresenterSample::PullUpDown_StartTimer(uint32_t interval)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainPresenterSample::PullUpDown_StartTimer");
+ /* -------------------------- 1.检查定时器是否已经存在,如果存在则返回 ------------------------- */
+ if (g_timer != NULL)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainPresenterSample::PullUpDown_StartTimer Timer already exists!!");
+ return;
+ }
+
+ /* --------------------------------- 2.创建定时器 -------------------------------- */
+ g_timer = osTimerNew((osTimerFunc_t)PullUpDown_TimerCallback, osTimerPeriodic, NULL, NULL);
+ // 检查定时器创建是否成功
+ if (g_timer == NULL)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainPresenterSample::PullUpDown_StartTimer Timer create failed!!");
+ return;
+ }
+
+ /* ----------------------------- 3.将毫秒转换为系统时钟节拍数 ---------------------------- */
+ int tick = osMs2Tick(interval);
+ /* --------------------------------- 4.启动定时器 -------------------------------- */
+ osStatus_t ret = osTimerStart(g_timer, tick);
+ /* -------------------- 5.检查定时器启动是否成功,如果启动失败,删除定时器并置为 NULL -------------------- */
+ if (ret != osOK)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[PullUpDown_StartTimer] osTimerDelete failed, ret = %lx!!", ret);
+ if (g_timer != NULL)
+ {
+ ret = osTimerDelete(g_timer);
+ }
+ g_timer = NULL;
+ return;
+ }
+ return;
+ }
+
+ /*
+ * @brief 停止定时器
+ */
+ void MainPresenterSample::PullUpDown_StopTimer(void)
+ {
+ // 检查定时器是否存在
+ if (g_timer != NULL)
+ {
+ // 删除定时器并置为 NULL
+ osStatus_t ret = osTimerDelete(g_timer);
+ if (ret != osOK)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "osTimerDelete failed, ret = %lx!!", ret);
+ }
+ g_timer = NULL;
+ }
+ }
+
}
\ No newline at end of file
#include "ui_resource_image.h"
#include "dnotdisturb/include/DnotDisturbModel.h"
#include "custom_utils.h"
-
+#include "custom_runtime.h"
namespace OHOS
{
constexpr int16_t BLUETOOTHCONNECTSTATUS_BUTTON_Y = 350;
constexpr int16_t BLUETOOTHCONNECTSTATUS_BUTTON_W = 60;
constexpr int16_t BLUETOOTHCONNECTSTATUS_BUTTON_H = 60;
+
+ static const int64_t COLOR_SIGNAL_ON = 0xffffffff;
+ static const int64_t COLOR_SIGNAL_OFF = 0xff383838;
+ static const int BATTERY_IMAGE_WIDTH = 48;
+ static const int BATTERY_IMAGE_HEIGHT = 30;
+ static const int PROGRESS_WIDTH = 30;
+ static const int PROGRESS_HEIGHT = 18;
/* -------------------------------------------------------------------------- */
std::string getWeekString(int wday)
{
delete dropIconBackground[i];
dropIconBackground[i] = nullptr;
}
-
+
delete dropSetting;
dropSetting = nullptr;
-
+
delete dropLighting;
dropLighting = nullptr;
-
+
delete dropDnotDisturb;
dropDnotDisturb = nullptr;
-
+
delete dropLine;
dropLine = nullptr;
-
+
delete dropSavePower;
dropSavePower = nullptr;
-
+
delete drofindPhone;
drofindPhone = nullptr;
-
+
delete showTimeLabel;
showTimeLabel = nullptr;
-
+
delete showDateLabel;
showDateLabel = nullptr;
-
+
delete showWeekLabel;
showWeekLabel = nullptr;
/* -------------------------------------------------------------------------- */
delete batteryimage;
batteryimage = nullptr;
}
-
+
if (progress != nullptr)
{
delete progress;
progress = nullptr;
}
-
-
+
if (progresscallback_ != nullptr)
{
delete progresscallback_;
// 获取蓝牙耳机连接状态
bool PullUpDownView::GetEarPhoneConnectedStatus(void)
{
+ runtime_status_t *g_runtime = get_device_runtime_status();
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "g_runtime->bt_connected = %d", g_runtime->bt_connected);
return true;
}
/// @brief 连接状态
/// @param void
void PullUpDownView::InitTimeDateWeekLabelAndConnectedStatusImage(void)
- {
+ {
connectedStatusBackgroundButton = new UIButton();
if (connectedStatusBackgroundButton == nullptr)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "batteryimage new fail");
return false;
}
- if (GetSignalStrength() == 0)
- {
- batteryimage->SetPosition(200, 180, 48, 30);
- }
- else
- {
- batteryimage->SetPosition(258, 180, 48, 30);
- }
+ batteryimage->SetPosition(258, 180, BATTERY_IMAGE_WIDTH, BATTERY_IMAGE_HEIGHT);
std::string batteryimagesPath = "/user/res/Battery/Battery-E.bin";
batteryimage->SetSrc(batteryimagesPath.c_str());
/* -------------------------------------------------------------------------- */
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "progress new fail");
return false;
}
- if (GetSignalStrength() == 0)
- {
- batteryimage->SetPosition(206, 180, 48, 30);
- }
- else
- {
- progress->SetPosition(264, 186, 31, 19);
- }
- progress->SetValidHeight(19);
- progress->SetValidWidth(31);
+ progress->SetPosition(206, 180, PROGRESS_WIDTH, PROGRESS_HEIGHT);
+ progress->SetValidHeight(PROGRESS_HEIGHT);
+ progress->SetValidWidth(PROGRESS_WIDTH);
// progress->SetValue(value);
const char *progressImageSrc = "/user/res/Battery/Battery_Normal.bin";
group[DROPDOWNVIEW]->Add(showDateLabel);
group[DROPDOWNVIEW]->Add(showWeekLabel);
+ /* -------------------------------------------------------------------------- */
+ UpdateSignalStrengthStatusAndBatteryPosition();
+ /* -------------------------------------------------------------------------- */
+
return true;
}
}
}
showSignalStrength[i]->SetPosition(imageViewList[i].posX, imageViewList[i].posY, imageViewList[i].width, imageViewList[i].height);
- if (i < GetSignalStrength())
- {
- showSignalStrength[i]->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);
- }
- else
- {
- showSignalStrength[i]->SetStyle(STYLE_BACKGROUND_COLOR, 0xff383838);
- }
+ showSignalStrength[i]->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);
showSignalStrength[i]->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
showSignalStrength[i]->SetStyle(STYLE_BORDER_RADIUS, 10);
group[DROPDOWNVIEW]->Add(showSignalStrength[i]);
Singal_4->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 34);
Singal_4->SetVisible(false);
group[DROPDOWNVIEW]->Add(Singal_4);
- /* -------------------------------------------------------------------------- */
- SetSingalComponentsVisible(GetSignalStrength());
return true;
}
// 获取信号强度
int PullUpDownView::GetSignalStrength(void)
{
- int SignalStrength = 4; // 信号强度
+ runtime_status_t *g_runtime = get_device_runtime_status();
+ int SignalStrength = g_runtime->cat1_runtime.signal; // 信号强度
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SignalStrength = %d", SignalStrength);
+
return SignalStrength;
}
- // 根据信号强度设置信号组件是否可见
- void PullUpDownView::SetSingalComponentsVisible(int SignalStrength)
+ int PullUpDownView::CalculateSignalBars(int signalStrength)
+ {
+ if (signalStrength < 0 || signalStrength > 32)
+ return 99; // 无信号 or Invalid signal strength
+
+ // if (signalStrength == 32)
+ // return 4; // Edge case where signalStrength is exactly at the upper boundary
+
+ return (signalStrength / 8) + 1;
+ }
+
+ void PullUpDownView::UpdateSignalDisplay(int signalBars)
{
- if (SignalStrength != 0)
+ bool noSignal = (signalBars == 99);
+ for (int i = 0; i < 4; i++)
{
- for (int i = 0; i < 4; i++)
- {
- showSignalStrength[i]->SetVisible(true);
- }
+ showSignalStrength[i]->SetStyle(STYLE_BACKGROUND_COLOR, (i < signalBars) ? COLOR_SIGNAL_ON : COLOR_SIGNAL_OFF);
+ showSignalStrength[i]->Invalidate();
+ showSignalStrength[i]->SetVisible(!noSignal);
+ }
+ if (noSignal == true)
+ Singal_4->SetVisible(false);
+ else
Singal_4->SetVisible(true);
+
+ NoSignal->SetVisible(noSignal);
+ }
+
+ void PullUpDownView::UpdateBatteryPosition(int signalBars)
+ {
+ if (signalBars == 99)
+ {
+ batteryimage->SetPosition(209, 180, BATTERY_IMAGE_WIDTH, BATTERY_IMAGE_HEIGHT);
+ progress->SetPosition(215, 186, PROGRESS_WIDTH, PROGRESS_HEIGHT);
}
else
{
- NoSignal->SetVisible(true);
+ batteryimage->SetPosition(258, 180, BATTERY_IMAGE_WIDTH, BATTERY_IMAGE_HEIGHT);
+ progress->SetPosition(264, 186, PROGRESS_WIDTH, PROGRESS_HEIGHT);
}
+ batteryimage->Invalidate();
+ progress->Invalidate();
+ }
+
+ // 更新信号强度和电池位置
+ void PullUpDownView::UpdateSignalStrengthStatusAndBatteryPosition()
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpDownView::UpdateSignalStrengthStatusAndBatteryPosition");
+ int signalBars = CalculateSignalBars(GetSignalStrength());
+ UpdateSignalDisplay(signalBars);
+ UpdateBatteryPosition(signalBars);
}
// 清除信号强度相关组件