天气界面添加历史数据保存,天气界面ui优化 714/2 714/head 718/target/1
authorluozheng <1732036298@qq.com>
Sat, 17 Aug 2024 08:38:31 +0000 (16:38 +0800)
committerluozheng <1732036298@qq.com>
Sat, 17 Aug 2024 08:38:31 +0000 (16:38 +0800)
code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp
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/FutureWeatherView.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/bleservice/bleEvent.c
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.h

index 82b09f2..cd93d05 100644 (file)
 #ifdef JS_ENABLE
 #include "product_adapter.h"
 #endif
+#include "bleEvent.h"
 
 namespace OHOS
 {
@@ -492,6 +493,8 @@ namespace OHOS
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Power is Charging!");
             DialModelCharge::GetInstance()->UpdateChargeStuaut(1);
         }
+        /*开机读取天气历史数据*/
+        read_jsonHistory_weather();
     }
 
     void NativeLauncher::InitAllNativeSlices(void)
index 35058b8..b4c9285 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com\r
  * @Date: 2024-03-30 09:14:38\r
  * @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-06-15 12:11:30\r
+ * @LastEditTime: 2024-08-17 16:20:42\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/include/WeatherReportView.h\r
  */\r
 #ifndef WEATHER_REPORT_VIEW_H\r
@@ -70,6 +70,9 @@ namespace OHOS
         UILabelExt *WindSpeed_Number{nullptr};                    //\r
         UILabelExt *Humidity{nullptr};                            // 湿度\r
         UILabelExt *Humidity_Number{nullptr};                     //\r
+\r
+        UIImageView *PullUpImage{nullptr}; // 上拉图片\r
+        \r
         UIImageAnimatorView *UVImageAnimatorView{nullptr};        // 紫外线动画\r
         UIImageAnimatorView *WindSpeedImageAnimatorView{nullptr}; // 风速动画\r
         UIImageAnimatorView *HumidityImageAnimatorView{nullptr};  // 湿度动画\r
index 618c915..56bc2ff 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-03-30 09:14:38
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-07-23 14:51:03
+ * @LastEditTime: 2024-08-17 16:03:36
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/include/WeatherView.h
  */
 #ifndef WEATHER_VIEW_H
@@ -23,6 +23,7 @@
 
 namespace OHOS
 {
+#define IS_USE_IMAGEANIMATOR 0
     static constexpr const char *WeatherBackground = "/user/res/weather/WEATHER_BACKGROUND.bin"; // 天气背景
     class WeatherView : public AppGroupView
     {
@@ -66,8 +67,13 @@ namespace OHOS
         UILabelExt *showWeatherDescriptionLabel{nullptr};   // 显示天气描述
         UILabelExt *showWeatherAreaLabel{nullptr};          // 显示天气地区
         UILabelExt *showMaxandMinTemperatureLabel{nullptr}; // 显示最高与最低气温
-        UIImageAnimatorView *PullUpAnimatorView{nullptr};   // 上拉动画
+#if IS_USE_IMAGEANIMATOR
+        UIImageAnimatorView *PullUpAnimatorView{nullptr}; // 上拉动画
         const char **PullUpPathsArray{nullptr};
+#else
+
+        UIImageView *PullUpImage{nullptr}; // 上拉图片
+#endif
         bool viewInitStatus{false};
     };
 } // namespace OHOS
index 39107a3..7a91835 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com\r
  * @Date: 2024-01-29 15:37:44\r
  * @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-06-19 10:46:16\r
+ * @LastEditTime: 2024-08-17 16:27:56\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/src/FutureWeatherView.cpp\r
  */\r
 #include "weather/include/FutureWeatherView.h"\r
@@ -84,16 +84,16 @@ namespace OHOS
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SettingView::OnStart::FutureWeatherList is nullptr");\r
             return false;\r
         }\r
-        FutureWeatherList->SetPosition(68, 130, 330, 400);\r
+        FutureWeatherList->SetPosition(68, 130, 330, 300);\r
         FutureWeatherList->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
         FutureWeatherList->SetThrowDrag(true);\r
-        // FutureWeatherList->SetAutoSize(true);\r
         FutureWeatherList->SetReboundSize(30);\r
-        FutureWeatherList->SetMaxScrollDistance(500);\r
-        FutureWeatherList->SetScrollBlankSize(85);\r
+        FutureWeatherList->SetMaxScrollDistance(1000);\r
+        FutureWeatherList->SetScrollBlankSize(30);\r
+        FutureWeatherList->SetDragACCLevel(5);\r
+        FutureWeatherList->SetSwipeACCLevel(800);\r
         WeatherModel::GetInstance().InitFutureWeatherItem();\r
         FutureWeatherList->SetAdapter(futureWeatherListAdapter);\r
-        FutureWeatherList->RefreshList();\r
         FutureWeatherList->SetIntercept(true);\r
         Add(FutureWeatherList);\r
         viewInitStatus = true;\r
index a5f86d7..641e0db 100644 (file)
@@ -77,6 +77,9 @@ namespace OHOS
             delete Humidity_Number;\r
             Humidity_Number = nullptr;\r
 \r
