editeng/source/items/frmitems.cxx | 51 ++++++ include/editeng/lrspitem.hxx | 2 include/editeng/ulspitem.hxx | 2 include/sfx2/lokhelper.hxx | 2 include/svl/intitem.hxx | 6 include/svl/poolitem.hxx | 2 include/svx/colorbox.hxx | 2 include/svx/svxids.hrc | 1 include/svx/xfillit0.hxx | 1 include/svx/xflftrit.hxx | 3 include/svx/xflgrit.hxx | 2 include/svx/xgrad.hxx | 6 include/vcl/IDialogRenderable.hxx | 2 sc/source/ui/drawfunc/drawsh.cxx | 11 + sc/source/ui/drawfunc/drawsh2.cxx | 56 ------- sd/source/ui/view/drtxtob.cxx | 47 ----- sd/source/ui/view/drviews2.cxx | 11 + sd/source/ui/view/drviewsf.cxx | 56 ------- sfx2/source/control/unoctitm.cxx | 4 sfx2/source/view/lokhelper.cxx | 40 +++++ solenv/sanitizers/ui/svx.suppr | 4 svl/source/items/intitem.cxx | 28 +++ svl/source/items/poolitem.cxx | 6 svx/sdi/svx.sdi | 2 svx/source/sidebar/graphic/GraphicPropertyPanel.cxx | 2 svx/source/svdraw/svdedtv1.cxx | 1 svx/source/tbxctrls/grafctrl.cxx | 2 svx/source/tbxctrls/tbcontrl.cxx | 7 svx/source/xoutdev/xattr.cxx | 160 ++++++++++++++++++++ svx/uiconfig/ui/sidebargraphic.ui | 10 - sw/source/uibase/shells/drawdlg.cxx | 61 +------ sw/source/uibase/shells/grfsh.cxx | 3 sw/source/uibase/shells/txtattr.cxx | 24 --- sw/source/uibase/uiview/viewtab.cxx | 20 -- 34 files changed, 374 insertions(+), 263 deletions(-)
New commits: commit 60ac97df116da5f2d8e405509161ee4ac3167b00 Author: Szymon Kłos <szymon.k...@collabora.com> AuthorDate: Tue Dec 10 15:16:32 2019 +0100 Commit: Szymon Kłos <eszka...@gmail.com> CommitDate: Wed May 13 19:52:47 2020 +0200 jsdialog: send items on status change Use existing mechanism, delete sending in getter code which caused unnecessary work. Change-Id: Ibc191c16b95fd58e7065e019f48f3837cfed5bbd Reviewed-on: https://gerrit.libreoffice.org/84888 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Szymon Kłos <szymon.k...@collabora.com> diff --git a/include/sfx2/lokhelper.hxx b/include/sfx2/lokhelper.hxx index 889788454d41..0a5af99a9e45 100644 --- a/include/sfx2/lokhelper.hxx +++ b/include/sfx2/lokhelper.hxx @@ -43,7 +43,7 @@ public: /// Same as notifyOtherViews(), but works on a selected "other" view, not on all of them. static void notifyOtherView(SfxViewShell* pThisView, SfxViewShell const* pOtherView, int nType, const OString& rKey, const OString& rPayload); /// Emits a LOK_CALLBACK_STATE_CHANGED - static void sendUnoStatus(const SfxViewShell* pThisView, const SfxItemSet* pSet); + static void sendUnoStatus(const SfxViewShell* pShell, const SfxPoolItem* pItem); /// Emits a LOK_CALLBACK_WINDOW static void notifyWindow(const SfxViewShell* pThisView, vcl::LOKWindowId nWindowId, diff --git a/include/sfx2/viewsh.hxx b/include/sfx2/viewsh.hxx index 691ee99839e4..d65fae656b16 100644 --- a/include/sfx2/viewsh.hxx +++ b/include/sfx2/viewsh.hxx @@ -219,7 +219,6 @@ public: virtual const SfxShell* GetFormShell() const { return nullptr; }; // ILibreOfficeKitNotifier - virtual void sendUnoStatus(const SfxItemSet* pSet) const override; virtual void notifyWindow(vcl::LOKWindowId nLOKWindowId, const OUString& rAction, const std::vector<vcl::LOKPayloadItem>& rPayload = std::vector<vcl::LOKPayloadItem>()) const override; // Focus, KeyInput, Cursor diff --git a/include/vcl/IDialogRenderable.hxx b/include/vcl/IDialogRenderable.hxx index 969c15421995..7e2d39c7a486 100644 --- a/include/vcl/IDialogRenderable.hxx +++ b/include/vcl/IDialogRenderable.hxx @@ -32,7 +32,6 @@ public: virtual ~ILibreOfficeKitNotifier(); /// Callbacks - virtual void sendUnoStatus(const SfxItemSet* pSet) const = 0; virtual void notifyWindow(vcl::LOKWindowId nLOKWindowId, const OUString& rAction, const std::vector<LOKPayloadItem>& rPayload = std::vector<LOKPayloadItem>()) const = 0; diff --git a/sc/source/ui/drawfunc/drawsh2.cxx b/sc/source/ui/drawfunc/drawsh2.cxx index 0e3bf2b3529b..772e2936911a 100644 --- a/sc/source/ui/drawfunc/drawsh2.cxx +++ b/sc/source/ui/drawfunc/drawsh2.cxx @@ -369,10 +369,6 @@ void ScDrawShell::GetDrawAttrState( SfxItemSet& rSet ) rSet.Put( SvxSizeItem( SID_ATTR_SIZE, Size( 0, 0 ) ) ); } } - - SfxViewShell* pViewShell = GetDrawView()->GetSfxViewShell(); - if (pViewShell && comphelper::LibreOfficeKit::isActive()) - pViewShell->sendUnoStatus( &rSet ); } } diff --git a/sd/source/ui/view/drviewsf.cxx b/sd/source/ui/view/drviewsf.cxx index c3ee5e83d1c3..95ecd4a0d52a 100644 --- a/sd/source/ui/view/drviewsf.cxx +++ b/sd/source/ui/view/drviewsf.cxx @@ -733,10 +733,6 @@ void DrawViewShell::GetAttrState( SfxItemSet& rSet ) } nWhich = aNewIter.NextWhich(); } - - SfxViewShell* pViewShell = GetDrawView()->GetSfxViewShell(); - if (pViewShell && comphelper::LibreOfficeKit::isActive()) - pViewShell->sendUnoStatus( &rSet ); } SfxItemState eState = pSet->GetItemState( EE_PARA_LRSPACE ); diff --git a/sfx2/source/control/unoctitm.cxx b/sfx2/source/control/unoctitm.cxx index 52339b8c7f5b..6a217b14f880 100644 --- a/sfx2/source/control/unoctitm.cxx +++ b/sfx2/source/control/unoctitm.cxx @@ -69,6 +69,7 @@ #include <rtl/ustring.hxx> #include <unotools/pathoptions.hxx> #include <osl/time.h> +#include <sfx2/lokhelper.hxx> #include <iostream> #include <map> @@ -1220,6 +1221,9 @@ static void InterceptLOKStateChangeEvent(const SfxViewFrame* pViewFrame, const c } else { + // Try to send JSON state version + SfxLokHelper::sendUnoStatus(SfxViewShell::Current(), pState); + return; } diff --git a/sfx2/source/view/lokhelper.cxx b/sfx2/source/view/lokhelper.cxx index acb4fea6f49a..68b4cfcb8159 100644 --- a/sfx2/source/view/lokhelper.cxx +++ b/sfx2/source/view/lokhelper.cxx @@ -204,34 +204,23 @@ namespace { } } -void SfxLokHelper::sendUnoStatus(const SfxViewShell* pShell, const SfxItemSet* pSet) +void SfxLokHelper::sendUnoStatus(const SfxViewShell* pShell, const SfxPoolItem* pItem) { - if (!pShell || !pSet) + if (!pShell || !pItem) return; - boost::property_tree::ptree aTree; - boost::property_tree::ptree anArray; + boost::property_tree::ptree aItem = pItem->dumpAsJSON(); - for(int i = 0; i < pSet->Count(); i++) + if (aItem.count("state")) { - sal_uInt16 nWhich = pSet->GetWhichByPos(i); - if (pSet->HasItem(nWhich) && SfxItemState::SET >= pSet->GetItemState(nWhich)) - { - boost::property_tree::ptree aItem = pSet->Get(nWhich).dumpAsJSON(); - - OUString sCommand = lcl_getNameForSlot(pShell, nWhich); - if (!sCommand.isEmpty()) - aItem.put("commandName", sCommand); + OUString sCommand = lcl_getNameForSlot(pShell, pItem->Which()); + if (!sCommand.isEmpty()) + aItem.put("commandName", sCommand); - if (!aItem.empty()) - anArray.push_back(std::make_pair("", aItem)); - } + std::stringstream aStream; + boost::property_tree::write_json(aStream, aItem); + pShell->libreOfficeKitViewCallback(LOK_CALLBACK_STATE_CHANGED, aStream.str().c_str()); } - aTree.add_child("items", anArray); - - std::stringstream aStream; - boost::property_tree::write_json(aStream, aTree); - pShell->libreOfficeKitViewCallback(LOK_CALLBACK_STATE_CHANGED, aStream.str().c_str()); } void SfxLokHelper::notifyWindow(const SfxViewShell* pThisView, diff --git a/sfx2/source/view/viewsh.cxx b/sfx2/source/view/viewsh.cxx index d865e64f05b7..8a199623fa58 100644 --- a/sfx2/source/view/viewsh.cxx +++ b/sfx2/source/view/viewsh.cxx @@ -2013,11 +2013,6 @@ Reference< view::XRenderable > SfxViewShell::GetRenderable() return xRender; } -void SfxViewShell::sendUnoStatus(const SfxItemSet* pSet) const -{ - SfxLokHelper::sendUnoStatus(this, pSet); -} - void SfxViewShell::notifyWindow(vcl::LOKWindowId nDialogId, const OUString& rAction, const std::vector<vcl::LOKPayloadItem>& rPayload) const { SfxLokHelper::notifyWindow(this, nDialogId, rAction, rPayload); diff --git a/svx/source/svdraw/svdedtv1.cxx b/svx/source/svdraw/svdedtv1.cxx index 5439a2810395..cf29f4a268df 100644 --- a/svx/source/svdraw/svdedtv1.cxx +++ b/svx/source/svdraw/svdedtv1.cxx @@ -907,10 +907,6 @@ SfxItemSet SdrEditView::GetAttrFromMarked(bool bOnlyHardAttr) const aSet.ClearItem(EE_FEATURE_NOTCONV); aSet.ClearItem(EE_FEATURE_FIELD); - SfxViewShell* pViewShell = SfxViewShell::Current(); - if (pViewShell && comphelper::LibreOfficeKit::isActive()) - pViewShell->sendUnoStatus( &aSet ); - return aSet; } diff --git a/svx/source/tbxctrls/grafctrl.cxx b/svx/source/tbxctrls/grafctrl.cxx index af5da09255bf..b321e0799f92 100644 --- a/svx/source/tbxctrls/grafctrl.cxx +++ b/svx/source/tbxctrls/grafctrl.cxx @@ -1017,10 +1017,6 @@ void SvxGrafAttrHelper::GetGrafAttrState( SfxItemSet& rSet, SdrView const & rVie nWhich = aIter.NextWhich(); } - - SfxViewShell* pViewShell = SfxViewShell::Current(); - if (pViewShell && comphelper::LibreOfficeKit::isActive()) - pViewShell->sendUnoStatus( &rSet ); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/uibase/shells/drawdlg.cxx b/sw/source/uibase/shells/drawdlg.cxx index 5f9d04af8079..c0fff23e32f8 100644 --- a/sw/source/uibase/shells/drawdlg.cxx +++ b/sw/source/uibase/shells/drawdlg.cxx @@ -337,10 +337,6 @@ void SwDrawShell::GetDrawAttrState(SfxItemSet& rSet) } else rSet.Put(pSdrView->GetDefaultAttr()); - - SfxViewShell* pViewShell = GetShell().GetSfxViewShell(); - if (pViewShell && comphelper::LibreOfficeKit::isActive()) - pViewShell->sendUnoStatus( &rSet ); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/uibase/shells/grfsh.cxx b/sw/source/uibase/shells/grfsh.cxx index 13cd9a22b4ad..da49cf73992d 100644 --- a/sw/source/uibase/shells/grfsh.cxx +++ b/sw/source/uibase/shells/grfsh.cxx @@ -924,10 +924,6 @@ void SwGrfShell::GetAttrState(SfxItemSet &rSet) nWhich = aIter.NextWhich(); } SetGetStateSet( nullptr ); - - SfxViewShell* pViewShell = GetShell().GetSfxViewShell(); - if (pViewShell && comphelper::LibreOfficeKit::isActive()) - pViewShell->sendUnoStatus( &rSet ); } void SwGrfShell::ExecuteRotation(SfxRequest const &rReq) diff --git a/sw/source/uibase/shells/txtattr.cxx b/sw/source/uibase/shells/txtattr.cxx index 1b11fcca7bad..c7fb5cc28965 100644 --- a/sw/source/uibase/shells/txtattr.cxx +++ b/sw/source/uibase/shells/txtattr.cxx @@ -846,10 +846,6 @@ void SwTextShell::GetAttrState(SfxItemSet &rSet) } rSet.Put(aCoreSet,false); - - SfxViewShell* pViewShell = SfxViewShell::Current(); - if (pViewShell && comphelper::LibreOfficeKit::isActive()) - pViewShell->sendUnoStatus( &rSet ); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/uibase/uiview/viewtab.cxx b/sw/source/uibase/uiview/viewtab.cxx index f5941793eadb..448387e2527e 100644 --- a/sw/source/uibase/uiview/viewtab.cxx +++ b/sw/source/uibase/uiview/viewtab.cxx @@ -2435,10 +2435,6 @@ void SwView::StateTabWin(SfxItemSet& rSet) } nWhich = aIter.NextWhich(); } - - SfxViewShell* pViewShell = SfxViewShell::Current(); - if (pViewShell && comphelper::LibreOfficeKit::isActive()) - pViewShell->sendUnoStatus( &rSet ); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit 4c6ca777b1ea0ef2b36fc0c08b44220397f9361d Author: Szymon Kłos <szymon.k...@collabora.com> AuthorDate: Mon Dec 9 14:47:09 2019 +0100 Commit: Szymon Kłos <eszka...@gmail.com> CommitDate: Wed May 13 19:52:47 2020 +0200 jsdialog: apply FillGradient with JSON arg Change-Id: I0ca53a53ff53e66d2f25ad4eb13305edbc3aaa12 Reviewed-on: https://gerrit.libreoffice.org/84749 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Szymon Kłos <szymon.k...@collabora.com> diff --git a/include/svx/svxids.hrc b/include/svx/svxids.hrc index 2842dcf5a77f..f7e0e2253566 100644 --- a/include/svx/svxids.hrc +++ b/include/svx/svxids.hrc @@ -327,6 +327,7 @@ class SvxSetItem; #define SID_FRAME_LINESTYLE TypedWhichId<SvxLineItem>( SID_SVX_START + 201 ) #define SID_FRAME_LINECOLOR TypedWhichId<SvxColorItem>( SID_SVX_START + 202 ) #define SID_ATTR_LINE_WIDTH_ARG ( SID_SVX_START + 203 ) +#define SID_FILL_GRADIENT_JSON ( SID_SVX_START + 204 ) #define SID_SEARCHDLG_SEARCHSTRINGS ( SID_SVX_START + 215 ) #define SID_SEARCHDLG_REPLACESTRINGS ( SID_SVX_START + 216 ) #define SID_ATTR_TABLE ( SID_SVX_START + 217 ) diff --git a/include/svx/xgrad.hxx b/include/svx/xgrad.hxx index 268b0e06253b..5e1f33ace5a0 100644 --- a/include/svx/xgrad.hxx +++ b/include/svx/xgrad.hxx @@ -75,6 +75,7 @@ public: sal_uInt16 GetSteps() const { return nStepCount; } boost::property_tree::ptree dumpAsJSON() const; + static XGradient fromJSON(const OUString& rJSON); }; #endif diff --git a/sc/source/ui/drawfunc/drawsh.cxx b/sc/source/ui/drawfunc/drawsh.cxx index 718e6cce54d5..069642c55268 100644 --- a/sc/source/ui/drawfunc/drawsh.cxx +++ b/sc/source/ui/drawfunc/drawsh.cxx @@ -57,6 +57,7 @@ #include <svx/chrtitem.hxx> #include <svx/xlnclit.hxx> #include <svx/xflclit.hxx> +#include <svx/xflgrit.hxx> SFX_IMPL_INTERFACE(ScDrawShell, SfxShell) @@ -104,6 +105,16 @@ namespace } } } + if (SfxItemState::SET == pArgs->GetItemState(SID_FILL_GRADIENT_JSON, false, &pItem)) + { + const SfxStringItem* pJSON = static_cast<const SfxStringItem*>(pItem); + if (pJSON) + { + XGradient aGradient = XGradient::fromJSON(pJSON->GetValue()); + XFillGradientItem aItem(aGradient); + pArgs->Put(aItem); + } + } } } diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx index f7f5b1e9ab86..cac505e7e1f0 100644 --- a/sd/source/ui/view/drviews2.cxx +++ b/sd/source/ui/view/drviews2.cxx @@ -89,6 +89,7 @@ #include <svx/xlnwtit.hxx> #include <svx/chrtitem.hxx> #include <svx/xlnclit.hxx> +#include <svx/xflgrit.hxx> #include <tools/diagnose_ex.h> @@ -583,6 +584,16 @@ namespace } } } + if (SfxItemState::SET == pArgs->GetItemState(SID_FILL_GRADIENT_JSON, false, &pItem)) + { + const SfxStringItem* pJSON = static_cast<const SfxStringItem*>(pItem); + if (pJSON) + { + XGradient aGradient = XGradient::fromJSON(pJSON->GetValue()); + XFillGradientItem aItem(aGradient); + pArgs->Put(aItem); + } + } } } diff --git a/svx/sdi/svx.sdi b/svx/sdi/svx.sdi index ed413935bb25..0bd2964a6ad8 100644 --- a/svx/sdi/svx.sdi +++ b/svx/sdi/svx.sdi @@ -2649,7 +2649,7 @@ XFillColorItem FillPageColor SID_ATTR_PAGE_COLOR ] XFillGradientItem FillGradient SID_ATTR_FILL_GRADIENT - +(SfxStringItem FillGradientJSON SID_FILL_GRADIENT_JSON) [ AutoUpdate = TRUE, FastCall = FALSE, diff --git a/svx/source/xoutdev/xattr.cxx b/svx/source/xoutdev/xattr.cxx index a43a8be1cad7..f1ef70efcc09 100644 --- a/svx/source/xoutdev/xattr.cxx +++ b/svx/source/xoutdev/xattr.cxx @@ -95,6 +95,8 @@ using namespace ::com::sun::star; +typedef std::map<OUString, OUString> StringMap; + static long ScaleMetricValue( long nVal, long nMul, long nDiv ) { BigInt aVal( nVal ); @@ -1974,6 +1976,62 @@ std::string XGradient::GradientStyleToString(css::awt::GradientStyle eStyle) return ""; } +namespace +{ + css::awt::GradientStyle lcl_getStyleFromString(const OUString& rStyle) + { + if (rStyle == "LINEAR") + return css::awt::GradientStyle_LINEAR; + else if (rStyle == "AXIAL") + return css::awt::GradientStyle_AXIAL; + else if (rStyle == "RADIAL") + return css::awt::GradientStyle_RADIAL; + else if (rStyle == "ELLIPTICAL") + return css::awt::GradientStyle_ELLIPTICAL; + else if (rStyle == "SQUARE") + return css::awt::GradientStyle_SQUARE; + else if (rStyle == "RECT") + return css::awt::GradientStyle_RECT; + + return css::awt::GradientStyle_LINEAR; + } + + StringMap lcl_jsonToStringMap(const OUString& rJSON) + { + StringMap aArgs; + if (rJSON.getLength() && rJSON[0] != '\0') + { + std::stringstream aStream(OUStringToOString(rJSON, RTL_TEXTENCODING_ASCII_US).getStr()); + boost::property_tree::ptree aTree; + boost::property_tree::read_json(aStream, aTree); + + for (const auto& rPair : aTree) + { + aArgs[OUString::fromUtf8(rPair.first.c_str())] = OUString::fromUtf8(rPair.second.get_value<std::string>(".").c_str()); + } + } + return aArgs; + } + + XGradient lcl_buildGradientFromStringMap(StringMap& rMap) + { + XGradient aGradient; + + aGradient.SetStartColor(rMap["startcolor"].toInt32(16)); + aGradient.SetEndColor(rMap["endcolor"].toInt32(16)); + aGradient.SetGradientStyle(lcl_getStyleFromString(rMap["style"])); + aGradient.SetAngle(rMap["angle"].toInt32()); + + return aGradient; + } +} + +XGradient XGradient::fromJSON(const OUString& rJSON) +{ + StringMap aMap(lcl_jsonToStringMap(rJSON)); + return lcl_buildGradientFromStringMap(aMap); +} + XGradient::XGradient() : eStyle( css::awt::GradientStyle_LINEAR ), aStartColor( COL_BLACK ), diff --git a/sw/source/uibase/shells/drawdlg.cxx b/sw/source/uibase/shells/drawdlg.cxx index 8ef098bc9287..5f9d04af8079 100644 --- a/sw/source/uibase/shells/drawdlg.cxx +++ b/sw/source/uibase/shells/drawdlg.cxx @@ -41,6 +41,7 @@ #include <svx/xlnwtit.hxx> #include <svx/xflclit.hxx> #include <svx/xfillit0.hxx> +#include <svx/xflgrit.hxx> #include <comphelper/lok.hxx> #include <LibreOfficeKit/LibreOfficeKitEnums.h> @@ -257,6 +258,16 @@ namespace XLineWidthItem aItem(nValue); pArgs->Put(aItem); } + if (SfxItemState::SET == pArgs->GetItemState(SID_FILL_GRADIENT_JSON, false, &pItem)) + { + const SfxStringItem* pJSON = static_cast<const SfxStringItem*>(pItem); + if (pJSON) + { + XGradient aGradient = XGradient::fromJSON(pJSON->GetValue()); + XFillGradientItem aItem(aGradient); + pArgs->Put(aItem); + } + } } } commit 7f998e0ae09c712e7fd0d66a70a0f19855c27624 Author: Szymon Kłos <szymon.k...@collabora.com> AuthorDate: Fri Nov 29 12:32:24 2019 +0100 Commit: Szymon Kłos <eszka...@gmail.com> CommitDate: Wed May 13 19:52:47 2020 +0200 jsdialogs: send fill transparency type updates Change-Id: I3381968a7afe1f4db09401a0e6ead93b0b22f258 Reviewed-on: https://gerrit.libreoffice.org/84072 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Szymon Kłos <szymon.k...@collabora.com> diff --git a/include/svx/xflftrit.hxx b/include/svx/xflftrit.hxx index df78d6645bd7..a6daf1006535 100644 --- a/include/svx/xflftrit.hxx +++ b/include/svx/xflftrit.hxx @@ -22,6 +22,7 @@ #include <svx/xflgrit.hxx> #include <svx/svxdllapi.h> +#include <boost/property_tree/json_parser.hpp> // class XFillFloatTransparenceItem - @@ -54,6 +55,8 @@ public: static bool CompareValueFunc( const NameOrIndex* p1, const NameOrIndex* p2 ); std::unique_ptr<XFillFloatTransparenceItem> checkForUniqueItem( SdrModel* pModel ) const; + + virtual boost::property_tree::ptree dumpAsJSON() const override; }; #endif diff --git a/svx/source/svdraw/svdedtv1.cxx b/svx/source/svdraw/svdedtv1.cxx index 5ce79bfd1721..5439a2810395 100644 --- a/svx/source/svdraw/svdedtv1.cxx +++ b/svx/source/svdraw/svdedtv1.cxx @@ -906,6 +906,11 @@ SfxItemSet SdrEditView::GetAttrFromMarked(bool bOnlyHardAttr) const aSet.ClearItem(EE_FEATURE_LINEBR); aSet.ClearItem(EE_FEATURE_NOTCONV); aSet.ClearItem(EE_FEATURE_FIELD); + + SfxViewShell* pViewShell = SfxViewShell::Current(); + if (pViewShell && comphelper::LibreOfficeKit::isActive()) + pViewShell->sendUnoStatus( &aSet ); + return aSet; } diff --git a/svx/source/xoutdev/xattr.cxx b/svx/source/xoutdev/xattr.cxx index 3fb245c01659..a43a8be1cad7 100644 --- a/svx/source/xoutdev/xattr.cxx +++ b/svx/source/xoutdev/xattr.cxx @@ -1950,25 +1950,25 @@ std::string XGradient::GradientStyleToString(css::awt::GradientStyle eStyle) switch (eStyle) { case css::awt::GradientStyle::GradientStyle_LINEAR: - return "Linear"; + return "LINEAR"; case css::awt::GradientStyle::GradientStyle_AXIAL: - return "Axial"; + return "AXIAL"; case css::awt::GradientStyle::GradientStyle_RADIAL: - return "Radial"; + return "RADIAL"; case css::awt::GradientStyle::GradientStyle_ELLIPTICAL: - return "Elliptical"; + return "ELLIPTICAL"; case css::awt::GradientStyle::GradientStyle_SQUARE: - return "Square"; + return "SQUARE"; case css::awt::GradientStyle::GradientStyle_RECT: - return "Rect"; + return "RECT"; case css::awt::GradientStyle::GradientStyle_MAKE_FIXED_SIZE: - return "FixedSize"; + return "MAKE_FIXED_SIZE"; } return ""; @@ -2448,6 +2448,14 @@ std::unique_ptr<XFillFloatTransparenceItem> XFillFloatTransparenceItem::checkFor return nullptr; } +boost::property_tree::ptree XFillFloatTransparenceItem::dumpAsJSON() const +{ + boost::property_tree::ptree aTree = XFillGradientItem::dumpAsJSON(); + aTree.put("commandName", ".uno:FillFloatTransparence"); + + return aTree; +} + XHatch::XHatch(const Color& rCol, css::drawing::HatchStyle eTheStyle, long nTheDistance, long nTheAngle) : eStyle(eTheStyle), commit 4ae1bdbff19b127d2e9d2a7533478c424d1520f5 Author: Szymon Kłos <szymon.k...@collabora.com> AuthorDate: Thu Nov 28 14:41:53 2019 +0100 Commit: Szymon Kłos <eszka...@gmail.com> CommitDate: Wed May 13 19:52:46 2020 +0200 jsdialog: migrate left/right margin to generic items dump Change-Id: Ie687393ae4b9a7f8350eea07c1d417c11fc532bd Reviewed-on: https://gerrit.libreoffice.org/84000 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Szymon Kłos <szymon.k...@collabora.com> diff --git a/editeng/source/items/frmitems.cxx b/editeng/source/items/frmitems.cxx index ef9b39999fc6..37f1c1a04ff7 100644 --- a/editeng/source/items/frmitems.cxx +++ b/editeng/source/items/frmitems.cxx @@ -625,6 +625,34 @@ void SvxLRSpaceItem::dumpAsXml(xmlTextWriterPtr pWriter) const } +boost::property_tree::ptree SvxLRSpaceItem::dumpAsJSON() const +{ + boost::property_tree::ptree aTree = SfxPoolItem::dumpAsJSON(); + + boost::property_tree::ptree aState; + + MapUnit eTargetUnit = MapUnit::MapInch; + + OUString sLeft = GetMetricText(GetLeft(), + MapUnit::MapTwip, eTargetUnit, nullptr); + + OUString sRight = GetMetricText(GetRight(), + MapUnit::MapTwip, eTargetUnit, nullptr); + + OUString sFirstline = GetMetricText(GetTextFirstLineOfst(), + MapUnit::MapTwip, eTargetUnit, nullptr); + + aState.put("left", sLeft); + aState.put("right", sRight); + aState.put("firstline", sFirstline); + aState.put("unit", "inch"); + + aTree.push_back(std::make_pair("state", aState)); + + return aTree; +} + + SvxULSpaceItem::SvxULSpaceItem( const sal_uInt16 nId ) : SfxPoolItem(nId) , nUpper(0) diff --git a/include/editeng/lrspitem.hxx b/include/editeng/lrspitem.hxx index 32ad5907e2b8..3c5a06f1fe83 100644 --- a/include/editeng/lrspitem.hxx +++ b/include/editeng/lrspitem.hxx @@ -116,7 +116,9 @@ public: { return nPropFirstLineOfst; } void SetTextFirstLineOfstValue( const short nValue ) { nFirstLineOfst = nValue; } + void dumpAsXml(xmlTextWriterPtr pWriter) const override; + virtual boost::property_tree::ptree dumpAsJSON() const override; }; inline void SvxLRSpaceItem::SetLeft( const long nL, const sal_uInt16 nProp ) diff --git a/sd/source/ui/view/drtxtob.cxx b/sd/source/ui/view/drtxtob.cxx index 94679765eb73..d010706ab7da 100644 --- a/sd/source/ui/view/drtxtob.cxx +++ b/sd/source/ui/view/drtxtob.cxx @@ -45,8 +45,6 @@ #include <editeng/frmdiritem.hxx> #include <editeng/fhgtitem.hxx> #include <comphelper/lok.hxx> -#include <LibreOfficeKit/LibreOfficeKitEnums.h> -#include <editeng/itemtype.hxx> #include <sfx2/objface.hxx> @@ -594,28 +592,6 @@ void TextObjectBar::GetAttrState( SfxItemSet& rSet ) rSet.Put(aLRSpace); Invalidate(SID_ATTR_PARA_LRSPACE); - if (comphelper::LibreOfficeKit::isActive()) - { - // TODO: set correct unit - MapUnit eTargetUnit = MapUnit::MapInch; - - OUString sLeft = GetMetricText(aLRSpace.GetLeft(), - MapUnit::MapTwip, eTargetUnit, nullptr); - - OUString sRight = GetMetricText(aLRSpace.GetRight(), - MapUnit::MapTwip, eTargetUnit, nullptr); - - OUString sFirstline = GetMetricText(aLRSpace.GetTextFirstLineOfst(), - MapUnit::MapTwip, eTargetUnit, nullptr); - - OUString sPayload = ".uno:LeftRightParaMargin={\"left\": \"" + sLeft + - "\", \"right\": \"" + sRight + - "\", \"firstline\": \"" + sFirstline + "\"}"; - - GetViewShell()->libreOfficeKitViewCallback(LOK_CALLBACK_STATE_CHANGED, - OUStringToOString(sPayload, RTL_TEXTENCODING_ASCII_US).getStr()); - } - //Added by xuxu SfxItemState eState = aAttrSet.GetItemState( EE_PARA_LRSPACE ); if ( eState == SfxItemState::DONTCARE ) diff --git a/sw/source/uibase/shells/txtattr.cxx b/sw/source/uibase/shells/txtattr.cxx index 737a1e094e41..1b11fcca7bad 100644 --- a/sw/source/uibase/shells/txtattr.cxx +++ b/sw/source/uibase/shells/txtattr.cxx @@ -40,8 +40,6 @@ #include <editeng/cmapitem.hxx> #include <paratr.hxx> #include <comphelper/lok.hxx> -#include <LibreOfficeKit/LibreOfficeKitEnums.h> -#include <editeng/itemtype.hxx> #include <fmtinfmt.hxx> #include <docsh.hxx> @@ -755,28 +753,6 @@ void SwTextShell::GetAttrState(SfxItemSet &rSet) SvxLRSpaceItem aLR = aCoreSet.Get( RES_LR_SPACE ); aLR.SetWhich(nSlot); rSet.Put(aLR); - - if (comphelper::LibreOfficeKit::isActive()) - { - // TODO: set correct unit - MapUnit eTargetUnit = MapUnit::MapInch; - - OUString sLeft = GetMetricText(aLR.GetLeft(), - MapUnit::MapTwip, eTargetUnit, nullptr); - - OUString sRight = GetMetricText(aLR.GetRight(), - MapUnit::MapTwip, eTargetUnit, nullptr); - - OUString sFirstline = GetMetricText(aLR.GetTextFirstLineOfst(), - MapUnit::MapTwip, eTargetUnit, nullptr); - - OUString sPayload = ".uno:LeftRightParaMargin={\"left\": \"" + sLeft + - "\", \"right\": \"" + sRight + - "\", \"firstline\": \"" + sFirstline + "\"}"; - - GetViewShell()->libreOfficeKitViewCallback(LOK_CALLBACK_STATE_CHANGED, - OUStringToOString(sPayload, RTL_TEXTENCODING_ASCII_US).getStr()); - } } else rSet.InvalidateItem(nSlot); @@ -870,6 +846,10 @@ void SwTextShell::GetAttrState(SfxItemSet &rSet) } rSet.Put(aCoreSet,false); + + SfxViewShell* pViewShell = SfxViewShell::Current(); + if (pViewShell && comphelper::LibreOfficeKit::isActive()) + pViewShell->sendUnoStatus( &rSet ); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit 0cb031d2253647aab3bfbc889a1949be0e47f164 Author: Szymon Kłos <szymon.k...@collabora.com> AuthorDate: Thu Nov 28 14:22:26 2019 +0100 Commit: Szymon Kłos <eszka...@gmail.com> CommitDate: Wed May 13 19:52:46 2020 +0200 jsdialog: migrate after/before spacing to generic items dump Change-Id: I18f0596baa8e1136f4546a943eafab9a13929c06 Reviewed-on: https://gerrit.libreoffice.org/83998 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Szymon Kłos <szymon.k...@collabora.com> diff --git a/editeng/source/items/frmitems.cxx b/editeng/source/items/frmitems.cxx index 7ee4258df96f..ef9b39999fc6 100644 --- a/editeng/source/items/frmitems.cxx +++ b/editeng/source/items/frmitems.cxx @@ -843,6 +843,29 @@ void SvxULSpaceItem::dumpAsXml(xmlTextWriterPtr pWriter) const xmlTextWriterEndElement(pWriter); } +boost::property_tree::ptree SvxULSpaceItem::dumpAsJSON() const +{ + boost::property_tree::ptree aTree = SfxPoolItem::dumpAsJSON(); + + boost::property_tree::ptree aState; + + MapUnit eTargetUnit = MapUnit::MapInch; + + OUString sUpper = GetMetricText(GetUpper(), + MapUnit::MapTwip, eTargetUnit, nullptr); + + OUString sLower = GetMetricText(GetLower(), + MapUnit::MapTwip, eTargetUnit, nullptr); + + aState.put("upper", sUpper); + aState.put("lower", sLower); + aState.put("unit", "inch"); + + aTree.push_back(std::make_pair("state", aState)); + + return aTree; +} + SfxPoolItem* SvxPrintItem::Clone( SfxItemPool* ) const { diff --git a/include/editeng/ulspitem.hxx b/include/editeng/ulspitem.hxx index da4eacf7bc06..c9196bafcece 100644 --- a/include/editeng/ulspitem.hxx +++ b/include/editeng/ulspitem.hxx @@ -74,7 +74,9 @@ public: bool GetContext() const { return bContext; } sal_uInt16 GetPropUpper() const { return nPropUpper; } sal_uInt16 GetPropLower() const { return nPropLower; } + void dumpAsXml(xmlTextWriterPtr pWriter) const override; + virtual boost::property_tree::ptree dumpAsJSON() const override; }; inline void SvxULSpaceItem::SetUpper( const sal_uInt16 nU, const sal_uInt16 nProp ) diff --git a/sd/source/ui/view/drtxtob.cxx b/sd/source/ui/view/drtxtob.cxx index 2c7df774cbf6..94679765eb73 100644 --- a/sd/source/ui/view/drtxtob.cxx +++ b/sd/source/ui/view/drtxtob.cxx @@ -482,38 +482,15 @@ void TextObjectBar::GetAttrState( SfxItemSet& rSet ) nEndPara = pOLV->GetOutliner()->GetParagraphCount() - 1; } long nUpper = 0; - OUString sUpper, sLower; - // TODO: set correct unit - MapUnit eTargetUnit = MapUnit::MapInch; for( sal_Int32 nPara = nStartPara; nPara <= nEndPara; nPara++ ) { const SfxItemSet& rItems = pOLV->GetOutliner()->GetParaAttribs( nPara ); const SvxULSpaceItem& rItem = rItems.Get( EE_PARA_ULSPACE ); nUpper = std::max( nUpper, static_cast<long>(rItem.GetUpper()) ); - - if (nPara == nStartPara) - { - sUpper = GetMetricText(rItem.GetUpper(), - MapUnit::MapTwip, eTargetUnit, nullptr); - } - if (nPara == nEndPara) - { - sLower = GetMetricText(rItem.GetLower(), - MapUnit::MapTwip, eTargetUnit, nullptr); - } } if( nUpper == 0 ) rSet.DisableItem( SID_PARASPACE_DECREASE ); - - if (comphelper::LibreOfficeKit::isActive()) - { - OUString sPayload = ".uno:ULSpacing={\"upper\": \"" + sUpper + - "\", \"lower\": \"" + sLower + "\"}"; - - GetViewShell()->libreOfficeKitViewCallback(LOK_CALLBACK_STATE_CHANGED, - OUStringToOString(sPayload, RTL_TEXTENCODING_ASCII_US).getStr()); - } } else { diff --git a/sw/source/uibase/uiview/viewtab.cxx b/sw/source/uibase/uiview/viewtab.cxx index f52cf5617664..f5941793eadb 100644 --- a/sw/source/uibase/uiview/viewtab.cxx +++ b/sw/source/uibase/uiview/viewtab.cxx @@ -62,8 +62,6 @@ #include <ndtxt.hxx> #include <pam.hxx> #include <comphelper/lok.hxx> -#include <LibreOfficeKit/LibreOfficeKitEnums.h> -#include <editeng/itemtype.hxx> #include <IDocumentSettingAccess.hxx> @@ -1584,24 +1582,6 @@ void SwView::StateTabWin(SfxItemSet& rSet) aUL.SetWhich( nWhich ); rSet.Put( aUL ); } - - if (comphelper::LibreOfficeKit::isActive()) - { - // TODO: set correct unit - MapUnit eTargetUnit = MapUnit::MapInch; - - OUString sUpper = GetMetricText(aUL.GetUpper(), - MapUnit::MapTwip, eTargetUnit, nullptr); - - OUString sLower = GetMetricText(aUL.GetLower(), - MapUnit::MapTwip, eTargetUnit, nullptr); - - OUString sPayload = ".uno:ULSpacing={\"upper\": \"" + sUpper + - "\", \"lower\": \"" + sLower + "\"}"; - - GetViewShell()->libreOfficeKitViewCallback(LOK_CALLBACK_STATE_CHANGED, - OUStringToOString(sPayload, RTL_TEXTENCODING_ASCII_US).getStr()); - } } else { @@ -2455,6 +2435,10 @@ void SwView::StateTabWin(SfxItemSet& rSet) } nWhich = aIter.NextWhich(); } + + SfxViewShell* pViewShell = SfxViewShell::Current(); + if (pViewShell && comphelper::LibreOfficeKit::isActive()) + pViewShell->sendUnoStatus( &rSet ); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit 0e5edc6ace090ff37cf85c15cd31d5aa00cc8f59 Author: Szymon Kłos <szymon.k...@collabora.com> AuthorDate: Thu Nov 28 10:48:55 2019 +0100 Commit: Szymon Kłos <eszka...@gmail.com> CommitDate: Wed May 13 19:52:46 2020 +0200 jsdialog: rename duplicated ui object settransparency We had two elements with the same name (one in the area, one in a graphic context) - that caused bottom panel in online not work correctly. Change-Id: I41b9604522157e2c31e68e40c49e42ff2ccdb280 Reviewed-on: https://gerrit.libreoffice.org/83974 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Szymon Kłos <szymon.k...@collabora.com> diff --git a/solenv/sanitizers/ui/svx.suppr b/solenv/sanitizers/ui/svx.suppr index 623ec15448ac..5b323a5f23e8 100644 --- a/solenv/sanitizers/ui/svx.suppr +++ b/solenv/sanitizers/ui/svx.suppr @@ -79,8 +79,8 @@ svx/uiconfig/ui/sidebargraphic.ui://GtkSpinButton[@id='setcontrast:%'] missing-l svx/uiconfig/ui/sidebargraphic.ui://GtkSpinButton[@id='setcontrast:%'] labelled-by-and-mnemonic svx/uiconfig/ui/sidebargraphic.ui://GtkComboBoxText[@id='setcolormode'] missing-label-for svx/uiconfig/ui/sidebargraphic.ui://GtkComboBoxText[@id='setcolormode'] labelled-by-and-mnemonic -svx/uiconfig/ui/sidebargraphic.ui://GtkSpinButton[@id='settransparency:%'] missing-label-for -svx/uiconfig/ui/sidebargraphic.ui://GtkSpinButton[@id='settransparency:%'] labelled-by-and-mnemonic +svx/uiconfig/ui/sidebargraphic.ui://GtkSpinButton[@id='setgraphtransparency:%'] missing-label-for +svx/uiconfig/ui/sidebargraphic.ui://GtkSpinButton[@id='setgraphtransparency:%'] labelled-by-and-mnemonic svx/uiconfig/ui/sidebarline.ui://GtkLabel[@id='widthlabel'] orphan-label svx/uiconfig/ui/sidebarline.ui://GtkLabel[@id='colorlabel'] orphan-label svx/uiconfig/ui/sidebarline.ui://GtkLabel[@id='translabel'] orphan-label diff --git a/svx/source/sidebar/graphic/GraphicPropertyPanel.cxx b/svx/source/sidebar/graphic/GraphicPropertyPanel.cxx index 7e8bc1070ef1..00b5758e65fc 100644 --- a/svx/source/sidebar/graphic/GraphicPropertyPanel.cxx +++ b/svx/source/sidebar/graphic/GraphicPropertyPanel.cxx @@ -56,7 +56,7 @@ GraphicPropertyPanel::GraphicPropertyPanel( get(mpMtrContrast, "setcontrast"); get(mpLBColorMode, "setcolormode"); mpLBColorMode->set_width_request(mpLBColorMode->get_preferred_size().Width()); - get(mpMtrTrans, "settransparency"); + get(mpMtrTrans, "setgraphtransparency"); get(mpMtrRed, "setred"); get(mpMtrGreen, "setgreen"); get(mpMtrBlue, "setblue"); diff --git a/svx/uiconfig/ui/sidebargraphic.ui b/svx/uiconfig/ui/sidebargraphic.ui index c409b8021cb8..6adf1aad5d74 100644 --- a/svx/uiconfig/ui/sidebargraphic.ui +++ b/svx/uiconfig/ui/sidebargraphic.ui @@ -147,7 +147,7 @@ <property name="can_focus">False</property> <property name="label" translatable="yes" context="sidebargraphic|transparencylabel">_Transparency:</property> <property name="use_underline">True</property> - <property name="mnemonic_widget">settransparency:%</property> + <property name="mnemonic_widget">setgraphtransparency:%</property> <property name="xalign">0</property> </object> <packing> @@ -156,18 +156,18 @@ </packing> </child> <child> - <object class="GtkSpinButton" id="settransparency:%"> + <object class="GtkSpinButton" id="setgraphtransparency:%"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="has_tooltip">True</property> - <property name="tooltip_text" translatable="yes" context="sidebargraphic|settransparency|tooltip_text">Specify the percentage of transparency; 0% is fully opaque and 100% is fully transparent.</property> + <property name="tooltip_text" translatable="yes" context="sidebargraphic|setgraphtransparency|tooltip_text">Specify the percentage of transparency; 0% is fully opaque and 100% is fully transparent.</property> <property name="adjustment">0to100adjustment</property> <accessibility> <relation type="labelled-by" target="transparencylabel"/> </accessibility> <child internal-child="accessible"> - <object class="AtkObject" id="settransparency:%-atkobject"> - <property name="AtkObject::accessible-name" translatable="yes" context="sidebargraphic|settransparency-atkobject">Transparency</property> + <object class="AtkObject" id="setgraphtransparency:%-atkobject"> + <property name="AtkObject::accessible-name" translatable="yes" context="sidebargraphic|setgraphtransparency-atkobject">Transparency</property> </object> </child> </object> commit 6de7e0e4d834305706a042ca3c0a21588bb189ca Author: Szymon Kłos <szymon.k...@collabora.com> AuthorDate: Thu Nov 28 10:50:32 2019 +0100 Commit: Szymon Kłos <eszka...@gmail.com> CommitDate: Wed May 13 19:52:46 2020 +0200 jsdialog: dump Sfx_Int__Items to JSON Change-Id: I6a1d2847251b90f86457b552e5354f5e179e1627 Reviewed-on: https://gerrit.libreoffice.org/83975 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Szymon Kłos <szymon.k...@collabora.com> diff --git a/include/svl/intitem.hxx b/include/svl/intitem.hxx index 8ecf53fadb08..c43add2013d7 100644 --- a/include/svl/intitem.hxx +++ b/include/svl/intitem.hxx @@ -90,6 +90,7 @@ public: { return new SfxUInt16Item(*this); } void dumpAsXml(xmlTextWriterPtr pWriter) const override; + virtual boost::property_tree::ptree dumpAsJSON() const override; }; @@ -105,6 +106,7 @@ public: { return new SfxInt32Item(*this); } void dumpAsXml(xmlTextWriterPtr pWriter) const override; + virtual boost::property_tree::ptree dumpAsJSON() const override; }; @@ -120,6 +122,7 @@ public: { return new SfxUInt32Item(*this); } void dumpAsXml(xmlTextWriterPtr pWriter) const override; + virtual boost::property_tree::ptree dumpAsJSON() const override; }; #endif // INCLUDED_SVL_INTITEM_HXX diff --git a/svl/source/items/intitem.cxx b/svl/source/items/intitem.cxx index f4016097637f..6bf9b2ef8300 100644 --- a/svl/source/items/intitem.cxx +++ b/svl/source/items/intitem.cxx @@ -107,6 +107,13 @@ void SfxUInt16Item::dumpAsXml(xmlTextWriterPtr pWriter) const xmlTextWriterEndElement(pWriter); } +boost::property_tree::ptree SfxUInt16Item::dumpAsJSON() const +{ + boost::property_tree::ptree aTree = SfxPoolItem::dumpAsJSON(); + aTree.put("state", GetValue()); + return aTree; +} + // class SfxInt32Item @@ -124,6 +131,13 @@ void SfxInt32Item::dumpAsXml(xmlTextWriterPtr pWriter) const xmlTextWriterEndElement(pWriter); } +boost::property_tree::ptree SfxInt32Item::dumpAsJSON() const +{ + boost::property_tree::ptree aTree = SfxPoolItem::dumpAsJSON(); + aTree.put("state", GetValue()); + return aTree; +} + // class SfxUInt32Item @@ -141,6 +155,12 @@ void SfxUInt32Item::dumpAsXml(xmlTextWriterPtr pWriter) const xmlTextWriterEndElement(pWriter); } +boost::property_tree::ptree SfxUInt32Item::dumpAsJSON() const +{ + boost::property_tree::ptree aTree = SfxPoolItem::dumpAsJSON(); + aTree.put("state", GetValue()); + return aTree; +} SfxMetricItem::SfxMetricItem(sal_uInt16 which, sal_uInt32 nValue): SfxInt32Item(which, nValue) commit 6ef49a97f9cb1037e39c839411dffaa37c0fa573 Author: Szymon Kłos <szymon.k...@collabora.com> AuthorDate: Thu Nov 28 10:19:39 2019 +0100 Commit: Szymon Kłos <eszka...@gmail.com> CommitDate: Wed May 13 19:52:46 2020 +0200 jsdialogs; send graphic updates in Calc and Impress Change-Id: Ia69fe214b6961a8f0387e6fc8f97a75687f5ed93 Reviewed-on: https://gerrit.libreoffice.org/83968 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Szymon Kłos <szymon.k...@collabora.com> diff --git a/svx/source/tbxctrls/grafctrl.cxx b/svx/source/tbxctrls/grafctrl.cxx index dee443327e08..af5da09255bf 100644 --- a/svx/source/tbxctrls/grafctrl.cxx +++ b/svx/source/tbxctrls/grafctrl.cxx @@ -60,6 +60,8 @@ #include <bitmaps.hlst> #include <com/sun/star/frame/XDispatchProvider.hpp> +#include <comphelper/lok.hxx> +#include <LibreOfficeKit/LibreOfficeKitEnums.h> using namespace ::com::sun::star::uno; using namespace ::com::sun::star::frame; @@ -1015,6 +1017,10 @@ void SvxGrafAttrHelper::GetGrafAttrState( SfxItemSet& rSet, SdrView const & rVie nWhich = aIter.NextWhich(); } + + SfxViewShell* pViewShell = SfxViewShell::Current(); + if (pViewShell && comphelper::LibreOfficeKit::isActive()) + pViewShell->sendUnoStatus( &rSet ); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit e5568b726356f5e05e349a1cf0a01b9558619998 Author: Szymon Kłos <szymon.k...@collabora.com> AuthorDate: Tue Nov 26 15:02:48 2019 +0100 Commit: Szymon Kłos <eszka...@gmail.com> CommitDate: Wed May 13 19:52:46 2020 +0200 jsdialogs: add generic commandName Change-Id: Icefe02e7682cf47da0bcc5efdfc3ab1019c8abf3 Reviewed-on: https://gerrit.libreoffice.org/83772 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Szymon Kłos <szymon.k...@collabora.com> diff --git a/sfx2/source/view/lokhelper.cxx b/sfx2/source/view/lokhelper.cxx index ee032c6f4977..acb4fea6f49a 100644 --- a/sfx2/source/view/lokhelper.cxx +++ b/sfx2/source/view/lokhelper.cxx @@ -24,6 +24,9 @@ #include <LibreOfficeKit/LibreOfficeKitEnums.h> #include <comphelper/lok.hxx> #include <editeng/outliner.hxx> +#include <sfx2/bindings.hxx> +#include <sfx2/objface.hxx> +#include <sfx2/msgpool.hxx> #include <shellimpl.hxx> @@ -183,6 +186,24 @@ void SfxLokHelper::notifyOtherViews(SfxViewShell* pThisView, int nType, const OS } } +namespace { + OUString lcl_getNameForSlot(const SfxViewShell* pShell, sal_uInt16 nWhich) + { + if (pShell->GetFrame()) + { + const SfxSlot* pSlot = SfxSlotPool::GetSlotPool(pShell->GetFrame()).GetSlot(nWhich); + if (pSlot) + { + OUStringBuffer sUnoCommand(".uno:"); + sUnoCommand.append(OStringToOUString(pSlot->GetUnoName(), RTL_TEXTENCODING_ASCII_US)); + return sUnoCommand.makeStringAndClear(); + } + } + + return ""; + } +} + void SfxLokHelper::sendUnoStatus(const SfxViewShell* pShell, const SfxItemSet* pSet) { if (!pShell || !pSet) @@ -197,6 +218,11 @@ void SfxLokHelper::sendUnoStatus(const SfxViewShell* pShell, const SfxItemSet* p if (pSet->HasItem(nWhich) && SfxItemState::SET >= pSet->GetItemState(nWhich)) { boost::property_tree::ptree aItem = pSet->Get(nWhich).dumpAsJSON(); + + OUString sCommand = lcl_getNameForSlot(pShell, nWhich); + if (!sCommand.isEmpty()) + aItem.put("commandName", sCommand); + if (!aItem.empty()) anArray.push_back(std::make_pair("", aItem)); } diff --git a/svx/source/xoutdev/xattr.cxx b/svx/source/xoutdev/xattr.cxx index 2742d6ff4568..3fb245c01659 100644 --- a/svx/source/xoutdev/xattr.cxx +++ b/svx/source/xoutdev/xattr.cxx @@ -1839,7 +1839,7 @@ boost::property_tree::ptree XFillStyleItem::dumpAsJSON() const boost::property_tree::ptree aTree = SfxPoolItem::dumpAsJSON(); if (Which() == XATTR_FILLSTYLE) - aTree.put("which", ".uno:FillStyle"); + aTree.put("commandName", ".uno:FillStyle"); OUString sValue; @@ -1863,7 +1863,7 @@ boost::property_tree::ptree XFillStyleItem::dumpAsJSON() const default: break; } - aTree.put("data", sValue); + aTree.put("state", sValue); return aTree; } @@ -2342,9 +2342,9 @@ boost::property_tree::ptree XFillGradientItem::dumpAsJSON() const boost::property_tree::ptree aTree = SfxPoolItem::dumpAsJSON(); if (Which() == XATTR_FILLGRADIENT) - aTree.put("which", ".uno:FillGradient"); + aTree.put("commandName", ".uno:FillGradient"); - aTree.push_back(std::make_pair("data", GetGradientValue().dumpAsJSON())); + aTree.push_back(std::make_pair("state", GetGradientValue().dumpAsJSON())); return aTree; } commit 623f6202d859403587b726ff61266d41ea166e52 Author: Szymon Kłos <szymon.k...@collabora.com> AuthorDate: Tue Nov 26 15:03:27 2019 +0100 Commit: Szymon Kłos <eszka...@gmail.com> CommitDate: Wed May 13 19:52:46 2020 +0200 jsdialogs: send graphic items updates Change-Id: I57d05726f80115b92e7599a7d033bf1ea8f79695 Reviewed-on: https://gerrit.libreoffice.org/83773 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Szymon Kłos <szymon.k...@collabora.com> diff --git a/include/svl/intitem.hxx b/include/svl/intitem.hxx index f6064ed8a335..8ecf53fadb08 100644 --- a/include/svl/intitem.hxx +++ b/include/svl/intitem.hxx @@ -22,6 +22,7 @@ #include <svl/svldllapi.h> #include <svl/cintitem.hxx> +#include <boost/property_tree/json_parser.hpp> class SVL_DLLPUBLIC SfxByteItem: public CntByteItem @@ -55,6 +56,8 @@ public: const IntlWrapper&) const override; + virtual boost::property_tree::ptree dumpAsJSON() const override; + virtual bool QueryValue( css::uno::Any& rVal, sal_uInt8 nMemberId = 0 ) const override; diff --git a/svl/source/items/intitem.cxx b/svl/source/items/intitem.cxx index 1345308281fa..f4016097637f 100644 --- a/svl/source/items/intitem.cxx +++ b/svl/source/items/intitem.cxx @@ -58,6 +58,14 @@ bool SfxInt16Item::GetPresentation(SfxItemPresentation, } +boost::property_tree::ptree SfxInt16Item::dumpAsJSON() const +{ + boost::property_tree::ptree aTree = SfxPoolItem::dumpAsJSON(); + aTree.put("state", GetValue()); + return aTree; +} + + // virtual bool SfxInt16Item::QueryValue(css::uno::Any& rVal, sal_uInt8) const { diff --git a/sw/source/uibase/shells/grfsh.cxx b/sw/source/uibase/shells/grfsh.cxx index 9bc4d34fcf1b..13cd9a22b4ad 100644 --- a/sw/source/uibase/shells/grfsh.cxx +++ b/sw/source/uibase/shells/grfsh.cxx @@ -77,6 +77,9 @@ #include <unocrsr.hxx> #include <memory> +#include <comphelper/lok.hxx> +#include <LibreOfficeKit/LibreOfficeKitEnums.h> + #define TOOLBOX_NAME "colorbar" class SwGrfShell::SwExternalToolEdit @@ -921,6 +924,10 @@ void SwGrfShell::GetAttrState(SfxItemSet &rSet) nWhich = aIter.NextWhich(); } SetGetStateSet( nullptr ); + + SfxViewShell* pViewShell = GetShell().GetSfxViewShell(); + if (pViewShell && comphelper::LibreOfficeKit::isActive()) + pViewShell->sendUnoStatus( &rSet ); } void SwGrfShell::ExecuteRotation(SfxRequest const &rReq) commit b2d8dc41c664097811180a41df2f460d2d7aa31f Author: Szymon Kłos <szymon.k...@collabora.com> AuthorDate: Fri Nov 22 12:57:00 2019 +0100 Commit: Szymon Kłos <eszka...@gmail.com> CommitDate: Wed May 13 19:52:46 2020 +0200 jsdialogs: dumpAsJSON for FillStyle Change-Id: I0dc130c295b416b5b9e3071a0ec81dae0ce851fb Reviewed-on: https://gerrit.libreoffice.org/83746 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Szymon Kłos <szymon.k...@collabora.com> diff --git a/include/svx/xfillit0.hxx b/include/svx/xfillit0.hxx index a1772092f991..e0855dfb7c56 100644 --- a/include/svx/xfillit0.hxx +++ b/include/svx/xfillit0.hxx @@ -48,6 +48,7 @@ public: virtual sal_uInt16 GetValueCount() const override; void dumpAsXml(xmlTextWriterPtr pWriter) const override; + virtual boost::property_tree::ptree dumpAsJSON() const override; }; #endif diff --git a/svx/source/xoutdev/xattr.cxx b/svx/source/xoutdev/xattr.cxx index 7061211a8f57..2742d6ff4568 100644 --- a/svx/source/xoutdev/xattr.cxx +++ b/svx/source/xoutdev/xattr.cxx @@ -1834,6 +1834,40 @@ void XFillStyleItem::dumpAsXml(xmlTextWriterPtr pWriter) const xmlTextWriterEndElement(pWriter); } +boost::property_tree::ptree XFillStyleItem::dumpAsJSON() const +{ + boost::property_tree::ptree aTree = SfxPoolItem::dumpAsJSON(); + + if (Which() == XATTR_FILLSTYLE) + aTree.put("which", ".uno:FillStyle"); + + OUString sValue; + + switch( GetValue() ) + { + case drawing::FillStyle_NONE: + sValue = "NONE"; + break; + case drawing::FillStyle_SOLID: + sValue = "SOLID"; + break; + case drawing::FillStyle_GRADIENT: + sValue = "GRADIENT"; + break; + case drawing::FillStyle_HATCH: + sValue = "HATCH"; + break; + case drawing::FillStyle_BITMAP: + sValue = "BITMAP"; + break; + default: break; + } + + aTree.put("data", sValue); + + return aTree; +} + SfxPoolItem* XFillColorItem::CreateDefault() { return new XFillColorItem; } commit ef3255619c1817fe97dc3fddb510104cc4d09e38 Author: Szymon Kłos <szymon.k...@collabora.com> AuthorDate: Tue Nov 26 10:47:33 2019 +0100 Commit: Szymon Kłos <eszka...@gmail.com> CommitDate: Wed May 13 19:52:45 2020 +0200 jsdialogs: share the commands updates sending code Change-Id: I34c1e03a8f92efe0c0dd391d16ff907919e65b00 Reviewed-on: https://gerrit.libreoffice.org/83748 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Szymon Kłos <szymon.k...@collabora.com> diff --git a/include/sfx2/lokhelper.hxx b/include/sfx2/lokhelper.hxx index 760b2ed5dfc6..889788454d41 100644 --- a/include/sfx2/lokhelper.hxx +++ b/include/sfx2/lokhelper.hxx @@ -42,6 +42,8 @@ public: static void notifyOtherViews(SfxViewShell* pThisView, int nType, const OString& rKey, const OString& rPayload); /// Same as notifyOtherViews(), but works on a selected "other" view, not on all of them. static void notifyOtherView(SfxViewShell* pThisView, SfxViewShell const* pOtherView, int nType, const OString& rKey, const OString& rPayload); + /// Emits a LOK_CALLBACK_STATE_CHANGED + static void sendUnoStatus(const SfxViewShell* pThisView, const SfxItemSet* pSet); /// Emits a LOK_CALLBACK_WINDOW static void notifyWindow(const SfxViewShell* pThisView, vcl::LOKWindowId nWindowId, diff --git a/include/sfx2/viewsh.hxx b/include/sfx2/viewsh.hxx index d65fae656b16..691ee99839e4 100644 --- a/include/sfx2/viewsh.hxx +++ b/include/sfx2/viewsh.hxx @@ -219,6 +219,7 @@ public: virtual const SfxShell* GetFormShell() const { return nullptr; }; // ILibreOfficeKitNotifier + virtual void sendUnoStatus(const SfxItemSet* pSet) const override; virtual void notifyWindow(vcl::LOKWindowId nLOKWindowId, const OUString& rAction, const std::vector<vcl::LOKPayloadItem>& rPayload = std::vector<vcl::LOKPayloadItem>()) const override; // Focus, KeyInput, Cursor diff --git a/include/vcl/IDialogRenderable.hxx b/include/vcl/IDialogRenderable.hxx index 86ea333d1100..969c15421995 100644 --- a/include/vcl/IDialogRenderable.hxx +++ b/include/vcl/IDialogRenderable.hxx @@ -17,6 +17,8 @@ #include <vector> +class SfxItemSet; + namespace vcl { @@ -30,6 +32,7 @@ public: virtual ~ILibreOfficeKitNotifier(); /// Callbacks + virtual void sendUnoStatus(const SfxItemSet* pSet) const = 0; virtual void notifyWindow(vcl::LOKWindowId nLOKWindowId, const OUString& rAction, const std::vector<LOKPayloadItem>& rPayload = std::vector<LOKPayloadItem>()) const = 0; diff --git a/sc/source/ui/drawfunc/drawsh2.cxx b/sc/source/ui/drawfunc/drawsh2.cxx index e2ef0c75a173..0e3bf2b3529b 100644 --- a/sc/source/ui/drawfunc/drawsh2.cxx +++ b/sc/source/ui/drawfunc/drawsh2.cxx @@ -57,32 +57,6 @@ using namespace com::sun::star::drawing; using namespace com::sun::star; -namespace { - void lcl_sendAttrUpdatesForLOK(SfxViewShell* pShell, const SfxItemSet& rSet) - { - if (!pShell) - return; - - boost::property_tree::ptree aTree; - boost::property_tree::ptree anArray; - - for(int i = 0; i < rSet.Count(); i++) - { - sal_uInt16 nWhich = rSet.GetWhichByPos(i); - if (rSet.HasItem(nWhich) && SfxItemState::SET >= rSet.GetItemState(nWhich)) - { - boost::property_tree::ptree aItem = rSet.Get(nWhich).dumpAsJSON(); - if (!aItem.empty()) - anArray.push_back(std::make_pair("", aItem)); - } - } - aTree.add_child("items", anArray); - - std::stringstream aStream; - boost::property_tree::write_json(aStream, aTree); - pShell->libreOfficeKitViewCallback(LOK_CALLBACK_STATE_CHANGED, aStream.str().c_str()); - } -} ScDrawShell::ScDrawShell( ScViewData* pData ) : SfxShell(pData->GetViewShell()), @@ -398,7 +372,7 @@ void ScDrawShell::GetDrawAttrState( SfxItemSet& rSet ) SfxViewShell* pViewShell = GetDrawView()->GetSfxViewShell(); if (pViewShell && comphelper::LibreOfficeKit::isActive()) - lcl_sendAttrUpdatesForLOK( pViewShell, rSet ); + pViewShell->sendUnoStatus( &rSet ); } } diff --git a/sd/source/ui/view/drviewsf.cxx b/sd/source/ui/view/drviewsf.cxx index 3bd059cabdff..c3ee5e83d1c3 100644 --- a/sd/source/ui/view/drviewsf.cxx +++ b/sd/source/ui/view/drviewsf.cxx @@ -70,33 +70,6 @@ using namespace com::sun::star::drawing; using namespace svx::sidebar; using namespace ::com::sun::star; -namespace { - void lcl_sendAttrUpdatesForLOK(SfxViewShell* pShell, const SfxItemSet& rSet) - { - if (!pShell) - return; - - boost::property_tree::ptree aTree; - boost::property_tree::ptree anArray; - - for(int i = 0; i < rSet.Count(); i++) - { - sal_uInt16 nWhich = rSet.GetWhichByPos(i); - if (rSet.HasItem(nWhich) && SfxItemState::SET >= rSet.GetItemState(nWhich)) - { - boost::property_tree::ptree aItem = rSet.Get(nWhich).dumpAsJSON(); - if (!aItem.empty()) - anArray.push_back(std::make_pair("", aItem)); - } - } - aTree.add_child("items", anArray); - - std::stringstream aStream; - boost::property_tree::write_json(aStream, aTree); - pShell->libreOfficeKitViewCallback(LOK_CALLBACK_STATE_CHANGED, aStream.str().c_str()); - } -} - namespace sd { /** @@ -763,7 +736,7 @@ void DrawViewShell::GetAttrState( SfxItemSet& rSet ) SfxViewShell* pViewShell = GetDrawView()->GetSfxViewShell(); if (pViewShell && comphelper::LibreOfficeKit::isActive()) - lcl_sendAttrUpdatesForLOK( pViewShell, *pSet ); + pViewShell->sendUnoStatus( &rSet ); } SfxItemState eState = pSet->GetItemState( EE_PARA_LRSPACE ); diff --git a/sfx2/source/view/lokhelper.cxx b/sfx2/source/view/lokhelper.cxx index 6dea1bc3d125..ee032c6f4977 100644 --- a/sfx2/source/view/lokhelper.cxx +++ b/sfx2/source/view/lokhelper.cxx @@ -183,6 +183,31 @@ void SfxLokHelper::notifyOtherViews(SfxViewShell* pThisView, int nType, const OS } } +void SfxLokHelper::sendUnoStatus(const SfxViewShell* pShell, const SfxItemSet* pSet) +{ + if (!pShell || !pSet) + return; + + boost::property_tree::ptree aTree; + boost::property_tree::ptree anArray; + + for(int i = 0; i < pSet->Count(); i++) + { + sal_uInt16 nWhich = pSet->GetWhichByPos(i); + if (pSet->HasItem(nWhich) && SfxItemState::SET >= pSet->GetItemState(nWhich)) + { + boost::property_tree::ptree aItem = pSet->Get(nWhich).dumpAsJSON(); + if (!aItem.empty()) + anArray.push_back(std::make_pair("", aItem)); + } + } + aTree.add_child("items", anArray); + + std::stringstream aStream; + boost::property_tree::write_json(aStream, aTree); + pShell->libreOfficeKitViewCallback(LOK_CALLBACK_STATE_CHANGED, aStream.str().c_str()); +} + void SfxLokHelper::notifyWindow(const SfxViewShell* pThisView, vcl::LOKWindowId nLOKWindowId, const OUString& rAction, diff --git a/sfx2/source/view/viewsh.cxx b/sfx2/source/view/viewsh.cxx index 8a199623fa58..d865e64f05b7 100644 --- a/sfx2/source/view/viewsh.cxx +++ b/sfx2/source/view/viewsh.cxx @@ -2013,6 +2013,11 @@ Reference< view::XRenderable > SfxViewShell::GetRenderable() return xRender; } +void SfxViewShell::sendUnoStatus(const SfxItemSet* pSet) const +{ + SfxLokHelper::sendUnoStatus(this, pSet); +} + void SfxViewShell::notifyWindow(vcl::LOKWindowId nDialogId, const OUString& rAction, const std::vector<vcl::LOKPayloadItem>& rPayload) const { SfxLokHelper::notifyWindow(this, nDialogId, rAction, rPayload); diff --git a/sw/source/uibase/shells/drawdlg.cxx b/sw/source/uibase/shells/drawdlg.cxx index 2b6abbf3396d..8ef098bc9287 100644 --- a/sw/source/uibase/shells/drawdlg.cxx +++ b/sw/source/uibase/shells/drawdlg.cxx @@ -258,31 +258,6 @@ namespace pArgs->Put(aItem); } } - - void lcl_sendAttrUpdatesForLOK(SfxViewShell* pShell, const SfxItemSet& rSet) - { - if (!pShell) - return; - - boost::property_tree::ptree aTree; - boost::property_tree::ptree anArray; - - for(int i = 0; i < rSet.Count(); i++) - { - sal_uInt16 nWhich = rSet.GetWhichByPos(i); - if (rSet.HasItem(nWhich) && SfxItemState::SET >= rSet.GetItemState(nWhich)) - { - boost::property_tree::ptree aItem = rSet.Get(nWhich).dumpAsJSON(); - if (!aItem.empty()) - anArray.push_back(std::make_pair("", aItem)); - } - } - aTree.add_child("items", anArray); - - std::stringstream aStream; - boost::property_tree::write_json(aStream, aTree); - pShell->libreOfficeKitViewCallback(LOK_CALLBACK_STATE_CHANGED, aStream.str().c_str()); - } } void SwDrawShell::ExecDrawAttrArgs(SfxRequest const & rReq) @@ -354,7 +329,7 @@ void SwDrawShell::GetDrawAttrState(SfxItemSet& rSet) SfxViewShell* pViewShell = GetShell().GetSfxViewShell(); if (pViewShell && comphelper::LibreOfficeKit::isActive()) - lcl_sendAttrUpdatesForLOK( pViewShell, rSet ); + pViewShell->sendUnoStatus( &rSet ); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit 018e8895dee5bbcd3e089cbc42b052cb7deebbe3 Author: Szymon Kłos <szymon.k...@collabora.com> AuthorDate: Mon Nov 25 17:10:41 2019 +0100 Commit: Szymon Kłos <eszka...@gmail.com> CommitDate: Wed May 13 19:52:45 2020 +0200 jsdialog: send generic fill items also in writer and impress Change-Id: I656ee47fff4e43f77caef62c071a5aa3b867f444 Reviewed-on: https://gerrit.libreoffice.org/83747 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Szymon Kłos <szymon.k...@collabora.com> diff --git a/sd/source/ui/view/drviewsf.cxx b/sd/source/ui/view/drviewsf.cxx index 2dcfe64dec3c..3bd059cabdff 100644 --- a/sd/source/ui/view/drviewsf.cxx +++ b/sd/source/ui/view/drviewsf.cxx @@ -71,54 +71,29 @@ using namespace svx::sidebar; using namespace ::com::sun::star; namespace { - OUString lcl_fillStyleEnumToString(FillStyle eStyle) - { - switch (eStyle) - { - case FillStyle_NONE: - return "NONE"; - - case FillStyle_SOLID: - return "SOLID"; - - case FillStyle_GRADIENT: - return "GRADIENT"; - - case FillStyle_HATCH: - return "HATCH"; - - case FillStyle_BITMAP: - return "BITMAP"; - - default: - return ""; - } - } - void lcl_sendAttrUpdatesForLOK(SfxViewShell* pShell, const SfxItemSet& rSet) { if (!pShell) return; - OUString sPayload; - const SfxPoolItem* pItem = rSet.GetItem(SID_ATTR_FILL_STYLE); + boost::property_tree::ptree aTree; + boost::property_tree::ptree anArray; - if (pItem) + for(int i = 0; i < rSet.Count(); i++) { - const XFillStyleItem* pFillStyleItem = static_cast<const XFillStyleItem*>(pItem); - FillStyle eStyle; - css::uno::Any aAny; - - pFillStyleItem->QueryValue(aAny); - aAny >>= eStyle; - sPayload = ".uno:FillStyle=" + lcl_fillStyleEnumToString(eStyle); + sal_uInt16 nWhich = rSet.GetWhichByPos(i); + if (rSet.HasItem(nWhich) && SfxItemState::SET >= rSet.GetItemState(nWhich)) + { + boost::property_tree::ptree aItem = rSet.Get(nWhich).dumpAsJSON(); + if (!aItem.empty()) + anArray.push_back(std::make_pair("", aItem)); + } } + aTree.add_child("items", anArray); - if (!sPayload.isEmpty()) - { - pShell->libreOfficeKitViewCallback(LOK_CALLBACK_STATE_CHANGED, - OUStringToOString(sPayload, RTL_TEXTENCODING_ASCII_US).getStr()); - } + std::stringstream aStream; + boost::property_tree::write_json(aStream, aTree); + pShell->libreOfficeKitViewCallback(LOK_CALLBACK_STATE_CHANGED, aStream.str().c_str()); } } diff --git a/sw/source/uibase/shells/drawdlg.cxx b/sw/source/uibase/shells/drawdlg.cxx index f899f7e74645..2b6abbf3396d 100644 --- a/sw/source/uibase/shells/drawdlg.cxx +++ b/sw/source/uibase/shells/drawdlg.cxx @@ -259,54 +259,29 @@ namespace } } - OUString lcl_fillStyleEnumToString(FillStyle eStyle) - { - switch (eStyle) - { - case FillStyle_NONE: - return "NONE"; - - case FillStyle_SOLID: - return "SOLID"; - - case FillStyle_GRADIENT: - return "GRADIENT"; - - case FillStyle_HATCH: - return "HATCH"; - - case FillStyle_BITMAP: - return "BITMAP"; - - default: - return ""; - } - } - void lcl_sendAttrUpdatesForLOK(SfxViewShell* pShell, const SfxItemSet& rSet) { if (!pShell) return; - OUString sPayload; - const SfxPoolItem* pItem = rSet.GetItem(SID_ATTR_FILL_STYLE); + boost::property_tree::ptree aTree; + boost::property_tree::ptree anArray; - if (pItem) + for(int i = 0; i < rSet.Count(); i++) { - const XFillStyleItem* pFillStyleItem = static_cast<const XFillStyleItem*>(pItem); - FillStyle eStyle; - css::uno::Any aAny; - - pFillStyleItem->QueryValue(aAny); - aAny >>= eStyle; - sPayload = ".uno:FillStyle=" + lcl_fillStyleEnumToString(eStyle); + sal_uInt16 nWhich = rSet.GetWhichByPos(i); + if (rSet.HasItem(nWhich) && SfxItemState::SET >= rSet.GetItemState(nWhich)) + { + boost::property_tree::ptree aItem = rSet.Get(nWhich).dumpAsJSON(); + if (!aItem.empty()) + anArray.push_back(std::make_pair("", aItem)); + } } + aTree.add_child("items", anArray); - if (!sPayload.isEmpty()) - { - pShell->libreOfficeKitViewCallback(LOK_CALLBACK_STATE_CHANGED, - OUStringToOString(sPayload, RTL_TEXTENCODING_ASCII_US).getStr()); - } + std::stringstream aStream; + boost::property_tree::write_json(aStream, aTree); + pShell->libreOfficeKitViewCallback(LOK_CALLBACK_STATE_CHANGED, aStream.str().c_str()); } } commit 569d713259fcb172a8a8aba78fda0341081bb47b Author: Szymon Kłos <szymon.k...@collabora.com> AuthorDate: Thu Nov 21 17:47:10 2019 +0100 Commit: Szymon Kłos <eszka...@gmail.com> CommitDate: Wed May 13 19:52:45 2020 +0200 jsdialogs: dumpAsJSON for SfxItems with FillGradient example Change-Id: I1b9303af6f52ad071074200bb630c587c8f611c1 Reviewed-on: https://gerrit.libreoffice.org/83745 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Szymon Kłos <szymon.k...@collabora.com> diff --git a/include/svl/poolitem.hxx b/include/svl/poolitem.hxx index cc1ddabd57a3..dd74806464cd 100644 --- a/include/svl/poolitem.hxx +++ b/include/svl/poolitem.hxx @@ -29,6 +29,7 @@ #include <svl/svldllapi.h> #include <svl/typedwhich.hxx> #include <tools/mapunit.hxx> +#include <boost/property_tree/json_parser.hpp> class IntlWrapper; @@ -180,6 +181,7 @@ public: sal_uInt32 GetRefCount() const { return m_nRefCount; } SfxItemKind GetKind() const { return m_nKind; } virtual void dumpAsXml(xmlTextWriterPtr pWriter) const; + virtual boost::property_tree::ptree dumpAsJSON() const; /** Only SfxVoidItem shall and must return true for this. diff --git a/include/svx/xflgrit.hxx b/include/svx/xflgrit.hxx index 5f136e25f824..1b1d860c8fb9 100644 --- a/include/svx/xflgrit.hxx +++ b/include/svx/xflgrit.hxx @@ -56,6 +56,8 @@ public: static bool CompareValueFunc( const NameOrIndex* p1, const NameOrIndex* p2 ); std::unique_ptr<XFillGradientItem> checkForUniqueItem( SdrModel* pModel ) const; + + virtual boost::property_tree::ptree dumpAsJSON() const override; }; #endif diff --git a/include/svx/xgrad.hxx b/include/svx/xgrad.hxx index e31a4d2ef648..268b0e06253b 100644 --- a/include/svx/xgrad.hxx +++ b/include/svx/xgrad.hxx @@ -23,6 +23,7 @@ #include <tools/color.hxx> #include <svx/svxdllapi.h> #include <com/sun/star/awt/GradientStyle.hpp> +#include <boost/property_tree/json_parser.hpp> class Gradient; @@ -39,6 +40,8 @@ class SAL_WARN_UNUSED SVX_DLLPUBLIC XGradient final sal_uInt16 nIntensEnd; sal_uInt16 nStepCount; + static std::string GradientStyleToString(css::awt::GradientStyle eStyle); + public: XGradient(); XGradient( const Color& rStart, const Color& rEnd, @@ -70,6 +73,8 @@ public: sal_uInt16 GetStartIntens() const { return nIntensStart; } sal_uInt16 GetEndIntens() const { return nIntensEnd; } sal_uInt16 GetSteps() const { return nStepCount; } + + boost::property_tree::ptree dumpAsJSON() const; }; #endif diff --git a/sc/source/ui/drawfunc/drawsh2.cxx b/sc/source/ui/drawfunc/drawsh2.cxx index 118412c24822..e2ef0c75a173 100644 --- a/sc/source/ui/drawfunc/drawsh2.cxx +++ b/sc/source/ui/drawfunc/drawsh2.cxx @@ -48,6 +48,7 @@ #include <svx/svdoole2.hxx> #include <svx/svdocapt.hxx> #include <svx/xfillit0.hxx> +#include <svx/xflgrit.hxx> #include <comphelper/lok.hxx> #include <LibreOfficeKit/LibreOfficeKitEnums.h> @@ -57,54 +58,29 @@ using namespace com::sun::star::drawing; using namespace com::sun::star; namespace { - OUString lcl_fillStyleEnumToString(FillStyle eStyle) - { - switch (eStyle) - { - case FillStyle_NONE: - return "NONE"; - - case FillStyle_SOLID: - return "SOLID"; - - case FillStyle_GRADIENT: - return "GRADIENT"; - - case FillStyle_HATCH: - return "HATCH"; - - case FillStyle_BITMAP: - return "BITMAP"; - - default: - return ""; - } - } - void lcl_sendAttrUpdatesForLOK(SfxViewShell* pShell, const SfxItemSet& rSet) { if (!pShell) return; - OUString sPayload; - const SfxPoolItem* pItem = rSet.GetItem(SID_ATTR_FILL_STYLE); + boost::property_tree::ptree aTree; + boost::property_tree::ptree anArray; - if (pItem) + for(int i = 0; i < rSet.Count(); i++) { - const XFillStyleItem* pFillStyleItem = static_cast<const XFillStyleItem*>(pItem); - FillStyle eStyle; - css::uno::Any aAny; - - pFillStyleItem->QueryValue(aAny); - aAny >>= eStyle; - sPayload = ".uno:FillStyle=" + lcl_fillStyleEnumToString(eStyle); + sal_uInt16 nWhich = rSet.GetWhichByPos(i); + if (rSet.HasItem(nWhich) && SfxItemState::SET >= rSet.GetItemState(nWhich)) + { + boost::property_tree::ptree aItem = rSet.Get(nWhich).dumpAsJSON(); + if (!aItem.empty()) + anArray.push_back(std::make_pair("", aItem)); + } } + aTree.add_child("items", anArray); - if (!sPayload.isEmpty()) - { - pShell->libreOfficeKitViewCallback(LOK_CALLBACK_STATE_CHANGED, - OUStringToOString(sPayload, RTL_TEXTENCODING_ASCII_US).getStr()); - } + std::stringstream aStream; + boost::property_tree::write_json(aStream, aTree); + pShell->libreOfficeKitViewCallback(LOK_CALLBACK_STATE_CHANGED, aStream.str().c_str()); } } diff --git a/svl/source/items/poolitem.cxx b/svl/source/items/poolitem.cxx index ec37b68d3417..daa676a9e458 100644 --- a/svl/source/items/poolitem.cxx +++ b/svl/source/items/poolitem.cxx @@ -552,6 +552,12 @@ void SfxPoolItem::dumpAsXml(xmlTextWriterPtr pWriter) const xmlTextWriterEndElement(pWriter); } +boost::property_tree::ptree SfxPoolItem::dumpAsJSON() const +{ + boost::property_tree::ptree aTree; + return aTree; +} + std::unique_ptr<SfxPoolItem> SfxPoolItem::CloneSetWhich( sal_uInt16 nNewWhich ) const { std::unique_ptr<SfxPoolItem> pItem(Clone()); diff --git a/svx/source/xoutdev/xattr.cxx b/svx/source/xoutdev/xattr.cxx index af477725dc23..7061211a8f57 100644 --- a/svx/source/xoutdev/xattr.cxx +++ b/svx/source/xoutdev/xattr.cxx @@ -88,6 +88,8 @@ #include <unotools/intlwrapper.hxx> #include <unotools/syslocale.hxx> #include <vcl/gradient.hxx> +#include <svx/svxids.hrc> +#include <string> #include <libxml/xmlwriter.h> @@ -1909,6 +1911,35 @@ bool XSecondaryFillColorItem::GetPresentation return true; } +std::string XGradient::GradientStyleToString(css::awt::GradientStyle eStyle) +{ + switch (eStyle) + { + case css::awt::GradientStyle::GradientStyle_LINEAR: + return "Linear"; + + case css::awt::GradientStyle::GradientStyle_AXIAL: + return "Axial"; + + case css::awt::GradientStyle::GradientStyle_RADIAL: + return "Radial"; + + case css::awt::GradientStyle::GradientStyle_ELLIPTICAL: + return "Elliptical"; + + case css::awt::GradientStyle::GradientStyle_SQUARE: + return "Square"; + + case css::awt::GradientStyle::GradientStyle_RECT: + return "Rect"; + + case css::awt::GradientStyle::GradientStyle_MAKE_FIXED_SIZE: + return "FixedSize"; + } + + return ""; +} + XGradient::XGradient() : eStyle( css::awt::GradientStyle_LINEAR ), aStartColor( COL_BLACK ), @@ -1955,6 +1986,23 @@ bool XGradient::operator==(const XGradient& rGradient) const nStepCount == rGradient.nStepCount ); } +boost::property_tree::ptree XGradient::dumpAsJSON() const +{ + boost::property_tree::ptree aTree; + + aTree.put("style", XGradient::GradientStyleToString(eStyle)); + aTree.put("startcolor", aStartColor.AsRGBHexString()); + aTree.put("endcolor", aEndColor.AsRGBHexString()); + aTree.put("angle", std::to_string(nAngle)); + aTree.put("border", std::to_string(nBorder)); + aTree.put("x", std::to_string(nOfsX)); + aTree.put("y", std::to_string(nOfsY)); + aTree.put("intensstart", std::to_string(nIntensStart)); + aTree.put("intensend", std::to_string(nIntensEnd)); + aTree.put("stepcount", std::to_string(nStepCount)); + + return aTree; +} SfxPoolItem* XFillGradientItem::CreateDefault() { return new XFillGradientItem; } @@ -2255,6 +2303,18 @@ std::unique_ptr<XFillGradientItem> XFillGradientItem::checkForUniqueItem( SdrMod return nullptr; } +boost::property_tree::ptree XFillGradientItem::dumpAsJSON() const +{ + boost::property_tree::ptree aTree = SfxPoolItem::dumpAsJSON(); + + if (Which() == XATTR_FILLGRADIENT) + aTree.put("which", ".uno:FillGradient"); + + aTree.push_back(std::make_pair("data", GetGradientValue().dumpAsJSON())); + + return aTree; +} + SfxPoolItem* XFillFloatTransparenceItem::CreateDefault() { return new XFillFloatTransparenceItem; } commit ede64fa86036f906b9d1f324c2098965700e6efa Author: Szymon Kłos <szymon.k...@collabora.com> AuthorDate: Wed Nov 27 11:30:06 2019 +0100 Commit: Szymon Kłos <eszka...@gmail.com> CommitDate: Wed May 13 19:52:45 2020 +0200 jsdiloag: export SvxColorBox to JSON Change-Id: I1a1296ed2981867af6dac22ba03423a3e5f3d5b5 Reviewed-on: https://gerrit.libreoffice.org/83898 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Szymon Kłos <szymon.k...@collabora.com> diff --git a/include/svx/colorbox.hxx b/include/svx/colorbox.hxx index 373b8cf11403..802d82dd0c45 100644 --- a/include/svx/colorbox.hxx +++ b/include/svx/colorbox.hxx @@ -71,6 +71,8 @@ public: void EnsurePaletteManager(); DECL_LINK(WindowEventListener, VclWindowEvent&, void); + + virtual boost::property_tree::ptree DumpAsPropertyTree() override; }; class ListBoxColorWrapper diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx index 7fc12c76a47d..6741954f7581 100644 --- a/svx/source/tbxctrls/tbcontrl.cxx +++ b/svx/source/tbxctrls/tbcontrl.cxx @@ -4109,6 +4109,13 @@ void SvxColorListBox::SelectEntry(const Color& rColor) ShowPreview(m_aSelectedColor); } +boost::property_tree::ptree SvxColorListBox::DumpAsPropertyTree() +{ + boost::property_tree::ptree aTree = MenuButton::DumpAsPropertyTree(); + aTree.put("type", "colorlistbox"); + return aTree; +} + ColorListBox::ColorListBox(std::unique_ptr<weld::MenuButton> pControl, weld::Window* pTopLevel) : m_xButton(std::move(pControl)) , m_pTopLevel(pTopLevel) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits