天气视图优化
authorluozheng <1732036298@qq.com>
Fri, 12 Apr 2024 12:10:56 +0000 (20:10 +0800)
committerluozheng <1732036298@qq.com>
Fri, 12 Apr 2024 12:10:56 +0000 (20:10 +0800)
配对弹窗的定时器启动放到显示视图时启动

20 files changed:
code/sdk/application/wearable/fd230app/CMakeLists.txt
code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h
code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h
code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp
code/sdk/application/wearable/fd230app/nativeui/weather/include/GetWeatherDataErrorPresenter.h [deleted file]
code/sdk/application/wearable/fd230app/nativeui/weather/include/GetWeatherDataErrorView.h
code/sdk/application/wearable/fd230app/nativeui/weather/include/MainWeatherView.h
code/sdk/application/wearable/fd230app/nativeui/weather/include/WeatherModel.h
code/sdk/application/wearable/fd230app/nativeui/weather/include/WeatherReportView.h
code/sdk/application/wearable/fd230app/nativeui/weather/include/WeatherView.h
code/sdk/application/wearable/fd230app/nativeui/weather/src/GetWeatherDataErrorPresenter.cpp [deleted file]
code/sdk/application/wearable/fd230app/nativeui/weather/src/GetWeatherDataErrorView.cpp
code/sdk/application/wearable/fd230app/nativeui/weather/src/MainWeatherPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/weather/src/MainWeatherView.cpp
code/sdk/application/wearable/fd230app/nativeui/weather/src/WeatherModel.cpp
code/sdk/application/wearable/fd230app/nativeui/weather/src/WeatherReportView.cpp
code/sdk/application/wearable/fd230app/nativeui/weather/src/WeatherView.cpp
code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp
code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp
code/sdk/application/wearable/service/msg_center/src/notify/pairing_notification.cpp

index 92cdfff..32c0283 100644 (file)
@@ -330,7 +330,6 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/weather/src/WeatherReportView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/weather/src/FutureWeatherPresenter.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/weather/src/FutureWeatherView.cpp
-    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/weather/src/GetWeatherDataErrorPresenter.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/weather/src/GetWeatherDataErrorView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/weather/src/WeatherControlView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/weather/src/WeatherView.cpp
index f3c6a7b..7632b31 100644 (file)
@@ -44,7 +44,6 @@ typedef enum : uint16_t
     VIEW_SHUTDOWN_OR_REBOOT,      // 关机或重启界面
     VIEW_WEATHER,                 // 天气
     VIEW_FUTURE_WEATHER,          // 未来天气
-    VIEW_GET_WEATHER_DATA_ERROR,  // 获取天气数据失败
     VIEW_SYSTEM,                  // 系统
     VIEW_SOUND_VIBRATION,         // 声音与震动
     VIEW_SYSTEM_VOLUME,           // 系统音量
index 9570721..9571dc7 100644 (file)
@@ -41,7 +41,6 @@ namespace OHOS
         /* -------------------------------------------------------------------------- */
         void InitWeatherSlice(void);
         void InitFutureWeatherSlice(void);
-        void InitGetWeatherDataErrorSlice(void);
         void InitSystemSlice(void);
         void InitSoundAndVibrationSlice(void);
         void InitSystemVolumeSlice(void);
index 00b2310..658e9cc 100644 (file)
@@ -70,8 +70,6 @@
 #include "weather/include/MainWeatherView.h"
 #include "weather/include/FutureWeatherPresenter.h"
 #include "weather/include/FutureWeatherView.h"
-#include "weather/include/GetWeatherDataErrorPresenter.h"
-#include "weather/include/GetWeatherDataErrorView.h"
 
 #include "system/include/SystemPresenter.h"
 #include "system/include/SystemView.h"
@@ -266,7 +264,6 @@ namespace OHOS
         {VIEW_SHUTDOWN_OR_REBOOT, &NativeLauncher::InitRebootSlice},
         {VIEW_WEATHER, &NativeLauncher::InitWeatherSlice},                            // 天气
         {VIEW_FUTURE_WEATHER, &NativeLauncher::InitFutureWeatherSlice},               // 未来天气
-        {VIEW_GET_WEATHER_DATA_ERROR, &NativeLauncher::InitGetWeatherDataErrorSlice}, // 获取天气数据失败
         {VIEW_SYSTEM, &NativeLauncher::InitSystemSlice},                              // 系统实例化地址
         {VIEW_SOUND_VIBRATION, &NativeLauncher::InitSoundAndVibrationSlice},          // 声音与震动实例化地址
         {VIEW_SYSTEM_VOLUME, &NativeLauncher::InitSystemVolumeSlice},                 // 系统音量
@@ -684,16 +681,7 @@ namespace OHOS
         NativeAbility::GetInstance().AddSliceProxy(VIEW_FUTURE_WEATHER, futureweather);
     }
 
-    void NativeLauncher::InitGetWeatherDataErrorSlice(void)
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitGetWeatherDataErrorSlice");
-        SliceProxy *getweatherdataerror = new AbilitySliceProxy<GetWeatherDataErrorView, GetWeatherDataErrorPresenter>;
-        if (getweatherdataerror == nullptr)
-        {
-            return;
-        }
-        NativeAbility::GetInstance().AddSliceProxy(VIEW_GET_WEATHER_DATA_ERROR, getweatherdataerror);
-    }
+    
 
     void NativeLauncher::InitSystemSlice(void) // 系统
     {
diff --git a/code/sdk/application/wearable/fd230app/nativeui/weather/include/GetWeatherDataErrorPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/weather/include/GetWeatherDataErrorPresenter.h
deleted file mode 100644 (file)
index 2bda7b5..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-#ifndef Get_WEATHER_DATA_ERROR_PRESENTER_H\r
-#define Get_WEATHER_DATA_ERROR_PRESENTER_H\r
-\r
-#include "Presenter.h"\r
-#include "GetWeatherDataErrorView.h"\r
-\r
-namespace OHOS\r
-{\r
-    class GetWeatherDataErrorView;\r
-\r
-    class GetWeatherDataErrorPresenter : public Presenter<GetWeatherDataErrorView>,\r
-                                         public UIView::OnClickListener,\r
-                                         public UIView::OnDragListener\r
-    {\r
-    public:\r
-        GetWeatherDataErrorPresenter();\r
-        virtual ~GetWeatherDataErrorPresenter();\r
-\r
-        void OnStart() override;\r
-        void OnPause() override;\r
-        void OnResume() override;\r
-        void OnStop() override;\r
-\r
-        static GetWeatherDataErrorPresenter *GetInstance();\r
-\r
-    private:\r
-        // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;\r
-        bool OnClick(UIView &view, const ClickEvent &event) override;\r
-        bool OnDrag(UIView &view, const DragEvent &event) override;\r
-    };\r
-} // namespace OHOS\r
-\r
-#endif // GetWeatherDataError_PRESENTER_H
\ No newline at end of file
index ccc9ac9..a45a17a 100644 (file)
@@ -1,41 +1,38 @@
+/*\r
+ * @Author: luozheng 1732036298@qq.com\r
+ * @Date: 2024-03-30 09:14:38\r
+ * @LastEditors: luozheng 1732036298@qq.com\r
+ * @LastEditTime: 2024-04-12 16:22:24\r
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/include/GetWeatherDataErrorView.h\r
+ */\r
 #ifndef Get_WEATHER_DATA_ERROR_VIEW_H\r
 #define Get_WEATHER_DATA_ERROR_VIEW_H\r
 \r
 #include "BaseView.h"\r
 #include "View.h"\r
-#include "components/ui_view_group.h"\r
 #include "components/ui_scroll_view.h"\r
 #include "components/ui_label.h"\r
 #include "components/ui_label_ext.h"\r
 #include "components/ui_image_view.h"\r
 namespace OHOS\r
 {\r
-    class GetWeatherDataErrorPresenter;\r
-    class GetWeatherDataErrorView : public View<GetWeatherDataErrorPresenter>\r
+\r
+    static constexpr const char *GETWEATHERDATAERRORVIEW = "GetWeatherDataErrorView";\r
+    class GetWeatherDataErrorView\r
     {\r
 \r
     public:\r
         GetWeatherDataErrorView();\r
         virtual ~GetWeatherDataErrorView();\r
         static GetWeatherDataErrorView *GetInstance(void);\r
-\r
-        void OnStart() override;\r
-        void OnSetUpView() override;\r
-        void OnTearDownView() override;\r
-        void OnStop() override;\r
+        UIScrollView *GetWeatherDataErrorViewInit(void);\r
 \r
     private:\r
-        void InitView(void);\r
-        void DeInitView(void);\r
-        void PreLoad(void);\r
+        void ClearAll();\r
 \r
-    private:\r
-        UIView::OnDragListener *draglistener{nullptr};\r
-        UIViewGroup *container_ = nullptr;\r
-        UIScrollView *scrollView1_ = nullptr;\r
-        UILabel *label1_ = nullptr;\r
-        UIImageView *image1_ = nullptr;\r
-        bool viewInitStatus{false};\r
+        UIScrollView *scrollView = nullptr;\r
+        UILabel *label = nullptr;\r
+        UIImageView *image = nullptr;\r
     };\r
-} // namespace OHOS\r
-#endif // GetWeatherDataError_PRESENTER_H
\ No newline at end of file
+} \r
+#endif
\ No newline at end of file
index 5fab389..ecff301 100644 (file)
@@ -1,3 +1,10 @@
+/*\r
+ * @Author: luozheng 1732036298@qq.com\r
+ * @Date: 2024-01-29 15:37:44\r
+ * @LastEditors: luozheng 1732036298@qq.com\r
+ * @LastEditTime: 2024-04-12 19:45:12\r
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/include/MainWeatherView.h\r
+ */\r
 #ifndef MAIN_WEATHER_VIEW_H\r
 #define MAIN_WEATHER_VIEW_H\r
 \r
