天气视图修改,未来天气需要修改为list还需优化
authorluozheng <1732036298@qq.com>
Sat, 13 Apr 2024 09:31:34 +0000 (17:31 +0800)
committerluozheng <1732036298@qq.com>
Sat, 13 Apr 2024 09:31:34 +0000 (17:31 +0800)
15 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/FutureWeatherPresenter.h [deleted file]
code/sdk/application/wearable/fd230app/nativeui/weather/include/FutureWeatherView.h
code/sdk/application/wearable/fd230app/nativeui/weather/include/MainWeatherPresenter.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/src/FutureWeatherPresenter.cpp [deleted file]
code/sdk/application/wearable/fd230app/nativeui/weather/src/FutureWeatherView.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/WeatherView.cpp

index b2c5047..8ad5aaf 100644 (file)
@@ -329,7 +329,6 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/weather/src/MainWeatherPresenter.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/weather/src/MainWeatherView.cpp
     ${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/GetWeatherDataErrorView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/weather/src/WeatherControlView.cpp
index 53d0e82..7643650 100644 (file)
@@ -43,7 +43,6 @@ typedef enum : uint16_t
     VIEW_INDOORWALK,              // 室内步行
     VIEW_SHUTDOWN_OR_REBOOT,      // 关机或重启界面
     VIEW_WEATHER,                 // 天气
-    VIEW_FUTURE_WEATHER,          // 未来天气
     VIEW_SYSTEM,                  // 系统
     VIEW_SOUND_VIBRATION,         // 声音与震动
     VIEW_SYSTEM_VOLUME,           // 系统音量
index 80e354d..57e306b 100644 (file)
@@ -40,7 +40,6 @@ namespace OHOS
         void InitRecordingSlice(void);
         /* -------------------------------------------------------------------------- */
         void InitWeatherSlice(void);
-        void InitFutureWeatherSlice(void);
         void InitSystemSlice(void);
         void InitSoundAndVibrationSlice(void);
         void InitSystemVolumeSlice(void);
index a7852c0..d2fdb43 100644 (file)
@@ -68,8 +68,6 @@
 
 #include "weather/include/MainWeatherPresenter.h"
 #include "weather/include/MainWeatherView.h"
-#include "weather/include/FutureWeatherPresenter.h"
-#include "weather/include/FutureWeatherView.h"
 
 #include "system/include/SystemPresenter.h"
 #include "system/include/SystemView.h"
@@ -259,7 +257,6 @@ namespace OHOS
         {VIEW_INDOORWALK, &NativeLauncher::InitIndoorWalkSlice},
         {VIEW_SHUTDOWN_OR_REBOOT, &NativeLauncher::InitRebootSlice},
         {VIEW_WEATHER, &NativeLauncher::InitWeatherSlice},                            // 天气
-        {VIEW_FUTURE_WEATHER, &NativeLauncher::InitFutureWeatherSlice},               // 未来天气
         {VIEW_SYSTEM, &NativeLauncher::InitSystemSlice},                              // 系统实例化地址
         {VIEW_SOUND_VIBRATION, &NativeLauncher::InitSoundAndVibrationSlice},          // 声音与震动实例化地址
         {VIEW_SYSTEM_VOLUME, &NativeLauncher::InitSystemVolumeSlice},                 // 系统音量
@@ -664,19 +661,6 @@ namespace OHOS
         NativeAbility::GetInstance().AddSliceProxy(VIEW_WEATHER, mainweather);
     }
 
