From 2e74e65b7aa78f71ebed274e1075dda734c02aa2 Mon Sep 17 00:00:00 2001 From: Caisking Date: Mon, 15 Sep 2025 18:36:05 +0800 Subject: [PATCH] =?utf8?q?=E5=A2=9E=E5=8A=A0fd30=E7=9A=84=E6=98=9F?= =?utf8?q?=E5=8E=86=E4=BA=A4=E4=BA=92=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- code/sdk/application/wearable/CMakeLists.txt | 2 +- .../include/EphemerisDownloadModel.h | 2 + .../src/EphemerisDownloadModel.cpp | 71 +++++++++++++------ .../src/EphemerisDownloadView.cpp | 19 ++++- 4 files changed, 69 insertions(+), 25 deletions(-) diff --git a/code/sdk/application/wearable/CMakeLists.txt b/code/sdk/application/wearable/CMakeLists.txt index 54d668e7f..d16f2a3d6 100644 --- a/code/sdk/application/wearable/CMakeLists.txt +++ b/code/sdk/application/wearable/CMakeLists.txt @@ -2,7 +2,7 @@ # @brief cmake make file # Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved. #=============================================================================== -if("BOARD_FD230" IN_LIST DEFINES) +if("FD230" IN_LIST DEFINES) add_subdirectory_if_exist(fd230) elseif("BOARD_N9" IN_LIST DEFINES) add_subdirectory_if_exist(n9) diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/ephemeris_download/include/EphemerisDownloadModel.h b/code/sdk/application/wearable/fd230/nativeapp/nativeui/ephemeris_download/include/EphemerisDownloadModel.h index ae781fe01..702f61e07 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/ephemeris_download/include/EphemerisDownloadModel.h +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/ephemeris_download/include/EphemerisDownloadModel.h @@ -36,6 +36,8 @@ namespace OHOS void SetEphemerisValidityPeriod(const std::string &period); //获取下载进度 int GetEphemerisDownloadProgress(); + //获取有效期 + bool GetValidityPeriod(); private: 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 d084be885..3da91e2f1 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 @@ -9,15 +9,43 @@ #include "gnss_http_server.h" #endif +//最长的有效期 目前为2天 +#define MAX_VALIDITY_PERIOD 2 * 24 * 60 + namespace OHOS { EphemerisDownloadModel::EphemerisDownloadModel() {} EphemerisDownloadModel::~EphemerisDownloadModel() {} +void EphemerisDownloadModel::DownloadEphemeris() {} +//获取有效期接口 +bool EphemerisDownloadModel::GetValidityPeriod() { +#if defined(SUPPORT_GNSS) + int validityPeriod = gnss_check_agnss_status(); + if (validityPeriod > 0 && validityPeriod <= MAX_VALIDITY_PERIOD) { + return true; + } +#endif + return false; +} +/* +1、调用下载接口 +2、修改状态为下载中 +3、检测有效期,如果是有效的 则不能下载 +4、如果状态为下载中,则不能下载 +*/ void EphemerisDownloadModel::DownloadEphemeris() { - //调用下载接口 - //修改状态为下载中 + if (ephemerisDownloadStatus == EphemerisDownloadStatus::DOWNLOADING) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PGNSS正在下载"); + return; + } +#if defined(SUPPORT_GNSS) + if (GetValidityPeriod()) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PGNSS有效"); + return; + } +#endif ephemerisDownloadStatus = EphemerisDownloadStatus::DOWNLOADING; #if defined(SUPPORT_GNSS) do_gnss_http_server_send_data(GNSS_HTTP_SERVICE_CMD_DOWNLOAD_AGNSS, NULL, 0); @@ -25,30 +53,25 @@ void EphemerisDownloadModel::DownloadEphemeris() { } /* 获取下载状态 -//返回值:过期返回8,有效返回剩余时间的分钟数,错误返回-1 +返回值:过期返回0,有效返回剩余时间的分钟数,错误返回-1 int gnss_check_agnss_status(void); -//简化的下载进度状态位 -//0:正在建立HTTP连接 -//-1:下载失败 -//1-9:下载进度(10%,20%,...,90%) -//10:下载完成 +简化的下载进度状态位 +0:正在建立HTTP连接 +-1:下载失败 +1-9:下载进度(10%,20%,...,90%) +10:下载完成 int gnss_get_download_status(void); */ int EphemerisDownloadModel::GetEphemerisDownloadProgress() { #if defined(SUPPORT_GNSS) int download_status = gnss_get_download_status(); - if(download_status == -1) - { - ephemerisDownloadStatus = EphemerisDownloadStatus::FAILED; - } - else if(download_status == 0) - { - ephemerisDownloadStatus = EphemerisDownloadStatus::DOWNLOADING; - } - else if(download_status == 10) - { - ephemerisDownloadStatus = EphemerisDownloadStatus::DOWNLOADED; + if (download_status == -1) { + ephemerisDownloadStatus = EphemerisDownloadStatus::FAILED; + } else if (download_status == 0) { + ephemerisDownloadStatus = EphemerisDownloadStatus::DOWNLOADING; + } else if (download_status == 10) { + ephemerisDownloadStatus = EphemerisDownloadStatus::DOWNLOADED; } return download_status; #endif @@ -69,8 +92,14 @@ std::string EphemerisDownloadModel::GetEphemerisValidityPeriod() { #if defined(SUPPORT_GNSS) int validityPeriod = gnss_check_agnss_status(); if (validityPeriod > 0) { - ephemerisValidityPeriod = - "有效期: " + std::to_string(validityPeriod) + "分钟"; + + //需要显示 天 小时 分钟的格式 + int days = validityPeriod / (24 * 60); + int hours = (validityPeriod % (24 * 60)) / 60; + int minutes = validityPeriod % 60; + ephemerisValidityPeriod = "有效期: " + std::to_string(days) + "天" + + std::to_string(hours) + "小时" + + std::to_string(minutes) + "分钟"; } else { ephemerisValidityPeriod = "无星历数据"; } 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 b4a3538b1..96e0bd40d 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 @@ -72,7 +72,7 @@ bool EphemerisDownloadView::EphemerisDownloadInit() { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "labelTitle_ new failed"); return false; } - labelTitle_->SetPosition(83, 50, 300, 60); + labelTitle_->SetPosition(83, 50, 350, 60); labelTitle_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); labelTitle_->SetText("下载星历"); labelTitle_->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS); @@ -85,7 +85,7 @@ bool EphemerisDownloadView::EphemerisDownloadInit() { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "labelStatus_ new failed"); return false; } - labelStatus_->SetPosition(90, 120, 200, 40); + labelStatus_->SetPosition(90, 120, 300, 40); labelStatus_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 24); labelStatus_->SetText("未下载"); labelStatus_->SetTextColor(Color::Yellow()); @@ -97,7 +97,7 @@ bool EphemerisDownloadView::EphemerisDownloadInit() { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "labelValidity_ new failed"); return false; } - labelValidity_->SetPosition(90, 170, 300, 40); + labelValidity_->SetPosition(90, 170, 350, 40); labelValidity_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 20); labelValidity_->SetText("有效期: 无"); labelValidity_->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x7f)); @@ -114,6 +114,19 @@ bool EphemerisDownloadView::EphemerisDownloadInit() { btnDownload_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 24); btnDownload_->SetViewId(DOWNLOAD_ID); btnDownload_->SetOnClickListener(presenter_); + + //如果有效期大于0,则不能下载 下载按键显示灰色;否则显示绿色 + if(EphemerisDownloadModel::GetInstance().GetValidityPeriod()) + { + btnDownload_->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x5f)); + btnDownload_->SetBackgroundColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0x5f)); + } + else + { + btnDownload_->SetTextColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0xff)); + btnDownload_->SetBackgroundColor(Color::GetColorFromRGBA(0xff, 0xff, 0xff, 0xff)); + } + AddViewToRootContainer(btnDownload_); // 初始化返回按钮 -- 2.17.1