Merge #295 into sdk602patch0521 from refs/changes/295/head 294/target/2
author罗正 <1732036298@qq.com>
Sat, 15 Jun 2024 10:07:57 +0000 (10:07 +0000)
committersnickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
Sat, 15 Jun 2024 10:07:57 +0000 (10:07 +0000)
Code review from 罗正

* refs/changes/295/head: (2 commits squashed)

  - 天气界面实现app同步刷新数据

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

Signed-off-by: 罗正 <1732036298@qq.com>
Reviewed-by: snickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
Merged-by: snickersun@163.com <accounts_62b90f7fcf51ade33b6f628e@mail.teambition.com>
link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/295
20 files changed:
code/sdk/application/wearable/fd230app/nativeui/weather/include/FutureWeatherView.h
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/WeatherControlView.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/FutureWeatherListAdapter.cpp
code/sdk/application/wearable/fd230app/nativeui/weather/src/FutureWeatherListitemView.cpp
code/sdk/application/wearable/fd230app/nativeui/weather/src/FutureWeatherView.cpp
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/WeatherControlView.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/ble_service/blemoder/bletest.h
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c

index 82c9ede..089b624 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-05-10 11:36:50\r
+ * @LastEditTime: 2024-06-15 15:19:23\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/include/FutureWeatherView.h\r
  */\r
 #ifndef FUTURE_WEATHER_VIEW_H\r
@@ -30,6 +30,7 @@ namespace OHOS
         bool InitPage(void);\r
         virtual bool InitView(void *caller) override;\r
         void AddFutureWeatherItemToList(const FutureWeather &item);\r
+        bool UpdateFutureWeatherListData(void);\r
         UIList *GetFutureWeatherList();\r
     private:\r
         void ClearAll(void);\r
index 4f84f2d..49ebb7f 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-05-10 10:49:52\r
+ * @LastEditTime: 2024-06-15 14:21:01\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/include/GetWeatherDataErrorView.h\r
  */\r
 #ifndef Get_WEATHER_DATA_ERROR_VIEW_H\r
@@ -31,7 +31,7 @@ namespace OHOS
         void ClearAll();\r
 \r
         UIScrollView *scrollView = nullptr;\r
-        UILabel *label = nullptr;\r
+        UILabelExt *label = nullptr;\r
         UIImageView *image = nullptr;\r
     };\r
 } \r
index 1e6064f..be02ce8 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-05-10 11:22:41\r
+ * @LastEditTime: 2024-06-15 16:27:21\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/include/MainWeatherView.h\r
  */\r
 #ifndef MAIN_WEATHER_VIEW_H\r
@@ -43,6 +43,7 @@ namespace OHOS
         UIView *GetWeatherPageView(void);\r
         WeatherReportView *GetWeatherReportView(void);\r
         FutureWeatherView *GetFutureWeatherView(void);\r
+        bool UpdateMainWeatherViewVisibility(void);\r
 \r
     public:\r
         void OnStart() override;\r
@@ -61,6 +62,7 @@ namespace OHOS
         UISwipeView *weatherSwipeViewList{nullptr}; // 天气滑动视图列表\r
         AppGroupView *recordCard[MAX_WEATHERVIEW]{nullptr};\r
         AppGroupView *CreatePage(int32_t WeatherPageId);\r
+        UIScrollView *weatherScrllView{nullptr};\r
     };\r
 } // namespace OHOS\r
 #endif
\ No newline at end of file
index 13bc62e..77c4f4c 100644 (file)
@@ -1,3 +1,10 @@
+/*
+ * @Author: luozheng 1732036298@qq.com
+ * @Date: 2024-01-29 15:37:44
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-06-15 15:00:16
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/include/WeatherControlView.h
+ */
 #ifndef WEATHER_CONTROL_VIEW_H
 #define WEATHER_CONTROL_VIEW_H
 /*该视图主要放在主视图*/
@@ -13,13 +20,20 @@ namespace OHOS
     public:
         WeatherControlView();
         virtual ~WeatherControlView();
+        static WeatherControlView *GetInstance(void);
         bool InitView(void);
         void PreLoad(void) override;
         void UnLoad(void) override;
+        bool UpdateWeatherControlViewVisibility();
 
     private:
         void ClearAll(void);
+        bool InitializeWeatherScrollView();
+        bool InitializeWeatherSwipeView();
+        bool CreateMainWeatherView();
         MainWeatherView *mainWeatherView{nullptr};
+        UISwipeView *weatherSwipView{nullptr};
+        UIScrollView *weatherScrllView{nullptr};
         UISwipeView::OnSwipeListener *weatherOnSwipeListener{nullptr};
         bool viewiInitStatus{false};
     };
index e2f5c0f..8c4a501 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-04-08 18:40:20
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-05-09 15:46:16
+ * @LastEditTime: 2024-06-15 17:33:03
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/include/WeatherModel.h
  */
 #ifndef WEATHER_MODEL_H
@@ -57,6 +57,9 @@ namespace OHOS
         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,int count);
+
+        void UI_UpdateMainWeatherData(void);
+        
 #if __cplusplus
     }
 #endif /* __cplusplus */
@@ -106,6 +109,8 @@ namespace OHOS
         /* -------------------------------------------------------------------------- */
         bool GetWeatherDataIsValid(void);
         void SetWeatherDataIsValid(bool value);
+        /* -------------------------------------------------------------------------- */
+        void UpdateMainWeatherData(void);
     private:
         WeatherModel();
         WeatherModel(const WeatherModel &) = delete;