@@ -7,6 +14,7 @@
 \r
 #include "weather/include/WeatherView.h"\r
 #include "weather/include/WeatherReportView.h"\r
+#include "weather/include/GetWeatherDataErrorView.h"\r
 namespace OHOS\r
 {\r
     typedef enum\r
@@ -40,7 +48,7 @@ namespace OHOS
     private:\r
         WeatherView *weatherView{nullptr};\r
         WeatherReportView *weatherReportView{nullptr};\r
-\r
+        GetWeatherDataErrorView *g_GetWeatherDataErrorView{nullptr};\r
     private:\r
         int16_t maxPage = MAX_WEATHERVIEW;\r
         UISwipeView *weatherSwipeViewList{nullptr}; // 天气滑动视图列表\r
index 2ed8526..dcecff4 100644 (file)
@@ -2,71 +2,92 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-04-08 18:40:20
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-04-11 15:51:19
+ * @LastEditTime: 2024-04-12 18:57:44
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/include/WeatherModel.h
  */
 #ifndef WEATHER_MODEL_H
 #define WEATHER_MODEL_H
 
 #include "wearable_log.h"
-#if __cplusplus
-extern "C"
+#include "iostream"
+namespace OHOS
 {
+#if __cplusplus
+    extern "C"
+    {
 #endif /* __cplusplus */
 #include "string.h"
 
-    static int WEATHER_DATA_VALID = 0; //天气数据是否有效
-    /*天气数据*/
-    struct Weather_data
-    {
-        int humidity;       // 湿度
-        char windScale[16]; // 风速
-        char textNight[16]; // 夜间天气文本
-        int uvIndex;        // 紫外线指数
-        int temp;           // 温度
-        int iconNight;      // 夜间天气图标 
-    };
-    //"address": { "lat" : 225737664, "atm" : "1010", "city" : "深圳", "subLocality" : "宝安", "lon" : 1138535138 }
-    /*天气数据的地址信息*/
-    struct Weather_data_address
-    {
-        int lat;              // 纬度
-        char atm[16];         // 大气压
-        char city[32];        // 城市
-        char subLocality[32]; // 子地区
-        int lon;              // 经纬度
-    };
+        static uint8_t WEATHER_DATA_VALID = 0; // 天气数据是否有效
+        /*天气数据*/
+        struct Weather_data
+        {
+            int humidity;       // 湿度
+            char windScale[16]; // 风速
+            char textNight[16]; // 夜间天气文本
+            int uvIndex;        // 紫外线指数
+            int temp;           // 温度
+            int iconNight;      // 夜间天气图标
+        };
+        //"address": { "lat" : 225737664, "atm" : "1010", "city" : "深圳", "subLocality" : "宝安", "lon" : 1138535138 }
+        /*天气数据的地址信息*/
+        struct Weather_data_address
+        {
+            int lat;              // 纬度
+            char atm[16];         // 大气压
+            char city[32];        // 城市
+            char subLocality[32]; // 子地区
+            int lon;              // 经纬度
+        };
 
-    //{"tempMin":22,"iconDay":6,"fxDate":1712505600,"textDay":"阵雨","tempMax":29},
-    /*一天内天气数据*/
-    struct ONE_DAY_DATA
-    {
-        int tempMin;      // 最低温度
-        int iconDay;      // 白天天气图标
-        int fxDate;       // 日期
-        char textDay[16]; // 白天天气文本
-        int tempMax;      // 最高温度
-    };
-
-    extern Weather_data Weather_data_t_now;
-    extern Weather_data_address Weather_data_t_address;
-    extern ONE_DAY_DATA Weather_data_seven_data[];
+        //{"tempMin":22,"iconDay":6,"fxDate":1712505600,"textDay":"阵雨","tempMax":29},
+        /*一天内天气数据*/
+        struct ONE_DAY_DATA
+        {
+            int tempMin;      // 最低温度
+            int iconDay;      // 白天天气图标
+            int fxDate;       // 日期
+            char textDay[16]; // 白天天气文本
+            int tempMax;      // 最高温度
+        };
 
-    void UI_set_weather_now_data(int humidity, char *windScale, char *textNight, int uvIndex, int temp, int iconNight);
+        void UI_set_weather_now_data(int humidity, char *windScale, char *textNight, int uvIndex, int temp, int iconNight);
 
-    void UI_set_weather_address_data(int lat, char *atm, char *city, char *subLocality, int lon);
+        void UI_set_weather_address_data(int lat, char *atm, char *city, char *subLocality, int lon);
 
-    void UI_set_weather_seven_day_data(struct ONE_DAY_DATA *t);
+        void UI_set_weather_seven_day_data(struct ONE_DAY_DATA *t);
 #if __cplusplus
-}
+    }
 #endif /* __cplusplus */
-namespace OHOS
-{
+
+    static constexpr const char *WeatherBackground = "WEATHER_BACKGROUND.bin"; // 天气背景
+    static constexpr const char *weather130x130[] =
+        {
+            "/user/res/weather/weather130x130/WEATHER_CLEAR-CLOUDY.bin",
+            "/user/res/weather/weather130x130/WEATHER_CLEAR-SUNNY.bin", //晴
+            "/user/res/weather/weather130x130/WEATHER_DUSTSTORM.bin",
+            "/user/res/weather/weather130x130/WEATHER_FOGGY.bin",
+            "/user/res/weather/weather130x130/WEATHER_HAZE.bin",
+            "/user/res/weather/weather130x130/WEATHER_OVERCAST.bin",
+            "/user/res/weather/weather130x130/WEATHER_RAIN.bin",
+            "/user/res/weather/weather130x130/WEATHER_SNOW.bin",
+            "/user/res/weather/weather130x130/WEATHER_SUNNY.bin",
+            "/user/res/weather/weather130x130/WEATHER_SUNNY-CLOUNDY.bin",
+            "/user/res/weather/weather130x130/WEATHER_THUNDERSHOWER.bin",
+            "/user/res/weather/weather130x130/WEATHER_UNKNOWN.bin",
+    };
+    /* -------------------------------------------------------------------------- */
     class WeatherModel
     {
     public:
         static WeatherModel &GetInstance(void);
 
+        std::string GetWeatherImage();
+        std::string GetWeatherTemperature();
+        std::string GetWeatherDescription();
+        std::string GetWeatherArea();
+        std::string GetWeatherMaxAndMinTemperature();
+
     private:
         WeatherModel();
         WeatherModel(const WeatherModel &) = delete;
index 07ef3b5..a06a92a 100644 (file)
@@ -1,3 +1,10 @@
+/*\r
+ * @Author: luozheng 1732036298@qq.com\r
+ * @Date: 2024-03-30 09:14:38\r
+ * @LastEditors: luozheng 1732036298@qq.com\r
+ * @LastEditTime: 2024-04-12 16:41:27\r
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/include/WeatherReportView.h\r
+ */\r
 #ifndef WEATHER_REPORT_VIEW_H\r
 #define WEATHER_REPORT_VIEW_H\r
 \r
@@ -7,7 +14,7 @@
 #include "components/ui_view_group.h"\r
 #include "components/ui_scroll_view.h"\r
 #include "components/ui_label_ext.h"\r
-#include"language/font/ui_resource_string.h"\r
+#include "language/font/ui_resource_string.h"\r
 #include "components/ui_image_animator.h"\r
 #include "config/include/ConfigModel.h"\r
 namespace OHOS\r
@@ -39,6 +46,8 @@ namespace OHOS
         }\r
 \r
     private:\r
+        const char **CreateImagePathsArray(const char *basePath, const char *fileExtension, int numImages);\r
+        void FreeImagePathsArray(const char **imagePaths, const int numImages);\r
         UILabelExt *SetUpLabel(LabelConfig &labelconfig); // 设置标签\r
         bool WeatherReportViewLabelInit(void);\r
         bool WeatherReportViewImageAnimatorViewInit(void);\r
@@ -52,10 +61,7 @@ namespace OHOS
         UIImageAnimatorView *UVImageAnimatorView{nullptr};        // 紫外线动画\r
         UIImageAnimatorView *WindSpeedImageAnimatorView{nullptr}; // 风速动画\r
         UIImageAnimatorView *HumidityImageAnimatorView{nullptr};  // 湿度动画\r
-        ImageAnimator *p_ImageAnimator{nullptr};\r
-        ImageAnimatorInfo *UVimageAnimatorInfo{nullptr};\r
-        ImageAnimatorInfo *WindSpeedimageAnimatorInfo{nullptr};\r
-        ImageAnimatorInfo *HumidityimageAnimatorInfo{nullptr};\r
+        \r
         const char **UVPathsArray{nullptr};\r
         const char **WindSpeedPathsArray{nullptr};\r
         const char **HumidityPathsArray{nullptr};\r
index 6f6931c..331cbcf 100644 (file)
@@ -1,3 +1,10 @@
+/*
+ * @Author: luozheng 1732036298@qq.com
+ * @Date: 2024-03-30 09:14:38
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-04-12 15:06:35
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/include/WeatherView.h
+ */
 #ifndef WEATHER_VIEW_H
 #define WEATHER_VIEW_H
 
 #include "wearable_log.h"
 #include "AppGroupView.h"
 #include <iostream>
-#include "config/include/ConfigModel.h"
-
-namespace OHOS
-{
-    static constexpr char *WeatherBackground = "WEATHER_BACKGROUND.bin"; // 天气背景
-    static constexpr const char *weather130x130[] =
-        {
-            "/user/res/weather/weather130x130/WEATHER_CLEAR-CLOUDY.bin",
-            "/user/res/weather/weather130x130/WEATHER_CLEAR-SUNNY.bin",
-            "/user/res/weather/weather130x130/WEATHER_DUSTSTORM.bin",
-            "/user/res/weather/weather130x130/WEATHER_FOGGY.bin",
-            "/user/res/weather/weather130x130/WEATHER_HAZE.bin",
-            "/user/res/weather/weather130x130/WEATHER_OVERCAST.bin",
-            "/user/res/weather/weather130x130/WEATHER_RAIN.bin",
-            "/user/res/weather/weather130x130/WEATHER_SNOW.bin",
-            "/user/res/weather/weather130x130/WEATHER_SUNNY.bin",
-            "/user/res/weather/weather130x130/WEATHER_SUNNY-CLOUNDY.bin",
-            "/user/res/weather/weather130x130/WEATHER_THUNDERSHOWER.bin",
-            "/user/res/weather/weather130x130/WEATHER_UNKNOWN.bin"};
-}
 
 namespace OHOS
 {
@@ -53,13 +40,9 @@ namespace OHOS
         UILabelExt *InitLabelExt(int x, int y, int w, int h, const char *text, int textfont, int lineheight);
 
     private:
-        std::string GetTime();
-        std::string GetWeatherImage();
-        std::string GetWeatherTemperature();
-        std::string GetWeatherDescription();
-        std::string GetWeatherArea();
-        std::string GetWeatherMaxAndMinTemperature();
-
+        const char **CreateImagePathsArray(const char *basePath, const char *fileExtension, int numImages);
+        void FreeImagePathsArray(const char **imagePaths, const int numImages);
+        void DumpWeatherInfo();
         std::string WeatherImag;          // 天气图片
         std::string Temperature;          // 温度
         std::string WeatherDescription;   // 天气描述
@@ -73,8 +56,6 @@ namespace OHOS
         UILabelExt *showWeatherAreaLabel{nullptr};          // 显示天气地区
         UILabelExt *showMaxandMinTemperatureLabel{nullptr}; // 显示最高与最低气温
         UIImageAnimatorView *PullUpAnimatorView{nullptr};   // 上拉动画
-        ImageAnimator *p_ImageAnimator{nullptr};
-        ImageAnimatorInfo *PullUpimageAnimatorInfo{nullptr};
         const char **PullUpPathsArray{nullptr};
         bool viewInitStatus{false};
     };
diff --git a/code/sdk/application/wearable/fd230app/nativeui/weather/src/GetWeatherDataErrorPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/weather/src/GetWeatherDataErrorPresenter.cpp
deleted file mode 100644 (file)
index 4169b7b..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-#include "AppViewIDs.h"\r
-#include "components/ui_label_ext.h"\r
-#include"language/font/ui_resource_string.h"\r
-#include "NativeAbility.h"\r
-#include "weather/include/GetWeatherDataErrorPresenter.h"\r
-\r
-namespace OHOS\r
-{\r
-\r
-    // 当前Presenter属性实例化的内存指针\r
-    static GetWeatherDataErrorPresenter *g_pGetWeatherDataErrorPresenter = nullptr;\r
-\r
-    GetWeatherDataErrorPresenter::GetWeatherDataErrorPresenter()\r
-    {\r
-\r
-        g_pGetWeatherDataErrorPresenter = this;\r
-    }\r
-\r
-    GetWeatherDataErrorPresenter::~GetWeatherDataErrorPresenter()\r
-    {\r
-\r
-        g_pGetWeatherDataErrorPresenter = nullptr;\r
-    }\r
-\r
-    GetWeatherDataErrorPresenter *GetWeatherDataErrorPresenter::GetInstance()\r
-    {\r
-\r
-        return g_pGetWeatherDataErrorPresenter;\r
-    }\r
-\r
-    void GetWeatherDataErrorPresenter::OnStart()\r
-    {\r
-\r
-        Presenter<GetWeatherDataErrorView>::OnStart();\r
-    }\r
-\r
-    void GetWeatherDataErrorPresenter::OnPause(void)\r
-    {\r
-\r
-        Presenter<GetWeatherDataErrorView>::OnPause();\r
-    }\r
-\r
-    void GetWeatherDataErrorPresenter::OnResume(void)\r
-    {\r
-\r
-        Presenter<GetWeatherDataErrorView>::OnResume();\r
-    }\r
-\r
-    void GetWeatherDataErrorPresenter::OnStop(void)\r
-    {\r
-\r
-        Presenter<GetWeatherDataErrorView>::OnStop();\r
-    }\r
-\r
-    bool GetWeatherDataErrorPresenter::OnDrag(UIView &view, const DragEvent &event)\r
-    {\r
-\r
-        if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT &&\r
-            (event.GetDeltaX() > 20) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY()))))\r
-        {\r
-            NativeAbility::GetInstance().ChangeSlice(VIEW_WEATHER);\r
-        }\r
-        return true;\r
-    }\r
-\r
-    bool GetWeatherDataErrorPresenter::OnClick(UIView &view, const ClickEvent &event)\r
-    {\r
-\r
-        // 根据控件id查找是哪个控件触发了点击回调\r
-        // if (strcmp(view.GetViewId(), 控件ID) == 0)\r
-        return true;\r
-    }\r
-}
\ No newline at end of file
index 55a43f6..c71b913 100644 (file)
@@ -1,6 +1,13 @@
+/*\r
+ * @Author: luozheng 1732036298@qq.com\r
+ * @Date: 2024-01-29 15:37:44\r
+ * @LastEditors: luozheng 1732036298@qq.com\r
+ * @LastEditTime: 2024-04-12 20:00:56\r
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/src/GetWeatherDataErrorView.cpp\r
+ */\r
 #include "weather/include/GetWeatherDataErrorView.h"\r
