blob: 88edb1f43dbb369237e0d4eef58d892c552bf7d0 [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_sd.hxx"
#include <com/sun/star/task/XStatusIndicatorFactory.hpp>
#include <memory>
#include <tools/debug.hxx>
#include <osl/module.hxx>
#include <sfx2/docfile.hxx>
#include <sfx2/viewfrm.hxx>
#include <sfx2/progress.hxx>
#include <svl/itemset.hxx>
#include "../ui/inc/DrawDocShell.hxx"
#include "../ui/inc/strings.hrc"
#include "sdresid.hxx"
#include "pres.hxx"
#include "drawdoc.hxx"
#include "sdfilter.hxx"
// --------------
// - Namespaces -
// --------------
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::task;
using namespace ::com::sun::star::frame;
// ------------
// - SdFilter -
// ------------
SdFilter::SdFilter( SfxMedium& rMedium, ::sd::DrawDocShell& rDocShell, sal_Bool bShowProgress )
: mxModel( rDocShell.GetModel() )
, mrMedium( rMedium )
, mrDocShell( rDocShell )
, mrDocument( *rDocShell.GetDoc() )
, mbIsDraw( rDocShell.GetDocumentType() == DOCUMENT_TYPE_DRAW )
, mbShowProgress( bShowProgress )
{
}
// -----------------------------------------------------------------------------
SdFilter::~SdFilter()
{
}
// -----------------------------------------------------------------------------
::rtl::OUString SdFilter::ImplGetFullLibraryName( const ::rtl::OUString& rLibraryName ) const
{
String aTemp( ::rtl::OUString::createFromAscii( SVLIBRARY( "?" ) ) );
xub_StrLen nIndex = aTemp.Search( (sal_Unicode)'?' );
aTemp.Replace( nIndex, 1, rLibraryName );
::rtl::OUString aLibraryName( aTemp );
return aLibraryName;
}
// -----------------------------------------------------------------------------
extern "C" { static void SAL_CALL thisModule() {} }
::osl::Module* SdFilter::OpenLibrary( const ::rtl::OUString& rLibraryName ) const
{
std::auto_ptr< osl::Module > mod(new osl::Module);
return mod->loadRelative(&thisModule, ImplGetFullLibraryName(rLibraryName))
? mod.release() : 0;
}
// -----------------------------------------------------------------------------
void SdFilter::CreateStatusIndicator()
{
// The status indicator must be retrieved from the provided medium arguments
const SfxUnoAnyItem* pStatusBarItem = static_cast<const SfxUnoAnyItem*>(
mrMedium.GetItemSet()->GetItem(SID_PROGRESS_STATUSBAR_CONTROL) );
if ( pStatusBarItem )
pStatusBarItem->GetValue() >>= mxStatusIndicator;
// try
// {
// if (mxModel.is())
// {
// Reference< XController > xController( mxModel->getCurrentController());
// if( xController.is())
// {
// Reference< XFrame > xFrame( xController->getFrame());
// if( xFrame.is())
// {
// Reference< XStatusIndicatorFactory > xFactory( xFrame, UNO_QUERY );
// if( xFactory.is())
// {
// mxStatusIndicator = xFactory->createStatusIndicator();
// }
// }
// }
// }
// }
// catch( Exception& )
// {
// }
}