uitest: Add support for Writer comments
Change-Id: I88ed2894c3665fb421c5d8ea0f278c54ccd0d0e1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96230 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
This commit is contained in:
parent
2ef9f5c15b
commit
7570406803
4 changed files with 110 additions and 0 deletions
|
@ -102,6 +102,7 @@ class SAL_DLLPUBLIC_RTTI SwAnnotationWin : public vcl::Window
|
||||||
SwSidebarItem& GetSidebarItem() { return mrSidebarItem; }
|
SwSidebarItem& GetSidebarItem() { return mrSidebarItem; }
|
||||||
|
|
||||||
OutlinerView* GetOutlinerView() { return mpOutlinerView.get();}
|
OutlinerView* GetOutlinerView() { return mpOutlinerView.get();}
|
||||||
|
Outliner* GetOutliner() { return mpOutliner.get();}
|
||||||
bool HasScrollbar() const;
|
bool HasScrollbar() const;
|
||||||
bool IsScrollbarVisible() const;
|
bool IsScrollbarVisible() const;
|
||||||
ScrollBar* Scrollbar() { return mpVScrollbar; }
|
ScrollBar* Scrollbar() { return mpVScrollbar; }
|
||||||
|
@ -198,6 +199,8 @@ class SAL_DLLPUBLIC_RTTI SwAnnotationWin : public vcl::Window
|
||||||
/// This may be the same annotation as this one.
|
/// This may be the same annotation as this one.
|
||||||
SwAnnotationWin* GetTopReplyNote();
|
SwAnnotationWin* GetTopReplyNote();
|
||||||
|
|
||||||
|
virtual FactoryFunction GetUITestFactory() const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
VclPtr<MenuButton> CreateMenuButton();
|
VclPtr<MenuButton> CreateMenuButton();
|
||||||
virtual void LoseFocus() override;
|
virtual void LoseFocus() override;
|
||||||
|
|
|
@ -24,6 +24,8 @@
|
||||||
|
|
||||||
#include <strings.hrc>
|
#include <strings.hrc>
|
||||||
|
|
||||||
|
#include <uiobject.hxx>
|
||||||
|
|
||||||
#include <vcl/edit.hxx>
|
#include <vcl/edit.hxx>
|
||||||
#include <vcl/menu.hxx>
|
#include <vcl/menu.hxx>
|
||||||
#include <vcl/scrbar.hxx>
|
#include <vcl/scrbar.hxx>
|
||||||
|
@ -100,6 +102,8 @@ SwAnnotationWin::SwAnnotationWin( SwEditWin& rEditWin,
|
||||||
, mpField( static_cast<SwPostItField*>(aField->GetField()))
|
, mpField( static_cast<SwPostItField*>(aField->GetField()))
|
||||||
, mpButtonPopup(nullptr)
|
, mpButtonPopup(nullptr)
|
||||||
{
|
{
|
||||||
|
set_id("Comment"+OUString::number(mpField->GetPostItId()));
|
||||||
|
|
||||||
mpShadow = sidebarwindows::ShadowOverlayObject::CreateShadowOverlayObject( mrView );
|
mpShadow = sidebarwindows::ShadowOverlayObject::CreateShadowOverlayObject( mrView );
|
||||||
if ( mpShadow )
|
if ( mpShadow )
|
||||||
{
|
{
|
||||||
|
@ -502,6 +506,11 @@ tools::Time SwAnnotationWin::GetTime() const
|
||||||
return mpField->GetTime();
|
return mpField->GetTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FactoryFunction SwAnnotationWin::GetUITestFactory() const
|
||||||
|
{
|
||||||
|
return CommentUIObject::create;
|
||||||
|
}
|
||||||
|
|
||||||
} // end of namespace sw::annotation
|
} // end of namespace sw::annotation
|
||||||
|
|
||||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
||||||
|
|
|
@ -16,6 +16,8 @@
|
||||||
#include "edtwin.hxx"
|
#include "edtwin.hxx"
|
||||||
#include "navipi.hxx"
|
#include "navipi.hxx"
|
||||||
|
|
||||||
|
#include <AnnotationWin.hxx>
|
||||||
|
|
||||||
class SwEditWinUIObject : public WindowUIObject
|
class SwEditWinUIObject : public WindowUIObject
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -59,6 +61,27 @@ protected:
|
||||||
OUString get_name() const override;
|
OUString get_name() const override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// This class handles the Comments as a UIObject to be used in UITest Framework
|
||||||
|
class CommentUIObject : public WindowUIObject
|
||||||
|
{
|
||||||
|
VclPtr<sw::annotation::SwAnnotationWin> mxCommentUIObject;
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
CommentUIObject(const VclPtr<sw::annotation::SwAnnotationWin>& xCommentUIObject);
|
||||||
|
|
||||||
|
virtual StringMap get_state() override;
|
||||||
|
|
||||||
|
virtual void execute(const OUString& rAction,
|
||||||
|
const StringMap& rParameters) override;
|
||||||
|
|
||||||
|
static std::unique_ptr<UIObject> create(vcl::Window* pWindow);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
OUString get_name() const override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,11 @@
|
||||||
#include <sfx2/sidebar/Sidebar.hxx>
|
#include <sfx2/sidebar/Sidebar.hxx>
|
||||||
#include <sfx2/viewfrm.hxx>
|
#include <sfx2/viewfrm.hxx>
|
||||||
|
|
||||||
|
#include <AnnotationWin.hxx>
|
||||||
|
#include <comphelper/string.hxx>
|
||||||
|
#include <editeng/editeng.hxx>
|
||||||
|
#include <editeng/editview.hxx>
|
||||||
|
|
||||||
SwEditWinUIObject::SwEditWinUIObject(const VclPtr<SwEditWin>& xEditWin):
|
SwEditWinUIObject::SwEditWinUIObject(const VclPtr<SwEditWin>& xEditWin):
|
||||||
WindowUIObject(xEditWin),
|
WindowUIObject(xEditWin),
|
||||||
mxEditWin(xEditWin)
|
mxEditWin(xEditWin)
|
||||||
|
@ -168,5 +173,75 @@ OUString SwNavigationPIUIObject::get_name() const
|
||||||
return "SwNavigationPIUIObject";
|
return "SwNavigationPIUIObject";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CommentUIObject::CommentUIObject(const VclPtr<sw::annotation::SwAnnotationWin>& xCommentUIObject):
|
||||||
|
WindowUIObject(xCommentUIObject),
|
||||||
|
mxCommentUIObject(xCommentUIObject)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
StringMap CommentUIObject::get_state()
|
||||||
|
{
|
||||||
|
StringMap aMap = WindowUIObject::get_state();
|
||||||
|
aMap["Author"] = mxCommentUIObject->GetAuthor();
|
||||||
|
aMap["ReadOnly"] = OUString::boolean(mxCommentUIObject->IsReadOnly());
|
||||||
|
aMap["Resolved"] = OUString::boolean(mxCommentUIObject->IsResolved());
|
||||||
|
aMap["Visible"] = OUString::boolean(mxCommentUIObject->IsVisible());
|
||||||
|
|
||||||
|
aMap["Text"] = mxCommentUIObject->GetOutliner()->GetEditEngine().GetText();
|
||||||
|
aMap["SelectedText"] = mxCommentUIObject->GetOutlinerView()->GetEditView().GetSelected();
|
||||||
|
return aMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CommentUIObject::execute(const OUString& rAction,
|
||||||
|
const StringMap& rParameters)
|
||||||
|
{
|
||||||
|
if (rAction == "SELECT")
|
||||||
|
{
|
||||||
|
if (rParameters.find("FROM") != rParameters.end() &&
|
||||||
|
rParameters.find("TO") != rParameters.end())
|
||||||
|
{
|
||||||
|
long nMin = rParameters.find("FROM")->second.toInt32();
|
||||||
|
long nMax = rParameters.find("TO")->second.toInt32();
|
||||||
|
ESelection aNewSelection( 0 , nMin, mxCommentUIObject->GetOutliner()->GetParagraphCount()-1, nMax );
|
||||||
|
mxCommentUIObject->GetOutlinerView()->SetSelection( aNewSelection );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (rAction == "LEAVE")
|
||||||
|
{
|
||||||
|
mxCommentUIObject->SwitchToFieldPos();
|
||||||
|
}
|
||||||
|
else if (rAction == "HIDE")
|
||||||
|
{
|
||||||
|
mxCommentUIObject->HideNote();
|
||||||
|
}
|
||||||
|
else if (rAction == "SHOW")
|
||||||
|
{
|
||||||
|
mxCommentUIObject->ShowNote();
|
||||||
|
}
|
||||||
|
else if (rAction == "DELETE")
|
||||||
|
{
|
||||||
|
mxCommentUIObject->Delete();
|
||||||
|
}
|
||||||
|
else if (rAction == "RESOLVE")
|
||||||
|
{
|
||||||
|
mxCommentUIObject->SetResolved(true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
WindowUIObject::execute(rAction, rParameters);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::unique_ptr<UIObject> CommentUIObject::create(vcl::Window* pWindow)
|
||||||
|
{
|
||||||
|
sw::annotation::SwAnnotationWin* pCommentUIObject = dynamic_cast<sw::annotation::SwAnnotationWin*>(pWindow);
|
||||||
|
assert(pCommentUIObject);
|
||||||
|
return std::unique_ptr<UIObject>(new CommentUIObject(pCommentUIObject));
|
||||||
|
}
|
||||||
|
|
||||||
|
OUString CommentUIObject::get_name() const
|
||||||
|
{
|
||||||
|
return "CommentUIObject";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
||||||
|
|
Loading…
Reference in a new issue