-    void NativeLauncher::InitFutureWeatherSlice(void) // 未来天气
-    {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitFutureWeatherSlice");
-        SliceProxy *futureweather = new AbilitySliceProxy<FutureWeatherView, FutureWeatherPresenter>;
-        if (futureweather == nullptr)
-        {
-            return;
-        }
-        NativeAbility::GetInstance().AddSliceProxy(VIEW_FUTURE_WEATHER, futureweather);
-    }
-
-    
-
     void NativeLauncher::InitSystemSlice(void) // 系统
     {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitSystemSlice");
diff --git a/code/sdk/application/wearable/fd230app/nativeui/weather/include/FutureWeatherPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/weather/include/FutureWeatherPresenter.h
deleted file mode 100644 (file)
index 6451306..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-#ifndef FUTURE_WEATHER_PRESENTER_H\r
-#define FUTURE_WEATHER_PRESENTER_H\r
-\r
-#include "Presenter.h"\r
-\r
-#include "FutureWeatherView.h"\r
-\r
-namespace OHOS\r
-{\r
-    class FutureWeatherView;\r
-\r
-    class FutureWeatherPresenter : public Presenter<FutureWeatherView>,\r
-                                   public UIView::OnClickListener,\r
-                                   public UIView::OnDragListener\r
-    {\r
-    public:\r
-        FutureWeatherPresenter();\r
-        virtual ~FutureWeatherPresenter();\r
-\r
-        void OnStart() override;\r
-        void OnPause() override;\r
-        void OnResume() override;\r
-        void OnStop() override;\r
-\r
-        static FutureWeatherPresenter *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 // FutureWeather_PRESENTER_H
\ No newline at end of file
index 8a6aca6..cdc5ee1 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-13 16:18:25\r
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/include/FutureWeatherView.h\r
+ */\r
 #ifndef FUTURE_WEATHER_VIEW_H\r
 #define FUTURE_WEATHER_VIEW_H\r
 \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_list.h"\r
 #include "components/icon_adapter.h"\r
+#include "AppGroupView.h"\r
 \r
 namespace OHOS\r
 {\r
-#define weather_src "/user/res/weather/"\r
-static const char *weather65x65[] =\r
-{\r
-weather_src"weather_sunny.bin",          //晴天\r
-weather_src"weather_clear-cloudy.bin",   //多云\r
-weather_src"weather_rain.bin",           //阵雨\r
-weather_src"weather_thundershower.bin",\r
-weather_src"weather_foggy.bin",\r
-weather_src"weather_unknown.bin",\r
-weather_src"weather_overcast.bin",\r
-weather_src"weather_clear-sunny.bin",\r
-weather_src"weather_duststorm.bin",\r
-weather_src"weather_haze.bin",\r
-weather_src"weather_snow.bin",\r
-weather_src"weather_sunny-cloudy.bin",        \r
-};\r
-\r
-\r
-}\r
-\r
-namespace OHOS\r
-{\r
-    class FutureWeatherPresenter;\r
-    class FutureWeatherView : public View<FutureWeatherPresenter>\r
+#define weather_src "/user/res/weather/weather65x65/"\r
+    static const char *weather65x65[] =\r
+        {\r
+            weather_src "weather_sunny.bin",        // 晴天\r
+            weather_src "weather_clear-cloudy.bin", // 多云\r
+            weather_src "weather_rain.bin",         // 阵雨\r
+            weather_src "weather_thundershower.bin",\r
+            weather_src "weather_foggy.bin",\r
+            weather_src "weather_unknown.bin",\r
+            weather_src "weather_overcast.bin",\r
+            weather_src "weather_clear-sunny.bin",\r
+            weather_src "weather_duststorm.bin",\r
+            weather_src "weather_haze.bin",\r
+            weather_src "weather_snow.bin",\r
+            weather_src "weather_sunny-cloudy.bin",\r
+    };\r
+    class FutureWeatherView : public AppGroupView\r
     {\r
 \r
     public:\r
         FutureWeatherView();\r
         virtual ~FutureWeatherView();\r
         static FutureWeatherView *GetInstance(void);\r
-\r
-        void OnStart() override;\r
-        void OnSetUpView() override;\r
-        void OnTearDownView() override;\r
-        void OnStop() override;\r
+        bool InitPage(void);\r
+        virtual bool InitView(void *caller) override;\r
 \r
     private:\r
-        void InitView(void);\r
-        void DeInitView(void);\r
-        void PreLoad(void);\r
-\r
-    private:\r
-        UIView::OnDragListener *draglistener{nullptr};\r
-        UIViewGroup *container_ = nullptr;\r
-        UIScrollView *scrollView1_ = nullptr;\r
-        UILabel *label1_ = nullptr;\r
-        UIList *list = nullptr;\r
-        IconAdapter *listadapter = nullptr;\r
-        List<IconItemNode *> *listdata = nullptr;\r
-        bool viewInitStatus{false};\r
+        void ClearAll(void);\r
+        UIViewGroup *container = nullptr;\r
+        UIScrollView *scrollView{nullptr};\r
+        UILabelExt *Title = nullptr;\r
+        UIImageView *weatherImg[7]{nullptr};\r
+        UILabel *dateLabel[7]{nullptr};\r
+        UILabel *maxandminTemperatureLabel[7]{nullptr};\r
     };\r
-} // namespace OHOS\r
-#endif // FutureWeather_PRESENTER_H
\ No newline at end of file
+}\r
+#endif
\ No newline at end of file
index 09a8021..1950dbd 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-04-11 17:00:59\r
+ * @LastEditTime: 2024-04-13 10:09:34\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/include/MainWeatherPresenter.h\r
  */\r
 #ifndef MAIN_WEATHER_PRESENTER_H\r
@@ -11,6 +11,7 @@
 #include "Presenter.h"\r
 #include "View.h"\r
 #include "MainWeatherView.h"\r
+#include "weather/include/WeatherModel.h"\r
 /*主天气视图*/\r
 namespace OHOS\r
 {\r
@@ -48,6 +49,8 @@ namespace OHOS
         bool OnDragEnd(UIView &view, const DragEvent &event) override;\r
         bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件\r
         void OnSwipe(UISwipeView &view) override;\r
+\r
+        WeatherModel *weatherModel{nullptr};\r
     };\r
 } // namespace OHOS\r
 \r
index ecff301..04c1807 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-04-12 19:45:12\r
+ * @LastEditTime: 2024-04-13 10:04:53\r
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/include/MainWeatherView.h\r
  */\r
 #ifndef MAIN_WEATHER_VIEW_H\r
 #include "weather/include/WeatherView.h"\r
 #include "weather/include/WeatherReportView.h"\r
 #include "weather/include/GetWeatherDataErrorView.h"\r
+#include "weather/include/FutureWeatherView.h"\r
 namespace OHOS\r
 {\r
     typedef enum\r
     {\r
         MAINWEATHERVIEW = 0, // 主天气视图\r
         WEATHERREPORTVIEW,   // 气象报告视图\r
-        // FUTUREWEATHERVIEW,   // 未来七天天气视图\r
+        FUTUREWEATHERVIEW,   // 未来七天天气视图\r
         MAX_WEATHERVIEW,\r
     } WeatherPageId;\r
     class MainWeatherPresenter;\r
@@ -36,8 +37,10 @@ namespace OHOS
         void ClearAll(void);\r
         AppGroupView *WeatherViewPageInit(void);\r
         AppGroupView *WeatherReportViewPageInit(void);\r
-        WeatherView * GetWeatherView(void);\r
+        AppGroupView *FutureWeatherViewPageInit(void);\r
+        WeatherView *GetWeatherView(void);\r
         WeatherReportView *GetWeatherReportView(void);\r
+        FutureWeatherView *GetFutureWeatherView(void);\r
 \r
     public:\r
         void OnStart() override;\r
@@ -48,7 +51,8 @@ namespace OHOS
     private:\r
         WeatherView *weatherView{nullptr};\r
         WeatherReportView *weatherReportView{nullptr};\r
-        GetWeatherDataErrorView *g_GetWeatherDataErrorView{nullptr};\r
+        FutureWeatherView *futureWeatherView{nullptr};\r
+        GetWeatherDataErrorView *getWeatherDataErrorView{nullptr};\r
     private:\r
         int16_t maxPage = MAX_WEATHERVIEW;\r
         UISwipeView *weatherSwipeViewList{nullptr}; // 天气滑动视图列表\r
index dcecff4..4e1a2a1 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-04-12 18:57:44
+ * @LastEditTime: 2024-04-13 16:53:26
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/include/WeatherModel.h
  */
 #ifndef WEATHER_MODEL_H
@@ -10,6 +10,8 @@
 
 #include "wearable_log.h"
 #include "iostream"
+#include <time.h>
+
 namespace OHOS
 {
 #if __cplusplus
@@ -81,13 +83,17 @@ namespace OHOS
     {
     public:
         static WeatherModel &GetInstance(void);
-
+        void TimestampToMonthDayString(time_t timestamp, char *buffer);
         std::string GetWeatherImage();
         std::string GetWeatherTemperature();
         std::string GetWeatherDescription();
         std::string GetWeatherArea();
         std::string GetWeatherMaxAndMinTemperature();
-
+        /* -------------------------------------------------------------------------- */
+        int GetWeather_data_seven_data_iconDay(int date);
+        std::string GetWeather_data_seven_data_textDay(int date);
+        std::string GetWeather_data_seven_data_fxDate(int date);
+        std::string GetWeather_data_seven_data_tempMinAndtempMax(int date);
     private:
         WeatherModel();
         WeatherModel(const WeatherModel &) = delete;
diff --git a/code/sdk/application/wearable/fd230app/nativeui/weather/src/FutureWeatherPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/weather/src/FutureWeatherPresenter.cpp
deleted file mode 100644 (file)
index cddd76b..0000000
+++ /dev/null
@@ -1,74 +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
-\r
-#include "weather/include/FutureWeatherPresenter.h"\r
-\r
-namespace OHOS\r
-{\r
-\r
-    // 当前Presenter属性实例化的内存指针\r
-    static FutureWeatherPresenter *g_pFutureWeatherPresenter = nullptr;\r
-\r
-    FutureWeatherPresenter::FutureWeatherPresenter()\r
-    {\r
-\r
-        g_pFutureWeatherPresenter = this;\r
-    }\r
-\r
-    FutureWeatherPresenter::~FutureWeatherPresenter()\r
-    {\r
-\r
-        g_pFutureWeatherPresenter = nullptr;\r
-    }\r
-\r
-    FutureWeatherPresenter *FutureWeatherPresenter::GetInstance()\r
-    {\r
-\r
-        return g_pFutureWeatherPresenter;\r
-    }\r
-\r
-    void FutureWeatherPresenter::OnStart()\r
-    {\r
-\r
-        Presenter<FutureWeatherView>::OnStart();\r
-    }\r
-\r
-    void FutureWeatherPresenter::OnPause(void)\r
-    {\r
-\r
-        Presenter<FutureWeatherView>::OnPause();\r
-    }\r
-\r
-    void FutureWeatherPresenter::OnResume(void)\r
-    {\r
-\r
-        Presenter<FutureWeatherView>::OnResume();\r
-    }\r
-\r
-    void FutureWeatherPresenter::OnStop(void)\r
-    {\r
-\r
-        Presenter<FutureWeatherView>::OnStop();\r
-    }\r
-\r
-    bool FutureWeatherPresenter::OnDrag(UIView &view, const DragEvent &event)\r
-    {\r
-\r
-        if (event.GetDragDirection() == DragEvent::DIRECTION_TOP_TO_BOTTOM &&\r
-            (event.GetDeltaY() > 20) && (event.GetDeltaY() > (2 * MATH_ABS(event.GetDeltaX()))))\r
-        {\r
-            //NativeAbility::GetInstance().ChangeSlice(VIEW_WEATHER_REPORT); // 未来天气界面从上往下滑进入气象报告界面\r
-        }\r
-        return true;\r
-    }\r
-\r
-    bool FutureWeatherPresenter::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 093399a..7539595 100644 (file)
@@ -1,9 +1,6 @@
 #include "weather/include/FutureWeatherView.h"\r
-#include "weather/include/FutureWeatherPresenter.h"\r
-\r
-#include "common/image_cache_manager.h"\r
-#include "UiConfig.h"\r
-#include "ui_resource_image.h"\r
+#include "wearable_log.h"\r
+#include "weather/include/WeatherModel.h"\r
 \r
 namespace OHOS\r
 {\r
@@ -12,13 +9,14 @@ namespace OHOS
 \r
     FutureWeatherView::FutureWeatherView()\r
     {\r
-\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FutureWeatherView::FutureWeatherView");\r
         g_pFutureWeatherView = this;\r
     }\r
 \r
     FutureWeatherView::~FutureWeatherView()\r
     {\r
-        DeInitView();\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FutureWeatherView::~FutureWeatherView");\r
+        ClearAll();\r
         g_pFutureWeatherView = nullptr;\r
     }\r
 \r
@@ -28,173 +26,135 @@ namespace OHOS
         return g_pFutureWeatherView;\r
     }\r
 \r
-    void FutureWeatherView::InitView()\r
-    {\r
-        if (scrollView1_ == nullptr)\r
-        {\r
-            scrollView1_ = new UIScrollView();\r
-        }\r
-        scrollView1_->SetPosition(0, 0);        // widget's left position and top position\r
-        scrollView1_->Resize(466, 466);         // widget's width and height\r
-        scrollView1_->SetViewId("scrollView1"); // Set style\r
-        scrollView1_->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
-        scrollView1_->SetReboundSize(50); // 设置回弹大小\r
-        scrollView1_->SetScrollBarCenter({200, 200});\r
-        container_->Add(scrollView1_);\r
-        scrollView1_->SetVisible(true);\r
-\r
-        if (label1_ == nullptr)\r
-        {\r
-            label1_ = new UILabel();\r
-        }\r
-        label1_->SetPosition(179, 52);\r
-        label1_->Resize(108, 35);\r
-        label1_->SetViewId("label1");\r
-        label1_->SetStyle(STYLE_TEXT_FONT, 30);\r
-        label1_->SetStyle(STYLE_LINE_HEIGHT, 35);\r
-        label1_->SetText("未来7天");\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
-        scrollView1_->Add(label1_);\r
-        label1_->SetVisible(true);\r
-\r
-        if (list == nullptr)\r
-        {\r
-            list = new UIList();\r
-        }\r
-        list->SetPosition(65, 140);\r
-        list->Resize(354, 520);\r
-        list->SetViewId("list1");\r
-        list->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
-        list->SetReboundSize(50); // 设置回弹值\r
-        if (listdata == nullptr)\r
-        {\r
-            listdata = new List<IconItemNode *>();\r
-        }\r
-        IconItemNode *list3data1 = new IconItemNode();\r
-        list3data1->imagePath = "/user/res/weather/weather_sunny.bin";\r
-        list3data1->txt = "周一  晴天  18°/24°";\r
-        listdata->PushBack(list3data1);\r
-\r
-        IconItemNode *list3data2 = new IconItemNode();\r
-        list3data2->imagePath = "/user/res/weather/weather_clear-cloudy.bin";\r
-        list3data2->txt = "周二  多云  19°/24°";\r
-        listdata->PushBack(list3data2);\r
-\r
-        IconItemNode *list3data3 = new IconItemNode();\r
-        list3data3->imagePath = "/user/res/weather/weather_rain.bin";\r
-        list3data3->txt = "  周三  阵雨  -11°/-12°";\r
-        listdata->PushBack(list3data3);\r
-\r
-        IconItemNode *list3data4 = new IconItemNode();\r
-        list3data4->imagePath = "/user/res/weather/weather_sunny.bin";\r
-        list3data4->txt = "周四  晴天  18°/22°";\r
-        listdata->PushBack(list3data4);\r
-\r
-        IconItemNode *list3data5 = new IconItemNode();\r
-        list3data5->imagePath = "/user/res/weather/weather_foggy.bin";\r
-        list3data5->txt = "周五  阴天  16°/20°";\r
-        listdata->PushBack(list3data5);\r
-\r
-        IconItemNode *list3data6 = new IconItemNode();\r
-        list3data6->imagePath = "/user/res/weather/weather_thundershower.bin";\r
-        list3data6->txt = "    周六  雷阵雨  10°/15°";\r
-        listdata->PushBack(list3data6);\r
-\r
-        IconItemNode *list3data7 = new IconItemNode();\r
-        list3data7->imagePath = "/user/res/weather/weather_overcast.bin";\r
-        list3data7->txt = "周日  阴     20°/24°";\r
-        listdata->PushBack(list3data7);\r
-        if (listadapter == nullptr)\r
-        {\r
-            listadapter = new IconAdapter();\r
-        }\r
-        listadapter->SetItemSize(355, 65);\r
-        listadapter->SetImageSize(65, 65);\r
-        listadapter->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 26);\r
-        listadapter->SetData(listdata);\r
-        list->SetAdapter(listadapter);\r
-\r
-        // Add to scrollView1\r
-        scrollView1_->Add(list);\r
-        list->SetVisible(true);\r
-    }\r
-\r
-    void FutureWeatherView::DeInitView()\r
+    void FutureWeatherView::ClearAll()\r
     {\r
-        if (viewInitStatus == true)\r
+        if (container != nullptr)\r
         {\r
-            container_->RemoveAll();\r
-            scrollView1_->RemoveAll();\r
-            delete label1_;\r
-            label1_ = nullptr;\r
+            container->Remove(scrollView);\r
 \r
-            delete list;\r
-            list = nullptr;\r
+            scrollView->RemoveAll();\r
 \r
-            delete listadapter;\r
-            listadapter = nullptr;\r
+            delete Title;\r
+            Title = nullptr;\r
 \r
-            delete draglistener;\r
-            draglistener = nullptr;\r
+            for (int i = 0; i < 7; i++)\r
+            {\r
+                delete weatherImg[i];\r
+                weatherImg[i] = nullptr;\r
 \r
-            listdata->Clear();\r
-            delete listdata;\r
-            listdata = nullptr;\r
+                delete dateLabel[i];\r
+                dateLabel[i] = nullptr;\r
 \r
-            delete scrollView1_;\r
-            scrollView1_ = nullptr;\r
+                delete maxandminTemperatureLabel[i];\r
+                maxandminTemperatureLabel[i] = nullptr;\r
+            }\r
+            delete scrollView;\r
+            scrollView = nullptr;\r
 \r
-            delete container_;\r
-            container_ = nullptr;\r
+            delete container;\r
+            container = nullptr;\r
         }\r
     }\r
 \r
-    void FutureWeatherView::PreLoad(void)\r
+    bool FutureWeatherView::InitPage(void)\r
     {\r
-        if (!viewInitStatus)\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FutureWeatherView::InitPage");\r
+        if (container == nullptr)\r
         {\r
-            InitView();\r
-            viewInitStatus = true;\r
+            container = new UIViewGroup();\r
+            if (container == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FutureWeatherView::container is new fail!!");\r
+                return false;\r
+            }\r
+            container->SetPosition(0, 0, 466, 466);\r
+            container->SetStyle(STYLE_BACKGROUND_OPA, 0);\r
+            /* -------------------------------------------------------------------------- */\r
+            scrollView = new UIScrollView();\r
+            if (scrollView == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "scrollView is new fail!!");\r
+                return false;\r
+            }\r
+            scrollView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
+            scrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+            scrollView->SetReboundSize(50);              // 设置回弹大小\r
+            scrollView->SetHorizontalScrollState(false); // 设置横向不可以滚动\r
+            scrollView->SetScrollBlankSize(50);          // 设置高位50可滑动空白区域\r
+            /* -------------------------------------------------------------------------- */\r
+            Title = new UILabelExt();\r
+            if (Title == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FutureWeatherView::Title is new fail!!");\r
+                return false;\r
+            }\r
+            Title->SetPosition(93, 52, 280, 47);\r
+            Title->SetStyle(STYLE_TEXT_FONT, 30);\r
+            Title->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+            Title->SetText("未来7天");\r
+            Title->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
+            Title->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+            Title->SetRollSpeed(40);\r
+            Title->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+            scrollView->Add(Title);\r
+            /* -------------------------------------------------------------------------- */\r
+            int yImg = 80;\r
+            int yLabel = 85;\r
+            WeatherModel *p_WeatherModel = &WeatherModel::GetInstance().GetInstance();\r
+            for (int i = 0; i < 7; ++i) // 创建7个组件组\r
+            {\r
+                // 创建天气图标\r
+                if (weatherImg[i] == nullptr)\r
+                {\r
+                    weatherImg[i] = new UIImageView();\r
+                }\r
+                weatherImg[i]->SetPosition(68, 130 + i * yImg, 65, 65);                                     // SetPosition的参数分别是x, y, width, height\r
+                weatherImg[i]->SetSrc(weather65x65[p_WeatherModel->GetWeather_data_seven_data_iconDay(i)]); // 请设置实际的图片源\r
+\r
+                // 创建日期标签\r
+                if (dateLabel[i] == nullptr)\r
+                {\r
+                    dateLabel[i] = new UILabel();\r
+                }\r
+                dateLabel[i]->SetPosition(169, 148 + i * yLabel);\r
+                dateLabel[i]->SetStyle(STYLE_TEXT_FONT, 30);\r
+                dateLabel[i]->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+                dateLabel[i]->SetText(p_WeatherModel->GetWeather_data_seven_data_fxDate(i).c_str()); // 设置具体日期文本\r
+                dateLabel[i]->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+                dateLabel[i]->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+                dateLabel[i]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+\r
+                // 创建最高和最低气温标签\r
+                if (maxandminTemperatureLabel[i] == nullptr)\r
+                {\r
+                    maxandminTemperatureLabel[i] = new UILabel();\r
+                }\r
+                maxandminTemperatureLabel[i]->SetPosition(299, 148 + i * yLabel);\r
+                maxandminTemperatureLabel[i]->SetStyle(STYLE_TEXT_FONT, 30);\r
+                maxandminTemperatureLabel[i]->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+                maxandminTemperatureLabel[i]->SetText(p_WeatherModel->GetWeather_data_seven_data_tempMinAndtempMax(i).c_str());\r
+                maxandminTemperatureLabel[i]->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+                maxandminTemperatureLabel[i]->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+                maxandminTemperatureLabel[i]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+                scrollView->Add(weatherImg[i]);\r
+                scrollView->Add(dateLabel[i]);\r
+                scrollView->Add(maxandminTemperatureLabel[i]);\r
+            }\r
+            Add(scrollView);\r
         }\r
+        return true;\r
     }\r
-    void FutureWeatherView::OnStart()\r
+\r
+    bool FutureWeatherView::InitView(void *caller)\r
     {\r
-        View<FutureWeatherPresenter>::OnStart();\r
-        if (container_ == nullptr)\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FutureWeatherView::InitView %p", caller);\r
+        if (InitPage() == false)\r
         {\r
-            container_ = new UIViewGroup();\r
-            container_->Resize(466, 466);\r
-            container_->SetTouchable(true);\r
-            container_->SetDraggable(true);\r
-            draglistener = static_cast<UIView::OnDragListener *>(FutureWeatherPresenter::GetInstance());\r
-            container_->SetOnDragListener(draglistener);\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "FutureWeatherView::InitPage fail");\r
+            return false;\r
         }\r
-        PreLoad();\r
-        RootView::GetInstance()->Add(container_);\r
-    }\r
-\r
-    void FutureWeatherView::OnSetUpView()\r
-    {\r
-\r
-        View<FutureWeatherPresenter>::OnSetUpView();\r
-        Draw();\r
-    }\r
-\r
-    void FutureWeatherView::OnTearDownView()\r
-    {\r
-\r
-        View<FutureWeatherPresenter>::OnTearDownView();\r
-        return;\r
-    }\r
-\r
-    void FutureWeatherView::OnStop()\r
-    {\r
-\r
-        View<FutureWeatherPresenter>::OnStop();\r
-        RootView::GetInstance()->RemoveAll();\r
-        return;\r
+        SetDraggable(true);\r
+        SetTouchable(true);\r
+        return true;\r
     }\r
 }
\ No newline at end of file
index 177ba48..4b37dba 100644 (file)
@@ -1,6 +1,4 @@
 #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/MainWeatherPresenter.h"\r
 #include "common/key_code.h"\r
@@ -15,7 +13,7 @@ namespace OHOS
 \r
     MainWeatherPresenter::MainWeatherPresenter()\r
     {\r
-\r
+        weatherModel = &WeatherModel::GetInstance();\r
         g_pMainWeatherPresenter = this;\r
     }\r
 \r
@@ -71,7 +69,7 @@ namespace OHOS
             NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
             return true;\r
         }\r