+            delete PullUpImage;\r
+            PullUpImage = nullptr;\r
+\r
             UVImageAnimatorView->Stop();\r
             delete UVImageAnimatorView;\r
             UVImageAnimatorView = nullptr;\r
@@ -323,10 +326,22 @@ namespace OHOS
             HumidityImageAnimatorView->SetRepeat(true);\r
             HumidityImageAnimatorView->Start();\r
         }\r
+        /* -------------------------------------------------------------------------- */\r
+        PullUpImage = new UIImageView();\r
+        if (PullUpImage == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherView::new PullUpImage fail!");\r
+            return false;\r
+        }\r
+        PullUpImage->SetPosition(213, 400, 40, 40);\r
+        PullUpImage->SetAutoEnable(false);\r
+        PullUpImage->SetResizeMode(UIImageView::CONTAIN);\r
+        PullUpImage->SetSrc("/user/res/Sleep/up.bin");\r
         /* ----------------------------------- Add ---------------------------------- */\r
         Add(UVImageAnimatorView);\r
         Add(WindSpeedImageAnimatorView);\r
         Add(HumidityImageAnimatorView);\r
+        Add(PullUpImage);\r
         viewInitStatus = true;\r
 \r
         return true;\r
@@ -352,7 +367,7 @@ namespace OHOS
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherReportView::InitPage fail");\r
             return false;\r
         }\r
-        //UpdateWeatherReportViewData();\r
+        // UpdateWeatherReportViewData();\r
         SetDraggable(true);\r
         SetTouchable(true);\r
         return true;\r
index d4c1057..e23379c 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-06-12 11:44:04
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-07-23 14:44:07
+ * @LastEditTime: 2024-08-17 16:08:22
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/src/WeatherView.cpp
  */
 #include "weather/include/WeatherView.h"
@@ -70,6 +70,7 @@ namespace OHOS
     static constexpr int16_t MAXANDMIN_TEMPERATURE_LABEL_TEXT_FONT = 20;
     static constexpr int16_t MAXANDMIN_TEMPERATURE_LABEL_LINE_HEIGHT = 23;
 
+#if IS_USE_IMAGEANIMATOR
     static constexpr int16_t PULLUP_ANIMATOR_VIEW_X = 213;
     static constexpr int16_t PULLUP_ANIMATOR_VIEW_Y = 400;
     static constexpr int16_t PULLUP_ANIMATOR_VIEW_W = 40;
@@ -78,6 +79,13 @@ namespace OHOS
     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_";
+#else
+    /*上拉图片*/
+    static constexpr int16_t PULLUP_IMAGE_X = 213;
+    static constexpr int16_t PULLUP_IMAGE_Y = 400;
+    static constexpr int16_t PULLUP_IMAGE_W = 40;
+    static constexpr int16_t PULLUP_IMAGE_H = 40;
+#endif
 
     static WeatherView *g_pWeatherView{nullptr};
     WeatherView::WeatherView()
@@ -144,14 +152,21 @@ namespace OHOS
                 delete showMaxandMinTemperatureLabel;
                 showMaxandMinTemperatureLabel = nullptr;
             }
+#if IS_USE_IMAGEANIMATOR
             if (PullUpAnimatorView != nullptr)
             {
                 PullUpAnimatorView->Stop();
                 delete PullUpAnimatorView;
                 PullUpAnimatorView = nullptr;
             }
-
             FreeImagePathsArray(PullUpPathsArray, PULLUP_ANIMATOR_VIEW_NUM_FRAMES);
+#else
+            if (PullUpImage != nullptr)
+            {
+                delete PullUpImage;
+                PullUpImage = nullptr;
+            }
+#endif
         }
     }
 
@@ -242,7 +257,8 @@ namespace OHOS
             return false;
         }
         showMaxandMinTemperatureLabel->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff));
-        /* -------------------------------------------------------------------------- */
+/* -------------------------------------------------------------------------- */
+#if IS_USE_IMAGEANIMATOR
         PullUpPathsArray = CreateImagePathsArray(PullUpPaths, "bin", PULLUP_ANIMATOR_VIEW_NUM_FRAMES);
         if (PullUpAnimatorView == nullptr)
         {
@@ -268,6 +284,18 @@ namespace OHOS
             PullUpAnimatorView->SetRepeat(true);
             PullUpAnimatorView->Start();
         }
+#else
+        PullUpImage = new UIImageView();
+        if (PullUpImage == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherView::new PullUpImage fail!");
+            return false;
+        }
+        PullUpImage->SetPosition(PULLUP_IMAGE_X, PULLUP_IMAGE_Y, PULLUP_IMAGE_W, PULLUP_IMAGE_H);
+        PullUpImage->SetAutoEnable(false);
+        PullUpImage->SetResizeMode(UIImageView::CONTAIN);
+        PullUpImage->SetSrc("/user/res/Sleep/up.bin");
+#endif
         /* -------------------------------- 将组件添加到根视图 ------------------------------- */
         Add(WeatherBackGroundImg);
         Add(showWeatherImage);
