diff options
author | Ahmed ElShreif <aelshreif7@gmail.com> | 2020-06-02 05:30:40 +0200 |
---|---|---|
committer | Ahmed ElShreif <aelshreif7@gmail.com> | 2020-07-08 11:12:08 +0200 |
commit | 644a775833857955576b5284bf2f1b992d8f5b21 (patch) | |
tree | a74b67fe2999d9121d844d05224bb8f2418ae2ef | |
parent | d3a98b87824f2e2248a45b97d7eef5e8ad596dd3 (diff) |
uitest: Add support for vertical TabControl Object
We need support for this Object as some dialogs use it like Hyperlink Dialog .
So now we can navigate in the dialog in the same way we navigate with the normal TabControl Objects .
You can use this lines in your test case that test a dialog that has vertical TabControl Object:
>> xtab=HyperlinkDialog.getChild("tabcontrol")
>> xtab.executeAction("SELECT", mkPropertyValues({"POS": "0"}))
Change-Id: Id1792f5cceb8b08e13cb8c0c5fbaf1ff29f996d2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98135
Tested-by: Jenkins
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
-rw-r--r-- | include/vcl/ivctrl.hxx | 2 | ||||
-rw-r--r-- | include/vcl/uitest/uiobject.hxx | 23 | ||||
-rw-r--r-- | vcl/source/control/ivctrl.cxx | 6 | ||||
-rw-r--r-- | vcl/source/uitest/uiobject.cxx | 52 |
4 files changed, 83 insertions, 0 deletions
diff --git a/include/vcl/ivctrl.hxx b/include/vcl/ivctrl.hxx index adadcc9fefc4..399079c69f9d 100644 --- a/include/vcl/ivctrl.hxx +++ b/include/vcl/ivctrl.hxx @@ -323,6 +323,8 @@ public: void SetPageText(const OString& rPageId, const OUString& rText); vcl::Window* GetPageParent() { return m_xBox.get(); } + + virtual FactoryFunction GetUITestFactory() const override; }; #endif // INCLUDED_VCL_IVCTRL_HXX diff --git a/include/vcl/uitest/uiobject.hxx b/include/vcl/uitest/uiobject.hxx index 2c9a3e36cc60..15686e406904 100644 --- a/include/vcl/uitest/uiobject.hxx +++ b/include/vcl/uitest/uiobject.hxx @@ -32,6 +32,7 @@ class SvTreeListBox; class SvTreeListEntry; class SpinButton; class SpinField; +class VerticalTabControl; class VclMultiLineEdit; typedef std::map<const OUString, OUString> StringMap; @@ -410,6 +411,28 @@ private: virtual OUString get_name() const override; }; +class VerticalTabControlUIObject final : public WindowUIObject +{ +private: + VclPtr<VerticalTabControl> mxTabControl; + +public: + + VerticalTabControlUIObject(const VclPtr<VerticalTabControl>& mxTabControl); + virtual ~VerticalTabControlUIObject() override; + + virtual void execute(const OUString& rAction, + const StringMap& rParameters) override; + + virtual StringMap get_state() override; + + static std::unique_ptr<UIObject> create(vcl::Window* pWindow); + +private: + + virtual OUString get_name() const override; +}; + class TreeListUIObject final : public WindowUIObject { public: diff --git a/vcl/source/control/ivctrl.cxx b/vcl/source/control/ivctrl.cxx index 82e2bbc0c08b..c0c78a986b0d 100644 --- a/vcl/source/control/ivctrl.cxx +++ b/vcl/source/control/ivctrl.cxx @@ -27,6 +27,7 @@ #include <vcl/settings.hxx> #include <vcl/tabctrl.hxx> #include <vcl/vclevent.hxx> +#include <vcl/uitest/uiobject.hxx> using namespace ::com::sun::star::accessibility; @@ -628,4 +629,9 @@ void VerticalTabControl::SetPageText(const OString& rPageId, const OUString& rTe pData->pEntry->SetText(rText); } +FactoryFunction VerticalTabControl::GetUITestFactory() const +{ + return VerticalTabControlUIObject::create; +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/source/uitest/uiobject.cxx b/vcl/source/uitest/uiobject.cxx index 29b3c296b8d2..fc32de562701 100644 --- a/vcl/source/uitest/uiobject.cxx +++ b/vcl/source/uitest/uiobject.cxx @@ -21,6 +21,7 @@ #include <vcl/toolkit/spin.hxx> #include <vcl/toolkit/fmtfield.hxx> #include <vcl/spinfld.hxx> +#include <vcl/ivctrl.hxx> #include <vcl/toolkit/button.hxx> #include <vcl/toolkit/dialog.hxx> #include <vcl/toolkit/field.hxx> @@ -1508,4 +1509,55 @@ std::unique_ptr<UIObject> RoadmapWizardUIObject::create(vcl::Window* pWindow) return std::unique_ptr<UIObject>(new RoadmapWizardUIObject(pRoadmapWizard)); } +VerticalTabControlUIObject::VerticalTabControlUIObject(const VclPtr<VerticalTabControl>& xTabControl): + WindowUIObject(xTabControl), + mxTabControl(xTabControl) +{ +} + +VerticalTabControlUIObject::~VerticalTabControlUIObject() +{ +} + +void VerticalTabControlUIObject::execute(const OUString& rAction, + const StringMap& rParameters) +{ + if (rAction == "SELECT") + { + if (rParameters.find("POS") != rParameters.end()) + { + auto itr = rParameters.find("POS"); + sal_uInt32 nPos = itr->second.toUInt32(); + OString xid = mxTabControl->GetPageId(nPos); + mxTabControl->SetCurPageId(xid); + } + } + else + WindowUIObject::execute(rAction, rParameters); +} + +StringMap VerticalTabControlUIObject::get_state() +{ + StringMap aMap = WindowUIObject::get_state(); + aMap["PageCount"] = OUString::number(mxTabControl->GetPageCount()); + + OString nPageId = mxTabControl->GetCurPageId(); + aMap["CurrPageTitel"] = mxTabControl->GetPageText(nPageId); + aMap["CurrPagePos"] = OUString::number(mxTabControl->GetPagePos(nPageId)); + + return aMap; +} + +OUString VerticalTabControlUIObject::get_name() const +{ + return "VerticalTabControlUIObject"; +} + +std::unique_ptr<UIObject> VerticalTabControlUIObject::create(vcl::Window* pWindow) +{ + VerticalTabControl* pTabControl = dynamic_cast<VerticalTabControl*>(pWindow); + assert(pTabControl); + return std::unique_ptr<UIObject>(new VerticalTabControlUIObject(pTabControl)); +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |