初始化界面同步时间:需要AT指令
authorCaisking <3449750381@qq.com>
Sat, 20 Jan 2024 07:07:10 +0000 (15:07 +0800)
committerCaisking <3449750381@qq.com>
Sat, 20 Jan 2024 07:07:10 +0000 (15:07 +0800)
code/sdk/application/wearable/nativeapp/nativeui/dial/include/Digital_clockView.h
code/sdk/application/wearable/nativeapp/nativeui/dial/src/Digital_clockView.cpp

index 08f91c7..880bd35 100644 (file)
@@ -75,18 +75,18 @@ namespace OHOS
     };
     /* -------------------------------------------------------------------------- */
 
-    /* -------------------------------------------------------------------------- */
     class timeLableCallback : public AnimatorCallback
     {
     private:
         UILabel *timeLable{nullptr};
+        UILabel *dateLable{nullptr};
+        UILabel *weekLable{nullptr};
         std::string stringtime;
-        struct timespec Systime;
         struct tm pTM;
         time_t seconds;
 
     public:
-        explicit timeLableCallback(UILabel *timeLable, std::string stringtime) : timeLable(timeLable), stringtime(stringtime)
+        explicit timeLableCallback(UILabel *timeLable, UILabel *dateLable, UILabel *weekLable) : timeLable(timeLable), dateLable(dateLable), weekLable(weekLable)
         {
         }
         ~timeLableCallback() {}
@@ -94,22 +94,32 @@ namespace OHOS
         virtual void Callback(UIView *view) override
         {
             /* --------------------------------- 时间 --------------------------------- */
-            clock_gettime(CLOCK_MONOTONIC, &Systime);
-            int SystemTime = Systime.tv_sec;
-            printf("--getSystemTime::%d--\n", SystemTime);
-            /* --------------------------------- 模拟更新时间 --------------------------------- */
             // 获取系统时间
             time(&seconds);
             localtime_r(&seconds, &pTM);
-
+            /* -------------------------------------------------------------------------- */
             // 解析小时和分钟
             int hour = pTM.tm_hour;
             int minute = pTM.tm_min;
-
-            // 将小时和分钟转换为字符串,并更新显示
-            std::string stringtime = (hour < 10 ? "0" : "") + std::to_string(hour) + ":" + (minute < 10 ? "0" : "") + std::to_string(minute);
+            stringtime = (hour < 10 ? "0" : "") + std::to_string(hour) + ":" + (minute < 10 ? "0" : "") + std::to_string(minute);
+            // 将小时和分钟更新显示
             timeLable->SetText(stringtime.c_str());
-            printf("--SystemTime::%s--\n", stringtime.c_str());
+            /* -------------------------------------------------------------------------- */
+#if 0
+            // 解析年月日
+             std::string dateStr = std::to_string(pTM.tm_year + 1900) + "-" + std::to_string(pTM.tm_mon + 1) + "-" + std::to_string(pTM.tm_mday);
+            // 解析星期
+            std::string weekStr = getWeekString(pTM.tm_wday);
+            // 将日期更新显示
+            dateLable->SetText(dateStr.c_str());
+            // 将星期更新显示
+            weekLable->SetText(weekStr.c_str());
+#endif
+        }
+        std::string getWeekString(int wday)
+        {
+            std::string weekDays[] = {"星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
+            return weekDays[wday];
         }
     };
     /* -------------------------------------------------------------------------- */
index 70194fd..7f35ff5 100644 (file)
@@ -354,7 +354,6 @@ namespace OHOS
             timeLable->SetViewId("label1");              // Set style
             timeLable->SetStyle(STYLE_TEXT_FONT, digitsize);
 
-           
             timeLable->SetText(stringtime.c_str());
             timeLable->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
             timeLable->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
@@ -367,7 +366,7 @@ namespace OHOS
 
             if (timeLableCallback_ == nullptr)
             {
-                timeLableCallback_ = new timeLableCallback(timeLable, stringtime);
+                timeLableCallback_ = new timeLableCallback(timeLable, dateLable, weekLable);
                 timeLableanimator_ = new Animator(timeLableCallback_, timeLable, 1000, true);
             }
             timeLableanimator_->Start();
@@ -413,7 +412,6 @@ namespace OHOS
         sweepClock1_->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);
         sweepClock1_->SetStyle(STYLE_BACKGROUND_OPA, 0x00);
 
