Merge #1438 into sdk602patch0911 from refs/changes/1438/head 1440/target/1
author罗正 <1732036298@qq.com>
Thu, 21 Nov 2024 12:23:06 +0000 (12:23 +0000)
committersnickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
Thu, 21 Nov 2024 12:23:06 +0000 (12:23 +0000)
Code review from 罗正

* refs/changes/1438/head: (16 commits squashed)

  - applsit拨号盘实现:目前,滑动一下屏幕APP转动一次,后续优化为多次转动

  - 解决倒计时界面内存泄漏问题

  - Merge branch &#39;sdk602patch0911&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk602patch0911

  - Merge branch &#39;sdk602patch0911&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk602patch0911

  - 修改显示方式页面多国语言显示问题

  - Merge branch &#39;sdk602patch0911&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk602patch0911

  - 解决查找手表后变成长亮屏

  - Merge branch &#39;sdk602patch0911&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk602patch0911

  - 拨号盘样式,实现跟手滑动效果

  - Merge branch &#39;sdk602patch0911&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk602patch0911

  - 解决ChatGPT,设置Key后不能用问题

  - 修改拨号盘图片显示bug

  - Merge branch &#39;sdk602patch0911&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk602patch0911

  - #865,手表与手机同时进行10分钟倒计时,手机倒计时已结束手表还剩余40秒bug

  - Merge branch &#39;sdk602patch0911&#39; of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk602patch0911

  - 删除直线列表风格

Signed-off-by: 罗正 <1732036298@qq.com>
Reviewed-by: Caisking <3449750381@qq.com>
Reviewed-by: 罗正 <1732036298@qq.com>
Reviewed-by: aliyun8003852482 <1224667075@qq.com>
Reviewed-by: snickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
Reviewed-by: aliyun6865282430 <1624952103@qq.com>
Merged-by: snickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/1438
code/sdk/application/wearable/fd230app/nativeui/countdown/include/CountDownModel.h
code/sdk/application/wearable/fd230app/nativeui/countdown/src/CountDownModel.cpp
code/sdk/application/wearable/fd230app/nativeui/themestyle/include/ThemeStyleModel.h
code/sdk/application/wearable/fd230app/nativeui/themestyle/include/ThemeStyleView.h
code/sdk/application/wearable/fd230app/nativeui/themestyle/src/ThemeStyleView.cpp

index 674c403..41c1aa3 100644 (file)
@@ -1,8 +1,8 @@
 /*\r
  * @Author: luozheng 1732036298@qq.com\r
  * @Date: 2024-04-07 18:15:53\r
- * @LastEditors: SnickerSun snickersun@163.com\r
- * @LastEditTime: 2024-10-21 11:35:37\r
+ * @LastEditors: luozheng 1732036298@qq.com\r
+ * @LastEditTime: 2024-11-21 16:06:32\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/countdown/include/CountDownModel.h\r
  */\r
 #ifndef COUNTDOWN_MODEL_H\r
@@ -98,8 +98,30 @@ namespace OHOS
         void RequestStopRingtone(void);\r
         int ResetRingtonePlayback(void);\r
 \r
+        void countdownstart();\r
+        void countdownpause();\r
+        void countdownresume();\r
+        void countdownstop();\r
+\r
+        void SetisRunning(bool val) {\r
+            isRunning = val;\r
+        }\r
+        bool GetisRunning(void) const {\r
+            return isRunning;\r
+        }\r
+        void SetisPaused(bool val) {\r
+            isPaused = val;\r
+        }\r
+        bool GetisPaused(void) const {\r
+            return isPaused;\r
+        }\r
+        uint32_t get_current_time();//获取当前系统时间戳\r
     public:\r
         static int g_CountDownTimes;\r
+        static int totalSeconds;    //要到计时总秒数\r
+        static uint32_t startTime;  //开始时间戳\r
+        static uint32_t pauseTime;  //暂停时间戳\r
+        static uint32_t endTime;    //结束时间戳\r
 \r
     private:\r
         CountDownModel() {}\r
@@ -127,6 +149,9 @@ namespace OHOS
         std::string CountTimeBackup{"00:00:00"};\r
         bool IsChanageToStartCountDownViewFlag{false};//是否需要切换到开始倒计时界面标志\r
         bool CountDownTimerIsPauseFlag{false};\r
+\r
+        bool isRunning{false};//记录倒计时是否正在运行\r
+        bool isPaused{false}; //记录倒计时是否暂停\r
     };\r
 }\r
 #endif
\ No newline at end of file
index c0832fc..9c8817f 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com\r
  * @Date: 2024-04-07 18:15:53\r
  * @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-11-05 11:49:33\r
+ * @LastEditTime: 2024-11-21 16:38:01\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/countdown/src/CountDownModel.cpp\r
  */\r
 #include "countdown/include/CountDownModel.h"\r
 #include "AppViewIDs.h"\r
 #include "NativeAbility.h"\r
 #include <custom_utils.h>\r