@@ -276,7 +304,11 @@ namespace OHOS
         Add(showWeatherDescriptionLabel);
         Add(showWeatherAreaLabel);
         Add(showMaxandMinTemperatureLabel);
+#if IS_USE_IMAGEANIMATOR
         Add(PullUpAnimatorView);
+#else
+        Add(PullUpImage);
+#endif
         viewInitStatus = true;
 
         return true;
@@ -290,7 +322,7 @@ namespace OHOS
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherView::InitPage fail");
             return false;
         }
-        //UpdateWeatherViewData();
+        // UpdateWeatherViewData();
         SetDraggable(true);
         SetTouchable(true);
         return true;
@@ -435,7 +467,7 @@ namespace OHOS
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherView::UpdateWeatherViewData fail!!");
         }
 
-        //DumpWeatherInfo(); // 输出天气信息到日志
+        // DumpWeatherInfo(); // 输出天气信息到日志
 
         return success;
     }
index f84f65b..58cd7ff 100644 (file)
@@ -2069,20 +2069,29 @@ void SetsteptargetParamCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *tota
 \r
 uint8_t jsonCheck_weather(uint8_t *buf,uint8_t *check)//json 格式解析 天气数据\r
 {\r
-    uint8_t flag = 0;\r
-    // flag = 2;\r
-    // memcpy(check,&flag,1);\r
-    // return 0;\r
     uint8_t *json;\r
     json = buf;\r
     // printf("jsonCheck_weather:len: json:%f jsonlen:%d\r\n",0.011,strlen((char *)json));\r
-    #if 0\r
-        FILE *fp=fopen("user/weather.json","wb+");\r
+    FILE *fp=fopen("/user/userdata/weather.json","wb+");\r
+    if(fp != NULL)\r
+    {\r
         printf("jsonCheck_weather len %d",strlen((char *)buf)+1);\r
         //fwrite((void*)buf,1,strlen((char *)buf)+1,fp);\r
         fputs((char *)buf,fp);\r
         fclose(fp);\r
-    #endif\r
+    }\r
+    return parse_jsonCheck_weather(buf,check);\r
+}\r
+\r
+uint8_t parse_jsonCheck_weather(uint8_t *buf,uint8_t *check)//json 格式解析 天气数据\r
+{\r
+    uint8_t flag = 0;\r
+    // flag = 2;\r
+    // memcpy(check,&flag,1);\r
+    // return 0;\r
+    uint8_t *json;\r
+    json = buf;\r
+    // printf("jsonCheck_weather:len: json:%f jsonlen:%d\r\n",0.011,strlen((char *)json));\r
     cJSON* root = cJSON_Parse((const char *)json);\r
     if (root == NULL) {\r
         printf("天气 JSON解析错误\n");\r
@@ -2137,6 +2146,45 @@ uint8_t jsonCheck_weather(uint8_t *buf,uint8_t *check)//json 格式解析 天气
     *check = 1;\r
     return 1;\r
 }\r
+/*读取天气历史数据*/\r
+uint8_t read_jsonHistory_weather(void)\r
+{\r
+    uint8_t *buf = NULL;\r
+    FILE *fp=fopen("/user/userdata/weather.json","rb");\r
+    if(fp == NULL)\r
+    {\r
+        printf("read_jsonHistory_weather:fopen error\r\n");\r
+        return 0;\r
+    }\r
+    fseek(fp, 0, SEEK_END);\r
+    long size = ftell(fp);\r
+    fseek(fp, 0, SEEK_SET);\r
+    if (size == 0)\r
+    {\r
+        fclose(fp);\r
+        return 0;\r
+    }\r
+    // printf("file size = %d\r\n",size);\r
+    buf = (uint8_t*)malloc(size + 1);\r
+    if(buf == NULL)\r
+    {\r
+        fclose(fp);\r
+        return 0;\r
+    }\r
+    char *str = fgets((char *)buf,size + 1,fp);\r
+    if(str!=NULL)\r
+    {\r
+        // printf("file str = %s\r\n",str);\r
+    }\r
+\r
+    fclose(fp);\r
+   \r
+    uint8_t check = 0;\r
+    parse_jsonCheck_weather(buf,&check);\r
+    free(buf);\r
+    \r
+    return 1;\r
+}\r
 \r
 uint8_t binCheck_AI(uint8_t *buf,uint8_t *check,uint16_t len)//json 格式解析 天气数据\r
 {\r
index 08d0546..d229fd9 100644 (file)
@@ -799,6 +799,8 @@ void GetCurDataCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totaldata,ui
 
 bool get_ctkd_flag(void);
 
+uint8_t parse_jsonCheck_weather(uint8_t *buf,uint8_t *check);//json 格式解析 天气数据
+uint8_t read_jsonHistory_weather(void);
 ///////////////////////////自定义文件传输协议/////////////////////////////
 #define OTA_FILE_MSG_CMD  0x0601 
 #define OTA_FILE_DATA_CMD 0x0602