[Libreoffice-commits] core.git: Branch 'distro/suse/suse-4.0' - 2 commits - sc/sdi sc/source sfx2/inc sfx2/sdi sfx2/source sw/sdi sw/source
Jan Holesovsky
kendy at suse.cz
Tue Apr 30 03:55:23 PDT 2013
sc/sdi/scalc.sdi | 3 ++
sc/source/ui/app/scdll.cxx | 2 +
sfx2/inc/sfx2/tbxctrl.hxx | 30 ++++++++++----------
sfx2/sdi/sfx.sdi | 3 ++
sfx2/source/appl/appreg.cxx | 1
sfx2/source/toolbox/tbxitem.cxx | 58 ++++++++++++++++++++++++++++++++++++++++
sw/sdi/swriter.sdi | 3 ++
sw/source/ui/app/swmodule.cxx | 2 +
8 files changed, 87 insertions(+), 15 deletions(-)
New commits:
commit 328623a456c28c671c0e1ce5e833afbf7bbad498
Author: Jan Holesovsky <kendy at suse.cz>
Date: Tue Apr 30 10:31:00 2013 +0200
bnc#816516: Implement easy access to the recent documents.
This adds a dropdown to the 'Open' toolbar tool.
Change-Id: I5b4aa99476e721c1479152b46bbc79cc0b095318
diff --git a/sc/sdi/scalc.sdi b/sc/sdi/scalc.sdi
index 308eeda..a3d4079 100644
--- a/sc/sdi/scalc.sdi
+++ b/sc/sdi/scalc.sdi
@@ -8229,6 +8229,9 @@ SfxVoidItem OpenFromCalc SID_OPEN_CALC
RecordPerSet;
Synchron;
+ /* status: */
+ SlotType = SfxStringItem
+
/* config: */
AccelConfig = TRUE,
MenuConfig = TRUE,
diff --git a/sc/source/ui/app/scdll.cxx b/sc/source/ui/app/scdll.cxx
index 7b35091..2b5389d 100644
--- a/sc/source/ui/app/scdll.cxx
+++ b/sc/source/ui/app/scdll.cxx
@@ -167,6 +167,8 @@ void ScDLL::Init()
ScMediaShell ::RegisterInterface(pMod);
ScPageBreakShell ::RegisterInterface(pMod);
+ SfxRecentFilesToolBoxControl::RegisterControl(SID_OPEN_CALC, pMod);
+
// eigene Controller
ScTbxInsertCtrl ::RegisterControl(SID_TBXCTL_INSERT, pMod);
ScTbxInsertCtrl ::RegisterControl(SID_TBXCTL_INSCELLS, pMod);
diff --git a/sfx2/inc/sfx2/tbxctrl.hxx b/sfx2/inc/sfx2/tbxctrl.hxx
index eee64c2..728cee9 100644
--- a/sfx2/inc/sfx2/tbxctrl.hxx
+++ b/sfx2/inc/sfx2/tbxctrl.hxx
@@ -163,7 +163,7 @@ public:
#define SFX_DECL_TOOLBOX_CONTROL() \
static SfxToolBoxControl* CreateImpl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox &rTbx ); \
- static void RegisterControl(sal_uInt16 nSlotId = 0, SfxModule *pMod=NULL)
+ static void SFX2_DLLPUBLIC RegisterControl(sal_uInt16 nSlotId = 0, SfxModule *pMod=NULL)
/* For special ToolBox controls, such as a font selection box or toolbox
tear-off floating windows, an appropriate Item-Subclass of SfxTooBoxControl
@@ -352,6 +352,23 @@ private:
sal_Bool m_bShowMenuImages;
};
+/** Toolbox that implements recent files menu for the Open file toolbar button.
+
+To use that, the appropriate Sfx*Item (like Open, OpenFromCalc, or
+OpenFromWriter) has to have SlotType = SfxStringItem, and the appropriate
+module initialization has to call RegisterControl().
+*/
+class SfxRecentFilesToolBoxControl : public SfxToolBoxControl
+{
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+ SfxRecentFilesToolBoxControl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rBox );
+ virtual ~SfxRecentFilesToolBoxControl();
+
+protected:
+ virtual SfxPopupWindow* CreatePopupWindow();
+};
+
class SfxReloadToolBoxControl_Impl : public SfxToolBoxControl
{
protected:
diff --git a/sfx2/sdi/sfx.sdi b/sfx2/sdi/sfx.sdi
index 607f206..10ebaab 100644
--- a/sfx2/sdi/sfx.sdi
+++ b/sfx2/sdi/sfx.sdi
@@ -4385,6 +4385,9 @@ SfxObjectItem Open SID_OPENDOC
RecordPerSet;
Asynchron;
+ /* status: */
+ SlotType = SfxStringItem
+
/* config: */
AccelConfig = TRUE,
MenuConfig = TRUE,
diff --git a/sfx2/source/appl/appreg.cxx b/sfx2/source/appl/appreg.cxx
index 0c54aa8..f3e7365 100644
--- a/sfx2/source/appl/appreg.cxx
+++ b/sfx2/source/appl/appreg.cxx
@@ -64,6 +64,7 @@ void SfxApplication::Registrations_Impl()
SfxURLToolBoxControl_Impl::RegisterControl(SID_OPENURL);
SfxAppToolBoxControl_Impl::RegisterControl( SID_NEWDOCDIRECT );
SfxAppToolBoxControl_Impl::RegisterControl( SID_AUTOPILOTMENU );
+ SfxRecentFilesToolBoxControl::RegisterControl( SID_OPENDOC );
};
//--------------------------------------------------------------------
diff --git a/sfx2/source/toolbox/tbxitem.cxx b/sfx2/source/toolbox/tbxitem.cxx
index d67b789..a16cc27 100644
--- a/sfx2/source/toolbox/tbxitem.cxx
+++ b/sfx2/source/toolbox/tbxitem.cxx
@@ -25,7 +25,9 @@
#include <string> // prevent conflict with STL includes
#include <com/sun/star/uno/Reference.h>
#include <com/sun/star/frame/XFrame.hpp>
+#include <com/sun/star/awt/XPopupMenu.hpp>
#include <com/sun/star/awt/XWindow.hpp>
+#include <com/sun/star/awt/XWindowPeer.hpp>
#include <com/sun/star/util/URL.hpp>
#include <com/sun/star/util/URLTransformer.hpp>
#include <com/sun/star/util/XURLTransformer.hpp>
@@ -37,6 +39,7 @@
#include <com/sun/star/beans/PropertyValue.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/frame/XLayoutManager.hpp>
+#include <com/sun/star/frame/XPopupMenuController.hpp>
#include <com/sun/star/frame/status/ItemStatus.hpp>
#include <com/sun/star/frame/status/ItemState.hpp>
#include <com/sun/star/ui/XUIElementFactory.hpp>
@@ -90,6 +93,7 @@
#include "virtmenu.hxx"
#include "sfx2/imagemgr.hxx"
+using namespace ::com::sun::star;
using namespace ::com::sun::star::beans;
using namespace ::com::sun::star::frame;
using namespace ::com::sun::star::frame::status;
@@ -104,6 +108,7 @@ using namespace ::com::sun::star::ui;
SFX_IMPL_TOOLBOX_CONTROL_ARG(SfxToolBoxControl, SfxStringItem, sal_True);
SFX_IMPL_TOOLBOX_CONTROL(SfxAppToolBoxControl_Impl, SfxStringItem);
+SFX_IMPL_TOOLBOX_CONTROL(SfxRecentFilesToolBoxControl, SfxStringItem);
static Window* GetTopMostParentSystemWindow( Window* pWindow )
{
@@ -1757,4 +1762,57 @@ void SfxAppToolBoxControl_Impl::Click( )
{
}
+//--------------------------------------------------------------------
+
+SfxRecentFilesToolBoxControl::SfxRecentFilesToolBoxControl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rBox )
+ : SfxToolBoxControl( nSlotId, nId, rBox )
+{
+ rBox.SetItemBits( nId, rBox.GetItemBits( nId ) | TIB_DROPDOWN);
+}
+
+SfxRecentFilesToolBoxControl::~SfxRecentFilesToolBoxControl()
+{
+}
+
+SfxPopupWindow* SfxRecentFilesToolBoxControl::CreatePopupWindow()
+{
+ ToolBox& rBox = GetToolBox();
+ sal_uInt16 nItemId = GetId();
+ ::Rectangle aRect( rBox.GetItemRect( nItemId ) );
+
+ Sequence< Any > aArgs( 2 );
+ PropertyValue aPropValue;
+
+ aPropValue.Name = "CommandURL";
+ aPropValue.Value <<= rtl::OUString( ".uno:RecentFileList" );
+ aArgs[0] <<= aPropValue;
+
+ aPropValue.Name = "Frame";
+ aPropValue.Value <<= m_xFrame;
+ aArgs[1] <<= aPropValue;
+
+ uno::Reference< uno::XComponentContext > xContext( comphelper::getProcessComponentContext() );
+
+ uno::Reference< frame::XPopupMenuController > xPopupController( xContext->getServiceManager()->createInstanceWithArgumentsAndContext(
+ "com.sun.star.comp.framework.RecentFilesMenuController", aArgs, xContext ), UNO_QUERY );
+
+ uno::Reference< awt::XPopupMenu > xPopupMenu( xContext->getServiceManager()->createInstanceWithContext(
+ "com.sun.star.awt.PopupMenu", xContext ), uno::UNO_QUERY );
+
+ if ( xPopupController.is() && xPopupMenu.is() )
+ {
+ xPopupController->setPopupMenu( xPopupMenu );
+
+ rBox.SetItemDown( nItemId, sal_True );
+ Reference< awt::XWindowPeer > xPeer( getParent(), uno::UNO_QUERY );
+
+ if ( xPeer.is() )
+ xPopupMenu->execute( xPeer, VCLUnoHelper::ConvertToAWTRect( aRect ), 0 );
+
+ rBox.SetItemDown( nItemId, sal_False );
+ }
+
+ return 0;
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/sdi/swriter.sdi b/sw/sdi/swriter.sdi
index 092a151..1579be1 100644
--- a/sw/sdi/swriter.sdi
+++ b/sw/sdi/swriter.sdi
@@ -10404,6 +10404,9 @@ SfxVoidItem OpenFromWriter FN_OPEN_FILE
RecordPerSet;
Synchron;
+ /* status: */
+ SlotType = SfxStringItem
+
/* config: */
AccelConfig = TRUE,
MenuConfig = TRUE,
diff --git a/sw/source/ui/app/swmodule.cxx b/sw/source/ui/app/swmodule.cxx
index 3c61ac7..6b1f9f7 100644
--- a/sw/source/ui/app/swmodule.cxx
+++ b/sw/source/ui/app/swmodule.cxx
@@ -308,6 +308,8 @@ void SwDLL::RegisterInterfaces()
void SwDLL::RegisterControls()
{
SwModule* pMod = SW_MOD();
+
+ SfxRecentFilesToolBoxControl::RegisterControl( FN_OPEN_FILE, pMod );
SvxTbxCtlDraw::RegisterControl(SID_INSERT_DRAW, pMod );
SvxTbxCtlAlign::RegisterControl(SID_OBJECT_ALIGN, pMod );
SwTbxAnchor::RegisterControl(FN_TOOL_ANCHOR, pMod );
commit 90992ea460db039fc55bfc4f9bef1b6de43729e3
Author: Jan Holesovsky <kendy at suse.cz>
Date: Mon Apr 29 13:03:49 2013 +0200
Kill unused SfxHistoryToolBoxControl_Impl.
Change-Id: I03655bb502d6480d8f7f3f1adef17d8f635b8ed9
diff --git a/sfx2/inc/sfx2/tbxctrl.hxx b/sfx2/inc/sfx2/tbxctrl.hxx
index b0c3599..eee64c2 100644
--- a/sfx2/inc/sfx2/tbxctrl.hxx
+++ b/sfx2/inc/sfx2/tbxctrl.hxx
@@ -348,25 +348,8 @@ protected:
private:
String aLastURL;
PopupMenu* pMenu;
- sal_uIntPtr m_nSymbolsStyle;
- sal_Bool m_bShowMenuImages;
-};
-
-class SfxHistoryToolBoxControl_Impl : public SfxToolBoxControl
-{
- Timer aTimer;
-
-private:
- DECL_LINK( Timeout, Timer * );
-
-protected:
- virtual void Click( );
- using SfxToolBoxControl::Select;
- virtual void Select( sal_Bool );
-
-public:
- SFX_DECL_TOOLBOX_CONTROL();
- SfxHistoryToolBoxControl_Impl( sal_uInt16 nId, ToolBox& rBox );
+ sal_uIntPtr m_nSymbolsStyle;
+ sal_Bool m_bShowMenuImages;
};
class SfxReloadToolBoxControl_Impl : public SfxToolBoxControl
More information about the Libreoffice-commits
mailing list