diff options
Diffstat (limited to 'vcl/source')
-rw-r--r-- | vcl/source/control/menubtn.cxx | 12 | ||||
-rw-r--r-- | vcl/source/uitest/uiobject.cxx | 60 |
2 files changed, 72 insertions, 0 deletions
diff --git a/vcl/source/control/menubtn.cxx b/vcl/source/control/menubtn.cxx index 7402d361f4b8..4acf4ffddc82 100644 --- a/vcl/source/control/menubtn.cxx +++ b/vcl/source/control/menubtn.cxx @@ -24,6 +24,7 @@ #include <vcl/timer.hxx> #include <vcl/menubtn.hxx> #include <vcl/settings.hxx> +#include <vcl/uitest/uiobject.hxx> void MenuButton::ImplInit( vcl::Window* pParent, WinBits nStyle ) { @@ -229,6 +230,17 @@ void MenuButton::SetPopover(Window* pWindow) mpFloatingWindow = pWindow; } + +FactoryFunction MenuButton::GetUITestFactory() const +{ + return MenuButtonUIObject::create; +} + +void MenuButton::SetCurItemId(){ + mnCurItemId = mpMenu->GetCurItemId(); + msCurItemIdent = mpMenu->GetCurItemIdent(); +} + //class MenuToggleButton ---------------------------------------------------- MenuToggleButton::MenuToggleButton( vcl::Window* pParent, WinBits nWinBits ) diff --git a/vcl/source/uitest/uiobject.cxx b/vcl/source/uitest/uiobject.cxx index 806f6ab23e70..1b501e2676e5 100644 --- a/vcl/source/uitest/uiobject.cxx +++ b/vcl/source/uitest/uiobject.cxx @@ -26,6 +26,7 @@ #include <vcl/toolkit/dialog.hxx> #include <vcl/toolkit/field.hxx> #include <vcl/edit.hxx> +#include <vcl/menubtn.hxx> #include <vcl/vclmedit.hxx> #include <vcl/uitest/logger.hxx> #include <uiobject-internal.hxx> @@ -1612,4 +1613,63 @@ std::unique_ptr<UIObject> ToolBoxUIObject::create(vcl::Window* pWindow) return std::unique_ptr<UIObject>(new ToolBoxUIObject(pToolBox)); } +MenuButtonUIObject::MenuButtonUIObject(const VclPtr<MenuButton>& xMenuButton): + WindowUIObject(xMenuButton), + mxMenuButton(xMenuButton) +{ +} + +MenuButtonUIObject::~MenuButtonUIObject() +{ +} + +StringMap MenuButtonUIObject::get_state() +{ + StringMap aMap = WindowUIObject::get_state(); + aMap["Label"] = mxMenuButton->GetDisplayText(); + return aMap; +} + +void MenuButtonUIObject::execute(const OUString& rAction, + const StringMap& rParameters) +{ + if (rAction == "CLICK") + { + mxMenuButton->Check(!mxMenuButton->IsChecked()); + mxMenuButton->Toggle(); + } + else if (rAction == "OPENLIST") + { + mxMenuButton->ExecuteMenu(); + } + else if (rAction == "OPENFROMLIST") + { + auto itr = rParameters.find("POS"); + sal_uInt32 nPos = itr->second.toUInt32(); + + sal_uInt32 nId = mxMenuButton->GetPopupMenu()->GetItemId(nPos); + mxMenuButton->GetPopupMenu()->SetSelectedEntry(nId); + mxMenuButton->SetCurItemId(); + mxMenuButton->Select(); + } + else if (rAction == "CLOSELIST") + { + mxMenuButton->GetPopupMenu()->EndExecute(); + } + else + WindowUIObject::execute(rAction, rParameters); +} + +OUString MenuButtonUIObject::get_name() const +{ + return "MenuButtonUIObject"; +} + +std::unique_ptr<UIObject> MenuButtonUIObject::create(vcl::Window* pWindow) +{ + MenuButton* pMenuButton = dynamic_cast<MenuButton*>(pWindow); + assert(pMenuButton); + return std::unique_ptr<UIObject>(new MenuButtonUIObject(pMenuButton)); +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |