系统视图按键修改
authorhcj <1224667075@qq.com>
Thu, 7 Mar 2024 06:32:19 +0000 (14:32 +0800)
committerhcj <1224667075@qq.com>
Thu, 7 Mar 2024 06:32:19 +0000 (14:32 +0800)
code/sdk/application/wearable/fd230app/nativeui/system/include/SystemPresenter.h
code/sdk/application/wearable/fd230app/nativeui/system/include/SystemView.h
code/sdk/application/wearable/fd230app/nativeui/system/src/SystemPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/system/src/SystemView.cpp

index 98362a6..c456417 100644 (file)
@@ -14,7 +14,8 @@ namespace OHOS
         ABOUTTHEWATCHVIEW,  // 关于手表视图(subView)\r
         SUPERVISEVIEW,      // 监管视图(subView)\r
         SYSTEMLANGUAGEVIEW, // 系统语言视图(subView)\r
-        FACTORYRESETVIEW,   // 恢复出厂设置视图(subView)\r
+        FACTORYRESETVIEW,   // 恢复出厂设置视图(subView)upgrade\r
+        SYSTEMLUPGRADE,\r
         MAX_SYSTEMVIEWID,\r
     } SYSTEMVIEWID;\r
 \r
index 9711967..c47602b 100644 (file)
@@ -47,6 +47,24 @@ namespace OHOS
             const char *ViewId;\r
             const char *ImageSrc;\r
         };\r
+        struct ButtonConfig_ext_t\r
+        {\r
+            int x;\r
+            int y;\r
+            int w;\r
+            int h;\r
+            const char *str;\r
+            const char *ViewId;\r
+            const char *ImageSrc;\r
+\r
+            //label\r
+            int label_x;\r
+            int label_y;\r
+            uint8_t ALIGN;\r
+            int  Fontsize;\r
+        \r
+        };\r
+        \r
         bool ChangeSystemView(int16_t thisView);\r
         bool ChangeSystemAboutView(int16_t thisView);\r
         bool ChangeSystemSuperviseView(int16_t thisView);\r
@@ -58,10 +76,12 @@ namespace OHOS
 \r
     private:\r
         void InitIView(void);\r
+        void initView_ext(int x,int y,int w,int h,int interval,const char *imagsrc);\r
         void ClearAll(void);\r
         bool SetTheSystemScrollView(void);\r
         bool SetTheTitle(void);\r
         UIButton *SetTheButton(ButtonConfig &buttonconfig, UIView::OnClickListener *clickListener);\r
+        UILabelButtonExt *SetTheButton_ext(ButtonConfig_ext_t &ButtonConfig_ext, UIView::OnClickListener *clickListener);\r
         SystemAboutTheWatchView *p_SystemAboutTheWatchView{nullptr};\r
         SystemSuperviseView *p_SystemSuperviseView{nullptr};\r
         SystemLanguageView *p_SystemLanguageView{nullptr};\r
