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