-#include "weather/include/GetWeatherDataErrorPresenter.h"\r
-#include "UiConfig.h"\r
+#include "wearable_log.h"\r
+#include "weather/include/MainWeatherPresenter.h"\r
 \r
 /* 天气获取数据失败后会调用该视图*/\r
 namespace OHOS\r
@@ -10,153 +17,94 @@ namespace OHOS
 \r
     GetWeatherDataErrorView::GetWeatherDataErrorView()\r
     {\r
-\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetWeatherDataErrorView::GetWeatherDataErrorView");\r
         g_pGetWeatherDataErrorView = this;\r
     }\r
 \r
     GetWeatherDataErrorView::~GetWeatherDataErrorView()\r
     {\r
-        if (viewInitStatus == true)\r
-        {\r
-            DeInitView();\r
-        }\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetWeatherDataErrorView::~GetWeatherDataErrorView");\r
+        ClearAll();\r
         g_pGetWeatherDataErrorView = nullptr;\r
     }\r
 \r
     GetWeatherDataErrorView *GetWeatherDataErrorView::GetInstance()\r
     {\r
-\r
         return g_pGetWeatherDataErrorView;\r
     }\r
 \r
-    void GetWeatherDataErrorView::InitView()\r
+    UIScrollView *GetWeatherDataErrorView::GetWeatherDataErrorViewInit()\r
     {\r
-        // Add ScrollView to App\r
-        if (scrollView1_ == nullptr)\r
-        {\r
-            scrollView1_ = new UIScrollView();\r
-        }\r
-        scrollView1_->SetPosition(0, 0);\r
-        scrollView1_->Resize(466, 466);\r
-        scrollView1_->SetViewId("scrollView1");\r
-        scrollView1_->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
-        container_->Add(scrollView1_);\r
-        scrollView1_->SetVisible(true);\r
-\r
-        // Add Label to App\r
-        if (label1_ == nullptr)\r
+        if (scrollView == nullptr)\r
         {\r
-            label1_ = new UILabel();\r
+            scrollView = new UIScrollView();\r
+            if (scrollView == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "scrollView is new fail!!");\r
+                return nullptr;\r
+            }\r
+            scrollView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
+            scrollView->SetViewId(GETWEATHERDATAERRORVIEW);\r
+            scrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+            UIView::OnDragListener *listener = static_cast<UIView::OnDragListener *>(MainWeatherPresenter::GetInstance());\r
+            if (listener == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "listener is  nullptr!!");\r
+                return nullptr;\r
+            }\r
+            scrollView->SetOnDragListener(listener);\r
+            /* -------------------------------------------------------------------------- */\r
+            image = new UIImageView();\r
+            if (image == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "image is new fail!!");\r
+                return nullptr;\r
+            }\r
+            image->SetPosition(168, 127, 130, 130);\r
+            const char * ImgSr = "/user/res/weather/weather130x130/WEATHER_UNKNOWN.bin"; //天气数据获取失败\r
+            image->SetSrc(ImgSr);\r
+            scrollView->Add(image);\r
+            /* -------------------------------------------------------------------------- */\r
+            label = new UILabel();\r
+            if (label == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "label is new fail!!");\r
+                return nullptr;\r
+            }\r
+            label->SetPosition(33, 268, 400, 70);\r
+            label->SetStyle(STYLE_TEXT_FONT, 26);\r
+            label->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+            label->SetText("未获取到天气信息\n请前往APP更新");\r
+            label->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
+            label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+            label->SetRollSpeed(40);\r
+            label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 26);\r
+            scrollView->Add(label);\r
         }\r
