diff options
author | Pranam Lashkari <lpranam@collabora.com> | 2020-04-07 18:29:35 +0530 |
---|---|---|
committer | Szymon Kłos <szymon.klos@collabora.com> | 2020-04-21 10:13:37 +0200 |
commit | e389822312144d3c6525820da8a463da1e298a7e (patch) | |
tree | 5d0a4d413c6f052a41c275348c187eb9eb400f12 | |
parent | d9a0e2fe5bf95bf0bfba424a3625d7f952884932 (diff) |
Added parameter to FillPageColor command
Change-Id: I22943815b69eeb7628eb243e0dbc6c8e0ea3487e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91825
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
-rw-r--r-- | include/svx/xflclit.hxx | 1 | ||||
-rw-r--r-- | sd/qa/unit/uiimpress.cxx | 47 | ||||
-rw-r--r-- | sd/source/ui/view/drviews7.cxx | 26 | ||||
-rw-r--r-- | svx/sdi/svx.sdi | 2 | ||||
-rw-r--r-- | svx/source/xoutdev/xattr.cxx | 12 |
5 files changed, 84 insertions, 4 deletions
diff --git a/include/svx/xflclit.hxx b/include/svx/xflclit.hxx index 820e574bbaf4..a1459455d5aa 100644 --- a/include/svx/xflclit.hxx +++ b/include/svx/xflclit.hxx @@ -49,6 +49,7 @@ public: OUString &rText, const IntlWrapper& ) const override; void dumpAsXml(struct _xmlTextWriter* pWriter) const override; + virtual boost::property_tree::ptree dumpAsJSON() const override; }; #endif diff --git a/sd/qa/unit/uiimpress.cxx b/sd/qa/unit/uiimpress.cxx index 2125820c7c50..16cfe7b64cad 100644 --- a/sd/qa/unit/uiimpress.cxx +++ b/sd/qa/unit/uiimpress.cxx @@ -26,6 +26,9 @@ #include <app.hrc> #include <sdpage.hxx> #include <unomodel.hxx> +#include <comphelper/propertysequence.hxx> +#include <com/sun/star/frame/DispatchHelper.hpp> +#include <svx/xflclit.hxx> using namespace ::com::sun::star; @@ -151,6 +154,50 @@ CPPUNIT_TEST_FIXTURE(SdUiImpressTest, testTdf126197) // in SdrObjEditView::SdrEndTextEdit() pViewShell2->GetViewFrame()->GetDispatcher()->Execute(SID_DELETE, SfxCallMode::SYNCHRON); } + +void dispatchCommand(const uno::Reference<lang::XComponent>& xComponent, + const OUString& rCommand, + const uno::Sequence<beans::PropertyValue>& rPropertyValues) +{ + uno::Reference<frame::XController> xController + = uno::Reference<frame::XModel>(xComponent, uno::UNO_QUERY_THROW)->getCurrentController(); + CPPUNIT_ASSERT(xController.is()); + uno::Reference<frame::XDispatchProvider> xFrame(xController->getFrame(), uno::UNO_QUERY); + CPPUNIT_ASSERT(xFrame.is()); + + uno::Reference<uno::XComponentContext> xContext = ::comphelper::getProcessComponentContext(); + uno::Reference<frame::XDispatchHelper> xDispatchHelper(frame::DispatchHelper::create(xContext)); + CPPUNIT_ASSERT(xDispatchHelper.is()); + + xDispatchHelper->executeDispatch(xFrame, rCommand, OUString(), 0, rPropertyValues); +} + +CPPUNIT_TEST_FIXTURE(SdUiImpressTest, testPageFillColor) +{ + // Load the document and create two new windows. + mxComponent = loadFromDesktop(m_directories.getURLFromSrc("sd/qa/unit/data/tdf126197.odp")); + auto pImpressDocument = dynamic_cast<SdXImpressDocument*>(mxComponent.get()); + sd::ViewShell* pViewShell = pImpressDocument->GetDocShell()->GetViewShell(); + + // Set FillPageColor + + uno::Sequence<beans::PropertyValue> aPropertyValues(comphelper::InitPropertySequence( + { + {"Color", uno::makeAny(OUString("ff0000"))}, + })); + + dispatchCommand(mxComponent, ".uno:FillPageColor", aPropertyValues); + + SdPage* pPage = pViewShell->getCurrentPage(); + const SfxItemSet &rPageAttr = pPage->getSdrPageProperties().GetItemSet(); + + const XFillStyleItem* pFillStyle = rPageAttr.GetItem(XATTR_FILLSTYLE); + drawing::FillStyle eXFS = pFillStyle->GetValue(); + CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_SOLID, eXFS); + + Color aColor = rPageAttr.GetItem( XATTR_FILLCOLOR )->GetColorValue(); + CPPUNIT_ASSERT_EQUAL(OUString("ff0000"), aColor.AsRGBHexString()); +} CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/view/drviews7.cxx b/sd/source/ui/view/drviews7.cxx index 7fc676643d6d..488a2ca3882d 100644 --- a/sd/source/ui/view/drviews7.cxx +++ b/sd/source/ui/view/drviews7.cxx @@ -1754,6 +1754,7 @@ void DrawViewShell::SetPageProperties (SfxRequest& rReq) SdrPageProperties& rPageProperties = pPage->getSdrPageProperties(); const SfxItemSet &aPageItemSet = rPageProperties.GetItemSet(); std::unique_ptr<SfxItemSet> pTempSet = aPageItemSet.Clone(false, &mpDrawView->GetModel()->GetItemPool()); + const SfxPoolItem* pItem = nullptr; rPageProperties.ClearItem(XATTR_FILLSTYLE); rPageProperties.ClearItem(XATTR_FILLGRADIENT); @@ -1774,9 +1775,28 @@ void DrawViewShell::SetPageProperties (SfxRequest& rReq) case SID_ATTR_PAGE_COLOR: { - XFillColorItem aColorItem( pArgs->Get( XATTR_FILLCOLOR ) ); - rPageProperties.PutItem( XFillStyleItem( drawing::FillStyle_SOLID ) ); - rPageProperties.PutItem( aColorItem ); + if (SfxItemState::SET == pArgs->GetItemState(SID_ATTR_COLOR_STR, false, &pItem)) + { + Color aColor; + OUString sColor; + + sColor = static_cast<const SfxStringItem*>(pItem)->GetValue(); + + if (sColor == "transparent") + aColor = COL_TRANSPARENT; + else + aColor = Color(sColor.toInt32(16)); + + XFillColorItem aColorItem(OUString(), aColor); + rPageProperties.PutItem( XFillStyleItem( drawing::FillStyle_SOLID ) ); + rPageProperties.PutItem( aColorItem ); + } + else + { + XFillColorItem aColorItem( pArgs->Get( XATTR_FILLCOLOR ) ); + rPageProperties.PutItem( XFillStyleItem( drawing::FillStyle_SOLID ) ); + rPageProperties.PutItem( aColorItem ); + } } break; diff --git a/svx/sdi/svx.sdi b/svx/sdi/svx.sdi index 5261f616308b..23a98354b09f 100644 --- a/svx/sdi/svx.sdi +++ b/svx/sdi/svx.sdi @@ -2614,7 +2614,7 @@ XFillColorItem FillColor SID_ATTR_FILL_COLOR ] XFillColorItem FillPageColor SID_ATTR_PAGE_COLOR - +(SfxStringItem Color SID_ATTR_COLOR_STR) [ /* flags: */ AutoUpdate = TRUE, diff --git a/svx/source/xoutdev/xattr.cxx b/svx/source/xoutdev/xattr.cxx index 1de52ad51ee5..3651205de848 100644 --- a/svx/source/xoutdev/xattr.cxx +++ b/svx/source/xoutdev/xattr.cxx @@ -1926,6 +1926,18 @@ void XFillColorItem::dumpAsXml(xmlTextWriterPtr pWriter) const xmlTextWriterEndElement(pWriter); } +boost::property_tree::ptree XFillColorItem::dumpAsJSON() const +{ + boost::property_tree::ptree aTree = SfxPoolItem::dumpAsJSON(); + + if (Which() == XATTR_FILLCOLOR) + aTree.put("commandName", ".uno:FillPageColor"); + + aTree.put("state", GetColorValue().AsRGBHexString()); + + return aTree; +} + XSecondaryFillColorItem::XSecondaryFillColorItem(const OUString& rName, const Color& rTheColor) : XColorItem(XATTR_SECONDARYFILLCOLOR, rName, rTheColor) { |