主界面和applist天气视图添加并同步添加图片
author罗正yun <1732036298@qq.com>
Fri, 19 Jan 2024 09:51:24 +0000 (17:51 +0800)
committer罗正yun <1732036298@qq.com>
Fri, 19 Jan 2024 09:51:24 +0000 (17:51 +0800)
59 files changed:
code/sdk/application/wearable/nativeapp/CMakeLists.txt
code/sdk/application/wearable/nativeapp/nativelauncher/include/AppViewIDs.h
code/sdk/application/wearable/nativeapp/nativelauncher/include/NativeLauncher.h
code/sdk/application/wearable/nativeapp/nativelauncher/include/UiConfig.h
code/sdk/application/wearable/nativeapp/nativelauncher/src/NativeLauncher.cpp
code/sdk/application/wearable/nativeapp/nativeui/applist/src/ApplistModel.cpp
code/sdk/application/wearable/nativeapp/nativeui/main/include/MainViewSample.h
code/sdk/application/wearable/nativeapp/nativeui/main/src/MainViewSample.cpp
code/sdk/application/wearable/nativeapp/nativeui/screensetting/include/ScreenModels.h
code/sdk/application/wearable/nativeapp/nativeui/weather/include/FutureWeatherPresenter.h [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/weather/include/FutureWeatherView.h [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/weather/include/GetWeatherDataErrorPresenter.h [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/weather/include/GetWeatherDataErrorView.h [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/weather/include/MainWeatherPresenter.h [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/weather/include/MainWeatherView.h [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/weather/include/WeatherControlView.h [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/weather/include/WeatherReportPresenter.h [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/weather/include/WeatherReportView.h [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/weather/include/WeatherView.h [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/weather/src/FutureWeatherPresenter.cpp [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/weather/src/FutureWeatherView.cpp [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/weather/src/GetWeatherDataErrorPresenter.cpp [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/weather/src/GetWeatherDataErrorView.cpp [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/weather/src/MainWeatherPresenter.cpp [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/weather/src/MainWeatherView.cpp [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/weather/src/WeatherControlView.cpp [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/weather/src/WeatherReportPresenter.cpp [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/weather/src/WeatherReportView.cpp [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/weather/src/WeatherView.cpp [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/APPLIST_COMPASS_IMAGE.bin
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/APPLIST_WEATHER_IMAGE.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_BACKGROUND.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_CLEAR-CLOUDY.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_CLEAR-SUNNY.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_DUSTSTORM.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_FOGGY.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_HAZE.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_HUMIDITY.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_OVERCAST.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_RAIN.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_SNOW.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_SUNNY-CLOUNDY.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_SUNNY.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_THUNDERSHOWER.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_UNKNOWN.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_UVI.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_WINDSPEED.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_clear-cloudy.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_clear-sunny.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_duststorm.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_foggy.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_haze.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_overcast.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_rain.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_snow.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_sunny-cloudy.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_sunny.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_thundershower.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_unknown.bin [new file with mode: 0644]

index 9207ae6..0708deb 100755 (executable)
@@ -202,6 +202,18 @@ set(SOURCES
 
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingView.cpp
 
+    #天气
+    ${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/WeatherReportPresenter.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/GetWeatherDataErrorPresenter.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/weather/src/GetWeatherDataErrorView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/weather/src/WeatherControlView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/weather/src/WeatherView.cpp
+
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/compass/src/CompassControlView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/compass/src/CompassCalibrationView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/compass/src/CompassModel.cpp
index bacf7b3..1af2dd9 100755 (executable)
@@ -47,6 +47,11 @@ typedef enum : uint16_t {
     VIEW_UISAMPLE,
     VIEW_DIAL,//切换表盘
 
+    VIEW_WEATHER,                // 天气
+    VIEW_WEATHER_REPORT,         // 气象报告
+    VIEW_FUTURE_WEATHER,         // 未来天气
+    VIEW_GET_WEATHER_DATA_ERROR, // 获取天气数据失败
+
     VIEW_MAX_INTER_APP, // 在此之前添加native应用ID.
     VIEW_EXTERN_APP = 0xFFFE, // 三方应用
     VIEW_INVALIDE_APP = 0xFFFF,
index 93cb6f5..8870ce8 100755 (executable)
@@ -42,7 +42,12 @@ namespace OHOS
         void InitRebootSlice(void);
         void InitUISampleSlice(void);
         void InitDialSlice(void);
-
+        /* ----------------------------------- 天气 ----------------------------------- */
+        void InitWeatherSlice(void);
+        void InitWeatherReportSlice(void); 
+        void InitFutureWeatherSlice(void);  
+        void InitGetWeatherDataErrorSlice(void);
+        /* -------------------------------------------------------------------------- */
     private:
         void InitAllNativeSlices(void);
 
index ae607fe..b275a69 100755 (executable)
@@ -166,11 +166,12 @@ namespace OHOS
     static constexpr const char *PNG_A019_095_IMAGE_PATH = APP_RES_PATH "/BLUETOOTH_IMAGE_16.bin";
     static constexpr const char *PNG_BLUETOOTHEAR = APP_RES_PATH "/BLUETOOTHEAR.bin";
     /* --------------------------------- AppList -------------------------------- */
-    static constexpr const char *PNG_APPLIST_ALARM_IMAGE = APP_RES_PATH "/APPLIST_ALARM.bin";     // 闹钟
-    static constexpr const char *PNG_APPLIST_SPO2_IMAGE = APP_RES_PATH "/APPLIST_SPO2.bin";       // 血氧
-    static constexpr const char *PNG_APPLIST_SETTING_IMAGE = APP_RES_PATH "/APPLIST_SETTING.bin"; // 设置
-    static constexpr const char *PNG_APPLIST_CALLER_IMAGE = APP_RES_PATH "/APPLIST_CALLER_IMAGE.bin";
-    static constexpr const char *PNG_APPLIST_COMPASS_IMAGE = APP_RES_PATH "/APPLIST_COMPASS_IMAGE.bin";
+    static constexpr const char *PNG_APPLIST_ALARM_IMAGE = APP_RES_PATH "/APPLIST_ALARM.bin";           // 闹钟
+    static constexpr const char *PNG_APPLIST_SPO2_IMAGE = APP_RES_PATH "/APPLIST_SPO2.bin";             // 血氧
+    static constexpr const char *PNG_APPLIST_SETTING_IMAGE = APP_RES_PATH "/APPLIST_SETTING.bin";       // 设置
+    static constexpr const char *PNG_APPLIST_CALLER_IMAGE = APP_RES_PATH "/APPLIST_CALLER_IMAGE.bin";   // 打电话
+    static constexpr const char *PNG_APPLIST_COMPASS_IMAGE = APP_RES_PATH "/APPLIST_COMPASS_IMAGE.bin"; // 指南针
+    static constexpr const char *PNG_APPLIST_WEATHER_IMAGE = APP_RES_PATH "/APPLIST_WEATHER_IMAGE.bin"; // 天气
     /* ---------------------------------- 快速训练 ---------------------------------- */
     static constexpr const char *PNG_TRAING_BOUTTONMORE_IMAGE = APP_RES_PATH "/Training/More.bin";
     static constexpr const char *PNG_TRAING_BUTTONGRONG_IMAGE = APP_RES_PATH "/Training/Bouttonground.bin";
@@ -197,7 +198,7 @@ namespace OHOS
     static constexpr const char *PNG_SETTINGS_DISPLAY_BRIGHTNESS = APP_RES_PATH "/settings/SETTINGS_DISPLAY_BRIGHTNESS.bin"; // 显示与亮度
     static constexpr const char *PNG_SETTINGS_BLUETOOTH = APP_RES_PATH "/settings/SETTINGS_BLUETOOTH.bin";                   // 蓝牙
     static constexpr const char *PNG_SETTINGS_SOUND_VIBRATION = APP_RES_PATH "/settings/SETTINGS_SOUND_VIBRATION.bin";       // 声音与震动
-    static constexpr const char *PNG_SETTINGS_SECONDARY_FUNCTION = APP_RES_PATH "/settings/SETTINGS_QUICK_ACCESS.bin"; // 辅助功能
+    static constexpr const char *PNG_SETTINGS_SECONDARY_FUNCTION = APP_RES_PATH "/settings/SETTINGS_QUICK_ACCESS.bin";       // 辅助功能
     static constexpr const char *PNG_SETTINGS_SYSTEM = APP_RES_PATH "/settings/SETTINGS_SYSTEM.bin";                         // 系统
     /* ---------------------------------- 通用图片 ---------------------------------- */
     static constexpr const char *PNG_CHECKBOX_OFF_IMAGE = APP_RES_PATH "/CHECKBOX_OFF.bin";             // checkbox未选中图片
@@ -205,6 +206,8 @@ namespace OHOS
     static constexpr const char *PNG_SETTING_NEXT_IMAGE = APP_RES_PATH "/SETTING_NEXT.bin";             //  箭头图片
     static constexpr const char *PNG_SETTING_BACKGROUND_IMAGE = APP_RES_PATH "/SETTING_BACKGROUND.bin"; //  按钮的背景图片
     static constexpr const char *PNG_VOLUME_CONTROL_VECTOR = APP_RES_PATH "/VolumeControlVector.bin";   //  调节音量图片
+    static constexpr const char *PNG_ANIMATOR1_IMAGE = APP_RES_PATH "/Record/animator1.bin";
+    static constexpr const char *PNG_ANIMATOR2_IMAGE = APP_RES_PATH "/Record/animator2.bin";
     /* -------------------------------- 已删除的不必要图片 ------------------------------- */
     static constexpr const char *PNG_APPLIST_UI_SAMPLE_IMAGE = APP_RES_PATH "/APPLIST_UI_SAMPLE.bin"; // Applist图标
     static constexpr const char *PNG_APPLIST_TEMP_IMAGE = APP_RES_PATH "/TEMP_IMAGE.bin";
index 166278f..3f47fce 100755 (executable)
 #include "dial/include/DialPresenter.h"
 #include "dial/include/DialView.h"
 
+#include "weather/include/MainWeatherPresenter.h"
+#include "weather/include/MainWeatherView.h"
+#include "weather/include/WeatherReportPresenter.h"
+#include "weather/include/WeatherReportView.h"
+#include "weather/include/FutureWeatherPresenter.h"
+#include "weather/include/FutureWeatherView.h"
+#include "weather/include/GetWeatherDataErrorPresenter.h"
+#include "weather/include/GetWeatherDataErrorView.h"
+
 #include "BluetoothHeadsetEvent.h"
 #include "graphic_hardware_config.h"
 #include "graphic_service.h"
@@ -101,6 +110,10 @@ namespace OHOS
         {VIEW_REBOOT, &NativeLauncher::InitRebootSlice},
 
         {VIEW_DIAL, &NativeLauncher::InitDialSlice},
+        {VIEW_WEATHER,&NativeLauncher::InitWeatherSlice},                                            //天气
+        {VIEW_WEATHER_REPORT,&NativeLauncher::InitWeatherReportSlice},                               //气象报告
+        {VIEW_FUTURE_WEATHER,&NativeLauncher::InitFutureWeatherSlice},                               //未来天气
+        {VIEW_GET_WEATHER_DATA_ERROR,&NativeLauncher::InitGetWeatherDataErrorSlice},                 //获取天气数据失败
         {VIEW_UISAMPLE, &NativeLauncher::InitUISampleSlice}};
 
     static const ViewIdToString VIEW_MAPPER[] = {
@@ -380,7 +393,7 @@ namespace OHOS
     }
     void NativeLauncher::InitDialSlice(void)
     {
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitBloodSlice");
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitDialSlice");
         SliceProxy *dialview = new AbilitySliceProxy<DialView, DialPresenter>;
         if (dialview == nullptr)
         {
@@ -390,4 +403,48 @@ namespace OHOS
         NativeAbility::GetInstance().AddSliceProxy(VIEW_DIAL, dialview);
     }
 
+    void NativeLauncher::InitWeatherSlice(void) // 天气
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitWeatherSlice");
+        SliceProxy *mainweather = new AbilitySliceProxy<MainWeatherView, MainWeatherPresenter>;
+        if (mainweather == nullptr)
+        {
+            return;
+        }
+        NativeAbility::GetInstance().AddSliceProxy(VIEW_WEATHER, mainweather);
+    }
+
+    void NativeLauncher::InitWeatherReportSlice(void) // 气象报告
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitWeatherReportSlice");
+        SliceProxy *weatherreport = new AbilitySliceProxy<WeatherReportView, WeatherReportPresenter>;
+        if (weatherreport == nullptr)
+        {
+            return;
+        }
+        NativeAbility::GetInstance().AddSliceProxy(VIEW_WEATHER_REPORT, weatherreport);
+    }
+
+    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::InitGetWeatherDataErrorSlice(void)
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitGetWeatherDataErrorSlice");
+        SliceProxy *getweatherdataerror = new AbilitySliceProxy<GetWeatherDataErrorView, GetWeatherDataErrorPresenter>;
+        if (getweatherdataerror == nullptr)
+        {
+            return;
+        }
+        NativeAbility::GetInstance().AddSliceProxy(VIEW_GET_WEATHER_DATA_ERROR, getweatherdataerror);
+    }
+
 }
index 877edb6..a9d386a 100755 (executable)
@@ -24,6 +24,7 @@ namespace OHOS
         {VIEW_BLOODOXY_SAMPLE, PNG_APPLIST_SPO2_IMAGE, PNG_APPLIST_SPO2_IMAGE, "血氧饱和度", nullptr},
         {VIEW_COMPASS, PNG_APPLIST_COMPASS_IMAGE, PNG_APPLIST_COMPASS_IMAGE, "指南针", nullptr},
         {VIEW_INDOORWALK, PNG_APPLIST_WALK_IMAGE, PNG_APPLIST_WALK_IMAGE, "室内步行", nullptr},
+        {VIEW_WEATHER, PNG_APPLIST_WEATHER_IMAGE, PNG_APPLIST_WEATHER_IMAGE, "天气", nullptr},
         {VIEW_SETTING, PNG_APPLIST_SETTING_IMAGE, PNG_APPLIST_SETTING_IMAGE, "设置", nullptr},
 #if 0
         {VIEW_MAIN_TEMP, PNG_APPLIST_TEMP_IMAGE, PNG_APPLIST_TEMP_IMAGE, "体温", nullptr},
index 21689df..2d4a462 100755 (executable)
@@ -32,6 +32,7 @@
 #include "blood/include/BloodView.h"
 #include "traing/include/TraingView.h"
 #include "ApplistCardView.h"
+#include "weather/include/WeatherControlView.h"
 namespace OHOS
 {
     class MainPresenterSample;
@@ -83,6 +84,7 @@ namespace OHOS
         HeartRateView *heartRateView{nullptr};
         Digital_clockView *dialView{nullptr};
         BloodView *bloodView{nullptr};
+        WeatherControlView *weatherControlView{nullptr};
         TraingView *traingView{nullptr};
         ApplistCardView *applistCardView{nullptr};
         /* -------------------------------------------------------------------------- */
index 9d15a22..b19bcc4 100755 (executable)
@@ -31,6 +31,7 @@ namespace OHOS
         {BloodOxygen, &MainViewSample::InitBloodOxygenPage},
         {TRAINING, &MainViewSample::InitTrainingPage},
         {COMPASS, &MainViewSample::InitCompassPage},
+        {WEATHER, &MainViewSample::InitWeatherPage},
         {PLAYER,&MainViewSample::InitMusicPlayerPage},
 #if 0
         {APPLIST,&MainViewSample::InitApplistPage}
@@ -379,6 +380,18 @@ namespace OHOS
         return traingView;
     }
 
+    //主界面天气卡片
+    UICardPage *MainViewSample::InitWeatherPage(void)
+    {
+        weatherControlView = new WeatherControlView();
+        if(weatherControlView == nullptr)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "mainweatherView new fail");
+            return nullptr;
+        }
+        return weatherControlView;
+    }
+
     // 主界面功能列表界面
     UICardPage *MainViewSample::InitApplistPage(void)
     {
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/weather/include/FutureWeatherPresenter.h b/code/sdk/application/wearable/nativeapp/nativeui/weather/include/FutureWeatherPresenter.h
new file mode 100644 (file)
index 0000000..6451306
--- /dev/null
@@ -0,0 +1,34 @@
+#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
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/weather/include/FutureWeatherView.h b/code/sdk/application/wearable/nativeapp/nativeui/weather/include/FutureWeatherView.h
new file mode 100644 (file)
index 0000000..d4ba47d
--- /dev/null
@@ -0,0 +1,66 @@
+#ifndef FUTURE_WEATHER_VIEW_H\r
+#define FUTURE_WEATHER_VIEW_H\r
+\r
+#include "BaseView.h"\r
+#include "View.h"\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_scroll_view.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_list.h"\r
+#include "components/icon_adapter.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
+    {\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
+\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
+    };\r
+} // namespace OHOS\r
+#endif // FutureWeather_PRESENTER_H
\ No newline at end of file
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/weather/include/GetWeatherDataErrorPresenter.h b/code/sdk/application/wearable/nativeapp/nativeui/weather/include/GetWeatherDataErrorPresenter.h
new file mode 100644 (file)
index 0000000..2bda7b5
--- /dev/null
@@ -0,0 +1,33 @@
+#ifndef Get_WEATHER_DATA_ERROR_PRESENTER_H\r
+#define Get_WEATHER_DATA_ERROR_PRESENTER_H\r
+\r
+#include "Presenter.h"\r
+#include "GetWeatherDataErrorView.h"\r
+\r
+namespace OHOS\r
+{\r
+    class GetWeatherDataErrorView;\r
+\r
+    class GetWeatherDataErrorPresenter : public Presenter<GetWeatherDataErrorView>,\r
+                                         public UIView::OnClickListener,\r
+                                         public UIView::OnDragListener\r
+    {\r
+    public:\r
+        GetWeatherDataErrorPresenter();\r
+        virtual ~GetWeatherDataErrorPresenter();\r
+\r
+        void OnStart() override;\r
+        void OnPause() override;\r
+        void OnResume() override;\r
+        void OnStop() override;\r
+\r
+        static GetWeatherDataErrorPresenter *GetInstance();\r
+\r
+    private:\r
+        // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承;\r
+        bool OnClick(UIView &view, const ClickEvent &event) override;\r
+        bool OnDrag(UIView &view, const DragEvent &event) override;\r
+    };\r
+} // namespace OHOS\r
+\r
+#endif // GetWeatherDataError_PRESENTER_H
\ No newline at end of file
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/weather/include/GetWeatherDataErrorView.h b/code/sdk/application/wearable/nativeapp/nativeui/weather/include/GetWeatherDataErrorView.h
new file mode 100644 (file)
index 0000000..b22d633
--- /dev/null
@@ -0,0 +1,40 @@
+#ifndef Get_WEATHER_DATA_ERROR_VIEW_H\r
+#define Get_WEATHER_DATA_ERROR_VIEW_H\r
+\r
+#include "BaseView.h"\r
+#include "View.h"\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_scroll_view.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_image_view.h"\r
+namespace OHOS\r
+{\r
+    class GetWeatherDataErrorPresenter;\r
+    class GetWeatherDataErrorView : public View<GetWeatherDataErrorPresenter>\r
+    {\r
+\r
+    public:\r
+        GetWeatherDataErrorView();\r
+        virtual ~GetWeatherDataErrorView();\r
+        static GetWeatherDataErrorView *GetInstance(void);\r
+\r
+        void OnStart() override;\r
+        void OnSetUpView() override;\r
+        void OnTearDownView() override;\r
+        void OnStop() override;\r
+\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
+        UIImageView *image1_ = nullptr;\r
+        bool viewInitStatus{false};\r
+    };\r
+} // namespace OHOS\r
+#endif // GetWeatherDataError_PRESENTER_H
\ No newline at end of file
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/weather/include/MainWeatherPresenter.h b/code/sdk/application/wearable/nativeapp/nativeui/weather/include/MainWeatherPresenter.h
new file mode 100644 (file)
index 0000000..70bbd4e
--- /dev/null
@@ -0,0 +1,34 @@
+#ifndef MAIN_WEATHER_PRESENTER_H\r
+#define MAIN_WEATHER_PRESENTER_H\r
+\r
+#include "Presenter.h"\r
+#include "MainWeatherView.h"\r
+\r
+/*主天气视图*/\r
+namespace OHOS\r
+{\r
+    class MainWeatherView;\r
+\r
+    class MainWeatherPresenter : public Presenter<MainWeatherView>,\r
+                                 public UIView::OnClickListener,\r
+                                 public UIView::OnDragListener\r
+    {\r
+    public:\r
+        MainWeatherPresenter();\r
+        virtual ~MainWeatherPresenter();\r
+\r
+        void OnStart() override;\r
+        void OnPause() override;\r
+        void OnResume() override;\r
+        void OnStop() override;\r
+\r
+        static MainWeatherPresenter *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 // MainWeather_PRESENTER_H
\ No newline at end of file
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/weather/include/MainWeatherView.h b/code/sdk/application/wearable/nativeapp/nativeui/weather/include/MainWeatherView.h
new file mode 100644 (file)
index 0000000..37bd305
--- /dev/null
@@ -0,0 +1,65 @@
+#ifndef MAIN_WEATHER_VIEW_H\r
+#define MAIN_WEATHER_VIEW_H\r
+\r
+#include "BaseView.h"\r
+#include "View.h"\r
+\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_scroll_view.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_image_view.h"\r
+#include "components/ui_image_animator.h"\r
+#include "weather/include/WeatherView.h"\r
+#include <iostream>\r
+\r
+\r
+namespace OHOS\r
+{\r
+    class MainWeatherPresenter;\r
+    class MainWeatherView : public View<MainWeatherPresenter>\r
+    {\r
+\r
+    public:\r
+        MainWeatherView();\r
+        virtual ~MainWeatherView();\r
+        static MainWeatherView *GetInstance(void);\r
+\r
+        void OnStart() override;\r
+        void OnSetUpView() override;\r
+        void OnTearDownView() override;\r
+        void OnStop() override;\r
+\r
+    private:\r
+        void InitView(void);\r
+        void DeInitView(void);\r
+        UILabel *InitLabel(int x, int y, const char *text, const char *id, int textfont, int lineheight);\r
+        void PreLoad(void);\r
+\r
+    private:\r
+        std::string GetTime();\r
+        std::string GetWeatherImage();\r
+        std::string GetWeatherTemperature();\r
+        std::string GetWeatherDescription();\r
+        std::string GetWeatherArea();\r
+        std::string GetWeatherMaxAndMinTemperature();\r
+\r
+        std::string Time;                 // 时间\r
+        std::string WeatherImag;          // 天气图片\r
+        std::string Temperature;          // 温度\r
+        std::string WeatherDescription;   // 天气描述\r
+        std::string WeatherArea;          // 天气地区\r
+        std::string MaxandMinTemperature; // 最高与最低气温\r
+    private:\r
+        UIViewGroup *container_ = nullptr;\r
+        UIScrollView *scrollView1_ = nullptr;\r
+        UILabel *label1_ = nullptr;\r
+        UILabel *label2_ = nullptr;\r
+        UIImageView *image1_ = nullptr;\r
+        UILabel *label3_ = nullptr;\r
+        UILabel *label4_ = nullptr;\r
+        UILabel *label5_ = nullptr;\r
+        UIImageAnimatorView *imageAnimator1_ = nullptr;\r
+        bool viewInitStatus{false};\r
+    };\r
+} // namespace OHOS\r
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/weather/include/WeatherControlView.h b/code/sdk/application/wearable/nativeapp/nativeui/weather/include/WeatherControlView.h
new file mode 100644 (file)
index 0000000..488253a
--- /dev/null
@@ -0,0 +1,26 @@
+#ifndef WEATHER_CONTROL_VIEW_H
+#define WEATHER_CONTROL_VIEW_H
+/*该视图主要放在主视图*/
+
+#include "components/root_view.h"
+#include "components/ui_card_page.h"
+#include "wearable_log.h"
+#include "weather/include/WeatherView.h"
+namespace OHOS
+{
+    class WeatherControlView : public UICardPage
+    {
+    public:
+        WeatherControlView();
+        virtual ~WeatherControlView();
+        bool InitView(void);
+        void PreLoad(void) override;
+        void UnLoad(void) override;
+
+    private:
+        void ClearAll(void);
+        WeatherView *weatherView{nullptr};
+        bool viewiInitStatus{false};
+    };
+}
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/weather/include/WeatherReportPresenter.h b/code/sdk/application/wearable/nativeapp/nativeui/weather/include/WeatherReportPresenter.h
new file mode 100644 (file)
index 0000000..a604926
--- /dev/null
@@ -0,0 +1,33 @@
+#ifndef WEATHER_REPORT_PRESENTER_H\r
+#define WEATHER_REPORT_PRESENTER_H\r
+\r
+#include "Presenter.h"\r
+#include "WeatherReportView.h"\r
+\r
+namespace OHOS\r
+{\r
+    class WeatherReportView;\r
+\r
+    class WeatherReportPresenter : public Presenter<WeatherReportView>,\r
+                                   public UIView::OnClickListener,\r
+                                   public UIView::OnDragListener\r
+    {\r
+    public:\r
+        WeatherReportPresenter();\r
+        virtual ~WeatherReportPresenter();\r
+\r
+        void OnStart() override;\r
+        void OnPause() override;\r
+        void OnResume() override;\r
+        void OnStop() override;\r
+\r
+        static WeatherReportPresenter *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 // WeatherReport_PRESENTER_H
\ No newline at end of file
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/weather/include/WeatherReportView.h b/code/sdk/application/wearable/nativeapp/nativeui/weather/include/WeatherReportView.h
new file mode 100644 (file)
index 0000000..31c9082
--- /dev/null
@@ -0,0 +1,48 @@
+#ifndef WEATHER_REPORT_VIEW_H\r
+#define WEATHER_REPORT_VIEW_H\r
+\r
+#include "BaseView.h"\r
+#include "View.h"\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_scroll_view.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_image_animator.h"\r
+namespace OHOS\r
+{\r
+    class WeatherReportPresenter;\r
+    class WeatherReportView : public View<WeatherReportPresenter>\r
+    {\r
+\r
+    public:\r
+        WeatherReportView();\r
+        virtual ~WeatherReportView();\r
+        static WeatherReportView *GetInstance(void);\r
+\r
+        void OnStart() override;\r
+        void OnSetUpView() override;\r
+        void OnTearDownView() override;\r
+        void OnStop() override;\r
+\r
+    private:\r
+        void InitView(void);\r
+        void DeInitView(void);\r
+        void PreLoad(void);\r
+\r
+    private:\r
+        UIViewGroup *container_ = nullptr;\r
+        UIScrollView *scrollView1_ = nullptr;\r
+        UILabel *label5_ = nullptr;\r
+        UIImageAnimatorView *imageAnimator3_ = nullptr;\r
+        UIImageAnimatorView *imageAnimator2_ = nullptr;\r
+        UIImageAnimatorView *imageAnimator1_ = nullptr;\r
+        UIImageAnimatorView *imageAnimator = nullptr;\r
+        UILabel *label6_ = nullptr;\r
+        UILabel *label7_ = nullptr;\r
+        UILabel *label8_ = nullptr;\r
+        UILabel *label9_ = nullptr;\r
+        UILabel *label10_ = nullptr;\r
+        UILabel *label11_ = nullptr;\r
+        bool viewInitStatus{false};\r
+    };\r
+} // namespace OHOS\r
+#endif // WeatherReport_PRESENTER_H
\ No newline at end of file
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/weather/include/WeatherView.h b/code/sdk/application/wearable/nativeapp/nativeui/weather/include/WeatherView.h
new file mode 100644 (file)
index 0000000..24b8e64
--- /dev/null
@@ -0,0 +1,79 @@
+#ifndef WEATHER_VIEW_H
+#define WEATHER_VIEW_H
+
+#include "BaseView.h"
+#include "View.h"
+
+#include "components/root_view.h"
+#include "components/ui_view_group.h"
+#include "components/ui_scroll_view.h"
+#include "components/ui_label.h"
+#include "components/ui_image_view.h"
+#include "components/ui_image_animator.h"
+#include "wearable_log.h"
+#include "AppGroupView.h"
+#include <iostream>
+
+namespace OHOS
+{
+#define weather_src "/user/res/weather/"
+    static const char *background = weather_src "WEATHER_BACKGROUND.bin";
+    static const char *weather130x130[] =
+        {
+            weather_src "WEATHER_CLEAR-CLOUDY.bin",
+            weather_src "WEATHER_CLEAR-SUNNY.bin",
+            weather_src "WEATHER_DUSTSTORM.bin",
+            weather_src "WEATHER_FOGGY.bin",
+            weather_src "WEATHER_HAZE.bin",
+            weather_src "WEATHER_OVERCAST.bin",
+            weather_src "WEATHER_RAIN.bin",
+            weather_src "WEATHER_SNOW.bin",
+            weather_src "WEATHER_SUNNY.bin",
+            weather_src "WEATHER_SUNNY-CLOUNDY.bin",
+            weather_src "WEATHER_THUNDERSHOWER.bin",
+            weather_src "WEATHER_UNKNOWN.bin"};
+}
+
+namespace OHOS
+{
+    class WeatherView : public UIViewGroup
+    {
+
+    public:
+        WeatherView();
+        virtual ~WeatherView();
+        static WeatherView *GetInstance(void);
+        bool InitPage(void);
+        bool InitView(void);
+        void ClearAll();
+        bool GetInitViewState(void);
+
+    private:
+        UILabel *InitLabel(int x, int y, const char *text, const char *id, int textfont, int lineheight);
+
+    private:
+        std::string GetTime();
+        std::string GetWeatherImage();
+        std::string GetWeatherTemperature();
+        std::string GetWeatherDescription();
+        std::string GetWeatherArea();
+        std::string GetWeatherMaxAndMinTemperature();
+
+        std::string Time;                 // 时间
+        std::string WeatherImag;          // 天气图片
+        std::string Temperature;          // 温度
+        std::string WeatherDescription;   // 天气描述
+        std::string WeatherArea;          // 天气地区
+        std::string MaxandMinTemperature; // 最高与最低气温
+    private:
+        UIImageView *showWeatherImage = nullptr;         // 显示天气图片
+        UILabel *showCurrentTimeLabel{nullptr};          // 显示当前时间
+        UILabel *showTemperatureLabel{nullptr};          // 显示天气温度
+        UILabel *showWeatherDescriptionLabel{nullptr};   // 显示天气描述
+        UILabel *showWeatherAreaLabel{nullptr};          // 显示天气地区
+        UILabel *showMaxandMinTemperatureLabel{nullptr}; // 显示最高与最低气温
+        bool viewInitStatus{false};
+    };
+} // namespace OHOS
+
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/weather/src/FutureWeatherPresenter.cpp b/code/sdk/application/wearable/nativeapp/nativeui/weather/src/FutureWeatherPresenter.cpp
new file mode 100644 (file)
index 0000000..8c2d22b
--- /dev/null
@@ -0,0 +1,72 @@
+#include "AppViewIDs.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
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/weather/src/FutureWeatherView.cpp b/code/sdk/application/wearable/nativeapp/nativeui/weather/src/FutureWeatherView.cpp
new file mode 100644 (file)
index 0000000..093399a
--- /dev/null
@@ -0,0 +1,200 @@
+#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
+\r
+namespace OHOS\r
+{\r
+\r
+    static FutureWeatherView *g_pFutureWeatherView{nullptr};\r
+\r
+    FutureWeatherView::FutureWeatherView()\r
+    {\r
+\r
+        g_pFutureWeatherView = this;\r
+    }\r
+\r
+    FutureWeatherView::~FutureWeatherView()\r
+    {\r
+        DeInitView();\r
+        g_pFutureWeatherView = nullptr;\r
+    }\r
+\r
+    FutureWeatherView *FutureWeatherView::GetInstance()\r
+    {\r
+\r
+        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
+    {\r
+        if (viewInitStatus == true)\r
+        {\r
+            container_->RemoveAll();\r
+            scrollView1_->RemoveAll();\r
+            delete label1_;\r
+            label1_ = nullptr;\r
+\r
+            delete list;\r
+            list = nullptr;\r
+\r
+            delete listadapter;\r
+            listadapter = nullptr;\r
+\r
+            delete draglistener;\r
+            draglistener = nullptr;\r
+\r
+            listdata->Clear();\r
+            delete listdata;\r
+            listdata = nullptr;\r
+\r
+            delete scrollView1_;\r
+            scrollView1_ = nullptr;\r
+\r
+            delete container_;\r
+            container_ = nullptr;\r
+        }\r
+    }\r
+\r
+    void FutureWeatherView::PreLoad(void)\r
+    {\r
+        if (!viewInitStatus)\r
+        {\r
+            InitView();\r
+            viewInitStatus = true;\r
+        }\r
+    }\r
+    void FutureWeatherView::OnStart()\r
+    {\r
+        View<FutureWeatherPresenter>::OnStart();\r
+        if (container_ == nullptr)\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
+        }\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
+    }\r
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/weather/src/GetWeatherDataErrorPresenter.cpp b/code/sdk/application/wearable/nativeapp/nativeui/weather/src/GetWeatherDataErrorPresenter.cpp
new file mode 100644 (file)
index 0000000..6fffd00
--- /dev/null
@@ -0,0 +1,71 @@
+#include "AppViewIDs.h"\r
+#include "NativeAbility.h"\r
+#include "weather/include/GetWeatherDataErrorPresenter.h"\r
+\r
+namespace OHOS\r
+{\r
+\r
+    // 当前Presenter属性实例化的内存指针\r
+    static GetWeatherDataErrorPresenter *g_pGetWeatherDataErrorPresenter = nullptr;\r
+\r
+    GetWeatherDataErrorPresenter::GetWeatherDataErrorPresenter()\r
+    {\r
+\r
+        g_pGetWeatherDataErrorPresenter = this;\r
+    }\r
+\r
+    GetWeatherDataErrorPresenter::~GetWeatherDataErrorPresenter()\r
+    {\r
+\r
+        g_pGetWeatherDataErrorPresenter = nullptr;\r
+    }\r
+\r
+    GetWeatherDataErrorPresenter *GetWeatherDataErrorPresenter::GetInstance()\r
+    {\r
+\r
+        return g_pGetWeatherDataErrorPresenter;\r
+    }\r
+\r
+    void GetWeatherDataErrorPresenter::OnStart()\r
+    {\r
+\r
+        Presenter<GetWeatherDataErrorView>::OnStart();\r
+    }\r
+\r
+    void GetWeatherDataErrorPresenter::OnPause(void)\r
+    {\r
+\r
+        Presenter<GetWeatherDataErrorView>::OnPause();\r
+    }\r
+\r
+    void GetWeatherDataErrorPresenter::OnResume(void)\r
+    {\r
+\r
+        Presenter<GetWeatherDataErrorView>::OnResume();\r
+    }\r
+\r
+    void GetWeatherDataErrorPresenter::OnStop(void)\r
+    {\r
+\r
+        Presenter<GetWeatherDataErrorView>::OnStop();\r
+    }\r
+\r
+    bool GetWeatherDataErrorPresenter::OnDrag(UIView &view, const DragEvent &event)\r
+    {\r
+\r
+        if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT &&\r
+            (event.GetDeltaX() > 20) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY()))))\r
+        {\r
+            NativeAbility::GetInstance().ChangeSlice(VIEW_WEATHER);\r
+        }\r
+        return true;\r
+    }\r
+\r
+    bool GetWeatherDataErrorPresenter::OnClick(UIView &view, const ClickEvent &event)\r
+    {\r
+\r
+        // 根据控件id查找是哪个控件触发了点击回调\r
+        // if (strcmp(view.GetViewId(), 控件ID) == 0)\r
+        return true;\r
+    }\r
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/weather/src/GetWeatherDataErrorView.cpp b/code/sdk/application/wearable/nativeapp/nativeui/weather/src/GetWeatherDataErrorView.cpp
new file mode 100644 (file)
index 0000000..55a43f6
--- /dev/null
@@ -0,0 +1,162 @@
+#include "weather/include/GetWeatherDataErrorView.h"\r
+#include "weather/include/GetWeatherDataErrorPresenter.h"\r
+#include "UiConfig.h"\r
+\r
+/* 天气获取数据失败后会调用该视图*/\r
+namespace OHOS\r
+{\r
+\r
+    static GetWeatherDataErrorView *g_pGetWeatherDataErrorView{nullptr};\r
+\r
+    GetWeatherDataErrorView::GetWeatherDataErrorView()\r
+    {\r
+\r
+        g_pGetWeatherDataErrorView = this;\r
+    }\r
+\r
+    GetWeatherDataErrorView::~GetWeatherDataErrorView()\r
+    {\r
+        if (viewInitStatus == true)\r
+        {\r
+            DeInitView();\r
+        }\r
+        g_pGetWeatherDataErrorView = nullptr;\r
+    }\r
+\r
+    GetWeatherDataErrorView *GetWeatherDataErrorView::GetInstance()\r
+    {\r
+\r
+        return g_pGetWeatherDataErrorView;\r
+    }\r
+\r
+    void GetWeatherDataErrorView::InitView()\r
+    {\r
+        // Add ScrollView to App\r
+        if (scrollView1_ == nullptr)\r
+        {\r
+            scrollView1_ = new UIScrollView();\r
+        }\r
+        scrollView1_->SetPosition(0, 0);\r
+        scrollView1_->Resize(466, 466);\r
+        scrollView1_->SetViewId("scrollView1");\r
+        scrollView1_->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+        container_->Add(scrollView1_);\r
+        scrollView1_->SetVisible(true);\r
+\r
+        // Add Label to App\r
+        if (label1_ == nullptr)\r
+        {\r
+            label1_ = new UILabel();\r
+        }\r
+        label1_->SetPosition(113, 268);\r
+        label1_->Resize(240, 70);\r
+        label1_->SetViewId("label1");\r
+        label1_->SetStyle(STYLE_TEXT_FONT, 30);\r
+        label1_->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+\r
+        // Set additional property\r
+        label1_->SetText("未获取到天气信息\n请前往APP更新");\r
+        label1_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        label1_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        label1_->SetRollSpeed(0);\r
+        label1_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+\r
+        // Add to scrollView1\r
+        scrollView1_->Add(label1_);\r
+        label1_->SetVisible(true);\r
+\r
+        // Add ImageView to App\r
+        if (image1_ == nullptr)\r
+        {\r
+            image1_ = new UIImageView();\r
+        }\r
+        image1_->SetPosition(168, 127);\r
+        image1_->Resize(130, 130);\r
+        image1_->SetViewId("image1");\r
+        image1_->SetSrc("/user/res/weather/WEATHER_UNKNOWN.bin");\r
+\r
+        // Add to scrollView1\r
+        scrollView1_->Add(image1_);\r
+        image1_->SetVisible(true);\r
+    }\r
+\r
+    void GetWeatherDataErrorView::DeInitView()\r
+    {\r
+        container_->RemoveAll();\r
+        scrollView1_->RemoveAll();\r
+        if (label1_ != nullptr)\r
+        {\r
+            delete label1_;\r
+            label1_ = nullptr;\r
+        }\r
+        if (image1_ != nullptr)\r
+        {\r
+            delete image1_;\r
+            image1_ = nullptr;\r
+        }\r
+        if (scrollView1_ != nullptr)\r
+        {\r
+            delete scrollView1_;\r
+            scrollView1_ = nullptr;\r
+        }\r
+        if (container_ != nullptr)\r
+        {\r
+            delete container_;\r
+            container_ = nullptr;\r
+        }\r
+    }\r
+    \r
+    void GetWeatherDataErrorView::PreLoad(void)\r
+    {\r
+        if (!viewInitStatus)\r
+        {\r
+            InitView();\r
+            viewInitStatus = true;\r
+        }\r
+    }\r
+    void GetWeatherDataErrorView::OnStart()\r
+    {\r
+        container_ = new UIViewGroup();\r
+        if (container_ == nullptr)\r
+        {\r
+            return;\r
+        }\r
+        // container_容器属性 扩展\r
+        container_->SetPosition(0, 0);\r
+        container_->SetWidth(Screen::GetInstance().GetWidth());\r
+        container_->SetHeight(Screen::GetInstance().GetHeight());\r
+\r
+        draglistener = static_cast<UIView::OnDragListener *>(GetWeatherDataErrorPresenter::GetInstance());\r
+        if (draglistener == nullptr)\r
+        {\r
+            return;\r
+        }\r
+        container_->SetOnDragListener(draglistener);\r
+        container_->SetTouchable(true);\r
+        container_->SetDraggable(true);\r
+        PreLoad();\r
+        RootView::GetInstance()->Add(container_);\r
+    }\r
+\r
+    void GetWeatherDataErrorView::OnSetUpView()\r
+    {\r
+\r
+        View<GetWeatherDataErrorPresenter>::OnSetUpView();\r
+        Draw();\r
+    }\r
+\r
+    void GetWeatherDataErrorView::OnTearDownView()\r
+    {\r
+\r
+        View<GetWeatherDataErrorPresenter>::OnTearDownView();\r
+        return;\r
+    }\r
+\r
+    void GetWeatherDataErrorView::OnStop()\r
+    {\r
+\r
+        View<GetWeatherDataErrorPresenter>::OnStop();\r
+        RootView::GetInstance()->RemoveAll();\r
+        return;\r
+    }\r
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/weather/src/MainWeatherPresenter.cpp b/code/sdk/application/wearable/nativeapp/nativeui/weather/src/MainWeatherPresenter.cpp
new file mode 100644 (file)
index 0000000..d065faf
--- /dev/null
@@ -0,0 +1,76 @@
+#include "AppViewIDs.h"\r
+#include "NativeAbility.h"\r
+#include "weather/include/MainWeatherPresenter.h"\r
+\r
+namespace OHOS\r
+{\r
+\r
+    // 当前Presenter属性实例化的内存指针\r
+    static MainWeatherPresenter *g_pMainWeatherPresenter = nullptr;\r
+\r
+    MainWeatherPresenter::MainWeatherPresenter()\r
+    {\r
+\r
+        g_pMainWeatherPresenter = this;\r
+    }\r
+\r
+    MainWeatherPresenter::~MainWeatherPresenter()\r
+    {\r
+\r
+        g_pMainWeatherPresenter = nullptr;\r
+    }\r
+\r
+    MainWeatherPresenter *MainWeatherPresenter::GetInstance()\r
+    {\r
+\r
+        return g_pMainWeatherPresenter;\r
+    }\r
+\r
+    void MainWeatherPresenter::OnStart()\r
+    {\r
+\r
+        Presenter<MainWeatherView>::OnStart();\r
+    }\r
+\r
+    void MainWeatherPresenter::OnPause(void)\r
+    {\r
+\r
+        Presenter<MainWeatherView>::OnPause();\r
+    }\r
+\r
+    void MainWeatherPresenter::OnResume(void)\r
+    {\r
+\r
+        Presenter<MainWeatherView>::OnResume();\r
+    }\r
+\r
+    void MainWeatherPresenter::OnStop(void)\r
+    {\r
+\r
+        Presenter<MainWeatherView>::OnStop();\r
+    }\r
+\r
+    bool MainWeatherPresenter::OnDrag(UIView &view, const DragEvent &event)\r
+    {\r
+        if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT &&\r
+            (event.GetDeltaX() > 20) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY()))))\r
+        {\r
+            NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
+            return true;\r
+        }\r
+        else if (event.GetDragDirection() == DragEvent::DIRECTION_BOTTOM_TO_TOP)\r
+        {\r
+            NativeAbility::GetInstance().ChangeSlice(VIEW_WEATHER_REPORT); // 主天气界面从下往上滑进入气象报告界面\r
+            return true;\r
+        }\r
+        return false;\r
+    }\r
+\r
+    bool MainWeatherPresenter::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
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/weather/src/MainWeatherView.cpp b/code/sdk/application/wearable/nativeapp/nativeui/weather/src/MainWeatherView.cpp
new file mode 100644 (file)
index 0000000..bf37ce3
--- /dev/null
@@ -0,0 +1,285 @@
+#include "weather/include/MainWeatherView.h"\r
+#include "weather/include/MainWeatherPresenter.h"\r
+#include "UiConfig.h"\r
+/*\r
+当至天气界面时,主动获取最新天气数据。\r
+(此操作静默将进行,获取到则立刻更新显示,获取不到则重试\r
+重试3次无果结束更新)\r
+在加载该视图时,需要加载:1时间,2天气图片,3温度,4天气描述,5,地点,6,温度范围\r
+*/\r
+\r
+namespace OHOS\r
+{\r
+    static ImageAnimatorInfo g_imageAnimator1Info[2] = {\r
+        {PNG_ANIMATOR1_IMAGE, {213, 400}, 40, 40, IMG_SRC_FILE_PATH},\r
+        {PNG_ANIMATOR2_IMAGE, {213, 400}, 40, 40, IMG_SRC_FILE_PATH},\r
+    };\r
+    static MainWeatherView *g_pMainWeatherView{nullptr};\r
+\r
+    MainWeatherView::MainWeatherView()\r
+    {\r
+        Time = GetTime();\r
+        WeatherImag = GetWeatherImage();\r
+        Temperature = GetWeatherTemperature();\r
+        WeatherDescription = GetWeatherDescription();\r
+        WeatherArea = GetWeatherArea();\r
+        MaxandMinTemperature = GetWeatherMaxAndMinTemperature();\r
+        g_pMainWeatherView = this;\r
+    }\r
+\r
+    MainWeatherView::~MainWeatherView()\r
+    {\r
+        if (viewInitStatus == true)\r
+        {\r
+            DeInitView();\r
+        }\r
+        g_pMainWeatherView = nullptr;\r
+    }\r
+\r
+    MainWeatherView *MainWeatherView::GetInstance()\r
+    {\r
+        return g_pMainWeatherView;\r
+    }\r
+\r
+    // 获取时间\r
+    std::string MainWeatherView::GetTime()\r
+    {\r
+        srand(time(0));\r
+        std::string area[] = {"23:54", "12:00", "7:25"};\r
+        int num = rand() % (sizeof(area) / sizeof(area[0]));\r
+        return area[1];\r
+    }\r
+\r
+    // 获取天气图片\r
+    std::string MainWeatherView::GetWeatherImage()\r
+    {\r
+        int size = sizeof(weather130x130) / sizeof(weather130x130[0]);\r
+        return weather130x130[8];\r
+    }\r
+    // 获取温度\r
+\r
+    std::string MainWeatherView::GetWeatherTemperature()\r
+    {\r
+        // 使用系统时间作为种子\r
+        srand(time(0));\r
+        int temperature = rand() % 50;\r
+        return std::to_string(22) + "°";\r
+    }\r
+    // 获取天气描述\r
+\r
+    std::string MainWeatherView::GetWeatherDescription()\r
+    {\r
+        srand(time(0));\r
+        std::string area[] = {"晴", "雨夹雪", "雷阵雨伴有冰雹"};\r
+        int num = rand() % (sizeof(area) / sizeof(area[0]));\r
+        return area[0];\r
+    }\r
+    // 获取天气地区\r
+\r
+    std::string MainWeatherView::GetWeatherArea()\r
+    {\r
+        srand(time(0));\r
+        std::string area[] = {"北京市东城区", "深圳市保安区"};\r
+        int num = rand() % (sizeof(area) / sizeof(area[0]));\r
+        return area[1];\r
+    }\r
+    // 获取最高气温和最低气温\r
+\r
+    std::string MainWeatherView::GetWeatherMaxAndMinTemperature()\r
+    {\r
+        // 使用系统时间作为种子\r
+        srand(time(0));\r
+        // 生成随机数\r
+        int maxtemperature = 20 + rand() % 40; // 最高气温:20°~60°\r
+        int mintemperature = -5 + rand() % 20;\r
+        std::string MaxandMinTemperature = "最高" + std::to_string(22) + "°" + " " + "最低" + std::to_string(18) + "°";\r
+        return MaxandMinTemperature;\r
+    }\r
+\r
+    // 初始化标签\r
+    UILabel *MainWeatherView::InitLabel(int x, int y, const char *text, const char *id, int textfont, int lineheight)\r
+    {\r
+        UILabel *label = new UILabel();\r
+        label->SetPosition(x, y);\r
+        label->Resize(200, 30);\r
+        label->SetViewId(id);\r
+        label->SetStyle(STYLE_TEXT_FONT, textfont);\r
+        label->SetStyle(STYLE_LINE_HEIGHT, lineheight);\r
+        label->SetText(text);\r
+        label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        label->SetRollSpeed(0);\r
+        label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, textfont);\r
+        label->SetVisible(true);\r
+        return label;\r
+    }\r
+\r
+    void MainWeatherView::InitView(void)\r
+    {\r
+        if (container_ == nullptr)\r
+        {\r
+            return;\r
+        }\r
+        // Add ScrollView to App\r
+        if (scrollView1_ == nullptr)\r
+        {\r
+            scrollView1_ = new UIScrollView();\r
+        }\r
+        scrollView1_->SetPosition(0, 0);\r
+        scrollView1_->Resize(466, 466);\r
+        scrollView1_->SetViewId("scrollView1");\r
+        scrollView1_->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+        scrollView1_->SetVerticalScrollState(false);   // 设置纵向是否可滚动。\r
+        scrollView1_->SetHorizontalScrollState(false); // 设置横向是否可滚动。\r
+        container_->Add(scrollView1_);\r
+        scrollView1_->SetVisible(true);\r
+        /* -------------------------------------------------------------------------- */\r
+        if (image1_ == nullptr)\r
+        {\r
+            image1_ = new UIImageView();\r
+        }\r
+        image1_->SetPosition(109, 124);\r
+        image1_->Resize(100, 100);\r
+        image1_->SetViewId("image1");\r
+        image1_->SetSrc(WeatherImag.c_str());\r
+        scrollView1_->Add(image1_);\r
+        image1_->SetVisible(true);\r
+        /* -------------------------------------------------------------------------- */\r
+        label1_ = InitLabel(185, 52, Time.c_str(), "label1", 40, 47);\r
+        scrollView1_->Add(label1_);\r
+        /* -------------------------------------------------------------------------- */\r
+        label2_ = InitLabel(249, 126, Temperature.c_str(), "label2", 100, 125);\r
+        scrollView1_->Add(label2_);\r
+        /* -------------------------------------------------------------------------- */\r
+        label3_ = InitLabel(111, 264, WeatherDescription.c_str(), "label3", 35, 41);\r
+        scrollView1_->Add(label3_);\r
+        /* -------------------------------------------------------------------------- */\r
+        label4_ = InitLabel(155, 330, WeatherArea.c_str(), "label4", 26, 30);\r
+        label4_->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff));\r
+        scrollView1_->Add(label4_);\r
+        /* -------------------------------------------------------------------------- */\r
+        label5_ = InitLabel(158, 368, MaxandMinTemperature.c_str(), "label5", 20, 23);\r
+        label5_->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff));\r
+        scrollView1_->Add(label5_);\r
+        /* -------------------------------------------------------------------------- */\r
+        #if 0\r
+        // Add ImageAnimatorView to App\r
+        if (imageAnimator1_ == nullptr)\r
+        {\r
+            imageAnimator1_ = new UIImageAnimatorView();\r
+        }\r
+        imageAnimator1_->SetPosition(213, 400);\r
+        imageAnimator1_->Resize(40, 40);\r
+        imageAnimator1_->SetViewId("imageAnimator1");\r
+        imageAnimator1_->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+\r
+        // Set additional property\r
+        imageAnimator1_->SetImageAnimatorSrc(g_imageAnimator1Info, 2, 200);\r
+        imageAnimator1_->SetTimeOfPause(200);\r
+        imageAnimator1_->SetRepeatTimes(1);\r
+        imageAnimator1_->SetReverse(true);\r
+        imageAnimator1_->Start();\r
+\r
+        // Add to scrollView1\r
+        scrollView1_->Add(imageAnimator1_);\r
+        imageAnimator1_->SetVisible(true);\r
+        #endif\r
+    }\r
+\r
+    void MainWeatherView::DeInitView()\r
+    {\r
+        container_->RemoveAll();\r
+        scrollView1_->RemoveAll();\r
+        if (label1_ != nullptr)\r
+        {\r
+            delete label1_;\r
+            label1_ = nullptr;\r
+        }\r
+        if (label2_ != nullptr)\r
+        {\r
+            delete label2_;\r
+            label2_ = nullptr;\r
+        }\r
+        if (image1_ != nullptr)\r
+        {\r
+            delete image1_;\r
+            image1_ = nullptr;\r
+        }\r
+        if (label3_ != nullptr)\r
+        {\r
+            delete label3_;\r
+            label3_ = nullptr;\r
+        }\r
+        if (label4_ != nullptr)\r
+        {\r
+            delete label4_;\r
+            label4_ = nullptr;\r
+        }\r
+        if (label5_ != nullptr)\r
+        {\r
+            delete label5_;\r
+            label5_ = nullptr;\r
+        }\r
+        if (imageAnimator1_ != nullptr)\r
+        {\r
+            imageAnimator1_->Stop(); // 视图退出后动画停止\r
+            delete imageAnimator1_;\r
+            imageAnimator1_ = nullptr;\r
+        }\r
+        if (scrollView1_ != nullptr)\r
+        {\r
+            delete scrollView1_;\r
+            scrollView1_ = nullptr;\r
+        }\r
+        if (container_ != nullptr)\r
+        {\r
+            delete container_;\r
+            container_ = nullptr;\r
+        }\r
+    }\r
+\r
+    void MainWeatherView::PreLoad(void)\r
+    {\r
+        if (!viewInitStatus)\r
+        {\r
+            InitView();\r
+            viewInitStatus = true;\r
+        }\r
+    }\r
+    void MainWeatherView::OnStart()\r
+    {\r
+        View<MainWeatherPresenter>::OnStart();\r
+        if (container_ == nullptr)\r
+        {\r
+            container_ = new UIViewGroup();\r
+            container_->Resize(466, 466);\r
+            container_->SetTouchable(true);\r
+            container_->SetDraggable(true);\r
+            UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(MainWeatherPresenter::GetInstance());\r
+            container_->SetOnDragListener(draglistener);\r
+        }\r
+        PreLoad();\r
+        RootView::GetInstance()->Add(container_);\r
+    }\r
+\r
+    void MainWeatherView::OnSetUpView()\r
+    {\r
+        View<MainWeatherPresenter>::OnSetUpView();\r
+        Draw();\r
+    }\r
+\r
+    void MainWeatherView::OnTearDownView()\r
+    {\r
+\r
+        View<MainWeatherPresenter>::OnTearDownView();\r
+        return;\r
+    }\r
+\r
+    void MainWeatherView::OnStop()\r
+    {\r
+\r
+        View<MainWeatherPresenter>::OnStop();\r
+        RootView::GetInstance()->RemoveAll();\r
+        return;\r
+    }\r
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/weather/src/WeatherControlView.cpp b/code/sdk/application/wearable/nativeapp/nativeui/weather/src/WeatherControlView.cpp
new file mode 100644 (file)
index 0000000..43affeb
--- /dev/null
@@ -0,0 +1,63 @@
+#include "weather/include/WeatherControlView.h"
+
+namespace OHOS
+{
+    WeatherControlView::WeatherControlView()
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherControlView::WeatherControlView()");
+        SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
+    }
+
+    WeatherControlView::~WeatherControlView()
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherControlView::~WeatherControlView()");
+        ClearAll();
+    }
+
+    void WeatherControlView::ClearAll(void)
+    {
+        if (viewiInitStatus == true)
+        {
+            RemoveAll();
+            if (weatherView != nullptr)
+            {
+                delete weatherView;
+                weatherView = nullptr;
+            }
+        }
+    }
+
+    bool WeatherControlView::InitView(void)
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherControlView::InitView()");
+        weatherView = new WeatherView();
+        if (weatherView == nullptr)
+        {
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherView::new mainweatherView fail!");
+            return false;
+        }
+        if (weatherView->InitPage() == false)
+        {
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherView->InitPage() == false!");
+            return false;
+        }
+        Add(weatherView);
+        viewiInitStatus = true;
+        return true;
+    }
+
+    void WeatherControlView::PreLoad(void)
+    {
+        if (!viewiInitStatus)
+        {
+            InitView();
+            viewiInitStatus = true;
+        }
+    }
+
+    void WeatherControlView::UnLoad(void)
+    {
+        // Weather's usage scenes is complicated, so we do not release it's resources inner slice.
+    }
+
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/weather/src/WeatherReportPresenter.cpp b/code/sdk/application/wearable/nativeapp/nativeui/weather/src/WeatherReportPresenter.cpp
new file mode 100644 (file)
index 0000000..22ef28c
--- /dev/null
@@ -0,0 +1,78 @@
+#include "AppViewIDs.h"\r
+#include "NativeAbility.h"\r
+\r
+#include "weather/include/WeatherReportPresenter.h"\r
+\r
+namespace OHOS\r
+{\r
+\r
+    // 当前Presenter属性实例化的内存指针\r
+    static WeatherReportPresenter *g_pWeatherReportPresenter = nullptr;\r
+\r
+    WeatherReportPresenter::WeatherReportPresenter()\r
+    {\r
+\r
+        g_pWeatherReportPresenter = this;\r
+    }\r
+\r
+    WeatherReportPresenter::~WeatherReportPresenter()\r
+    {\r
+\r
+        g_pWeatherReportPresenter = nullptr;\r
+    }\r
+\r
+    WeatherReportPresenter *WeatherReportPresenter::GetInstance()\r
+    {\r
+\r
+        return g_pWeatherReportPresenter;\r
+    }\r
+\r
+    void WeatherReportPresenter::OnStart()\r
+    {\r
+\r
+        Presenter<WeatherReportView>::OnStart();\r
+    }\r
+\r
+    void WeatherReportPresenter::OnPause(void)\r
+    {\r
+\r
+        Presenter<WeatherReportView>::OnPause();\r
+    }\r
+\r
+    void WeatherReportPresenter::OnResume(void)\r
+    {\r
+\r
+        Presenter<WeatherReportView>::OnResume();\r
+    }\r
+\r
+    void WeatherReportPresenter::OnStop(void)\r
+    {\r
+\r
+        Presenter<WeatherReportView>::OnStop();\r
+    }\r
+\r
+    bool WeatherReportPresenter::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); // 气象报告界面从上往下滑进入主天气界面\r
+            return true;\r
+        }\r
+        if (event.GetDragDirection() == DragEvent::DIRECTION_BOTTOM_TO_TOP)\r
+        {\r
+            NativeAbility::GetInstance().ChangeSlice(VIEW_FUTURE_WEATHER); // 气象报告界面从下往上进入未来天气界面\r
+            return true;\r
+        }\r
+        return false;\r
+    }\r
+\r
+    bool WeatherReportPresenter::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
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/weather/src/WeatherReportView.cpp b/code/sdk/application/wearable/nativeapp/nativeui/weather/src/WeatherReportView.cpp
new file mode 100644 (file)
index 0000000..9207a89
--- /dev/null
@@ -0,0 +1,427 @@
+#include "weather/include/WeatherReportView.h"\r
+#include "weather/include/WeatherReportPresenter.h"\r
+#include "UiConfig.h"\r
+\r
+namespace OHOS\r
+{\r
+\r
+    const char *IMAGEANIMATOR3 = "/user/res/weather/WEATHER_WINDSPEED.bin";\r
+    const char *IMAGEANIMATOR2 = "/user/res/weather/WEATHER_HUMIDITY.bin";\r
+    const char *IMAGEANIMATOR1 = "/user/res/weather/WEATHER_UVI.bin";\r
+    static ImageAnimatorInfo g_imageAnimator3Info[2] = {\r
+        {IMAGEANIMATOR3, {341, 167}, 60, 60, IMG_SRC_FILE_PATH},\r
+        {"", {341, 167}, 60, 60, IMG_SRC_FILE_PATH},\r
+    };\r
+    static ImageAnimatorInfo g_imageAnimator2Info[2] = {\r
+        {IMAGEANIMATOR2, {207, 167}, 60, 60, IMG_SRC_FILE_PATH},\r
+        {"", {207, 167}, 60, 60, IMG_SRC_FILE_PATH},\r
+    };\r
+\r
+    static ImageAnimatorInfo g_imageAnimator1Info[2] = {\r
+        {IMAGEANIMATOR1, {73, 167}, 60, 60, IMG_SRC_FILE_PATH},\r
+        {"", {73, 167}, 60, 60, IMG_SRC_FILE_PATH},\r
+    };\r
+    static ImageAnimatorInfo g_imageAnimatorInfo[2] = {\r
+        {PNG_ANIMATOR1_IMAGE, {213, 400}, 40, 40, IMG_SRC_FILE_PATH},\r
+        {PNG_ANIMATOR2_IMAGE, {213, 400}, 40, 40, IMG_SRC_FILE_PATH},\r
+    };\r
+    static WeatherReportView *g_pWeatherReportView{nullptr};\r
+\r
+    WeatherReportView::WeatherReportView()\r
+    {\r
+\r
+        g_pWeatherReportView = this;\r
+    }\r
+\r
+    WeatherReportView::~WeatherReportView()\r
+    {\r
+        if (viewInitStatus == true)\r
+        {\r
+            DeInitView();\r
+        }\r
+        g_pWeatherReportView = nullptr;\r
+    }\r
+\r
+    WeatherReportView *WeatherReportView::GetInstance()\r
+    {\r
+\r
+        return g_pWeatherReportView;\r
+    }\r
+\r
+    void WeatherReportView::InitView()\r
+    {\r
+        if (container_ == nullptr)\r
+        {\r
+            container_ = new UIViewGroup();\r
+            container_->SetPosition(0, 0, 466, 466);\r
+            container_->SetStyle(STYLE_BACKGROUND_OPA, 0);\r
+            container_->SetTouchable(true);\r
+            container_->SetDraggable(true);\r
+            UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(WeatherReportPresenter::GetInstance());\r
+            container_->SetOnDragListener(draglistener);\r
+        }\r
+\r
+        // Add ScrollView to App\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
+\r
+        // Set additional property\r
+\r
+        // Add to rootView\r
+        container_->Add(scrollView1_);\r
+        scrollView1_->SetVisible(true);\r
+\r
+        // Add Label to App\r
+        if (label5_ == nullptr)\r
+        {\r
+            label5_ = new UILabel();\r
+        }\r
+        label5_->SetPosition(173, 52); // widget's left position and top position\r
+        label5_->Resize(120, 35);      // widget's width and height\r
+        label5_->SetViewId("label5");  // Set style\r
+        label5_->SetStyle(STYLE_TEXT_FONT, 30);\r
+        label5_->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+\r
+        // Set additional property\r
+        label5_->SetText("气象报告");\r
+        label5_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        label5_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        label5_->SetRollSpeed(0);\r
+        label5_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+\r
+        // Add to scrollView1\r
+        scrollView1_->Add(label5_);\r
+        label5_->SetVisible(true);\r
+\r
+        // Add ImageAnimatorView to App\r
+        if (imageAnimator3_ == nullptr)\r
+        {\r
+            imageAnimator3_ = new UIImageAnimatorView();\r
+        }\r
+        imageAnimator3_->SetPosition(341, 167);       // widget's left position and top position\r
+        imageAnimator3_->Resize(60, 60);              // widget's width and height\r
+        imageAnimator3_->SetViewId("imageAnimator3"); // Set style\r
+\r
+        // Set additional property\r
+        imageAnimator3_->SetImageAnimatorSrc(g_imageAnimator3Info, 2, 200);\r
+        imageAnimator3_->SetTimeOfPause(500);\r
+        imageAnimator3_->SetRepeatTimes(1);\r
+        imageAnimator3_->SetReverse(true);\r
+        imageAnimator3_->Start();\r
+\r
+        // Add to scrollView1\r
+        scrollView1_->Add(imageAnimator3_);\r
+        imageAnimator3_->SetVisible(true);\r
+\r
+        // Add ImageAnimatorView to App\r
+        if (imageAnimator2_ == nullptr)\r
+        {\r
+            imageAnimator2_ = new UIImageAnimatorView();\r
+        }\r
+        imageAnimator2_->SetPosition(207, 167);       // widget's left position and top position\r
+        imageAnimator2_->Resize(60, 60);              // widget's width and height\r
+        imageAnimator2_->SetViewId("imageAnimator2"); // Set style\r
+\r
+        // Set additional property\r
+        imageAnimator2_->SetImageAnimatorSrc(g_imageAnimator2Info, 2, 200);\r
+        imageAnimator2_->SetTimeOfPause(500);\r
+        imageAnimator2_->SetRepeatTimes(1);\r
+        imageAnimator2_->SetReverse(true);\r
+        imageAnimator2_->Start();\r
+\r
+        // Add to scrollView1\r
+        scrollView1_->Add(imageAnimator2_);\r
+        imageAnimator2_->SetVisible(true);\r
+\r
+        // Add ImageAnimatorView to App\r
+        if (imageAnimator1_ == nullptr)\r
+        {\r
+            imageAnimator1_ = new UIImageAnimatorView();\r
+        }\r
+        imageAnimator1_->SetPosition(73, 167);        // widget's left position and top position\r
+        imageAnimator1_->Resize(60, 60);              // widget's width and height\r
+        imageAnimator1_->SetViewId("imageAnimator1"); // Set style\r
+\r
+        // Set additional property\r
+        imageAnimator1_->SetImageAnimatorSrc(g_imageAnimator1Info, 2, 200);\r
+        imageAnimator1_->SetTimeOfPause(500);\r
+        imageAnimator1_->SetRepeatTimes(1);\r
+        imageAnimator1_->SetReverse(true);\r
+        imageAnimator1_->Start();\r
+\r
+        // Add to scrollView1\r
+        scrollView1_->Add(imageAnimator1_);\r
+        imageAnimator1_->SetVisible(true);\r
+\r
+        // Add Label to App\r
+        if (label6_ == nullptr)\r
+        {\r
+            label6_ = new UILabel();\r
+        }\r
+        label6_->SetPosition(93, 240); // widget's left position and top position\r
+        label6_->Resize(20, 50);       // widget's width and height\r
+        label6_->SetViewId("label6");  // Set style\r
+        label6_->SetStyle(STYLE_TEXT_FONT, 40);\r
+        label6_->SetStyle(STYLE_LINE_HEIGHT, 50);\r
+\r
+        // Set additional property\r
+        label6_->SetText("7");\r
+        label6_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        label6_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        label6_->SetRollSpeed(0);\r
+        label6_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40);\r
+\r
+        // Add to scrollView1\r
+        scrollView1_->Add(label6_);\r
+        label6_->SetVisible(true);\r
+\r
+        // Add Label to App\r
+        if (label7_ == nullptr)\r
+        {\r
+            label7_ = new UILabel();\r
+        }\r
+        label7_->SetPosition(210, 240); // widget's left position and top position\r
+        label7_->Resize(200, 60);       // widget's width and height\r
+        label7_->SetViewId("label7");   // Set style\r
+        label7_->SetStyle(STYLE_TEXT_FONT, 40);\r
+        label7_->SetStyle(STYLE_LINE_HEIGHT, 50);\r
+\r
+        // Set additional property\r
+        label7_->SetText("1-2");\r
+        label7_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        label7_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        label7_->SetRollSpeed(0);\r
+        label7_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40);\r
+\r
+        // Add to scrollView1\r
+        scrollView1_->Add(label7_);\r
+        label7_->SetVisible(true);\r
+\r
+        // Add Label to App\r
+        if (label8_ == nullptr)\r
+        {\r
+            label8_ = new UILabel();\r
+        }\r
+        label8_->SetPosition(337, 240); // widget's left position and top position\r
+        label8_->Resize(200, 60);       // widget's width and height\r
+        label8_->SetViewId("label8");   // Set style\r
+        label8_->SetStyle(STYLE_TEXT_FONT, 40);\r
+        label8_->SetStyle(STYLE_LINE_HEIGHT, 50);\r
+\r
+        // Set additional property\r
+        label8_->SetText("75%");\r
+        label8_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        label8_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        label8_->SetRollSpeed(0);\r
+        label8_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40);\r
+\r
+        // Add to scrollView1\r
+        scrollView1_->Add(label8_);\r
+        label8_->SetVisible(true);\r
+\r
+        // Add Label to App\r
+        if (label9_ == nullptr)\r
+        {\r
+            label9_ = new UILabel();\r
+        }\r
+        label9_->SetPosition(63, 293); // widget's left position and top position\r
+        label9_->Resize(200, 60);      // widget's width and height\r
+        label9_->SetViewId("label9");  // Set style\r
+        label9_->SetStyle(STYLE_TEXT_FONT, 26);\r
+        label9_->SetStyle(STYLE_LINE_HEIGHT, 30);\r
+\r
+        // Set additional property\r
+        label9_->SetText("紫外线");\r
+        label9_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        label9_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        label9_->SetRollSpeed(0);\r
+        label9_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 26);\r
+\r
+        // Add to scrollView1\r
+        scrollView1_->Add(label9_);\r
+        label9_->SetVisible(true);\r
+\r
+        // Add Label to App\r
+        if (label10_ == nullptr)\r
+        {\r
+            label10_ = new UILabel();\r
+        }\r
+        label10_->SetPosition(212, 293); // widget's left position and top position\r
+        label10_->Resize(290, 60);       // widget's width and height\r
+        label10_->SetViewId("label10");  // Set style\r
+        label10_->SetStyle(STYLE_TEXT_FONT, 26);\r
+        label10_->SetStyle(STYLE_LINE_HEIGHT, 30);\r
+\r
+        // Set additional property\r
+        label10_->SetText("风速");\r
+        label10_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        label10_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        label10_->SetRollSpeed(0);\r
+        label10_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 26);\r
+\r
+        // Add to scrollView1\r
+        scrollView1_->Add(label10_);\r
+        label10_->SetVisible(true);\r
+\r
+        // Add Label to App\r
+        if (label11_ == nullptr)\r
+        {\r
+            label11_ = new UILabel();\r
+        }\r
+        label11_->SetPosition(345, 293); // widget's left position and top position\r
+        label11_->Resize(200, 60);       // widget's width and height\r
+        label11_->SetViewId("label11");  // Set style\r
+        label11_->SetStyle(STYLE_TEXT_FONT, 26);\r
+        label11_->SetStyle(STYLE_LINE_HEIGHT, 30);\r
+\r
+        // Set additional property\r
+        label11_->SetText("湿度");\r
+        label11_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+        label11_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        label11_->SetRollSpeed(0);\r
+        label11_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 26);\r
+\r
+        // Add to scrollView1\r
+        scrollView1_->Add(label11_);\r
+        label11_->SetVisible(true);\r
+        /* -------------------------------------------------------------------------- */\r
+        #if 0\r
+        // Add ImageAnimatorView to App\r
+        if (imageAnimator == nullptr)\r
+        {\r
+            imageAnimator = new UIImageAnimatorView();\r
+        }\r
+        imageAnimator->SetPosition(213, 400);\r
+        imageAnimator->Resize(40, 40);\r
+        imageAnimator->SetViewId("imageAnimator1");\r
+        imageAnimator->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+\r
+        // Set additional property\r
+        imageAnimator->SetImageAnimatorSrc(g_imageAnimatorInfo, 2, 200);\r
+        imageAnimator->SetTimeOfPause(200);\r
+        imageAnimator->SetRepeatTimes(1);\r
+        imageAnimator->SetReverse(true);\r
+        imageAnimator->Start();\r
+\r
+        // Add to scrollView1\r
+        scrollView1_->Add(imageAnimator);\r
+        #endif\r
+    }\r
+\r
+    void WeatherReportView::DeInitView()\r
+    {\r
+        if (label5_ != nullptr)\r
+        {\r
+            delete label5_;\r
+            label5_ = nullptr;\r
+        }\r
+        if (imageAnimator3_ != nullptr)\r
+        {\r
+            imageAnimator3_->Stop();\r
+            delete imageAnimator3_;\r
+            imageAnimator3_ = nullptr;\r
+        }\r
+        if (imageAnimator2_ != nullptr)\r
+        {\r
+            imageAnimator2_->Stop();\r
+            delete imageAnimator2_;\r
+            imageAnimator2_ = nullptr;\r
+        }\r
+        if (imageAnimator1_ != nullptr)\r
+        {\r
+            imageAnimator1_->Stop();\r
+            delete imageAnimator1_;\r
+            imageAnimator1_ = nullptr;\r
+        }\r
+        if (imageAnimator != nullptr)\r
+        {\r
+            imageAnimator->Stop();\r
+            delete imageAnimator;\r
+            imageAnimator = nullptr;\r
+        }\r
+        if (label6_ != nullptr)\r
+        {\r
+            delete label6_;\r
+            label6_ = nullptr;\r
+        }\r
+        if (label7_ != nullptr)\r
+        {\r
+            delete label7_;\r
+            label7_ = nullptr;\r
+        }\r
+        if (label8_ != nullptr)\r
+        {\r
+            delete label8_;\r
+            label8_ = nullptr;\r
+        }\r
+        if (label9_ != nullptr)\r
+        {\r
+            delete label9_;\r
+            label9_ = nullptr;\r
+        }\r
+        if (label10_ != nullptr)\r
+        {\r
+            delete label10_;\r
+            label10_ = nullptr;\r
+        }\r
+        if (label11_ != nullptr)\r
+        {\r
+            delete label11_;\r
+            label11_ = nullptr;\r
+        }\r
+        if (scrollView1_ != nullptr)\r
+        {\r
+            delete scrollView1_;\r
+            scrollView1_ = nullptr;\r
+        }\r
+        if (container_ != nullptr)\r
+        {\r
+            container_->RemoveAll();\r
+            delete container_;\r
+            container_ = nullptr;\r
+        }\r
+    }\r
+\r
+    void WeatherReportView::PreLoad(void)\r
+    {\r
+        if (!viewInitStatus)\r
+        {\r
+            InitView();\r
+            viewInitStatus = true;\r
+        }\r
+    }\r
+    void WeatherReportView::OnStart()\r
+    {\r
+        View<WeatherReportPresenter>::OnStart();\r
+        PreLoad();\r
+        RootView::GetInstance()->Add(container_);\r
+    }\r
+\r
+    void WeatherReportView::OnSetUpView()\r
+    {\r
+\r
+        View<WeatherReportPresenter>::OnSetUpView();\r
+        Draw();\r
+    }\r
+\r
+    void WeatherReportView::OnTearDownView()\r
+    {\r
+\r
+        View<WeatherReportPresenter>::OnTearDownView();\r
+        return;\r
+    }\r
+\r
+    void WeatherReportView::OnStop()\r
+    {\r
+\r
+        View<WeatherReportPresenter>::OnStop();\r
+        RootView::GetInstance()->RemoveAll();\r
+        return;\r
+    }\r
+}
\ No newline at end of file
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/weather/src/WeatherView.cpp b/code/sdk/application/wearable/nativeapp/nativeui/weather/src/WeatherView.cpp
new file mode 100644 (file)
index 0000000..273ba54
--- /dev/null
@@ -0,0 +1,242 @@
+#include "weather/include/WeatherView.h"
+#include "UiConfig.h"
+
+/*
+当至天气界面时,主动获取最新天气数据。
+(此操作静默将进行,获取到则立刻更新显示,获取不到则重试
+重试3次无果结束更新)
+在加载该视图时,需要加载:1时间,2天气图片,3温度,4天气描述,5,地点,6,温度范围
+*/
+
+namespace OHOS
+{
+    static WeatherView *g_pWeatherView{nullptr};
+    WeatherView::WeatherView()
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherView::WeatherView()");
+        SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
+        Time = GetTime();
+        WeatherImag = GetWeatherImage();
+        Temperature = GetWeatherTemperature();
+        WeatherDescription = GetWeatherDescription();
+        WeatherArea = GetWeatherArea();
+        MaxandMinTemperature = GetWeatherMaxAndMinTemperature();
+        g_pWeatherView = this;
+    }
+
+    WeatherView::~WeatherView()
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " WeatherView::~WeatherView()");
+        ClearAll();
+        g_pWeatherView = nullptr;
+    }
+
+    void WeatherView::ClearAll()
+    {
+        if (viewInitStatus == true)
+        {
+            RemoveAll();
+            if (showCurrentTimeLabel != nullptr)
+            {
+                delete showCurrentTimeLabel;
+                showCurrentTimeLabel = nullptr;
+            }
+            if (showTemperatureLabel != nullptr)
+            {
+                delete showTemperatureLabel;
+                showTemperatureLabel = nullptr;
+            }
+            if (showWeatherImage != nullptr)
+            {
+                delete showWeatherImage;
+                showWeatherImage = nullptr;
+            }
+            if (showWeatherDescriptionLabel != nullptr)
+            {
+                delete showWeatherDescriptionLabel;
+                showWeatherDescriptionLabel = nullptr;
+            }
+            if (showWeatherAreaLabel != nullptr)
+            {
+                delete showWeatherAreaLabel;
+                showWeatherAreaLabel = nullptr;
+            }
+            if (showMaxandMinTemperatureLabel != nullptr)
+            {
+                delete showMaxandMinTemperatureLabel;
+                showMaxandMinTemperatureLabel = nullptr;
+            }
+        }
+    }
+
+    WeatherView *WeatherView::GetInstance()
+    {
+        return g_pWeatherView;
+    }
+
+    // 获取时间
+    std::string WeatherView::GetTime()
+    {
+        srand(time(0));
+        std::string area[] = {"23:54", "12:00", "7:25"};
+        int num = rand() % (sizeof(area) / sizeof(area[0]));
+        return area[1];
+    }
+
+    // 获取天气图片
+    std::string WeatherView::GetWeatherImage()
+    {
+        int size = sizeof(weather130x130) / sizeof(weather130x130[0]);
+        return weather130x130[8];
+    }
+    // 获取温度
+
+    std::string WeatherView::GetWeatherTemperature()
+    {
+        // 使用系统时间作为种子
+        srand(time(0));
+        int temperature = rand() % 50;
+        return std::to_string(22) + "°";
+    }
+    // 获取天气描述
+
+    std::string WeatherView::GetWeatherDescription()
+    {
+        srand(time(0));
+        std::string area[] = {"晴", "雨夹雪", "雷阵雨伴有冰雹"};
+        int num = rand() % (sizeof(area) / sizeof(area[0]));
+        return area[0];
+    }
+    // 获取天气地区
+
+    std::string WeatherView::GetWeatherArea()
+    {
+        srand(time(0));
+        std::string area[] = {"北京市东城区", "深圳市保安区"};
+        int num = rand() % (sizeof(area) / sizeof(area[0]));
+        return area[1];
+    }
+    // 获取最高气温和最低气温
+
+    std::string WeatherView::GetWeatherMaxAndMinTemperature()
+    {
+        // 使用系统时间作为种子
+        srand(time(0));
+        // 生成随机数
+        int maxtemperature = 20 + rand() % 40; // 最高气温:20°~60°
+        int mintemperature = -5 + rand() % 20;
+        std::string MaxandMinTemperature = "最高" + std::to_string(22) + "°" + " " + "最低" + std::to_string(18) + "°";
+        return MaxandMinTemperature;
+    }
+
+    // 初始化标签
+    UILabel *WeatherView::InitLabel(int x, int y, const char *text, const char *id, int textfont, int lineheight)
+    {
+        UILabel *label = new UILabel();
+        if (label == nullptr)
+        {
+            return nullptr;
+        }
+        label->SetPosition(x, y);
+        label->Resize(200, 30);
+        label->SetViewId(id);
+        label->SetStyle(STYLE_TEXT_FONT, textfont);
+        label->SetStyle(STYLE_LINE_HEIGHT, lineheight);
+        label->SetText(text);
+        label->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
+        label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+        label->SetRollSpeed(0);
+        label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, textfont);
+        label->SetVisible(true);
+        return label;
+    }
+
+    // 初始化天气页面
+    bool WeatherView::InitPage(void)
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " WeatherView::InitPage()");
+        /* -------------------------------------------------------------------------- */
+        showWeatherImage = new UIImageView();
+        if (showWeatherImage == nullptr)
+        {
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherView::new showWeatherImage fail!");
+            return false;
+        }
+        showWeatherImage->SetPosition(109, 124, 100, 100);
+        showWeatherImage->SetSrc(WeatherImag.c_str());
+        /* -------------------------------------------------------------------------- */
+        showCurrentTimeLabel = InitLabel(185, 52, Time.c_str(), "showCurrentTimeLabel", 40, 47);
+        if (showCurrentTimeLabel == nullptr)
+        {
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherView::new showCurrentTimeLabel fail!");
+            return false;
+        }
+        /* -------------------------------------------------------------------------- */
+        showTemperatureLabel = InitLabel(249, 126, Temperature.c_str(), "showTemperatureLabel", 100, 125);
+        if (showTemperatureLabel == nullptr)
+        {
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherView::new showTemperatureLabel fail!");
+            return false;
+        }
+        /* -------------------------------------------------------------------------- */
+        UILabel *showWeatherDescriptionLabel = new UILabel();
+        showWeatherDescriptionLabel->SetPosition(83, 264,300,40);
+        showWeatherDescriptionLabel->SetViewId("showWeatherDescriptionLabel");
+        showWeatherDescriptionLabel->SetStyle(STYLE_TEXT_FONT, 35);
+        showWeatherDescriptionLabel->SetStyle(STYLE_LINE_HEIGHT, 41);
+        showWeatherDescriptionLabel->SetText(WeatherDescription.c_str());
+        showWeatherDescriptionLabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);
+        showWeatherDescriptionLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+        showWeatherDescriptionLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 35);
+        if (showWeatherDescriptionLabel == nullptr)
+        {
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherView::new showWeatherDescriptionLabel fail!");
+            return false;
+        }
+        /* -------------------------------------------------------------------------- */
+        showWeatherAreaLabel = InitLabel(155, 330, WeatherArea.c_str(), "showWeatherAreaLabel", 26, 30);
+        if (showWeatherAreaLabel == nullptr)
+        {
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherView::new showWeatherAreaLabel fail!");
+            return false;
+        }
+        showWeatherAreaLabel->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff));
+        /* -------------------------------------------------------------------------- */
+        showMaxandMinTemperatureLabel = InitLabel(158, 368, MaxandMinTemperature.c_str(), "showMaxandMinTemperatureLabel", 20, 23);
+        if (showMaxandMinTemperatureLabel == nullptr)
+        {
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherView::new showMaxandMinTemperatureLabel fail!");
+            return false;
+        }
+        showMaxandMinTemperatureLabel->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff));
+       
+        /* -------------------------------- 将组件添加到根视图 ------------------------------- */
+        Add(showWeatherImage);
+        Add(showCurrentTimeLabel);
+        Add(showTemperatureLabel);
+        Add(showWeatherDescriptionLabel);
+        Add(showWeatherAreaLabel);
+        Add(showMaxandMinTemperatureLabel);
+        viewInitStatus = true;
+        return true;
+    }
+
+    bool WeatherView::InitView()
+    {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherView::InitView");
+        if (InitPage() == false)
+        {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitPage fail");
+            return false;
+        }
+        SetDraggable(true);
+        SetTouchable(true);
+        return true;
+    }
+
+    // 获取视图初始化状态
+    bool WeatherView::GetInitViewState(void)
+    {
+        return viewInitStatus;
+    }
+}
\ No newline at end of file
index d1fa4b5..381dbe9 100644 (file)
Binary files a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/APPLIST_COMPASS_IMAGE.bin and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/APPLIST_COMPASS_IMAGE.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/APPLIST_WEATHER_IMAGE.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/APPLIST_WEATHER_IMAGE.bin
new file mode 100644 (file)
index 0000000..30da839
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/APPLIST_WEATHER_IMAGE.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_BACKGROUND.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_BACKGROUND.bin
new file mode 100644 (file)
index 0000000..143df27
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_BACKGROUND.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_CLEAR-CLOUDY.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_CLEAR-CLOUDY.bin
new file mode 100644 (file)
index 0000000..f253a7e
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_CLEAR-CLOUDY.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_CLEAR-SUNNY.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_CLEAR-SUNNY.bin
new file mode 100644 (file)
index 0000000..150f902
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_CLEAR-SUNNY.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_DUSTSTORM.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_DUSTSTORM.bin
new file mode 100644 (file)
index 0000000..f1a9c60
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_DUSTSTORM.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_FOGGY.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_FOGGY.bin
new file mode 100644 (file)
index 0000000..b16fc33
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_FOGGY.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_HAZE.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_HAZE.bin
new file mode 100644 (file)
index 0000000..a77f3a7
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_HAZE.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_HUMIDITY.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_HUMIDITY.bin
new file mode 100644 (file)
index 0000000..678ff93
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_HUMIDITY.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_OVERCAST.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_OVERCAST.bin
new file mode 100644 (file)
index 0000000..e888f9c
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_OVERCAST.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_RAIN.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_RAIN.bin
new file mode 100644 (file)
index 0000000..ede8375
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_RAIN.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_SNOW.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_SNOW.bin
new file mode 100644 (file)
index 0000000..27d521e
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_SNOW.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_SUNNY-CLOUNDY.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_SUNNY-CLOUNDY.bin
new file mode 100644 (file)
index 0000000..4460e92
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_SUNNY-CLOUNDY.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_SUNNY.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_SUNNY.bin
new file mode 100644 (file)
index 0000000..75c9542
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_SUNNY.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_THUNDERSHOWER.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_THUNDERSHOWER.bin
new file mode 100644 (file)
index 0000000..4954d5e
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_THUNDERSHOWER.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_UNKNOWN.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_UNKNOWN.bin
new file mode 100644 (file)
index 0000000..604d809
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_UNKNOWN.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_UVI.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_UVI.bin
new file mode 100644 (file)
index 0000000..9a1e8ce
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_UVI.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_WINDSPEED.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_WINDSPEED.bin
new file mode 100644 (file)
index 0000000..1b02cde
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/WEATHER_WINDSPEED.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_clear-cloudy.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_clear-cloudy.bin
new file mode 100644 (file)
index 0000000..96d1653
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_clear-cloudy.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_clear-sunny.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_clear-sunny.bin
new file mode 100644 (file)
index 0000000..bda9c3e
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_clear-sunny.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_duststorm.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_duststorm.bin
new file mode 100644 (file)
index 0000000..c6710e7
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_duststorm.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_foggy.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_foggy.bin
new file mode 100644 (file)
index 0000000..d38ac2e
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_foggy.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_haze.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_haze.bin
new file mode 100644 (file)
index 0000000..6f795a1
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_haze.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_overcast.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_overcast.bin
new file mode 100644 (file)
index 0000000..2729623
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_overcast.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_rain.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_rain.bin
new file mode 100644 (file)
index 0000000..b3874bd
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_rain.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_snow.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_snow.bin
new file mode 100644 (file)
index 0000000..f92e6fe
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_snow.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_sunny-cloudy.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_sunny-cloudy.bin
new file mode 100644 (file)
index 0000000..b3eae3b
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_sunny-cloudy.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_sunny.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_sunny.bin
new file mode 100644 (file)
index 0000000..548273d
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_sunny.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_thundershower.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_thundershower.bin
new file mode 100644 (file)
index 0000000..148c18b
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_thundershower.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_unknown.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_unknown.bin
new file mode 100644 (file)
index 0000000..50b0ff8
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/weather/weather_unknown.bin differ