-        label1_->SetPosition(113, 268);\r
-        label1_->Resize(240, 70);\r
-        label1_->SetViewId("label1");\r
-        label1_->SetStyle(STYLE_TEXT_FONT, 30);\r
-        label1_->SetStyle(STYLE_LINE_HEIGHT, 35);\r
-\r
-        // Set additional property\r
-        label1_->SetText("未获取到天气信息\n请前往APP更新");\r
-        label1_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
-        label1_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
-        label1_->SetRollSpeed(0);\r
-        label1_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
-\r
-        // Add to scrollView1\r
-        scrollView1_->Add(label1_);\r
-        label1_->SetVisible(true);\r
-\r
-        // Add ImageView to App\r
-        if (image1_ == nullptr)\r
-        {\r
-            image1_ = new UIImageView();\r
-        }\r
-        image1_->SetPosition(168, 127);\r
-        image1_->Resize(130, 130);\r
-        image1_->SetViewId("image1");\r
-        image1_->SetSrc("/user/res/weather/WEATHER_UNKNOWN.bin");\r
-\r
-        // Add to scrollView1\r
-        scrollView1_->Add(image1_);\r
-        image1_->SetVisible(true);\r
+        return scrollView;\r
     }\r
 \r
-    void GetWeatherDataErrorView::DeInitView()\r
-    {\r
-        container_->RemoveAll();\r
-        scrollView1_->RemoveAll();\r
-        if (label1_ != nullptr)\r
-        {\r
-            delete label1_;\r
-            label1_ = nullptr;\r
-        }\r
-        if (image1_ != nullptr)\r
-        {\r
-            delete image1_;\r
-            image1_ = nullptr;\r
-        }\r
-        if (scrollView1_ != nullptr)\r
-        {\r
-            delete scrollView1_;\r
-            scrollView1_ = nullptr;\r
-        }\r
-        if (container_ != nullptr)\r
-        {\r
-            delete container_;\r
-            container_ = nullptr;\r
-        }\r
-    }\r
-    \r
-    void GetWeatherDataErrorView::PreLoad(void)\r
+    void GetWeatherDataErrorView::ClearAll()\r
     {\r
-        if (!viewInitStatus)\r
+        scrollView->RemoveAll();\r
+\r
+        if (label != nullptr)\r
         {\r
-            InitView();\r
-            viewInitStatus = true;\r
+            delete label;\r
+            label = nullptr;\r
         }\r
-    }\r
-    void GetWeatherDataErrorView::OnStart()\r
-    {\r
-        container_ = new UIViewGroup();\r
-        if (container_ == nullptr)\r
+\r
+        if (image != nullptr)\r
         {\r
-            return;\r
+            delete image;\r
+            image = nullptr;\r
         }\r
-        // container_容器属性 扩展\r
-        container_->SetPosition(0, 0);\r
-        container_->SetWidth(Screen::GetInstance().GetWidth());\r
-        container_->SetHeight(Screen::GetInstance().GetHeight());\r
 \r
-        draglistener = static_cast<UIView::OnDragListener *>(GetWeatherDataErrorPresenter::GetInstance());\r
-        if (draglistener == nullptr)\r
+        if (scrollView != nullptr)\r
         {\r
-            return;\r
+            delete scrollView;\r
+            scrollView = nullptr;\r
         }\r
-        container_->SetOnDragListener(draglistener);\r
-        container_->SetTouchable(true);\r
-        container_->SetDraggable(true);\r
-        PreLoad();\r
-        RootView::GetInstance()->Add(container_);\r
     }\r
 \r
-    void GetWeatherDataErrorView::OnSetUpView()\r
-    {\r
-\r
-        View<GetWeatherDataErrorPresenter>::OnSetUpView();\r
-        Draw();\r
-    }\r
-\r
-    void GetWeatherDataErrorView::OnTearDownView()\r
-    {\r
-\r
-        View<GetWeatherDataErrorPresenter>::OnTearDownView();\r
-        return;\r
-    }\r
-\r
-    void GetWeatherDataErrorView::OnStop()\r
-    {\r
-\r
-        View<GetWeatherDataErrorPresenter>::OnStop();\r
-        RootView::GetInstance()->RemoveAll();\r
-        return;\r
-    }\r
 }
\ No newline at end of file
index 69311be..177ba48 100644 (file)
@@ -65,13 +65,16 @@ namespace OHOS
 \r
     bool MainWeatherPresenter::OnDragEnd(UIView &view, const DragEvent &event)\r
     {\r
-        UNUSED(view);\r
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " MainWeatherPresenter::OnDragEnd");\r
         if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)\r
         {\r
             NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
             return true;\r
         }\r
+        if(strcmp(view.GetViewId(),GETWEATHERDATAERRORVIEW) == 0)\r
+        {\r
+            NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
+        }\r
         return true;\r
     }\r
 \r
index 8bb0759..428ec38 100644 (file)
@@ -1,5 +1,6 @@
 #include "weather/include/MainWeatherView.h"\r
 #include "weather/include/MainWeatherPresenter.h"\r
+#include "weather/include/WeatherModel.h"\r
 namespace OHOS\r
 {\r
     static MainWeatherView *g_pMainWeatherView{nullptr};\r
@@ -23,20 +24,29 @@ namespace OHOS
 \r
     void MainWeatherView::ClearAll(void)\r
     {\r
-        for (int32_t i = 0; i < maxPage; i++)\r
+        if (weatherSwipeViewList != nullptr)\r
         {\r
-            recordCard[i] = nullptr;\r
-        }\r
-        weatherSwipeViewList->RemoveAll();\r
+            for (int32_t i = 0; i < maxPage; i++)\r
+            {\r
+                recordCard[i] = nullptr;\r
+            }\r
+            weatherSwipeViewList->RemoveAll();\r
 \r
-        delete weatherView;\r
-        weatherView = nullptr;\r
+            delete weatherView;\r
+            weatherView = nullptr;\r
 \r
-        delete weatherReportView;\r
-        weatherReportView = nullptr;\r
+            delete weatherReportView;\r
+            weatherReportView = nullptr;\r
 \r
-        delete weatherSwipeViewList;\r
-        weatherSwipeViewList = nullptr;\r
+            delete weatherSwipeViewList;\r
+            weatherSwipeViewList = nullptr;\r
+        }\r
+        \r
+        if (g_GetWeatherDataErrorView != nullptr)\r
+        {\r
+            delete g_GetWeatherDataErrorView;\r
+            g_GetWeatherDataErrorView = nullptr;\r
+        }\r
     }\r
 \r
     /*\r
@@ -69,42 +79,57 @@ namespace OHOS
             recordCard[i]->InitView(this);\r
             weatherSwipeViewList->Add(recordCard[i]);\r
         }\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainWeatherView InitPage over!!");\r
-        return weatherSwipeViewList;\r
-    }\r
-\r
-    void MainWeatherView::OnStart()\r
-    {\r
-        View<MainWeatherPresenter>::OnStart();\r
-        MainWeatherViewInit();\r
-\r
+        /* -------------------------------------------------------------------------- */\r
         if (weatherSwipeViewList != nullptr)\r
         {\r
             UIView::OnClickListener *weatherOnClickListener = (UIView::OnClickListener *)OHOS::MainWeatherPresenter::GetInstance();\r
             if (weatherOnClickListener == nullptr)\r
             {\r
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "weatherOnClickListener new fail");\r
-                return;\r
+                return nullptr;\r
             }\r
 \r
             UIView::OnDragListener *weatherOnDragListener = (UIView::OnDragListener *)OHOS::MainWeatherPresenter::GetInstance();\r
             if (weatherOnDragListener == nullptr)\r
             {\r
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "weatherOnDragListener new fail");\r
-                return;\r
+                return nullptr;\r
             }\r
 \r
             UISwipeView::OnSwipeListener *weatherOnSwipeListener = (UISwipeView::OnSwipeListener *)OHOS::MainWeatherPresenter::GetInstance();\r
             if (weatherOnSwipeListener == nullptr)\r
             {\r
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "weatherOnSwipeListener new fail");\r
-                return;\r
+                return nullptr;\r
             }\r
 \r
             weatherSwipeViewList->SetOnClickListener(weatherOnClickListener);\r
             weatherSwipeViewList->SetOnDragListener(weatherOnDragListener);\r
             weatherSwipeViewList->SetOnSwipeListener(weatherOnSwipeListener);\r
         }\r
+        /* -------------------------------------------------------------------------- */\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainWeatherView InitPage over!!");\r
+        return weatherSwipeViewList;\r
+    }\r
+\r
+    void MainWeatherView::OnStart()\r
+    {\r
+        View<MainWeatherPresenter>::OnStart();\r
+        if (WEATHER_DATA_VALID)\r
+        {\r
+            MainWeatherViewInit();\r
+            RootView::GetInstance()->Add(weatherSwipeViewList);\r
+        }\r
+        else\r
+        {\r
+            g_GetWeatherDataErrorView = new GetWeatherDataErrorView();\r
+            if (g_GetWeatherDataErrorView == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "g_GetWeatherDataErrorView new fail!!");\r
+                return;\r
+            }\r
+            RootView::GetInstance()->Add(g_GetWeatherDataErrorView->GetWeatherDataErrorViewInit());\r
+        }\r
         RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::MainWeatherPresenter::GetInstance();\r
         RootView::GetInstance()->SetOnKeyActListener(keyactListener);\r
     }\r
@@ -112,7 +137,7 @@ namespace OHOS
     void MainWeatherView::OnSetUpView()\r
     {\r
         View<MainWeatherPresenter>::OnSetUpView();\r
-        RootView::GetInstance()->Add(weatherSwipeViewList);\r
+\r
         Draw();\r
     }\r
 \r
index f403974..035e28e 100644 (file)
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-04-08 18:40:09
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-04-11 15:51:28
+ * @LastEditTime: 2024-04-12 16:34:46
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/src/WeatherModel.cpp
  */
 #include "weather/include/WeatherModel.h"
 
