From 1c36068e2cf167eeee37c5809b367c2a49ecf69d Mon Sep 17 00:00:00 2001 From: Caisking <3449750381@qq.com> Date: Tue, 20 Aug 2024 17:22:10 +0800 Subject: [PATCH] =?utf8?q?=E4=BC=98=E5=8C=96=E7=9C=81=E7=94=B5=E6=A8=A1?= =?utf8?q?=E5=BC=8F=E9=80=80=E5=87=BA=E5=8A=A8=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../saveele/include/SaveBatPresenter.h | 6 +- .../nativeui/saveele/include/SaveBatView.h | 10 ++- .../nativeui/saveele/include/SaveEleModel.h | 52 ++++++------ .../nativeui/saveele/src/SaveBatPresenter.cpp | 80 ++++++++++++++++--- .../nativeui/saveele/src/SaveBatView.cpp | 44 +++------- .../nativeui/saveele/src/SaveElePresenter.cpp | 10 ++- 6 files changed, 124 insertions(+), 78 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativeui/saveele/include/SaveBatPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/saveele/include/SaveBatPresenter.h index 4f142e8c8..a162ded2d 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/saveele/include/SaveBatPresenter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/saveele/include/SaveBatPresenter.h @@ -36,7 +36,7 @@ namespace OHOS void ResetTickTimer(); void ExitView(void); - uint64_t startTime{0}; + void Refresh_Back_View(); private: // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承; @@ -45,6 +45,10 @@ namespace OHOS bool OnLongPress(UIView &view, const LongPressEvent &event); bool OnPress(UIView &view, const PressEvent &event); bool OnRelease(UIView &view, const ReleaseEvent &event); + + uint64_t startTime{0}; + int count = 3; // 初始计数 + int progressValue = 0; // 初始进度值 }; } // namespace OHOS diff --git a/code/sdk/application/wearable/fd230app/nativeui/saveele/include/SaveBatView.h b/code/sdk/application/wearable/fd230app/nativeui/saveele/include/SaveBatView.h index b737f5f0b..dac8f1db9 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/saveele/include/SaveBatView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/saveele/include/SaveBatView.h @@ -59,6 +59,14 @@ namespace OHOS void UpdateView(); + UILabel *GetCountlabel() + { + return countlabel; + } + UICircleProgress *GetBackprogress() + { + return backprogress; + } private: UIView::OnDragListener *draglistener{nullptr}; @@ -77,8 +85,6 @@ namespace OHOS UIImageView *wathchiamge{nullptr}; UICircleProgress *backprogress{nullptr}; - int count = 3; // 初始计数 - int progressValue = 0; // 初始进度值 }; } // namespace OHOS diff --git a/code/sdk/application/wearable/fd230app/nativeui/saveele/include/SaveEleModel.h b/code/sdk/application/wearable/fd230app/nativeui/saveele/include/SaveEleModel.h index 0a0cfe697..022731b58 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/saveele/include/SaveEleModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/saveele/include/SaveEleModel.h @@ -1,36 +1,36 @@ -#ifndef SAVE_ELE_MODEL_H -#define SAVE_ELE_MODEL_H +#ifndef SAVE_ELE_MODEL_H +#define SAVE_ELE_MODEL_H -namespace OHOS -{ - class SaveEleModel - { - public: - // 获取单例实例 - static SaveEleModel *GetInstance(); +namespace OHOS +{ + class SaveEleModel + { + public: + // 获取单例实例 + static SaveEleModel *GetInstance(); - // 获取充电状态 - int GetChargeStatus(); + // 获取充电状态 + bool GetChargeStatus(); - // 设置充电状态 - void SetChargeStatus(int chargeStatus); + // 设置充电状态 + void SetChargeStatus(bool chargeStatus); - // 获取视图状态 - bool GetViewState() const { return viewState; } + // 获取视图状态 + bool GetViewState() const { return viewState; } - // 设置视图状态 - void SetViewState(bool state) { viewState = state; } + // 设置视图状态 + void SetViewState(bool state) { viewState = state; } - private: - SaveEleModel() = default; // 默认构造函数 - ~SaveEleModel() {} // 默认析构函数 + private: + SaveEleModel() = default; // 默认构造函数 + ~SaveEleModel() {} // 默认析构函数 - SaveEleModel(const SaveEleModel &) = delete; // 禁止拷贝构造 - SaveEleModel &operator=(const SaveEleModel &) = delete; // 禁止赋值操作 + SaveEleModel(const SaveEleModel &) = delete; // 禁止拷贝构造 + SaveEleModel &operator=(const SaveEleModel &) = delete; // 禁止赋值操作 - int chargeStatus_ = 0; // 充电状态 - bool viewState{false}; // 视图状态 - }; -} + bool chargeStatus_{nullptr}; // 充电状态 + bool viewState{false}; // 视图状态 + }; +} #endif // SAVE_ELE_MODEL_H \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveBatPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveBatPresenter.cpp index d1c9d327a..9cb78e5c2 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveBatPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveBatPresenter.cpp @@ -1,3 +1,15 @@ +/*** + * @Date: 2024-04-15 10:55:58 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-08-20 16:29:53 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveBatPresenter.cpp + */ +/*** + * @Date: 2024-04-15 10:55:58 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-08-20 16:28:11 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveBatPresenter.cpp + */ /*** * @Date: 2024-04-15 10:55:58 * @LastEditors: Caisking 3449750381@qq.com @@ -51,6 +63,7 @@ namespace OHOS void SaveBatPresenter::OnStart() { + SaveEleModel::GetInstance()->SetChargeStatus(false); Presenter::OnStart(); } @@ -73,7 +86,6 @@ namespace OHOS bool SaveBatPresenter::OnDrag(UIView &view, const DragEvent &event) { UNUSED(view); - // 返回 true 以消耗拖动事件 return true; } @@ -85,14 +97,11 @@ namespace OHOS bool state = SaveEleModel::GetInstance()->GetViewState(); SaveEleModel::GetInstance()->SetViewState(!state); SaveBatView::GetInstance()->UpdateView(); - ResetTickTimer(); } return true; } bool SaveBatPresenter::OnLongPress(UIView &view, const LongPressEvent &event) { - // 2.退出 button1NativeAbility::GetInstance().ChangeSlice(VIEW_SAVEELE); - // 3.返回 true 以消耗点击事件 if (strcmp(view.GetViewId(), "button_exit") == 0) { NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN); @@ -101,6 +110,23 @@ namespace OHOS } bool SaveBatPresenter::OnPress(UIView &view, const PressEvent &event) { + if (strcmp(view.GetViewId(), "button_exit") == 0) + { + /* + uint64_t current_time = osKernelGetTick2ms(); + SaveBatView::GetInstance()->Refresh_Back_View(); + if (IS_TIME_EXCEED(startTime, current_time)) + { + NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN); + } + */ + if (SaveEleModel::GetInstance()->GetViewState() == false) + { + SaveEleModel::GetInstance()->SetViewState(true); + SaveBatView::GetInstance()->UpdateView(); + ResetTickTimer(); + } + } return true; } bool SaveBatPresenter::OnRelease(UIView &view, const ReleaseEvent &event) @@ -110,12 +136,16 @@ namespace OHOS /*释放*/ SaveEleModel::GetInstance()->SetViewState(false); SaveBatView::GetInstance()->UpdateView(); + /*重置*/ + progressValue = 0; + count = 3; } return true; } void SaveBatPresenter::ExitView(void) { - bool isCharging = get_charge_stat(); // 获取充电状态 + bool isCharging = SaveEleModel::GetInstance()->GetChargeStatus(); // 获取充电状态 + // 如果省电模式中发生充电变化->进行退出 if (isCharging) { NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN); @@ -133,18 +163,44 @@ namespace OHOS } else if (SaveEleModel::GetInstance()->GetViewState() == true) { - if (IS_TIME_MATCH(startTime, current_time, ONE_SECOND)) + Refresh_Back_View(); + } + } + void SaveBatPresenter::ResetTickTimer(void) + { + startTime = osKernelGetTick2ms(); + } + /* 更新退出UI */ + void SaveBatPresenter::Refresh_Back_View() + { + if (SaveBatView::GetInstance()->GetCountlabel() == nullptr || SaveBatView::GetInstance()->GetBackprogress() == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Refresh_Back_View: countlabel or backprogress is null."); + return; + } + + if (count > 0) // 确保不会减少到负数 + { + // 每次调用时尝试更新进度值 + progressValue++; + + // 更新计数并检查进度值 + if (progressValue == 50 || progressValue == 75 || progressValue == 100) { - SaveBatView::GetInstance()->Refresh_Back_View(); + count--; + SaveBatView::GetInstance()->GetCountlabel()->SetText(std::to_string(count).c_str()); } - if (IS_TIME_EXCEED(startTime, current_time)) + + // 根据最大值进行检查以避免进度条越界 + if (progressValue >= 100) // 假设进度最大值为100 { NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN); } + else + { + SaveBatView::GetInstance()->GetBackprogress()->SetValue(progressValue); + } + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Refresh_Back_View: 当前计数: %d, 当前进度值: %d", count, progressValue); } } - void SaveBatPresenter::ResetTickTimer(void) - { - startTime = osKernelGetTick2ms(); - } } \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveBatView.cpp b/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveBatView.cpp index b23d9784f..4874809b8 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveBatView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveBatView.cpp @@ -92,39 +92,12 @@ namespace OHOS uint8_t value = battery_get_voltage(&voltage); // 更新界面组件 - timelabel->SetText(stringtime.c_str()); datelabel->SetText(dateStr.c_str()); batterylabel->SetText((std::to_string(value) + "%").c_str()); batteryprogress->SetValue(value); } - /* 更新退出UI */ - void SaveBatView::Refresh_Back_View() - { - if (countlabel == nullptr || backprogress == nullptr) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Refresh_Back_View: countlabel or backprogress is null."); - return; - } - - if (count > 0) // 确保不会减少到负数 - { - count--; - progressValue += 33; - - countlabel->SetText(std::to_string(count).c_str()); - backprogress->SetValue(progressValue); - - // 根据最大值进行检查以避免进度条越界 - if (progressValue > 100) // 假设进度最大值为100 - { - progressValue = 100; // 限制在最大值 - } - - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Refresh_Back_View: 当前计数: %d, 当前进度值: %d", count, progressValue); - } - } void SaveBatView::InitBatteryView() { // 创建电池框图像 @@ -226,8 +199,9 @@ namespace OHOS button_exit->SetImageSrc(SAVE_BUTTON, SAVE_BUTTON); button_exit->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff000000, UIButton::PRESSED); - button_exit->SetOnLongPressListener(presenter_); - button_exit->SetOnClickListener(presenter_); + // button_exit->SetOnLongPressListener(presenter_); + // button_exit->SetOnClickListener(presenter_); + button_exit->SetOnTouchListener(presenter_); container_->Add(button_exit); } void SaveBatView::InitShowBackView() @@ -272,10 +246,10 @@ namespace OHOS backprogress->SetPosition(143, 143); backprogress->Resize(183, 186); backprogress->SetViewId("circleProgress1"); - backprogress->SetStyle(STYLE_BACKGROUND_OPA, 0x00); - backprogress->SetBackgroundStyle(STYLE_BACKGROUND_COLOR, 0xff000000); + backprogress->SetStyle(STYLE_BACKGROUND_OPA, 0x00); // 确保背景透明 + backprogress->SetBackgroundStyle(STYLE_BACKGROUND_COLOR, 0x00000000); // 背景颜色设置为完全透明 backprogress->SetBackgroundStyle(STYLE_LINE_WIDTH, 20); - backprogress->SetForegroundStyle(STYLE_BACKGROUND_COLOR, 0xff2195F6); + backprogress->SetForegroundStyle(STYLE_BACKGROUND_COLOR, 0xff000000); backprogress->SetForegroundStyle(STYLE_BORDER_COLOR, 0xff000000); backprogress->SetForegroundStyle(STYLE_LINE_COLOR, 0xff18ef05); backprogress->SetForegroundStyle(STYLE_LINE_WIDTH, 20); @@ -293,7 +267,7 @@ namespace OHOS WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "wathchiamge creation failed"); return; } - wathchiamge->SetPosition(188, 182); + wathchiamge->SetPosition(191, 182); wathchiamge->Resize(100, 100); wathchiamge->SetViewId("image1"); wathchiamge->SetSrc(SAVE_WATHCH); @@ -385,8 +359,8 @@ namespace OHOS batteryiamge->SetVisible(!state); /*重置计数器*/ - count = 3; // 初始计数 - progressValue = 0; // 初始进度值 + int count = 3; // 初始计数 + int progressValue = 0; // 初始进度值 countlabel->SetText(std::to_string(count).c_str()); backprogress->SetValue(progressValue); diff --git a/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveElePresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveElePresenter.cpp index 02ae0c0d5..dba03e3ee 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveElePresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveElePresenter.cpp @@ -1,7 +1,13 @@ +/*** + * @Date: 2024-08-16 09:26:06 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-08-20 16:59:59 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveElePresenter.cpp + */ /*** * @Date: 2024-05-30 15:59:37 * @LastEditors: Caisking 3449750381@qq.com - * @LastEditTime: 2024-08-09 15:14:49 + * @LastEditTime: 2024-08-20 16:04:44 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/saveele/src/SaveElePresenter.cpp */ #include "AppViewIDs.h" @@ -82,7 +88,7 @@ namespace OHOS } if (strcmp(view.GetViewId(), SAVEBUTTONOK) == 0) { - NativeAbility::GetInstance().EnterSlice(VIEW_SAVEBAT); + NativeAbility::GetInstance().ChangeSlice(VIEW_SAVEBAT); } return true; } -- 2.17.1