From 4cb9b06b5e786cbce0fcc166f6aa370b7282f71a Mon Sep 17 00:00:00 2001 From: Caisking <3449750381@qq.com> Date: Fri, 9 Aug 2024 18:07:32 +0800 Subject: [PATCH] =?utf8?q?=E5=A2=9E=E5=8A=A0=E6=97=A5=E6=9C=9FDial?= =?utf8?q?=E6=95=B0=E6=8D=AE=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../main/include/dial/DialModelDateStr.h | 30 +++++++++ .../main/src/dial/DialModelDateStr.cpp | 62 +++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelDateStr.h create mode 100644 code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelDateStr.cpp diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelDateStr.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelDateStr.h new file mode 100644 index 000000000..c109ff972 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelDateStr.h @@ -0,0 +1,30 @@ + + +#ifndef DIAL_MODEL_DateStr_H +#define DIAL_MODEL_DateStr_H + +#include "DialBaseModel.h" +#include +#include +#include + +namespace OHOS +{ + class DialModelDateStr : public DialBaseModel + { + public: + DialModelDateStr() {} + virtual ~DialModelDateStr() {} + static DialModelDateStr *GetInstance() + { + static DialModelDateStr instance; + return &instance; + } + bool GetDialTextData(DialDataType &type, std::string *&out, int16_t &strNum) override; + void UpdateDateStr(const std::string *&dialDateStr); + + private: + std::vector datestr; + }; +} +#endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelDateStr.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelDateStr.cpp new file mode 100644 index 000000000..5be656d22 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelDateStr.cpp @@ -0,0 +1,62 @@ +#include "RegisterDialModel.h" +#include "DialModelDateStr.h" +#include +#include +#include +#include "sys/time.h" +#include "wearable_log.h" +#include + +REGIST_DIAL_MODULE(DialDataType::DATA_TYPE_DATE_STR, OHOS::DialModelDateStr::GetInstance()); +namespace OHOS +{ + // CnDatedays 是一个包含星期字符串的数组 + const std::string CnDatedays[] = {"星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"}; + + /*继承的虚函数 不能修改*/ + bool DialModelDateStr::GetDialTextData(DialDataType &type, std::string *&out, int16_t &strNum) + { + (void)type; + + struct tm local_time = {0}; + time_t seconds = time(nullptr); + + if (localtime_r(&seconds, &local_time) == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "get localtime error!"); + return false; + } + + datestr.clear(); // 清空之前的数据 + datestr.push_back(std::to_string(local_time.tm_mon + 1)); // 月份 + datestr.push_back(std::to_string(local_time.tm_mday)); // 日期 + datestr.push_back(CnDatedays[local_time.tm_wday]); // 星期 + + strNum = 4; // 更新字符串数量类型 + + // 打印调试信息 + for (size_t i = 0; i < datestr.size(); ++i) + { + WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "dialdateStr[%zu]: %s", i, datestr[i].c_str()); + } + WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "Total strings: %d", strNum); + + // 为输出分配内存 + for (int16_t i = 0; i < datestr.size(); ++i) + { + out[i] = datestr[i]; // 将每个字符串复制到输出 + } + + return true; + } + + void DialModelDateStr::UpdateDateStr(const std::string *&dialDateStr) + { + // dialdateStr_.clear(); + // dialdateStr_ = *dialDateStr; // 更新字符串 + // if (onChangeListener_ != nullptr) + // { + // onChangeListener_->OnDialTextDataUpdate(DialDataType::DialModelMinUnits, &dialdateStr_, dialdateStr_.size()); + // } + } +} \ No newline at end of file -- 2.17.1