+#include <errcode.h>\r
 namespace OHOS\r
 {\r
     /* -------------------------------------------------------------------------- */\r
     // 声明定时器变量\r
     static osTimerId_t g_timer = nullptr;\r
     int CountDownModel::g_CountDownTimes = {0};\r
+    int CountDownModel::totalSeconds = 0; //总的倒计时时间\r
+    uint32_t CountDownModel::startTime = 0;\r
+    uint32_t CountDownModel::pauseTime = 0;\r
+    uint32_t CountDownModel::endTime = 0;\r
     static constexpr int32 NUM_TEN = 10; // 主要用于格式化输出,当小时、分钟或秒小于10时,在其前面添加一个’0’以保持常规时间格式,例如“09:05:03”。\r
     static constexpr int16 NUM_TIME_MIN = 60;\r
     static constexpr int16 NUM_TIME_HOUR = 3600;\r
@@ -441,11 +446,67 @@ namespace OHOS
      */\r
     static void CountDown_TimerCallback(int data)\r
     {\r
-        CountDownModel::g_CountDownTimes--;        // 每次回调减少1秒\r
-        if (CountDownModel::g_CountDownTimes <= 0) // 检查倒计时是否结束\r
+\r
+        /*拿系统时间实现倒计时功能*/\r
+        bool isRunning = CountDownModel::GetInstance()->GetisRunning();\r
+        bool isPaused = CountDownModel::GetInstance()->GetisPaused();\r
+\r
+        if (isRunning &&!isPaused) \r
         {\r
-            GraphicService::GetInstance()->PostGraphicEvent(std::bind(CountDown_TimerCallbackProc, data));\r
+            uint32_t currentTime =  CountDownModel::GetInstance()->get_current_time();\r
+            CountDownModel::g_CountDownTimes = CountDownModel::totalSeconds - (currentTime - CountDownModel::startTime);\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "当前时间戳:%u,倒计时剩余时间:%d", currentTime ,CountDownModel::g_CountDownTimes);\r
+            if (CountDownModel::g_CountDownTimes <= 0 && currentTime == CountDownModel::endTime) {\r
+                // 这里可以添加倒计时结束后的操作,比如发出提示音等\r
+                GraphicService::GetInstance()->PostGraphicEvent(std::bind(CountDown_TimerCallbackProc, data));\r
+            }\r
+        }\r
+    }\r
+\r
+    uint32_t CountDownModel::get_current_time()\r
+    {\r
+        uint32_t time;\r
+        if (uapi_get_timestampe_ss(&time) != ERRCODE_SUCC) {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to get timestamp");\r
+            return 0;\r
         }\r
+        return time;\r
+    }\r
+\r
+    void CountDownModel::countdownstart()\r
+    {\r
+        isRunning = true;\r
+        isPaused = false;\r
+        CountDownModel::totalSeconds = CountDownModel::g_CountDownTimes;\r
+        CountDownModel::startTime = get_current_time();         //获取开始时间戳\r
+        CountDownModel::endTime = CountDownModel::startTime + g_CountDownTimes; //获取结束时间戳\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "startTime:%u,endTime:%u",CountDownModel::startTime,CountDownModel::endTime);\r
+\r
+    }\r
+    \r
+    void CountDownModel::countdownpause()\r
+    {\r
+        if (isRunning &&!isPaused) {\r
+            isPaused = true;\r
+            CountDownModel::pauseTime = get_current_time();\r
+        }\r
+    }\r
+    void CountDownModel::countdownresume()\r
+    {\r
+        if (isRunning && isPaused) {\r
+            isPaused = false;\r
+            uint32_t currentTime = get_current_time();\r
+            uint32_t pauseDuration = currentTime - CountDownModel::pauseTime;\r
+            CountDownModel::endTime = CountDownModel::endTime + pauseDuration;\r
+            CountDownModel::totalSeconds = CountDownModel::totalSeconds + pauseDuration;\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "startTime:%u,pauseDuration:%u,endTime:%u",CountDownModel::startTime,pauseDuration,CountDownModel::endTime);\r
+        }\r
+    }\r
+    \r
+    void CountDownModel::countdownstop()\r
+    {\r
+        isRunning = false;\r
+        isPaused = false;\r
     }\r
 \r
     /*\r
@@ -461,6 +522,8 @@ namespace OHOS
             return;\r
         }\r
 \r
+        countdownstart();\r
+\r
         /* --------------------------------- 2.创建定时器 -------------------------------- */\r
         g_timer = osTimerNew((osTimerFunc_t)CountDown_TimerCallback, osTimerPeriodic, nullptr, nullptr);\r
         // 检查定时器创建是否成功\r