-#if __cplusplus
-extern "C"
+namespace OHOS
 {
-#endif /* __cplusplus */
-    Weather_data Weather_data_t_now;
-    Weather_data_address Weather_data_t_address;
-    ONE_DAY_DATA Weather_data_seven_data[7];
-
-    /*
-     * @brief 设置当前天气数据
-     * @param {int} humidity 湿度
-     * @param {char} *windScale 风力
-     * @param {char} *textNight 夜间天气文本
-     * @param {int} uvIndex 紫外线指数
-     * @param {int} temp 温度
-     * @param {int} iconNight 夜间天气图标
-     */
-    void UI_set_weather_now_data(int humidity, char *windScale, char *textNight, int uvIndex, int temp, int iconNight)
+#if __cplusplus
+    extern "C"
     {
-        Weather_data_t_now.humidity = humidity;
-        memset((void *)Weather_data_t_now.windScale, 0, 16);
-        strcpy(Weather_data_t_now.windScale, windScale);
-        memset((void *)Weather_data_t_now.textNight, 0, 16);
-        strcpy(Weather_data_t_now.textNight, textNight);
-        Weather_data_t_now.uvIndex = uvIndex;
-        Weather_data_t_now.temp = temp;
-        Weather_data_t_now.iconNight = iconNight;
+#endif /* __cplusplus */
+        static Weather_data Weather_data_t_now;
+        static Weather_data_address Weather_data_t_address;
+        static ONE_DAY_DATA Weather_data_seven_data[7];
 
-        WEATHER_DATA_VALID = 1;
-    }
+        /*
+         * @brief 设置当前天气数据
+         * @param {int} humidity 湿度
+         * @param {char} *windScale 风力
+         * @param {char} *textNight 夜间天气文本
+         * @param {int} uvIndex 紫外线指数
+         * @param {int} temp 温度
+         * @param {int} iconNight 夜间天气图标
+         */
+        void UI_set_weather_now_data(int humidity, char *windScale, char *textNight, int uvIndex, int temp, int iconNight)
+        {
+            Weather_data_t_now.humidity = humidity;
+            memset((void *)Weather_data_t_now.windScale, 0, 16);
+            strcpy(Weather_data_t_now.windScale, windScale);
+            memset((void *)Weather_data_t_now.textNight, 0, 16);
+            strcpy(Weather_data_t_now.textNight, textNight);
+            Weather_data_t_now.uvIndex = uvIndex;
+            Weather_data_t_now.temp = temp;
+            Weather_data_t_now.iconNight = iconNight;
 
-    /*
-     * @brief 设置天气地址信息
-     * @param {int} lat 纬度
-     * @param {char} *atm 大气压
-     * @param {char} *city 城市
-     * @param {char} *subLocality 子地区
-     * @param {int} lon 经度
-     */
-    void UI_set_weather_address_data(int lat, char *atm, char *city, char *subLocality, int lon)
-    {
-        Weather_data_t_address.lat = lat;
-        Weather_data_t_address.lon = lon;
-        memset((void *)Weather_data_t_address.atm, 0, 16);
-        strcpy(Weather_data_t_address.atm, atm);
-        memset((void *)Weather_data_t_address.city, 0, 32);
-        strcpy(Weather_data_t_address.city, city);
-        memset((void *)Weather_data_t_address.subLocality, 0, 32);
-        strcpy(Weather_data_t_address.subLocality, subLocality);
+            WEATHER_DATA_VALID = 1;
+        }
 
-        WEATHER_DATA_VALID = 1;
-    }
+        /*
+         * @brief 设置天气地址信息
+         * @param {int} lat 纬度
+         * @param {char} *atm 大气压
+         * @param {char} *city 城市
+         * @param {char} *subLocality 子地区
+         * @param {int} lon 经度
+         */
+        void UI_set_weather_address_data(int lat, char *atm, char *city, char *subLocality, int lon)
+        {
+            Weather_data_t_address.lat = lat;
+            Weather_data_t_address.lon = lon;
+            memset((void *)Weather_data_t_address.atm, 0, 16);
+            strcpy(Weather_data_t_address.atm, atm);
+            memset((void *)Weather_data_t_address.city, 0, 32);
+            strcpy(Weather_data_t_address.city, city);
+            memset((void *)Weather_data_t_address.subLocality, 0, 32);
+            strcpy(Weather_data_t_address.subLocality, subLocality);
+        }
 
-    /*
-     * @brief 设置七天天气数据
-     */
-    void UI_set_weather_seven_day_data(struct ONE_DAY_DATA *t)
-    {
-        for (int i = 0; i < 7; i++)
+        /*
+         * @brief 设置七天天气数据
+         */
+        void UI_set_weather_seven_day_data(struct ONE_DAY_DATA *t)
         {
-            Weather_data_seven_data[i].fxDate = t[i].fxDate;
-            Weather_data_seven_data[i].iconDay = t[i].iconDay;
-            Weather_data_seven_data[i].tempMax = t[i].tempMax;
-            Weather_data_seven_data[i].tempMin = t[i].tempMin;
-            Weather_data_seven_data[i].fxDate = t[i].fxDate;
-            memset((void *)Weather_data_seven_data[i].textDay, 0, 16);
-            strcpy(Weather_data_seven_data[i].textDay, t[i].textDay);
+            for (int i = 0; i < 7; i++)
+            {
+                Weather_data_seven_data[i].fxDate = t[i].fxDate;
+                Weather_data_seven_data[i].iconDay = t[i].iconDay;
+                Weather_data_seven_data[i].tempMax = t[i].tempMax;
+                Weather_data_seven_data[i].tempMin = t[i].tempMin;
+                Weather_data_seven_data[i].fxDate = t[i].fxDate;
+                memset((void *)Weather_data_seven_data[i].textDay, 0, 16);
+                strcpy(Weather_data_seven_data[i].textDay, t[i].textDay);
+            }
         }
-        WEATHER_DATA_VALID = 1;
-    }
 
+        void jsonCheck_weather(uint8_t *buf);
 #if __cplusplus
-}
+    }
 #endif /* __cplusplus */
-namespace OHOS
-{
+
+    static constexpr const char json_data[] =
+        "{\"now\": {\"humidity\":89,\"windScale\":\"2\",\"textNight\":\"多云\",\"uvIndex\":3,\"temp\":24,\"iconNight\":4},"
+        "\"address\": {\"lat\":225737664,\"atm\":\"1010\",\"city\":\"深圳\",\"subLocality\":\"宝安\",\"lon\":1138535138},"
+        "\"daily\": [{\"tempMin\":22,\"iconDay\":6,\"fxDate\":1712505600,\"textDay\":\"阵雨\",\"tempMax\":29},"
+        "{\"tempMax\":27,\"textDay\":\"多云\",\"iconDay\":3,\"fxDate\":1712592000,\"tempMin\":22},"
+        "{\"tempMax\":29,\"fxDate\":1712678400,\"textDay\":\"多云\",\"iconDay\":3,\"tempMin\":22},"
+        "{\"tempMin\":23,\"textDay\":\"多云\",\"fxDate\":1712764800,\"tempMax\":30,\"iconDay\":3},"
+        "{\"fxDate\":1712851200,\"textDay\":\"多云\",\"iconDay\":3,\"tempMax\":31,\"tempMin\":24},"
+        "{\"fxDate\":1712937600,\"iconDay\":3,\"tempMax\":31,\"tempMin\":24,\"textDay\":\"多云\"},"
+        "{\"fxDate\":1713024000,\"textDay\":\"多云\",\"iconDay\":3,\"tempMax\":29,\"tempMin\":25}],"
+        "\"code\":1}";
+
+    /* -------------------------------------------------------------------------- */
     WeatherModel::WeatherModel()
     {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherModel::WeatherModel");
+        jsonCheck_weather((uint8_t *)json_data);
     }
 
     WeatherModel::~WeatherModel()
@@ -99,4 +112,42 @@ namespace OHOS
         return instance;
     }
 
+    // 获取天气图片
+    std::string WeatherModel::GetWeatherImage()
+    {
+        int size = Weather_data_t_now.iconNight;
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "iconNight:%d", size);
+        return weather130x130[size];
+    }
+
+    // 获取温度
+    std::string WeatherModel::GetWeatherTemperature()
+    {
+        int temperature = Weather_data_t_now.temp;
+        return std::to_string(temperature) + "°";
+    }
+
+    // 获取天气描述
+    std::string WeatherModel::GetWeatherDescription()
+    {
+        std::string WeatherDescription = Weather_data_t_now.textNight;
+        return WeatherDescription;
+    }
+
+    // 获取天气地区
+    std::string WeatherModel::GetWeatherArea()
+    {
+        std::string city = Weather_data_t_address.city;
+        std::string subLocality = Weather_data_t_address.city;
+        return (city + subLocality);
+    }
+
+    // 获取最高气温和最低气温
+    std::string WeatherModel::GetWeatherMaxAndMinTemperature()
+    {
+        int maxtemperature = Weather_data_seven_data[0].tempMax;
+        int mintemperature = Weather_data_seven_data[0].tempMin;
+        std::string MaxandMinTemperature = "最高" + std::to_string(maxtemperature) + "°" + " " + "最低" + std::to_string(mintemperature) + "°";
+        return MaxandMinTemperature;
+    }
 }
\ No newline at end of file
index b0ade2c..702037e 100644 (file)
@@ -9,16 +9,19 @@ namespace OHOS
     static constexpr int16_t UV_IMAGE_ANIMATOR_VIEW_H = 60;\r
     static constexpr int16_t UV_IMAGE_ANIMATOR_VIEW_NUM_FRAMES = 24; // 图片帧数\r
     static constexpr int16_t UV_IMAGE_ANIMATOR_TIME = 100;           // 图片更新间隔\r
