系统视图优化:只有一个slice其他为subView
author罗正yun <1732036298@qq.com>
Fri, 26 Jan 2024 09:51:00 +0000 (17:51 +0800)
committer罗正yun <1732036298@qq.com>
Fri, 26 Jan 2024 09:51:00 +0000 (17:51 +0800)
16 files changed:
autuobuild.sh
code/sdk/application/wearable/nativeapp/CMakeLists.txt
code/sdk/application/wearable/nativeapp/nativelauncher/include/AppViewIDs.h
code/sdk/application/wearable/nativeapp/nativelauncher/include/NativeLauncher.h
code/sdk/application/wearable/nativeapp/nativelauncher/src/NativeLauncher.cpp
code/sdk/application/wearable/nativeapp/nativeui/system/include/SystemFactoryResetPresenter.h [deleted file]
code/sdk/application/wearable/nativeapp/nativeui/system/include/SystemFactoryResetView.h
code/sdk/application/wearable/nativeapp/nativeui/system/include/SystemModel.h [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/system/include/SystemPresenter.h
code/sdk/application/wearable/nativeapp/nativeui/system/include/SystemView.h
code/sdk/application/wearable/nativeapp/nativeui/system/src/SystemFactoryResetPresenter.cpp [deleted file]
code/sdk/application/wearable/nativeapp/nativeui/system/src/SystemFactoryResetView.cpp
code/sdk/application/wearable/nativeapp/nativeui/system/src/SystemLanguageView.cpp
code/sdk/application/wearable/nativeapp/nativeui/system/src/SystemModel.cpp [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/system/src/SystemPresenter.cpp
code/sdk/application/wearable/nativeapp/nativeui/system/src/SystemView.cpp

index 88e2b59..10d9bbc 100644 (file)
@@ -13,9 +13,9 @@ fi
 
 if [ "$2" == "" ]
 then
-RELEASE_BUILD=release
-else
 RELEASE_BUILD=debug
+else
+RELEASE_BUILD=release
 fi
 CURRENT_BRANCH=`git branch |awk '$1=="*"{print $2}'`
 COMMIT_ID=`git rev-parse HEAD`
index 55a1d84..e65b882 100755 (executable)
@@ -213,11 +213,11 @@ set(SOURCES
 
     #系统
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/system/src/SystemPresenter.cpp                       
-    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/system/src/SystemView.cpp                                         
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/system/src/SystemView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/system/src/SystemModel.cpp                                                
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/system/src/SystemAboutTheWatchView.cpp                     
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/system/src/SystemSuperviseView.cpp             
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/system/src/SystemLanguageView.cpp     
-    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/system/src/SystemFactoryResetPresenter.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/system/src/SystemFactoryResetView.cpp
 
     #声音与震动
index 8ef146e..417d287 100755 (executable)
@@ -46,7 +46,6 @@ typedef enum : uint16_t
     VIEW_FUTURE_WEATHER,         // 未来天气
     VIEW_GET_WEATHER_DATA_ERROR, // 获取天气数据失败
     VIEW_SYSTEM,                 // 系统
-    VIEW_SYSTEM_FACTORY_RESET,   // 系统:恢复出厂设置
     VIEW_SOUND_VIBRATION,        // 声音与震动
     VIEW_SYSTEM_VOLUME,          // 系统音量
     VIEW_CALL_VOLUME,            // 通话音量
index 2b334b6..853ac77 100755 (executable)
@@ -50,7 +50,6 @@ namespace OHOS
         void InitGetWeatherDataErrorSlice(void);
         /* -------------------------------------------------------------------------- */
         void InitSystemSlice(void);
-        void InitSystemFactoryResetSlice(void);
         /* -------------------------------------------------------------------------- */
         void InitSoundAndVibrationSlice(void);
         void InitSystemVolumeSlice(void);
index b822538..9ed64bc 100755 (executable)
@@ -71,8 +71,6 @@
 
 #include "system/include/SystemPresenter.h"
 #include "system/include/SystemView.h"
-#include "system/include/SystemFactoryResetPresenter.h"
-#include "system/include/SystemFactoryResetView.h"
 
 #include "soundandvibration/include/SoundAndVibrationPresenter.h"
 #include "soundandvibration/include/SoundAndVibrationView.h"
@@ -140,7 +138,6 @@ namespace OHOS
         {VIEW_FUTURE_WEATHER, &NativeLauncher::InitFutureWeatherSlice},               // 未来天气
         {VIEW_GET_WEATHER_DATA_ERROR, &NativeLauncher::InitGetWeatherDataErrorSlice}, // 获取天气数据失败
         {VIEW_SYSTEM, &NativeLauncher::InitSystemSlice},                              // 系统实例化地址
-        {VIEW_SYSTEM_FACTORY_RESET, &NativeLauncher::InitSystemFactoryResetSlice},    // 系统:恢复出厂设置实例化地址
         {VIEW_SOUND_VIBRATION, &NativeLauncher::InitSoundAndVibrationSlice},          // 声音与震动实例化地址
         {VIEW_SYSTEM_VOLUME, &NativeLauncher::InitSystemVolumeSlice},                 // 系统音量
 
@@ -492,16 +489,6 @@ namespace OHOS
         NativeAbility::GetInstance().AddSliceProxy(VIEW_SYSTEM, system);
     }
 
-    void NativeLauncher::InitSystemFactoryResetSlice(void) // 系统:恢复出厂设置
-    {
-        SliceProxy *systemfactoryreset = new AbilitySliceProxy<SystemFactoryResetView, SystemFactoryResetPresenter>;
-        if (systemfactoryreset == nullptr)
-        {
-            return;
-        }
-        NativeAbility::GetInstance().AddSliceProxy(VIEW_SYSTEM_FACTORY_RESET, systemfactoryreset);
-    }
-
     void NativeLauncher::InitMessageSlice(void) // 消息中心
     {
         SliceProxy *messageview = new AbilitySliceProxy<MessageView, MessagePresenter>;
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/system/include/SystemFactoryResetPresenter.h b/code/sdk/application/wearable/nativeapp/nativeui/system/include/SystemFactoryResetPresenter.h
deleted file mode 100644 (file)
index f23356d..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-#ifndef SYSTEM_FACTORYRESET_PRESENTER_H\r
-#define SYSTEM_FACTORYRESET_PRESENTER_H\r
-\r
-#include "Presenter.h"\r
-\r
-#include "SystemFactoryResetView.h"\r
-\r
-namespace OHOS\r
-{\r
-    class SystemFactoryResetView;\r
-\r
-    class SystemFactoryResetPresenter : public Presenter<SystemFactoryResetView>,\r
-                                  public UIView::OnClickListener,\r
-                                  public UIView::OnDragListener\r
-    {\r
-    public:\r
-        SystemFactoryResetPresenter();\r
-        virtual ~SystemFactoryResetPresenter();\r
-\r
-        void OnStart() override;\r
-        void OnPause() override;\r
-        void OnResume() override;\r
-        void OnStop() override;\r
-\r
-        static SystemFactoryResetPresenter *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 // SLEEPDETAIL_PRESENTER_H
\ No newline at end of file
index c848700..957df83 100644 (file)
@@ -4,15 +4,12 @@
 #include "BaseView.h"\r
 #include "View.h"\r
 \r
-#include "components/ui_view_group.h"\r
 #include "components/ui_image_view.h"\r
 #include "components/ui_button.h"\r
+#include "components/ui_scroll_view.h"\r
 namespace OHOS\r
 {\r
-    static const char *FACTORYRESET_CHECKON  = "ShoutDownButtonCheckOn";//确认\r
-    static const char *FACTORYRESET_CHECKOFF = "ShoutDownButtonCheckOff";//取消\r
-    class SystemFactoryResetPresenter;\r
-    class SystemFactoryResetView : public View<SystemFactoryResetPresenter>\r
+    class SystemFactoryResetView\r
     {\r
 \r
     public:\r
@@ -20,20 +17,15 @@ namespace OHOS
         virtual ~SystemFactoryResetView();\r
         static SystemFactoryResetView *GetInstance(void);\r
 \r
-        void OnStart() override;\r
-        void OnSetUpView() override;\r
-        void OnTearDownView() override;\r
-        void OnStop() override;\r
+        UIScrollView *SystemFactoryResetViewInit(void);\r
+        void ClearAll(void);\r
 \r
     private:\r
-\r
-        void InitView(void);\r
-        void DeInitView(void);\r
-\r
-        UIViewGroup *container_ = nullptr;\r
-        UIImageView *FactoryResetImage = nullptr;\r
-        UIButton *FactoryResetButtonCheckOn = nullptr;\r
-        UIButton *FactoryResetButtonCheckOff = nullptr;\r
+        UIScrollView *scrollView{nullptr};\r
+        UIImageView *FactoryResetImage{nullptr};       // 恢复出厂设置背景图片\r
+        UIButton *FactoryResetButtonCheckOn{nullptr};  // 重置确认\r
+        UIButton *FactoryResetButtonCheckOff{nullptr}; // 重置否定\r
+        bool initViewStatus{false};\r
     };\r
 } // namespace OHOS\r
 #endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/system/include/SystemModel.h b/code/sdk/application/wearable/nativeapp/nativeui/system/include/SystemModel.h
new file mode 100644 (file)
index 0000000..4715f73
--- /dev/null
@@ -0,0 +1,20 @@
+#ifndef SYSTEM_MODEL_H
+#define SYSTEM_MODEL_H
+
+namespace OHOS
+{
+    class SystemModel
+    {
+    public:
+        static SystemModel *GetInstance(void);
+
+    private:
+        SystemModel() = default;
+        ~SystemModel(){}
+        SystemModel(const SystemModel &) = delete;
+        SystemModel &operator=(const SystemModel &) = delete;
+        
+    };
+}
+
+#endif
\ No newline at end of file
index d48e279..57140a5 100644 (file)
@@ -3,12 +3,26 @@
 \r
 #include "Presenter.h"\r
 #include "SystemView.h"\r
+#include "system/include/SystemModel.h"\r
 #include "components/ui_radio_button.h"\r
 namespace OHOS\r
 {\r
+    typedef enum\r
+    {\r
+        SYSTEMVIEW = 0,     // 系统视图(slice)\r
+        ABOUTTHEWATCHVIEW,  // 关于手表视图(subView)\r
+        SUPERVISEVIEW,      // 监管视图(subView)\r
+        SYSTEMLANGUAGEVIEW, // 系统语言视图(subView)\r
+        FACTORYRESETVIEW,   // 恢复出厂设置视图(subView)\r
+        MAX_VIEWID,\r
+    } SYSTEMVIEWId;\r
 \r
+    /* ---------------------------- 系统语言界面单选按钮VIEWID ---------------------------- */\r
     static const char *SIMPLIFIED_CHINESE_CHECKBOX = "SimplifiedChineseCheckBox"; // 简体中文\r
     static const char *ENGLISH_CHECKBOX = "EnglishCheckBox";                      // English\r
+    /* ---------------------------- 恢复出厂设置界面按钮的VIEWID --------------------------- */\r
+    static const char *FACTORYRESET_CHECKON = "ShoutDownButtonCheckOn";   // 确认\r
+    static const char *FACTORYRESET_CHECKOFF = "ShoutDownButtonCheckOff"; // 取消\r
     class RadiobuttonOnChangeListener : public UICheckBox::OnChangeListener\r
     {\r
     public:\r
@@ -29,13 +43,12 @@ namespace OHOS
     {\r
     public:\r
         SystemViewOnDragListener() {}\r
-\r
         ~SystemViewOnDragListener() {}\r
-\r
         bool OnDrag(UIView &view, const DragEvent &event) override;\r
     };\r
 \r
     class SystemView;\r
+    class UISampleModel;\r
     class SystemPresenter : public Presenter<SystemView>,\r
                             public UIView::OnClickListener,\r
                             public UIView::OnDragListener\r
@@ -56,6 +69,9 @@ namespace OHOS
         bool OnClick(UIView &view, const ClickEvent &event) override;\r
         bool OnDrag(UIView &view, const DragEvent &event) override;\r
         bool OnDragEnd(UIView &view, const DragEvent &event) override;\r
+\r
+    private:\r
+        SystemModel *systemModel;\r
     };\r
 } // namespace OHOS\r
 \r
index 4e9a968..f027780 100644 (file)
@@ -12,6 +12,7 @@
 #include "system/include/SystemAboutTheWatchView.h"\r
 #include "system/include/SystemSuperviseView.h"\r
 #include "system/include/SystemLanguageView.h"\r
+#include "system/include/SystemFactoryResetView.h"\r
 namespace OHOS\r
 {\r
     static const char *ABOUT_THE_WATCH = "AboutTheWatchButton";  // 关于手表\r
@@ -48,8 +49,10 @@ namespace OHOS
         bool ChangeSystemAboutView(int16_t thisView);\r
         bool ChangeSystemSuperviseView(int16_t thisView);\r
         bool ChangeSystemLanguageView(int16_t thisView);\r
+        bool ChangeSystemFactoryResetView(int16_t thisView);\r
         bool ClickFunc(int16_t interface);\r
         void ChangeView(int16_t hideView, int16_t showView);\r
+        UIScrollView *GetSystemScrollView(int ViewId);\r
     private:\r
         void InitIView(void);\r
         void ClearAll(void);\r
@@ -59,6 +62,7 @@ namespace OHOS
         SystemAboutTheWatchView *p_SystemAboutTheWatchView{nullptr};\r
         SystemSuperviseView *p_SystemSuperviseView{nullptr};\r
         SystemLanguageView *p_SystemLanguageView{nullptr};\r
+        SystemFactoryResetView *p_SystemFactoryResetView{nullptr};\r
         UIScrollView *SystemScrollView[5]{nullptr};\r
         UILabel *SystemLabel{nullptr}; // 标题\r
         UIButton *AboutTheWatchButton{nullptr};\r
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/system/src/SystemFactoryResetPresenter.cpp b/code/sdk/application/wearable/nativeapp/nativeui/system/src/SystemFactoryResetPresenter.cpp
deleted file mode 100644 (file)
index 358f022..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-#include "AppViewIDs.h"\r
-#include "NativeAbility.h"\r
-#include "graphic_math.h"\r
-#include "string.h"\r
-#include "system/include/SystemFactoryResetPresenter.h"\r
-\r
-namespace OHOS\r
-{\r
-\r
-    // 当前Presenter属性实例化的内存指针\r
-    static SystemFactoryResetPresenter *g_pSystemFactoryResetPresenter = nullptr;\r
-\r
-    SystemFactoryResetPresenter::SystemFactoryResetPresenter()\r
-    {\r
-\r
-        g_pSystemFactoryResetPresenter = this;\r
-    }\r
-\r
-    SystemFactoryResetPresenter::~SystemFactoryResetPresenter()\r
-    {\r
-\r
-        g_pSystemFactoryResetPresenter = nullptr;\r
-    }\r
-\r
-    SystemFactoryResetPresenter *SystemFactoryResetPresenter::GetInstance()\r
-    {\r
-\r
-        return g_pSystemFactoryResetPresenter;\r
-    }\r
-\r
-    void SystemFactoryResetPresenter::OnStart()\r
-    {\r
-\r
-        Presenter<SystemFactoryResetView>::OnStart();\r
-    }\r
-\r
-    void SystemFactoryResetPresenter::OnPause(void)\r
-    {\r
-\r
-        Presenter<SystemFactoryResetView>::OnPause();\r
-    }\r
-\r
-    void SystemFactoryResetPresenter::OnResume(void)\r
-    {\r
-\r
-        Presenter<SystemFactoryResetView>::OnResume();\r
-    }\r
-\r
-    void SystemFactoryResetPresenter::OnStop(void)\r
-    {\r
-\r
-        Presenter<SystemFactoryResetView>::OnStop();\r
-    }\r
-\r
-    bool SystemFactoryResetPresenter::OnDrag(UIView &view, const DragEvent &event)\r
-    {\r
-\r
-        UNUSED(view);\r
-        UNUSED(event);\r
-        return true;\r
-    }\r
-\r
-    bool SystemFactoryResetPresenter::OnClick(UIView &view, const ClickEvent &event)\r
-    {\r
-\r
-        // 根据控件id查找是哪个控件触发了点击回调\r
-        if (strcmp(view.GetViewId(), FACTORYRESET_CHECKON) == 0)\r
-        {\r
-            return true;\r
-        }\r
-        else if (strcmp(view.GetViewId(), FACTORYRESET_CHECKOFF) == 0)\r
-        {\r
-            NativeAbility::GetInstance().ChangeSlice(VIEW_SYSTEM);\r
-            return true;\r
-        }\r
-        return false;\r
-    }\r
-}
\ No newline at end of file
index b63e39e..5bca4da 100644 (file)
@@ -1,6 +1,6 @@
 #include "system/include/SystemFactoryResetView.h"\r
-#include "system/include/SystemFactoryResetPresenter.h"\r
-\r
+#include "system/include/SystemPresenter.h"\r
+#include "wearable_log.h"\r
 #include "UiConfig.h"\r
 \r
 namespace OHOS\r
@@ -10,12 +10,14 @@ namespace OHOS
 \r
     SystemFactoryResetView::SystemFactoryResetView()\r
     {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemFactoryResetView::SystemFactoryResetView");\r
         g_pSystemFactoryResetView = this;\r
     }\r
 \r
     SystemFactoryResetView::~SystemFactoryResetView()\r
     {\r
-        DeInitView();\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemFactoryResetView::~SystemFactoryResetView");\r
+        ClearAll();\r
         g_pSystemFactoryResetView = nullptr;\r
     }\r
 \r
@@ -24,115 +26,80 @@ namespace OHOS
         return g_pSystemFactoryResetView;\r
     }\r
 \r
-    void SystemFactoryResetView::InitView()\r
+    void SystemFactoryResetView::ClearAll()\r
     {\r
-        if (container_ == nullptr)\r
+        if (initViewStatus == true)\r
         {\r
-            container_ = new UIViewGroup();\r
-            container_->SetPosition(0, 0, 466, 466);\r
-            container_->SetStyle(STYLE_BACKGROUND_OPA, 0);\r
+            scrollView->RemoveAll();\r
+            delete FactoryResetImage;\r
+            FactoryResetImage = nullptr;\r
+            delete FactoryResetButtonCheckOn;\r
+            FactoryResetButtonCheckOn = nullptr;\r
+            delete FactoryResetButtonCheckOff;\r
+            FactoryResetButtonCheckOff = nullptr;\r
+            delete scrollView;\r
+            scrollView = nullptr;\r
         }\r
-        // Add ImageView to App\r
-        if (FactoryResetImage == nullptr)\r
+    }\r
+\r
+    UIScrollView *SystemFactoryResetView::SystemFactoryResetViewInit(void)\r
+    {\r
+        scrollView = new UIScrollView();\r
+        if (scrollView == nullptr)\r
         {\r
-            FactoryResetImage = new UIImageView();\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemFactoryResetView::new scrollView fail!");\r
+            return nullptr;\r
         }\r
-        FactoryResetImage->SetPosition(0, 0);   // widget's left position and top position\r
-        FactoryResetImage->Resize(466, 466);    // widget's width and height\r
-        FactoryResetImage->SetViewId("FactoryResetImage"); // Set style\r
-        FactoryResetImage->SetStyle(STYLE_BORDER_RADIUS, 300);\r
-        FactoryResetImage->SetSrc("/user/res/system/factoryreset.bin"); //恢复出厂设置\r
-        // Add to rootView\r
-        container_->Add(FactoryResetImage);\r
-        FactoryResetImage->SetVisible(true);\r
-\r
-        // Add Button to App\r
-        if (FactoryResetButtonCheckOn == nullptr)\r
+        scrollView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
+        scrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+        scrollView->SetStyle(STYLE_BORDER_RADIUS, 1294);\r
+        /* ---------------------------- FactoryResetImage --------------------------- */\r
+        FactoryResetImage = new UIImageView();\r
+        if (FactoryResetImage == nullptr)\r
         {\r
-            FactoryResetButtonCheckOn = new UIButton();\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemFactoryResetView::new FactoryResetImage fail!");\r
+            return nullptr;\r
         }\r
-        FactoryResetButtonCheckOn->SetPosition(256, 336); // widget's left position and top position\r
-        FactoryResetButtonCheckOn->Resize(100, 100);      // widget's width and height\r
-        FactoryResetButtonCheckOn->SetViewId(FACTORYRESET_CHECKON); // Set style\r
-        FactoryResetButtonCheckOn->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);\r
-        FactoryResetButtonCheckOn->SetImageSrc(PNG_SYSTEM_CHECK_ON_IMAGE, nullptr);\r
-        FactoryResetButtonCheckOn->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff191919, UIButton::PRESSED);\r
-        FactoryResetButtonCheckOn->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
-        // Add the CallBack about events\r
-        UIView::OnClickListener *FactoryResetButtonCheckOnClick = static_cast<UIView::OnClickListener *>(SystemFactoryResetPresenter::GetInstance());\r
-        FactoryResetButtonCheckOn->SetOnClickListener(FactoryResetButtonCheckOnClick);\r
-        // Add to rootView\r
-        container_->Add(FactoryResetButtonCheckOn);\r
-        FactoryResetButtonCheckOn->SetVisible(true);\r
-\r
-        // Add Button to App\r
+        FactoryResetImage->SetPosition(0, 0, 466, 466);\r
+        FactoryResetImage->SetStyle(STYLE_BORDER_RADIUS, 300);\r
+        FactoryResetImage->SetSrc("/user/res/system/factoryreset.bin"); // 恢复出厂设置\r
+        /* ----------------------- FactoryResetButtonCheckOff ----------------------- */\r
+        FactoryResetButtonCheckOff = new UIButton();\r
         if (FactoryResetButtonCheckOff == nullptr)\r
         {\r
-            FactoryResetButtonCheckOff = new UIButton();\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemFactoryResetView::new FactoryResetButtonCheckOff fail!");\r
+            return nullptr;\r
         }\r
-        FactoryResetButtonCheckOff->SetPosition(111, 336); // widget's left position and top position\r
-        FactoryResetButtonCheckOff->Resize(100, 100);      // widget's width and height\r
-        FactoryResetButtonCheckOff->SetViewId(FACTORYRESET_CHECKOFF); // Set style\r
-        FactoryResetButtonCheckOff->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);\r
-        FactoryResetButtonCheckOff->SetImageSrc(PNG_SYSTEM_CHECK_OFF_IMAGE, nullptr);\r
+        FactoryResetButtonCheckOff->SetPosition(240, 320, 130, 130);\r
+        FactoryResetButtonCheckOff->SetViewId(FACTORYRESET_CHECKOFF);\r
+        FactoryResetButtonCheckOff->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+        FactoryResetButtonCheckOff->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
         FactoryResetButtonCheckOff->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff191919, UIButton::PRESSED);\r
         FactoryResetButtonCheckOff->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
-        // Add the CallBack about events\r
-        UIView::OnClickListener *FactoryResetButtonCheckOffClick = static_cast<UIView::OnClickListener *>(SystemFactoryResetPresenter::GetInstance());\r
+        UIView::OnClickListener *FactoryResetButtonCheckOffClick = static_cast<UIView::OnClickListener *>(SystemPresenter::GetInstance());\r
         FactoryResetButtonCheckOff->SetOnClickListener(FactoryResetButtonCheckOffClick);\r
-        // Add to rootView\r
-        container_->Add(FactoryResetButtonCheckOff);\r
-        FactoryResetButtonCheckOff->SetVisible(true);\r
-    }\r
-\r
-    void SystemFactoryResetView::DeInitView()\r
-    {\r
-        if (container_ != nullptr)\r
-        {\r
-            container_->RemoveAll();\r
-            delete container_;\r
-            container_ = nullptr;\r
-        }\r
-        if (FactoryResetImage != nullptr)\r
-        {\r
-            delete FactoryResetImage;\r
-            FactoryResetImage = nullptr;\r
-        }\r
-        if (FactoryResetButtonCheckOn != nullptr)\r
-        {\r
-            delete FactoryResetButtonCheckOn;\r
-            FactoryResetButtonCheckOn = nullptr;\r
-        }\r
-        if (FactoryResetButtonCheckOff != nullptr)\r
+        /* ------------------------ FactoryResetButtonCheckOn ----------------------- */\r
+        FactoryResetButtonCheckOn = new UIButton();\r
+        if (FactoryResetButtonCheckOn == nullptr)\r
         {\r
-            delete FactoryResetButtonCheckOff;\r
-            FactoryResetButtonCheckOff = nullptr;\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemFactoryResetView::new FactoryResetButtonCheckOn fail!");\r
+            return nullptr;\r
         }\r
-    }\r
-\r
-    void SystemFactoryResetView::OnStart()\r
-    {\r
-        View<SystemFactoryResetPresenter>::OnStart();\r
-        InitView();\r
-        RootView::GetInstance()->Add(container_);\r
-    }\r
-\r
-    void SystemFactoryResetView::OnSetUpView()\r
-    {\r
-        View<SystemFactoryResetPresenter>::OnSetUpView();\r
-        Draw();\r
-    }\r
+        FactoryResetButtonCheckOn->SetPosition(97, 320, 130, 130);\r
+        FactoryResetButtonCheckOn->SetViewId(FACTORYRESET_CHECKON);\r
+        FactoryResetButtonCheckOn->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+        FactoryResetButtonCheckOn->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
+        FactoryResetButtonCheckOn->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xff191919, UIButton::PRESSED);\r
+        FactoryResetButtonCheckOn->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
+        UIView::OnClickListener *FactoryResetButtonCheckOnClick = static_cast<UIView::OnClickListener *>(SystemPresenter::GetInstance());\r
+        FactoryResetButtonCheckOn->SetOnClickListener(FactoryResetButtonCheckOnClick);\r
 \r
