From ddfe78d7a7b6c49497c9dc6dbf05adf07da47bff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= Date: Thu, 25 Nov 2010 09:40:08 +0000 Subject: [PATCH] start quickstarter on every launch if configured to use it --- desktop/inc/app.hxx | 1 + desktop/source/app/app.cxx | 25 ++++++++++++++++++++++--- desktop/source/app/appfirststart.cxx | 3 ++- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/desktop/inc/app.hxx b/desktop/inc/app.hxx index a10bb11266ef..8ef83095cf1e 100644 --- a/desktop/inc/app.hxx +++ b/desktop/inc/app.hxx @@ -155,6 +155,7 @@ class Desktop : public Application sal_Bool InitializeInstallation( const rtl::OUString& rAppFilename ); sal_Bool InitializeConfiguration(); void FlushConfiguration(); + static sal_Bool shouldLaunchQuickstart(); sal_Bool InitializeQuickstartMode( com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory >& rSMgr ); void HandleBootstrapPathErrors( ::utl::Bootstrap::Status, const ::rtl::OUString& aMsg ); diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx index 3dc534ab7976..7428422a4d65 100644 --- a/desktop/source/app/app.cxx +++ b/desktop/source/app/app.cxx @@ -140,6 +140,9 @@ #include #include #include +#include +#include +#include #include #include #include @@ -2071,6 +2074,22 @@ void Desktop::FlushConfiguration() } } +sal_Bool Desktop::shouldLaunchQuickstart() +{ + sal_Bool bQuickstart = GetCommandLineArgs()->IsQuickstart(); + if (!bQuickstart) + { + const SfxPoolItem* pItem=0; + SfxItemSet aQLSet(SFX_APP()->GetPool(), SID_ATTR_QUICKLAUNCHER, SID_ATTR_QUICKLAUNCHER); + SFX_APP()->GetOptions(aQLSet); + SfxItemState eState = aQLSet.GetItemState(SID_ATTR_QUICKLAUNCHER, FALSE, &pItem); + if (SFX_ITEM_SET == eState) + bQuickstart = ((SfxBoolItem*)pItem)->GetValue(); + } + return bQuickstart; +} + + sal_Bool Desktop::InitializeQuickstartMode( Reference< XMultiServiceFactory >& rSMgr ) { try @@ -2080,9 +2099,7 @@ sal_Bool Desktop::InitializeQuickstartMode( Reference< XMultiServiceFactory >& r // this will only be activated if -quickstart was specified on cmdline RTL_LOGFILE_CONTEXT( aLog, "desktop (cd100003) createInstance com.sun.star.office.Quickstart" ); - sal_Bool bQuickstart = GetCommandLineArgs()->IsQuickstart(); - Sequence< Any > aSeq( 1 ); - aSeq[0] <<= bQuickstart; + sal_Bool bQuickstart = shouldLaunchQuickstart(); // Try to instanciate quickstart service. This service is not mandatory, so // do nothing if service is not available @@ -2095,6 +2112,8 @@ sal_Bool Desktop::InitializeQuickstartMode( Reference< XMultiServiceFactory >& r if ( bQuickstart ) #endif { + Sequence< Any > aSeq( 1 ); + aSeq[0] <<= bQuickstart; Reference < XComponent > xQuickstart( rSMgr->createInstanceWithArguments( DEFINE_CONST_UNICODE( "com.sun.star.office.Quickstart" ), aSeq ), UNO_QUERY ); diff --git a/desktop/source/app/appfirststart.cxx b/desktop/source/app/appfirststart.cxx index 558e32392f7f..5517405e403f 100644 --- a/desktop/source/app/appfirststart.cxx +++ b/desktop/source/app/appfirststart.cxx @@ -286,7 +286,8 @@ void Desktop::DoRestartActionsIfNecessary( sal_Bool bQuickStart ) Reference< util::XChangesBatch >( xPSet, UNO_QUERY_THROW )->commitChanges(); Sequence< Any > aSeq( 1 ); - aSeq[0] <<= sal_True; + sal_Bool bQuickstart = shouldLaunchQuickstart(); + aSeq[0] <<= bQuickstart; Reference < XInitialization > xQuickstart( ::comphelper::getProcessServiceFactory()->createInstance( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.office.Quickstart" ) ) ),UNO_QUERY_THROW );