From 2ea578b5ecc551c5dd931a6a2dc6a800774ee684 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E8=A2=81=E6=B8=85=E6=A2=A6?= <3449750381@qq.com> Date: Wed, 29 Oct 2025 11:46:28 +0000 Subject: [PATCH] Merge #2626 into sdk650pathc0423 from refs/changes/2626/head MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Code review from 袁清梦 * refs/changes/2626/head: (10 commits squashed) - 增加经期开始与结束的列表 - 增加女性健康算法 - Merge branch 'sdk650pathc0423' of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk650pathc0423 - Merge branch 'sdk650pathc0423' of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk650pathc0423 - 修复运动数据显示不连续 - Merge branch 'sdk650pathc0423' of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk650pathc0423 - Merge branch 'sdk650pathc0423' of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk650pathc0423 - 优化星历下载的UI - Merge branch 'sdk650pathc0423' of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk650pathc0423 - Merge branch 'sdk650pathc0423' of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk650pathc0423 Signed-off-by: Caisking <3449750381@qq.com> Merged-by: Caisking <3449750381@qq.com> CR-link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/2626 --- .../include/EphemerisDownloadView.h | 8 + .../src/EphemerisDownloadModel.cpp | 2 +- .../src/EphemerisDownloadPresenter.cpp | 4 +- .../src/EphemerisDownloadView.cpp | 199 ++++++++++++------ .../include/EphemerisDownloadView.h | 8 + .../src/EphemerisDownloadModel.cpp | 2 +- .../src/EphemerisDownloadPresenter.cpp | 4 +- .../src/EphemerisDownloadView.cpp | 199 ++++++++++++------ .../include/EphemerisDownloadView.h | 8 + .../src/EphemerisDownloadModel.cpp | 2 +- .../src/EphemerisDownloadPresenter.cpp | 4 +- .../src/EphemerisDownloadView.cpp | 199 ++++++++++++------ 12 files changed, 429 insertions(+), 210 deletions(-) diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/ephemeris_download/include/EphemerisDownloadView.h b/code/sdk/application/wearable/fd230/nativeapp/nativeui/ephemeris_download/include/EphemerisDownloadView.h index ec147b3c4..876caf0e8 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/ephemeris_download/include/EphemerisDownloadView.h +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/ephemeris_download/include/EphemerisDownloadView.h @@ -35,11 +35,19 @@ public: UILabelExt *GetDownloadLabel(); //获取有效期的label UILabelExt *GetValidityPeriodLabel(); + //更新下载状态显示 + void UpdateDownloadStatus(); + //更新有效期显示 + void UpdateValidityPeriod(); + //更新下载按钮状态 + void UpdateDownloadButton(); private: UILabelExt *labelTitle_{nullptr}; UILabelExt *labelStatus_{nullptr}; + UILabelExt *labelStatusValue_{nullptr}; // 新增:状态值标签 UILabelExt *labelValidity_{nullptr}; + UILabelExt *labelValidityValue_{nullptr}; // 新增:有效期值标签 UILabelButtonExt *btnDownload_{nullptr}; UILabelButtonExt *btnBack_{nullptr}; UILabelExt *labelNote_{nullptr}; diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadModel.cpp b/code/sdk/application/wearable/fd230/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadModel.cpp index e67a43b92..b1bfef38d 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadModel.cpp +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadModel.cpp @@ -99,7 +99,7 @@ std::string EphemerisDownloadModel::GetEphemerisValidityPeriod() { int days = validityPeriod / (24 * 60); int hours = (validityPeriod % (24 * 60)) / 60; int minutes = validityPeriod % 60; - ephemerisValidityPeriod = "有效期: " + std::to_string(days) + "天" + + ephemerisValidityPeriod = std::to_string(days) + "天" + std::to_string(hours) + "小时" + std::to_string(minutes) + "分钟"; } else { diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadPresenter.cpp b/code/sdk/application/wearable/fd230/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadPresenter.cpp index 1a1a53fe4..db3993ccd 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadPresenter.cpp +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadPresenter.cpp @@ -94,7 +94,7 @@ void EphemerisDownloadPresenter::UpdateDownloadStatus() { else if(EphemerisDownloadModel::GetInstance().GetEphemerisDownloadProgress() == 0) { EphemerisDownloadView::GetInstance()->GetDownloadLabel()->SetText( - "下载中,正在链接网络"); + "正在链接网络"); } else if(EphemerisDownloadModel::GetInstance().GetEphemerisDownloadProgress() > 0) { @@ -104,7 +104,7 @@ void EphemerisDownloadPresenter::UpdateDownloadStatus() { { progress = 100; } - std::string progress_str = "下载中,正在下载"+std::to_string(progress)+"%"; + std::string progress_str = "正在下载"+std::to_string(progress)+"%"; EphemerisDownloadView::GetInstance()->GetDownloadLabel()->SetText(progress_str.c_str()); } else if(EphemerisDownloadModel::GetInstance().GetEphemerisDownloadProgress() == 10) diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadView.cpp b/code/sdk/application/wearable/fd230/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadView.cpp index 235e2c353..ba6efdb35 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadView.cpp +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadView.cpp @@ -6,6 +6,8 @@ #include "ui_resource_string.h" #include "components/ui_scroll_view.h" #include "wearable_log.h" +#include "UiConfig.h" +#include "uicomponents/UIComponents.h" namespace OHOS { @@ -28,11 +30,21 @@ EphemerisDownloadView::~EphemerisDownloadView() { delete labelStatus_; labelStatus_ = nullptr; } + if (labelStatusValue_!=nullptr) + { + delete labelStatusValue_; + labelStatusValue_ = nullptr; + } if (labelValidity_!=nullptr) { delete labelValidity_; labelValidity_ = nullptr; } + if (labelValidityValue_!=nullptr) + { + delete labelValidityValue_; + labelValidityValue_ = nullptr; + } if (btnDownload_!=nullptr) { delete btnDownload_; @@ -70,116 +82,169 @@ EphemerisDownloadView *EphemerisDownloadView::GetInstance() { } bool EphemerisDownloadView::EphemerisDownloadInit() { - // 初始化标题 + // 初始化标题 - 居中显示 labelTitle_ = new UILabelExt(); if (labelTitle_ == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "labelTitle_ new failed"); return false; } - labelTitle_->SetPosition(83, 50, 350, 60); + labelTitle_->SetPosition(83, 50, 300, 50); labelTitle_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); - labelTitle_->SetText("下载星历"); + labelTitle_->SetText("星历下载"); labelTitle_->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS); labelTitle_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + labelTitle_->SetTextColor(Color::White()); AddViewToRootContainer(labelTitle_); - // 初始化状态标签 + // 初始化状态标签 - 左对齐,带圆点前缀 labelStatus_ = new UILabelExt(); if (labelStatus_ == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "labelStatus_ new failed"); return false; } - labelStatus_->SetPosition(90, 120, 300, 40); - labelStatus_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 24); - //如果有效期大于0,则显示下载成功 - if(EphemerisDownloadModel::GetInstance().GetValidityPeriod()) - { - labelStatus_->SetText("数据有效"); - } - else - { - labelStatus_->SetText("未下载"); - } - labelStatus_->SetTextColor(Color::Yellow()); + labelStatus_->SetPosition(50, 120, 360, 70); + labelStatus_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + labelStatus_->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER); + labelStatus_->SetText("● 下载状态:"); + labelStatus_->SetTextColor(Color::Yellow());//黄色 AddViewToRootContainer(labelStatus_); - // 初始化有效期标签 + // 初始化状态值标签 - 显示具体状态 + labelStatusValue_ = new UILabelExt(); + if (labelStatusValue_ == nullptr) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "labelStatusValue_ new failed"); + return false; + } + labelStatusValue_->SetPosition(220, 120, 360, 70); + labelStatusValue_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 28); + labelStatusValue_->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER); + AddViewToRootContainer(labelStatusValue_); + + // 初始化有效期标签 - 左对齐,带圆点前缀 labelValidity_ = new UILabelExt(); if (labelValidity_ == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "labelValidity_ new failed"); return false; } - labelValidity_->SetPosition(90, 170, 350, 40); - labelValidity_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 20); - labelValidity_->SetText("有效期: 无"); - labelValidity_->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f)); + labelValidity_->SetPosition(50, 170, 360, 70); + labelValidity_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + labelValidity_->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER); + labelValidity_->SetText("● 有效期:"); + labelValidity_->SetTextColor(Color::Green());//绿色 AddViewToRootContainer(labelValidity_); - // 初始化下载按钮 - btnDownload_ = new UILabelButtonExt(); - if (btnDownload_ == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "btnDownload_ new failed"); - return false; - } - btnDownload_->SetPosition(50, 250, 300, 60); - btnDownload_->SetText("下载"); - btnDownload_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 24); - btnDownload_->SetViewId(DOWNLOAD_ID); - btnDownload_->SetOnClickListener(presenter_); - - //如果有效期大于0,则不能下载 下载按键显示灰色;否则显示绿色 - if(EphemerisDownloadModel::GetInstance().GetValidityPeriod()) - { - btnDownload_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Gray().full); - btnDownload_->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::PRESSED); - } - else - { - btnDownload_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Blue().full); - btnDownload_->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::PRESSED); - } - - AddViewToRootContainer(btnDownload_); - - // 初始化返回按钮 - btnBack_ = new UILabelButtonExt(); - if (btnBack_ == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "btnBack_ new failed"); + // 初始化有效期值标签 - 显示具体有效期 + labelValidityValue_ = new UILabelExt(); + if (labelValidityValue_ == nullptr) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "labelValidityValue_ new failed"); return false; } - btnBack_->SetPosition(50, 350, 300, 60); - btnBack_->SetText("返回"); - btnBack_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 24); - btnBack_->SetViewId(BACK_ID); - btnBack_->SetOnClickListener(presenter_); - AddViewToRootContainer(btnBack_); + labelValidityValue_->SetPosition(220, 170, 360, 70); + labelValidityValue_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 28); + labelValidityValue_->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER); + AddViewToRootContainer(labelValidityValue_); - // 初始化说明标签 + // 初始化说明标签 - 居中显示,灰色文字 labelNote_ = new UILabelExt(); if (labelNote_ == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "labelNote_ new failed"); return false; } - labelNote_->SetPosition(80, 420, 360, 40); - labelNote_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 18); - labelNote_->SetText("星历数据用于提高GPS定位精度"); - labelNote_->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x5f)); + labelNote_->SetPosition(50, 230, 366, 80); + labelNote_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 20); + labelNote_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + labelNote_->SetText("注:请打开4G,需要在网络连接状态下才可以下载"); + labelNote_->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff)); // 灰色 + //修改为靠左对齐 + labelNote_->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER); AddViewToRootContainer(labelNote_); - //更新有效期 - EphemerisDownloadView::GetInstance()->GetValidityPeriodLabel()->SetText( - EphemerisDownloadModel::GetInstance().GetEphemerisValidityPeriod().c_str()); + InitButtonExt(btnDownload_, 58, 320, 170, 90, DOWNLOAD_ID, STR_EPHEMERIS_DOWNLOAD, 30); + btnDownload_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919); // 设置按键颜色 + btnDownload_->SetText("下载"); + btnDownload_->SetOnClickListener(presenter_); + InitButtonExt(btnBack_, 238, 320, 170, 90, BACK_ID, STR_CANCEL, 30); + btnBack_->SetStyle(STYLE_BACKGROUND_COLOR, 0xffFF8A36); // 设置按键颜色 + btnBack_->SetOnClickListener(presenter_); + AddViewToRootContainer(btnDownload_); + AddViewToRootContainer(btnBack_); + + // 初始化完成后更新所有状态 + UpdateDownloadStatus(); + UpdateValidityPeriod(); + UpdateDownloadButton(); return true; } UILabelExt *EphemerisDownloadView::GetDownloadLabel() { - return labelStatus_; + return labelStatusValue_; } UILabelExt *EphemerisDownloadView::GetValidityPeriodLabel() { - return labelValidity_; + return labelValidityValue_; +} + +// 更新下载状态显示 +void EphemerisDownloadView::UpdateDownloadStatus() { + if (labelStatusValue_ == nullptr) return; + + auto status = EphemerisDownloadModel::GetInstance().GetEphemerisDownloadStatus(); + int progress = EphemerisDownloadModel::GetInstance().GetEphemerisDownloadProgress(); + + switch (status) { + case EphemerisDownloadStatus::NOT_DOWNLOADED: + labelStatusValue_->SetText("未下载"); + break; + case EphemerisDownloadStatus::DOWNLOADING: + labelStatusValue_->SetText(("下载中 " + std::to_string(progress) + "%").c_str()); + break; + case EphemerisDownloadStatus::DOWNLOADED: + labelStatusValue_->SetText("已完成"); + break; + case EphemerisDownloadStatus::FAILED: + labelStatusValue_->SetText("下载失败"); + break; + } +} + +// 更新有效期显示 +void EphemerisDownloadView::UpdateValidityPeriod() { + if (labelValidityValue_ == nullptr) return; + + std::string period = EphemerisDownloadModel::GetInstance().GetEphemerisValidityPeriod(); + if (period.empty()) { + labelValidityValue_->SetText("无数据"); + } else { + labelValidityValue_->SetText(period.c_str()); + } +} + +// 更新下载按钮状态 +void EphemerisDownloadView::UpdateDownloadButton() { + if (btnDownload_ == nullptr) return; + + auto status = EphemerisDownloadModel::GetInstance().GetEphemerisDownloadStatus(); + + switch (status) { + case EphemerisDownloadStatus::NOT_DOWNLOADED: + case EphemerisDownloadStatus::FAILED: + btnDownload_->SetText("未下载"); + btnDownload_->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGBA(0xff, 0x8c, 0x00, 0xff).full); // 橙色 + btnDownload_->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGBA(0xcc, 0x70, 0x00, 0xff).full, UIButton::PRESSED); + break; + case EphemerisDownloadStatus::DOWNLOADING: + btnDownload_->SetText("下载中"); + btnDownload_->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff).full); // 灰色 + btnDownload_->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGBA(0x44, 0x44, 0x44, 0xff).full, UIButton::PRESSED); + break; + case EphemerisDownloadStatus::DOWNLOADED: + btnDownload_->SetText("已下载"); + btnDownload_->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff).full); // 灰色 + btnDownload_->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGBA(0x44, 0x44, 0x44, 0xff).full, UIButton::PRESSED); + break; + } } } // namespace OHOS diff --git a/code/sdk/application/wearable/fd272/nativeapp/nativeui/ephemeris_download/include/EphemerisDownloadView.h b/code/sdk/application/wearable/fd272/nativeapp/nativeui/ephemeris_download/include/EphemerisDownloadView.h index ec147b3c4..876caf0e8 100644 --- a/code/sdk/application/wearable/fd272/nativeapp/nativeui/ephemeris_download/include/EphemerisDownloadView.h +++ b/code/sdk/application/wearable/fd272/nativeapp/nativeui/ephemeris_download/include/EphemerisDownloadView.h @@ -35,11 +35,19 @@ public: UILabelExt *GetDownloadLabel(); //获取有效期的label UILabelExt *GetValidityPeriodLabel(); + //更新下载状态显示 + void UpdateDownloadStatus(); + //更新有效期显示 + void UpdateValidityPeriod(); + //更新下载按钮状态 + void UpdateDownloadButton(); private: UILabelExt *labelTitle_{nullptr}; UILabelExt *labelStatus_{nullptr}; + UILabelExt *labelStatusValue_{nullptr}; // 新增:状态值标签 UILabelExt *labelValidity_{nullptr}; + UILabelExt *labelValidityValue_{nullptr}; // 新增:有效期值标签 UILabelButtonExt *btnDownload_{nullptr}; UILabelButtonExt *btnBack_{nullptr}; UILabelExt *labelNote_{nullptr}; diff --git a/code/sdk/application/wearable/fd272/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadModel.cpp b/code/sdk/application/wearable/fd272/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadModel.cpp index e67a43b92..b1bfef38d 100644 --- a/code/sdk/application/wearable/fd272/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadModel.cpp +++ b/code/sdk/application/wearable/fd272/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadModel.cpp @@ -99,7 +99,7 @@ std::string EphemerisDownloadModel::GetEphemerisValidityPeriod() { int days = validityPeriod / (24 * 60); int hours = (validityPeriod % (24 * 60)) / 60; int minutes = validityPeriod % 60; - ephemerisValidityPeriod = "有效期: " + std::to_string(days) + "天" + + ephemerisValidityPeriod = std::to_string(days) + "天" + std::to_string(hours) + "小时" + std::to_string(minutes) + "分钟"; } else { diff --git a/code/sdk/application/wearable/fd272/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadPresenter.cpp b/code/sdk/application/wearable/fd272/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadPresenter.cpp index 1a1a53fe4..db3993ccd 100644 --- a/code/sdk/application/wearable/fd272/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadPresenter.cpp +++ b/code/sdk/application/wearable/fd272/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadPresenter.cpp @@ -94,7 +94,7 @@ void EphemerisDownloadPresenter::UpdateDownloadStatus() { else if(EphemerisDownloadModel::GetInstance().GetEphemerisDownloadProgress() == 0) { EphemerisDownloadView::GetInstance()->GetDownloadLabel()->SetText( - "下载中,正在链接网络"); + "正在链接网络"); } else if(EphemerisDownloadModel::GetInstance().GetEphemerisDownloadProgress() > 0) { @@ -104,7 +104,7 @@ void EphemerisDownloadPresenter::UpdateDownloadStatus() { { progress = 100; } - std::string progress_str = "下载中,正在下载"+std::to_string(progress)+"%"; + std::string progress_str = "正在下载"+std::to_string(progress)+"%"; EphemerisDownloadView::GetInstance()->GetDownloadLabel()->SetText(progress_str.c_str()); } else if(EphemerisDownloadModel::GetInstance().GetEphemerisDownloadProgress() == 10) diff --git a/code/sdk/application/wearable/fd272/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadView.cpp b/code/sdk/application/wearable/fd272/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadView.cpp index 235e2c353..ba6efdb35 100644 --- a/code/sdk/application/wearable/fd272/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadView.cpp +++ b/code/sdk/application/wearable/fd272/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadView.cpp @@ -6,6 +6,8 @@ #include "ui_resource_string.h" #include "components/ui_scroll_view.h" #include "wearable_log.h" +#include "UiConfig.h" +#include "uicomponents/UIComponents.h" namespace OHOS { @@ -28,11 +30,21 @@ EphemerisDownloadView::~EphemerisDownloadView() { delete labelStatus_; labelStatus_ = nullptr; } + if (labelStatusValue_!=nullptr) + { + delete labelStatusValue_; + labelStatusValue_ = nullptr; + } if (labelValidity_!=nullptr) { delete labelValidity_; labelValidity_ = nullptr; } + if (labelValidityValue_!=nullptr) + { + delete labelValidityValue_; + labelValidityValue_ = nullptr; + } if (btnDownload_!=nullptr) { delete btnDownload_; @@ -70,116 +82,169 @@ EphemerisDownloadView *EphemerisDownloadView::GetInstance() { } bool EphemerisDownloadView::EphemerisDownloadInit() { - // 初始化标题 + // 初始化标题 - 居中显示 labelTitle_ = new UILabelExt(); if (labelTitle_ == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "labelTitle_ new failed"); return false; } - labelTitle_->SetPosition(83, 50, 350, 60); + labelTitle_->SetPosition(83, 50, 300, 50); labelTitle_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); - labelTitle_->SetText("下载星历"); + labelTitle_->SetText("星历下载"); labelTitle_->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS); labelTitle_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + labelTitle_->SetTextColor(Color::White()); AddViewToRootContainer(labelTitle_); - // 初始化状态标签 + // 初始化状态标签 - 左对齐,带圆点前缀 labelStatus_ = new UILabelExt(); if (labelStatus_ == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "labelStatus_ new failed"); return false; } - labelStatus_->SetPosition(90, 120, 300, 40); - labelStatus_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 24); - //如果有效期大于0,则显示下载成功 - if(EphemerisDownloadModel::GetInstance().GetValidityPeriod()) - { - labelStatus_->SetText("数据有效"); - } - else - { - labelStatus_->SetText("未下载"); - } - labelStatus_->SetTextColor(Color::Yellow()); + labelStatus_->SetPosition(50, 120, 360, 70); + labelStatus_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + labelStatus_->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER); + labelStatus_->SetText("● 下载状态:"); + labelStatus_->SetTextColor(Color::Yellow());//黄色 AddViewToRootContainer(labelStatus_); - // 初始化有效期标签 + // 初始化状态值标签 - 显示具体状态 + labelStatusValue_ = new UILabelExt(); + if (labelStatusValue_ == nullptr) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "labelStatusValue_ new failed"); + return false; + } + labelStatusValue_->SetPosition(220, 120, 360, 70); + labelStatusValue_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 28); + labelStatusValue_->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER); + AddViewToRootContainer(labelStatusValue_); + + // 初始化有效期标签 - 左对齐,带圆点前缀 labelValidity_ = new UILabelExt(); if (labelValidity_ == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "labelValidity_ new failed"); return false; } - labelValidity_->SetPosition(90, 170, 350, 40); - labelValidity_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 20); - labelValidity_->SetText("有效期: 无"); - labelValidity_->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f)); + labelValidity_->SetPosition(50, 170, 360, 70); + labelValidity_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + labelValidity_->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER); + labelValidity_->SetText("● 有效期:"); + labelValidity_->SetTextColor(Color::Green());//绿色 AddViewToRootContainer(labelValidity_); - // 初始化下载按钮 - btnDownload_ = new UILabelButtonExt(); - if (btnDownload_ == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "btnDownload_ new failed"); - return false; - } - btnDownload_->SetPosition(50, 250, 300, 60); - btnDownload_->SetText("下载"); - btnDownload_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 24); - btnDownload_->SetViewId(DOWNLOAD_ID); - btnDownload_->SetOnClickListener(presenter_); - - //如果有效期大于0,则不能下载 下载按键显示灰色;否则显示绿色 - if(EphemerisDownloadModel::GetInstance().GetValidityPeriod()) - { - btnDownload_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Gray().full); - btnDownload_->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::PRESSED); - } - else - { - btnDownload_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Blue().full); - btnDownload_->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::PRESSED); - } - - AddViewToRootContainer(btnDownload_); - - // 初始化返回按钮 - btnBack_ = new UILabelButtonExt(); - if (btnBack_ == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "btnBack_ new failed"); + // 初始化有效期值标签 - 显示具体有效期 + labelValidityValue_ = new UILabelExt(); + if (labelValidityValue_ == nullptr) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "labelValidityValue_ new failed"); return false; } - btnBack_->SetPosition(50, 350, 300, 60); - btnBack_->SetText("返回"); - btnBack_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 24); - btnBack_->SetViewId(BACK_ID); - btnBack_->SetOnClickListener(presenter_); - AddViewToRootContainer(btnBack_); + labelValidityValue_->SetPosition(220, 170, 360, 70); + labelValidityValue_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 28); + labelValidityValue_->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER); + AddViewToRootContainer(labelValidityValue_); - // 初始化说明标签 + // 初始化说明标签 - 居中显示,灰色文字 labelNote_ = new UILabelExt(); if (labelNote_ == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "labelNote_ new failed"); return false; } - labelNote_->SetPosition(80, 420, 360, 40); - labelNote_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 18); - labelNote_->SetText("星历数据用于提高GPS定位精度"); - labelNote_->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x5f)); + labelNote_->SetPosition(50, 230, 366, 80); + labelNote_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 20); + labelNote_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + labelNote_->SetText("注:请打开4G,需要在网络连接状态下才可以下载"); + labelNote_->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff)); // 灰色 + //修改为靠左对齐 + labelNote_->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER); AddViewToRootContainer(labelNote_); - //更新有效期 - EphemerisDownloadView::GetInstance()->GetValidityPeriodLabel()->SetText( - EphemerisDownloadModel::GetInstance().GetEphemerisValidityPeriod().c_str()); + InitButtonExt(btnDownload_, 58, 320, 170, 90, DOWNLOAD_ID, STR_EPHEMERIS_DOWNLOAD, 30); + btnDownload_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919); // 设置按键颜色 + btnDownload_->SetText("下载"); + btnDownload_->SetOnClickListener(presenter_); + InitButtonExt(btnBack_, 238, 320, 170, 90, BACK_ID, STR_CANCEL, 30); + btnBack_->SetStyle(STYLE_BACKGROUND_COLOR, 0xffFF8A36); // 设置按键颜色 + btnBack_->SetOnClickListener(presenter_); + AddViewToRootContainer(btnDownload_); + AddViewToRootContainer(btnBack_); + + // 初始化完成后更新所有状态 + UpdateDownloadStatus(); + UpdateValidityPeriod(); + UpdateDownloadButton(); return true; } UILabelExt *EphemerisDownloadView::GetDownloadLabel() { - return labelStatus_; + return labelStatusValue_; } UILabelExt *EphemerisDownloadView::GetValidityPeriodLabel() { - return labelValidity_; + return labelValidityValue_; +} + +// 更新下载状态显示 +void EphemerisDownloadView::UpdateDownloadStatus() { + if (labelStatusValue_ == nullptr) return; + + auto status = EphemerisDownloadModel::GetInstance().GetEphemerisDownloadStatus(); + int progress = EphemerisDownloadModel::GetInstance().GetEphemerisDownloadProgress(); + + switch (status) { + case EphemerisDownloadStatus::NOT_DOWNLOADED: + labelStatusValue_->SetText("未下载"); + break; + case EphemerisDownloadStatus::DOWNLOADING: + labelStatusValue_->SetText(("下载中 " + std::to_string(progress) + "%").c_str()); + break; + case EphemerisDownloadStatus::DOWNLOADED: + labelStatusValue_->SetText("已完成"); + break; + case EphemerisDownloadStatus::FAILED: + labelStatusValue_->SetText("下载失败"); + break; + } +} + +// 更新有效期显示 +void EphemerisDownloadView::UpdateValidityPeriod() { + if (labelValidityValue_ == nullptr) return; + + std::string period = EphemerisDownloadModel::GetInstance().GetEphemerisValidityPeriod(); + if (period.empty()) { + labelValidityValue_->SetText("无数据"); + } else { + labelValidityValue_->SetText(period.c_str()); + } +} + +// 更新下载按钮状态 +void EphemerisDownloadView::UpdateDownloadButton() { + if (btnDownload_ == nullptr) return; + + auto status = EphemerisDownloadModel::GetInstance().GetEphemerisDownloadStatus(); + + switch (status) { + case EphemerisDownloadStatus::NOT_DOWNLOADED: + case EphemerisDownloadStatus::FAILED: + btnDownload_->SetText("未下载"); + btnDownload_->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGBA(0xff, 0x8c, 0x00, 0xff).full); // 橙色 + btnDownload_->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGBA(0xcc, 0x70, 0x00, 0xff).full, UIButton::PRESSED); + break; + case EphemerisDownloadStatus::DOWNLOADING: + btnDownload_->SetText("下载中"); + btnDownload_->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff).full); // 灰色 + btnDownload_->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGBA(0x44, 0x44, 0x44, 0xff).full, UIButton::PRESSED); + break; + case EphemerisDownloadStatus::DOWNLOADED: + btnDownload_->SetText("已下载"); + btnDownload_->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff).full); // 灰色 + btnDownload_->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGBA(0x44, 0x44, 0x44, 0xff).full, UIButton::PRESSED); + break; + } } } // namespace OHOS diff --git a/code/sdk/application/wearable/n9/nativeapp/nativeui/ephemeris_download/include/EphemerisDownloadView.h b/code/sdk/application/wearable/n9/nativeapp/nativeui/ephemeris_download/include/EphemerisDownloadView.h index ec147b3c4..876caf0e8 100644 --- a/code/sdk/application/wearable/n9/nativeapp/nativeui/ephemeris_download/include/EphemerisDownloadView.h +++ b/code/sdk/application/wearable/n9/nativeapp/nativeui/ephemeris_download/include/EphemerisDownloadView.h @@ -35,11 +35,19 @@ public: UILabelExt *GetDownloadLabel(); //获取有效期的label UILabelExt *GetValidityPeriodLabel(); + //更新下载状态显示 + void UpdateDownloadStatus(); + //更新有效期显示 + void UpdateValidityPeriod(); + //更新下载按钮状态 + void UpdateDownloadButton(); private: UILabelExt *labelTitle_{nullptr}; UILabelExt *labelStatus_{nullptr}; + UILabelExt *labelStatusValue_{nullptr}; // 新增:状态值标签 UILabelExt *labelValidity_{nullptr}; + UILabelExt *labelValidityValue_{nullptr}; // 新增:有效期值标签 UILabelButtonExt *btnDownload_{nullptr}; UILabelButtonExt *btnBack_{nullptr}; UILabelExt *labelNote_{nullptr}; diff --git a/code/sdk/application/wearable/n9/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadModel.cpp b/code/sdk/application/wearable/n9/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadModel.cpp index e67a43b92..b1bfef38d 100644 --- a/code/sdk/application/wearable/n9/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadModel.cpp +++ b/code/sdk/application/wearable/n9/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadModel.cpp @@ -99,7 +99,7 @@ std::string EphemerisDownloadModel::GetEphemerisValidityPeriod() { int days = validityPeriod / (24 * 60); int hours = (validityPeriod % (24 * 60)) / 60; int minutes = validityPeriod % 60; - ephemerisValidityPeriod = "有效期: " + std::to_string(days) + "天" + + ephemerisValidityPeriod = std::to_string(days) + "天" + std::to_string(hours) + "小时" + std::to_string(minutes) + "分钟"; } else { diff --git a/code/sdk/application/wearable/n9/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadPresenter.cpp b/code/sdk/application/wearable/n9/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadPresenter.cpp index 1a1a53fe4..db3993ccd 100644 --- a/code/sdk/application/wearable/n9/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadPresenter.cpp +++ b/code/sdk/application/wearable/n9/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadPresenter.cpp @@ -94,7 +94,7 @@ void EphemerisDownloadPresenter::UpdateDownloadStatus() { else if(EphemerisDownloadModel::GetInstance().GetEphemerisDownloadProgress() == 0) { EphemerisDownloadView::GetInstance()->GetDownloadLabel()->SetText( - "下载中,正在链接网络"); + "正在链接网络"); } else if(EphemerisDownloadModel::GetInstance().GetEphemerisDownloadProgress() > 0) { @@ -104,7 +104,7 @@ void EphemerisDownloadPresenter::UpdateDownloadStatus() { { progress = 100; } - std::string progress_str = "下载中,正在下载"+std::to_string(progress)+"%"; + std::string progress_str = "正在下载"+std::to_string(progress)+"%"; EphemerisDownloadView::GetInstance()->GetDownloadLabel()->SetText(progress_str.c_str()); } else if(EphemerisDownloadModel::GetInstance().GetEphemerisDownloadProgress() == 10) diff --git a/code/sdk/application/wearable/n9/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadView.cpp b/code/sdk/application/wearable/n9/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadView.cpp index 235e2c353..ba6efdb35 100644 --- a/code/sdk/application/wearable/n9/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadView.cpp +++ b/code/sdk/application/wearable/n9/nativeapp/nativeui/ephemeris_download/src/EphemerisDownloadView.cpp @@ -6,6 +6,8 @@ #include "ui_resource_string.h" #include "components/ui_scroll_view.h" #include "wearable_log.h" +#include "UiConfig.h" +#include "uicomponents/UIComponents.h" namespace OHOS { @@ -28,11 +30,21 @@ EphemerisDownloadView::~EphemerisDownloadView() { delete labelStatus_; labelStatus_ = nullptr; } + if (labelStatusValue_!=nullptr) + { + delete labelStatusValue_; + labelStatusValue_ = nullptr; + } if (labelValidity_!=nullptr) { delete labelValidity_; labelValidity_ = nullptr; } + if (labelValidityValue_!=nullptr) + { + delete labelValidityValue_; + labelValidityValue_ = nullptr; + } if (btnDownload_!=nullptr) { delete btnDownload_; @@ -70,116 +82,169 @@ EphemerisDownloadView *EphemerisDownloadView::GetInstance() { } bool EphemerisDownloadView::EphemerisDownloadInit() { - // 初始化标题 + // 初始化标题 - 居中显示 labelTitle_ = new UILabelExt(); if (labelTitle_ == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "labelTitle_ new failed"); return false; } - labelTitle_->SetPosition(83, 50, 350, 60); + labelTitle_->SetPosition(83, 50, 300, 50); labelTitle_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); - labelTitle_->SetText("下载星历"); + labelTitle_->SetText("星历下载"); labelTitle_->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS); labelTitle_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + labelTitle_->SetTextColor(Color::White()); AddViewToRootContainer(labelTitle_); - // 初始化状态标签 + // 初始化状态标签 - 左对齐,带圆点前缀 labelStatus_ = new UILabelExt(); if (labelStatus_ == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "labelStatus_ new failed"); return false; } - labelStatus_->SetPosition(90, 120, 300, 40); - labelStatus_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 24); - //如果有效期大于0,则显示下载成功 - if(EphemerisDownloadModel::GetInstance().GetValidityPeriod()) - { - labelStatus_->SetText("数据有效"); - } - else - { - labelStatus_->SetText("未下载"); - } - labelStatus_->SetTextColor(Color::Yellow()); + labelStatus_->SetPosition(50, 120, 360, 70); + labelStatus_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + labelStatus_->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER); + labelStatus_->SetText("● 下载状态:"); + labelStatus_->SetTextColor(Color::Yellow());//黄色 AddViewToRootContainer(labelStatus_); - // 初始化有效期标签 + // 初始化状态值标签 - 显示具体状态 + labelStatusValue_ = new UILabelExt(); + if (labelStatusValue_ == nullptr) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "labelStatusValue_ new failed"); + return false; + } + labelStatusValue_->SetPosition(220, 120, 360, 70); + labelStatusValue_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 28); + labelStatusValue_->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER); + AddViewToRootContainer(labelStatusValue_); + + // 初始化有效期标签 - 左对齐,带圆点前缀 labelValidity_ = new UILabelExt(); if (labelValidity_ == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "labelValidity_ new failed"); return false; } - labelValidity_->SetPosition(90, 170, 350, 40); - labelValidity_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 20); - labelValidity_->SetText("有效期: 无"); - labelValidity_->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f)); + labelValidity_->SetPosition(50, 170, 360, 70); + labelValidity_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + labelValidity_->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER); + labelValidity_->SetText("● 有效期:"); + labelValidity_->SetTextColor(Color::Green());//绿色 AddViewToRootContainer(labelValidity_); - // 初始化下载按钮 - btnDownload_ = new UILabelButtonExt(); - if (btnDownload_ == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "btnDownload_ new failed"); - return false; - } - btnDownload_->SetPosition(50, 250, 300, 60); - btnDownload_->SetText("下载"); - btnDownload_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 24); - btnDownload_->SetViewId(DOWNLOAD_ID); - btnDownload_->SetOnClickListener(presenter_); - - //如果有效期大于0,则不能下载 下载按键显示灰色;否则显示绿色 - if(EphemerisDownloadModel::GetInstance().GetValidityPeriod()) - { - btnDownload_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Gray().full); - btnDownload_->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::PRESSED); - } - else - { - btnDownload_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Blue().full); - btnDownload_->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::Black().full, UIButton::PRESSED); - } - - AddViewToRootContainer(btnDownload_); - - // 初始化返回按钮 - btnBack_ = new UILabelButtonExt(); - if (btnBack_ == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "btnBack_ new failed"); + // 初始化有效期值标签 - 显示具体有效期 + labelValidityValue_ = new UILabelExt(); + if (labelValidityValue_ == nullptr) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "labelValidityValue_ new failed"); return false; } - btnBack_->SetPosition(50, 350, 300, 60); - btnBack_->SetText("返回"); - btnBack_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 24); - btnBack_->SetViewId(BACK_ID); - btnBack_->SetOnClickListener(presenter_); - AddViewToRootContainer(btnBack_); + labelValidityValue_->SetPosition(220, 170, 360, 70); + labelValidityValue_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 28); + labelValidityValue_->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER); + AddViewToRootContainer(labelValidityValue_); - // 初始化说明标签 + // 初始化说明标签 - 居中显示,灰色文字 labelNote_ = new UILabelExt(); if (labelNote_ == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "labelNote_ new failed"); return false; } - labelNote_->SetPosition(80, 420, 360, 40); - labelNote_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 18); - labelNote_->SetText("星历数据用于提高GPS定位精度"); - labelNote_->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x5f)); + labelNote_->SetPosition(50, 230, 366, 80); + labelNote_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 20); + labelNote_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + labelNote_->SetText("注:请打开4G,需要在网络连接状态下才可以下载"); + labelNote_->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff)); // 灰色 + //修改为靠左对齐 + labelNote_->SetAlign(TEXT_ALIGNMENT_LEFT, TEXT_ALIGNMENT_CENTER); AddViewToRootContainer(labelNote_); - //更新有效期 - EphemerisDownloadView::GetInstance()->GetValidityPeriodLabel()->SetText( - EphemerisDownloadModel::GetInstance().GetEphemerisValidityPeriod().c_str()); + InitButtonExt(btnDownload_, 58, 320, 170, 90, DOWNLOAD_ID, STR_EPHEMERIS_DOWNLOAD, 30); + btnDownload_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919); // 设置按键颜色 + btnDownload_->SetText("下载"); + btnDownload_->SetOnClickListener(presenter_); + InitButtonExt(btnBack_, 238, 320, 170, 90, BACK_ID, STR_CANCEL, 30); + btnBack_->SetStyle(STYLE_BACKGROUND_COLOR, 0xffFF8A36); // 设置按键颜色 + btnBack_->SetOnClickListener(presenter_); + AddViewToRootContainer(btnDownload_); + AddViewToRootContainer(btnBack_); + + // 初始化完成后更新所有状态 + UpdateDownloadStatus(); + UpdateValidityPeriod(); + UpdateDownloadButton(); return true; } UILabelExt *EphemerisDownloadView::GetDownloadLabel() { - return labelStatus_; + return labelStatusValue_; } UILabelExt *EphemerisDownloadView::GetValidityPeriodLabel() { - return labelValidity_; + return labelValidityValue_; +} + +// 更新下载状态显示 +void EphemerisDownloadView::UpdateDownloadStatus() { + if (labelStatusValue_ == nullptr) return; + + auto status = EphemerisDownloadModel::GetInstance().GetEphemerisDownloadStatus(); + int progress = EphemerisDownloadModel::GetInstance().GetEphemerisDownloadProgress(); + + switch (status) { + case EphemerisDownloadStatus::NOT_DOWNLOADED: + labelStatusValue_->SetText("未下载"); + break; + case EphemerisDownloadStatus::DOWNLOADING: + labelStatusValue_->SetText(("下载中 " + std::to_string(progress) + "%").c_str()); + break; + case EphemerisDownloadStatus::DOWNLOADED: + labelStatusValue_->SetText("已完成"); + break; + case EphemerisDownloadStatus::FAILED: + labelStatusValue_->SetText("下载失败"); + break; + } +} + +// 更新有效期显示 +void EphemerisDownloadView::UpdateValidityPeriod() { + if (labelValidityValue_ == nullptr) return; + + std::string period = EphemerisDownloadModel::GetInstance().GetEphemerisValidityPeriod(); + if (period.empty()) { + labelValidityValue_->SetText("无数据"); + } else { + labelValidityValue_->SetText(period.c_str()); + } +} + +// 更新下载按钮状态 +void EphemerisDownloadView::UpdateDownloadButton() { + if (btnDownload_ == nullptr) return; + + auto status = EphemerisDownloadModel::GetInstance().GetEphemerisDownloadStatus(); + + switch (status) { + case EphemerisDownloadStatus::NOT_DOWNLOADED: + case EphemerisDownloadStatus::FAILED: + btnDownload_->SetText("未下载"); + btnDownload_->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGBA(0xff, 0x8c, 0x00, 0xff).full); // 橙色 + btnDownload_->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGBA(0xcc, 0x70, 0x00, 0xff).full, UIButton::PRESSED); + break; + case EphemerisDownloadStatus::DOWNLOADING: + btnDownload_->SetText("下载中"); + btnDownload_->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff).full); // 灰色 + btnDownload_->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGBA(0x44, 0x44, 0x44, 0xff).full, UIButton::PRESSED); + break; + case EphemerisDownloadStatus::DOWNLOADED: + btnDownload_->SetText("已下载"); + btnDownload_->SetStyle(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGBA(0x66, 0x66, 0x66, 0xff).full); // 灰色 + btnDownload_->SetStyleForState(STYLE_BACKGROUND_COLOR, Color::GetColorFromRGBA(0x44, 0x44, 0x44, 0xff).full, UIButton::PRESSED); + break; + } } } // namespace OHOS -- 2.17.1