-    void SystemFactoryResetView::OnTearDownView()\r
-    {\r
-        View<SystemFactoryResetPresenter>::OnTearDownView();\r
-        return;\r
+        /* ----------------------------- Add to scroView ---------------------------- */\r
+        scrollView->Add(FactoryResetImage);\r
+        scrollView->Add(FactoryResetButtonCheckOff);\r
+        scrollView->Add(FactoryResetButtonCheckOn);\r
+        initViewStatus = true;\r
+        return scrollView;\r
     }\r
 \r
-    void SystemFactoryResetView::OnStop()\r
-    {\r
-        View<SystemFactoryResetPresenter>::OnStop();\r
-        RootView::GetInstance()->RemoveAll();\r
-        return;\r
-    }\r
 }
\ No newline at end of file
index e0457ae..9ae0227 100644 (file)
@@ -123,7 +123,6 @@ namespace OHOS
         scrollView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
         scrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
         scrollView->SetStyle(STYLE_BORDER_RADIUS, 1294);\r
-        scrollView->SetVisible(true);\r
         UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(SystemPresenter::GetInstance());\r
         if (draglistener == nullptr)\r
         {\r
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/system/src/SystemModel.cpp b/code/sdk/application/wearable/nativeapp/nativeui/system/src/SystemModel.cpp
new file mode 100644 (file)
index 0000000..8e77ce1
--- /dev/null
@@ -0,0 +1,12 @@
+#include "system/include/SystemModel.h"
+
+namespace OHOS
+{
+
+    SystemModel *SystemModel::GetInstance(void)
+    {
+        static SystemModel instance;
+        return &instance;
+    }
+
+}
\ No newline at end of file
index a7d67a6..27d1d35 100644 (file)
@@ -11,13 +11,14 @@ namespace OHOS
 \r
     SystemPresenter::SystemPresenter()\r
     {\r
-\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemPresenter::SystemPresenter");\r
         g_pSystemPresenter = this;\r
+        systemModel = SystemModel::GetInstance();\r
     }\r
 \r
     SystemPresenter::~SystemPresenter()\r
     {\r
-\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemPresenter::~SystemPresenter");\r
         g_pSystemPresenter = nullptr;\r
     }\r
 \r
@@ -58,42 +59,60 @@ namespace OHOS
 \r
     bool SystemPresenter::OnDragEnd(UIView &view, const DragEvent &event)\r
     {\r
-\r
+        SystemView *p_SystemView = SystemView::GetInstance();\r
         if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)\r
         {\r
-            NativeAbility::GetInstance().ChangeSlice(VIEW_SYSTEM);\r
+            for (int i = 1; i < MAX_VIEWID; i++)\r
+            {\r
+                if (p_SystemView->GetSystemScrollView(i)->IsVisible() == true)\r
+                {\r
+                    p_SystemView->ChangeView(i, SYSTEMVIEW);\r
+                    break;\r
+                }\r
+            }\r
             return true;\r
         }\r
         return false;\r
     }\r
 \r
