include/svx/PaletteManager.hxx | 15 ++++++++- svx/source/tbxctrls/PaletteManager.cxx | 50 ++++++++++++++++++++++++--------- svx/source/tbxctrls/tbcontrl.cxx | 17 ++--------- 3 files changed, 54 insertions(+), 28 deletions(-)
New commits: commit d1cd50957750a534d6ec1ba8a21bca1e3b8fe931 Author: Krisztian Pinter <pin.termina...@gmail.com> Date: Wed Jul 30 19:45:37 2014 +0200 Change vector<Palette*> to ptr_vector<Palette> Change-Id: I1f2832235e8d2ea3517efdce809970ed5f1c6769 diff --git a/include/svx/PaletteManager.hxx b/include/svx/PaletteManager.hxx index 9d40d48..e4144f9 100644 --- a/include/svx/PaletteManager.hxx +++ b/include/svx/PaletteManager.hxx @@ -25,12 +25,14 @@ #include <svx/tbxcolorupdate.hxx> #include <tools/urlobj.hxx> +#include <comphelper/processfactory.hxx> #include <com/sun/star/util/XURLTransformer.hpp> #include <com/sun/star/util/URLTransformer.hpp> #include <com/sun/star/frame/XDispatch.hpp> #include <com/sun/star/frame/Desktop.hpp> #include <com/sun/star/frame/XDispatchProvider.hpp> -#include <comphelper/processfactory.hxx> + +#include <boost/ptr_container/ptr_vector.hpp> class PaletteManager { @@ -41,7 +43,7 @@ class PaletteManager svx::ToolboxButtonColorUpdater* mpBtnUpdater; Color mLastColor; - std::vector<Palette*> maPalettes; + boost::ptr_vector<Palette> maPalettes; public: PaletteManager(); ~PaletteManager(); diff --git a/svx/source/tbxctrls/PaletteManager.cxx b/svx/source/tbxctrls/PaletteManager.cxx index da80f23..98ae0b2 100644 --- a/svx/source/tbxctrls/PaletteManager.cxx +++ b/svx/source/tbxctrls/PaletteManager.cxx @@ -41,20 +41,14 @@ PaletteManager::PaletteManager() : PaletteManager::~PaletteManager() { - for( std::vector<Palette*>::iterator it = maPalettes.begin(); - it != maPalettes.end(); - ++it) - { - delete *it; - } } void PaletteManager::LoadPalettes() { + maPalettes.clear(); OUString aPalPath = SvtPathOptions().GetPalettePath(); osl::Directory aDir(aPalPath); - maPalettes.clear(); osl::DirectoryItem aDirItem; osl::FileStatus aFileStat( osl_FileStatus_Mask_FileName | osl_FileStatus_Mask_FileURL | @@ -116,7 +110,7 @@ void PaletteManager::ReloadColorSet(SvxColorValueSet &rColorSet) } else { - maPalettes[mnCurrentPalette-1]->LoadColorSet( rColorSet ); + maPalettes[mnCurrentPalette-1].LoadColorSet( rColorSet ); mnColorCount = rColorSet.GetItemCount(); } } @@ -127,11 +121,11 @@ std::vector<OUString> PaletteManager::GetPaletteList() aPaletteNames.push_back( STR_DEFAULT_PAL ); - for( std::vector<Palette*>::iterator it = maPalettes.begin(); + for( boost::ptr_vector<Palette>::iterator it = maPalettes.begin(); it != maPalettes.end(); ++it) { - aPaletteNames.push_back( (*it)->GetName() ); + aPaletteNames.push_back( (*it).GetName() ); } aPaletteNames.push_back( STR_DOC_COLORS ); @@ -161,7 +155,7 @@ OUString PaletteManager::GetPaletteName() else if( mnCurrentPalette == mnNumOfPalettes - 1 ) return OUString( STR_DOC_COLORS ); else - return maPalettes[mnCurrentPalette - 1]->GetName(); + return maPalettes[mnCurrentPalette - 1].GetName(); } const Color& PaletteManager::GetLastColor() commit 0e72d33fca02f4eb965dd49a26f1a6f610196175 Author: Krisztian Pinter <pin.termina...@gmail.com> Date: Wed Jul 30 17:15:49 2014 +0200 Make color picker apply color immediately Change-Id: I38695a43ced63bd5207b631a072231d81aa7e0f9 diff --git a/include/svx/PaletteManager.hxx b/include/svx/PaletteManager.hxx index 1bd0bd1..9d40d48 100644 --- a/include/svx/PaletteManager.hxx +++ b/include/svx/PaletteManager.hxx @@ -24,6 +24,14 @@ #include <rtl/ustring.hxx> #include <svx/tbxcolorupdate.hxx> +#include <tools/urlobj.hxx> +#include <com/sun/star/util/XURLTransformer.hpp> +#include <com/sun/star/util/URLTransformer.hpp> +#include <com/sun/star/frame/XDispatch.hpp> +#include <com/sun/star/frame/Desktop.hpp> +#include <com/sun/star/frame/XDispatchProvider.hpp> +#include <comphelper/processfactory.hxx> + class PaletteManager { sal_uInt16 mnNumOfPalettes; @@ -48,7 +56,8 @@ public: const Color& GetLastColor(); void SetLastColor(const Color& rLastColor); void SetBtnUpdater(svx::ToolboxButtonColorUpdater* pBtnUpdater); - void PopupColorPicker(); + void PopupColorPicker(const OUString aCommand); + static void DispatchColorCommand(const OUString aCommand, const Color aColor); }; #endif // INCLUDED_SVX_PALETTEMANAGER_HXX diff --git a/svx/source/tbxctrls/PaletteManager.cxx b/svx/source/tbxctrls/PaletteManager.cxx index 95485ce..da80f23 100644 --- a/svx/source/tbxctrls/PaletteManager.cxx +++ b/svx/source/tbxctrls/PaletteManager.cxx @@ -21,7 +21,7 @@ #include <osl/file.hxx> #include <unotools/pathoptions.hxx> #include <sfx2/objsh.hxx> -#include "svx/drawitem.hxx" +#include <svx/drawitem.hxx> #include <svx/dialogs.hrc> #include <svtools/colrdlg.hxx> @@ -179,7 +179,7 @@ void PaletteManager::SetBtnUpdater(svx::ToolboxButtonColorUpdater* pBtnUpdater) mpBtnUpdater = pBtnUpdater; } -void PaletteManager::PopupColorPicker() +void PaletteManager::PopupColorPicker(const OUString aCommand) { SvColorDialog aColorDlg( 0 ); aColorDlg.SetColor ( mLastColor ); @@ -188,6 +188,36 @@ void PaletteManager::PopupColorPicker() { mpBtnUpdater->Update( aColorDlg.GetColor() ); mLastColor = aColorDlg.GetColor(); + DispatchColorCommand(aCommand, mLastColor); + } +} + +void PaletteManager::DispatchColorCommand(const OUString aCommand, const Color aColor) +{ + using namespace css::uno; + using namespace css::frame; + using namespace css::beans; + using namespace css::util; + + Reference<XComponentContext> xContext(comphelper::getProcessComponentContext()); + Reference<XDesktop2> xDesktop = Desktop::create(xContext); + Reference<XDispatchProvider> xDispatchProvider(xDesktop->getCurrentFrame(), UNO_QUERY ); + if (xDispatchProvider.is()) + { + INetURLObject aObj( aCommand ); + + Sequence<PropertyValue> aArgs(1); + aArgs[0].Name = aObj.GetURLPath(); + aArgs[0].Value = makeAny(sal_Int32(aColor.GetColor())); + + URL aTargetURL; + aTargetURL.Complete = aCommand; + Reference<XURLTransformer> xURLTransformer(URLTransformer::create(comphelper::getProcessComponentContext())); + xURLTransformer->parseStrict(aTargetURL); + + Reference<XDispatch> xDispatch = xDispatchProvider->queryDispatch(aTargetURL, OUString(), 0); + if (xDispatch.is()) + xDispatch->dispatch(aTargetURL, aArgs); } } diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx index 0574948..4274ad1 100644 --- a/svx/source/tbxctrls/tbcontrl.cxx +++ b/svx/source/tbxctrls/tbcontrl.cxx @@ -1118,7 +1118,6 @@ IMPL_LINK_NOARG(SvxColorWindow_Impl, SelectHdl) else aColor = mpColorSet->GetItemColor( nItemId ); - SvxColorItem aColorItem( aColor, theSlotId ); /* #i33380# DR 2004-09-03 Moved the following line above the Dispatch() calls. This instance may be deleted in the meantime (i.e. when a dialog is opened while in Dispatch()), accessing members will crash in this case. */ @@ -1127,20 +1126,10 @@ IMPL_LINK_NOARG(SvxColorWindow_Impl, SelectHdl) if ( IsInPopupMode() ) EndPopupMode(); - INetURLObject aObj( maCommand ); - - Any a; - Sequence< PropertyValue > aArgs( 1 ); - aArgs[0].Name = aObj.GetURLPath(); - aColorItem.QueryValue( a ); - aArgs[0].Value = a; - SfxToolBoxControl::Dispatch( Reference< XDispatchProvider >( GetFrame()->getController(), UNO_QUERY ), - maCommand, - aArgs ); - if ( maSelectedLink.IsSet() ) maSelectedLink.Call(&aColor); + PaletteManager::DispatchColorCommand(maCommand, aColor); return 0; } @@ -1154,7 +1143,9 @@ IMPL_LINK_NOARG(SvxColorWindow_Impl, SelectPaletteHdl) IMPL_LINK_NOARG(SvxColorWindow_Impl, OpenPickerClickHdl) { - mrPaletteManager.PopupColorPicker(); + if ( IsInPopupMode() ) + EndPopupMode(); + mrPaletteManager.PopupColorPicker(maCommand); return 0; } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits