blob: 538ddc13c4bc8a19b09898658206d609a086c6f3 [file] [log] [blame]
/**************************************************************
*
* 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 );
}
// -----------------------------------------------------------------------------