+    static ImageAnimatorInfo UVimageAnimatorInfo[UV_IMAGE_ANIMATOR_VIEW_NUM_FRAMES];\r
 \r
     static constexpr int16_t WINDSPEED_IMAGE_ANIMATOR_VIEW_X = 203;\r
     static constexpr int16_t WINDSPEED_IMAGE_ANIMATOR_VIEW_NUM_FRAMES = 24; // 图片帧数\r
+    static ImageAnimatorInfo WindSpeedimageAnimatorInfo[WINDSPEED_IMAGE_ANIMATOR_VIEW_NUM_FRAMES];\r
 \r
     static constexpr int16_t HUMIDITY_IMAGE_ANIMATOR_VIEW_X = 353;\r
     static constexpr int16_t HUMIDITY_IMAGE_ANIMATOR_VIEW_NUM_FRAMES = 20; // 图片帧数\r
+    static ImageAnimatorInfo HumidityimageAnimatorInfo[HUMIDITY_IMAGE_ANIMATOR_VIEW_NUM_FRAMES];\r
 \r
-    static constexpr char *UVPaths = "/user/res/weather/weather60x60gif/UV/";\r
-    static constexpr char *WindSpeedPaths = "/user/res/weather/weather60x60gif/WindSpeed/";\r
-    static constexpr char *HumidityPaths = "/user/res/weather/weather60x60gif/Humidity/";\r
+    static constexpr const char *UVPaths = "/user/res/weather/weather60x60gif/UV/";\r
+    static constexpr const char *WindSpeedPaths = "/user/res/weather/weather60x60gif/WindSpeed/";\r
+    static constexpr const char *HumidityPaths = "/user/res/weather/weather60x60gif/Humidity/";\r
 \r
     static WeatherReportView *g_pWeatherReportView{nullptr};\r
 \r
@@ -80,20 +83,11 @@ namespace OHOS
             delete HumidityImageAnimatorView;\r
             HumidityImageAnimatorView = nullptr;\r
 \r
