添加移动数据选项页面
authorluozheng <1732036298@qq.com>
Tue, 23 Apr 2024 09:16:22 +0000 (17:16 +0800)
committerluozheng <1732036298@qq.com>
Tue, 23 Apr 2024 09:16:22 +0000 (17:16 +0800)
code/sdk/application/wearable/fd230app/CMakeLists.txt
code/sdk/application/wearable/fd230app/nativeui/networkandcall/include/MobileDataOptionsView.h [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/networkandcall/include/NetworkAndCallView.h
code/sdk/application/wearable/fd230app/nativeui/networkandcall/src/MobileDataOptionsView.cpp [new file with mode: 0644]
code/sdk/application/wearable/fd230app/nativeui/networkandcall/src/NetworkAndCallPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/networkandcall/src/NetworkAndCallView.cpp

index 5cb3d66..2daf902 100644 (file)
@@ -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 (file)
index 0000000..691af5a
--- /dev/null
@@ -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
index b96e627..9b3e1bc 100644 (file)
@@ -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
  */
 
 #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<NetworkAndCallPresenter>
     {
@@ -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 (file)
index 0000000..60c80be
--- /dev/null
@@ -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<UIView::OnDragListener *>(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<UIView::OnClickListener *>(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
index b1a83a7..c152acb 100644 (file)
@@ -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 <custom_utils.h>
 #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<UIView *, std::string> 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<UIToggleButton *>(&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;
     }
index 4783f70..a72c484 100644 (file)
@@ -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<UIView::OnDragListener *>(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<UIView::OnClickListener *>(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<NetworkAndCallPresenter>::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