index 5d8b163..1b202bf 100644 (file)
 namespace OHOS\r
 {\r
 \r
+    \r
+    struct SystemView_ext_p\r
+    {\r
+            const int16_t viewId;\r
+            char *viewid_str;\r
+            bool enable_falg;\r
+    };\r
+    \r
+\r
+    // 2.ViewMapper[] 是一个静态的视图映射数组,将视图ID与MainStopWatchView类中的特定成员函数指针进行了绑定。\r
+        static SystemView_ext_p ViewMapper_t[] = {\r
+        {ABOUTTHEWATCHVIEW,"AboutTheWatchButton",true},\r
+        {SUPERVISEVIEW,"SuperviseButton",true},\r
+        {SYSTEMLANGUAGEVIEW,"SystemLanguageButton",false},\r
+        {FACTORYRESETVIEW,"FactoryResetButton",true},\r
+        {SYSTEMLUPGRADE,"systemupgread",true}};\r
+        \r
+        // {ABOUTTHEWATCHVIEW, &SystemView::ChangeSystemAboutView},\r
+        // {SUPERVISEVIEW, &SystemView::ChangeSystemSuperviseView},\r
+        // {SYSTEMLANGUAGEVIEW, &SystemView::ChangeSystemLanguageView},\r
+\r
     // 当前Presenter属性实例化的内存指针\r
     static SystemPresenter *g_pSystemPresenter = nullptr;\r
 \r
@@ -84,30 +105,23 @@ namespace OHOS
     bool SystemPresenter::OnClick(UIView &view, const ClickEvent &event)\r
     {\r
         SystemView *p_SystemView = SystemView::GetInstance();\r
+        int len=sizeof(ViewMapper_t)/sizeof(SystemView_ext_p);\r
+        //int len=5;\r
         // 根据控件id查找是哪个控件触发了点击回调\r
-        if (strcmp(view.GetViewId(), ABOUT_THE_WATCH) == 0)\r
-        {\r
-            SystemView::GetInstance()->ChangeView(SYSTEMVIEW, ABOUTTHEWATCHVIEW);\r
-            return true;\r
-        }\r
-        else if (strcmp(view.GetViewId(), SUPERVISE) == 0)\r
-        {\r
-            SystemView::GetInstance()->ChangeView(SYSTEMVIEW, SUPERVISEVIEW);\r
-            return true;\r
-        }\r
-#if 0\r
-        else if (strcmp(view.GetViewId(), SYSTEM_LANGUAGE) == 0)\r
-        {\r
-            SystemView::GetInstance()->ChangeView(SYSTEMVIEW, SYSTEMLANGUAGEVIEW);\r
-            return true;\r
-        }\r
-#endif\r
-        else if (strcmp(view.GetViewId(), FACTORY_RESET) == 0)\r
+\r
+        for(int i=0;i<5;i++)\r
         {\r
-            SystemView::GetInstance()->ChangeView(SYSTEMVIEW, FACTORYRESETVIEW);\r
-            return true;\r
+            if(strcmp(view.GetViewId(),ViewMapper_t[i].viewid_str) == 0)\r
+            {\r
+                if(ViewMapper_t[i].enable_falg==true)\r
+                SystemView::GetInstance()->ChangeView(SYSTEMVIEW, ViewMapper_t[i].viewId);\r
+                return true;\r
+            }\r
+\r
         }\r
-        else if (strcmp(view.GetViewId(), FACTORYRESET_CHECKON) == 0)\r
+\r
+    \r
+         if (strcmp(view.GetViewId(), FACTORYRESET_CHECKON) == 0)\r
         {\r
             return true;\r
         }\r
index a897beb..e140474 100644 (file)
@@ -6,6 +6,29 @@ namespace OHOS
 \r
     static SystemView *g_pSystemView{nullptr};\r
 \r
+    struct SystemViewMapper_ext\r
+    {\r
+            const int16_t viewId;\r
+            char *viewid_str;\r
+            char *Labe_str;\r
+            bool (SystemView::*func)(int16_t thisView);\r
+    };\r
+    static UILabelButtonExt *button[10]={NULL};\r
+\r
+    // 2.ViewMapper[] 是一个静态的视图映射数组,将视图ID与MainStopWatchView类中的特定成员函数指针进行了绑定。\r
+        SystemViewMapper_ext ViewMapper_t[] = {\r
+        {ABOUTTHEWATCHVIEW,"AboutTheWatchButton","关于手表",&SystemView::ChangeSystemAboutView},\r
+        {SUPERVISEVIEW,"SuperviseButton","监管模式",&SystemView::ChangeSystemSuperviseView},\r
+        {SYSTEMLANGUAGEVIEW,"SystemLanguageButton","切换语言", &SystemView::ChangeSystemLanguageView},\r
+        {FACTORYRESETVIEW,"FactoryResetButton","恢复出厂", &SystemView::ChangeSystemFactoryResetView},\r
+        {SYSTEMLUPGRADE,"systemupgread","系统升级",&SystemView::ChangeSystemFactoryResetView},\r
+        \r
+        // {ABOUTTHEWATCHVIEW, &SystemView::ChangeSystemAboutView},\r
+        // {SUPERVISEVIEW, &SystemView::ChangeSystemSuperviseView},\r
+        // {SYSTEMLANGUAGEVIEW, &SystemView::ChangeSystemLanguageView},\r
+        // {FACTORYRESETVIEW, &SystemView::ChangeSystemFactoryResetView},\r
+    };\r
+    \r
     SystemView::SystemView()\r
     {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::SystemView");\r
@@ -35,6 +58,12 @@ namespace OHOS
                 delete draglistener;\r
                 draglistener = nullptr;\r
             }\r
+            for(int i=0;i<MAX_SYSTEMVIEWID-1;i++)\r
+            {\r
+                delete button[i];\r
+                button[i] = nullptr;\r
+\r
+            }\r
             delete p_SystemAboutTheWatchView;\r
             p_SystemAboutTheWatchView = nullptr;\r
             delete p_SystemSuperviseView;\r
@@ -130,6 +159,73 @@ namespace OHOS
         return button;\r
     }\r
 \r
+    UILabelButtonExt *SystemView::SetTheButton_ext(ButtonConfig_ext_t &buttonconfig, UIView::OnClickListener *clickListener)\r
+    {\r
+        UILabelButtonExt *button = new UILabelButtonExt();\r
+        if (button == nullptr)\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " SystemView::SetTheButton: button new  fail!");\r
+            return nullptr;\r
+        }\r
+        button->SetPosition(buttonconfig.x, buttonconfig.y, buttonconfig.w, buttonconfig.h);\r
+        button->SetViewId(buttonconfig.ViewId);\r
+        button->SetStyle(STYLE_BACKGROUND_COLOR, 0xff191919);\r
+        button->SetImageSrc(buttonconfig.ImageSrc, buttonconfig.ImageSrc);\r
+        button->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
+        button->SetOnClickListener(clickListener);\r
+\r
+        button->SetText(buttonconfig.str);\r
+        button->SetAlign(TEXT_ALIGNMENT_LEFT);\r
+        button->SetLabelPosition(buttonconfig.label_x,buttonconfig.label_y );\r
+        button->SetFont(DEFAULT_VECTOR_FONT_FILENAME, buttonconfig.Fontsize);\r
+        //button->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
+\r
+        button->SetImagePosition(326, 37);\r
+        return button;\r
+    }\r
+\r
+    \r
+\r
+    void SystemView::initView_ext(int x,int y,int w,int h,int interval,const char *imagsrc)\r
+    {\r
+        if (!SetTheSystemScrollView())\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::SetTheSystemScrollView() fail!");\r
+            return;\r
+        }\r
+        if (!SetTheTitle())\r
+        {\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView::SetTheTitle() fail!");\r
+            return;\r
+        }\r
+        /* -------------------------------------------------------------------------- */\r
+        UIView::OnClickListener *clickListener = static_cast<UIView::OnClickListener *>(SystemPresenter::GetInstance());\r
+        /* -------------------------------------------------------------------------- */\r
+        ButtonConfig_ext_t buttonconfig;\r
+        buttonconfig.x = x;\r
+        buttonconfig.y = y;\r
+        buttonconfig.w = w;\r
+        buttonconfig.h = h;\r
+\r
+        int len =sizeof(ViewMapper_t)/sizeof(SystemViewMapper_ext);\r
+\r
+        for(int i=0;i<len;i++)\r
+        {\r
+            buttonconfig.str=ViewMapper_t[i].Labe_str;\r
+            buttonconfig.ViewId = ViewMapper_t[i].viewid_str;\r
+            buttonconfig.ImageSrc = imagsrc;\r
+            buttonconfig.label_x=40;\r
+            buttonconfig.label_y=0;\r
+            buttonconfig.Fontsize=30;\r
+            buttonconfig.ALIGN=TEXT_ALIGNMENT_LEFT;\r
+            button[i] = SetTheButton_ext(buttonconfig, clickListener);\r
+            buttonconfig.y+=interval;\r
+\r
+        }\r
+        /* -------------------------------------------------------------------------- */\r
+       \r
+    }\r
+\r
     void SystemView::InitIView(void)\r
     {\r
         if (!SetTheSystemScrollView())\r
@@ -275,6 +371,10 @@ namespace OHOS
         return true;\r
     }\r
 \r