-       
         sweepClock1_->SetWorkMode(UISweepClock::WorkMode::NORMAL);
         Image *sweepClock1HourImage = new Image();
         std::string HourImagePath = std::string(handspath) + "hour.bin";
@@ -497,9 +495,18 @@ namespace OHOS
         dateLable->SetPosition(date_left, date_top); // widget's left position and top position
         dateLable->SetViewId("label1");              // Set style
         dateLable->SetStyle(STYLE_TEXT_FONT, fontsize);
-
-        std::string dateStr = "2024-02-09";
-
+        /* -------------------------------------------------------------------------- */
+        // 将时间字段转换为字符串
+        struct tm pTM;
+        time_t seconds;
+        time(&seconds);
+        localtime_r(&seconds, &pTM);
+        std::string yearStr = std::to_string(pTM.tm_year + 1900);                                                             // 年份需要加上 1900
+        std::string monthStr = (pTM.tm_mon + 1 < 10) ? "0" + std::to_string(pTM.tm_mon + 1) : std::to_string(pTM.tm_mon + 1); // 月份是从 0 开始的,需要加上 1
+        std::string dayStr = (pTM.tm_mday < 10) ? "0" + std::to_string(pTM.tm_mday) : std::to_string(pTM.tm_mday);
+        // 连接成日期字符串
+        std::string dateStr = yearStr + "-" + monthStr + "-" + dayStr;
+        /* -------------------------------------------------------------------------- */
         std::string displayformat = cJSON_GetObjectItem(textdisplay, "displayformat")->valuestring;
         // 调用日期格式化函数
         std::string formattedDate = FormatDate(dateStr, displayformat);
@@ -540,12 +547,15 @@ namespace OHOS
         weekLable->SetViewId("label2"); // Set style
         weekLable->SetStyle(STYLE_TEXT_FONT, fontsize);
 
-       
         cJSON *weekformat = cJSON_GetObjectItem(displayformat, "weekformat");
         std ::string weekStr;
         if (weekformat != nullptr && cJSON_IsArray(weekformat))
         {
-            cJSON *weekformat1 = cJSON_GetArrayItem(weekformat, 1);
+            struct tm pTM;
+            time_t seconds;
+            time(&seconds);
+            localtime_r(&seconds, &pTM);
+            cJSON *weekformat1 = cJSON_GetArrayItem(weekformat, pTM.tm_wday);
             if (weekformat1 != nullptr && cJSON_IsString(weekformat1))
             {
                 weekStr = weekformat1->valuestring;
@@ -622,7 +632,6 @@ namespace OHOS
         batteryLable->SetViewId("label3"); // Set style
         batteryLable->SetStyle(STYLE_TEXT_FONT, fontsize);
 
-       
         batteryLable->SetText((std::to_string(value) + "%").c_str());
         batteryLable->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
         batteryLable->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
@@ -650,8 +659,8 @@ namespace OHOS
         {
             changebutton = new UIButton();
         }
-        changebutton->SetPosition(0, 0);      
-        changebutton->Resize(466, 466);        
+        changebutton->SetPosition(0, 0);
+        changebutton->Resize(466, 466);
         changebutton->SetViewId(CHANGEBUTTON);
         changebutton->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);
         changebutton->SetStyle(STYLE_BACKGROUND_OPA, 0x00);
@@ -659,7 +668,7 @@ namespace OHOS
         changebutton->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);
         changebutton->SetStyleForState(STYLE_BORDER_COLOR, 0xffffffff, UIButton::PRESSED);
         changebutton->SetStyleForState(STYLE_BORDER_OPA, 0x00, UIButton::PRESSED);
-        
+
         UIView::OnLongPressListener *buttonLongPress = static_cast<UIView::OnLongPressListener *>(MainPresenterSample::GetInstance());
         changebutton->SetOnLongPressListener(buttonLongPress);
         // Add to rootView