#include "ota/include/OtaMemoryErrorView.h"
#include "ota/include/OtaNightUpdateView.h"
#include "ota/include/OtaNightUpdateSuccessView.h"
+#include "ota/include/OtaDownloadView.h"
#include "thunderbird/include/ThunderBirdMainView.h"
OTA_VIEW_MEMORY_ERROR, // 内存不足
OTA_VIEW_UPDATE_SUCCESS, // 更新成功
OTA_VIEW_UPDATE_FAILED, // 更新未完成
+ OTA_VIEW_DOWNLOAD, // 下载界面
MAX_OTA_VIEW,
};
bool ChangeOtaNormalView(int16_t thisView);
bool ChangeOtaMemoryErrorView(int16_t thisView);
bool ChangeOtaNightUpdateView(int16_t thisView);
bool ChangeOtaNightUpdateSuccessView(int16_t thisView);
+ bool ChangeOtaDownloadView(int16_t thisView);
bool ClickFunc(int16_t interface);
void ChangeView(int16_t hideView, int16_t showView);
int16_t GetCurrentView();
OtaMemoryErrorView *g_pOtaMemoryErrorView{nullptr};
OtaNightUpdateView *g_pOtaNightUpdateView{nullptr};
OtaNightUpdateSuccessView *g_pOtaNightUpdateSuccessView{nullptr};
+ OtaDownloadView *g_pOtaDownloadView{nullptr};
};
}
--- /dev/null
+/*
+ * @Author: Assistant
+ * @Date: 2024-12-19
+ * @Description: OTA Download View - OTA下载界面实现
+ */
+#include "ota/include/OtaDownloadView.h"
+#include "ota/include/OtaPresenter.h"
+#include "wearable_log.h"
+
+namespace OHOS
+{
+ static OtaDownloadView *g_pOtaDownloadView{nullptr};
+
+ OtaDownloadView::OtaDownloadView()
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OtaDownloadView::OtaDownloadView");
+ g_pOtaDownloadView = this;
+ }
+
+ OtaDownloadView::~OtaDownloadView()
+ {
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OtaDownloadView::~OtaDownloadView");
+ ClearAll();
+ g_pOtaDownloadView = nullptr;
+ }
+
+ OtaDownloadView* OtaDownloadView::GetInstance()
+ {
+ return g_pOtaDownloadView;
+ }
+
+ UIViewGroup* OtaDownloadView::InitUI()
+ {
+ // 创建主容器
+ group = new UIViewGroup();
+ if (group) {
+ group->SetPosition(0, 0, 360, 360);
+ group->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);
+ group->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
+ }
+
+ // 创建背景
+ // 背景图已移至OtaView.cpp作为最底层背景
+
+ // 创建主标题
+ TextLabel = new UILabelExt();
+ if (TextLabel) {
+ TextLabel->SetPosition(127, 100, 164, 42);
+ TextLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ TextLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 24);
+ TextLabel->SetStyle(STYLE_TEXT_COLOR, 0xffffffff);
+ TextLabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
+ TextLabel->SetText("正在下载");
+ TextLabel->SetVisible(true);
+ group->Add(TextLabel);
+ }
+
+ // 创建状态标签
+ StatusLabel = new UILabelExt();
+ if (StatusLabel) {
+ StatusLabel->SetPosition(80, 150, 220, 28);
+ StatusLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ StatusLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 20);
+ StatusLabel->SetStyle(STYLE_TEXT_COLOR, 0xffffffff);
+ StatusLabel->SetText("准备下载...");
+ StatusLabel->SetVisible(true);
+ group->Add(StatusLabel);
+ }
+
+ // 创建进度条
+ ProgressBar = new UIBoxProgress();
+ if (ProgressBar) {
+ ProgressBar->SetPosition(80, 200, 200, 8);
+ ProgressBar->SetRange(100, 0);
+ ProgressBar->SetBackgroundStyle(STYLE_BACKGROUND_OPA, 0xff);
+ ProgressBar->SetBackgroundStyle(STYLE_BACKGROUND_COLOR, 0xff333333);
+ ProgressBar->SetForegroundStyle(STYLE_BACKGROUND_COLOR, 0xff00ff00);
+ ProgressBar->SetValue(0);
+ ProgressBar->SetVisible(true);
+ group->Add(ProgressBar);
+ }
+
+ // 创建进度文本
+ ProgressLabel = new UILabelExt();
+ if (ProgressLabel) {
+ ProgressLabel->SetPosition(80, 220, 200, 24);
+ ProgressLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ ProgressLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 18);
+ ProgressLabel->SetStyle(STYLE_TEXT_COLOR, 0xffffffff);
+ ProgressLabel->SetText("0%");
+ ProgressLabel->SetVisible(true);
+ group->Add(ProgressLabel);
+ }
+ // 创建提示标签
+ RemindLabel = new UILabelExt();
+ if (RemindLabel) {
+ RemindLabel->SetPosition(136, 300, 88, 25);
+ RemindLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+ RemindLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 20);
+ RemindLabel->SetStyle(STYLE_TEXT_COLOR, 0xffffffff);
+ RemindLabel->SetText("请稍候...");
+ RemindLabel->SetVisible(true);
+ group->Add(RemindLabel);
+ }
+
+ return group;
+ }
+
+ void OtaDownloadView::ClearAll()
+ {
+ if (group) {
+ group->RemoveAll();
+ delete group;
+ group = nullptr;
+ }
+
+ if (TextLabel) { delete TextLabel; TextLabel = nullptr; }
+ if (StatusLabel) { delete StatusLabel; StatusLabel = nullptr; }
+ if (ProgressLabel) { delete ProgressLabel; ProgressLabel = nullptr; }
+ if (RemindLabel) { delete RemindLabel; RemindLabel = nullptr; }
+ if (RemindIcon) { delete RemindIcon; RemindIcon = nullptr; }
+ if (ProgressBar) { delete ProgressBar; ProgressBar = nullptr; }
+ }
+
+ void OtaDownloadView::UpdateDownloadProgress(int progress)
+ {
+ if (progress < 0) progress = 0;
+ if (progress > 100) progress = 100;
+
+ currentProgress = progress;
+
+ if (ProgressBar) {
+ ProgressBar->SetValue(progress);
+ ProgressBar->Invalidate();
+ }
+
+ if (ProgressLabel) {
+ char progressText[16];
+ snprintf(progressText, sizeof(progressText), "%d%%", progress);
+ ProgressLabel->SetText(progressText);
+ ProgressLabel->Invalidate();
+ }
+
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OtaDownloadView::UpdateDownloadProgress: %d%%", progress);
+ }
+
+ void OtaDownloadView::UpdateDownloadStatus(const char* status)
+ {
+ if (StatusLabel && status) {
+ StatusLabel->SetText(status);
+ StatusLabel->Invalidate();
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OtaDownloadView::UpdateDownloadStatus: %s", status);
+ }
+ }
+
+ void OtaDownloadView::SetDownloadType(int type)
+ {
+ downloadType = type;
+
+ if (TextLabel) {
+ switch (type) {
+ case 1: // 屏保下载
+ TextLabel->SetText("下载屏保");
+ break;
+ case 2: // 表情下载
+ TextLabel->SetText("下载表情");
+ break;
+ default:
+ TextLabel->SetText("正在下载");
+ break;
+ }
+ TextLabel->Invalidate();
+ }
+
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OtaDownloadView::SetDownloadType: %d", type);
+ }
+}
#include "ota/include/OtaUpdateNowView.h"
#include "ota/include/OtaNightUpdateView.h"
#include "ota/include/OtaNightUpdateSuccessView.h"
+#include "ota/include/OtaDownloadView.h"
#include "ota/include/OtaModel.h"
#include "wearable_log.h"
#include "custom_utils.h"
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "强制升级");
ChangeView(MAX_OTA_VIEW, OTA_VIEW_UPDATE_NOW);
}
+ else //下载界面,需要根据文件下载类型判断
+ {
+ int downloadFileType = ThunderBirdModel::GetInstance()->GetDownloadFile();
+ if(downloadFileType != -1)
+ {
+ ChangeView(MAX_OTA_VIEW, OTA_VIEW_NIGHT_UPDATE);
+ }
+
+ }
+
+
// 添加状态栏(如果ThunderBirdMainView存在则复用,否则创建独立的状态栏)
}
return true;
}
+ bool OtaView::ChangeOtaDownloadView(int16_t thisView) // 切换下载界面接口
+ {
+ if (group[thisView] == nullptr)
+ {
+ g_pOtaDownloadView = new OtaDownloadView();
+ if (g_pOtaDownloadView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OtaDownloadView new fail %d", thisView);
+ return false;
+ }
+ group[thisView] = g_pOtaDownloadView->InitUI();
+ ScrollView_->Add(group[thisView]);
+ }
+ return true;
+ }
struct OtaViewMapper
{
{OtaView::OTA_VIEW_MEMORY_ERROR, &OtaView::ChangeOtaMemoryErrorView},
{OtaView::OTA_VIEW_UPDATE_SUCCESS, &OtaView::ChangeOtaSuccessView},
{OtaView::OTA_VIEW_UPDATE_FAILED, &OtaView::ChangeOtaFailedView},
+ {OtaView::OTA_VIEW_DOWNLOAD, &OtaView::ChangeOtaDownloadView},
};
bool OtaView::ClickFunc(int16_t interface)
delete g_pOtaNightUpdateSuccessView;
g_pOtaNightUpdateSuccessView = nullptr;
}
+ if (g_pOtaDownloadView) {
+ delete g_pOtaDownloadView;
+ g_pOtaDownloadView = nullptr;
+ }
}
}
}
+
+
}