start quickstarter on every launch if configured to use it

This commit is contained in:
Caolán McNamara 2010-11-25 09:40:08 +00:00
parent 4b3d53ce72
commit ddfe78d7a7
3 changed files with 25 additions and 4 deletions

View file

@ -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 );

View file

@ -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 );

View file

@ -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 );