-        if(strcmp(view.GetViewId(),GETWEATHERDATAERRORVIEW) == 0)\r
+        if (strcmp(view.GetViewId(), GETWEATHERDATAERRORVIEW) == 0)\r
         {\r
             NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
         }\r
index 428ec38..18fd114 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-13 17:31:05\r
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/src/MainWeatherView.cpp\r
+ */\r
 #include "weather/include/MainWeatherView.h"\r
 #include "weather/include/MainWeatherPresenter.h"\r
 #include "weather/include/WeatherModel.h"\r
@@ -38,14 +45,17 @@ namespace OHOS
             delete weatherReportView;\r
             weatherReportView = nullptr;\r
 \r
+            delete futureWeatherView;\r
+            futureWeatherView = nullptr;\r
+\r
             delete weatherSwipeViewList;\r
             weatherSwipeViewList = nullptr;\r
         }\r
-        \r
-        if (g_GetWeatherDataErrorView != nullptr)\r
+\r
+        if (getWeatherDataErrorView != nullptr)\r
         {\r
-            delete g_GetWeatherDataErrorView;\r
-            g_GetWeatherDataErrorView = nullptr;\r
+            delete getWeatherDataErrorView;\r
+            getWeatherDataErrorView = nullptr;\r
         }\r
     }\r
 \r
@@ -122,13 +132,13 @@ namespace OHOS
         }\r
         else\r
         {\r
-            g_GetWeatherDataErrorView = new GetWeatherDataErrorView();\r
-            if (g_GetWeatherDataErrorView == nullptr)\r
+            getWeatherDataErrorView = new GetWeatherDataErrorView();\r
+            if (getWeatherDataErrorView == nullptr)\r
             {\r
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "g_GetWeatherDataErrorView new fail!!");\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "getWeatherDataErrorView new fail!!");\r
                 return;\r
             }\r
-            RootView::GetInstance()->Add(g_GetWeatherDataErrorView->GetWeatherDataErrorViewInit());\r
+            RootView::GetInstance()->Add(getWeatherDataErrorView->GetWeatherDataErrorViewInit());\r
         }\r
         RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::MainWeatherPresenter::GetInstance();\r
         RootView::GetInstance()->SetOnKeyActListener(keyactListener);\r
@@ -166,6 +176,11 @@ namespace OHOS
         return weatherReportView;\r
     }\r
 \r
+    FutureWeatherView *MainWeatherView::GetFutureWeatherView(void)\r
+    {\r
+        return futureWeatherView;\r
+    }\r
+\r
     /*\r
      * @brief 天气页面视图初始化\r
      */\r
