/************************************************************** * * 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 "DrawDocShell.hxx" #include "app.hrc" #ifndef _SVXIDS_HRC #include #endif #ifndef _SVX_DIALOGS_HRC #include #endif #include #include #include #include #include #ifdef _OUTLINER_HXX #include #endif #include #include #include #include #include #include "strings.hrc" #include "glob.hrc" #include "res_bmp.hrc" #include "app.hxx" #include "drawdoc.hxx" #include "sdpage.hxx" #include "sdattr.hxx" #include "fusearch.hxx" #include "ViewShell.hxx" #include "View.hxx" #include "slideshow.hxx" #include "fuhhconv.hxx" #include "slideshow.hxx" using namespace ::com::sun::star; using namespace ::com::sun::star::beans; using namespace ::com::sun::star::uno; namespace sd { #define POOL_BUFFER_SIZE (sal_uInt16)32768 #define BASIC_BUFFER_SIZE (sal_uInt16)8192 #define DOCUMENT_BUFFER_SIZE (sal_uInt16)32768 /************************************************************************* |* |* SFX-Requests bearbeiten |* \************************************************************************/ void DrawDocShell::Execute( SfxRequest& rReq ) { if(mpViewShell && SlideShow::IsRunning( mpViewShell->GetViewShellBase() )) { // during a running presentation no slot will be executed return; } switch ( rReq.GetSlot() ) { case SID_SEARCH_ITEM: { const SfxItemSet* pReqArgs = rReq.GetArgs(); if (pReqArgs) { const SvxSearchItem* pSearchItem = (const SvxSearchItem*) &pReqArgs->Get(SID_SEARCH_ITEM); // ein Zuweisungsoperator am SearchItem waer nicht schlecht... SvxSearchItem* pAppSearchItem = SD_MOD()->GetSearchItem(); delete pAppSearchItem; pAppSearchItem = (SvxSearchItem*) pSearchItem->Clone(); SD_MOD()->SetSearchItem(pAppSearchItem); } rReq.Done(); } break; case FID_SEARCH_ON: { // Keine Aktion noetig rReq.Done(); } break; case FID_SEARCH_OFF: { if( dynamic_cast< FuSearch* >(mxDocShellFunction.get()) ) { // Suchen&Ersetzen in allen DocShells beenden SfxObjectShell* pFirstShell = SfxObjectShell::GetFirst(); SfxObjectShell* pShell = pFirstShell; while (pShell) { if (pShell->ISA(DrawDocShell)) { ( (DrawDocShell*) pShell)->CancelSearching(); } pShell = SfxObjectShell::GetNext(*pShell); if (pShell == pFirstShell) { pShell = NULL; } } SetDocShellFunction(0); Invalidate(); rReq.Done(); } } break; case FID_SEARCH_NOW: { const SfxItemSet* pReqArgs = rReq.GetArgs(); if ( pReqArgs ) { rtl::Reference< FuSearch > xFuSearch( dynamic_cast< FuSearch* >( GetDocShellFunction().get() ) ); if( !xFuSearch.is() && mpViewShell ) { ::sd::View* pView = mpViewShell->GetView(); SetDocShellFunction( FuSearch::Create( mpViewShell, mpViewShell->GetActiveWindow(), pView, mpDoc, rReq ) ); xFuSearch.set( dynamic_cast< FuSearch* >( GetDocShellFunction().get() ) ); } if( xFuSearch.is() ) { const SvxSearchItem* pSearchItem = (const SvxSearchItem*) &pReqArgs->Get(SID_SEARCH_ITEM); // ein Zuweisungsoperator am SearchItem waer nicht schlecht... SvxSearchItem* pAppSearchItem = SD_MOD()->GetSearchItem(); delete pAppSearchItem; pAppSearchItem = (SvxSearchItem*)pSearchItem->Clone(); SD_MOD()->SetSearchItem(pAppSearchItem); xFuSearch->SearchAndReplace(pSearchItem); } } rReq.Done(); } break; case SID_CLOSEDOC: { // SfxObjectShell::DoClose(); ExecuteSlot(rReq, SfxObjectShell::GetStaticInterface()); } break; case SID_GET_COLORTABLE: { // passende ColorTable ist per PutItem gesetzt worden const SvxColorTableItem* pColItem = static_cast< const SvxColorTableItem* >(GetItem( SID_COLOR_TABLE )); XColorListSharedPtr aTable = pColItem->GetColorTable(); rReq.SetReturnValue( SvxColorTableItem( aTable, SID_GET_COLORTABLE ) ); } break; case SID_VERSION: { const sal_uLong nOldSwapMode = mpDoc->GetSwapGraphicsMode(); mpDoc->SetSwapGraphicsMode( SDR_SWAPGRAPHICSMODE_TEMP ); ExecuteSlot( rReq, SfxObjectShell::GetStaticInterface() ); mpDoc->SetSwapGraphicsMode( nOldSwapMode ); } break; case SID_HANGUL_HANJA_CONVERSION: { if( mpViewShell ) { FunctionReference aFunc( FuHangulHanjaConversion::Create( mpViewShell, mpViewShell->GetActiveWindow(), mpViewShell->GetView(), mpDoc, rReq ) ); static_cast< FuHangulHanjaConversion* >( aFunc.get() )->StartConversion( LANGUAGE_KOREAN, LANGUAGE_KOREAN, NULL, i18n::TextConversionOption::CHARACTER_BY_CHARACTER, sal_True ); } } break; case SID_CHINESE_CONVERSION: { if( mpViewShell ) { FunctionReference aFunc( FuHangulHanjaConversion::Create( mpViewShell, mpViewShell->GetActiveWindow(), mpViewShell->GetView(), mpDoc, rReq ) ); static_cast< FuHangulHanjaConversion* >( aFunc.get() )->StartChineseConversion(); } } break; default: break; } } /************************************************************************* |* |* Suchmaske fuer Organizer |* \************************************************************************/ void DrawDocShell::SetOrganizerSearchMask(SfxStyleSheetBasePool* pBasePool) const { pBasePool->SetSearchMask(SD_STYLE_FAMILY_GRAPHICS, SFXSTYLEBIT_USERDEF | SFXSTYLEBIT_USED); } void DrawDocShell::SetDocShellFunction( const ::sd::FunctionReference& xFunction ) { if( mxDocShellFunction.is() ) mxDocShellFunction->Dispose(); mxDocShellFunction = xFunction; } } // end of namespace sd