+    // 该点击回调主要用于在系统视图界面进行跳转视图\r
     bool SystemPresenter::OnClick(UIView &view, const ClickEvent &event)\r
     {\r
-\r
+        SystemView *p_SystemView = SystemView::GetInstance();\r
         // 根据控件id查找是哪个控件触发了点击回调\r
         if (strcmp(view.GetViewId(), ABOUT_THE_WATCH) == 0)\r
         {\r
-            SystemView::GetInstance()->ChangeView(0, 1);\r
+            SystemView::GetInstance()->ChangeView(SYSTEMVIEW, ABOUTTHEWATCHVIEW);\r
             return true;\r
         }\r
         else if (strcmp(view.GetViewId(), SUPERVISE) == 0)\r
         {\r
-            SystemView::GetInstance()->ChangeView(0, 2);\r
+            SystemView::GetInstance()->ChangeView(SYSTEMVIEW, SUPERVISEVIEW);\r
             return true;\r
         }\r
         else if (strcmp(view.GetViewId(), SYSTEM_LANGUAGE) == 0)\r
         {\r
-            SystemView::GetInstance()->ChangeView(0, 3);\r
+            SystemView::GetInstance()->ChangeView(SYSTEMVIEW, SYSTEMLANGUAGEVIEW);\r
             return true;\r
         }\r
         else if (strcmp(view.GetViewId(), FACTORY_RESET) == 0)\r
         {\r
-            NativeAbility::GetInstance().ChangeSlice(VIEW_SYSTEM_FACTORY_RESET);\r
+            SystemView::GetInstance()->ChangeView(SYSTEMVIEW, FACTORYRESETVIEW);\r
+            return true;\r
+        }\r
+        else if (strcmp(view.GetViewId(), FACTORYRESET_CHECKON))\r
+        {\r
+            return true;\r
+        }\r
+        else if (strcmp(view.GetViewId(), FACTORYRESET_CHECKOFF))\r
+        {\r
+            p_SystemView->ChangeView(FACTORYRESETVIEW, SYSTEMVIEW);\r
             return true;\r
         }\r
         return false;\r
     }\r
 \r