index f8b5bc5..8729039 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-05-09 17:49:13\r
+ * @LastEditTime: 2024-06-15 12:11:30\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/include/WeatherReportView.h\r
  */\r
 #ifndef WEATHER_REPORT_VIEW_H\r
@@ -29,10 +29,10 @@ namespace OHOS
             int16_t top;\r
             int16_t width;\r
             int16_t height;\r
-            int16_t fontSize;      // 字体大小\r
-            int16_t lineHeigh;     // 行高\r
-            std::string text;   // 文本\r
-            uint16_t textId;      \r
+            int16_t fontSize;  // 字体大小\r
+            int16_t lineHeigh; // 行高\r
+            std::string text;  // 文本\r
+            uint16_t textId;\r
             uint8_t lineBreakMode; // 断行模式。\r
         };\r
         WeatherReportView();\r
@@ -45,7 +45,17 @@ namespace OHOS
         {\r
             return UVImageAnimatorView;\r
         }\r
+        bool UpdateWeatherReportViewData(void);\r
 \r
+    private:\r
+        bool SetTextLabel(UILabel *label, const std::string &text);\r
+        void DumpWeatherInfo(void);\r
+        bool UpdateUVData(void);\r
+        bool UpdateWindSpeedData(void);\r
+        bool UpdateHumidityData(void);\r
+        std::string UVData;        // 紫外线强度数据\r
+        std::string WindSpeedData; // 风速数据\r
+        std::string HumidityData;  // 湿度数据\r
     private:\r
         const char **CreateImagePathsArray(const char *basePath, const char *fileExtension, int numImages);\r
         void FreeImagePathsArray(const char **imagePaths, const int numImages);\r
@@ -63,7 +73,7 @@ namespace OHOS
         UIImageAnimatorView *UVImageAnimatorView{nullptr};        // 紫外线动画\r
         UIImageAnimatorView *WindSpeedImageAnimatorView{nullptr}; // 风速动画\r
         UIImageAnimatorView *HumidityImageAnimatorView{nullptr};  // 湿度动画\r
-        \r
+\r
         const char **UVPathsArray{nullptr};\r
         const char **WindSpeedPathsArray{nullptr};\r
         const char **HumidityPathsArray{nullptr};\r
index f1189dd..3c93ddf 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-06-15 11:59:38
+ * @LastEditTime: 2024-06-15 16:31:50
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/include/WeatherView.h
  */
 #ifndef WEATHER_VIEW_H
@@ -45,7 +45,6 @@ namespace OHOS
         void DumpWeatherInfo();
         bool SetImageSource(UIImageView *image, const std::string &source);
         bool SetTextLabel(UILabel *label, const std::string &text);
-        bool GetInitViewState(void);
         bool UpdateWeatherTime(void);
         bool UpdateWeatherImag(void);
         bool UpdateWeatherTemperature(void);
index 8db0ae2..f0ad458 100644 (file)
@@ -1,3 +1,10 @@
+/*
+ * @Author: luozheng 1732036298@qq.com
+ * @Date: 2024-04-15 09:25:17
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-06-15 16:41:36
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/src/FutureWeatherListAdapter.cpp
+ */
 #include "weather/include/FutureWeatherListAdapter.h"
 #include "weather/include/FutureWeatherListitemView.h"
 #include "wearable_log.h"
@@ -7,12 +14,12 @@ namespace OHOS
 
     FutureWeatherListAdapter::FutureWeatherListAdapter()
     {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FutureWeatherListAdapter::FutureWeatherListAdapter");
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FutureWeatherListAdapter::FutureWeatherListAdapter");
     }
 
     FutureWeatherListAdapter::~FutureWeatherListAdapter()
     {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FutureWeatherListAdapter::~FutureWeatherListAdapter");
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FutureWeatherListAdapter::~FutureWeatherListAdapter");
         listData.clear();
     }
 
index cb3e5d6..720cb11 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-04-15 09:25:53
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-04-15 14:58:08
+ * @LastEditTime: 2024-06-15 17:49:39
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/src/FutureWeatherListitemView.cpp
  */
 
@@ -13,7 +13,7 @@ namespace OHOS
 
     FutureWeatherListitemView::FutureWeatherListitemView()
     {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FutureWeatherListitemView::FutureWeatherListitemView");
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FutureWeatherListitemView::FutureWeatherListitemView");
         SetPosition(0, 0, 330, 85);
         SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
         SetStyle(STYLE_BACKGROUND_OPA, 255);
@@ -28,7 +28,7 @@ namespace OHOS
 
     FutureWeatherListitemView::~FutureWeatherListitemView()
     {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FutureWeatherListitemView::~FutureWeatherListitemView");
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "FutureWeatherListitemView::~FutureWeatherListitemView");
         Remove(&weatherImg);
         Remove(&dateLabel);
         Remove(&minAndmaxTemperatureLabel);
@@ -42,6 +42,7 @@ namespace OHOS
         weatherImg.SetSrc(itemInfo.iconDay.c_str());
         dateLabel.SetText(itemInfo.fxDate.c_str());
         minAndmaxTemperatureLabel.SetText(itemInfo.tempMinAndMax.c_str());
+        //WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "itemInfo.iconDay.c_str() = %s,itemInfo.fxDate.c_str() = %s,itemInfo.tempMinAndMax.c_str()", itemInfo.iconDay.c_str(), itemInfo.fxDate.c_str(),itemInfo.tempMinAndMax.c_str());
         // minTemperatureLabel.SetText(itemInfo.tempMin.c_str());
         // maxTemperatureLabel.SetText(itemInfo.tempMax.c_str());
     }