-            if (p_ImageAnimator != nullptr)\r
-            {\r
-                p_ImageAnimator->FreeImagePathsArray(UVPathsArray, UV_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
-                p_ImageAnimator->DeleteImageAnimatorInfo(UVimageAnimatorInfo);\r
-\r
-                p_ImageAnimator->FreeImagePathsArray(WindSpeedPathsArray, WINDSPEED_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
-                p_ImageAnimator->DeleteImageAnimatorInfo(WindSpeedimageAnimatorInfo);\r
+            FreeImagePathsArray(UVPathsArray, UV_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
 \r
-                p_ImageAnimator->FreeImagePathsArray(HumidityPathsArray, HUMIDITY_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
-                p_ImageAnimator->DeleteImageAnimatorInfo(HumidityimageAnimatorInfo);\r
+            FreeImagePathsArray(WindSpeedPathsArray, WINDSPEED_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
 \r
-                delete p_ImageAnimator;\r
-                p_ImageAnimator = nullptr;\r
-            }\r
+            FreeImagePathsArray(HumidityPathsArray, HUMIDITY_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
         }\r
     }\r
 \r
@@ -211,7 +205,6 @@ namespace OHOS
         /* ----------------------------------- Add ---------------------------------- */\r
 \r
         Add(title);\r
-\r
         Add(UV_Number);\r
         Add(WindSpeed_Number);\r
         Add(Humidity_Number);\r
@@ -226,37 +219,84 @@ namespace OHOS
     {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherReportView::WeatherReportViewImageAnimatorViewInit");\r
 \r
-        p_ImageAnimator = new ImageAnimator();\r
-        if (p_ImageAnimator == nullptr)\r
+        /* ----------------------------- UVImageAnimatorView---------------------------- */\r
+        UVPathsArray = CreateImagePathsArray(UVPaths, "bin", UV_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
+        if (UVImageAnimatorView == nullptr)\r
         {\r
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "p_ImageAnimator new fail!!");\r
-            return false;\r
+            UVImageAnimatorView = new UIImageAnimatorView();\r
+            if (UVImageAnimatorView == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UVImageAnimatorView new fail");\r
+                return false;\r
+            }\r
+            for (uint8_t i = 0; i < UV_IMAGE_ANIMATOR_VIEW_NUM_FRAMES; i++)\r
+            {\r
+                UVimageAnimatorInfo[i].imagePath = (UVPathsArray[i]);\r
+                UVimageAnimatorInfo[i].imageType = IMG_SRC_FILE_PATH;\r
+                UVimageAnimatorInfo[i].pos.x = UV_IMAGE_ANIMATOR_VIEW_X;\r
+                UVimageAnimatorInfo[i].pos.y = UV_IMAGE_ANIMATOR_VIEW_Y;\r
+                UVimageAnimatorInfo[i].width = UV_IMAGE_ANIMATOR_VIEW_W;\r
+                UVimageAnimatorInfo[i].height = UV_IMAGE_ANIMATOR_VIEW_H;\r
+            }\r
+            UVImageAnimatorView->SetPosition(UV_IMAGE_ANIMATOR_VIEW_X, UV_IMAGE_ANIMATOR_VIEW_Y, UV_IMAGE_ANIMATOR_VIEW_W, UV_IMAGE_ANIMATOR_VIEW_H);\r
+            UVImageAnimatorView->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+            UVImageAnimatorView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+            UVImageAnimatorView->SetImageAnimatorSrc(UVimageAnimatorInfo, UV_IMAGE_ANIMATOR_VIEW_NUM_FRAMES, UV_IMAGE_ANIMATOR_TIME);\r
+            UVImageAnimatorView->SetRepeat(true);\r
+            UVImageAnimatorView->Start();\r
+        }\r
+        /* ----------------------- WindSpeedImageAnimatorView ----------------------- */\r
+        WindSpeedPathsArray = CreateImagePathsArray(WindSpeedPaths, "bin", WINDSPEED_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
+        if (WindSpeedImageAnimatorView == nullptr)\r
+        {\r
+            WindSpeedImageAnimatorView = new UIImageAnimatorView();\r
+            if (WindSpeedImageAnimatorView == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WindSpeedImageAnimatorView new fail");\r
+                return false;\r
+            }\r
+            for (uint8_t i = 0; i < WINDSPEED_IMAGE_ANIMATOR_VIEW_NUM_FRAMES; i++)\r
+            {\r
+                WindSpeedimageAnimatorInfo[i].imagePath = (WindSpeedPathsArray[i]);\r
+                WindSpeedimageAnimatorInfo[i].imageType = IMG_SRC_FILE_PATH;\r
+                WindSpeedimageAnimatorInfo[i].pos.x = WINDSPEED_IMAGE_ANIMATOR_VIEW_X;\r
+                WindSpeedimageAnimatorInfo[i].pos.y = UV_IMAGE_ANIMATOR_VIEW_Y;\r
+                WindSpeedimageAnimatorInfo[i].width = UV_IMAGE_ANIMATOR_VIEW_W;\r
+                WindSpeedimageAnimatorInfo[i].height = UV_IMAGE_ANIMATOR_VIEW_H;\r
+            }\r
+            WindSpeedImageAnimatorView->SetPosition(WINDSPEED_IMAGE_ANIMATOR_VIEW_X, UV_IMAGE_ANIMATOR_VIEW_Y, UV_IMAGE_ANIMATOR_VIEW_W, UV_IMAGE_ANIMATOR_VIEW_H);\r
+            WindSpeedImageAnimatorView->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+            WindSpeedImageAnimatorView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+            WindSpeedImageAnimatorView->SetImageAnimatorSrc(WindSpeedimageAnimatorInfo, WINDSPEED_IMAGE_ANIMATOR_VIEW_NUM_FRAMES, UV_IMAGE_ANIMATOR_TIME);\r
+            WindSpeedImageAnimatorView->SetRepeat(true);\r
+            WindSpeedImageAnimatorView->Start();\r
+        }\r
+        /* ------------------------ HumidityImageAnimatorView ----------------------- */\r
+        HumidityPathsArray = CreateImagePathsArray(HumidityPaths, "bin", HUMIDITY_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
+        if (HumidityImageAnimatorView == nullptr)\r
+        {\r
+            HumidityImageAnimatorView = new UIImageAnimatorView();\r
+            if (HumidityImageAnimatorView == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HumidityImageAnimatorView new fail");\r
+                return false;\r
+            }\r
+            for (uint8_t i = 0; i < HUMIDITY_IMAGE_ANIMATOR_VIEW_NUM_FRAMES; i++)\r
+            {\r
+                HumidityimageAnimatorInfo[i].imagePath = (HumidityPathsArray[i]);\r
+                HumidityimageAnimatorInfo[i].imageType = IMG_SRC_FILE_PATH;\r
+                HumidityimageAnimatorInfo[i].pos.x = HUMIDITY_IMAGE_ANIMATOR_VIEW_X;\r
+                HumidityimageAnimatorInfo[i].pos.y = UV_IMAGE_ANIMATOR_VIEW_Y;\r
+                HumidityimageAnimatorInfo[i].width = UV_IMAGE_ANIMATOR_VIEW_W;\r
+                HumidityimageAnimatorInfo[i].height = UV_IMAGE_ANIMATOR_VIEW_H;\r
+            }\r
+            HumidityImageAnimatorView->SetPosition(HUMIDITY_IMAGE_ANIMATOR_VIEW_X, UV_IMAGE_ANIMATOR_VIEW_Y, UV_IMAGE_ANIMATOR_VIEW_W, UV_IMAGE_ANIMATOR_VIEW_H);\r
+            HumidityImageAnimatorView->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+            HumidityImageAnimatorView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+            HumidityImageAnimatorView->SetImageAnimatorSrc(HumidityimageAnimatorInfo, HUMIDITY_IMAGE_ANIMATOR_VIEW_NUM_FRAMES, UV_IMAGE_ANIMATOR_TIME);\r
+            HumidityImageAnimatorView->SetRepeat(true);\r
+            HumidityImageAnimatorView->Start();\r
         }\r
-\r
-        p_ImageAnimator->imageAnimatorConfig = {\r
-            .x = UV_IMAGE_ANIMATOR_VIEW_X,\r
-            .y = UV_IMAGE_ANIMATOR_VIEW_Y,\r
-            .w = UV_IMAGE_ANIMATOR_VIEW_W,\r
-            .h = UV_IMAGE_ANIMATOR_VIEW_H,\r
-            .numFrames = UV_IMAGE_ANIMATOR_VIEW_NUM_FRAMES,\r
-            .time = UV_IMAGE_ANIMATOR_TIME,\r
-        };\r
-        UVPathsArray = p_ImageAnimator->CreateImagePathsArray(UVPaths, "bin", UV_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
-        p_ImageAnimator->InitImageAnimatorSource(UVImageAnimatorView, UVimageAnimatorInfo, UVPathsArray, p_ImageAnimator->imageAnimatorConfig);\r
-\r
-        p_ImageAnimator->imageAnimatorConfig.x = WINDSPEED_IMAGE_ANIMATOR_VIEW_X;\r
-        WindSpeedPathsArray = p_ImageAnimator->CreateImagePathsArray(WindSpeedPaths, "bin", WINDSPEED_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
-        p_ImageAnimator->InitImageAnimatorSource(WindSpeedImageAnimatorView, WindSpeedimageAnimatorInfo, WindSpeedPathsArray, p_ImageAnimator->imageAnimatorConfig);\r
-\r
-        p_ImageAnimator->imageAnimatorConfig.x = HUMIDITY_IMAGE_ANIMATOR_VIEW_X;\r
-        p_ImageAnimator->imageAnimatorConfig.numFrames = HUMIDITY_IMAGE_ANIMATOR_VIEW_NUM_FRAMES;\r
-        HumidityPathsArray = p_ImageAnimator->CreateImagePathsArray(HumidityPaths, "bin", HUMIDITY_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
-        p_ImageAnimator->InitImageAnimatorSource(HumidityImageAnimatorView, HumidityimageAnimatorInfo, HumidityPathsArray, p_ImageAnimator->imageAnimatorConfig);\r
-\r
-        /* ---------------------------------- Start --------------------------------- */\r
-        UVImageAnimatorView->Start();\r
-        WindSpeedImageAnimatorView->Start();\r
-        HumidityImageAnimatorView->Start();\r
         /* ----------------------------------- Add ---------------------------------- */\r
         Add(UVImageAnimatorView);\r
         Add(WindSpeedImageAnimatorView);\r
@@ -294,4 +334,31 @@ namespace OHOS
         return true;\r
     }\r
 \r
+    const char **WeatherReportView::CreateImagePathsArray(const char *basePath, const char *fileExtension, int numImages)\r
+    {\r
+        const char **imagePaths = new const char *[numImages];\r
+        char buffer[256];\r
+        for (int i = 0; i < numImages; i++)\r
+        {\r
+            snprintf(buffer, sizeof(buffer), "%s%d.%s", basePath, i + 1, fileExtension);\r
+            imagePaths[i] = strdup(buffer);\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " imagePaths[%d] = %s", i, imagePaths[i]);\r
+        }\r
+        return imagePaths;\r
+    }\r
+\r
+    /*\r
+     * @brief: 释放图片路径数组指针\r
+     * @param {char} imagePaths 图片路径数组\r
+     * @param {int} numImages 图片数量\r
+     */\r
+    void WeatherReportView::FreeImagePathsArray(const char **imagePaths, const int numImages)\r
+    {\r
+        for (int i = 0; i < numImages; i++)\r
+        {\r
+            delete imagePaths[i];\r
+            imagePaths[i] = nullptr;\r
+        }\r
+    }\r
+\r
 }
\ No newline at end of file
index 2e66928..4bb5d25 100644 (file)
@@ -60,9 +60,10 @@ namespace OHOS
     static constexpr int16_t PULLUP_ANIMATOR_VIEW_Y = 400;
     static constexpr int16_t PULLUP_ANIMATOR_VIEW_W = 40;
     static constexpr int16_t PULLUP_ANIMATOR_VIEW_H = 40;
-    static constexpr int16_t PULLUP_ANIMATOR_VIEW_NUM_FRAMES = 74;
-    static constexpr int16_t PULLUP_ANIMATOR_VIEW_TIME = 50;
-    static constexpr char *PullUpPaths = "/user/res/weather/PullUp/PullUp_";
+    static constexpr int16_t PULLUP_ANIMATOR_VIEW_NUM_FRAMES = 70;
+    static constexpr int16_t PULLUP_ANIMATOR_VIEW_TIME = 100;
+    ImageAnimatorInfo PullUpimageAnimatorInfo[PULLUP_ANIMATOR_VIEW_NUM_FRAMES];
+    static constexpr const char *PullUpPaths = "/user/res/weather/PullUp/PullUp_";
 
     static WeatherView *g_pWeatherView{nullptr};
     WeatherView::WeatherView()
@@ -70,11 +71,15 @@ namespace OHOS
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherView::WeatherView");
         SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
         SetViewIndex(0); // 视图索引
-        WeatherImag = GetWeatherImage();
-        Temperature = GetWeatherTemperature();
-        WeatherDescription = GetWeatherDescription();
-        WeatherArea = GetWeatherArea();
-        MaxandMinTemperature = GetWeatherMaxAndMinTemperature();
+        if (WEATHER_DATA_VALID)
+        {
+            WeatherModel *p_WeatherModel = &WeatherModel::GetInstance();
+            WeatherImag = p_WeatherModel->GetWeatherImage();
+            Temperature = p_WeatherModel->GetWeatherTemperature();
+            WeatherDescription = p_WeatherModel->GetWeatherDescription();
+            WeatherArea = p_WeatherModel->GetWeatherArea();
+            MaxandMinTemperature = p_WeatherModel->GetWeatherMaxAndMinTemperature();
+        }
         g_pWeatherView = this;
     }
 
@@ -126,14 +131,8 @@ namespace OHOS
                 delete PullUpAnimatorView;
                 PullUpAnimatorView = nullptr;
             }
-            if (p_ImageAnimator != nullptr)
-            {
-                p_ImageAnimator->FreeImagePathsArray(PullUpPathsArray, PULLUP_ANIMATOR_VIEW_NUM_FRAMES);
-                p_ImageAnimator->DeleteImageAnimatorInfo(PullUpimageAnimatorInfo);
 
-                delete p_ImageAnimator;
-                p_ImageAnimator = nullptr;
-            }
+            FreeImagePathsArray(PullUpPathsArray, PULLUP_ANIMATOR_VIEW_NUM_FRAMES);
         }
     }
 
@@ -142,52 +141,6 @@ namespace OHOS
         return g_pWeatherView;
     }
 
-    // 获取天气图片
-    std::string WeatherView::GetWeatherImage()
-    {
-        int size = sizeof(weather130x130) / sizeof(weather130x130[0]);
-        return weather130x130[8];
-    }
-    // 获取温度
-
-    std::string WeatherView::GetWeatherTemperature()
-    {
-        // 使用系统时间作为种子
-        srand(time(0));
-        int temperature = rand() % 50;
-        return std::to_string(22) + "°";
-    }
-    // 获取天气描述
-
-    std::string WeatherView::GetWeatherDescription()
-    {
-        srand(time(0));
-        std::string area[] = {"晴", "雨夹雪", "雷阵雨伴有冰雹"};
-        int num = rand() % (sizeof(area) / sizeof(area[0]));
-        return area[0];
-    }
-    // 获取天气地区
-
-    std::string WeatherView::GetWeatherArea()
-    {
-        srand(time(0));
-        std::string area[] = {"北京市东城区", "深圳市宝安区"};
-        int num = rand() % (sizeof(area) / sizeof(area[0]));
-        return area[1];
-    }
-    // 获取最高气温和最低气温
-
-    std::string WeatherView::GetWeatherMaxAndMinTemperature()
-    {
-        // 使用系统时间作为种子
-        srand(time(0));
-        // 生成随机数
-        int maxtemperature = 20 + rand() % 40; // 最高气温:20°~60°
-        int mintemperature = -5 + rand() % 20;
-        std::string MaxandMinTemperature = "最高" + std::to_string(22) + "°" + " " + "最低" + std::to_string(18) + "°";
-        return MaxandMinTemperature;
-    }
-
     // 初始化标签
     UILabelExt *WeatherView::InitLabelExt(int x, int y, int w, int h, const char *text, int textfont, int lineheight)
     {
@@ -263,24 +216,31 @@ namespace OHOS
         }
         showMaxandMinTemperatureLabel->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff));
         /* -------------------------------------------------------------------------- */