@@ -195,6 +210,20 @@ namespace OHOS
         return weatherReportView;\r
     }\r
 \r
+    /*\r
+     * @brief 未来天气视图初始化\r
+     */\r
+    AppGroupView *MainWeatherView::FutureWeatherViewPageInit(void)\r
+    {\r
+        futureWeatherView = new FutureWeatherView();\r
+        if (futureWeatherView == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainWeatherView::new futureWeatherView fail!");\r
+            return nullptr;\r
+        }\r
+        return futureWeatherView;\r
+    }\r
+\r
     struct MainWeatherViewMapper\r
     {\r
         const int16_t viewId;\r
@@ -205,6 +234,7 @@ namespace OHOS
     static const MainWeatherViewMapper g_pageMapper[] = {\r
         {MAINWEATHERVIEW, &MainWeatherView::WeatherViewPageInit},\r
         {WEATHERREPORTVIEW, &MainWeatherView::WeatherReportViewPageInit},\r
+        {FUTUREWEATHERVIEW, &MainWeatherView::FutureWeatherViewPageInit},\r
     };\r
 \r
     /*\r
index 035e28e..b5a27dd 100644 (file)
@@ -2,11 +2,10 @@
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-04-08 18:40:09
  * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-04-12 16:34:46
+ * @LastEditTime: 2024-04-13 17:07:14
  * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/src/WeatherModel.cpp
  */
 #include "weather/include/WeatherModel.h"
-
 namespace OHOS
 {
 #if __cplusplus
@@ -112,6 +111,16 @@ namespace OHOS
         return instance;
     }
 
+    void WeatherModel::TimestampToMonthDayString(time_t timestamp, char *buffer)
+    {
+        // 将时间戳转换成tm结构
+        struct tm *timeinfo = localtime(&timestamp);
+
+        // 格式化输出月份和日期
+        // 注意: 月份tm_mon从0开始计数,所以显示时需要加1
+        sprintf(buffer, "%02d.%02d", timeinfo->tm_mon + 1, timeinfo->tm_mday);
+    }
+
     // 获取天气图片
     std::string WeatherModel::GetWeatherImage()
     {
@@ -150,4 +159,35 @@ namespace OHOS
         std::string MaxandMinTemperature = "最高" + std::to_string(maxtemperature) + "°" + " " + "最低" + std::to_string(mintemperature) + "°";
         return MaxandMinTemperature;
     }
+    /* -------------------------------------------------------------------------- */
+    /*获取未来七天中某一天白天天气图标*/
+    int WeatherModel::GetWeather_data_seven_data_iconDay(int date)
+    {
+        return Weather_data_seven_data[date].iconDay;
+    }
+
+    /*获取未来七天某一天白天天气文本*/
+    std::string WeatherModel::GetWeather_data_seven_data_textDay(int date)
+    {
+        return Weather_data_seven_data[date].textDay;
+    }
+
+    /*获取未来七天某一天日期*/
+    std::string WeatherModel::GetWeather_data_seven_data_fxDate(int date)
+    {
+        static char formattedDate[6]; // 5字符加上终结符'\0'
+        TimestampToMonthDayString(Weather_data_seven_data[date].fxDate,formattedDate);
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "formattedDate:%s",formattedDate);
+        return formattedDate;
+    }
+
+    /*获取未来七天某一天最高和最低气温*/
+    std::string WeatherModel::GetWeather_data_seven_data_tempMinAndtempMax(int date)
+    {
+        int maxTemp = Weather_data_seven_data[date].tempMax;
+        int minTemp = Weather_data_seven_data[date].tempMin;
+        std::string maxandminTemperature = (std::to_string(maxTemp) + "°") + "/" + std::to_string(minTemp) + "°";
+        return maxandminTemperature;
+    }
+
 }
\ No newline at end of file
index 4bb5d25..c1399bf 100644 (file)
@@ -71,7 +71,7 @@ namespace OHOS
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherView::WeatherView");
         SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
         SetViewIndex(0); // 视图索引
-        if (WEATHER_DATA_VALID)
+        if (1)
         {
             WeatherModel *p_WeatherModel = &WeatherModel::GetInstance();
             WeatherImag = p_WeatherModel->GetWeatherImage();