+    // 该拖拽是用来处理系统视图(slice)的左滑退出事件和子视图的左滑退出到系统视图区分开\r
     bool SystemViewOnDragListener::OnDrag(UIView &view, const DragEvent &event)\r
     {\r
         if ((event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) &&\r
@@ -128,6 +147,7 @@ namespace OHOS
         return false;\r
     }\r
 \r
+    // 用来监听语言切换\r
     bool RadiobuttonOnChangeListener::OnChange(UICheckBox::UICheckBoxState state)\r
     {\r
         switch (state)\r
index 4760d3d..6e126ac 100644 (file)
@@ -28,13 +28,21 @@ namespace OHOS
     {\r
         if (initViewStatus == true)\r
         {\r
-            SystemScrollView[0]->RemoveAll();\r
+            SystemScrollView[SYSTEMVIEW]->RemoveAll();\r
+            UIView::OnDragListener *draglistener = SystemScrollView[SYSTEMVIEW]->GetOnDragListener();\r
+            if (draglistener != nullptr)\r
+            {\r
+                delete draglistener;\r
+                draglistener = nullptr;\r
+            }\r
             delete p_SystemAboutTheWatchView;\r
             p_SystemAboutTheWatchView = nullptr;\r
             delete p_SystemSuperviseView;\r
             p_SystemSuperviseView = nullptr;\r
             delete p_SystemLanguageView;\r
             p_SystemLanguageView = nullptr;\r
+            delete p_SystemFactoryResetView;\r
+            p_SystemFactoryResetView = nullptr;\r
             delete SystemLabel;\r
             SystemLabel = nullptr;\r
             delete AboutTheWatchButton;\r
@@ -53,26 +61,26 @@ namespace OHOS
     /// @return true 设置成功,false 失败\r
     bool SystemView::SetTheSystemScrollView(void)\r
     {\r
-        SystemScrollView[0] = new UIScrollView();\r
-        if (SystemScrollView == nullptr)\r
+        SystemScrollView[SYSTEMVIEW] = new UIScrollView();\r
+        if (SystemScrollView[SYSTEMVIEW] == nullptr)\r
         {\r
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::SystemScrollView new fail!");\r
             return false;\r
         }\r
-        SystemScrollView[0]->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
-        SystemScrollView[0]->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
-        SystemScrollView[0]->SetScrollBlankSize(35);\r
-        SystemScrollView[0]->SetReboundSize(50);\r
-        SystemScrollView[0]->SetDirection(1);\r
+        SystemScrollView[SYSTEMVIEW]->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
+        SystemScrollView[SYSTEMVIEW]->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+        SystemScrollView[SYSTEMVIEW]->SetScrollBlankSize(35);\r
+        SystemScrollView[SYSTEMVIEW]->SetReboundSize(50);\r
+        SystemScrollView[SYSTEMVIEW]->SetDirection(1);\r
         UIView::OnDragListener *draglistener = static_cast<UIView::OnDragListener *>(new SystemViewOnDragListener());\r
         if (draglistener == nullptr)\r
         {\r
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::draglistener can not be nullptr!");\r
             return false;\r
         }\r
-        SystemScrollView[0]->SetOnDragListener(draglistener);\r
-        SystemScrollView[0]->SetTouchable(true);\r
-        SystemScrollView[0]->SetDraggable(true);\r
+        SystemScrollView[SYSTEMVIEW]->SetOnDragListener(draglistener);\r
+        SystemScrollView[SYSTEMVIEW]->SetTouchable(true);\r
+        SystemScrollView[SYSTEMVIEW]->SetDraggable(true);\r
         return true;\r
     }\r
 \r
@@ -114,7 +122,7 @@ namespace OHOS
         button->SetViewId(buttonconfig.ViewId);\r
         button->SetStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
         button->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
-        button->SetImageSrc(buttonconfig.ImageSrc, nullptr);\r
+        button->SetImageSrc(buttonconfig.ImageSrc, buttonconfig.ImageSrc);\r
         button->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
         button->SetOnClickListener(clickListener);\r
         return button;\r
@@ -180,11 +188,14 @@ namespace OHOS
         initViewStatus = true;\r
     }\r
 \r
-        // 0.跳转到系统视图,其他视图都市通过这个视图跳转\r
+    // 0.跳转到系统视图,其他视图都市通过这个视图跳转\r
     bool SystemView::ChangeSystemView(int16_t thisView)\r
     {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::ChangeSystemView");\r
-        RootView::GetInstance()->Add(SystemScrollView[thisView]);\r
+        if (SystemScrollView[thisView] == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::ChangeSystemView");\r
+            RootView::GetInstance()->Add(SystemScrollView[thisView]);\r
+        }\r
         return true;\r
     }\r
 \r
@@ -242,6 +253,29 @@ namespace OHOS
         return true;\r
     }\r
 \r
+    // 4.跳转到恢复出厂设置界面\r
+    bool SystemView::ChangeSystemFactoryResetView(int16_t thisView)\r
+    {\r
+        if (SystemScrollView[thisView] == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::ChangeSystemFactoryResetView");\r
+            p_SystemFactoryResetView = new SystemFactoryResetView();\r
+            if (p_SystemFactoryResetView == nullptr)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView:: new scrollView[%d] fail", thisView);\r
+                return false;\r
+            }\r
+            SystemScrollView[thisView] = p_SystemFactoryResetView->SystemFactoryResetViewInit();\r
+            RootView::GetInstance()->Add(SystemScrollView[thisView]);\r
+        }\r
+        return true;\r
+    }\r
+    \r
+    UIScrollView *SystemView::GetSystemScrollView(int ViewId)\r
+    {\r
+        return SystemScrollView[ViewId];\r
+    }\r
+\r
     /* -------------------------------------------------------------------------- */\r
     // 1.MainStopWatchViewMapper:结构体定义了一个将视图ID映射到特定成员函数指针的映射表。\r
     struct SystemViewMapper\r
@@ -251,18 +285,18 @@ namespace OHOS
     };\r
 \r
     // 2.ViewMapper[] 是一个静态的视图映射数组,将视图ID与MainStopWatchView类中的特定成员函数指针进行了绑定。\r