index 51f24c1..ac3989f 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-05-10 11:19:59\r
+ * @LastEditTime: 2024-06-15 17:00:27\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/src/FutureWeatherView.cpp\r
  */\r
 #include "weather/include/FutureWeatherView.h"\r
@@ -33,14 +33,13 @@ namespace OHOS
 \r
     FutureWeatherView *FutureWeatherView::GetInstance()\r
     {\r
-\r
         return g_pFutureWeatherView;\r
     }\r
 \r
     void FutureWeatherView::ClearAll()\r
     {\r
         RemoveAll();\r
-        \r
+\r
         delete Title;\r
         Title = nullptr;\r
 \r
@@ -86,10 +85,11 @@ namespace OHOS
         FutureWeatherList->SetPosition(68, 130, 330, 400);\r
         FutureWeatherList->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
         FutureWeatherList->SetThrowDrag(true);\r
-        //FutureWeatherList->SetAutoSize(true);\r
+        // FutureWeatherList->SetAutoSize(true);\r
         FutureWeatherList->SetReboundSize(30);\r
         FutureWeatherList->SetMaxScrollDistance(500);\r
-        FutureWeatherList->SetScrollBlankSize(75);\r
+        FutureWeatherList->SetScrollBlankSize(85);\r
+        WeatherModel::GetInstance().InitFutureWeatherItem();\r
         FutureWeatherList->SetAdapter(futureWeatherListAdapter);\r
         FutureWeatherList->RefreshList();\r
         FutureWeatherList->SetIntercept(true);\r
@@ -105,11 +105,9 @@ namespace OHOS
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FutureWeatherView::InitPage fail");\r
             return false;\r
         }\r
+        //UpdateFutureWeatherListData();\r
         SetDraggable(true);\r
         SetTouchable(true);\r
-        /* -------------------------------------------------------------------------- */\r
-        WeatherModel::GetInstance().InitFutureWeatherItem();\r
-        /* -------------------------------------------------------------------------- */\r
         return true;\r
     }\r
 \r
@@ -123,4 +121,20 @@ namespace OHOS
     {\r
         return FutureWeatherList;\r
     }\r
+\r
+    // 更新未来七天数据\r
+    bool FutureWeatherView::UpdateFutureWeatherListData(void)\r
+    {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FutureWeatherView::UpdateFutureWeatherListData");\r
+        if (futureWeatherListAdapter != nullptr)\r
+        {\r
+            delete futureWeatherListAdapter;\r
+            futureWeatherListAdapter = nullptr;\r
+        }\r
+        futureWeatherListAdapter = new FutureWeatherListAdapter();\r
+        WeatherModel::GetInstance().InitFutureWeatherItem();\r
+        FutureWeatherList->SetAdapter(futureWeatherListAdapter);\r
+        FutureWeatherList->RefreshList();\r
+        return true;\r
+    }\r
 }
\ No newline at end of file
index 1e36a45..015e597 100644 (file)
@@ -2,14 +2,13 @@
  * @Author: luozheng 1732036298@qq.com\r
  * @Date: 2024-01-29 15:37:44\r
  * @LastEditors: luozheng 1732036298@qq.com\r
- * @LastEditTime: 2024-05-10 10:49:39\r
+ * @LastEditTime: 2024-06-15 14:22:18\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/src/GetWeatherDataErrorView.cpp\r
  */\r
 #include "weather/include/GetWeatherDataErrorView.h"\r
 #include "wearable_log.h"\r
 #include "weather/include/MainWeatherPresenter.h"\r
 #include "language/font/ui_resource_string.h"\r
-#include "uicomponents/UIComponents.h"\r
 \r
 /* 天气获取数据失败后会调用该视图*/\r
 namespace OHOS\r
@@ -62,7 +61,7 @@ namespace OHOS
             image->SetSrc(ImgSr);\r
             scrollView->Add(image);\r
             /* -------------------------------------------------------------------------- */\r
-            label = new UILabel();\r
+            label = new UILabelExt();\r
             if (label == nullptr)\r
             {\r
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "label is new fail!!");\r
@@ -71,7 +70,7 @@ namespace OHOS
             label->SetPosition(33, 268, 400, 70);\r
             label->SetStyle(STYLE_TEXT_FONT, 30);\r
             label->SetStyle(STYLE_LINE_HEIGHT, 35);\r
-            SetLabelId(label,STR_GET_WEATHER_ERROR);\r
+            label->SetTextId(STR_GET_WEATHER_ERROR);\r
             label->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
             label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
             label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
index a882bd3..daaba8b 100644 (file)
@@ -68,7 +68,7 @@ namespace OHOS
         UNUSED(view);\r
         if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && MainWeatherPresenter::X_DRAG_FLAG)\r
         {\r
-            NativeAbility::GetInstance().Back();\r
+            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);\r
             X_DRAG_FLAG = false;\r
         }\r
         return true;\r
@@ -92,7 +92,7 @@ namespace OHOS
         // 如果是power键就返回上一级\r
         if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) && keyState == 0 && uapi_get_screen_state() == 0)\r
         {\r
-            NativeAbility::GetInstance().Back();\r
+            NativeAbility::GetInstance().Back(TransitionType::TRANSITION_BACK_TO_HEXAGONS);\r
         }\r
         return true;\r
     }\r
