diff options
author | Caolán McNamara <caolanm@redhat.com> | 2010-11-25 09:40:08 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2010-11-25 09:40:08 +0000 |
commit | ddfe78d7a7b6c49497c9dc6dbf05adf07da47bff (patch) | |
tree | df412eb7600f44c61834b992102e87b7de6645e9 | |
parent | 4b3d53ce72821ac713c2367e6eee34294e112d98 (diff) |
start quickstarter on every launch if configured to use it
-rw-r--r-- | desktop/inc/app.hxx | 1 | ||||
-rw-r--r-- | desktop/source/app/app.cxx | 25 | ||||
-rw-r--r-- | 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 <vcl/stdtext.hxx> #include <vcl/msgbox.hxx> #include <sfx2/sfx.hrc> +#include <sfx2/app.hxx> +#include <svl/itemset.hxx> +#include <svl/eitem.hxx> #include <ucbhelper/contentbroker.hxx> #include <unotools/bootstrap.hxx> #include <cppuhelper/bootstrap.hxx> @@ -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 ); |