增加日期Dial数据类型
authorCaisking <3449750381@qq.com>
Fri, 9 Aug 2024 10:07:32 +0000 (18:07 +0800)
committerCaisking <3449750381@qq.com>
Fri, 9 Aug 2024 10:07:32 +0000 (18:07 +0800)
code/sdk/application/wearable/fd230app/nativeui/main/include/dial/DialModelDateStr.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/main/src/dial/DialModelDateStr.cpp [new file with mode: 0644]

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 (file)
index 0000000..c109ff9
--- /dev/null
@@ -0,0 +1,30 @@
+
+
+#ifndef DIAL_MODEL_DateStr_H
+#define DIAL_MODEL_DateStr_H
+
+#include "DialBaseModel.h"
+#include <cstdint>
+#include <string>
+#include <vector>
+
+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<std::string> 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 (file)
index 0000000..5be656d
--- /dev/null
@@ -0,0 +1,62 @@
+#include "RegisterDialModel.h"
+#include "DialModelDateStr.h"
+#include <string>
+#include <ctime>
+#include <time.h>
+#include "sys/time.h"
+#include "wearable_log.h"
+#include <vector>
+
+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