@@ -103,7 +103,7 @@ namespace OHOS
         // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "the view index = %d,dragging direction = %d,current tab index = %d", view.GetViewIndex(), view.GetDirection(), view.GetCurrentPage());\r
         if (view.GetCurrentPage() == WEATHERREPORTVIEW)\r
         {\r
-            MainWeatherView::GetInstance()->GetFutureWeatherView()->GetFutureWeatherList()->RefreshList();\r
+            //MainWeatherView::GetInstance()->GetFutureWeatherView()->GetFutureWeatherList()->RefreshList();\r
         }\r
     }\r
 \r
@@ -113,7 +113,7 @@ namespace OHOS
         if (view.GetCurrentPage() == MAINWEATHERVIEW)\r
         {\r
             view.SetIntercept(false);\r
-            MainWeatherView::GetInstance()->GetFutureWeatherView()->GetFutureWeatherList()->RefreshList();\r
+            //MainWeatherView::GetInstance()->GetFutureWeatherView()->GetFutureWeatherList()->RefreshList();\r
         }\r
         else\r
         {\r
index 002044d..a5a0e34 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-05-10 11:31:08\r
+ * @LastEditTime: 2024-06-15 16:32:55\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/src/MainWeatherView.cpp\r
  */\r
 #include "weather/include/MainWeatherView.h"\r
@@ -20,7 +20,6 @@ namespace OHOS
     MainWeatherView::~MainWeatherView()\r
     {\r
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainWeatherView::~MainWeatherView");\r
-        ClearAll();\r
         g_pMainWeatherView = nullptr;\r
     }\r
 \r
@@ -59,6 +58,14 @@ namespace OHOS
         }\r
     }\r
 \r
+    // 设置按键监听\r
+    static void SetKeyActListener()\r
+    {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetKeyActListener");\r
+        RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::MainWeatherPresenter::GetInstance();\r
+        RootView::GetInstance()->SetOnKeyActListener(keyactListener);\r
+    }\r
+\r
     /*\r
      * @brief 主天气页面视图初始化\r
      */\r
@@ -78,6 +85,7 @@ namespace OHOS
         weatherSwipeViewList->SetViewId(MAIN_WEATHER_VIEW);\r
         weatherSwipeViewList->SetDraggable(true);\r
         weatherSwipeViewList->SetTouchable(true);\r
+        weatherSwipeViewList->SetVisible(false);\r
         for (uint16_t i = 0; i < maxPage; i++)\r
         {\r
             recordCard[i] = CreatePage(i);\r
@@ -93,24 +101,38 @@ namespace OHOS
         return weatherSwipeViewList;\r
     }\r
 \r
-    // 获取天气页面视图\r
-    UIView *MainWeatherView::GetWeatherPageView()\r
+    bool MainWeatherView::UpdateMainWeatherViewVisibility()\r
     {\r
-        if (WeatherModel::GetInstance().GetWeatherDataIsValid()) // 如果天气数据有效\r
+        if (weatherSwipeViewList != nullptr && weatherScrllView != nullptr)\r
         {\r
-            return dynamic_cast<UIView *>(MainWeatherViewInit());\r
-        }\r
-        else\r
-        {\r
-            return dynamic_cast<UIView *>(WeatherDataErrorViewPageInit());\r
+            if (WeatherModel::GetInstance().GetWeatherDataIsValid())\r
+            {\r
+                weatherSwipeViewList->SetVisible(true);\r
+                weatherScrllView->SetVisible(false);\r
+            }\r
+            else\r
+            {\r
+                weatherScrllView->SetVisible(true);\r
+                weatherSwipeViewList->SetVisible(false);\r
+            }\r
+            container_->Invalidate();\r
+            return true;\r
         }\r
-        return nullptr;\r
+        return false;\r
     }\r
 \r
     void MainWeatherView::OnStart()\r
     {\r
         View<MainWeatherPresenter>::OnStart();\r
-        RootView::GetInstance()->Add(GetWeatherPageView());\r
+        SetContainerView(new UIViewGroup());\r
+        container_->SetDraggable(true);\r
+        container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
+        container_->SetOnDragListener(presenter_);\r
+        container_->SetTouchable(true);\r
+        container_->Add(MainWeatherViewInit());\r
+        weatherScrllView = WeatherDataErrorViewPageInit();\r
+        container_->Add(weatherScrllView);\r
+\r
         if (weatherSwipeViewList != nullptr)\r
         {\r
             UIView::OnClickListener *weatherOnClickListener = (UIView::OnClickListener *)OHOS::MainWeatherPresenter::GetInstance();\r
@@ -137,20 +159,8 @@ namespace OHOS
             weatherSwipeViewList->SetOnDragListener(weatherOnDragListener);\r
             weatherSwipeViewList->SetOnSwipeListener(weatherOnSwipeListener);\r
         }\r
-        else\r
-        {\r
-            UIView::OnDragListener *dragListener = static_cast<UIView::OnDragListener *>(MainWeatherPresenter::GetInstance());\r
-            if (dragListener == nullptr)\r
-            {\r
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dragListener is  nullptr!!");\r
-                return;\r
-            }\r
-            getWeatherDataErrorView->GetWeatherDataErrorViewInit()->SetOnDragListener(dragListener);\r
-        }\r
-        /* --------------------------------- 添加按键监听 --------------------------------- */\r
-        RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::MainWeatherPresenter::GetInstance();\r
-        RootView::GetInstance()->SetOnKeyActListener(keyactListener);\r
-        /* -------------------------------------------------------------------------- */\r
+        UpdateMainWeatherViewVisibility();\r
+        SetKeyActListener();\r
     }\r
 \r
     void MainWeatherView::OnSetUpView()\r