@@ -498,6 +561,8 @@ namespace OHOS
         // 检查定时器是否存在\r
         if (g_timer != nullptr)\r
         {\r
+            countdownstop();\r
+\r
             osTimerStop(g_timer);\r
             // 删除定时器并置为 nullptr\r
             osStatus_t ret = osTimerDelete(g_timer);\r
@@ -518,6 +583,8 @@ namespace OHOS
         // 检查定时器是否存在\r
         if (g_timer != nullptr)\r
         {\r
+            countdownpause();\r
+\r
             // 暂停定时器,但不删除它\r
             osStatus_t ret = osTimerStop(g_timer);\r
             if (ret != osOK)\r
@@ -535,6 +602,8 @@ namespace OHOS
         // 检查定时器是否存在\r
         if (g_timer != nullptr)\r
         {\r
+            countdownresume();\r
+\r
             int tick = osMs2Tick(interval);\r
             // 恢复定时器\r
             osStatus_t ret = osTimerStart(g_timer, tick);\r
index d7217a7..7acf1ac 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-06-14 09:40:13
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-11-14 14:25:34
+ * @LastEditTime: 2024-11-21 17:21:29
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/themestyle/include/ThemeStyleModel.h
  */
 #ifndef SET_THEMESTYLE_MODEL_H
@@ -26,10 +26,10 @@ namespace OHOS
 
     typedef enum : uint16_t
     {
-        APPLIST_STYLE,  // 列表显示
-        HEXAGONS_STYLE, // 蜂窝显示
         ARC_SCALE_LIST_STYLE,//弧形列表
+        HEXAGONS_STYLE, // 蜂窝显示
         CIRCLE_LIST_STYLE,//拨号盘
+        APPLIST_STYLE,  // 列表显示
         FOOTBALL_STYLE, //足球
         MAX_THEME_STYLE,
     } ThemeStyle;
index 4db787a..fc0a0a2 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-06-14 09:40:13
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-11-14 14:37:34
+ * @LastEditTime: 2024-11-21 17:22:12
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/themestyle/include/ThemeStyleView.h
  */
 
@@ -24,7 +24,7 @@
 
 namespace OHOS
 {
-    static constexpr const uint16_t MAX_STYLE = MAX_THEME_STYLE - 1;
+    static constexpr const uint16_t MAX_STYLE = MAX_THEME_STYLE - 2; //直线列表和足球不显示所以删除了两个
     static constexpr char *THEME_STYLE_LIST     = "themestyleList";       // 列表
     static constexpr char *THEME_STYLE_HEXAGONS = "themestyleHexagons";   // 蜂窝
     static constexpr char *THEME_STYLE_FOOTBALL = "themestyleFootball";   // 足球
index de6fde7..ea79708 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-06-14 09:40:20
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-11-18 17:19:28
+ * @LastEditTime: 2024-11-21 17:12:45
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/themestyle/src/ThemeStyleView.cpp
  */
 
@@ -184,7 +184,8 @@ namespace OHOS
         titleText->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
         scrollView->Add(titleText);
         /* -------------------------------------------------------------------------- */
-        int16_t textId[] = {STR_LIST_DISPLAY, STR_CELLULAR_DISPLAY, STR_ARC_SCALE_LIST_DISPLAY,STR_DIAL_PLATE};
+        // int16_t textId[] = {STR_LIST_DISPLAY, STR_CELLULAR_DISPLAY, STR_ARC_SCALE_LIST_DISPLAY,STR_DIAL_PLATE};
+        int16_t textId[] = {STR_ARC_SCALE_LIST_DISPLAY, STR_CELLULAR_DISPLAY,STR_DIAL_PLATE};
         LabelConfig labelConfig = {
             .left = 143,
             .top = 153,
@@ -236,7 +237,8 @@ namespace OHOS
             .viewId = THEME_STYLE_LIST,
         };
 
-        const char *viewId[] = {THEME_STYLE_LIST, THEME_STYLE_HEXAGONS, THEME_STYLE_ARC_LIST,THEME_STYLE_CIRCLE_LIST};
+        // const char *viewId[] = {THEME_STYLE_LIST, THEME_STYLE_HEXAGONS, THEME_STYLE_ARC_LIST,THEME_STYLE_CIRCLE_LIST};
+        const char *viewId[] = {THEME_STYLE_ARC_LIST, THEME_STYLE_HEXAGONS,THEME_STYLE_CIRCLE_LIST};
         for (int i = 0; i < sizeof(viewId) / sizeof(viewId[0]); i++)
         {
             labelbuttonconfig.top = 120 + 120 * i;
@@ -277,7 +279,8 @@ namespace OHOS
             .src = THEMESTYLE_LIST_IMAGEPATH,
         };
         int y = 150;
-        const char *src[MAX_STYLE] = {THEMESTYLE_LIST_IMAGEPATH, THEMESTYLE_HEXAGONS_IMAGEPATH, THEMESTYLE_ARCLIST_IMAGEPATH,THEMESTYLE_CIRCLELIST_IMAGEPATH};
+        // const char *src[MAX_STYLE] = {THEMESTYLE_LIST_IMAGEPATH, THEMESTYLE_HEXAGONS_IMAGEPATH, THEMESTYLE_ARCLIST_IMAGEPATH,THEMESTYLE_CIRCLELIST_IMAGEPATH};
+        const char *src[] = {THEMESTYLE_ARCLIST_IMAGEPATH, THEMESTYLE_HEXAGONS_IMAGEPATH,THEMESTYLE_CIRCLELIST_IMAGEPATH};
         for (int i = 0; i < sizeof(src) / sizeof(src[0]); i++)
         {
             imageconfig.y = y + 120 * i;