+   \r
+\r
+    \r
+\r
     // 4.跳转到恢复出厂设置界面\r
     bool SystemView::ChangeSystemFactoryResetView(int16_t thisView)\r
     {\r
@@ -322,12 +422,12 @@ namespace OHOS
     // 3.根据传入的interface参数执行相应视图ID关联的成员函数。\r
     bool SystemView::ClickFunc(int16_t interface)\r
     {\r
-        int funcSize = sizeof(ViewMapper) / sizeof(ViewMapper[SYSTEMVIEW]);\r
+        int funcSize = sizeof(ViewMapper_t) / sizeof(ViewMapper_t[SYSTEMVIEW]);\r
         for (int i = 0; i < funcSize; i++)\r
         {\r
-            if (interface == ViewMapper[i].viewId)\r
+            if (interface == ViewMapper_t[i].viewId)\r
             {\r
-                bool jug = (this->*(ViewMapper[i].func))(interface);\r
+                bool jug = (this->*(ViewMapper_t[i].func))(interface);\r
                 if (jug == false)\r
                 {\r
                     return false;\r
@@ -356,7 +456,8 @@ namespace OHOS
     void SystemView::OnStart()\r
     {\r
         View<SystemPresenter>::OnStart();\r
-        InitIView();\r
+        //InitIView();\r
+        initView_ext(43,120,380,100,120,"/user/res/SETTING_NEXT.bin");\r
     }\r
 \r
     void SystemView::OnSetUpView()\r
@@ -367,12 +468,20 @@ namespace OHOS
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SystemView:: OnSetUpView  has nullptr");\r
             return;\r
         }\r
+        \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
-        SystemScrollView[SYSTEMVIEW]->Add(SystemUpgradeButtonExt);\r
+\r
+        int len =sizeof(ViewMapper_t)/sizeof(SystemViewMapper_ext);\r
+\r
+        for(int i=0;i<len;i++)\r
+        {\r
+         SystemScrollView[SYSTEMVIEW]->Add(button[i]);\r
+        }\r
+        // SystemScrollView[SYSTEMVIEW]->Add(SuperviseButton);\r
+        // SystemScrollView[SYSTEMVIEW]->Add(SystemLanguageButton);\r
+        // SystemScrollView[SYSTEMVIEW]->Add(FactoryResetButton);\r
+        // SystemScrollView[SYSTEMVIEW]->Add(SystemUpgradeButtonExt);\r
+\r
         RootView::GetInstance()->Add(SystemScrollView[SYSTEMVIEW]);\r
         Draw();\r
     }\r