@@ -169,7 +179,13 @@ namespace OHOS
     {\r
         View<MainWeatherPresenter>::OnStop();\r
         RootView::GetInstance()->ClearOnKeyActListener();\r
-        RootView::GetInstance()->RemoveAll();\r
+        if (container_ != nullptr)\r
+        {\r
+            container_->RemoveAll();\r
+            delete container_;\r
+            container_ = nullptr;\r
+        }\r
+        ClearAll();\r
         return;\r
     }\r
 \r
index 987ba31..66ef3d8 100644 (file)
@@ -1,17 +1,33 @@
+/*
+ * @Author: luozheng 1732036298@qq.com
+ * @Date: 2024-01-29 15:37:44
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-06-15 15:09:37
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/src/WeatherControlView.cpp
+ */
 #include "weather/include/WeatherControlView.h"
 #include "weather/include/MainWeatherPresenter.h"
 namespace OHOS
 {
+
+    static WeatherControlView *g_pWeatherControlView{nullptr};
     WeatherControlView::WeatherControlView()
     {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherControlView::WeatherControlView");
         SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
+        g_pWeatherControlView = this;
     }
 
     WeatherControlView::~WeatherControlView()
     {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherControlView::~WeatherControlView");
         ClearAll();
+        g_pWeatherControlView = nullptr;
+    }
+
+    WeatherControlView *WeatherControlView::GetInstance(void)
+    {
+        return g_pWeatherControlView;
     }
 
     void WeatherControlView::ClearAll(void)
@@ -26,7 +42,7 @@ namespace OHOS
                     delete weatherOnSwipeListener;
                     weatherOnSwipeListener = nullptr;
                 }
-                
+
                 if (mainWeatherView != nullptr)
                 {
                     delete mainWeatherView;
@@ -36,37 +52,98 @@ namespace OHOS
         }
     }
 
-    bool WeatherControlView::InitView(void)
+    bool WeatherControlView::CreateMainWeatherView()
     {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherControlView::InitView");
+
         mainWeatherView = new MainWeatherView();
         if (mainWeatherView == nullptr)
         {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherView::new mainweatherView fail!");
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherView::new mainWeatherView fail!");
+            return false;
+        }
+
+        return true;
+    }
+
+    bool WeatherControlView::InitializeWeatherSwipeView()
+    {
+        weatherSwipView = mainWeatherView->MainWeatherViewInit();
+        if (weatherSwipView == nullptr)
+        {
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "mainWeatherView->MainWeatherViewInit() == nullptr!!");
+            return false;
+        }
+
+        weatherOnSwipeListener = static_cast<UISwipeView::OnSwipeListener *>(new WeatherControlViewOnSwipeListener());
+        if (weatherOnSwipeListener == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "weatherOnSwipeListener new fail");
+            return false;
+        }
+
+        weatherSwipView->SetOnSwipeListener(weatherOnSwipeListener);
+        weatherSwipView->SetVisible(false);
+        Add(weatherSwipView);
+
+        return true;
+    }
+
+    bool WeatherControlView::InitializeWeatherScrollView()
+    {
+        weatherScrllView = mainWeatherView->WeatherDataErrorViewPageInit();
+        if (weatherScrllView == nullptr)
+        {
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "mainWeatherView->WeatherDataErrorViewPageInit() == nullptr!!");
             return false;
         }
 
-        if (WeatherModel::GetInstance().GetWeatherDataIsValid())
+        weatherScrllView->SetVisible(true); // 默认没有天气数据
+        Add(weatherScrllView);
+
+        return true;
+    }
+
+    // 根据天气数据是否有效设置视图可见性:
+    bool WeatherControlView::UpdateWeatherControlViewVisibility()
+    {
+        if (weatherSwipView != nullptr && weatherScrllView != nullptr)
         {
-            UISwipeView *weatherSwipView = dynamic_cast<UISwipeView *>(mainWeatherView->GetWeatherPageView());
-            if (weatherSwipView == nullptr)
+            if (WeatherModel::GetInstance().GetWeatherDataIsValid())
             {
-                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "mainWeatherView->MainWeatherViewInit() == nullptr!!");
-                return false;
+                weatherSwipView->SetVisible(true);
+                weatherScrllView->SetVisible(false);
             }
-            weatherOnSwipeListener = static_cast<UISwipeView::OnSwipeListener *>(new WeatherControlViewOnSwipeListener());
-            if (weatherOnSwipeListener == nullptr)
+            else
             {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "weatherOnSwipeListener new fail");
-                return false;
+                weatherScrllView->SetVisible(true);
+                weatherSwipView->SetVisible(false);
             }
-            weatherSwipView->SetOnSwipeListener(weatherOnSwipeListener);
-            Add(weatherSwipView);
+            Invalidate();
+            return true;
         }
-        else
+        return false;
+    }
+
+    bool WeatherControlView::InitView()
+    {
+        if (!CreateMainWeatherView())
         {
-            Add(mainWeatherView->GetWeatherPageView());
+            return false;
+        }
+
+        if (!InitializeWeatherSwipeView())
+        {
+            return false;
         }
+
+        if (!InitializeWeatherScrollView())
+        {
+            return false;
+        }
+
+        UpdateWeatherControlViewVisibility();
+
         return true;
     }
 
index 83efef5..142ddda 100644 (file)
@@ -2,11 +2,12 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-04-08 18:40:09
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-06-15 11:54:18
+ * @LastEditTime: 2024-06-15 17:50:19
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/src/WeatherModel.cpp
  */
 #include "weather/include/WeatherModel.h"
 #include "weather/include/MainWeatherView.h"
