diff options
Diffstat (limited to 'sc/source/ui/view/tabvwsh9.cxx')
-rw-r--r-- | sc/source/ui/view/tabvwsh9.cxx | 295 |
1 files changed, 295 insertions, 0 deletions
diff --git a/sc/source/ui/view/tabvwsh9.cxx b/sc/source/ui/view/tabvwsh9.cxx new file mode 100644 index 000000000000..30f9c50fd925 --- /dev/null +++ b/sc/source/ui/view/tabvwsh9.cxx @@ -0,0 +1,295 @@ +/************************************************************************* + * + * 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 + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_sc.hxx" + + + +// INCLUDE --------------------------------------------------------------- + +#include <svx/svdmark.hxx> +#include <svx/svdview.hxx> +#include <svx/galbrws.hxx> +#include <svx/gallery.hxx> +#include <svx/hlnkitem.hxx> +#include <sfx2/bindings.hxx> +#include <sfx2/request.hxx> +#include <sfx2/viewfrm.hxx> +#include <sfx2/dispatch.hxx> +#include <svl/whiter.hxx> +#include <avmedia/mediaplayer.hxx> + +#include "tabvwsh.hxx" +#include "viewdata.hxx" +#include "tabview.hxx" +#include "drwlayer.hxx" +#include "userdat.hxx" +#include "docsh.hxx" + +// forwards -> galwrap.cxx (wg. CLOOKs) + +USHORT GallerySGA_FORMAT_GRAPHIC(); +Graphic GalleryGetGraphic (); +BOOL GalleryIsLinkage (); +String GalleryGetFullPath (); +String GalleryGetFilterName (); + +// forwards -> imapwrap.cxx (wg. CLOOKs) + +class SvxIMapDlg; + +USHORT ScIMapChildWindowId(); +SvxIMapDlg* ScGetIMapDlg(); +const void* ScIMapDlgGetObj( SvxIMapDlg* pDlg ); +const ImageMap& ScIMapDlgGetMap( SvxIMapDlg* pDlg ); + +//------------------------------------------------------------------ + +void ScTabViewShell::ExecChildWin(SfxRequest& rReq) +{ + USHORT nSlot = rReq.GetSlot(); + switch(nSlot) + { + case SID_GALLERY: + { + SfxViewFrame* pThisFrame = GetViewFrame(); + pThisFrame->ToggleChildWindow( GalleryChildWindow::GetChildWindowId() ); + pThisFrame->GetBindings().Invalidate( SID_GALLERY ); + rReq.Ignore(); + } + break; + + case SID_AVMEDIA_PLAYER: + { + SfxViewFrame* pThisFrame = GetViewFrame(); + pThisFrame->ToggleChildWindow( ::avmedia::MediaPlayer::GetChildWindowId() ); + pThisFrame->GetBindings().Invalidate( SID_AVMEDIA_PLAYER ); + rReq.Ignore(); + } + break; + } +} + +void ScTabViewShell::GetChildWinState( SfxItemSet& rSet ) +{ + if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_GALLERY ) ) + { + USHORT nId = GalleryChildWindow::GetChildWindowId(); + rSet.Put( SfxBoolItem( SID_GALLERY, GetViewFrame()->HasChildWindow( nId ) ) ); + } + else if( SFX_ITEM_AVAILABLE == rSet.GetItemState( SID_AVMEDIA_PLAYER ) ) + { + USHORT nId = ::avmedia::MediaPlayer::GetChildWindowId(); + rSet.Put( SfxBoolItem( SID_AVMEDIA_PLAYER, GetViewFrame()->HasChildWindow( nId ) ) ); + } +} + +//------------------------------------------------------------------ + +void ScTabViewShell::ExecGallery( SfxRequest& rReq ) +{ + const SfxItemSet* pArgs = rReq.GetArgs(); + + if ( pArgs ) + { + const SfxPoolItem* pItem = NULL; + SfxItemState eState = pArgs->GetItemState(SID_GALLERY_FORMATS, TRUE, &pItem); + if ( eState == SFX_ITEM_SET ) + { + UINT32 nFormats = ((const SfxUInt32Item*)pItem)->GetValue(); + + /****************************************************************** + * Graphik einfuegen + ******************************************************************/ + if ( nFormats & GallerySGA_FORMAT_GRAPHIC() ) + { + MakeDrawLayer(); + + Graphic aGraphic = GalleryGetGraphic(); + Point aPos = GetInsertPos(); + + String aPath, aFilter; + if ( GalleryIsLinkage() ) // als Link einfuegen? + { + aPath = GalleryGetFullPath(); + aFilter = GalleryGetFilterName(); + } + + PasteGraphic( aPos, aGraphic, aPath, aFilter ); + } + else if ( nFormats & SGA_FORMAT_SOUND ) + { + // #98115# for sounds (linked or not), insert a hyperlink button, + // like in Impress and Writer + + GalleryExplorer* pGal = SVX_GALLERY(); + if ( pGal ) + { + const SfxStringItem aMediaURLItem( SID_INSERT_AVMEDIA, pGal->GetURL().GetMainURL( INetURLObject::NO_DECODE ) ); + GetViewFrame()->GetDispatcher()->Execute( SID_INSERT_AVMEDIA, SFX_CALLMODE_SYNCHRON, &aMediaURLItem, 0L ); + } + } + } + } +} + +void ScTabViewShell::GetGalleryState( SfxItemSet& /* rSet */ ) +{ +} + +//------------------------------------------------------------------ + +ScInputHandler* ScTabViewShell::GetInputHandler() const +{ + return pInputHandler; +} + +//------------------------------------------------------------------ + +String __EXPORT ScTabViewShell::GetDescription() const +{ + return String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM(" ** Test ** ")); +} + +void ScTabViewShell::ExecImageMap( SfxRequest& rReq ) +{ + USHORT nSlot = rReq.GetSlot(); + switch(nSlot) + { + case SID_IMAP: + { + SfxViewFrame* pThisFrame = GetViewFrame(); + USHORT nId = ScIMapChildWindowId(); + pThisFrame->ToggleChildWindow( nId ); + GetViewFrame()->GetBindings().Invalidate( SID_IMAP ); + + if ( pThisFrame->HasChildWindow( nId ) ) + { + SvxIMapDlg* pDlg = ScGetIMapDlg(); + if ( pDlg ) + { + SdrView* pDrView = GetSdrView(); + if ( pDrView ) + { + const SdrMarkList& rMarkList = pDrView->GetMarkedObjectList(); + if ( rMarkList.GetMarkCount() == 1 ) + UpdateIMap( rMarkList.GetMark( 0 )->GetMarkedSdrObj() ); + } + } + } + + rReq.Ignore(); + } + break; + + case SID_IMAP_EXEC: + { + SdrView* pDrView = GetSdrView(); + SdrMark* pMark = pDrView ? pDrView->GetMarkedObjectList().GetMark(0) : 0; + + if ( pMark ) + { + SdrObject* pSdrObj = pMark->GetMarkedSdrObj(); + SvxIMapDlg* pDlg = ScGetIMapDlg(); + + if ( ScIMapDlgGetObj(pDlg) == (void*) pSdrObj ) + { + const ImageMap& rImageMap = ScIMapDlgGetMap(pDlg); + ScIMapInfo* pIMapInfo = ScDrawLayer::GetIMapInfo( pSdrObj ); + + if ( !pIMapInfo ) + pSdrObj->InsertUserData( new ScIMapInfo( rImageMap ) ); + else + pIMapInfo->SetImageMap( rImageMap ); + + GetViewData()->GetDocShell()->SetDrawModified(); + } + } + } + break; + } +} + +void ScTabViewShell::GetImageMapState( SfxItemSet& rSet ) +{ + SfxWhichIter aIter(rSet); + USHORT nWhich = aIter.FirstWhich(); + while ( nWhich ) + { + switch ( nWhich ) + { + case SID_IMAP: + { + // Disabled wird nicht mehr... + + BOOL bThere = FALSE; + SfxViewFrame* pThisFrame = GetViewFrame(); + USHORT nId = ScIMapChildWindowId(); + if ( pThisFrame->KnowsChildWindow(nId) ) + if ( pThisFrame->HasChildWindow(nId) ) + bThere = TRUE; + + ObjectSelectionType eType=GetCurObjectSelectionType(); + BOOL bEnable=(eType==OST_OleObject) ||(eType==OST_Graphic); + if(!bThere && !bEnable) + { + rSet.DisableItem( nWhich ); + } + else + { + rSet.Put( SfxBoolItem( nWhich, bThere ) ); + } + } + break; + + case SID_IMAP_EXEC: + { + BOOL bDisable = TRUE; + + SdrView* pDrView = GetSdrView(); + if ( pDrView ) + { + const SdrMarkList& rMarkList = pDrView->GetMarkedObjectList(); + if ( rMarkList.GetMarkCount() == 1 ) + if ( ScIMapDlgGetObj(ScGetIMapDlg()) == + (void*) rMarkList.GetMark(0)->GetMarkedSdrObj() ) + bDisable = FALSE; + } + + rSet.Put( SfxBoolItem( SID_IMAP_EXEC, bDisable ) ); + } + break; + } + + nWhich = aIter.NextWhich(); + } +} + + + + |