From: luozheng <1732036298@qq.com> Date: Tue, 23 Apr 2024 09:16:22 +0000 (+0800) Subject: 添加移动数据选项页面 X-Git-Tag: release_V1.2.70_20241020_135402~1025^2~79 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=403150d4fca072b3992daac9352b5faa14d0a8a8;p=mirrors%2FFD230.git 添加移动数据选项页面 --- diff --git a/code/sdk/application/wearable/fd230app/CMakeLists.txt b/code/sdk/application/wearable/fd230app/CMakeLists.txt index 5cb3d662a..2daf9023e 100644 --- a/code/sdk/application/wearable/fd230app/CMakeLists.txt +++ b/code/sdk/application/wearable/fd230app/CMakeLists.txt @@ -320,6 +320,7 @@ set(SOURCES #网络与通话 ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/networkandcall/src/NetworkAndCallPresenter.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/networkandcall/src/NetworkAndCallView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/networkandcall/src/MobileDataOptionsView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/language/LanguageInit.cpp ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/config/src/ConfigModel.cpp diff --git a/code/sdk/application/wearable/fd230app/nativeui/networkandcall/include/MobileDataOptionsView.h b/code/sdk/application/wearable/fd230app/nativeui/networkandcall/include/MobileDataOptionsView.h new file mode 100644 index 000000000..691af5a83 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/networkandcall/include/MobileDataOptionsView.h @@ -0,0 +1,39 @@ +/* + * @Author: luozheng 1732036298@qq.com + * @Date: 2024-04-23 15:29:51 + * @LastEditors: luozheng 1732036298@qq.com + * @LastEditTime: 2024-04-23 16:25:18 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/networkandcall/include/MobileDataOptionsView.h + */ + +#ifndef MOBILE_DATA_OPTIONS_VIEW_H +#define MOBILE_DATA_OPTIONS_VIEW_H + +#include "components/ui_toggle_button.h" +#include "components/ui_scroll_view.h" +#include "components/ui_label_ext.h" + +namespace OHOS +{ + static constexpr const char *MOBILEDATAOPTIONSVIEWID = "mobiledataoptionsview"; + class MobileDataOptionsView + { + public: + MobileDataOptionsView(); + virtual ~MobileDataOptionsView(); + static MobileDataOptionsView *GetInstance(void); + UIScrollView *MobileDataOptionsViewInit(void); + UIToggleButton *GetSystemUpdateToggleButton(void); + UIToggleButton *GetOnlineMusicToggleButton(void); + + private: + void ClearAll(void); + UIScrollView *scrollView{nullptr}; + UILabelExt *Title{nullptr}; + UIImageView *MobileDataOptionsImage[2]{nullptr}; + UILabelExt *MobileDataOptionsImageLabel[2]{nullptr}; + UIToggleButton *SystemUpdateToggleButton{nullptr}; // 系统更新开关:开启系统更新时闲时将安装包下载到本地并添加小红点提示 + UIToggleButton *OnlineMusicToggleButton{nullptr}; // 在线音乐开关 + }; +} +#endif \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/networkandcall/include/NetworkAndCallView.h b/code/sdk/application/wearable/fd230app/nativeui/networkandcall/include/NetworkAndCallView.h index b96e62785..9b3e1bcd8 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/networkandcall/include/NetworkAndCallView.h +++ b/code/sdk/application/wearable/fd230app/nativeui/networkandcall/include/NetworkAndCallView.h @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-04-23 09:57:53 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-04-23 14:51:33 + * @LastEditTime: 2024-04-23 16:24:32 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/networkandcall/include/NetworkAndCallView.h */ @@ -15,8 +15,19 @@ #include "components/ui_image_view.h" #include "components/ui_toggle_button.h" #include "components/ui_scroll_view.h" +#include "networkandcall/include/MobileDataOptionsView.h" + namespace OHOS { + typedef enum + { + NETWORKANDCALLVIEW = 0, + MOBILEDATAOPTIONSVIEW, + MAX_NETWORKANDCALLVIEWID, + } NETWORKANDCALLVIEWID; + + static constexpr const uint8_t ITEM_NUM = 3; + class NetworkAndCallPresenter; class NetworkAndCallView : public View { @@ -27,20 +38,29 @@ namespace OHOS static NetworkAndCallView *GetInstance(void); UIToggleButton *GetVoLTEToggleButton(void); UIToggleButton *GetMobileDataToggleButton(void); + UIImageView *GetNetworkAndCallImage(int index); + MobileDataOptionsView *GetMobileDataOptionsView(void); + bool ChangeNetworkAndCallView(int16_t thisView); + bool ChangeMobileDataOptionsView(int16_t thisView); + bool ClickFunc(int16_t interface); + void ChangeView(int16_t hideView, int16_t showView); void OnStart() override; void OnSetUpView() override; void OnTearDownView() override; void OnStop() override; + private: + MobileDataOptionsView *mobileDataOptionsView{nullptr}; + private: void NetworkAndCallViewInit(void); void ClearAll(void); - UIScrollView *NetworkAndCallScrollView{nullptr}; + UIScrollView *NetworkAndCallScrollView[MAX_NETWORKANDCALLVIEWID]{nullptr}; UILabelExt *Title{nullptr}; - UIImageView *NetworkAndCallImage[3]{nullptr}; - UILabelExt *NetworkAndCallLabel[3]{nullptr}; + UIImageView *NetworkAndCallImage[ITEM_NUM]{nullptr}; + UILabelExt *NetworkAndCallLabel[ITEM_NUM]{nullptr}; UIToggleButton *VoLTE_toggleButton{nullptr}; // VoLTE通话开关 UIToggleButton *MobileData_toggleButton{nullptr}; // 移动数据开关 UIImageView *NextImage{nullptr}; diff --git a/code/sdk/application/wearable/fd230app/nativeui/networkandcall/src/MobileDataOptionsView.cpp b/code/sdk/application/wearable/fd230app/nativeui/networkandcall/src/MobileDataOptionsView.cpp new file mode 100644 index 000000000..60c80bed6 --- /dev/null +++ b/code/sdk/application/wearable/fd230app/nativeui/networkandcall/src/MobileDataOptionsView.cpp @@ -0,0 +1,169 @@ +#include "networkandcall/include/MobileDataOptionsView.h" +#include "networkandcall/include/NetworkAndCallPresenter.h" +#include "wearable_log.h" + +namespace OHOS +{ + static MobileDataOptionsView *g_pMobileDataOptionsView{nullptr}; + MobileDataOptionsView::MobileDataOptionsView() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MobileDataOptionsView::MobileDataOptionsView"); + g_pMobileDataOptionsView = this; + } + + MobileDataOptionsView::~MobileDataOptionsView() + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MobileDataOptionsView::~MobileDataOptionsView"); + ClearAll(); + g_pMobileDataOptionsView = nullptr; + } + + MobileDataOptionsView *MobileDataOptionsView::GetInstance(void) + { + return g_pMobileDataOptionsView; + } + + UIScrollView *MobileDataOptionsView::MobileDataOptionsViewInit(void) + { + if (scrollView == nullptr) + { + scrollView = new UIScrollView(); + if (scrollView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::scrollView new fail!"); + return nullptr; + } + scrollView->SetPosition(0, 0, 466, 466); + scrollView->SetViewId(MOBILEDATAOPTIONSVIEWID); + UIView::OnDragListener *draglistener = static_cast(NetworkAndCallPresenter::GetInstance()); + if (draglistener == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::draglistener can not be nullptr!"); + return nullptr; + } + scrollView->SetOnDragListener(draglistener); + scrollView->SetScrollBlankSize(50); + scrollView->SetReboundSize(35); + scrollView->SetHorizontalScrollState(false); + scrollView->SetTouchable(true); + scrollView->SetDraggable(true); + /* ---------------------------------- Title --------------------------------- */ + Title = new UILabelExt(); + if (Title == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::Title is nullptr!"); + return nullptr; + } + Title->SetPosition(83, 50, 300, 40); + Title->SetStyle(STYLE_TEXT_FONT, 30); + Title->SetStyle(STYLE_LINE_HEIGHT, 35); + Title->SetText("移动数据选项"); + Title->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE); + Title->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + Title->SetRollSpeed(40); + Title->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + scrollView->Add(Title); + /* -------------------------------------------------------------------------- */ + int positionY_Img = 120; + const char *text[] = {"系统更新", "在线音乐"}; + for (int i = 0; i < 2; i++) + { + MobileDataOptionsImage[i] = new UIImageView(); // Create a new UIImageView for each iteration + if (MobileDataOptionsImage[i] == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::MobileDataOptionsImage[%d] is nullptr!", i); + return nullptr; + } + MobileDataOptionsImage[i]->SetPosition(43, positionY_Img + (i * 120), 380, 100); // Adjust Y position based on iteration + MobileDataOptionsImage[i]->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919); + MobileDataOptionsImage[i]->SetStyle(STYLE_BACKGROUND_OPA, 0xff); + MobileDataOptionsImage[i]->SetStyle(STYLE_BORDER_RADIUS, 100); + scrollView->Add(MobileDataOptionsImage[i]); + /* -------------------------------------------------------------------------- */ + MobileDataOptionsImageLabel[i] = new UILabelExt(); // Create a new UILabel for each iteration + if (MobileDataOptionsImageLabel[i] == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::MobileDataOptionsImageLabel[%d] is nullptr!", i); + return nullptr; + } + MobileDataOptionsImageLabel[i]->SetPosition(90, 153 + (i * 120), 180, 40); // Adjust Y position based on iteration + MobileDataOptionsImageLabel[i]->SetStyle(STYLE_TEXT_FONT, 30); + MobileDataOptionsImageLabel[i]->SetStyle(STYLE_LINE_HEIGHT, 35); + MobileDataOptionsImageLabel[i]->SetText(text[i]); + MobileDataOptionsImageLabel[i]->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE); + MobileDataOptionsImageLabel[i]->SetRollSpeed(40); + MobileDataOptionsImageLabel[i]->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); + scrollView->Add(MobileDataOptionsImageLabel[i]); + } + /* -------------------------------------------------------------------------- */ + SystemUpdateToggleButton = new UIToggleButton(); + if (SystemUpdateToggleButton == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::SystemUpdateToggleButton is nullptr!"); + return nullptr; + } + SystemUpdateToggleButton->SetPosition(298, 145, 100, 50); + SystemUpdateToggleButton->SetStyle(STYLE_BACKGROUND_OPA, 0x00); + const char *selectedImg = "/user/res/TOGGLEBUTTON_ON.bin"; + const char *unSelectedImg = "/user/res/TOGGLEBUTTON_OFF.bin"; + SystemUpdateToggleButton->SetImages(selectedImg, unSelectedImg); + scrollView->Add(SystemUpdateToggleButton); + /* -------------------------------------------------------------------------- */ + OnlineMusicToggleButton = new UIToggleButton(); + if (OnlineMusicToggleButton == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::OnlineMusicToggleButton is nullptr!"); + return nullptr; + } + OnlineMusicToggleButton->SetPosition(298, 265, 100, 50); + OnlineMusicToggleButton->SetStyle(STYLE_BACKGROUND_OPA, 0x00); + OnlineMusicToggleButton->SetImages(selectedImg, unSelectedImg); + scrollView->Add(OnlineMusicToggleButton); + /* ----------------------------- onclickListener ---------------------------- */ + UIView::OnClickListener *toggleButtonClick = static_cast(NetworkAndCallPresenter::GetInstance()); + SystemUpdateToggleButton->SetOnClickListener(toggleButtonClick); + OnlineMusicToggleButton->SetOnClickListener(toggleButtonClick); + } + return scrollView; + } + + void MobileDataOptionsView::ClearAll(void) + { + if (scrollView != nullptr) + { + scrollView->RemoveAll(); + + delete Title; + Title = nullptr; + + for (int i = 0; i < 2; i++) + { + delete MobileDataOptionsImage[i]; + MobileDataOptionsImage[i] = nullptr; + + delete MobileDataOptionsImageLabel[i]; + MobileDataOptionsImageLabel[i] = nullptr; + } + + delete SystemUpdateToggleButton; + SystemUpdateToggleButton = nullptr; + + delete OnlineMusicToggleButton; + OnlineMusicToggleButton = nullptr; + + delete scrollView; + scrollView = nullptr; + } + } + + UIToggleButton *MobileDataOptionsView::GetSystemUpdateToggleButton(void) + { + return SystemUpdateToggleButton; + } + + UIToggleButton *MobileDataOptionsView::GetOnlineMusicToggleButton(void) + { + return OnlineMusicToggleButton; + } + +} \ No newline at end of file diff --git a/code/sdk/application/wearable/fd230app/nativeui/networkandcall/src/NetworkAndCallPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/networkandcall/src/NetworkAndCallPresenter.cpp index b1a83a70c..c152acb1a 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/networkandcall/src/NetworkAndCallPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/networkandcall/src/NetworkAndCallPresenter.cpp @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-04-23 09:59:32 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-04-23 15:05:02 + * @LastEditTime: 2024-04-23 17:00:37 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/networkandcall/src/NetworkAndCallPresenter.cpp */ #include "AppViewIDs.h" @@ -11,6 +11,9 @@ #include "common/key_code.h" #include #include "networkandcall/include/NetworkAndCallView.h" +#include "map" +#include "functional" +#include "iostream" namespace OHOS { @@ -63,31 +66,39 @@ namespace OHOS WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NetworkAndCallView::GetInstance fail!!"); return false; } + + + std::map buttonMap = { + {p_NetworkAndCallView->GetVoLTEToggleButton(), "VoLTE"}, + {p_NetworkAndCallView->GetMobileDataToggleButton(), "MobileData"}, + {p_NetworkAndCallView->GetMobileDataOptionsView()->GetSystemUpdateToggleButton(), "SystemUpdate"}, + {p_NetworkAndCallView->GetMobileDataOptionsView()->GetOnlineMusicToggleButton(), "OnlineMusic"}}; - if (&view == p_NetworkAndCallView->GetVoLTEToggleButton()) // 如果点击的是VOLTE按钮 + auto it = buttonMap.find(&view); + if (it != buttonMap.end()) { - if (p_NetworkAndCallView->GetVoLTEToggleButton()->GetState() == true) + UIToggleButton *toggleButton = dynamic_cast(&view); + if (toggleButton != nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VoLTE is enable!"); - } - else - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "VoLTE is disable!"); + if (toggleButton->GetState() == true) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%s is enable!", it->second.c_str()); + } + else + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%s is disable!", it->second.c_str()); + } } + return true; } - else if (&view == p_NetworkAndCallView->GetMobileDataToggleButton()) // 如果点击的是移动数据按钮 + + if (&view == p_NetworkAndCallView->GetNetworkAndCallImage(2) && p_NetworkAndCallView->GetMobileDataToggleButton()->GetState() == true) { - if (p_NetworkAndCallView->GetMobileDataToggleButton()->GetState() == true) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MobileData is enable!"); - } - else - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MobileData is disable!"); - } + p_NetworkAndCallView->ChangeView(NETWORKANDCALLVIEW, MOBILEDATAOPTIONSVIEW); + return true; } - return true; + return false; } bool NetworkAndCallPresenter::OnDrag(UIView &view, const DragEvent &event) @@ -100,11 +111,17 @@ namespace OHOS bool NetworkAndCallPresenter::OnDragEnd(UIView &view, const DragEvent &event) { - UNUSED(view); WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NetworkAndCallPresenter::OnDragEnd"); if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) { - NativeAbility::GetInstance().Back(); + if (strcmp(view.GetViewId(), MOBILEDATAOPTIONSVIEWID) == 0) + { + NetworkAndCallView::GetInstance()->ChangeView(MOBILEDATAOPTIONSVIEW, NETWORKANDCALLVIEW); + } + else + { + NativeAbility::GetInstance().Back(); + } } return true; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/networkandcall/src/NetworkAndCallView.cpp b/code/sdk/application/wearable/fd230app/nativeui/networkandcall/src/NetworkAndCallView.cpp index 4783f70bd..a72c484c0 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/networkandcall/src/NetworkAndCallView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/networkandcall/src/NetworkAndCallView.cpp @@ -28,14 +28,14 @@ namespace OHOS void NetworkAndCallView::ClearAll(void) { - if (NetworkAndCallScrollView != nullptr) + if (NetworkAndCallScrollView[NETWORKANDCALLVIEW] != nullptr) { - NetworkAndCallScrollView->RemoveAll(); + NetworkAndCallScrollView[NETWORKANDCALLVIEW]->RemoveAll(); delete Title; Title = nullptr; - for (int i = 0; i < 3; i++) + for (int i = 0; i < ITEM_NUM; i++) { delete NetworkAndCallImage[i]; NetworkAndCallImage[i] = nullptr; @@ -53,34 +53,34 @@ namespace OHOS delete NextImage; NextImage = nullptr; - delete NetworkAndCallScrollView; - NetworkAndCallScrollView = nullptr; + delete NetworkAndCallScrollView[NETWORKANDCALLVIEW]; + NetworkAndCallScrollView[NETWORKANDCALLVIEW] = nullptr; } } void NetworkAndCallView::NetworkAndCallViewInit(void) { - if (NetworkAndCallScrollView == nullptr) + if (NetworkAndCallScrollView[NETWORKANDCALLVIEW] == nullptr) { - NetworkAndCallScrollView = new UIScrollView(); - if (NetworkAndCallScrollView == nullptr) + NetworkAndCallScrollView[NETWORKANDCALLVIEW] = new UIScrollView(); + if (NetworkAndCallScrollView[NETWORKANDCALLVIEW] == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::NetworkAndCallScrollView new fail!"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::NetworkAndCallScrollView[NETWORKANDCALLVIEW] new fail!"); return; } - NetworkAndCallScrollView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight()); + NetworkAndCallScrollView[NETWORKANDCALLVIEW]->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight()); UIView::OnDragListener *draglistener = static_cast(NetworkAndCallPresenter::GetInstance()); if (draglistener == nullptr) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "LanguageSwitchView::draglistener can not be nullptr!"); return; } - NetworkAndCallScrollView->SetOnDragListener(draglistener); - NetworkAndCallScrollView->SetScrollBlankSize(50); - NetworkAndCallScrollView->SetReboundSize(35); - NetworkAndCallScrollView->SetHorizontalScrollState(false); - NetworkAndCallScrollView->SetTouchable(true); - NetworkAndCallScrollView->SetDraggable(true); + NetworkAndCallScrollView[NETWORKANDCALLVIEW]->SetOnDragListener(draglistener); + NetworkAndCallScrollView[NETWORKANDCALLVIEW]->SetScrollBlankSize(50); + NetworkAndCallScrollView[NETWORKANDCALLVIEW]->SetReboundSize(35); + NetworkAndCallScrollView[NETWORKANDCALLVIEW]->SetHorizontalScrollState(false); + NetworkAndCallScrollView[NETWORKANDCALLVIEW]->SetTouchable(true); + NetworkAndCallScrollView[NETWORKANDCALLVIEW]->SetDraggable(true); /* ---------------------------------- Title --------------------------------- */ Title = new UILabelExt(); if (Title == nullptr) @@ -99,7 +99,7 @@ namespace OHOS /* -------------------------------------------------------------------------- */ int positionY_Img = 120; const char *text[] = {"VoLTE 通话", "移动数据", "移动数据选项"}; - for (int i = 0; i < 3; i++) + for (int i = 0; i < ITEM_NUM; i++) { NetworkAndCallImage[i] = new UIImageView(); // Create a new UIImageView for each iteration if (NetworkAndCallImage[i] == nullptr) @@ -153,6 +153,8 @@ namespace OHOS UIView::OnClickListener *toggleButtonClick = static_cast(NetworkAndCallPresenter::GetInstance()); VoLTE_toggleButton->SetOnClickListener(toggleButtonClick); MobileData_toggleButton->SetOnClickListener(toggleButtonClick); + NetworkAndCallImage[2]->SetTouchable(true); + NetworkAndCallImage[2]->SetOnClickListener(toggleButtonClick); /* -------------------------------------------------------------------------- */ NextImage = new UIImageView(); if (NextImage == nullptr) @@ -177,16 +179,16 @@ namespace OHOS void NetworkAndCallView::OnSetUpView() { View::OnSetUpView(); - NetworkAndCallScrollView->Add(Title); - for (int i = 0; i < 3; i++) + NetworkAndCallScrollView[NETWORKANDCALLVIEW]->Add(Title); + for (int i = 0; i < ITEM_NUM; i++) { - NetworkAndCallScrollView->Add(NetworkAndCallImage[i]); - NetworkAndCallScrollView->Add(NetworkAndCallLabel[i]); + NetworkAndCallScrollView[NETWORKANDCALLVIEW]->Add(NetworkAndCallImage[i]); + NetworkAndCallScrollView[NETWORKANDCALLVIEW]->Add(NetworkAndCallLabel[i]); } - NetworkAndCallScrollView->Add(VoLTE_toggleButton); - NetworkAndCallScrollView->Add(MobileData_toggleButton); - NetworkAndCallScrollView->Add(NextImage); - RootView::GetInstance()->Add(NetworkAndCallScrollView); + NetworkAndCallScrollView[NETWORKANDCALLVIEW]->Add(VoLTE_toggleButton); + NetworkAndCallScrollView[NETWORKANDCALLVIEW]->Add(MobileData_toggleButton); + NetworkAndCallScrollView[NETWORKANDCALLVIEW]->Add(NextImage); + RootView::GetInstance()->Add(NetworkAndCallScrollView[NETWORKANDCALLVIEW]); Draw(); } @@ -206,15 +208,96 @@ namespace OHOS return; } - //获取VOLTE button - UIToggleButton * NetworkAndCallView::GetVoLTEToggleButton(void) + // 获取VOLTE button + UIToggleButton *NetworkAndCallView::GetVoLTEToggleButton(void) { return VoLTE_toggleButton; } - //获取移动数据 button - UIToggleButton * NetworkAndCallView::GetMobileDataToggleButton(void) + // 获取移动数据 button + UIToggleButton *NetworkAndCallView::GetMobileDataToggleButton(void) { return MobileData_toggleButton; } + + UIImageView *NetworkAndCallView::GetNetworkAndCallImage(int index) + { + return NetworkAndCallImage[index]; + } + + MobileDataOptionsView *NetworkAndCallView::GetMobileDataOptionsView(void) + { + return mobileDataOptionsView; + } + + // 切换到网络与通话视图 + bool NetworkAndCallView::ChangeNetworkAndCallView(int16_t thisView) + { + if (NetworkAndCallScrollView[thisView] == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "NetworkAndCallView::ChangeNetworkAndCallView"); + RootView::GetInstance()->Add(NetworkAndCallScrollView[thisView]); + } + return true; + } + + // 切换到数据选项视图 + bool NetworkAndCallView::ChangeMobileDataOptionsView(int16_t thisView) + { + if (NetworkAndCallScrollView[thisView] == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessView::ChangeScreenDurationView"); + mobileDataOptionsView = new MobileDataOptionsView(); + if (mobileDataOptionsView == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessView:: new scrollView[%d] fail", thisView); + return false; + } + NetworkAndCallScrollView[thisView] = mobileDataOptionsView->MobileDataOptionsViewInit(); + RootView::GetInstance()->Add(NetworkAndCallScrollView[thisView]); + } + return true; + } + + struct NetworkAndCallViewMapper + { + const int16_t viewId; + bool (NetworkAndCallView::*func)(int16_t thisView); + }; + + static const NetworkAndCallViewMapper ViewMapper[] = { + {NETWORKANDCALLVIEW, &NetworkAndCallView::ChangeNetworkAndCallView}, + {MOBILEDATAOPTIONSVIEW, &NetworkAndCallView::ChangeMobileDataOptionsView}, + }; + + bool NetworkAndCallView::ClickFunc(int16_t interface) + { + int funcSize = sizeof(ViewMapper) / sizeof(ViewMapper[0]); + for (int i = 0; i < funcSize; i++) + { + if (interface == ViewMapper[i].viewId) + { + bool jug = (this->*(ViewMapper[i].func))(interface); + if (jug == false) + { + return false; + } + return true; + } + } + return false; + } + + void NetworkAndCallView::ChangeView(int16_t hideView, int16_t showView) + { + if (hideView > MAX_NETWORKANDCALLVIEWID) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "NetworkAndCallView::ViewId Overstep ones bounds"); + return; + } + NetworkAndCallScrollView[hideView]->SetVisible(false); + ClickFunc(showView); + NetworkAndCallScrollView[showView]->SetVisible(true); + Draw(); + } } \ No newline at end of file