-    static const SystemViewMapper ViewMapper[] =\r
-        {\r
-            {0, &SystemView::ChangeSystemView},\r
-            {1, &SystemView::ChangeSystemAboutView},\r
-            {2, &SystemView::ChangeSystemSuperviseView},\r
-            {3, &SystemView::ChangeSystemLanguageView},\r
+    static const SystemViewMapper ViewMapper[] = {\r
+        {SYSTEMVIEW, &SystemView::ChangeSystemView},\r
+        {ABOUTTHEWATCHVIEW, &SystemView::ChangeSystemAboutView},\r
+        {SUPERVISEVIEW, &SystemView::ChangeSystemSuperviseView},\r
+        {SYSTEMLANGUAGEVIEW, &SystemView::ChangeSystemLanguageView},\r
+        {FACTORYRESETVIEW, &SystemView::ChangeSystemFactoryResetView},\r
     };\r
 \r
     // 3.根据传入的interface参数执行相应视图ID关联的成员函数。\r
     bool SystemView::ClickFunc(int16_t interface)\r
     {\r
-        int funcSize = sizeof(ViewMapper) / sizeof(ViewMapper[0]);\r
+        int funcSize = sizeof(ViewMapper) / sizeof(ViewMapper[SYSTEMVIEW]);\r
         for (int i = 0; i < funcSize; i++)\r
         {\r
             if (interface == ViewMapper[i].viewId)\r
@@ -281,7 +315,7 @@ namespace OHOS
     // 4.切换视图\r
     void SystemView::ChangeView(int16_t hideView, int16_t showView)\r
     {\r
-        if (hideView > 5)\r
+        if (hideView > MAX_VIEWID)\r
         {\r
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView:: SystemViewId Overstep ones bounds");\r
             return;\r
@@ -302,17 +336,17 @@ namespace OHOS
     void SystemView::OnSetUpView()\r
     {\r
         View<SystemPresenter>::OnSetUpView();\r
-        if (SystemScrollView[0] == nullptr)\r
+        if (SystemScrollView[SYSTEMVIEW] == nullptr)\r
         {\r
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView:: OnSetUpView  has nullptr");\r
             return;\r
         }\r
-        SystemScrollView[0]->Add(SystemLabel);\r
-        SystemScrollView[0]->Add(AboutTheWatchButton);\r
-        SystemScrollView[0]->Add(SuperviseButton);\r
-        SystemScrollView[0]->Add(SystemLanguageButton);\r
-        SystemScrollView[0]->Add(FactoryResetButton);\r
-        RootView::GetInstance()->Add(SystemScrollView[0]);\r
+        SystemScrollView[SYSTEMVIEW]->Add(SystemLabel);\r
+        SystemScrollView[SYSTEMVIEW]->Add(AboutTheWatchButton);\r
+        SystemScrollView[SYSTEMVIEW]->Add(SuperviseButton);\r
+        SystemScrollView[SYSTEMVIEW]->Add(SystemLanguageButton);\r
+        SystemScrollView[SYSTEMVIEW]->Add(FactoryResetButton);\r
+        RootView::GetInstance()->Add(SystemScrollView[SYSTEMVIEW]);\r
         Draw();\r
     }\r
 \r