+#include "weather/include/WeatherControlView.h"
 
 namespace OHOS
 {
@@ -17,7 +18,7 @@ namespace OHOS
         static Weather_data Weather_data_t_now;
         static Weather_data_address Weather_data_t_address;
         static ONE_DAY_DATA Weather_data_seven_data[7];
-        uint8_t  Weather_data_seven_count=0;
+        uint8_t Weather_data_seven_count = 0;
 
         /*
          * @brief 设置当前天气数据
@@ -65,13 +66,14 @@ namespace OHOS
         /*
          * @brief 设置七天天气数据
          */
-        void UI_set_weather_seven_day_data(struct ONE_DAY_DATA t,int count)
+        void UI_set_weather_seven_day_data(struct ONE_DAY_DATA t, int count)
         {
-            if(count=0)
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Weather_data_seven_count = %d", count);
+            if (count == 0)
             {
-                Weather_data_seven_count=0;
+                Weather_data_seven_count = 0;
             }
-            if(count>=7)
+            if (count >= 7)
             {
                 return;
             }
@@ -82,9 +84,14 @@ namespace OHOS
             Weather_data_seven_data[count].fxDate = t.fxDate;
             memset((void *)Weather_data_seven_data[count].textDay, 0, 16);
             strcpy(Weather_data_seven_data[count].textDay, t.textDay);
-            
+
             Weather_data_seven_count++;
-           
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Weather_data_seven_count = %d", Weather_data_seven_count);
+        }
+
+        void UI_UpdateMainWeatherData(void)
+        {
+            WeatherModel::GetInstance().UpdateMainWeatherData();
         }
 
 #if __cplusplus
@@ -115,6 +122,7 @@ namespace OHOS
             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainWeatherView::GetInstance fail!!");
             return;
         }
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Weather_data_seven_count = %d", Weather_data_seven_count);
         for (uint8_t i = 0; i < Weather_data_seven_count; i++)
         {
             FutureWeatherItem[i].iconDay = GetWeather_data_seven_data_iconDay(i);
@@ -139,7 +147,7 @@ namespace OHOS
     std::string WeatherModel::GetWeatherImage()
     {
         int index = Weather_data_t_now.iconNight;
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "iconNight:%d", index);
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "iconNight:%d", index);
         return weather65x65[index];
     }
 
@@ -178,14 +186,14 @@ namespace OHOS
     std::string WeatherModel::GetWeather_data_seven_data_iconDay(int date)
     {
         int index = Weather_data_seven_data[date].iconDay;
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Weather_data_seven_data[%d].iconDay = %d", date, index);
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Weather_data_seven_data[%d].iconDay = %d", date, index);
         return weather65x65[index];
     }
 
     /*获取未来七天某一天白天天气文本*/
     std::string WeatherModel::GetWeather_data_seven_data_textDay(int date)
     {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Weather_data_seven_data[%d].textDay = %s", date, Weather_data_seven_data[date].textDay);
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Weather_data_seven_data[%d].textDay = %s", date, Weather_data_seven_data[date].textDay);
         return Weather_data_seven_data[date].textDay;
     }
 
@@ -194,7 +202,7 @@ namespace OHOS
     {
         static char formattedDate[6]; // 5字符加上终结符'\0'
         TimestampToMonthDayString(Weather_data_seven_data[date].fxDate, formattedDate);
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Weather_data_seven_data[%d].fxDate = %s", date, formattedDate);
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Weather_data_seven_data[%d].fxDate = %s", date, formattedDate);
         return formattedDate;
     }
 
@@ -204,7 +212,7 @@ namespace OHOS
         int maxTemp = Weather_data_seven_data[date].tempMax;
         int minTemp = Weather_data_seven_data[date].tempMin;
         std::string maxandminTemperature = (std::to_string(minTemp) + "°") + "/" + std::to_string(maxTemp) + "°";
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "maxandminTemperature = %s", maxandminTemperature.c_str());
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "maxandminTemperature = %s", maxandminTemperature.c_str());
         return maxandminTemperature;
     }
 
@@ -213,7 +221,7 @@ namespace OHOS
     {
         int minTemp = Weather_data_seven_data[date].tempMin;
         std::string minTemperature = std::to_string(minTemp) + "°";
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Weather_data_seven_data[%d].tempMin = %s", date, minTemperature.c_str());
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Weather_data_seven_data[%d].tempMin = %s", date, minTemperature.c_str());
         return minTemperature;
     }
 
@@ -222,7 +230,7 @@ namespace OHOS
     {
         int maxTemp = Weather_data_seven_data[date].tempMax;
         std::string maxTemperature = "/" + std::to_string(maxTemp) + "°";
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " Weather_data_seven_data[%d].tempMax = %s", date, maxTemperature.c_str());
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " Weather_data_seven_data[%d].tempMax = %s", date, maxTemperature.c_str());
         return maxTemperature;
     }
 
@@ -232,7 +240,7 @@ namespace OHOS
     std::string WeatherModel::GetHumidity()
     {
         std::string humidity = std::to_string(Weather_data_t_now.humidity) + "%";
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "humidity:%s", humidity.c_str());
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "humidity:%s", humidity.c_str());
         return humidity;
     }
 
@@ -240,7 +248,7 @@ namespace OHOS
     std::string WeatherModel::GetWindScale()
     {
         std::string windScale = Weather_data_t_now.windScale;
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "windScale:%s", windScale.c_str());
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "windScale:%s", windScale.c_str());
         return windScale;
     }
 
