diff options
author | Release Engineers <releng@openoffice.org> | 2009-08-06 09:32:55 +0000 |
---|---|---|
committer | Release Engineers <releng@openoffice.org> | 2009-08-06 09:32:55 +0000 |
commit | a91b7413eba043acd6168d52e33d82546a5b2cf7 (patch) | |
tree | 9ca0793c1d112f81a04a4ac57ef655fedb54a43b /desktop/source/deployment/gui/dp_gui_theextmgr.cxx | |
parent | b851d9ab1d1958df7af0471629b39ec9ea9ad4b1 (diff) |
CWS-TOOLING: integrate CWS extmgr01
2009-07-28 15:37:52 +0200 dv r274410 : #i103856# Create dialog before using it
2009-07-27 15:24:42 +0200 dv r274368 : #i103831# Made selectEntry virtual so the correct function will be used from the listbox with buttons
2009-07-27 14:17:08 +0200 dv r274366 : #i103831# Made selectEntry virtual so the correct function will be used from the listbox with buttons
2009-07-07 08:23:17 +0200 dv r273765 : #i102666# Extension check on startup after office update -> fixed repaint problem
2009-07-06 11:28:28 +0200 dv r273729 : #i102666# Extension check on startup after office update -> fixed Mac OS X issues
2009-07-02 15:01:35 +0200 dv r273654 : #i102666# Extension check on startup after office update -> set last checked to never when aborting
2009-07-01 12:18:52 +0200 dv r273564 : Removed unused variable
2009-07-01 07:25:01 +0200 dv r273542 : #i102666# Extension check on startup after office update -> better layout
2009-06-30 14:56:16 +0200 dv r273506 : #i102666# Extension check on startup after office update -> mark incompatible extensions in extension manager
2009-06-30 12:43:55 +0200 dv r273502 : CWS-TOOLING: rebase CWS extmgr01 to trunk@273468 (milestone: DEV300:m51)
2009-06-29 13:26:54 +0200 dv r273469 : Now with newline at the end
2009-06-29 11:54:07 +0200 dv r273462 : #i102666# Extension check on startup after office update -> exit button of dialog disables extensions, too
2009-06-26 16:26:02 +0200 dv r273428 : #i102666# Extension check on startup after office update -> better progress handling
2009-06-26 14:50:34 +0200 dv r273417 : fixed crash when shutting down while initial waiting
2009-06-26 14:46:40 +0200 dv r273416 : #i102666# Extension check on startup after office update
2009-06-24 07:30:57 +0200 dv r273306 : #i102666# Extension check on startup after update
2009-06-11 12:03:10 +0200 dv r272863 : #i102666# Extension check on startup after update
2009-06-11 11:59:29 +0200 dv r272862 : #i102666# Extension check on startup after update
2009-06-09 15:50:05 +0200 dv r272773 : CWS-TOOLING: rebase CWS extmgr01 to trunk@272291 (milestone: DEV300:m49)
Diffstat (limited to 'desktop/source/deployment/gui/dp_gui_theextmgr.cxx')
-rw-r--r-- | desktop/source/deployment/gui/dp_gui_theextmgr.cxx | 147 |
1 files changed, 113 insertions, 34 deletions
diff --git a/desktop/source/deployment/gui/dp_gui_theextmgr.cxx b/desktop/source/deployment/gui/dp_gui_theextmgr.cxx index 721d67c8f35b..3d994f31c395 100644 --- a/desktop/source/deployment/gui/dp_gui_theextmgr.cxx +++ b/desktop/source/deployment/gui/dp_gui_theextmgr.cxx @@ -66,7 +66,10 @@ namespace dp_gui { TheExtensionManager::TheExtensionManager( Window *pParent, const uno::Reference< uno::XComponentContext > &xContext ) : - m_xContext( xContext ) + m_xContext( xContext ), + m_pParent( pParent ), + m_pExtMgrDialog( NULL ), + m_pUpdReqDialog( NULL ) { if ( dp_misc::office_is_running() ) { @@ -76,10 +79,6 @@ TheExtensionManager::TheExtensionManager( Window *pParent, m_xDesktop->addTerminateListener( this ); } - m_pDialog = new ExtMgrDialog( pParent, this ); - - m_pExecuteCmdQueue.reset( new ExtensionCmdQueue( m_pDialog, this, xContext ) ); - m_sPackageManagers.realloc(2); m_sPackageManagers[0] = deployment::thePackageManagerFactory::get( m_xContext )->getPackageManager( OUSTR("user") ); m_sPackageManagers[1] = deployment::thePackageManagerFactory::get( m_xContext )->getPackageManager( OUSTR("shared") );; @@ -110,21 +109,43 @@ TheExtensionManager::TheExtensionManager( Window *pParent, uno::Sequence< uno::Any >( args, 1 )), uno::UNO_QUERY_THROW); try { //throws css::container::NoSuchElementException, css::lang::WrappedTargetException - OUString sURL; uno::Any value = xNameAccessRepositories->getByName( OUSTR( "WebsiteLink" ) ); - sURL = value.get< OUString > (); - m_pDialog->setGetExtensionsURL( sURL ); + m_sGetExtensionsURL = value.get< OUString > (); } catch ( uno::Exception& ) {} - - createPackageList(); } //------------------------------------------------------------------------------ TheExtensionManager::~TheExtensionManager() { - delete m_pDialog; + if ( m_pUpdReqDialog ) + delete m_pUpdReqDialog; + if ( m_pExtMgrDialog ) + delete m_pExtMgrDialog; +} + +//------------------------------------------------------------------------------ +void TheExtensionManager::createDialog( const bool bCreateUpdDlg ) +{ + const ::vos::OGuard guard( Application::GetSolarMutex() ); + + if ( bCreateUpdDlg ) + { + if ( !m_pUpdReqDialog ) + { + m_pUpdReqDialog = new UpdateRequiredDialog( NULL, this ); + m_pExecuteCmdQueue.reset( new ExtensionCmdQueue( (DialogHelper*) m_pUpdReqDialog, this, m_xContext ) ); + createPackageList(); + } + } + else if ( !m_pExtMgrDialog ) + { + m_pExtMgrDialog = new ExtMgrDialog( m_pParent, this ); + m_pExecuteCmdQueue.reset( new ExtensionCmdQueue( (DialogHelper*) m_pExtMgrDialog, this, m_xContext ) ); + m_pExtMgrDialog->setGetExtensionsURL( m_sGetExtensionsURL ); + createPackageList(); + } } //------------------------------------------------------------------------------ @@ -132,7 +153,7 @@ void TheExtensionManager::Show() { const ::vos::OGuard guard( Application::GetSolarMutex() ); - m_pDialog->Show(); + getDialog()->Show(); } //------------------------------------------------------------------------------ @@ -140,7 +161,7 @@ void TheExtensionManager::SetText( const ::rtl::OUString &rTitle ) { const ::vos::OGuard guard( Application::GetSolarMutex() ); - m_pDialog->SetText( rTitle ); + getDialog()->SetText( rTitle ); } //------------------------------------------------------------------------------ @@ -148,25 +169,69 @@ void TheExtensionManager::ToTop( USHORT nFlags ) { const ::vos::OGuard guard( Application::GetSolarMutex() ); - m_pDialog->ToTop( nFlags ); + getDialog()->ToTop( nFlags ); } //------------------------------------------------------------------------------ bool TheExtensionManager::Close() { - return m_pDialog->Close(); + if ( m_pExtMgrDialog ) + return m_pExtMgrDialog->Close(); + else if ( m_pUpdReqDialog ) + return m_pUpdReqDialog->Close(); + else + return true; +} + +//------------------------------------------------------------------------------ +sal_Int16 TheExtensionManager::execute() +{ + sal_Int16 nRet = 0; + + if ( m_pUpdReqDialog ) + { + nRet = m_pUpdReqDialog->Execute(); + delete m_pUpdReqDialog; + m_pUpdReqDialog = NULL; + } + + return nRet; } //------------------------------------------------------------------------------ bool TheExtensionManager::isVisible() { - return m_pDialog->IsVisible(); + return getDialog()->IsVisible(); } //------------------------------------------------------------------------------ bool TheExtensionManager::checkUpdates( bool /* bShowUpdateOnly */, bool /*bParentVisible*/ ) { - m_pExecuteCmdQueue->checkForUpdates( m_sPackageManagers ); + std::vector< TUpdateListEntry > vEntries; + + for ( sal_Int32 i = 0; i < m_sPackageManagers.getLength(); ++i ) + { + uno::Sequence< uno::Reference< deployment::XPackage > > xPackages; + try { + xPackages = m_sPackageManagers[i]->getDeployedPackages( uno::Reference< task::XAbortChannel >(), + uno::Reference< ucb::XCommandEnvironment >() ); + for ( sal_Int32 k = 0; k < xPackages.getLength(); ++k ) + { + TUpdateListEntry pEntry( new UpdateListEntry( xPackages[k], m_sPackageManagers[i] ) ); + vEntries.push_back( pEntry ); + } + } catch ( deployment::DeploymentException & ) { + continue; + } catch ( ucb::CommandFailedException & ) { + continue; + } catch ( ucb::CommandAbortedException & ) { + return true; + } catch ( lang::IllegalArgumentException & e ) { + throw uno::RuntimeException( e.Message, e.Context ); + } + } + + m_pExecuteCmdQueue->checkForUpdates( vEntries ); return true; } @@ -189,10 +254,9 @@ bool TheExtensionManager::removePackage( const uno::Reference< deployment::XPack } //------------------------------------------------------------------------------ -bool TheExtensionManager::updatePackage( const uno::Reference< deployment::XPackageManager > &xPackageManager, - const uno::Reference< deployment::XPackage > &xPackage ) +bool TheExtensionManager::updatePackages( const std::vector< TUpdateListEntry > &vList ) { - m_pExecuteCmdQueue->checkForUpdate( xPackageManager, xPackage ); + m_pExecuteCmdQueue->checkForUpdates( vList ); return true; } @@ -203,6 +267,8 @@ bool TheExtensionManager::installPackage( const OUString &rPackageURL, bool bWar if ( rPackageURL.getLength() == 0 ) return false; + createDialog( false ); + uno::Reference< deployment::XPackageManager > xUserPkgMgr = getUserPkgMgr(); uno::Reference< deployment::XPackageManager > xSharedPkgMgr = getSharedPkgMgr(); @@ -210,7 +276,7 @@ bool TheExtensionManager::installPackage( const OUString &rPackageURL, bool bWar bool bInstallForAll = false; if ( !bWarnUser && ! xSharedPkgMgr->isReadOnly() ) - bInstall = m_pDialog->installForAllUsers( bInstallForAll ); + bInstall = getDialogHelper()->installForAllUsers( bInstallForAll ); if ( !bInstall ) return false; @@ -239,8 +305,10 @@ void TheExtensionManager::terminateDialog() if ( ! dp_misc::office_is_running() ) { const ::vos::OGuard guard( Application::GetSolarMutex() ); - delete m_pDialog; - m_pDialog = NULL; + delete m_pExtMgrDialog; + m_pExtMgrDialog = NULL; + delete m_pUpdReqDialog; + m_pUpdReqDialog = NULL; Application::Quit(); } } @@ -252,7 +320,7 @@ bool TheExtensionManager::createPackageList( const uno::Reference< deployment::X try { packages = xPackageManager->getDeployedPackages( uno::Reference< task::XAbortChannel >(), - uno::Reference< ucb::XCommandEnvironment >() ); + uno::Reference< ucb::XCommandEnvironment >() ); } catch ( deployment::DeploymentException & ) { //handleGeneralError(e.Cause); return true; @@ -267,7 +335,7 @@ bool TheExtensionManager::createPackageList( const uno::Reference< deployment::X for ( sal_Int32 j = 0; j < packages.getLength(); ++j ) { - m_pDialog->addPackageToList( packages[j], xPackageManager ); + getDialogHelper()->addPackageToList( packages[j], xPackageManager ); } return true; @@ -381,8 +449,10 @@ void TheExtensionManager::disposing( lang::EventObject const & rEvt ) if ( dp_misc::office_is_running() ) { const ::vos::OGuard guard( Application::GetSolarMutex() ); - delete m_pDialog; - m_pDialog = NULL; + delete m_pExtMgrDialog; + m_pExtMgrDialog = NULL; + delete m_pUpdReqDialog; + m_pUpdReqDialog = NULL; } s_ExtMgr.clear(); } @@ -393,15 +463,22 @@ void TheExtensionManager::disposing( lang::EventObject const & rEvt ) void TheExtensionManager::queryTermination( ::lang::EventObject const & ) throw ( frame::TerminationVetoException, uno::RuntimeException ) { - if ( m_pExecuteCmdQueue->isBusy() || ( m_pDialog && m_pDialog->isBusy() ) ) + DialogHelper *pDialogHelper = getDialogHelper(); + + if ( m_pExecuteCmdQueue->isBusy() || ( pDialogHelper && pDialogHelper->isBusy() ) ) { ToTop( TOTOP_RESTOREWHENMIN ); throw frame::TerminationVetoException( OUSTR("The office cannot be closed while the Extension Manager is running"), uno::Reference<XInterface>(static_cast<frame::XTerminateListener*>(this), uno::UNO_QUERY)); } - else if ( m_pDialog ) - m_pDialog->Close(); + else + { + if ( m_pExtMgrDialog ) + m_pExtMgrDialog->Close(); + if ( m_pUpdReqDialog ) + m_pUpdReqDialog->Close(); + } } //------------------------------------------------------------------------------ @@ -419,9 +496,9 @@ void TheExtensionManager::modified( ::lang::EventObject const & rEvt ) uno::Reference< deployment::XPackageManager > xPackageManager( rEvt.Source, uno::UNO_QUERY ); if ( xPackageManager.is() ) { - m_pDialog->prepareChecking( xPackageManager ); + getDialogHelper()->prepareChecking( xPackageManager ); createPackageList( xPackageManager ); - m_pDialog->checkEntries(); + getDialogHelper()->checkEntries(); } } @@ -433,7 +510,8 @@ void TheExtensionManager::modified( ::lang::EventObject const & rEvt ) if ( s_ExtMgr.is() ) { OSL_DOUBLE_CHECKED_LOCKING_MEMORY_BARRIER(); - s_ExtMgr->installPackage( extensionURL, true ); + if ( extensionURL.getLength() ) + s_ExtMgr->installPackage( extensionURL, true ); return s_ExtMgr; } @@ -450,7 +528,8 @@ void TheExtensionManager::modified( ::lang::EventObject const & rEvt ) s_ExtMgr = that; } - s_ExtMgr->installPackage( extensionURL, true ); + if ( extensionURL.getLength() ) + s_ExtMgr->installPackage( extensionURL, true ); return s_ExtMgr; } |