From 2e626373db2412ac22e8c5c27a60d11cd29e875b Mon Sep 17 00:00:00 2001 From: Michael Stahl Date: Sat, 28 Jan 2012 20:52:45 +0100 Subject: replace obsolete "master" branch with README that points at new repo --- extensions/source/update/check/updatehdl.cxx | 1423 -------------------------- 1 file changed, 1423 deletions(-) delete mode 100644 extensions/source/update/check/updatehdl.cxx (limited to 'extensions/source/update/check/updatehdl.cxx') diff --git a/extensions/source/update/check/updatehdl.cxx b/extensions/source/update/check/updatehdl.cxx deleted file mode 100644 index 36958e09c..000000000 --- a/extensions/source/update/check/updatehdl.cxx +++ /dev/null @@ -1,1423 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_extensions.hxx" - -#include "updatehdl.hxx" -#include "update.hrc" - -#include "osl/diagnose.h" -#include "osl/thread.hxx" -#include "osl/file.hxx" -#include "rtl/ustring.hxx" -#include "rtl/bootstrap.hxx" - -#include "com/sun/star/uno/Sequence.h" - -#include - -#include "com/sun/star/awt/ActionEvent.hpp" -#include "com/sun/star/awt/PushButtonType.hpp" -#include "com/sun/star/awt/VclWindowPeerAttribute.hpp" -#include "com/sun/star/awt/WindowAttribute.hpp" -#include "com/sun/star/awt/XButton.hpp" -#include "com/sun/star/awt/XControl.hpp" -#include "com/sun/star/awt/XControlContainer.hpp" -#include "com/sun/star/awt/XMessageBox.hpp" -#include "com/sun/star/awt/XAnimation.hpp" -#include "com/sun/star/awt/XTopWindow.hpp" -#include "com/sun/star/awt/XVclWindowPeer.hpp" -#include "com/sun/star/awt/XVclContainer.hpp" -#include "com/sun/star/awt/XWindow.hpp" -#include "com/sun/star/awt/XWindow2.hpp" - -#include -#include "com/sun/star/beans/XPropertySet.hpp" - -#include "com/sun/star/container/XNameContainer.hpp" - -#include "com/sun/star/frame/XDesktop.hpp" - -#include "com/sun/star/lang/XMultiServiceFactory.hpp" -#include "com/sun/star/task/InteractionRequestStringResolver.hpp" - -#include - -#include "updatehdl.hrc" -#include - -#define UNISTRING(s) rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(s)) - -#define COMMAND_CLOSE UNISTRING("close") - -#define CTRL_THROBBER UNISTRING("throbber") -#define CTRL_PROGRESS UNISTRING("progress") - -#define TEXT_STATUS UNISTRING("text_status") -#define TEXT_PERCENT UNISTRING("text_percent") -#define TEXT_DESCRIPTION UNISTRING("text_description") - -#define FIXED_LINE_MODEL UNISTRING("com.sun.star.awt.UnoControlFixedLineModel") -#define FIXED_TEXT_MODEL UNISTRING("com.sun.star.awt.UnoControlFixedTextModel") -#define EDIT_FIELD_MODEL UNISTRING("com.sun.star.awt.UnoControlEditModel") -#define BUTTON_MODEL UNISTRING("com.sun.star.awt.UnoControlButtonModel") -#define GROUP_BOX_MODEL UNISTRING("com.sun.star.awt.UnoControlGroupBoxModel") - -using namespace com::sun::star; - -//-------------------------------------------------------------------- -UpdateHandler::UpdateHandler( const uno::Reference< uno::XComponentContext > & rxContext, - const rtl::Reference< IActionListener > & rxActionListener ) : - mxContext( rxContext ), - mxActionListener( rxActionListener ), - meCurState( UPDATESTATES_COUNT ), - meLastState( UPDATESTATES_COUNT ), - mnPercent( 0 ), - mnLastCtrlState( -1 ), - mbDownloadBtnHasDots( false ), - mbVisible( false ), - mbStringsLoaded( false ), - mbMinimized( false ), - mbListenerAdded(false), - mbShowsMessageBox(false) -{ -} - -//-------------------------------------------------------------------- -UpdateHandler::~UpdateHandler() -{ - mxContext = NULL; - mxUpdDlg = NULL; - mxInteractionHdl = NULL; - mxActionListener = NULL; -} - -//-------------------------------------------------------------------- -void UpdateHandler::enableControls( short nCtrlState ) -{ - osl::MutexGuard aGuard( maMutex ); - - if ( nCtrlState == mnLastCtrlState ) - return; - - bool bEnableControl; - - short nCurStateVal = nCtrlState; - short nOldStateVal = mnLastCtrlState; - - // the help button should always be the last button in the - // enum list und must never be disabled - for ( int i=0; i> i); - nOldStateVal = (short)(mnLastCtrlState >> i); - if ( ( nCurStateVal & 0x01 ) != ( nOldStateVal & 0x01 ) ) - { - bEnableControl = ( ( nCurStateVal & 0x01 ) == 0x01 ); - setControlProperty( msButtonIDs[i], UNISTRING("Enabled"), uno::Any( bEnableControl ) ); - } - } - - mnLastCtrlState = nCtrlState; -} - -//-------------------------------------------------------------------- -void UpdateHandler::setDownloadBtnLabel( bool bAppendDots ) -{ - osl::MutexGuard aGuard( maMutex ); - - if ( mbDownloadBtnHasDots != bAppendDots ) - { - rtl::OUString aLabel( msDownload ); - - if ( bAppendDots ) - aLabel += UNISTRING( "..." ); - - setControlProperty( msButtonIDs[DOWNLOAD_BUTTON], UNISTRING("Label"), uno::Any( aLabel ) ); - setControlProperty( msButtonIDs[DOWNLOAD_BUTTON], UNISTRING("HelpURL"), uno::Any( UNISTRING( INET_HID_SCHEME ) + rtl::OUString::createFromAscii( HID_CHECK_FOR_UPD_DOWNLOAD2 ) ) ); - - mbDownloadBtnHasDots = bAppendDots; - } -} - -//-------------------------------------------------------------------- -void UpdateHandler::setState( UpdateState eState ) -{ - osl::MutexGuard aGuard( maMutex ); - - meCurState = eState; - - if ( mxUpdDlg.is() && mbVisible ) - updateState( meCurState ); -} - -//-------------------------------------------------------------------- -bool UpdateHandler::isVisible() const -{ - if ( !mxUpdDlg.is() ) return false; - - uno::Reference< awt::XWindow2 > xWindow( mxUpdDlg, uno::UNO_QUERY ); - - if ( xWindow.is() ) - return xWindow->isVisible(); - else - return false; -} - -//-------------------------------------------------------------------- -void UpdateHandler::setVisible( bool bVisible ) -{ - osl::MutexGuard aGuard( maMutex ); - - mbVisible = bVisible; - - if ( bVisible ) - { - if ( !mxUpdDlg.is() ) - createDialog(); - - // this should never happen, but if it happens we better return here - if ( !mxUpdDlg.is() ) - return; - - updateState( meCurState ); - - uno::Reference< awt::XWindow > xWindow( mxUpdDlg, uno::UNO_QUERY ); - - if ( xWindow.is() ) - xWindow->setVisible( bVisible ); - - uno::Reference< awt::XTopWindow > xTopWindow( mxUpdDlg, uno::UNO_QUERY ); - if ( xTopWindow.is() ) - { - xTopWindow->toFront(); - if ( !mbListenerAdded ) - { - xTopWindow->addTopWindowListener( this ); - mbListenerAdded = true; - } - } - } - else if ( mxUpdDlg.is() ) - { - uno::Reference< awt::XWindow > xWindow( mxUpdDlg, uno::UNO_QUERY ); - - if ( xWindow.is() ) - xWindow->setVisible( bVisible ); - } -} - -//-------------------------------------------------------------------- -void UpdateHandler::setProgress( sal_Int32 nPercent ) -{ - if ( nPercent > 100 ) - nPercent = 100; - else if ( nPercent < 0 ) - nPercent = 0; - - if ( nPercent != mnPercent ) - { - osl::MutexGuard aGuard( maMutex ); - - mnPercent = nPercent; - setControlProperty( CTRL_PROGRESS, UNISTRING("ProgressValue"), uno::Any( nPercent ) ); - setControlProperty( TEXT_PERCENT, UNISTRING("Text"), uno::Any( substVariables(msPercent) ) ); - } -} - -//-------------------------------------------------------------------- -void UpdateHandler::setErrorMessage( const rtl::OUString& rErrorMsg ) -{ - setControlProperty( TEXT_DESCRIPTION, UNISTRING("Text"), uno::Any( rErrorMsg ) ); -} - -//-------------------------------------------------------------------- -void UpdateHandler::setDownloadFile( const rtl::OUString& rFilePath ) -{ - sal_Int32 nLast = rFilePath.lastIndexOf( '/' ); - if ( nLast != -1 ) - { - msDownloadFile = rFilePath.copy( nLast+1 ); - const rtl::OUString aDownloadURL = rFilePath.copy( 0, nLast ); - osl::FileBase::getSystemPathFromFileURL( aDownloadURL, msDownloadPath ); - } -} - -//-------------------------------------------------------------------- -rtl::OUString UpdateHandler::getBubbleText( UpdateState eState ) -{ - osl::MutexGuard aGuard( maMutex ); - - rtl::OUString sText; - sal_Int32 nIndex = (sal_Int32) eState; - - loadStrings(); - - if ( ( UPDATESTATE_UPDATE_AVAIL <= nIndex ) && ( nIndex < UPDATESTATES_COUNT ) ) - sText = substVariables( msBubbleTexts[ nIndex - UPDATESTATE_UPDATE_AVAIL ] ); - - return sText; -} - -//-------------------------------------------------------------------- -rtl::OUString UpdateHandler::getBubbleTitle( UpdateState eState ) -{ - osl::MutexGuard aGuard( maMutex ); - - rtl::OUString sText; - sal_Int32 nIndex = (sal_Int32) eState; - - loadStrings(); - - if ( ( UPDATESTATE_UPDATE_AVAIL <= nIndex ) && ( nIndex < UPDATESTATES_COUNT ) ) - sText = substVariables( msBubbleTitles[ nIndex - UPDATESTATE_UPDATE_AVAIL] ); - - return sText; -} - -//-------------------------------------------------------------------- -rtl::OUString UpdateHandler::getDefaultInstErrMsg() -{ - osl::MutexGuard aGuard( maMutex ); - - loadStrings(); - - return substVariables( msInstallError ); -} - -// XActionListener -//-------------------------------------------------------------------- -void SAL_CALL UpdateHandler::disposing( const lang::EventObject& rEvt ) - throw( uno::RuntimeException ) -{ - if ( rEvt.Source == mxUpdDlg ) - mxUpdDlg.clear(); -} - -//-------------------------------------------------------------------- -void SAL_CALL UpdateHandler::actionPerformed( awt::ActionEvent const & rEvent ) - throw( uno::RuntimeException ) -{ - DialogControls eButton = BUTTON_COUNT; - for ( int i = 0; i < BUTTON_COUNT; i++ ) - { - if ( rEvent.ActionCommand.equals( msButtonIDs[i] ) ) - { - eButton = (DialogControls) i; - break; - } - } - - if ( rEvent.ActionCommand.equals( COMMAND_CLOSE ) ) - { - if ( ( mnLastCtrlState & ( 1 << CLOSE_BUTTON ) ) == ( 1 << CLOSE_BUTTON ) ) - eButton = CLOSE_BUTTON; - else - eButton = CANCEL_BUTTON; - } - - switch ( eButton ) { - case CANCEL_BUTTON: - { - bool bCancel = true; - - if ( ( meCurState == UPDATESTATE_DOWNLOADING ) || - ( meCurState == UPDATESTATE_DOWNLOAD_PAUSED ) || - ( meCurState == UPDATESTATE_ERROR_DOWNLOADING ) ) - bCancel = showWarning( msCancelMessage ); - - if ( bCancel ) - { - mxActionListener->cancel(); - setVisible( false ); - } - break; - } - case CLOSE_BUTTON: - setVisible( false ); - if ( meCurState == UPDATESTATE_ERROR_CHECKING ) - mxActionListener->closeAfterFailure(); - break; - case DOWNLOAD_BUTTON: - mxActionListener->download(); - break; - case INSTALL_BUTTON: - if ( showWarning( msInstallMessage ) ) - mxActionListener->install(); - break; - case PAUSE_BUTTON: - mxActionListener->pause(); - break; - case RESUME_BUTTON: - mxActionListener->resume(); - break; - case HELP_BUTTON: - break; - default: - OSL_FAIL( "UpdateHandler::actionPerformed: unknown command!" ); - } -} - -// XTopWindowListener -//-------------------------------------------------------------------- -void SAL_CALL UpdateHandler::windowOpened( const lang::EventObject& ) - throw( uno::RuntimeException ) -{ -} - -//-------------------------------------------------------------------- -void SAL_CALL UpdateHandler::windowClosing( const lang::EventObject& e ) - throw( uno::RuntimeException ) -{ - awt::ActionEvent aActionEvt; - aActionEvt.ActionCommand = COMMAND_CLOSE; - aActionEvt.Source = e.Source; - - actionPerformed( aActionEvt ); -} - -//-------------------------------------------------------------------- -void SAL_CALL UpdateHandler::windowClosed( const lang::EventObject& ) - throw( uno::RuntimeException ) -{ -} - -//-------------------------------------------------------------------- -void SAL_CALL UpdateHandler::windowMinimized( const lang::EventObject& ) - throw( uno::RuntimeException ) -{ - mbMinimized = true; -} - -//-------------------------------------------------------------------- -void SAL_CALL UpdateHandler::windowNormalized( const lang::EventObject& ) - throw( uno::RuntimeException ) -{ - mbMinimized = false; -} - -//-------------------------------------------------------------------- -void SAL_CALL UpdateHandler::windowActivated( const lang::EventObject& ) - throw( uno::RuntimeException ) -{ -} - -//-------------------------------------------------------------------- -void SAL_CALL UpdateHandler::windowDeactivated( const lang::EventObject& ) - throw( uno::RuntimeException ) -{ -} - -// XInteractionHandler -//------------------------------------------------------------------------------ -void SAL_CALL UpdateHandler::handle( uno::Reference< task::XInteractionRequest > const & rRequest) - throw (uno::RuntimeException) -{ - if ( !mxInteractionHdl.is() ) - { - if( !mxContext.is() ) - throw uno::RuntimeException( UNISTRING( "UpdateHandler:: empty component context" ), *this ); - - uno::Reference< lang::XMultiComponentFactory > xServiceManager(mxContext->getServiceManager()); - - if( !xServiceManager.is() ) - throw uno::RuntimeException( UNISTRING( "UpdateHandler: unable to obtain service manager from component context" ), *this ); - - mxInteractionHdl = uno::Reference ( - xServiceManager->createInstanceWithContext( - UNISTRING( "com.sun.star.task.InteractionHandler" ), - mxContext), - uno::UNO_QUERY_THROW); - if( !mxInteractionHdl.is() ) - throw uno::RuntimeException( UNISTRING( "UpdateHandler:: could not get default interaction handler" ), *this ); - } - uno::Reference< task::XInteractionRequestStringResolver > xStrResolver = - task::InteractionRequestStringResolver::create( mxContext ); - beans::Optional< ::rtl::OUString > aErrorText = xStrResolver->getStringFromInformationalRequest( rRequest ); - if ( aErrorText.IsPresent ) - { - setControlProperty( TEXT_DESCRIPTION, UNISTRING("Text"), uno::Any( aErrorText.Value ) ); - - uno::Sequence< uno::Reference< task::XInteractionContinuation > > xContinuations = rRequest->getContinuations(); - if ( xContinuations.getLength() == 1 ) - { - if ( meCurState == UPDATESTATE_CHECKING ) - setState( UPDATESTATE_ERROR_CHECKING ); - else if ( meCurState == UPDATESTATE_DOWNLOADING ) - setState( UPDATESTATE_ERROR_DOWNLOADING ); - - xContinuations[0]->select(); - } - else - mxInteractionHdl->handle( rRequest ); - } - else - mxInteractionHdl->handle( rRequest ); -} - -//------------------------------------------------------------------------------ -// XTerminateListener -//------------------------------------------------------------------------------ -void SAL_CALL UpdateHandler::queryTermination( const lang::EventObject& ) - throw ( frame::TerminationVetoException, uno::RuntimeException ) -{ - if ( mbShowsMessageBox ) - { - uno::Reference< awt::XTopWindow > xTopWindow( mxUpdDlg, uno::UNO_QUERY ); - if ( xTopWindow.is() ) - xTopWindow->toFront(); - - throw frame::TerminationVetoException( - UNISTRING("The office cannot be closed while displaying a warning!"), - uno::Reference(static_cast(this), uno::UNO_QUERY)); - } - else - setVisible( false ); -} - -//------------------------------------------------------------------------------ -void SAL_CALL UpdateHandler::notifyTermination( const lang::EventObject& ) - throw ( uno::RuntimeException ) -{ - osl::MutexGuard aGuard( maMutex ); - - if ( mxUpdDlg.is() ) - { - uno::Reference< awt::XTopWindow > xTopWindow( mxUpdDlg, uno::UNO_QUERY ); - if ( xTopWindow.is() ) - xTopWindow->removeTopWindowListener( this ); - - uno::Reference< lang::XComponent > xComponent( mxUpdDlg, uno::UNO_QUERY ); - if ( xComponent.is() ) - xComponent->dispose(); - - mxUpdDlg.clear(); - } -} - -//-------------------------------------------------------------------- -//-------------------------------------------------------------------- -//-------------------------------------------------------------------- -void UpdateHandler::updateState( UpdateState eState ) -{ - if ( meLastState == eState ) - return; - - if ( isVisible() ) - {} // ToTop(); - - rtl::OUString sText; - - switch ( eState ) - { - case UPDATESTATE_CHECKING: - showControls( (1< xBundle, - sal_Int32 nResourceId ) const -{ - rtl::OUString sString; - rtl::OUString sKey = UNISTRING( "string:" ) + rtl::OUString::valueOf( nResourceId ); - - try - { - OSL_VERIFY( xBundle->getByName( sKey ) >>= sString ); - } - catch( const uno::Exception& ) - { - OSL_FAIL( "UpdateHandler::loadString: caught an exception!" ); - sString = UNISTRING("Missing ") + sKey; - } - - return sString; -} - -rtl::OUString UpdateHandler::substVariables( const rtl::OUString &rSource ) const -{ - rtl::OUString sString( rSource ); - - searchAndReplaceAll( sString, UNISTRING( "%NEXTVERSION" ), msNextVersion ); - searchAndReplaceAll( sString, UNISTRING( "%DOWNLOAD_PATH" ), msDownloadPath ); - searchAndReplaceAll( sString, UNISTRING( "%FILE_NAME" ), msDownloadFile ); - searchAndReplaceAll( sString, UNISTRING( "%PERCENT" ), rtl::OUString::valueOf( mnPercent ) ); - - return sString; -} - -//-------------------------------------------------------------------- -void UpdateHandler::loadStrings() -{ - if ( mbStringsLoaded ) - return; - else - mbStringsLoaded = true; - - uno::Reference< resource::XResourceBundleLoader > xLoader; - try - { - uno::Any aValue( mxContext->getValueByName( - UNISTRING( "/singletons/com.sun.star.resource.OfficeResourceLoader" ) ) ); - OSL_VERIFY( aValue >>= xLoader ); - } - catch( const uno::Exception& ) - { - OSL_FAIL( "UpdateHandler::loadStrings: could not create the resource loader!" ); - } - - if ( !xLoader.is() ) return; - - uno::Reference< resource::XResourceBundle > xBundle; - - try - { - xBundle = xLoader->loadBundle_Default( UNISTRING( "upd" ) ); - } - catch( const resource::MissingResourceException& ) - { - OSL_FAIL( "UpdateHandler::loadStrings: missing the resource bundle!" ); - } - - if ( !xBundle.is() ) return; - - msChecking = loadString( xBundle, RID_UPDATE_STR_CHECKING ); - msCheckingError = loadString( xBundle, RID_UPDATE_STR_CHECKING_ERR ); - msNoUpdFound = loadString( xBundle, RID_UPDATE_STR_NO_UPD_FOUND ); - - msUpdFound = loadString( xBundle, RID_UPDATE_STR_UPD_FOUND ); - setFullVersion( msUpdFound ); - - msDlgTitle = loadString( xBundle, RID_UPDATE_STR_DLG_TITLE ); - msDownloadPause = loadString( xBundle, RID_UPDATE_STR_DOWNLOAD_PAUSE ); - msDownloadError = loadString( xBundle, RID_UPDATE_STR_DOWNLOAD_ERR ); - msDownloadWarning = loadString( xBundle, RID_UPDATE_STR_DOWNLOAD_WARN ); - msDownloadDescr = loadString( xBundle, RID_UPDATE_STR_DOWNLOAD_DESCR ); - msDownloadNotAvail = loadString( xBundle, RID_UPDATE_STR_DOWNLOAD_UNAVAIL ); - msDownloading = loadString( xBundle, RID_UPDATE_STR_DOWNLOADING ); - msReady2Install = loadString( xBundle, RID_UPDATE_STR_READY_INSTALL ); - msCancelTitle = loadString( xBundle, RID_UPDATE_STR_CANCEL_TITLE ); - msCancelMessage = loadString( xBundle, RID_UPDATE_STR_CANCEL_DOWNLOAD ); - msInstallMessage = loadString( xBundle, RID_UPDATE_STR_BEGIN_INSTALL ); - msInstallNow = loadString( xBundle, RID_UPDATE_STR_INSTALL_NOW ); - msInstallLater = loadString( xBundle, RID_UPDATE_STR_INSTALL_LATER ); - msInstallError = loadString( xBundle, RID_UPDATE_STR_INSTALL_ERROR ); - msOverwriteWarning = loadString( xBundle, RID_UPDATE_STR_OVERWRITE_WARNING ); - msPercent = loadString( xBundle, RID_UPDATE_STR_PERCENT ); - msReloadWarning = loadString( xBundle, RID_UPDATE_STR_RELOAD_WARNING ); - msReloadReload = loadString( xBundle, RID_UPDATE_STR_RELOAD_RELOAD ); - msReloadContinue = loadString( xBundle, RID_UPDATE_STR_RELOAD_CONTINUE ); - - msStatusFL = loadString( xBundle, RID_UPDATE_FT_STATUS ); - msDescription = loadString( xBundle, RID_UPDATE_FT_DESCRIPTION ); - - msClose = loadString( xBundle, RID_UPDATE_BTN_CLOSE ); - msDownload = loadString( xBundle, RID_UPDATE_BTN_DOWNLOAD ); - msInstall = loadString( xBundle, RID_UPDATE_BTN_INSTALL ); - msPauseBtn = loadString( xBundle, RID_UPDATE_BTN_PAUSE ); - msResumeBtn = loadString( xBundle, RID_UPDATE_BTN_RESUME ); - msCancelBtn = loadString( xBundle, RID_UPDATE_BTN_CANCEL ); - - // all update states before UPDATESTATE_UPDATE_AVAIL don't have a bubble - // so we can ignore them - for ( int i=0; i < (int)(UPDATESTATES_COUNT - UPDATESTATE_UPDATE_AVAIL); i++ ) - { - msBubbleTexts[ i ] = loadString( xBundle, RID_UPDATE_BUBBLE_TEXT_START + i ); - msBubbleTitles[ i ] = loadString( xBundle, RID_UPDATE_BUBBLE_T_TEXT_START + i ); - } - - for ( int i=0; i < BUTTON_COUNT; i++ ) - { - msButtonIDs[ i ] = UNISTRING("BUTTON_") + rtl::OUString::valueOf( (sal_Int32) i ); - } -} - - -//-------------------------------------------------------------------- -void UpdateHandler::startThrobber( bool bStart ) -{ - uno::Reference< awt::XControlContainer > xContainer( mxUpdDlg, uno::UNO_QUERY ); - uno::Reference< awt::XAnimation > xThrobber( xContainer->getControl( CTRL_THROBBER ), uno::UNO_QUERY ); - - if ( xThrobber.is() ) - { - if ( bStart ) - xThrobber->startAnimation(); - else - xThrobber->stopAnimation(); - } - - uno::Reference< awt::XWindow > xWindow( xContainer->getControl( CTRL_THROBBER ), uno::UNO_QUERY ); - if (xWindow.is() ) - xWindow->setVisible( bStart ); -} - -//-------------------------------------------------------------------- -void UpdateHandler::setControlProperty( const rtl::OUString &rCtrlName, - const rtl::OUString &rPropName, - const uno::Any &rPropValue ) -{ - if ( !mxUpdDlg.is() ) return; - - uno::Reference< awt::XControlContainer > xContainer( mxUpdDlg, uno::UNO_QUERY ); - uno::Reference< awt::XControl > xControl( xContainer->getControl( rCtrlName ), uno::UNO_QUERY_THROW ); - uno::Reference< awt::XControlModel > xControlModel( xControl->getModel(), uno::UNO_QUERY_THROW ); - uno::Reference< beans::XPropertySet > xPropSet( xControlModel, uno::UNO_QUERY_THROW ); - - try { - xPropSet->setPropertyValue( rPropName, rPropValue ); - } - catch( const beans::UnknownPropertyException& ) - { - OSL_FAIL( "UpdateHandler::setControlProperty: caught an exception!" ); - } -} - -//-------------------------------------------------------------------- -void UpdateHandler::showControl( const rtl::OUString &rCtrlName, bool bShow ) -{ - uno::Reference< awt::XControlContainer > xContainer( mxUpdDlg, uno::UNO_QUERY ); - - if ( !xContainer.is() ) - { - OSL_FAIL( "UpdateHandler::showControl: could not get control container!" ); - return; - } - - uno::Reference< awt::XWindow > xWindow( xContainer->getControl( rCtrlName ), uno::UNO_QUERY ); - if ( xWindow.is() ) - xWindow->setVisible( bShow ); -} - -//-------------------------------------------------------------------- -void UpdateHandler::focusControl( DialogControls eID ) -{ - uno::Reference< awt::XControlContainer > xContainer( mxUpdDlg, uno::UNO_QUERY ); - - if ( !xContainer.is() ) - { - OSL_FAIL( "UpdateHandler::focusControl: could not get control container!" ); - return; - } - - OSL_ENSURE( (eID < BUTTON_COUNT), "UpdateHandler::focusControl: id to big!" ); - - uno::Reference< awt::XWindow > xWindow( xContainer->getControl( msButtonIDs[(short)eID] ), uno::UNO_QUERY ); - if ( xWindow.is() ) - xWindow->setFocus(); -} - -//-------------------------------------------------------------------- -void UpdateHandler::insertControlModel( uno::Reference< awt::XControlModel > & rxDialogModel, - rtl::OUString const & rServiceName, - rtl::OUString const & rControlName, - awt::Rectangle const & rPosSize, - uno::Sequence< beans::NamedValue > const & rProps ) -{ - uno::Reference< lang::XMultiServiceFactory > xFactory (rxDialogModel, uno::UNO_QUERY_THROW); - uno::Reference< awt::XControlModel > xModel (xFactory->createInstance (rServiceName), uno::UNO_QUERY_THROW); - uno::Reference< beans::XPropertySet > xPropSet (xModel, uno::UNO_QUERY_THROW); - - for (sal_Int32 i = 0, n = rProps.getLength(); i < n; i++) - { - xPropSet->setPropertyValue (rProps[i].Name, rProps[i].Value); - } - - // @see awt/UnoControlDialogElement.idl - xPropSet->setPropertyValue( UNISTRING("Name"), uno::Any (rControlName) ); - xPropSet->setPropertyValue( UNISTRING("PositionX"), uno::Any (rPosSize.X) ); - xPropSet->setPropertyValue( UNISTRING("PositionY"), uno::Any (rPosSize.Y) ); - xPropSet->setPropertyValue( UNISTRING("Height"), uno::Any (rPosSize.Height) ); - xPropSet->setPropertyValue( UNISTRING("Width"), uno::Any (rPosSize.Width) ); - - // insert by Name into DialogModel container - uno::Reference< container::XNameContainer > xContainer (rxDialogModel, uno::UNO_QUERY_THROW); - xContainer->insertByName( rControlName, uno::Any (uno::Reference< uno::XInterface >(xModel, uno::UNO_QUERY))); -} - -//-------------------------------------------------------------------- -void UpdateHandler::setFullVersion( rtl::OUString& rString ) -{ - if( !mxContext.is() ) - throw uno::RuntimeException( UNISTRING( "getProductName: empty component context" ), *this ); - - uno::Reference< lang::XMultiComponentFactory > xServiceManager( mxContext->getServiceManager() ); - - if( !xServiceManager.is() ) - throw uno::RuntimeException( UNISTRING( "getProductName: unable to obtain service manager from component context" ), *this ); - - uno::Reference< lang::XMultiServiceFactory > xConfigurationProvider( - xServiceManager->createInstanceWithContext( UNISTRING( "com.sun.star.configuration.ConfigurationProvider" ), mxContext ), - uno::UNO_QUERY_THROW); - - beans::PropertyValue aProperty; - aProperty.Name = UNISTRING( "nodepath" ); - aProperty.Value = uno::makeAny( UNISTRING("org.openoffice.Setup/Product") ); - - uno::Sequence< uno::Any > aArgumentList( 1 ); - aArgumentList[0] = uno::makeAny( aProperty ); - - uno::Reference< uno::XInterface > xConfigAccess; - xConfigAccess = xConfigurationProvider->createInstanceWithArguments( UNISTRING("com.sun.star.configuration.ConfigurationAccess"), - aArgumentList ); - - uno::Reference< container::XNameAccess > xNameAccess( xConfigAccess, uno::UNO_QUERY_THROW ); - - rtl::OUString aProductVersion; - rtl::OUString aProductFullVersion; - - xNameAccess->getByName(UNISTRING("ooSetupVersion")) >>= aProductVersion; - aProductFullVersion = aProductVersion; - - sal_Int32 nVerIndex = rString.indexOf( aProductVersion ); - if ( nVerIndex != -1 ) - { - rtl::OUString aPackageVersion = UNISTRING( "${$OOO_BASE_DIR/program/" SAL_CONFIGFILE("version") ":OOOPackageVersion}" ); - rtl::Bootstrap::expandMacros( aPackageVersion ); - - if ( aPackageVersion.getLength() ) - { - sal_Int32 nTokIndex = 0; - rtl::OUString aVersionMinor = aPackageVersion.getToken( 1, '.', nTokIndex ); - rtl::OUString aVersionMicro; - - if ( nTokIndex > 0 ) - aVersionMicro = aPackageVersion.getToken( 0, '.', nTokIndex ); - - if ( aVersionMinor.getLength() == 0 ) - aVersionMinor = UNISTRING( "0" ); - if ( aVersionMicro.getLength() == 0 ) - aVersionMicro = UNISTRING( "0" ); - - sal_Int32 nIndex = aProductFullVersion.indexOf( '.' ); - if ( nIndex == -1 ) - { - aProductFullVersion += UNISTRING( "." ); - aProductFullVersion += aVersionMinor; - } - else - { - nIndex = aProductFullVersion.indexOf( '.', nIndex+1 ); - } - if ( nIndex == -1 ) - { - aProductFullVersion += UNISTRING( "." ); - aProductFullVersion += aVersionMicro; - } - else - { - aProductFullVersion = aProductFullVersion.replaceAt( nIndex+1, aProductFullVersion.getLength()-nIndex-1, aVersionMicro ); - } - } - rString = rString.replaceAt( nVerIndex, aProductVersion.getLength(), aProductFullVersion ); - } -} - -//-------------------------------------------------------------------- -bool UpdateHandler::showWarning( const rtl::OUString &rWarningText ) const -{ - bool bRet = false; - - uno::Reference< awt::XControl > xControl( mxUpdDlg, uno::UNO_QUERY ); - if ( !xControl.is() ) return bRet; - - uno::Reference< awt::XWindowPeer > xPeer = xControl->getPeer(); - if ( !xPeer.is() ) return bRet; - - uno::Reference< awt::XToolkit > xToolkit = xPeer->getToolkit(); - if ( !xToolkit.is() ) return bRet; - - awt::WindowDescriptor aDescriptor; - - sal_Int32 nWindowAttributes = awt::WindowAttribute::BORDER | awt::WindowAttribute::MOVEABLE | awt::WindowAttribute::CLOSEABLE; - nWindowAttributes |= awt::VclWindowPeerAttribute::YES_NO; - nWindowAttributes |= awt::VclWindowPeerAttribute::DEF_NO; - - aDescriptor.Type = awt::WindowClass_MODALTOP; - aDescriptor.WindowServiceName = UNISTRING( "warningbox" ); - aDescriptor.ParentIndex = -1; - aDescriptor.Parent = xPeer; - aDescriptor.Bounds = awt::Rectangle( 10, 10, 250, 150 ); - aDescriptor.WindowAttributes = nWindowAttributes; - - uno::Reference< awt::XMessageBox > xMsgBox( xToolkit->createWindow( aDescriptor ), uno::UNO_QUERY ); - if ( xMsgBox.is() ) - { - mbShowsMessageBox = true; - sal_Int16 nRet; - // xMsgBox->setCaptionText( msCancelTitle ); - xMsgBox->setMessageText( rWarningText ); - nRet = xMsgBox->execute(); - if ( nRet == 2 ) // RET_YES == 2 - bRet = true; - mbShowsMessageBox = false; - } - - uno::Reference< lang::XComponent > xComponent( xMsgBox, uno::UNO_QUERY ); - if ( xComponent.is() ) - xComponent->dispose(); - - return bRet; -} - -//-------------------------------------------------------------------- -bool UpdateHandler::showWarning( const rtl::OUString &rWarningText, - const rtl::OUString &rBtnText_1, - const rtl::OUString &rBtnText_2 ) const -{ - bool bRet = false; - - uno::Reference< awt::XControl > xControl( mxUpdDlg, uno::UNO_QUERY ); - if ( !xControl.is() ) return bRet; - - uno::Reference< awt::XWindowPeer > xPeer = xControl->getPeer(); - if ( !xPeer.is() ) return bRet; - - uno::Reference< awt::XToolkit > xToolkit = xPeer->getToolkit(); - if ( !xToolkit.is() ) return bRet; - - awt::WindowDescriptor aDescriptor; - - sal_Int32 nWindowAttributes = awt::WindowAttribute::BORDER | awt::WindowAttribute::MOVEABLE | awt::WindowAttribute::CLOSEABLE; - nWindowAttributes |= awt::VclWindowPeerAttribute::YES_NO; - nWindowAttributes |= awt::VclWindowPeerAttribute::DEF_NO; - - aDescriptor.Type = awt::WindowClass_MODALTOP; - aDescriptor.WindowServiceName = UNISTRING( "warningbox" ); - aDescriptor.ParentIndex = -1; - aDescriptor.Parent = xPeer; - aDescriptor.Bounds = awt::Rectangle( 10, 10, 250, 150 ); - aDescriptor.WindowAttributes = nWindowAttributes; - - uno::Reference< awt::XMessageBox > xMsgBox( xToolkit->createWindow( aDescriptor ), uno::UNO_QUERY ); - if ( xMsgBox.is() ) - { - uno::Reference< awt::XVclContainer > xMsgBoxCtrls( xMsgBox, uno::UNO_QUERY ); - if ( xMsgBoxCtrls.is() ) - { - uno::Sequence< uno::Reference< awt::XWindow > > xChildren = xMsgBoxCtrls->getWindows(); - - for ( long i=0; i < xChildren.getLength(); i++ ) - { - uno::Reference< awt::XVclWindowPeer > xMsgBoxCtrl( xChildren[i], uno::UNO_QUERY ); - if ( xMsgBoxCtrl.is() ) - { - bool bIsDefault = true; - uno::Any aValue = xMsgBoxCtrl->getProperty( UNISTRING("DefaultButton") ); - aValue >>= bIsDefault; - if ( bIsDefault ) - xMsgBoxCtrl->setProperty( UNISTRING("Text"), uno::Any( rBtnText_1 ) ); - else - xMsgBoxCtrl->setProperty( UNISTRING("Text"), uno::Any( rBtnText_2 ) ); - } - } - } - - sal_Int16 nRet; - // xMsgBox->setCaptionText( msCancelTitle ); - mbShowsMessageBox = true; - xMsgBox->setMessageText( rWarningText ); - nRet = xMsgBox->execute(); - if ( nRet == 2 ) // RET_YES == 2 - bRet = true; - - mbShowsMessageBox = false; - } - - uno::Reference< lang::XComponent > xComponent( xMsgBox, uno::UNO_QUERY ); - if ( xComponent.is() ) - xComponent->dispose(); - - return bRet; -} - -//-------------------------------------------------------------------- -bool UpdateHandler::showOverwriteWarning( const rtl::OUString& rFileName ) const -{ - rtl::OUString aMsg( msReloadWarning ); - searchAndReplaceAll( aMsg, UNISTRING( "%FILENAME" ), rFileName ); - searchAndReplaceAll( aMsg, UNISTRING( "%DOWNLOAD_PATH" ), msDownloadPath ); - return showWarning( aMsg, msReloadContinue, msReloadReload ); -} - -//-------------------------------------------------------------------- -bool UpdateHandler::showOverwriteWarning() const -{ - return showWarning( msOverwriteWarning ); -} - -//-------------------------------------------------------------------- -#define BUTTON_HEIGHT 14 -#define BUTTON_WIDTH 50 -#define BUTTON_X_OFFSET 7 -#define BUTTON_Y_OFFSET 3 -#define LABEL_HEIGHT 10 - -#define DIALOG_WIDTH 300 -#define DIALOG_BORDER 5 -#define INNER_BORDER 3 -#define TEXT_OFFSET 1 -#define BOX_HEIGHT1 ( LABEL_HEIGHT + 3*BUTTON_HEIGHT + 2*BUTTON_Y_OFFSET + 2*INNER_BORDER ) -#define BOX_HEIGHT2 50 -#define EDIT_WIDTH ( DIALOG_WIDTH - 2 * DIALOG_BORDER ) -#define BOX1_BTN_X ( DIALOG_BORDER + EDIT_WIDTH - BUTTON_WIDTH - INNER_BORDER ) -#define BOX1_BTN_Y ( DIALOG_BORDER + LABEL_HEIGHT + INNER_BORDER) -#define THROBBER_WIDTH 16 -#define THROBBER_HEIGHT 16 -#define THROBBER_X_POS ( DIALOG_BORDER + 8 ) -#define THROBBER_Y_POS ( DIALOG_BORDER + 23 ) -#define BUTTON_BAR_HEIGHT 24 -#define LABEL_OFFSET ( LABEL_HEIGHT + 4 ) -#define DIALOG_HEIGHT ( BOX_HEIGHT1 + BOX_HEIGHT2 + LABEL_OFFSET + BUTTON_BAR_HEIGHT + 3 * DIALOG_BORDER ) -#define LABEL_Y_POS ( 2 * DIALOG_BORDER + BOX_HEIGHT1 ) -#define EDIT2_Y_POS ( LABEL_Y_POS + LABEL_HEIGHT ) -#define BUTTON_BAR_Y_POS ( EDIT2_Y_POS + DIALOG_BORDER + BOX_HEIGHT2 ) -#define BUTTON_Y_POS ( BUTTON_BAR_Y_POS + 8 ) -#define CLOSE_BTN_X ( DIALOG_WIDTH - DIALOG_BORDER - BUTTON_WIDTH ) -#define INSTALL_BTN_X ( CLOSE_BTN_X - 2 * BUTTON_X_OFFSET - BUTTON_WIDTH ) -#define DOWNLOAD_BTN_X ( INSTALL_BTN_X - BUTTON_X_OFFSET - BUTTON_WIDTH ) -#define PROGRESS_WIDTH 80 -#define PROGRESS_HEIGHT 10 -#define PROGRESS_X_POS ( DIALOG_BORDER + 8 ) -#define PROGRESS_Y_POS ( DIALOG_BORDER + 2*LABEL_OFFSET ) - -//-------------------------------------------------------------------- -void UpdateHandler::showControls( short nControls ) -{ - // The buttons from CANCEL_BUTTON to RESUME_BUTTON will be shown or - // hidden on demand - short nShiftMe; - for ( int i = 0; i <= (int)RESUME_BUTTON; i++ ) - { - nShiftMe = (short)(nControls >> i); - showControl( msButtonIDs[i], (bool)(nShiftMe & 0x01) ); - } - - nShiftMe = (short)(nControls >> THROBBER_CTRL); - startThrobber( (bool)(nShiftMe & 0x01) ); - - nShiftMe = (short)(nControls >> PROGRESS_CTRL); - showControl( CTRL_PROGRESS, (bool)(nShiftMe & 0x01) ); - showControl( TEXT_PERCENT, (bool)(nShiftMe & 0x01) ); - - // Status text needs to be smaller, when there are buttons at the right side of the dialog - if ( ( nControls & ( (1< xServiceManager( mxContext->getServiceManager() ); - - if( xServiceManager.is() ) - { - uno::Reference< frame::XDesktop > xDesktop( - xServiceManager->createInstanceWithContext( UNISTRING( "com.sun.star.frame.Desktop"), mxContext ), - uno::UNO_QUERY ); - if ( xDesktop.is() ) - xDesktop->addTerminateListener( this ); - } - - loadStrings(); - - uno::Reference< lang::XMultiComponentFactory > xFactory( mxContext->getServiceManager(), uno::UNO_QUERY_THROW ); - uno::Reference< awt::XControlModel > xControlModel( xFactory->createInstanceWithContext( - UNISTRING("com.sun.star.awt.UnoControlDialogModel"), - mxContext), uno::UNO_QUERY_THROW ); - { - // @see awt/UnoControlDialogModel.idl - uno::Reference< beans::XPropertySet > xPropSet( xControlModel, uno::UNO_QUERY_THROW ); - - xPropSet->setPropertyValue( UNISTRING("Title"), uno::Any( msDlgTitle ) ); - xPropSet->setPropertyValue( UNISTRING("Closeable"), uno::Any( true ) ); - xPropSet->setPropertyValue( UNISTRING("Enabled"), uno::Any( true ) ); - xPropSet->setPropertyValue( UNISTRING("Moveable"), uno::Any( true ) ); - xPropSet->setPropertyValue( UNISTRING("Sizeable"), uno::Any( true ) ); - xPropSet->setPropertyValue( UNISTRING("DesktopAsParent"), uno::Any( true ) ); - xPropSet->setPropertyValue( UNISTRING("PositionX"), uno::Any(sal_Int32( 100 )) ); - xPropSet->setPropertyValue( UNISTRING("PositionY"), uno::Any(sal_Int32( 100 )) ); - xPropSet->setPropertyValue( UNISTRING("Width"), uno::Any(sal_Int32( DIALOG_WIDTH )) ); - xPropSet->setPropertyValue( UNISTRING("Height"), uno::Any(sal_Int32( DIALOG_HEIGHT )) ); - xPropSet->setPropertyValue( UNISTRING("HelpURL"), uno::Any( UNISTRING( INET_HID_SCHEME ) + rtl::OUString::createFromAscii( HID_CHECK_FOR_UPD_DLG ) ) ); - } - { // Label (fixed text) - uno::Sequence< beans::NamedValue > aProps(1); - - setProperty( aProps, 0, UNISTRING("Label"), uno::Any( msStatusFL ) ); - - insertControlModel( xControlModel, FIXED_TEXT_MODEL, UNISTRING( "fixedLineStatus" ), - awt::Rectangle( DIALOG_BORDER+1, DIALOG_BORDER, EDIT_WIDTH-2, LABEL_HEIGHT ), - aProps ); - } - { // box around text - uno::Sequence< beans::NamedValue > aProps; - - insertControlModel( xControlModel, GROUP_BOX_MODEL, UNISTRING( "StatusBox" ), - awt::Rectangle( DIALOG_BORDER, DIALOG_BORDER + LABEL_HEIGHT, EDIT_WIDTH, BOX_HEIGHT1 - LABEL_HEIGHT ), - aProps ); - } - { // Text (multiline edit) - uno::Sequence< beans::NamedValue > aProps(7); - - setProperty( aProps, 0, UNISTRING("Text"), uno::Any( substVariables(msChecking) ) ); - setProperty( aProps, 1, UNISTRING("Border"), uno::Any( sal_Int16( 0 ) ) ); - setProperty( aProps, 2, UNISTRING("PaintTransparent"), uno::Any( true ) ); - setProperty( aProps, 3, UNISTRING("MultiLine"), uno::Any( true ) ); - setProperty( aProps, 4, UNISTRING("ReadOnly"), uno::Any( true ) ); - setProperty( aProps, 5, UNISTRING("AutoVScroll"), uno::Any( true ) ); - setProperty( aProps, 6, UNISTRING("HelpURL"), uno::Any( UNISTRING( INET_HID_SCHEME ) + rtl::OUString::createFromAscii( HID_CHECK_FOR_UPD_STATUS ) ) ); - - insertControlModel( xControlModel, EDIT_FIELD_MODEL, TEXT_STATUS, - awt::Rectangle( DIALOG_BORDER + TEXT_OFFSET, - DIALOG_BORDER + LABEL_HEIGHT + TEXT_OFFSET, - EDIT_WIDTH - 2*TEXT_OFFSET, - BOX_HEIGHT1 - 4*TEXT_OFFSET - LABEL_HEIGHT ), - aProps ); - } - { // Text (edit) - uno::Sequence< beans::NamedValue > aProps(4); - - setProperty( aProps, 0, UNISTRING("Text"), uno::Any( msPercent ) ); - setProperty( aProps, 1, UNISTRING("Border"), uno::Any( sal_Int16( 0 ) ) ); - setProperty( aProps, 2, UNISTRING("PaintTransparent"), uno::Any( true ) ); - setProperty( aProps, 3, UNISTRING("ReadOnly"), uno::Any( true ) ); - - insertControlModel( xControlModel, EDIT_FIELD_MODEL, TEXT_PERCENT, - awt::Rectangle( PROGRESS_X_POS + PROGRESS_WIDTH + DIALOG_BORDER, - PROGRESS_Y_POS, - EDIT_WIDTH - PROGRESS_WIDTH - BUTTON_WIDTH - 2*DIALOG_BORDER, - LABEL_HEIGHT ), - aProps ); - } - { // pause button - uno::Sequence< beans::NamedValue > aProps(5); - - setProperty( aProps, 0, UNISTRING("DefaultButton"), uno::Any( false ) ); - setProperty( aProps, 1, UNISTRING("Enabled"), uno::Any( true ) ); - setProperty( aProps, 2, UNISTRING("PushButtonType"), uno::Any( sal_Int16(awt::PushButtonType_STANDARD) ) ); - setProperty( aProps, 3, UNISTRING("Label"), uno::Any( msPauseBtn ) ); - setProperty( aProps, 4, UNISTRING("HelpURL"), uno::Any( UNISTRING( INET_HID_SCHEME ) + rtl::OUString::createFromAscii( HID_CHECK_FOR_UPD_PAUSE ) ) ); - - insertControlModel ( xControlModel, BUTTON_MODEL, msButtonIDs[PAUSE_BUTTON], - awt::Rectangle( BOX1_BTN_X, BOX1_BTN_Y, BUTTON_WIDTH, BUTTON_HEIGHT ), - aProps ); - } - { // resume button - uno::Sequence< beans::NamedValue > aProps(5); - - setProperty( aProps, 0, UNISTRING("DefaultButton"), uno::Any( false ) ); - setProperty( aProps, 1, UNISTRING("Enabled"), uno::Any( true ) ); - setProperty( aProps, 2, UNISTRING("PushButtonType"), uno::Any( sal_Int16(awt::PushButtonType_STANDARD) ) ); - setProperty( aProps, 3, UNISTRING("Label"), uno::Any( msResumeBtn ) ); - setProperty( aProps, 4, UNISTRING("HelpURL"), uno::Any( UNISTRING( INET_HID_SCHEME ) + rtl::OUString::createFromAscii( HID_CHECK_FOR_UPD_RESUME ) ) ); - - insertControlModel ( xControlModel, BUTTON_MODEL, msButtonIDs[RESUME_BUTTON], - awt::Rectangle( BOX1_BTN_X, - BOX1_BTN_Y + BUTTON_Y_OFFSET + BUTTON_HEIGHT, - BUTTON_WIDTH, - BUTTON_HEIGHT ), - aProps ); - } - { // abort button - uno::Sequence< beans::NamedValue > aProps(5); - - setProperty( aProps, 0, UNISTRING("DefaultButton"), uno::Any( false ) ); - setProperty( aProps, 1, UNISTRING("Enabled"), uno::Any( true ) ); - setProperty( aProps, 2, UNISTRING("PushButtonType"), uno::Any( sal_Int16(awt::PushButtonType_STANDARD) ) ); - setProperty( aProps, 3, UNISTRING("Label"), uno::Any( msCancelBtn ) ); - setProperty( aProps, 4, UNISTRING("HelpURL"), uno::Any( UNISTRING( INET_HID_SCHEME ) + rtl::OUString::createFromAscii( HID_CHECK_FOR_UPD_CANCEL ) ) ); - - insertControlModel ( xControlModel, BUTTON_MODEL, msButtonIDs[CANCEL_BUTTON], - awt::Rectangle( BOX1_BTN_X, - BOX1_BTN_Y + (2*(BUTTON_HEIGHT+BUTTON_Y_OFFSET)), - BUTTON_WIDTH, - BUTTON_HEIGHT ), - aProps ); - } - { // Label (FixedText) - uno::Sequence< beans::NamedValue > aProps(1); - - setProperty( aProps, 0, UNISTRING("Label"), uno::Any( msDescription ) ); - - insertControlModel( xControlModel, FIXED_TEXT_MODEL, UNISTRING( "fixedTextDescription" ), - awt::Rectangle( DIALOG_BORDER+1, LABEL_Y_POS, EDIT_WIDTH-2, LABEL_HEIGHT ), - aProps ); - } - { // box around text - uno::Sequence< beans::NamedValue > aProps; - - insertControlModel( xControlModel, GROUP_BOX_MODEL, UNISTRING( "DescriptionBox" ), - awt::Rectangle( DIALOG_BORDER, EDIT2_Y_POS, EDIT_WIDTH, BOX_HEIGHT2 ), - aProps ); - } - { // Text (MultiLineEdit) - uno::Sequence< beans::NamedValue > aProps(7); - - setProperty( aProps, 0, UNISTRING("Text"), uno::Any( rtl::OUString() ) ); - setProperty( aProps, 1, UNISTRING("Border"), uno::Any( sal_Int16( 0 ) ) ); - setProperty( aProps, 2, UNISTRING("PaintTransparent"), uno::Any( true ) ); - setProperty( aProps, 3, UNISTRING("MultiLine"), uno::Any( true ) ); - setProperty( aProps, 4, UNISTRING("ReadOnly"), uno::Any( true ) ); - setProperty( aProps, 5, UNISTRING("AutoVScroll"), uno::Any( true ) ); - setProperty( aProps, 6, UNISTRING("HelpURL"), uno::Any( UNISTRING( INET_HID_SCHEME ) + rtl::OUString::createFromAscii( HID_CHECK_FOR_UPD_DESCRIPTION ) ) ); - - insertControlModel( xControlModel, EDIT_FIELD_MODEL, TEXT_DESCRIPTION, - awt::Rectangle( DIALOG_BORDER + TEXT_OFFSET, - EDIT2_Y_POS + 2*TEXT_OFFSET, - EDIT_WIDTH - 3*TEXT_OFFSET, - BOX_HEIGHT2 - 3*TEXT_OFFSET ), - aProps ); - } - { // @see awt/UnoControlFixedLineModel.idl - uno::Sequence< beans::NamedValue > aProps(1); - - setProperty( aProps, 0, UNISTRING("Orientation"), uno::Any( sal_Int32( 0 ) ) ); - - insertControlModel( xControlModel, FIXED_LINE_MODEL, UNISTRING("fixedLine"), - awt::Rectangle( 0, BUTTON_BAR_Y_POS, DIALOG_WIDTH, 5 ), - aProps ); - } - { // close button // @see awt/UnoControlButtonModel.idl - uno::Sequence< beans::NamedValue > aProps(5); - - setProperty( aProps, 0, UNISTRING("DefaultButton"), uno::Any( false ) ); - setProperty( aProps, 1, UNISTRING("Enabled"), uno::Any( true ) ); - // [property] short PushButtonType - // with own "ButtonActionListener" - setProperty( aProps, 2, UNISTRING("PushButtonType"), uno::Any( sal_Int16(awt::PushButtonType_STANDARD) ) ); - // with default ActionListener => endDialog(). - // setProperty( aProps, 2, UNISTRING("PushButtonType"), uno::Any( sal_Int16(awt::PushButtonType_CANCEL) ) ); - // [property] string Label // only if PushButtonType_STANDARD - setProperty( aProps, 3, UNISTRING("Label"), uno::Any( msClose ) ); - setProperty( aProps, 4, UNISTRING("HelpURL"), uno::Any( UNISTRING( INET_HID_SCHEME ) + rtl::OUString::createFromAscii( HID_CHECK_FOR_UPD_CLOSE ) ) ); - - insertControlModel ( xControlModel, BUTTON_MODEL, msButtonIDs[ CLOSE_BUTTON ], - awt::Rectangle( CLOSE_BTN_X, BUTTON_Y_POS, BUTTON_WIDTH, BUTTON_HEIGHT ), - aProps ); - } - { // install button - uno::Sequence< beans::NamedValue > aProps(5); - - setProperty( aProps, 0, UNISTRING("DefaultButton"), uno::Any( false ) ); - setProperty( aProps, 1, UNISTRING("Enabled"), uno::Any( true ) ); - setProperty( aProps, 2, UNISTRING("PushButtonType"), uno::Any( sal_Int16(awt::PushButtonType_STANDARD) ) ); - setProperty( aProps, 3, UNISTRING("Label"), uno::Any( msInstall ) ); - setProperty( aProps, 4, UNISTRING("HelpURL"), uno::Any( UNISTRING( INET_HID_SCHEME ) + rtl::OUString::createFromAscii( HID_CHECK_FOR_UPD_INSTALL ) ) ); - - insertControlModel ( xControlModel, BUTTON_MODEL, msButtonIDs[INSTALL_BUTTON], - awt::Rectangle( INSTALL_BTN_X, BUTTON_Y_POS, BUTTON_WIDTH, BUTTON_HEIGHT ), - aProps ); - } - { // download button - uno::Sequence< beans::NamedValue > aProps(5); - - setProperty( aProps, 0, UNISTRING("DefaultButton"), uno::Any( false ) ); - setProperty( aProps, 1, UNISTRING("Enabled"), uno::Any( true ) ); - setProperty( aProps, 2, UNISTRING("PushButtonType"), uno::Any( sal_Int16(awt::PushButtonType_STANDARD) ) ); - setProperty( aProps, 3, UNISTRING("Label"), uno::Any( msDownload ) ); - setProperty( aProps, 4, UNISTRING("HelpURL"), uno::Any( UNISTRING( INET_HID_SCHEME ) + rtl::OUString::createFromAscii( HID_CHECK_FOR_UPD_DOWNLOAD ) ) ); - - insertControlModel ( xControlModel, BUTTON_MODEL, msButtonIDs[DOWNLOAD_BUTTON], - awt::Rectangle( DOWNLOAD_BTN_X, BUTTON_Y_POS, BUTTON_WIDTH, BUTTON_HEIGHT ), - aProps ); - } - { // help button - uno::Sequence< beans::NamedValue > aProps(3); - - setProperty( aProps, 0, UNISTRING("DefaultButton"), uno::Any( false ) ); - setProperty( aProps, 1, UNISTRING("Enabled"), uno::Any( true ) ); - setProperty( aProps, 2, UNISTRING("PushButtonType"), uno::Any( sal_Int16(awt::PushButtonType_HELP) ) ); - - insertControlModel( xControlModel, BUTTON_MODEL, msButtonIDs[HELP_BUTTON], - awt::Rectangle( DIALOG_BORDER, BUTTON_Y_POS, BUTTON_WIDTH, BUTTON_HEIGHT ), - aProps ); - } - { // @see awt/UnoControlThrobberModel.idl - uno::Sequence< beans::NamedValue > aProps; - - insertControlModel( xControlModel, UNISTRING("com.sun.star.awt.SpinningProgressControlModel"), CTRL_THROBBER, - awt::Rectangle( THROBBER_X_POS, THROBBER_Y_POS, THROBBER_WIDTH, THROBBER_HEIGHT), - aProps ); - } - { // @see awt/UnoControlProgressBarModel.idl - uno::Sequence< beans::NamedValue > aProps(4); - setProperty( aProps, 0, UNISTRING("Enabled"), uno::Any( true ) ); - setProperty( aProps, 1, UNISTRING("ProgressValue"), uno::Any( sal_Int32( 0 ) ) ); - setProperty( aProps, 2, UNISTRING("ProgressValueMax"), uno::Any( sal_Int32( 100 ) ) ); - setProperty( aProps, 3, UNISTRING("ProgressValueMin"), uno::Any( sal_Int32( 0 ) ) ); - - insertControlModel( xControlModel, UNISTRING("com.sun.star.awt.UnoControlProgressBarModel"), CTRL_PROGRESS, - awt::Rectangle( PROGRESS_X_POS, PROGRESS_Y_POS, PROGRESS_WIDTH, PROGRESS_HEIGHT ), - aProps); - } - - uno::Reference< awt::XControl > xControl( - xFactory->createInstanceWithContext( UNISTRING("com.sun.star.awt.UnoControlDialog"), mxContext), - uno::UNO_QUERY_THROW ); - xControl->setModel( xControlModel ); - - if ( mbVisible == false ) - { - uno::Reference< awt::XWindow > xWindow( xControl, uno::UNO_QUERY ); - - if ( xWindow.is() ) - xWindow->setVisible( false ); - } - - xControl->createPeer( NULL, NULL ); - { - uno::Reference< awt::XControlContainer > xContainer (xControl, uno::UNO_QUERY); - for ( int i = 0; i < HELP_BUTTON; i++ ) - { - uno::Reference< awt::XButton > xButton ( xContainer->getControl( msButtonIDs[i] ), uno::UNO_QUERY); - if (xButton.is()) - { - xButton->setActionCommand( msButtonIDs[i] ); - xButton->addActionListener( this ); - } - } - } - - mxUpdDlg.set( xControl, uno::UNO_QUERY_THROW ); - mnLastCtrlState = -1; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- cgit v1.2.3