| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| // MARKER(update_precomp.py): autogen include statement, do not remove |
| #include "precompiled_sdext.hxx" |
| |
| #include "pppoptimizerdialog.hxx" |
| #include "optimizerdialog.hxx" |
| |
| #include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp> |
| #include <rtl/strbuf.hxx> |
| #include <rtl/ref.hxx> |
| |
| #define SERVICE_NAME "com.sun.star.ui.dialogs.PresentationMinimizerDialog" |
| #define IMPLEMENTATION_NAME "com.sun.star.comp.ui.dialogs.PresentationMinimizerDialog" |
| |
| using namespace ::com::sun::star::uno; |
| using namespace ::com::sun::star::util; |
| using namespace ::com::sun::star::lang; |
| using namespace ::com::sun::star::frame; |
| using namespace ::com::sun::star::beans; |
| |
| using ::rtl::OUString; |
| using ::com::sun::star::awt::XWindow; |
| using ::com::sun::star::awt::XWindowPeer; |
| |
| // ---------------------- |
| // - PPPOptimizerDialog - |
| // ---------------------- |
| |
| PPPOptimizerDialog::PPPOptimizerDialog( |
| const Reference< XComponentContext > &rxContext ) |
| : m_xContext( rxContext ) |
| , mbInitialized( false ) |
| { |
| OSL_TRACE("PPPOptimizerDialog::PPPOptimizerDialog"); |
| } |
| |
| // ----------------------------------------------------------------------------- |
| |
| PPPOptimizerDialog::~PPPOptimizerDialog() |
| { |
| OSL_TRACE("PPPOptimizerDialog::~PPPOptimizerDialog"); |
| } |
| |
| // ----------------------------------------------------------------------------- |
| // XInitialization |
| // ----------------------------------------------------------------------------- |
| |
| void SAL_CALL PPPOptimizerDialog::initialize( const Sequence< Any >& aArguments ) |
| throw ( Exception, RuntimeException ) |
| { |
| OSL_TRACE("PPPOptimizerDialog::initialize"); |
| osl::ResettableMutexGuard aGuard( m_aMutex ); |
| if ( mbInitialized ) |
| throw RuntimeException( |
| OUString( RTL_CONSTASCII_USTRINGPARAM( |
| "PPPOptimizerDialog has already been initialized!") ), |
| Reference< XInterface >() ); |
| aGuard.clear(); |
| |
| Reference< XFrame > xFrame; |
| Reference< XController > xController; |
| Reference< XModel > xModel; |
| Reference< XWindow > xWindow; |
| |
| const Any *pAny = aArguments.getConstArray(); |
| const Any *pEnd = pAny + aArguments.getLength(); |
| for ( ; pAny != pEnd && !xFrame.is() && !xWindow.is(); pAny++ ) |
| { |
| if ( ( *pAny >>= xFrame ) && xFrame.is() ) |
| { |
| xWindow = xFrame->getContainerWindow(); |
| } |
| else if ( ( *pAny >>= xController ) && xController.is() ) |
| { |
| xFrame = xController->getFrame(); |
| if ( xFrame.is() ) |
| xWindow = xFrame->getContainerWindow(); |
| } |
| else if ( ( *pAny >>= xModel ) && xModel.is() ) |
| { |
| xController = xModel->getCurrentController(); |
| if ( xController.is() ) |
| { |
| xFrame = xController->getFrame(); |
| if ( xFrame.is() ) |
| xWindow = xFrame->getContainerWindow(); |
| } |
| } |
| else |
| *pAny >>= xWindow; |
| } |
| |
| if ( !xFrame.is() ) |
| throw IllegalArgumentException( |
| OUString( RTL_CONSTASCII_USTRINGPARAM( |
| "PPPOptimizerDialog must be initialized with an " |
| "XFrame, XController or XModel!") ), |
| Reference< XInterface >(), 0 ); |
| |
| aGuard.reset(); |
| mxFrame = xFrame; |
| mxParentWindow.set( xWindow, UNO_QUERY ); |
| mbInitialized = true; |
| aGuard.clear(); |
| } |
| |
| // ----------------------------------------------------------------------------- |
| // XServiceInfo |
| // ----------------------------------------------------------------------------- |
| |
| OUString SAL_CALL PPPOptimizerDialog::getImplementationName() |
| throw (RuntimeException) |
| { |
| return PPPOptimizerDialog_getImplementationName(); |
| } |
| |
| sal_Bool SAL_CALL PPPOptimizerDialog::supportsService( const OUString& ServiceName ) |
| throw ( RuntimeException ) |
| { |
| return ServiceName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( SERVICE_NAME ) ); |
| } |
| |
| Sequence< OUString > SAL_CALL PPPOptimizerDialog::getSupportedServiceNames() |
| throw (RuntimeException) |
| { |
| return PPPOptimizerDialog_getSupportedServiceNames(); |
| } |
| |
| |
| void SAL_CALL PPPOptimizerDialog::setTitle( const ::rtl::OUString& aTitle ) |
| throw (::com::sun::star::uno::RuntimeException) |
| { |
| osl::MutexGuard aGuard( m_aMutex ); |
| msTitle = aTitle; |
| } |
| |
| ::sal_Int16 SAL_CALL PPPOptimizerDialog::execute( ) |
| throw (::com::sun::star::uno::RuntimeException) |
| { |
| OSL_TRACE("PPPOptimizerDialog::execute"); |
| sal_Int16 aRet = ::com::sun::star::ui::dialogs::ExecutableDialogResults::CANCEL; |
| |
| osl::ClearableMutexGuard aGuard( m_aMutex ); |
| bool bInit( mbInitialized ); |
| Reference< XFrame > xFrame( mxFrame ); |
| Reference< XWindowPeer > xParent( mxParentWindow ); |
| aGuard.clear(); |
| |
| if ( !bInit || !xFrame.is() || !xParent.is() ) |
| throw RuntimeException(); |
| try |
| { |
| OptimizerDialog *pDialog( |
| new OptimizerDialog( m_xContext, xFrame, xParent ) ); |
| pDialog->setTitle( msTitle ); |
| aRet = pDialog->execute(); |
| delete pDialog; |
| } |
| catch( ... ) |
| { |
| } |
| |
| return aRet; |
| } |
| |
| // ----------------------------------------------------------------------------- |
| |
| OUString PPPOptimizerDialog_getImplementationName() |
| { |
| return OUString ( RTL_CONSTASCII_USTRINGPARAM ( IMPLEMENTATION_NAME ) ); |
| } |
| |
| Sequence< OUString > PPPOptimizerDialog_getSupportedServiceNames() |
| { |
| Sequence < OUString > aRet(1); |
| OUString* pArray = aRet.getArray(); |
| pArray[0] = OUString ( RTL_CONSTASCII_USTRINGPARAM( SERVICE_NAME ) ); |
| return aRet; |
| } |
| |
| Reference< XInterface > PPPOptimizerDialog_createInstance( const Reference< XComponentContext > & rSMgr) |
| throw( Exception ) |
| { |
| return (cppu::OWeakObject*) new PPPOptimizerDialog( rSMgr ); |
| } |
| |
| // ----------------------------------------------------------------------------- |