@@ -248,7 +256,7 @@ namespace OHOS
     std::string WeatherModel::GetUVIndex()
     {
         std::string uvIndex = std::to_string(Weather_data_t_now.uvIndex);
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "uvIndex:%s", uvIndex.c_str());
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "uvIndex:%s", uvIndex.c_str());
         return uvIndex;
     }
 
@@ -263,4 +271,28 @@ namespace OHOS
     {
         return WEATHER_DATA_VALID;
     }
+
+    // 更新所有天气数据
+    void WeatherModel::UpdateMainWeatherData(void)
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "UpdateMainWeatherData");
+
+        MainWeatherView *p_MainWeatherView = MainWeatherView::GetInstance();
+        if (p_MainWeatherView != nullptr)
+        {
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "p_MainWeatherView");
+            p_MainWeatherView->GetWeatherView()->UpdateWeatherViewData();
+            p_MainWeatherView->GetWeatherReportView()->UpdateWeatherReportViewData();
+            p_MainWeatherView->GetFutureWeatherView()->UpdateFutureWeatherListData();
+
+            p_MainWeatherView->UpdateMainWeatherViewVisibility();
+        }
+
+        WeatherControlView *p_WeatherControlView = WeatherControlView::GetInstance();
+        if (p_WeatherControlView != nullptr)
+        {
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "p_WeatherControlView");
+            p_WeatherControlView->UpdateWeatherControlViewVisibility();
+        }
+    }
 }
\ No newline at end of file
index a697409..14befa4 100644 (file)
@@ -31,6 +31,11 @@ namespace OHOS
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " WeatherReportView::WeatherReportView");\r
         SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
         SetViewIndex(1);\r
+        WeatherModel *p_WeatherModel = &WeatherModel::GetInstance();\r
+        UVData = p_WeatherModel->GetUVIndex();          // 紫外线强度数据\r
+        WindSpeedData = p_WeatherModel->GetWindScale(); // 风速数据\r
+        HumidityData = p_WeatherModel->GetHumidity();   // 湿度数据\r
+\r
         g_pWeatherReportView = this;\r
     }\r
 \r
@@ -146,7 +151,6 @@ namespace OHOS
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherReportView::title new fail!");\r
             return false;\r
         }\r
-        WeatherModel *p_WeatherModel = &WeatherModel::GetInstance();\r
         /* -------------------------------------------------------------------------- */\r
         labelconfig = {\r
             .left = 23,\r
@@ -155,7 +159,7 @@ namespace OHOS
             .height = 50,\r
             .fontSize = 40,\r
             .lineHeigh = 50,\r
-            .text = p_WeatherModel->GetUVIndex(), //紫外线强度\r
+            .text = UVData.c_str(), // 紫外线强度\r
             .lineBreakMode = UILabel::LINE_BREAK_ELLIPSIS,\r
         };\r
         UV_Number = SetUpLabel(labelconfig);\r
@@ -166,7 +170,7 @@ namespace OHOS
         }\r
 \r
         labelconfig.left = 173;\r
-        labelconfig.text = p_WeatherModel->GetWindScale();//风速\r
+        labelconfig.text = WindSpeedData.c_str(); // 风速\r
         WindSpeed_Number = SetUpLabel(labelconfig);\r
         if (WindSpeed_Number == nullptr)\r
         {\r
@@ -175,7 +179,7 @@ namespace OHOS
         }\r
 \r
         labelconfig.left = 323;\r
-        labelconfig.text = p_WeatherModel->GetHumidity().c_str(); //湿度\r
+        labelconfig.text = HumidityData.c_str(); // 湿度\r
         Humidity_Number = SetUpLabel(labelconfig);\r
         if (Humidity_Number == nullptr)\r
         {\r
@@ -204,7 +208,7 @@ namespace OHOS
         UV->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff));\r
 \r
         labelconfig.left = 173;\r
-        //labelconfig.text = "风速";\r
+        // labelconfig.text = "风速";\r
         labelconfig.textId = STR_WIND_SPEED;\r
         WindSpeed = SetUpLabelExt(labelconfig);\r
         if (WindSpeed == nullptr)\r
@@ -215,7 +219,7 @@ namespace OHOS
         WindSpeed->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff));\r
 \r
         labelconfig.left = 323;\r
-        //labelconfig.text = "湿度";\r
+        // labelconfig.text = "湿度";\r
         labelconfig.textId = STR_HUMIDITY;\r
         Humidity = SetUpLabelExt(labelconfig);\r
         if (Humidity == nullptr)\r
@@ -329,13 +333,9 @@ namespace OHOS
     bool WeatherReportView::InitPage(void)\r
     {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherReportView::InitPage");\r
-        if (!WeatherReportViewLabelInit())\r
-        {\r
-            return false;\r
-        }\r
-\r
-        if (!WeatherReportViewImageAnimatorViewInit())\r
+        if (!WeatherReportViewLabelInit() || !WeatherReportViewImageAnimatorViewInit())\r
         {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherReportView::InitPage fail!!");\r
             return false;\r
         }\r
 \r
@@ -351,6 +351,7 @@ namespace OHOS
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherReportView::InitPage fail");\r
             return false;\r
         }\r
+        UpdateWeatherReportViewData();\r
         SetDraggable(true);\r
         SetTouchable(true);\r
         return true;\r
@@ -383,4 +384,71 @@ namespace OHOS
         }\r
     }\r
 \r
+    // 设置文本标签的通用函数\r
+    bool WeatherReportView::SetTextLabel(UILabel *label, const std::string &text)\r
+    {\r
+        if (label)\r
+        {\r
+            label->SetText(text.c_str());\r
+            label->Invalidate();\r
+            return true;\r
+        }\r
+        return false;\r
+    }\r
+\r
+    void WeatherReportView::DumpWeatherInfo(void)\r
+    {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherView::DumpWeatherInfo");\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UVData:%s", UVData.c_str());\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WindSpeedData:%s", WindSpeedData.c_str());\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HumidityData:%s", HumidityData.c_str());\r
+    }\r
+\r
+    // 更新紫外线数据\r
+    bool WeatherReportView::UpdateUVData(void)\r
+    {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherView::UpdateUVData");\r
+\r
+        std::string uv = WeatherModel::GetInstance().GetUVIndex();\r
+\r
+        return SetTextLabel(UV_Number, uv);\r
+    }\r
+\r
+    // 更新风速数据\r
+    bool WeatherReportView::UpdateWindSpeedData(void)\r
+    {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherView::UpdateWindSpeedData");\r
+\r
+        std::string windscale = WeatherModel::GetInstance().GetWindScale();\r
+\r
+        return SetTextLabel(WindSpeed_Number, windscale);\r
+        return true;\r
+    }\r
+\r
+    // 更新湿度数据\r
+    bool WeatherReportView::UpdateHumidityData(void)\r
+    {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherView::UpdateHumidityData");\r
+\r
+        std::string humidity = WeatherModel::GetInstance().GetHumidity();\r
+\r
+        return SetTextLabel(Humidity_Number, humidity);\r
+    }\r
+\r
+    // 更新气象报告数据\r
+    bool WeatherReportView::UpdateWeatherReportViewData(void)\r
+    {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherView::UpdateWeatherReportViewData");\r
+        bool success = true;\r
+        success &= UpdateUVData();\r
+        success &= UpdateWindSpeedData();\r
+        success &= UpdateHumidityData();\r
+        if (!success)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherView::UpdateWeatherViewData fail!!");\r
+        }\r
+        //DumpWeatherInfo();\r
+        return true;\r
+    }\r
+\r
 }
\ No newline at end of file
index be8f5fb..5c0f6e1 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-06-15 11:57:39
+ * @LastEditTime: 2024-06-15 16:31:45
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/src/WeatherView.cpp
  */
 #include "weather/include/WeatherView.h"
@@ -82,9 +82,17 @@ namespace OHOS
     static WeatherView *g_pWeatherView{nullptr};
     WeatherView::WeatherView()
     {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherView::WeatherView");
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherView::WeatherView");
         SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
         SetViewIndex(0); // 视图索引
+
+        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;
     }
 
@@ -151,7 +159,6 @@ namespace OHOS
         return g_pWeatherView;
     }
 
-    // 初始化标签
     UILabelExt *WeatherView::InitLabelExt(int x, int y, int w, int h, const char *text, int textfont, int lineheight)
     {
         UILabelExt *label = new UILabelExt();
@@ -169,7 +176,6 @@ namespace OHOS
         return label;
     }
 
-    // 初始化天气页面
     bool WeatherView::InitPage(void)
     {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " WeatherView::InitPage");
@@ -288,12 +294,6 @@ namespace OHOS
         return true;
     }
 
-    // 获取视图初始化状态
-    bool WeatherView::GetInitViewState(void)
-    {
-        return viewInitStatus;
-    }
-
     const char **WeatherView::CreateImagePathsArray(const char *basePath, const char *fileExtension, int numImages)
     {
         const char **imagePaths = new const char *[numImages];
@@ -348,7 +348,7 @@ namespace OHOS
     void WeatherView::DumpWeatherInfo()
     {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherView::DumpWeatherInfo");
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherTime:", WeatherTime.c_str());
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherTime:%s", WeatherTime.c_str());
         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());
@@ -441,7 +441,7 @@ namespace OHOS
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherView::UpdateWeatherViewData fail!!");
         }
 
-        DumpWeatherInfo(); // 输出天气信息到日志
+        //DumpWeatherInfo(); // 输出天气信息到日志
 
         return success;
     }
index 681e6f2..3c6fd9e 100644 (file)
@@ -880,6 +880,11 @@ void set_weather_one_data(int tempMin, int iconDay,int fxDate, int tempMax, char
 
 }
 #endif
+
+void  ble_UpdateMainWeatherData(void)
+{
+   return  OHOS::UI_UpdateMainWeatherData();
+}
 message_infor_t message_infor_s;
 void read_message_data(void)
 {
index a3c54dd..af1fe85 100644 (file)
@@ -108,7 +108,8 @@ struct message_infor_t *get_message_info(void);
 void set_weather_now_data(int humidity, char* windScale, char* textNight,int uvIndex,int temp,int iconNight);
 
 void set_weather_address_data(int lat, char* atm, char* city,char* subLocality,int lon);
-void set_weather_one_data(int tempMin, int iconDay,int fxDate, int tempMax, char *textDay,int count);
+void set_weather_one_data(int tempMin, int iconDay,int fxDate, int tempMax, char *textDay,int count) ;
+void ble_UpdateMainWeatherData(void);
 
 uint8_t ble_is_ready(void);
 void set_ble_falg(bool falg);
index b060ea2..bc9e427 100644 (file)
@@ -1945,6 +1945,7 @@ uint8_t jsonCheck_weather(uint8_t *buf,uint8_t *check)//json 格式解析 天气
         set_weather_one_data(tempMin,iconDay,fxDate,tempMax,textDay,i);\r
 \r
     }\r
+    ble_UpdateMainWeatherData();\r
     cJSON_Delete(root);\r
     *check = 1;\r
     return 1;\r