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