From: luozheng <1732036298@qq.com> Date: Sat, 16 Mar 2024 06:43:30 +0000 (+0800) Subject: 天气app视图修改 X-Git-Tag: release_V1.2.70_20241020_135402~1274^2~8^2~5 X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=942d2089c7956ec62dc5cedde8e0da27ef92aa46;p=mirrors%2FFD230.git 天气app视图修改 --- diff --git a/code/sdk/application/wearable/fd230app/CMakeLists.txt b/code/sdk/application/wearable/fd230app/CMakeLists.txt index 66a9a9f4d..4d25652a4 100644 --- a/code/sdk/application/wearable/fd230app/CMakeLists.txt +++ b/code/sdk/application/wearable/fd230app/CMakeLists.txt @@ -252,9 +252,9 @@ set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/config/src/ConfigModel.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 diff --git a/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h b/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h index 3696585a0..487957f8e 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h +++ b/code/sdk/application/wearable/fd230app/nativelauncher/include/AppViewIDs.h @@ -43,7 +43,6 @@ typedef enum : uint16_t VIEW_INDOORWALK, // 室内步行 VIEW_SHUTDOWN_OR_REBOOT, // 关机或重启界面 VIEW_WEATHER, // 天气 - VIEW_WEATHER_REPORT, // 气象报告 VIEW_FUTURE_WEATHER, // 未来天气 VIEW_GET_WEATHER_DATA_ERROR, // 获取天气数据失败 VIEW_SYSTEM, // 系统 diff --git a/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h b/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h index e70e7807c..d195de5a5 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h +++ b/code/sdk/application/wearable/fd230app/nativelauncher/include/NativeLauncher.h @@ -34,7 +34,6 @@ namespace OHOS void InitRecordingSlice(void); /* ----------------------------------- 天气 ----------------------------------- */ void InitWeatherSlice(void); - void InitWeatherReportSlice(void); void InitFutureWeatherSlice(void); void InitGetWeatherDataErrorSlice(void); /* -------------------------------------------------------------------------- */ diff --git a/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp b/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp index e3879fdd8..398629a19 100644 --- a/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp +++ b/code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp @@ -64,8 +64,6 @@ #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" @@ -161,7 +159,6 @@ namespace OHOS {VIEW_INDOORWALK, &NativeLauncher::InitIndoorWalkSlice}, {VIEW_SHUTDOWN_OR_REBOOT, &NativeLauncher::InitRebootSlice}, {VIEW_WEATHER, &NativeLauncher::InitWeatherSlice}, // 天气 - {VIEW_WEATHER_REPORT, &NativeLauncher::InitWeatherReportSlice}, // 气象报告 {VIEW_FUTURE_WEATHER, &NativeLauncher::InitFutureWeatherSlice}, // 未来天气 {VIEW_GET_WEATHER_DATA_ERROR, &NativeLauncher::InitGetWeatherDataErrorSlice}, // 获取天气数据失败 {VIEW_SYSTEM, &NativeLauncher::InitSystemSlice}, // 系统实例化地址 @@ -509,17 +506,6 @@ namespace OHOS NativeAbility::GetInstance().AddSliceProxy(VIEW_WEATHER, mainweather); } - void NativeLauncher::InitWeatherReportSlice(void) // 气象报告 - { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitWeatherReportSlice"); - SliceProxy *weatherreport = new AbilitySliceProxy; - if (weatherreport == nullptr) - { - return; - } - NativeAbility::GetInstance().AddSliceProxy(VIEW_WEATHER_REPORT, weatherreport); - } - void NativeLauncher::InitFutureWeatherSlice(void) // 未来天气 { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitFutureWeatherSlice"); diff --git a/code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModel.h b/code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModel.h index 15909453a..5ae3a10d6 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModel.h @@ -6,7 +6,7 @@ #include #include "../../../../../../open_source/openharmony/third_party/cJSON/cJSON.h" #include "wearable_log.h" - +#include "components/ui_image_animator.h" namespace OHOS { class ConfigModel @@ -144,6 +144,34 @@ namespace OHOS } } } + /* ------------------------------ ImageAnimator ----------------------------- */ + /* + * 图片动画类 + */ + class ImageAnimator + { + public: + struct ImageAnimatorConfig + { + int16_t x; + int16_t y; + int16_t w; + int16_t h; + + int numFrames; + int time; + } imageAnimatorConfig; + // 构造函数 + ImageAnimator(); + // 析构函数 + ~ImageAnimator(); + const char **CreateImagePathsArray(const char *basePath, const char *fileExtension, int numImages); + + void InitImageAnimatorSource(UIImageAnimatorView *&imageAnimator, ImageAnimatorInfo *&imageAnimatorInfo, const char **imagePaths, const ImageAnimatorConfig &imageAnimatorConfig); + + void FreeImagePathsArray(const char **imagePaths, const int numImages); + + }; } #endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/config/src/ConfigModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/config/src/ConfigModel.cpp index 7d4feec4c..783635b6e 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/config/src/ConfigModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/config/src/ConfigModel.cpp @@ -128,4 +128,85 @@ namespace OHOS { return HeartRateOrBloodOxygenQuickAccessSwitch; } + + /* ------------------------------ ImageAnimator ----------------------------- */ + + ImageAnimator::ImageAnimator() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ImageAnimator::ImageAnimator"); + } + + ImageAnimator::~ImageAnimator() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ImageAnimator::~ImageAnimator"); + } + + /* + * @brief 创建并初始化图像路径数组 + * @param basePath 包含图片文件的基本路径 + * @param fileExtension 图片文件的扩展名 + * @param numImages 图片文件的数量 + * @return 返回包含图片文件路径的数组 + */ + const char **ImageAnimator::CreateImagePathsArray(const char *basePath, const char *fileExtension, int numImages) + { + const char **imagePaths = new const char *[numImages]; + char buffer[256]; + for (int i = 0; i < numImages; i++) + { + snprintf(buffer, sizeof(buffer), "%s%d.%s", basePath, i + 1, fileExtension); + imagePaths[i] = strdup(buffer); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " imagePaths[%d] = %s", i, imagePaths[i]); + } + return imagePaths; + } + + /* + * @brief 初始化UIImageAnimatorView,并设置为GIF动画 + * 该函数用于使用提供的GIF图像和属性初始化UIImageAnimatorView + * @param imageAnimator 要初始化的UIImageAnimatorView对象的引用 + * @param imagePaths 图片路径 + * @param imageAnimatorInfo 图片映像的信息 + * @param imageAnimatorConfig 样式配置信息 + */ + void ImageAnimator::InitImageAnimatorSource(UIImageAnimatorView *&imageAnimator, ImageAnimatorInfo *&imageAnimatorInfo, const char **imagePaths, const ImageAnimatorConfig &imageAnimatorConfig) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ImageAnimator::InitImageAnimatorSource"); + + if (imageAnimator == nullptr) + { + imageAnimator = new UIImageAnimatorView(); + } + imageAnimator->SetPosition(imageAnimatorConfig.x, imageAnimatorConfig.y, imageAnimatorConfig.w, imageAnimatorConfig.h); + imageAnimator->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff); + imageAnimator->SetStyle(STYLE_BACKGROUND_OPA, 0xff); + + imageAnimatorInfo = new ImageAnimatorInfo[imageAnimatorConfig.numFrames]; + for (int i = 0; i < imageAnimatorConfig.numFrames; i++) + { + imageAnimatorInfo[i].imagePath = imagePaths[i]; + imageAnimatorInfo[i].pos.x = imageAnimatorConfig.x; + imageAnimatorInfo[i].pos.y = imageAnimatorConfig.y; + imageAnimatorInfo[i].width = imageAnimatorConfig.w; + imageAnimatorInfo[i].height = imageAnimatorConfig.h; + imageAnimatorInfo[i].imageType = IMG_SRC_FILE_PATH; + } + + imageAnimator->SetImageAnimatorSrc(imageAnimatorInfo, imageAnimatorConfig.numFrames, imageAnimatorConfig.time); // 200 is the default delay time + imageAnimator->SetTimeOfPause(imageAnimatorConfig.time); + imageAnimator->SetRepeat(true); + } + /* + * 释放图片文件路径数组占用的内存 + * @param imagePaths 图片文件路径数组 + * @param numImages 图片文件的数量 + */ + void ImageAnimator::FreeImagePathsArray(const char **imagePaths, const int numImages) + { + for (int i = 0; i < numImages; i++) + { + free((void *)imagePaths[i]); + } + delete[] imagePaths; + } } \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/weather/include/MainWeatherPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/weather/include/MainWeatherPresenter.h index 0ad0ca063..04e1e8302 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/weather/include/MainWeatherPresenter.h +++ b/code/sdk/application/wearable/fd230app/nativeui/weather/include/MainWeatherPresenter.h @@ -7,11 +7,13 @@ /*主天气视图*/ namespace OHOS { + static constexpr const char *MAIN_WEATHER_VIEW = "MainWeatherview"; class MainWeatherView; class MainWeatherPresenter : public Presenter, public UIView::OnClickListener, public RootView::OnKeyActListener, - public UIView::OnDragListener + public UIView::OnDragListener, + public UISwipeView::OnSwipeListener { public: MainWeatherPresenter(); @@ -28,7 +30,9 @@ namespace OHOS // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承; bool OnClick(UIView &view, const ClickEvent &event) override; bool OnDrag(UIView &view, const DragEvent &event) override; + bool OnDragEnd(UIView &view, const DragEvent &event) override; bool OnKeyAct(UIView &view, const KeyEvent &event) override; // 增加按键事件 + void OnSwipe(UISwipeView& view) override; }; } // namespace OHOS diff --git a/code/sdk/application/wearable/fd230app/nativeui/weather/include/MainWeatherView.h b/code/sdk/application/wearable/fd230app/nativeui/weather/include/MainWeatherView.h index b5554d403..cbc2de4ef 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/weather/include/MainWeatherView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/weather/include/MainWeatherView.h @@ -3,10 +3,20 @@ #include "BaseView.h" #include "View.h" -#include "weather/include/WeatherView.h" +#include "components/ui_swipe_view.h" +#include "weather/include/WeatherView.h" +#include "weather/include/WeatherReportView.h" namespace OHOS { + typedef enum + { + MAINWEATHERVIEW = 0, // 主天气视图 + WEATHERREPORTVIEW, // 气象报告视图 + // FUTUREWEATHERVIEW, // 未来七天天气视图 + MAX_WEATHERVIEW, + } WeatherPageId; + class MainWeatherPresenter; class MainWeatherView : public View { @@ -15,14 +25,29 @@ namespace OHOS MainWeatherView(); virtual ~MainWeatherView(); static MainWeatherView *GetInstance(void); + UIViewGroup *MainWeatherViewInit(void); + void ClearAll(void); + AppGroupView *WeatherViewPageInit(void); + AppGroupView *WeatherReportViewPageInit(void); + WeatherView * GetWeatherView(void); + WeatherReportView *GetWeatherReportView(void); + public: void OnStart() override; void OnSetUpView() override; void OnTearDownView() override; void OnStop() override; private: - WeatherView * weatherView{nullptr}; + WeatherView *weatherView{nullptr}; + WeatherReportView *weatherReportView{nullptr}; + + private: + int16_t maxPage = MAX_WEATHERVIEW; + UISwipeView *weatherSwipeViewList{nullptr}; // 天气滑动视图列表 + AppGroupView *recordCard[MAX_WEATHERVIEW]{nullptr}; + bool pageStatus[MAX_WEATHERVIEW]{false}; + AppGroupView *CreatePage(int32_t WeatherPageId); }; } // namespace OHOS #endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/weather/include/WeatherReportPresenter.h b/code/sdk/application/wearable/fd230app/nativeui/weather/include/WeatherReportPresenter.h deleted file mode 100644 index a6049260a..000000000 --- a/code/sdk/application/wearable/fd230app/nativeui/weather/include/WeatherReportPresenter.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef WEATHER_REPORT_PRESENTER_H -#define WEATHER_REPORT_PRESENTER_H - -#include "Presenter.h" -#include "WeatherReportView.h" - -namespace OHOS -{ - class WeatherReportView; - - class WeatherReportPresenter : public Presenter, - public UIView::OnClickListener, - public UIView::OnDragListener - { - public: - WeatherReportPresenter(); - virtual ~WeatherReportPresenter(); - - void OnStart() override; - void OnPause() override; - void OnResume() override; - void OnStop() override; - - static WeatherReportPresenter *GetInstance(); - - private: - // 因为继承了OnClickListener,所以有OnClick属性,至于参数,原函数也这样直接继承; - bool OnClick(UIView &view, const ClickEvent &event) override; - bool OnDrag(UIView &view, const DragEvent &event) override; - }; -} // namespace OHOS - -#endif // WeatherReport_PRESENTER_H \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/weather/include/WeatherReportView.h b/code/sdk/application/wearable/fd230app/nativeui/weather/include/WeatherReportView.h index 31c90825f..d5e112a10 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/weather/include/WeatherReportView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/weather/include/WeatherReportView.h @@ -3,45 +3,64 @@ #include "BaseView.h" #include "View.h" +#include "AppGroupView.h" #include "components/ui_view_group.h" #include "components/ui_scroll_view.h" -#include "components/ui_label.h" +#include "components/ui_label_ext.h" #include "components/ui_image_animator.h" +#include "config/include/ConfigModel.h" namespace OHOS { - class WeatherReportPresenter; - class WeatherReportView : public View + + class WeatherReportView : public AppGroupView { public: + struct LabelConfig + { + int16_t left; + int16_t top; + int16_t width; + int16_t height; + int16_t fontSize; // 字体大小 + int16_t lineHeigh; // 行高 + const char *text; // 文本 + uint8_t lineBreakMode; // 断行模式。 + }; WeatherReportView(); virtual ~WeatherReportView(); static WeatherReportView *GetInstance(void); - - void OnStart() override; - void OnSetUpView() override; - void OnTearDownView() override; - void OnStop() override; - - private: - void InitView(void); - void DeInitView(void); - void PreLoad(void); + bool InitPage(void); + virtual bool InitView(void *caller) override; + void ClearAll(void); + UIImageAnimatorView *GetUVImageAnimatorView() + { + return UVImageAnimatorView; + } private: - UIViewGroup *container_ = nullptr; - UIScrollView *scrollView1_ = nullptr; - UILabel *label5_ = nullptr; - UIImageAnimatorView *imageAnimator3_ = nullptr; - UIImageAnimatorView *imageAnimator2_ = nullptr; - UIImageAnimatorView *imageAnimator1_ = nullptr; - UIImageAnimatorView *imageAnimator = nullptr; - UILabel *label6_ = nullptr; - UILabel *label7_ = nullptr; - UILabel *label8_ = nullptr; - UILabel *label9_ = nullptr; - UILabel *label10_ = nullptr; - UILabel *label11_ = nullptr; + UILabelExt *SetUpLabel(LabelConfig &labelconfig); // 设置标签 + bool WeatherReportViewLabelInit(void); + bool WeatherReportViewImageAnimatorViewInit(void); + UILabelExt *title{nullptr}; // 标题 + UILabelExt *UV{nullptr}; // 紫外线 + UILabelExt *UV_Number{nullptr}; // + UILabelExt *WindSpeed{nullptr}; // 风速 + UILabelExt *WindSpeed_Number{nullptr}; // + UILabelExt *Humidity{nullptr}; // 湿度 + UILabelExt *Humidity_Number{nullptr}; // + UIImageAnimatorView *UVImageAnimatorView{nullptr}; // 紫外线动画 + UIImageAnimatorView *WindSpeedImageAnimatorView{nullptr}; // 风速动画 + UIImageAnimatorView *HumidityImageAnimatorView{nullptr}; // 湿度动画 + UIImageAnimatorView *AnimatorView{nullptr}; + ImageAnimator *p_ImageAnimator{nullptr}; + ImageAnimatorInfo *UVimageAnimatorInfo{nullptr}; + ImageAnimatorInfo *WindSpeedimageAnimatorInfo{nullptr}; + ImageAnimatorInfo *HumidityimageAnimatorInfo{nullptr}; + const char **UVPaths{nullptr}; + const char **WindSpeedPaths{nullptr}; + const char **HumidityPaths{nullptr}; + std::string imagePaths = "/user/res/weather/weather60x60gif"; bool viewInitStatus{false}; }; } // namespace OHOS diff --git a/code/sdk/application/wearable/fd230app/nativeui/weather/include/WeatherView.h b/code/sdk/application/wearable/fd230app/nativeui/weather/include/WeatherView.h index 24b8e64d4..9a2ffebea 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/weather/include/WeatherView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/weather/include/WeatherView.h @@ -36,7 +36,7 @@ namespace OHOS namespace OHOS { - class WeatherView : public UIViewGroup + class WeatherView : public AppGroupView { public: @@ -44,7 +44,7 @@ namespace OHOS virtual ~WeatherView(); static WeatherView *GetInstance(void); bool InitPage(void); - bool InitView(void); + virtual bool InitView(void *caller) override; void ClearAll(); bool GetInitViewState(void); diff --git a/code/sdk/application/wearable/fd230app/nativeui/weather/src/FutureWeatherPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/weather/src/FutureWeatherPresenter.cpp index 8c2d22b4a..723519533 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/weather/src/FutureWeatherPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/weather/src/FutureWeatherPresenter.cpp @@ -57,7 +57,7 @@ namespace OHOS if (event.GetDragDirection() == DragEvent::DIRECTION_TOP_TO_BOTTOM && (event.GetDeltaY() > 20) && (event.GetDeltaY() > (2 * MATH_ABS(event.GetDeltaX())))) { - NativeAbility::GetInstance().ChangeSlice(VIEW_WEATHER_REPORT); // 未来天气界面从上往下滑进入气象报告界面 + //NativeAbility::GetInstance().ChangeSlice(VIEW_WEATHER_REPORT); // 未来天气界面从上往下滑进入气象报告界面 } return true; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/weather/src/MainWeatherPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/weather/src/MainWeatherPresenter.cpp index 6acebea7a..595311ce8 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/weather/src/MainWeatherPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/weather/src/MainWeatherPresenter.cpp @@ -52,25 +52,27 @@ namespace OHOS bool MainWeatherPresenter::OnDrag(UIView &view, const DragEvent &event) { - if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT && - (event.GetDeltaX() > 20) && (event.GetDeltaX() > (2 * MATH_ABS(event.GetDeltaY())))) + + return true; + } + + bool MainWeatherPresenter::OnDragEnd(UIView &view, const DragEvent &event) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " MainWeatherPresenter::OnDragEnd"); + if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) { NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST); return true; } - // else if (event.GetDragDirection() == DragEvent::DIRECTION_BOTTOM_TO_TOP) - // { - // NativeAbility::GetInstance().ChangeSlice(VIEW_WEATHER_REPORT); // 主天气界面从下往上滑进入气象报告界面 - // return true; - // } - return false; + return true; } bool MainWeatherPresenter::OnClick(UIView &view, const ClickEvent &event) { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " MainWeatherPresenter::OnClick"); - // 根据控件id查找是哪个控件触发了点击回调 - // if (strcmp(view.GetViewId(), 控件ID) == 0) + UNUSED(view); + UNUSED(event); return true; } @@ -79,12 +81,18 @@ namespace OHOS { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SettingPresenter::OnKeyAct"); uint16 keyID = event.GetKeyId(); - //如果是power键就返回上一级 - if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER)) - { - uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId(); - NativeAbility::GetInstance().ChangeSlice(preSlice); - } + // 如果是power键就返回上一级 + if (keyID == static_cast(ZliteKeyCode::ZLITE_KEY_POWER)) + { + uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId(); + NativeAbility::GetInstance().ChangeSlice(preSlice); + } return true; } + + void MainWeatherPresenter::OnSwipe(UISwipeView &view) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainWeatherPresenter::OnSwipe,current tab index = %d", view.GetCurrentPage()); + //WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "the view index = %d,dragging direction = %d,current tab index = %d", view.GetViewIndex(), view.GetDirection(), view.GetCurrentPage()); + } } \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/weather/src/MainWeatherView.cpp b/code/sdk/application/wearable/fd230app/nativeui/weather/src/MainWeatherView.cpp index 8a7ceb3f5..24fd107be 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/weather/src/MainWeatherView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/weather/src/MainWeatherView.cpp @@ -1,41 +1,110 @@ #include "weather/include/MainWeatherView.h" #include "weather/include/MainWeatherPresenter.h" +#include "ScreenModels.h" namespace OHOS { static MainWeatherView *g_pMainWeatherView{nullptr}; MainWeatherView::MainWeatherView() { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainWeatherView::MainWeatherView"); g_pMainWeatherView = this; } MainWeatherView::~MainWeatherView() { WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainWeatherView::~MainWeatherView"); - RootView::GetInstance()->Remove(weatherView); + ClearAll(); + g_pMainWeatherView = nullptr; + } + + MainWeatherView *MainWeatherView::GetInstance(void) + { + return g_pMainWeatherView; + } + + void MainWeatherView::ClearAll(void) + { + for (int32_t i = 0; i < maxPage; i++) + { + recordCard[i] = nullptr; + } + weatherSwipeViewList->RemoveAll(); + delete weatherView; weatherView = nullptr; - g_pMainWeatherView = nullptr; + + delete weatherReportView; + weatherReportView = nullptr; + + delete weatherSwipeViewList; + weatherSwipeViewList = nullptr; } - void MainWeatherView::OnStart() + /* + * @brief 主天气页面视图初始化 + */ + UIViewGroup *MainWeatherView::MainWeatherViewInit(void) { - View::OnStart(); - weatherView = new WeatherView(); - if (weatherView == nullptr) + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainWeatherView::MainWeatherViewInit"); + weatherSwipeViewList = new UISwipeView(UISwipeView::VERTICAL); + if (nullptr == weatherSwipeViewList) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "weatherSwipeViewList new fail!!"); + return nullptr; + } + + weatherSwipeViewList->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full); + weatherSwipeViewList->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION); // 0 : X; 0 : Y + weatherSwipeViewList->SetAnimatorTime(50); // 50:animator drag time(ms) + for (uint16_t i = 0; i < maxPage; i++) + { + recordCard[i] = CreatePage(i); + if (nullptr == recordCard[i]) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "recordCard[%d] is nullptr!!", i); + return nullptr; + } + recordCard[i]->InitView(this); + weatherSwipeViewList->Add(recordCard[i]); + } + + UIView::OnClickListener *weatherOnClickListener = (UIView::OnClickListener *)OHOS::MainWeatherPresenter::GetInstance(); + if (weatherOnClickListener == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "weatherOnClickListener new fail"); + return nullptr; + } + + UIView::OnDragListener *weatherOnDragListener = (UIView::OnDragListener *)OHOS::MainWeatherPresenter::GetInstance(); + if (weatherOnDragListener == nullptr) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainWeatherView::new weatherView fail!"); - return; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "weatherOnDragListener new fail"); + return nullptr; } - UIView::OnDragListener *weatherDragListener = (UIView::OnDragListener *)OHOS::MainWeatherPresenter::GetInstance(); - if (weatherDragListener == nullptr) + + UISwipeView::OnSwipeListener *weatherOnSwipeListener = (UISwipeView::OnSwipeListener *)OHOS::MainWeatherPresenter::GetInstance(); + if (weatherOnSwipeListener == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "weatherDragListener new fail"); - return; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "weatherOnSwipeListener new fail"); + return nullptr; } - weatherView->SetOnDragListener(weatherDragListener); - weatherView->InitView(); - RootView::GetInstance()->Add(weatherView); - // 增加按键监听 + + weatherSwipeViewList->SetOnClickListener(weatherOnClickListener); + weatherSwipeViewList->SetOnDragListener(weatherOnDragListener); + weatherSwipeViewList->SetOnSwipeListener(weatherOnSwipeListener); + weatherSwipeViewList->SetViewId(MAIN_WEATHER_VIEW); + weatherSwipeViewList->SetDraggable(true); + weatherSwipeViewList->SetTouchable(true); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainWeatherView InitPage over!!"); + + return weatherSwipeViewList; + } + + void MainWeatherView::OnStart() + { + View::OnStart(); + MainWeatherViewInit(); + RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::MainWeatherPresenter::GetInstance(); RootView::GetInstance()->SetOnKeyActListener(keyactListener); } @@ -43,6 +112,7 @@ namespace OHOS void MainWeatherView::OnSetUpView() { View::OnSetUpView(); + RootView::GetInstance()->Add(weatherSwipeViewList); Draw(); } @@ -60,4 +130,76 @@ namespace OHOS RootView::GetInstance()->RemoveAll(); return; } + + WeatherView *MainWeatherView::GetWeatherView(void) + { + return weatherView; + } + + WeatherReportView *MainWeatherView::GetWeatherReportView(void) + { + return weatherReportView; + } + + /* + * @brief 天气页面视图初始化 + */ + AppGroupView *MainWeatherView::WeatherViewPageInit(void) + { + weatherView = new WeatherView(); + if (weatherView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainWeatherView::new weatherView fail!"); + return nullptr; + } + + return weatherView; + } + + /* + * @brief 气象报告视图初始化 + */ + AppGroupView *MainWeatherView::WeatherReportViewPageInit(void) + { + weatherReportView = new WeatherReportView(); + if (weatherReportView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainWeatherView::new weatherReportView fail!"); + return nullptr; + } + return weatherReportView; + } + + struct MainWeatherViewMapper + { + const int16_t viewId; + AppGroupView *(MainWeatherView::*func)(void); + }; + + // 2.ViewMapper[] 是一个静态的视图映射数组,将视图ID与DisplayBrightnessViewMapper类中的特定成员函数指针进行了绑定。 + static const MainWeatherViewMapper g_pageMapper[] = { + {MAINWEATHERVIEW, &MainWeatherView::WeatherViewPageInit}, + {WEATHERREPORTVIEW, &MainWeatherView::WeatherReportViewPageInit}, + }; + + /* + * @brief 根据提供的 WeatherPageId 查找对应的页面ID,然后根据这个页面ID来创建对应的页面视图 + */ + AppGroupView *MainWeatherView::CreatePage(int32_t WeatherPageId) + { + uint16_t i; + AppGroupView *view = nullptr; + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CreatePage WeatherPageId:%d", WeatherPageId); + + for (i = 0; i < sizeof(g_pageMapper) / sizeof(g_pageMapper[0]); i++) + { + if (g_pageMapper[i].viewId == WeatherPageId) + { // 正确使用 WeatherPageId 来匹配视图ID + view = (this->*(g_pageMapper[i].func))(); // 如果找到匹配项,则调用相应的函数创建视图 + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "CreatePage view:%p", view); + return view; // 返回创建的视图 + } + } + return nullptr; // 如果没有找到匹配的视图ID,返回 nullptr + } } \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/weather/src/WeatherReportPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/weather/src/WeatherReportPresenter.cpp deleted file mode 100644 index 22ef28cdb..000000000 --- a/code/sdk/application/wearable/fd230app/nativeui/weather/src/WeatherReportPresenter.cpp +++ /dev/null @@ -1,78 +0,0 @@ -#include "AppViewIDs.h" -#include "NativeAbility.h" - -#include "weather/include/WeatherReportPresenter.h" - -namespace OHOS -{ - - // 当前Presenter属性实例化的内存指针 - static WeatherReportPresenter *g_pWeatherReportPresenter = nullptr; - - WeatherReportPresenter::WeatherReportPresenter() - { - - g_pWeatherReportPresenter = this; - } - - WeatherReportPresenter::~WeatherReportPresenter() - { - - g_pWeatherReportPresenter = nullptr; - } - - WeatherReportPresenter *WeatherReportPresenter::GetInstance() - { - - return g_pWeatherReportPresenter; - } - - void WeatherReportPresenter::OnStart() - { - - Presenter::OnStart(); - } - - void WeatherReportPresenter::OnPause(void) - { - - Presenter::OnPause(); - } - - void WeatherReportPresenter::OnResume(void) - { - - Presenter::OnResume(); - } - - void WeatherReportPresenter::OnStop(void) - { - - Presenter::OnStop(); - } - - bool WeatherReportPresenter::OnDrag(UIView &view, const DragEvent &event) - { - - if (event.GetDragDirection() == DragEvent::DIRECTION_TOP_TO_BOTTOM && - (event.GetDeltaY() > 20) && (event.GetDeltaY() > (2 * MATH_ABS(event.GetDeltaX())))) - { - NativeAbility::GetInstance().ChangeSlice(VIEW_WEATHER); // 气象报告界面从上往下滑进入主天气界面 - return true; - } - if (event.GetDragDirection() == DragEvent::DIRECTION_BOTTOM_TO_TOP) - { - NativeAbility::GetInstance().ChangeSlice(VIEW_FUTURE_WEATHER); // 气象报告界面从下往上进入未来天气界面 - return true; - } - return false; - } - - bool WeatherReportPresenter::OnClick(UIView &view, const ClickEvent &event) - { - - // 根据控件id查找是哪个控件触发了点击回调 - // if (strcmp(view.GetViewId(), 控件ID) == 0) - return true; - } -} \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/weather/src/WeatherReportView.cpp b/code/sdk/application/wearable/fd230app/nativeui/weather/src/WeatherReportView.cpp index 9207a8995..95edcc5de 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/weather/src/WeatherReportView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/weather/src/WeatherReportView.cpp @@ -1,427 +1,293 @@ #include "weather/include/WeatherReportView.h" -#include "weather/include/WeatherReportPresenter.h" -#include "UiConfig.h" +#include "wearable_log.h" namespace OHOS { - - const char *IMAGEANIMATOR3 = "/user/res/weather/WEATHER_WINDSPEED.bin"; - const char *IMAGEANIMATOR2 = "/user/res/weather/WEATHER_HUMIDITY.bin"; - const char *IMAGEANIMATOR1 = "/user/res/weather/WEATHER_UVI.bin"; - static ImageAnimatorInfo g_imageAnimator3Info[2] = { - {IMAGEANIMATOR3, {341, 167}, 60, 60, IMG_SRC_FILE_PATH}, - {"", {341, 167}, 60, 60, IMG_SRC_FILE_PATH}, - }; - static ImageAnimatorInfo g_imageAnimator2Info[2] = { - {IMAGEANIMATOR2, {207, 167}, 60, 60, IMG_SRC_FILE_PATH}, - {"", {207, 167}, 60, 60, IMG_SRC_FILE_PATH}, - }; - - static ImageAnimatorInfo g_imageAnimator1Info[2] = { - {IMAGEANIMATOR1, {73, 167}, 60, 60, IMG_SRC_FILE_PATH}, - {"", {73, 167}, 60, 60, IMG_SRC_FILE_PATH}, - }; - static ImageAnimatorInfo g_imageAnimatorInfo[2] = { - {PNG_ANIMATOR1_IMAGE, {213, 400}, 40, 40, IMG_SRC_FILE_PATH}, - {PNG_ANIMATOR2_IMAGE, {213, 400}, 40, 40, IMG_SRC_FILE_PATH}, - }; static WeatherReportView *g_pWeatherReportView{nullptr}; WeatherReportView::WeatherReportView() { - + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " WeatherReportView::WeatherReportView"); + SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION); + SetViewIndex(1); g_pWeatherReportView = this; } WeatherReportView::~WeatherReportView() { - if (viewInitStatus == true) - { - DeInitView(); - } + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " WeatherReportView::~WeatherReportView"); + ClearAll(); g_pWeatherReportView = nullptr; } WeatherReportView *WeatherReportView::GetInstance() { - return g_pWeatherReportView; } - void WeatherReportView::InitView() + /** + * 释放图片文件路径数组占用的内存 + * @param imagePaths 图片文件路径数组 + * @param numImages 图片文件的数量 + */ + static void FreeImagePathsArray(const char **imagePaths, int numImages) { - if (container_ == nullptr) + for (int i = 0; i < numImages; i++) { - container_ = new UIViewGroup(); - container_->SetPosition(0, 0, 466, 466); - container_->SetStyle(STYLE_BACKGROUND_OPA, 0); - container_->SetTouchable(true); - container_->SetDraggable(true); - UIView::OnDragListener *draglistener = static_cast(WeatherReportPresenter::GetInstance()); - container_->SetOnDragListener(draglistener); + free((void *)imagePaths[i]); } + delete[] imagePaths; + } - // Add ScrollView to App - if (scrollView1_ == nullptr) + void WeatherReportView::ClearAll(void) + { + if (viewInitStatus == true) { - scrollView1_ = new UIScrollView(); - } - scrollView1_->SetPosition(0, 0); // widget's left position and top position - scrollView1_->Resize(466, 466); // widget's width and height - scrollView1_->SetViewId("scrollView1"); // Set style - scrollView1_->SetStyle(STYLE_BACKGROUND_OPA, 0xff); + RemoveAll(); + delete title; + title = nullptr; - // Set additional property + delete UV; + UV = nullptr; - // Add to rootView - container_->Add(scrollView1_); - scrollView1_->SetVisible(true); + delete UV_Number; + UV_Number = nullptr; - // Add Label to App - if (label5_ == nullptr) - { - label5_ = new UILabel(); - } - label5_->SetPosition(173, 52); // widget's left position and top position - label5_->Resize(120, 35); // widget's width and height - label5_->SetViewId("label5"); // Set style - label5_->SetStyle(STYLE_TEXT_FONT, 30); - label5_->SetStyle(STYLE_LINE_HEIGHT, 35); - - // Set additional property - label5_->SetText("气象报告"); - label5_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); - label5_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); - label5_->SetRollSpeed(0); - label5_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); - - // Add to scrollView1 - scrollView1_->Add(label5_); - label5_->SetVisible(true); - - // Add ImageAnimatorView to App - if (imageAnimator3_ == nullptr) - { - imageAnimator3_ = new UIImageAnimatorView(); - } - imageAnimator3_->SetPosition(341, 167); // widget's left position and top position - imageAnimator3_->Resize(60, 60); // widget's width and height - imageAnimator3_->SetViewId("imageAnimator3"); // Set style - - // Set additional property - imageAnimator3_->SetImageAnimatorSrc(g_imageAnimator3Info, 2, 200); - imageAnimator3_->SetTimeOfPause(500); - imageAnimator3_->SetRepeatTimes(1); - imageAnimator3_->SetReverse(true); - imageAnimator3_->Start(); - - // Add to scrollView1 - scrollView1_->Add(imageAnimator3_); - imageAnimator3_->SetVisible(true); - - // Add ImageAnimatorView to App - if (imageAnimator2_ == nullptr) - { - imageAnimator2_ = new UIImageAnimatorView(); - } - imageAnimator2_->SetPosition(207, 167); // widget's left position and top position - imageAnimator2_->Resize(60, 60); // widget's width and height - imageAnimator2_->SetViewId("imageAnimator2"); // Set style - - // Set additional property - imageAnimator2_->SetImageAnimatorSrc(g_imageAnimator2Info, 2, 200); - imageAnimator2_->SetTimeOfPause(500); - imageAnimator2_->SetRepeatTimes(1); - imageAnimator2_->SetReverse(true); - imageAnimator2_->Start(); - - // Add to scrollView1 - scrollView1_->Add(imageAnimator2_); - imageAnimator2_->SetVisible(true); - - // Add ImageAnimatorView to App - if (imageAnimator1_ == nullptr) - { - imageAnimator1_ = new UIImageAnimatorView(); - } - imageAnimator1_->SetPosition(73, 167); // widget's left position and top position - imageAnimator1_->Resize(60, 60); // widget's width and height - imageAnimator1_->SetViewId("imageAnimator1"); // Set style - - // Set additional property - imageAnimator1_->SetImageAnimatorSrc(g_imageAnimator1Info, 2, 200); - imageAnimator1_->SetTimeOfPause(500); - imageAnimator1_->SetRepeatTimes(1); - imageAnimator1_->SetReverse(true); - imageAnimator1_->Start(); - - // Add to scrollView1 - scrollView1_->Add(imageAnimator1_); - imageAnimator1_->SetVisible(true); - - // Add Label to App - if (label6_ == nullptr) - { - label6_ = new UILabel(); - } - label6_->SetPosition(93, 240); // widget's left position and top position - label6_->Resize(20, 50); // widget's width and height - label6_->SetViewId("label6"); // Set style - label6_->SetStyle(STYLE_TEXT_FONT, 40); - label6_->SetStyle(STYLE_LINE_HEIGHT, 50); - - // Set additional property - label6_->SetText("7"); - label6_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); - label6_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); - label6_->SetRollSpeed(0); - label6_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); - - // Add to scrollView1 - scrollView1_->Add(label6_); - label6_->SetVisible(true); - - // Add Label to App - if (label7_ == nullptr) - { - label7_ = new UILabel(); - } - label7_->SetPosition(210, 240); // widget's left position and top position - label7_->Resize(200, 60); // widget's width and height - label7_->SetViewId("label7"); // Set style - label7_->SetStyle(STYLE_TEXT_FONT, 40); - label7_->SetStyle(STYLE_LINE_HEIGHT, 50); - - // Set additional property - label7_->SetText("1-2"); - label7_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); - label7_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); - label7_->SetRollSpeed(0); - label7_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); - - // Add to scrollView1 - scrollView1_->Add(label7_); - label7_->SetVisible(true); - - // Add Label to App - if (label8_ == nullptr) - { - label8_ = new UILabel(); - } - label8_->SetPosition(337, 240); // widget's left position and top position - label8_->Resize(200, 60); // widget's width and height - label8_->SetViewId("label8"); // Set style - label8_->SetStyle(STYLE_TEXT_FONT, 40); - label8_->SetStyle(STYLE_LINE_HEIGHT, 50); - - // Set additional property - label8_->SetText("75%"); - label8_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); - label8_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); - label8_->SetRollSpeed(0); - label8_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); - - // Add to scrollView1 - scrollView1_->Add(label8_); - label8_->SetVisible(true); - - // Add Label to App - if (label9_ == nullptr) - { - label9_ = new UILabel(); - } - label9_->SetPosition(63, 293); // widget's left position and top position - label9_->Resize(200, 60); // widget's width and height - label9_->SetViewId("label9"); // Set style - label9_->SetStyle(STYLE_TEXT_FONT, 26); - label9_->SetStyle(STYLE_LINE_HEIGHT, 30); - - // Set additional property - label9_->SetText("紫外线"); - label9_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); - label9_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); - label9_->SetRollSpeed(0); - label9_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 26); - - // Add to scrollView1 - scrollView1_->Add(label9_); - label9_->SetVisible(true); - - // Add Label to App - if (label10_ == nullptr) - { - label10_ = new UILabel(); - } - label10_->SetPosition(212, 293); // widget's left position and top position - label10_->Resize(290, 60); // widget's width and height - label10_->SetViewId("label10"); // Set style - label10_->SetStyle(STYLE_TEXT_FONT, 26); - label10_->SetStyle(STYLE_LINE_HEIGHT, 30); - - // Set additional property - label10_->SetText("风速"); - label10_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); - label10_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); - label10_->SetRollSpeed(0); - label10_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 26); - - // Add to scrollView1 - scrollView1_->Add(label10_); - label10_->SetVisible(true); - - // Add Label to App - if (label11_ == nullptr) - { - label11_ = new UILabel(); - } - label11_->SetPosition(345, 293); // widget's left position and top position - label11_->Resize(200, 60); // widget's width and height - label11_->SetViewId("label11"); // Set style - label11_->SetStyle(STYLE_TEXT_FONT, 26); - label11_->SetStyle(STYLE_LINE_HEIGHT, 30); - - // Set additional property - label11_->SetText("湿度"); - label11_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT); - label11_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); - label11_->SetRollSpeed(0); - label11_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 26); - - // Add to scrollView1 - scrollView1_->Add(label11_); - label11_->SetVisible(true); - /* -------------------------------------------------------------------------- */ - #if 0 - // Add ImageAnimatorView to App - if (imageAnimator == nullptr) - { - imageAnimator = new UIImageAnimatorView(); + delete WindSpeed; + WindSpeed = nullptr; + + delete WindSpeed_Number; + WindSpeed_Number = nullptr; + + delete Humidity; + Humidity = nullptr; + + delete Humidity_Number; + Humidity_Number = nullptr; + + UVImageAnimatorView->Stop(); + delete UVImageAnimatorView; + UVImageAnimatorView = nullptr; + + WindSpeedImageAnimatorView->Stop(); + delete WindSpeedImageAnimatorView; + WindSpeedImageAnimatorView = nullptr; + + HumidityImageAnimatorView->Stop(); + delete HumidityImageAnimatorView; + HumidityImageAnimatorView = nullptr; + + if (p_ImageAnimator != nullptr) + { + p_ImageAnimator->FreeImagePathsArray(UVPaths, 24); + p_ImageAnimator->FreeImagePathsArray(WindSpeedPaths, 24); + p_ImageAnimator->FreeImagePathsArray(HumidityPaths, 20); + + delete p_ImageAnimator; + p_ImageAnimator = nullptr; + } + + delete UVimageAnimatorInfo; + delete WindSpeedimageAnimatorInfo; + delete HumidityimageAnimatorInfo; } - imageAnimator->SetPosition(213, 400); - imageAnimator->Resize(40, 40); - imageAnimator->SetViewId("imageAnimator1"); - imageAnimator->SetStyle(STYLE_BACKGROUND_OPA, 0xff); - - // Set additional property - imageAnimator->SetImageAnimatorSrc(g_imageAnimatorInfo, 2, 200); - imageAnimator->SetTimeOfPause(200); - imageAnimator->SetRepeatTimes(1); - imageAnimator->SetReverse(true); - imageAnimator->Start(); - - // Add to scrollView1 - scrollView1_->Add(imageAnimator); - #endif } - void WeatherReportView::DeInitView() + // 设置标签 + UILabelExt *WeatherReportView::SetUpLabel(LabelConfig &labelconfig) { - if (label5_ != nullptr) - { - delete label5_; - label5_ = nullptr; - } - if (imageAnimator3_ != nullptr) - { - imageAnimator3_->Stop(); - delete imageAnimator3_; - imageAnimator3_ = nullptr; - } - if (imageAnimator2_ != nullptr) - { - imageAnimator2_->Stop(); - delete imageAnimator2_; - imageAnimator2_ = nullptr; - } - if (imageAnimator1_ != nullptr) - { - imageAnimator1_->Stop(); - delete imageAnimator1_; - imageAnimator1_ = nullptr; - } - if (imageAnimator != nullptr) - { - imageAnimator->Stop(); - delete imageAnimator; - imageAnimator = nullptr; - } - if (label6_ != nullptr) + UILabelExt *label = new UILabelExt(); + if (label == nullptr) { - delete label6_; - label6_ = nullptr; + return nullptr; } - if (label7_ != nullptr) + label->SetPosition(labelconfig.left, labelconfig.top, labelconfig.width, labelconfig.height); // 位置大小 + label->SetStyle(STYLE_TEXT_FONT, labelconfig.fontSize); // 字体大小 + label->SetStyle(STYLE_LINE_HEIGHT, labelconfig.lineHeigh); // 字体行高 + label->SetText(labelconfig.text); // 内容 + label->SetLineBreakMode(labelconfig.lineBreakMode); // 断行模式。 + label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, labelconfig.fontSize); + return label; + } + + bool WeatherReportView::WeatherReportViewLabelInit(void) + { + LabelConfig labelconfig = { + .left = 173, + .top = 52, + .width = 120, + .height = 40, + .fontSize = 30, + .lineHeigh = 35, + .text = "气象报告", + .lineBreakMode = UILabel::LINE_BREAK_ELLIPSIS, + }; + title = SetUpLabel(labelconfig); + if (title == nullptr) { - delete label7_; - label7_ = nullptr; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherReportView::title new fail!"); + return false; } - if (label8_ != nullptr) + /* -------------------------------------------------------------------------- */ + labelconfig = { + .left = 23, + .top = 240, + .width = 120, + .height = 50, + .fontSize = 40, + .lineHeigh = 50, + .text = "7", + .lineBreakMode = UILabel::LINE_BREAK_ELLIPSIS, + }; + UV_Number = SetUpLabel(labelconfig); + if (UV_Number == nullptr) { - delete label8_; - label8_ = nullptr; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherReportView::UV_Number new fail!"); + return false; } - if (label9_ != nullptr) + + labelconfig.left = 173; + labelconfig.text = "1-2"; + WindSpeed_Number = SetUpLabel(labelconfig); + if (WindSpeed_Number == nullptr) { - delete label9_; - label9_ = nullptr; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherReportView::WindSpeed_Number new fail!"); + return false; } - if (label10_ != nullptr) + + labelconfig.left = 323; + labelconfig.text = "75%"; + Humidity_Number = SetUpLabel(labelconfig); + if (Humidity_Number == nullptr) { - delete label10_; - label10_ = nullptr; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherReportView::Humidity_Number new fail!"); + return false; } - if (label11_ != nullptr) + + /* -------------------------------------------------------------------------- */ + labelconfig = { + .left = 23, + .top = 290, + .width = 120, + .height = 30, + .fontSize = 26, + .lineHeigh = 35, + .text = "紫外线", + .lineBreakMode = UILabel::LINE_BREAK_ELLIPSIS, + }; + UV = SetUpLabel(labelconfig); + if (UV == nullptr) { - delete label11_; - label11_ = nullptr; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherReportView::UV new fail!"); + return false; } - if (scrollView1_ != nullptr) + UV->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff)); + + labelconfig.left = 173; + labelconfig.text = "风速"; + WindSpeed = SetUpLabel(labelconfig); + if (WindSpeed == nullptr) { - delete scrollView1_; - scrollView1_ = nullptr; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherReportView::WindSpeed new fail!"); + return false; } - if (container_ != nullptr) + WindSpeed->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff)); + + labelconfig.left = 323; + labelconfig.text = "湿度"; + Humidity = SetUpLabel(labelconfig); + if (Humidity == nullptr) { - container_->RemoveAll(); - delete container_; - container_ = nullptr; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherReportView::Humidity new fail!"); + return false; } + Humidity->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff)); + /* ----------------------------------- Add ---------------------------------- */ + + Add(title); + + Add(UV_Number); + Add(WindSpeed_Number); + Add(Humidity_Number); + Add(UV); + Add(WindSpeed); + Add(Humidity); + + return true; } - void WeatherReportView::PreLoad(void) + bool WeatherReportView::WeatherReportViewImageAnimatorViewInit(void) { - if (!viewInitStatus) + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherReportView::WeatherReportViewImageAnimatorViewInit"); + + p_ImageAnimator = new ImageAnimator(); + if (p_ImageAnimator == nullptr) { - InitView(); - viewInitStatus = true; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "p_ImageAnimator new fail!!"); + return false; } - } - void WeatherReportView::OnStart() - { - View::OnStart(); - PreLoad(); - RootView::GetInstance()->Add(container_); - } - - void WeatherReportView::OnSetUpView() - { - View::OnSetUpView(); - Draw(); + p_ImageAnimator->imageAnimatorConfig = { + .x = 53, + .y = 160, + .w = 60, + .h = 60, + .numFrames = 24, + .time = 100, + }; + UVPaths = p_ImageAnimator->CreateImagePathsArray("/user/res/weather/weather60x60gif/UV/", "bin", 24); + p_ImageAnimator->InitImageAnimatorSource(UVImageAnimatorView, UVimageAnimatorInfo, UVPaths, p_ImageAnimator->imageAnimatorConfig); + + p_ImageAnimator->imageAnimatorConfig.x = 203; + WindSpeedPaths = p_ImageAnimator->CreateImagePathsArray("/user/res/weather/weather60x60gif/WindSpeed/", "bin", 24); + p_ImageAnimator->InitImageAnimatorSource(WindSpeedImageAnimatorView, WindSpeedimageAnimatorInfo, WindSpeedPaths, p_ImageAnimator->imageAnimatorConfig); + + p_ImageAnimator->imageAnimatorConfig.x = 353; + p_ImageAnimator->imageAnimatorConfig.numFrames = 20; + HumidityPaths = p_ImageAnimator->CreateImagePathsArray("/user/res/weather/weather60x60gif/Humidity/", "bin", 20); + p_ImageAnimator->InitImageAnimatorSource(HumidityImageAnimatorView, HumidityimageAnimatorInfo, HumidityPaths, p_ImageAnimator->imageAnimatorConfig); + + /* ---------------------------------- Start --------------------------------- */ + UVImageAnimatorView->Start(); + WindSpeedImageAnimatorView->Start(); + HumidityImageAnimatorView->Start(); + /* ----------------------------------- Add ---------------------------------- */ + Add(UVImageAnimatorView); + Add(WindSpeedImageAnimatorView); + Add(HumidityImageAnimatorView); + + return true; } - void WeatherReportView::OnTearDownView() + bool WeatherReportView::InitPage(void) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherReportView::InitPage"); + if (!WeatherReportViewLabelInit()) + { + return false; + } + + if (!WeatherReportViewImageAnimatorViewInit()) + { + return false; + } - View::OnTearDownView(); - return; + viewInitStatus = true; + return true; } - void WeatherReportView::OnStop() + bool WeatherReportView::InitView(void *caller) { - - View::OnStop(); - RootView::GetInstance()->RemoveAll(); - return; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherReportView InitView %p", caller); + if (InitPage() == false) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherReportView::InitPage fail"); + return false; + } + SetDraggable(true); + SetTouchable(true); + return true; } + } \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/weather/src/WeatherView.cpp b/code/sdk/application/wearable/fd230app/nativeui/weather/src/WeatherView.cpp index 12922aa31..c16238556 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/weather/src/WeatherView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/weather/src/WeatherView.cpp @@ -13,8 +13,9 @@ namespace OHOS static WeatherView *g_pWeatherView{nullptr}; WeatherView::WeatherView() { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherView::WeatherView()"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherView::WeatherView"); SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION); + SetViewIndex(0); Time = GetTime(); WeatherImag = GetWeatherImage(); Temperature = GetWeatherTemperature(); @@ -26,7 +27,7 @@ namespace OHOS WeatherView::~WeatherView() { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " WeatherView::~WeatherView()"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " WeatherView::~WeatherView"); ClearAll(); g_pWeatherView = nullptr; } @@ -154,12 +155,12 @@ namespace OHOS // 初始化天气页面 bool WeatherView::InitPage(void) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " WeatherView::InitPage()"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " WeatherView::InitPage"); /* -------------------------------------------------------------------------- */ showWeatherImage = new UIImageView(); if (showWeatherImage == nullptr) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherView::new showWeatherImage fail!"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherView::new showWeatherImage fail!"); return false; } showWeatherImage->SetPosition(109, 124, 100, 100); @@ -168,19 +169,19 @@ namespace OHOS showCurrentTimeLabel = InitLabel(185, 52, Time.c_str(), "showCurrentTimeLabel", 40, 47); if (showCurrentTimeLabel == nullptr) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherView::new showCurrentTimeLabel fail!"); + WEARABLE_LOGE(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!"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherView::new showTemperatureLabel fail!"); return false; } /* -------------------------------------------------------------------------- */ showWeatherDescriptionLabel = new UILabel(); - showWeatherDescriptionLabel->SetPosition(83, 264,300,40); + showWeatherDescriptionLabel->SetPosition(83, 264, 300, 40); showWeatherDescriptionLabel->SetViewId("showWeatherDescriptionLabel"); showWeatherDescriptionLabel->SetStyle(STYLE_TEXT_FONT, 35); showWeatherDescriptionLabel->SetStyle(STYLE_LINE_HEIGHT, 41); @@ -190,14 +191,14 @@ namespace OHOS showWeatherDescriptionLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 35); if (showWeatherDescriptionLabel == nullptr) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherView::new showWeatherDescriptionLabel fail!"); + WEARABLE_LOGE(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!"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherView::new showWeatherAreaLabel fail!"); return false; } showWeatherAreaLabel->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff)); @@ -205,11 +206,11 @@ namespace OHOS showMaxandMinTemperatureLabel = InitLabel(158, 368, MaxandMinTemperature.c_str(), "showMaxandMinTemperatureLabel", 20, 23); if (showMaxandMinTemperatureLabel == nullptr) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherView::new showMaxandMinTemperatureLabel fail!"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherView::new showMaxandMinTemperatureLabel fail!"); return false; } showMaxandMinTemperatureLabel->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff)); - + /* -------------------------------- 将组件添加到根视图 ------------------------------- */ Add(showWeatherImage); Add(showCurrentTimeLabel); @@ -221,12 +222,12 @@ namespace OHOS return true; } - bool WeatherView::InitView() + bool WeatherView::InitView(void *caller) { - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherView::InitView"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherView InitView %p", caller); if (InitPage() == false) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitPage fail"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherView::InitPage fail"); return false; } SetDraggable(true); diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/1.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/1.bin new file mode 100644 index 000000000..26e05031b Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/1.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/10.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/10.bin new file mode 100644 index 000000000..585620079 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/10.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/11.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/11.bin new file mode 100644 index 000000000..da418e602 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/11.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/12.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/12.bin new file mode 100644 index 000000000..bc9901825 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/12.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/13.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/13.bin new file mode 100644 index 000000000..c65159fd3 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/13.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/14.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/14.bin new file mode 100644 index 000000000..44fa2f8d0 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/14.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/15.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/15.bin new file mode 100644 index 000000000..f17bd4313 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/15.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/16.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/16.bin new file mode 100644 index 000000000..da1d9bc6d Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/16.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/17.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/17.bin new file mode 100644 index 000000000..cfd14c3df Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/17.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/18.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/18.bin new file mode 100644 index 000000000..2d940d62e Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/18.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/19.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/19.bin new file mode 100644 index 000000000..ecb91b586 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/19.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/2.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/2.bin new file mode 100644 index 000000000..98377646f Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/2.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/20.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/20.bin new file mode 100644 index 000000000..5ee7470e1 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/20.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/3.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/3.bin new file mode 100644 index 000000000..666e09c0e Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/3.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/4.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/4.bin new file mode 100644 index 000000000..d5f59b85f Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/4.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/5.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/5.bin new file mode 100644 index 000000000..6c28cf8a9 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/5.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/6.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/6.bin new file mode 100644 index 000000000..9badd78d3 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/6.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/7.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/7.bin new file mode 100644 index 000000000..fde04ff6d Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/7.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/8.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/8.bin new file mode 100644 index 000000000..1d5c19ae0 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/8.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/9.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/9.bin new file mode 100644 index 000000000..e56abecc0 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/Humidity/9.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/1.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/1.bin new file mode 100644 index 000000000..f449dada8 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/1.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/10.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/10.bin new file mode 100644 index 000000000..159eacfcd Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/10.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/11.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/11.bin new file mode 100644 index 000000000..358cdfc68 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/11.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/12.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/12.bin new file mode 100644 index 000000000..15081606c Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/12.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/13.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/13.bin new file mode 100644 index 000000000..e79f9ddd4 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/13.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/14.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/14.bin new file mode 100644 index 000000000..a619bf730 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/14.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/15.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/15.bin new file mode 100644 index 000000000..c586f0677 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/15.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/16.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/16.bin new file mode 100644 index 000000000..2e0d7c939 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/16.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/17.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/17.bin new file mode 100644 index 000000000..1b2d8a2f5 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/17.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/18.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/18.bin new file mode 100644 index 000000000..402347baa Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/18.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/19.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/19.bin new file mode 100644 index 000000000..65c145f0a Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/19.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/2.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/2.bin new file mode 100644 index 000000000..d969f1490 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/2.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/20.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/20.bin new file mode 100644 index 000000000..29f1121f9 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/20.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/21.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/21.bin new file mode 100644 index 000000000..729a77da3 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/21.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/22.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/22.bin new file mode 100644 index 000000000..de173e30c Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/22.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/23.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/23.bin new file mode 100644 index 000000000..c87459b04 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/23.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/24.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/24.bin new file mode 100644 index 000000000..b6ede91f2 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/24.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/3.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/3.bin new file mode 100644 index 000000000..697933618 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/3.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/4.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/4.bin new file mode 100644 index 000000000..b1f6cf436 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/4.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/5.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/5.bin new file mode 100644 index 000000000..d81e513d0 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/5.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/6.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/6.bin new file mode 100644 index 000000000..a5c68753c Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/6.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/7.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/7.bin new file mode 100644 index 000000000..567cced3d Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/7.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/8.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/8.bin new file mode 100644 index 000000000..ee82fda24 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/8.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/9.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/9.bin new file mode 100644 index 000000000..70187e6fd Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/UV/9.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/1.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/1.bin new file mode 100644 index 000000000..105641d59 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/1.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/10.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/10.bin new file mode 100644 index 000000000..be3a15ed6 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/10.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/11.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/11.bin new file mode 100644 index 000000000..04cd932de Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/11.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/12.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/12.bin new file mode 100644 index 000000000..850a97437 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/12.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/13.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/13.bin new file mode 100644 index 000000000..c57ce8168 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/13.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/14.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/14.bin new file mode 100644 index 000000000..93c6d78a6 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/14.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/15.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/15.bin new file mode 100644 index 000000000..aabb74339 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/15.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/16.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/16.bin new file mode 100644 index 000000000..7b76584b7 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/16.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/17.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/17.bin new file mode 100644 index 000000000..9eed55491 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/17.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/18.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/18.bin new file mode 100644 index 000000000..7fc964a7e Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/18.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/19.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/19.bin new file mode 100644 index 000000000..0ab7eba2f Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/19.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/2.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/2.bin new file mode 100644 index 000000000..604f06bd5 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/2.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/20.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/20.bin new file mode 100644 index 000000000..ff8502ecc Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/20.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/21.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/21.bin new file mode 100644 index 000000000..360551b46 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/21.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/22.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/22.bin new file mode 100644 index 000000000..76c372299 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/22.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/23.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/23.bin new file mode 100644 index 000000000..1c9a0db18 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/23.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/24.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/24.bin new file mode 100644 index 000000000..a1cec350c Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/24.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/3.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/3.bin new file mode 100644 index 000000000..de995cc70 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/3.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/4.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/4.bin new file mode 100644 index 000000000..db0720190 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/4.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/5.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/5.bin new file mode 100644 index 000000000..33a193a3b Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/5.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/6.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/6.bin new file mode 100644 index 000000000..f29776e7a Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/6.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/7.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/7.bin new file mode 100644 index 000000000..1964cf12a Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/7.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/8.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/8.bin new file mode 100644 index 000000000..91497f75e Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/8.bin differ diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/9.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/9.bin new file mode 100644 index 000000000..5ad490723 Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/res/weather/weather60x60gif/WindSpeed/9.bin differ