DATA_TYPE_STEPS_GOAL_INT, // 运动步数百分比
DATA_TYPE_CALORIE_GOAL_INT, // 运动卡路里目标百分比
DATA_TYPE_TIME_PERIOD_BG, // 时间段背景索引(0-3: 0-5点->0, 6-11点->1, 12-17点->2, 18-23点->3)
+ DATA_TYPE_TIME_STR,
DATA_TYPE_MULTI_FLOAT_BASE = 0x2fff, // 多个浮点数据类型基值
STEPS_GOAL_BOXPROGRESS,//步数目标进度条映射?
CALORIE_GOAL_BOXPROGRESS,//卡路里目标进度条映射?
TIME_PERIOD_BG, // 时间段背景索引(0-3: 0-5点->0, 6-11点->1, 12-17点->2, 18-23点->3)
+ TIMESTR_STR1,
SWIVEL_GEAR_POSITIVE = 8190, // private data, clockwise
SWIVEL_GEAR_NEGATIVE = 8191, // counterclockwise
--- /dev/null
+
+
+#ifndef DIAL_MODEL_TimeStr1_H
+#define DIAL_MODEL_TimeStr1_H
+
+#include "DialBaseModel.h"
+#include <cstdint>
+#include <string>
+
+namespace OHOS {
+class DialModelTimeStr1 : public DialBaseModel {
+public:
+ DialModelTimeStr1() {}
+ virtual ~DialModelTimeStr1() {}
+ static DialModelTimeStr1 *GetInstance() {
+ static DialModelTimeStr1 instance;
+ return &instance;
+ }
+ bool GetDialTextData(DialDataType &type, std::string *&out,
+ int16_t &strNum) override;
+ void UpdateTimeStr(const std::string dialTimeStr);
+
+private:
+ struct tm tblock_;
+ std::string dialTimeStr_ = "00/00";
+};
+} // namespace OHOS
+#endif
\ No newline at end of file
{DialOldDataType::DATA_TYPE_STEPS_GOAL_INT, OHOS::DialDataType::STEP_GOAL_PROGRESS},
{DialOldDataType::DATA_TYPE_CALORIE_GOAL_INT, OHOS::DialDataType::CALORIE_RATIO},
{DialOldDataType::DATA_TYPE_TIME_PERIOD_BG, OHOS::DialDataType::TIME_PERIOD_BG},
+ {DialOldDataType::DATA_TYPE_TIME_STR, OHOS::DialDataType::TIMESTR_STR1},
{DialOldDataType::DATA_TYPE_WEEK_STR, OHOS::DialDataType::WEEK_STR},
{DialOldDataType::DATA_TYPE_DATE_STR, OHOS::DialDataType::DATE_STR},
{DialOldDataType::DATA_TYPE_WEATHER_STR, OHOS::DialDataType::WEATHER_STR},
--- /dev/null
+#include "main/include/dial/DialModelTimeStr1.h"
+#include "main/include/dial/RegisterDialModel.h"
+#include "custom_runtime.h"
+#include "sys/time.h"
+#include "wearable_log.h"
+#include <ctime>
+#include <iomanip>
+#include <sstream>
+#include <string>
+#include <time.h>
+#include <vector>
+
+REGIST_DIAL_MODULE(OHOS::DialDataType::TIMESTR_STR1,
+ OHOS::DialModelTimeStr1::GetInstance());
+
+namespace OHOS {
+
+bool DialModelTimeStr1::GetDialTextData(DialDataType &type, std::string *&out,
+ int16_t &strNum) {
+ (void)type;
+ /*获取时间*/
+ struct timeval tv;
+ gettimeofday(&tv, NULL); // 获取当前时间
+ localtime_r(&tv.tv_sec, &tblock_);
+
+ // Use ostringstream to format the date as MM/DD (月/日) with leading zeros
+ std::ostringstream oss;
+
+ // 格式化月份(补零到2位) + / + 格式化日期(补零到2位)
+ oss << std::setw(2) << std::setfill('0') << (tblock_.tm_mon + 1) << "/" // tm_mon从0开始,需+1
+ << std::setw(2) << std::setfill('0') << tblock_.tm_mday;
+
+ std::string dateStr = oss.str(); // 获取格式化后的日期字符串
+
+ if (!dateStr.empty()) {
+ dialTimeStr_ = dateStr;
+ out = &dialTimeStr_;
+ }
+
+ strNum = 1;
+ return true;
+}
+
+void DialModelTimeStr1::UpdateTimeStr(const std::string dialTimeStr) {
+ dialTimeStr_.clear();
+ dialTimeStr_ = dialTimeStr; // 更新字符串
+ if (onChangeListener_ != nullptr) {
+ onChangeListener_->OnDialTextDataUpdate(OHOS::DialDataType::TIMESTR_STR1,
+ &dialTimeStr_, 1);
+ }
+}
+} // namespace OHOS
\ No newline at end of file
<!-- 时间段背景切换:0-6点、6-12点、12-18点、18-24点 -->\r
<!-- 时间段映射:0-5点->0, 6-11点->1, 12-17点->2, 18-23点->3 -->\r
<!-- 时间段背景切换(已实现系统端映射逻辑) -->\r
- <!-- <option_img position="0 0" img_names="./instance/208/BACKGROUND_0_6.png,./instance/208/BACKGROUND_6_12.png,./instance/208/BACKGROUND_12_18.png,./instance/208/BACKGROUND_18_24.png" bind_data="223" period="10"></option_img> -->\r
+ <option_img position="0 0" img_names="./instance/208/BACKGROUND_0_6.png,./instance/208/BACKGROUND_6_12.png,./instance/208/BACKGROUND_12_18.png,./instance/208/BACKGROUND_18_24.png" bind_data="37" period="10"></option_img>\r
\r
\r
<!-- 时针底部背景 -->\r
<!-- 时针顶部背景 -->\r
<static_img id="hand_top_bg" position="231 228" img_name="./instance/208/HAND_TOP.png"></static_img>\r
\r
+ <!-- 月/日 -->\r
+ <!-- 日期弧形标签:02/08,贴近表盘外圈左下方 -->\r
+ <arc_label id="date_month_day_arc" center="-30 540" radius="233" start_angle="30" end_angle="359"\r
+ color="0xFF889199" font="HarmonyOS_Sans_SC_Regular.ttf"\r
+ text="%s" font_size="28" align="left"\r
+ bind_data="38" period="10"></arc_label>\r
+\r
+ <!-- 电量弧形标签:右下方 \"⚡80%\",贴近表盘外圈 -->\r
+ <arc_label id="battery_arc_label" center="515 515" radius="233" start_angle="310" end_angle="359"\r
+ color="0xFF889199" font="HarmonyOS_Sans_SC_Regular.ttf"\r
+ text="%s" font_size="28" align="left"\r
+ bind_data="20485" period="10"></arc_label>\r
\r
</dial>
\ No newline at end of file