-
-        p_ImageAnimator = new ImageAnimator();
-        if (p_ImageAnimator == nullptr)
+        PullUpPathsArray = CreateImagePathsArray(PullUpPaths, "bin", PULLUP_ANIMATOR_VIEW_NUM_FRAMES);
+        if (PullUpAnimatorView == nullptr)
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "p_ImageAnimator new fail!!");
-            return false;
+            PullUpAnimatorView = new UIImageAnimatorView();
+            if (PullUpAnimatorView == nullptr)
+            {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpAnimatorView new fail");
+                return false;
+            }
+            for (uint8_t i = 0; i < PULLUP_ANIMATOR_VIEW_NUM_FRAMES; i++)
+            {
+                PullUpimageAnimatorInfo[i].imagePath = (PullUpPathsArray[i]);
+                PullUpimageAnimatorInfo[i].imageType = IMG_SRC_FILE_PATH;
+                PullUpimageAnimatorInfo[i].pos.x = PULLUP_ANIMATOR_VIEW_X;
+                PullUpimageAnimatorInfo[i].pos.y = PULLUP_ANIMATOR_VIEW_Y;
+                PullUpimageAnimatorInfo[i].width = PULLUP_ANIMATOR_VIEW_W;
+                PullUpimageAnimatorInfo[i].height = PULLUP_ANIMATOR_VIEW_H;
+            }
+            PullUpAnimatorView->SetPosition(PULLUP_ANIMATOR_VIEW_X, PULLUP_ANIMATOR_VIEW_Y, PULLUP_ANIMATOR_VIEW_W, PULLUP_ANIMATOR_VIEW_H);
+            PullUpAnimatorView->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);
+            PullUpAnimatorView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
+            PullUpAnimatorView->SetImageAnimatorSrc(PullUpimageAnimatorInfo, PULLUP_ANIMATOR_VIEW_NUM_FRAMES, PULLUP_ANIMATOR_VIEW_TIME);
+            PullUpAnimatorView->SetRepeat(true);
+            PullUpAnimatorView->Start();
         }
-
-        p_ImageAnimator->imageAnimatorConfig.x = PULLUP_ANIMATOR_VIEW_X;
-        p_ImageAnimator->imageAnimatorConfig.y = PULLUP_ANIMATOR_VIEW_Y;
-        p_ImageAnimator->imageAnimatorConfig.w = PULLUP_ANIMATOR_VIEW_W;
-        p_ImageAnimator->imageAnimatorConfig.h = PULLUP_ANIMATOR_VIEW_H;
-        p_ImageAnimator->imageAnimatorConfig.numFrames = PULLUP_ANIMATOR_VIEW_NUM_FRAMES;
-        p_ImageAnimator->imageAnimatorConfig.time = PULLUP_ANIMATOR_VIEW_TIME;
-        PullUpPathsArray = p_ImageAnimator->CreateImagePathsArray(PullUpPaths, "bin", PULLUP_ANIMATOR_VIEW_NUM_FRAMES);
-        p_ImageAnimator->InitImageAnimatorSource(PullUpAnimatorView, PullUpimageAnimatorInfo, PullUpPathsArray, p_ImageAnimator->imageAnimatorConfig);
-        PullUpAnimatorView->Start();
-
         /* -------------------------------- 将组件添加到根视图 ------------------------------- */
         Add(showWeatherImage);
         Add(showCurrentTimeLabel);
@@ -333,4 +293,41 @@ namespace OHOS
             showCurrentTimeLabel->SetText(stringtime.c_str());
         }
     }
+
+    const char **WeatherView::CreateImagePathsArray(const char *basePath, const char *fileExtension, int numImages)
+    {
+        const char **imagePaths = new const char *[numImages];
+        char buffer[256];
+        for (int i = 0; i < numImages; i++)
+        {
+            snprintf(buffer, sizeof(buffer), "%s%d.%s", basePath, i + 1, fileExtension);
+            imagePaths[i] = strdup(buffer);
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " imagePaths[%d] = %s", i, imagePaths[i]);
+        }
+        return imagePaths;
+    }
+
+    /*
+     * @brief: 释放图片路径数组指针
+     * @param {char} imagePaths 图片路径数组
+     * @param {int} numImages 图片数量
+     */
+    void WeatherView::FreeImagePathsArray(const char **imagePaths, const int numImages)
+    {
+        for (int i = 0; i < numImages; i++)
+        {
+            delete imagePaths[i];
+            imagePaths[i] = nullptr;
+        }
+    }
+
+    void WeatherView::DumpWeatherInfo()
+    {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherInfo:");
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherImag:%s", WeatherImag.c_str());
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Temperature:%s", Temperature.c_str());
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherDescription:%s", WeatherDescription.c_str());
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherArea:%s", WeatherArea.c_str());
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MaxandMinTemperature:%s\n", MaxandMinTemperature.c_str());
+    }
 }
\ No newline at end of file
index cd98d98..8b60876 100644 (file)
@@ -1,3 +1,10 @@
+/*
+ * @Author: luozheng 1732036298@qq.com
+ * @Date: 2024-04-11 19:15:39
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-04-12 20:04:57
+ * @FilePath: /FD230/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp
+ */
 /**
  * Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved. \n
  *
@@ -19,7 +26,8 @@
 
 #ifdef __cplusplus
 #if __cplusplus
-extern "C" {
+extern "C"
+{
 #endif /* __cplusplus */
 #endif /* __cplusplus */
 
@@ -45,65 +53,64 @@ extern "C" {
 #include "custom_utils.h"
 #include "string.h"
 #include "bleService.h"
+//#include "../../../fd230app/nativeui/weather/include/WeatherModel.h"
 
+    // struct Weather_data
+    // {
+    //     int humidity;
+    //     char* windScale;
+    //     char* textNight;
+    //     int uvIndex;
+    //     int temp;
+    //     int iconNight;
+    // };
+    uint8_t ble_falg = 0;
 
-// struct Weather_data
-// {
-//     int humidity;
-//     char* windScale;
-//     char* textNight; 
-//     int uvIndex;
-//     int temp;
-//     int iconNight;
-// };
-uint8_t ble_falg=0;
-
-uint8_t ble_is_ready(void)
-{
-    return ble_falg;
-}
-
-uint8_t ble_is_connect_ready(void)
-{
-    return Bleconnect;
-}
+    uint8_t ble_is_ready(void)
+    {
+        return ble_falg;
+    }
 
-void set_ble_falg(bool falg)
-{
-    ble_falg=falg;
-}
+    uint8_t ble_is_connect_ready(void)
+    {
+        return Bleconnect;
+    }
 
-void set_weather_now_data(int humidity, char* windScale, char* textNight,int uvIndex,int temp,int iconNight)
-{
-    return UI_set_weather_now_data(humidity, windScale, textNight,uvIndex,temp,iconNight);
-}
+    void set_ble_falg(bool falg)
+    {
+        ble_falg = falg;
+    }
 
-void set_weather_address_data(int lat, char* atm, char* city,char* subLocality,int lon)
-{
-    return UI_set_weather_address_data(lat, atm, city,subLocality,lon);
-}
-// struct ONE_DAY_DATA
-// {
-//     int tempMin;
-//     int iconDay;
-//     int fxDate;
-//     char textDay[16];
-//     int tempMax;
-// };
+    void set_weather_now_data(int humidity, char *windScale, char *textNight, int uvIndex, int temp, int iconNight)
+    {
+        return OHOS::UI_set_weather_now_data(humidity, windScale, textNight, uvIndex, temp, iconNight);
+    }
 
-static struct ONE_DAY_DATA data_t[7];
-void set_weather_one_data(int tempMin, int iconDay,int fxDate, int tempMax, char *textDay,int x) 
-{
-    data_t[x].tempMin=tempMin;
-    data_t[x].iconDay=iconDay;
-    data_t[x].fxDate=fxDate;
-    data_t[x].tempMax=tempMax;
-    memset((void*)data_t[x].textDay,0,16);
-    strcpy(data_t[x].textDay,textDay);
+    void set_weather_address_data(int lat, char *atm, char *city, char *subLocality, int lon)
+    {
+        return OHOS::UI_set_weather_address_data(lat, atm, city, subLocality, lon);
+    }
+    // struct ONE_DAY_DATA
+    // {
+    //     int tempMin;
+    //     int iconDay;
+    //     int fxDate;
+    //     char textDay[16];
+    //     int tempMax;
+    // };
+    static OHOS::ONE_DAY_DATA data_t[7];
+    void set_weather_one_data(int tempMin, int iconDay, int fxDate, int tempMax, char *textDay, int x)
+    {
+        data_t[x].tempMin = tempMin;
+        data_t[x].iconDay = iconDay;
+        data_t[x].fxDate = fxDate;
+        data_t[x].tempMax = tempMax;
+        memset((void *)data_t[x].textDay, 0, 16);
+        strcpy(data_t[x].textDay, textDay);
 
-    if(x==6)
-    return UI_set_weather_seven_day_data(data_t);
-}
+        if (x == 6)
+            return OHOS::UI_set_weather_seven_day_data(data_t);
+    }
 #ifdef __cplusplus
 #if __cplusplus
 }
index eb07d31..53c69a2 100755 (executable)
@@ -192,7 +192,6 @@ static OHOS::UIViewGroup* CalldialNotify(void)
 /*显示绑定通知*/
 static OHOS::UIViewGroup* showDeviceBindingNotify(void)
 {
-    PairingViewEventListener::GetInstance().Pairing_StartTimer();
     return OHOS::CreateDeviceBindingView();
 }
 
index d77c559..756c196 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-03-22 10:04:36
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-04-12 11:37:28
+ * @LastEditTime: 2024-04-12 15:46:18
  * @FilePath: /FD230/code/sdk/application/wearable/service/msg_center/src/notify/pairing_notification.cpp
  */
 #include "notification_manager.h"
@@ -282,6 +282,9 @@ namespace OHOS
             DeviceBindingView->Add(DeviceBindingButtonCancel);
             DeviceBindingView->Add(DeviceBindingButtonOK);
         }
+        
+        PairingViewEventListener::GetInstance().Pairing_StartTimer();
+
         return DeviceBindingView;
     }