diff options
Diffstat (limited to 'sd/source/ui/func/fuoaprms.cxx')
-rw-r--r-- | sd/source/ui/func/fuoaprms.cxx | 827 |
1 files changed, 0 insertions, 827 deletions
diff --git a/sd/source/ui/func/fuoaprms.cxx b/sd/source/ui/func/fuoaprms.cxx deleted file mode 100644 index 3c2f59be0..000000000 --- a/sd/source/ui/func/fuoaprms.cxx +++ /dev/null @@ -1,827 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * 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_sd.hxx" - - -#include "fuoaprms.hxx" - -#include "sdattr.hxx" -#include <svx/svdpagv.hxx> -#include <editeng/colritem.hxx> -#include <svx/svdundo.hxx> -#include <vcl/group.hxx> -#include <vcl/fixed.hxx> -#include <sfx2/objsh.hxx> -#include <sfx2/request.hxx> -#include <sfx2/viewfrm.hxx> -#include <vcl/msgbox.hxx> -#include <svl/aeitem.hxx> -#include "svx/xtable.hxx" - -#include "strings.hrc" -#include "glob.hrc" -#include "drawdoc.hxx" -#include "ViewShell.hxx" -#include "anminfo.hxx" -#include "unoaprms.hxx" // Undo-Action -#include "sdundogr.hxx" // Undo Group -#include "View.hxx" -#include "sdabstdlg.hxx" -#include "sdresid.hxx" -#include <vcl/salbtype.hxx> // FRound -#include <basegfx/polygon/b2dpolygon.hxx> - -using namespace ::com::sun::star; - -namespace sd { - -TYPEINIT1( FuObjectAnimationParameters, FuPoor ); - -#define ATTR_MISSING 0 // Attribut nicht verfuegbar -#define ATTR_MIXED 1 // Attribut uneindeutig (bei Mehrfachselektion) -#define ATTR_SET 2 // Attribut eindeutig - -/************************************************************************* -|* -|* Konstruktor -|* -\************************************************************************/ - -FuObjectAnimationParameters::FuObjectAnimationParameters ( - ViewShell* pViewSh, - ::sd::Window* pWin, - ::sd::View* pView, - SdDrawDocument* pDoc, - SfxRequest& rReq) - : FuPoor(pViewSh, pWin, pView, pDoc, rReq) -{ -} - -FunctionReference FuObjectAnimationParameters::Create( ViewShell* pViewSh, ::sd::Window* pWin, ::sd::View* pView, SdDrawDocument* pDoc, SfxRequest& rReq ) -{ - FunctionReference xFunc( new FuObjectAnimationParameters( pViewSh, pWin, pView, pDoc, rReq ) ); - xFunc->DoExecute(rReq); - return xFunc; -} - -void FuObjectAnimationParameters::DoExecute( SfxRequest& rReq ) -{ - ::svl::IUndoManager* pUndoMgr = mpViewShell->GetViewFrame()->GetObjectShell()->GetUndoManager(); - - const SdrMarkList& rMarkList = mpView->GetMarkedObjectList(); - sal_uLong nCount = rMarkList.GetMarkCount(); - sal_uLong nObject = 0; - - short nAnimationSet = ATTR_MISSING; - short nEffectSet = ATTR_MISSING; - short nTextEffectSet = ATTR_MISSING; - short nSpeedSet = ATTR_MISSING; - short nFadeColorSet = ATTR_MISSING; - short nFadeOutSet = ATTR_MISSING; - short nInvisibleSet = ATTR_MISSING; - short nSoundOnSet = ATTR_MISSING; - short nSoundFileSet = ATTR_MISSING; - short nPlayFullSet = ATTR_MISSING; - short nClickActionSet = ATTR_MISSING; - short nBookmarkSet = ATTR_MISSING; - - short nSecondEffectSet = ATTR_MISSING; - short nSecondSpeedSet = ATTR_MISSING; - short nSecondSoundOnSet = ATTR_MISSING; - short nSecondPlayFullSet = ATTR_MISSING; - - // defaults (for Undo-Action) - presentation::AnimationEffect eEffect = presentation::AnimationEffect_NONE; - presentation::AnimationEffect eTextEffect = presentation::AnimationEffect_NONE; - presentation::AnimationSpeed eSpeed = presentation::AnimationSpeed_MEDIUM; - sal_Bool bActive = sal_False; - sal_Bool bFadeOut = sal_False; - Color aFadeColor = COL_LIGHTGRAY; - sal_Bool bInvisible = sal_False; - sal_Bool bSoundOn = sal_False; - String aSound; - sal_Bool bPlayFull = sal_False; - presentation::ClickAction eClickAction = presentation::ClickAction_NONE; - String aBookmark; - - presentation::AnimationEffect eSecondEffect = presentation::AnimationEffect_NONE; - presentation::AnimationSpeed eSecondSpeed = presentation::AnimationSpeed_MEDIUM; - sal_Bool bSecondSoundOn = sal_False; - sal_Bool bSecondPlayFull = sal_False; - - - SdAnimationInfo* pInfo; - SdrMark* pMark; - - // das erste Objekt untersuchen - pMark = rMarkList.GetMark(0); - pInfo = mpDoc->GetAnimationInfo(pMark->GetMarkedSdrObj()); - if( pInfo ) - { - bActive = pInfo->mbActive; - nAnimationSet = ATTR_SET; - - eEffect = pInfo->meEffect; - nEffectSet = ATTR_SET; - - eTextEffect = pInfo->meTextEffect; - nTextEffectSet = ATTR_SET; - - eSpeed = pInfo->meSpeed; - nSpeedSet = ATTR_SET; - - bFadeOut = pInfo->mbDimPrevious; - nFadeOutSet = ATTR_SET; - - aFadeColor = pInfo->maDimColor; - nFadeColorSet = ATTR_SET; - - bInvisible = pInfo->mbDimHide; - nInvisibleSet = ATTR_SET; - - bSoundOn = pInfo->mbSoundOn; - nSoundOnSet = ATTR_SET; - - aSound = pInfo->maSoundFile; - nSoundFileSet = ATTR_SET; - - bPlayFull = pInfo->mbPlayFull; - nPlayFullSet = ATTR_SET; - - eClickAction = pInfo->meClickAction; - nClickActionSet = ATTR_SET; - - aBookmark = pInfo->GetBookmark(); - nBookmarkSet = ATTR_SET; - - eSecondEffect = pInfo->meSecondEffect; - nSecondEffectSet = ATTR_SET; - - eSecondSpeed = pInfo->meSecondSpeed; - nSecondSpeedSet = ATTR_SET; - - bSecondSoundOn = pInfo->mbSecondSoundOn; - nSecondSoundOnSet = ATTR_SET; - - bSecondPlayFull = pInfo->mbSecondPlayFull; - nSecondPlayFullSet = ATTR_SET; - } - - // ggfs. weitere Objekte untersuchen - for( nObject = 1; nObject < nCount; nObject++ ) - { - pMark = rMarkList.GetMark( nObject ); - SdrObject* pObject = pMark->GetMarkedSdrObj(); - pInfo = mpDoc->GetAnimationInfo(pObject); - if( pInfo ) - { - if( bActive != pInfo->mbActive ) - nAnimationSet = ATTR_MIXED; - - if( eEffect != pInfo->meEffect ) - nEffectSet = ATTR_MIXED; - - if( eTextEffect != pInfo->meTextEffect ) - nTextEffectSet = ATTR_MIXED; - - if( eSpeed != pInfo->meSpeed ) - nSpeedSet = ATTR_MIXED; - - if( bFadeOut != pInfo->mbDimPrevious ) - nFadeOutSet = ATTR_MIXED; - - if( aFadeColor != pInfo->maDimColor ) - nFadeColorSet = ATTR_MIXED; - - if( bInvisible != pInfo->mbDimHide ) - nInvisibleSet = ATTR_MIXED; - - if( bSoundOn != pInfo->mbSoundOn ) - nSoundOnSet = ATTR_MIXED; - - if( aSound != pInfo->maSoundFile ) - nSoundFileSet = ATTR_MIXED; - - if( bPlayFull != pInfo->mbPlayFull ) - nPlayFullSet = ATTR_MIXED; - - if( eClickAction != pInfo->meClickAction ) - nClickActionSet = ATTR_MIXED; - - if( aBookmark != pInfo->GetBookmark() ) - nBookmarkSet = ATTR_MIXED; - - if( eSecondEffect != pInfo->meSecondEffect ) - nSecondEffectSet = ATTR_MIXED; - - if( eSecondSpeed != pInfo->meSecondSpeed ) - nSecondSpeedSet = ATTR_MIXED; - - if( bSecondSoundOn != pInfo->mbSecondSoundOn ) - nSecondSoundOnSet = ATTR_MIXED; - - if( bSecondPlayFull != pInfo->mbSecondPlayFull ) - nSecondPlayFullSet = ATTR_MIXED; - } - else - { - if (nAnimationSet == ATTR_SET && bActive == sal_True) - nAnimationSet = ATTR_MIXED; - - if (nEffectSet == ATTR_SET && eEffect != presentation::AnimationEffect_NONE) - nEffectSet = ATTR_MIXED; - - if (nTextEffectSet == ATTR_SET && eTextEffect != presentation::AnimationEffect_NONE) - nTextEffectSet = ATTR_MIXED; - - if (nSpeedSet == ATTR_SET) - nSpeedSet = ATTR_MIXED; - - if (nFadeOutSet == ATTR_SET && bFadeOut == sal_True) - nFadeOutSet = ATTR_MIXED; - - if (nFadeColorSet == ATTR_SET) - nFadeColorSet = ATTR_MIXED; - - if (nInvisibleSet == ATTR_SET && bInvisible == sal_True) - nInvisibleSet = ATTR_MIXED; - - if (nSoundOnSet == ATTR_SET && bSoundOn == sal_True) - nSoundOnSet = ATTR_MIXED; - - if (nSoundFileSet == ATTR_SET) - nSoundFileSet = ATTR_MIXED; - - if (nPlayFullSet == ATTR_SET && bPlayFull == sal_True) - nPlayFullSet = ATTR_MIXED; - - if (nClickActionSet == ATTR_SET && eClickAction != presentation::ClickAction_NONE) - nClickActionSet = ATTR_MIXED; - - if (nBookmarkSet == ATTR_SET) - nBookmarkSet = ATTR_MIXED; - - if (nSecondEffectSet == ATTR_SET && eSecondEffect != presentation::AnimationEffect_NONE) - nSecondEffectSet = ATTR_MIXED; - - if (nSecondSpeedSet == ATTR_SET) - nSecondSpeedSet = ATTR_MIXED; - - if (nSecondSoundOnSet == ATTR_SET && bSecondSoundOn == sal_True) - nSecondSoundOnSet = ATTR_MIXED; - - if (nSecondPlayFullSet == ATTR_SET && bSecondPlayFull == sal_True) - nSecondPlayFullSet = ATTR_MIXED; - } - } - - // Genau zwei Objekte mit Pfadeffekt? Dann gilt nur die Animationsinfo - // am bewegten Objekt. - if (nCount == 2) - { - SdrObject* pObject1 = rMarkList.GetMark(0)->GetMarkedSdrObj(); - SdrObject* pObject2 = rMarkList.GetMark(1)->GetMarkedSdrObj(); - SdrObjKind eKind1 = (SdrObjKind)pObject1->GetObjIdentifier(); - SdrObjKind eKind2 = (SdrObjKind)pObject2->GetObjIdentifier(); - SdAnimationInfo* pInfo1 = mpDoc->GetAnimationInfo(pObject1); - SdAnimationInfo* pInfo2 = mpDoc->GetAnimationInfo(pObject2); - pInfo = NULL; - - if (pObject1->GetObjInventor() == SdrInventor && - ((eKind1 == OBJ_LINE) || // 2-Punkt-Linie - (eKind1 == OBJ_PLIN) || // Polygon - (eKind1 == OBJ_PATHLINE)) && // Bezier-Kurve - (pInfo2 && pInfo2->meEffect == presentation::AnimationEffect_PATH)) - { - pInfo = pInfo2; - } - - if (pObject2->GetObjInventor() == SdrInventor && - ((eKind2 == OBJ_LINE) || // 2-Punkt-Linie - (eKind2 == OBJ_PLIN) || // Polygon - (eKind2 == OBJ_PATHLINE)) && // Bezier-Kurve - (pInfo1 && pInfo1->meEffect == presentation::AnimationEffect_PATH)) - { - pInfo = pInfo1; - } - - if (pInfo) - { - bActive = pInfo->mbActive; nAnimationSet = ATTR_SET; - eEffect = pInfo->meEffect; nEffectSet = ATTR_SET; - eTextEffect = pInfo->meTextEffect; nTextEffectSet = ATTR_SET; - eSpeed = pInfo->meSpeed; nSpeedSet = ATTR_SET; - bFadeOut = pInfo->mbDimPrevious; nFadeOutSet = ATTR_SET; - aFadeColor = pInfo->maDimColor; nFadeColorSet = ATTR_SET; - bInvisible = pInfo->mbDimHide; nInvisibleSet = ATTR_SET; - bSoundOn = pInfo->mbSoundOn; nSoundOnSet = ATTR_SET; - aSound = pInfo->maSoundFile; nSoundFileSet = ATTR_SET; - bPlayFull = pInfo->mbPlayFull; nPlayFullSet = ATTR_SET; - eClickAction = pInfo->meClickAction; nClickActionSet = ATTR_SET; - aBookmark = pInfo->GetBookmark(); nBookmarkSet = ATTR_SET; - eSecondEffect = pInfo->meSecondEffect; nSecondEffectSet = ATTR_SET; - eSecondSpeed = pInfo->meSecondSpeed; nSecondSpeedSet = ATTR_SET; - bSecondSoundOn = pInfo->mbSecondSoundOn; nSecondSoundOnSet = ATTR_SET; - bSecondPlayFull = pInfo->mbSecondPlayFull; nSecondPlayFullSet = ATTR_SET; - } - } - - const SfxItemSet* pArgs = rReq.GetArgs(); - - if(!pArgs) - { - // ItemSet fuer Dialog fuellen - SfxItemSet aSet(mpDoc->GetPool(), ATTR_ANIMATION_START, ATTR_ACTION_END); - - // das Set besetzen - if (nAnimationSet == ATTR_SET) - aSet.Put( SfxBoolItem( ATTR_ANIMATION_ACTIVE, bActive)); - else if (nAnimationSet == ATTR_MIXED) - aSet.InvalidateItem(ATTR_ANIMATION_ACTIVE); - else - aSet.Put(SfxBoolItem(ATTR_ANIMATION_ACTIVE, sal_False)); - - if (nEffectSet == ATTR_SET) - aSet.Put(SfxAllEnumItem(ATTR_ANIMATION_EFFECT, (sal_uInt16)eEffect)); - else if (nEffectSet == ATTR_MIXED) - aSet.InvalidateItem( ATTR_ANIMATION_EFFECT ); - else - aSet.Put(SfxAllEnumItem(ATTR_ANIMATION_EFFECT, presentation::AnimationEffect_NONE)); - - if (nTextEffectSet == ATTR_SET) - aSet.Put(SfxAllEnumItem(ATTR_ANIMATION_TEXTEFFECT, (sal_uInt16)eTextEffect)); - else if (nTextEffectSet == ATTR_MIXED) - aSet.InvalidateItem( ATTR_ANIMATION_TEXTEFFECT ); - else - aSet.Put(SfxAllEnumItem(ATTR_ANIMATION_TEXTEFFECT, presentation::AnimationEffect_NONE)); - - if (nSpeedSet == ATTR_SET) - aSet.Put(SfxAllEnumItem(ATTR_ANIMATION_SPEED, (sal_uInt16)eSpeed)); - else - aSet.InvalidateItem(ATTR_ANIMATION_SPEED); - - if (nFadeOutSet == ATTR_SET) - aSet.Put(SfxBoolItem(ATTR_ANIMATION_FADEOUT, bFadeOut)); - else if (nFadeOutSet == ATTR_MIXED) - aSet.InvalidateItem(ATTR_ANIMATION_FADEOUT); - else - aSet.Put(SfxBoolItem(ATTR_ANIMATION_FADEOUT, sal_False)); - - if (nFadeColorSet == ATTR_SET) - aSet.Put(SvxColorItem(aFadeColor, ATTR_ANIMATION_COLOR)); - else if (nFadeColorSet == ATTR_MIXED) - aSet.InvalidateItem(ATTR_ANIMATION_COLOR); - else - aSet.Put(SvxColorItem(RGB_Color(COL_LIGHTGRAY), ATTR_ANIMATION_COLOR)); - - if (nInvisibleSet == ATTR_SET) - aSet.Put(SfxBoolItem(ATTR_ANIMATION_INVISIBLE, bInvisible)); - else if (nInvisibleSet == ATTR_MIXED) - aSet.InvalidateItem(ATTR_ANIMATION_INVISIBLE); - else - aSet.Put(SfxBoolItem(ATTR_ANIMATION_INVISIBLE, sal_False)); - - if (nSoundOnSet == ATTR_SET) - aSet.Put(SfxBoolItem(ATTR_ANIMATION_SOUNDON, bSoundOn)); - else if (nSoundOnSet == ATTR_MIXED) - aSet.InvalidateItem(ATTR_ANIMATION_SOUNDON); - else - aSet.Put(SfxBoolItem(ATTR_ANIMATION_SOUNDON, sal_False)); - - if (nSoundFileSet == ATTR_SET) - aSet.Put(SfxStringItem(ATTR_ANIMATION_SOUNDFILE, aSound)); - else - aSet.InvalidateItem(ATTR_ANIMATION_SOUNDFILE); - - if (nPlayFullSet == ATTR_SET) - aSet.Put(SfxBoolItem(ATTR_ANIMATION_PLAYFULL, bPlayFull)); - else if (nPlayFullSet == ATTR_MIXED) - aSet.InvalidateItem(ATTR_ANIMATION_PLAYFULL); - else - aSet.Put(SfxBoolItem(ATTR_ANIMATION_PLAYFULL, sal_False)); - - if (nClickActionSet == ATTR_SET) - aSet.Put(SfxAllEnumItem(ATTR_ACTION, (sal_uInt16)eClickAction)); - else if (nClickActionSet == ATTR_MIXED) - aSet.InvalidateItem(ATTR_ACTION); - else - aSet.Put(SfxAllEnumItem(ATTR_ACTION, presentation::ClickAction_NONE)); - - if (nBookmarkSet == ATTR_SET) - aSet.Put(SfxStringItem(ATTR_ACTION_FILENAME, aBookmark)); - else - aSet.InvalidateItem(ATTR_ACTION_FILENAME); - - if (nSecondEffectSet == ATTR_SET) - aSet.Put(SfxAllEnumItem(ATTR_ACTION_EFFECT, (sal_uInt16)eSecondEffect)); - else if (nSecondEffectSet == ATTR_MIXED) - aSet.InvalidateItem( ATTR_ACTION_EFFECT ); - else - aSet.Put(SfxAllEnumItem(ATTR_ACTION_EFFECT, presentation::AnimationEffect_NONE)); - - if (nSecondSpeedSet == ATTR_SET) - aSet.Put(SfxAllEnumItem(ATTR_ACTION_EFFECTSPEED, (sal_uInt16)eSecondSpeed)); - else - aSet.InvalidateItem(ATTR_ACTION_EFFECTSPEED); - - if (nSecondSoundOnSet == ATTR_SET) - aSet.Put(SfxBoolItem(ATTR_ACTION_SOUNDON, bSecondSoundOn)); - else if (nSecondSoundOnSet == ATTR_MIXED) - aSet.InvalidateItem(ATTR_ACTION_SOUNDON); - else - aSet.Put(SfxBoolItem(ATTR_ACTION_SOUNDON, sal_False)); - - if (nSecondPlayFullSet == ATTR_SET) - aSet.Put(SfxBoolItem(ATTR_ACTION_PLAYFULL, bSecondPlayFull)); - else if (nPlayFullSet == ATTR_MIXED) - aSet.InvalidateItem(ATTR_ACTION_PLAYFULL); - else - aSet.Put(SfxBoolItem(ATTR_ACTION_PLAYFULL, sal_False)); - - SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create(); - SfxAbstractDialog* pDlg = pFact ? pFact->CreatSdActionDialog( NULL, &aSet, mpView ) : 0; - - sal_uInt16 nResult = pDlg ? pDlg->Execute() : RET_CANCEL; - - if( nResult == RET_OK ) - { - rReq.Done( *( pDlg->GetOutputItemSet() ) ); - pArgs = rReq.GetArgs(); - } - - delete pDlg; - - if( nResult != RET_OK ) - return; - } - - // Auswertung des ItemSets - if (pArgs->GetItemState(ATTR_ANIMATION_ACTIVE) == SFX_ITEM_SET) - { - bActive = ((SfxBoolItem&)pArgs->Get(ATTR_ANIMATION_ACTIVE)).GetValue(); - nAnimationSet = ATTR_SET; - } - else - nAnimationSet = ATTR_MISSING; - - if (pArgs->GetItemState(ATTR_ANIMATION_EFFECT) == SFX_ITEM_SET) - { - eEffect = (presentation::AnimationEffect)((SfxAllEnumItem&) pArgs-> - Get(ATTR_ANIMATION_EFFECT)).GetValue(); - nEffectSet = ATTR_SET; - } - else - nEffectSet = ATTR_MISSING; - - if (pArgs->GetItemState(ATTR_ANIMATION_TEXTEFFECT) == SFX_ITEM_SET) - { - eTextEffect = (presentation::AnimationEffect)((SfxAllEnumItem&) pArgs-> - Get(ATTR_ANIMATION_TEXTEFFECT)).GetValue(); - nTextEffectSet = ATTR_SET; - } - else - nTextEffectSet = ATTR_MISSING; - - if (pArgs->GetItemState(ATTR_ANIMATION_SPEED) == SFX_ITEM_SET) - { - eSpeed = (presentation::AnimationSpeed)((SfxAllEnumItem&) pArgs-> - Get(ATTR_ANIMATION_SPEED)).GetValue(); - nSpeedSet = ATTR_SET; - } - else - nSpeedSet = ATTR_MISSING; - - if (pArgs->GetItemState(ATTR_ANIMATION_FADEOUT) == SFX_ITEM_SET) - { - bFadeOut = ((SfxBoolItem&)pArgs->Get(ATTR_ANIMATION_FADEOUT)).GetValue(); - nFadeOutSet = ATTR_SET; - } - else - nFadeOutSet = ATTR_MISSING; - - if (pArgs->GetItemState(ATTR_ANIMATION_INVISIBLE) == SFX_ITEM_SET) - { - bInvisible = ((SfxBoolItem&)pArgs->Get(ATTR_ANIMATION_INVISIBLE)).GetValue(); - nInvisibleSet = ATTR_SET; - } - else - nInvisibleSet = ATTR_MISSING; - - if (pArgs->GetItemState(ATTR_ANIMATION_SOUNDON) == SFX_ITEM_SET) - { - bSoundOn = ((SfxBoolItem&)pArgs->Get(ATTR_ANIMATION_SOUNDON)).GetValue(); - nSoundOnSet = ATTR_SET; - } - else - nSoundOnSet = ATTR_MISSING; - - if (pArgs->GetItemState(ATTR_ANIMATION_SOUNDFILE) == SFX_ITEM_SET) - { - aSound = ((SfxStringItem&)pArgs->Get(ATTR_ANIMATION_SOUNDFILE)).GetValue(); - nSoundFileSet = ATTR_SET; - } - else - nSoundFileSet = ATTR_MISSING; - - if (pArgs->GetItemState(ATTR_ANIMATION_COLOR) == SFX_ITEM_SET) - { - aFadeColor = ((SvxColorItem&)pArgs->Get(ATTR_ANIMATION_COLOR)).GetValue(); - nFadeColorSet = ATTR_SET; - } - else - nFadeColorSet = ATTR_MISSING; - - if (pArgs->GetItemState(ATTR_ANIMATION_PLAYFULL) == SFX_ITEM_SET) - { - bPlayFull = ((SfxBoolItem&)pArgs->Get(ATTR_ANIMATION_PLAYFULL)).GetValue(); - nPlayFullSet = ATTR_SET; - } - else - nPlayFullSet = ATTR_MISSING; - - if (pArgs->GetItemState(ATTR_ACTION) == SFX_ITEM_SET) - { - eClickAction = (presentation::ClickAction)((SfxAllEnumItem&)pArgs-> - Get(ATTR_ACTION)).GetValue(); - nClickActionSet = ATTR_SET; - } - else - nClickActionSet = ATTR_MISSING; - - if (pArgs->GetItemState(ATTR_ACTION_FILENAME) == SFX_ITEM_SET) - { - aBookmark = ((SfxStringItem&)pArgs-> - Get(ATTR_ACTION_FILENAME)).GetValue(); - nBookmarkSet = ATTR_SET; - } - else - nBookmarkSet = ATTR_MISSING; - - if (pArgs->GetItemState(ATTR_ACTION_EFFECT) == SFX_ITEM_SET) - { - eSecondEffect = (presentation::AnimationEffect)((SfxAllEnumItem&) pArgs-> - Get(ATTR_ACTION_EFFECT)).GetValue(); - nSecondEffectSet = ATTR_SET; - } - else - nSecondEffectSet = ATTR_MISSING; - - if (pArgs->GetItemState(ATTR_ACTION_EFFECTSPEED) == SFX_ITEM_SET) - { - eSecondSpeed = (presentation::AnimationSpeed)((SfxAllEnumItem&) pArgs-> - Get(ATTR_ACTION_EFFECTSPEED)).GetValue(); - nSecondSpeedSet = ATTR_SET; - } - else - nSecondSpeedSet = ATTR_MISSING; - - if (pArgs->GetItemState(ATTR_ACTION_SOUNDON) == SFX_ITEM_SET) - { - bSecondSoundOn = ((SfxBoolItem&)pArgs->Get(ATTR_ACTION_SOUNDON)).GetValue(); - nSecondSoundOnSet = ATTR_SET; - } - else - nSecondSoundOnSet = ATTR_MISSING; - - if (pArgs->GetItemState(ATTR_ACTION_PLAYFULL) == SFX_ITEM_SET) - { - bSecondPlayFull = ((SfxBoolItem&)pArgs->Get(ATTR_ACTION_PLAYFULL)).GetValue(); - nSecondPlayFullSet = ATTR_SET; - } - else - nSecondPlayFullSet = ATTR_MISSING; - - // Wenn irgendwelche Attribute ausgewaehlt wurden - if (nEffectSet == ATTR_SET || - nTextEffectSet == ATTR_SET || - nSpeedSet == ATTR_SET || - nAnimationSet == ATTR_SET || - nFadeOutSet == ATTR_SET || - nFadeColorSet == ATTR_SET || - nInvisibleSet == ATTR_SET || - nSoundOnSet == ATTR_SET || - nSoundFileSet == ATTR_SET || - nPlayFullSet == ATTR_SET || - nClickActionSet == ATTR_SET || - nBookmarkSet == ATTR_SET || - nSecondEffectSet == ATTR_SET || - nSecondSpeedSet == ATTR_SET || - nSecondSoundOnSet == ATTR_SET || - nSecondPlayFullSet == ATTR_SET) - { - // String fuer Undo-Group und List-Action - String aComment(SdResId(STR_UNDO_ANIMATION)); - - // bei 'an Kurve entlang' gibt's noch eine extra UndoAction, darum - // hier klammern - pUndoMgr->EnterListAction(aComment, aComment); - - // Undo Gruppe erzeugen - SdUndoGroup* pUndoGroup = new SdUndoGroup(mpDoc); - pUndoGroup->SetComment(aComment); - - - // fuer den Pfad-Effekt einige Dinge merken - SdrObject* pRunningObj = NULL; - SdrPathObj* pPath = NULL; - if (eEffect == presentation::AnimationEffect_PATH && nEffectSet == ATTR_SET) - { - DBG_ASSERT(nCount == 2, "dieser Effekt braucht genau 2 selektierte Objekte"); - SdrObject* pObject1 = rMarkList.GetMark(0)->GetMarkedSdrObj(); - SdrObject* pObject2 = rMarkList.GetMark(1)->GetMarkedSdrObj(); - SdrObjKind eKind1 = (SdrObjKind)pObject1->GetObjIdentifier(); - SdrObjKind eKind2 = (SdrObjKind)pObject2->GetObjIdentifier(); - - if (pObject1->GetObjInventor() == SdrInventor && - ((eKind1 == OBJ_LINE) || // 2-Punkt-Linie - (eKind1 == OBJ_PLIN) || // Polygon - (eKind1 == OBJ_PATHLINE))) // Bezier-Kurve - { - pPath = (SdrPathObj*)pObject1; - pRunningObj = pObject2; - } - - if (pObject2->GetObjInventor() == SdrInventor && - ((eKind2 == OBJ_LINE) || // 2-Punkt-Linie - (eKind2 == OBJ_PLIN) || // Polygon - (eKind2 == OBJ_PATHLINE))) // Bezier-Kurve - { - pPath = (SdrPathObj*)pObject2; - pRunningObj = pObject1; - } - - DBG_ASSERT(pPath, "keine Kurve gefunden"); - - - // das laufende Objekt auf das Kurvenende schieben - Rectangle aCurRect(pRunningObj->GetLogicRect()); - Point aCurCenter(aCurRect.Center()); - const ::basegfx::B2DPolyPolygon& rPolyPolygon = pPath->GetPathPoly(); - sal_uInt32 nNoOfPolygons(rPolyPolygon.count()); - const ::basegfx::B2DPolygon aPolygon(rPolyPolygon.getB2DPolygon(nNoOfPolygons - 1L)); - sal_uInt32 nPoints(aPolygon.count()); - const ::basegfx::B2DPoint aNewB2DCenter(aPolygon.getB2DPoint(nPoints - 1L)); - const Point aNewCenter(FRound(aNewB2DCenter.getX()), FRound(aNewB2DCenter.getY())); - Size aDistance(aNewCenter.X() - aCurCenter.X(), aNewCenter.Y() - aCurCenter.Y()); - pRunningObj->Move(aDistance); - - pUndoMgr->AddUndoAction(mpDoc->GetSdrUndoFactory().CreateUndoMoveObject( *pRunningObj, aDistance)); - } - - for (nObject = 0; nObject < nCount; nObject++) - { - SdrObject* pObject = rMarkList.GetMark(nObject)->GetMarkedSdrObj(); - - pInfo = mpDoc->GetAnimationInfo(pObject); - - sal_Bool bCreated = sal_False; - if( !pInfo ) - { - pInfo = SdDrawDocument::GetShapeUserData(*pObject,true); - bCreated = sal_True; - } - - // das Pfadobjekt fuer 'an Kurve entlang'? - if (eEffect == presentation::AnimationEffect_PATH && pObject == pPath) - { - SdAnimationPrmsUndoAction* pAction = new SdAnimationPrmsUndoAction - (mpDoc, pObject, bCreated); - pAction->SetActive(pInfo->mbActive, pInfo->mbActive); - pAction->SetEffect(pInfo->meEffect, pInfo->meEffect); - pAction->SetTextEffect(pInfo->meTextEffect, pInfo->meTextEffect); - pAction->SetSpeed(pInfo->meSpeed, pInfo->meSpeed); - pAction->SetDim(pInfo->mbDimPrevious, pInfo->mbDimPrevious); - pAction->SetDimColor(pInfo->maDimColor, pInfo->maDimColor); - pAction->SetDimHide(pInfo->mbDimHide, pInfo->mbDimHide); - pAction->SetSoundOn(pInfo->mbSoundOn, pInfo->mbSoundOn); - pAction->SetSound(pInfo->maSoundFile, pInfo->maSoundFile); - pAction->SetPlayFull(pInfo->mbPlayFull, pInfo->mbPlayFull); - pAction->SetClickAction(pInfo->meClickAction, pInfo->meClickAction); - pAction->SetBookmark(pInfo->GetBookmark(), pInfo->GetBookmark()); - pAction->SetVerb(pInfo->mnVerb, pInfo->mnVerb); - pAction->SetSecondEffect(pInfo->meSecondEffect, pInfo->meSecondEffect); - pAction->SetSecondSpeed(pInfo->meSecondSpeed, pInfo->meSecondSpeed); - pAction->SetSecondSoundOn(pInfo->mbSecondSoundOn, pInfo->mbSecondSoundOn); - pAction->SetSecondPlayFull(pInfo->mbSecondPlayFull, pInfo->mbSecondPlayFull); - pUndoGroup->AddAction(pAction); - - } - else - { - - // Undo-Action mit alten und neuen Groessen erzeugen - SdAnimationPrmsUndoAction* pAction = new SdAnimationPrmsUndoAction - (mpDoc, pObject, bCreated); - pAction->SetActive(pInfo->mbActive, bActive); - pAction->SetEffect(pInfo->meEffect, eEffect); - pAction->SetTextEffect(pInfo->meTextEffect, eTextEffect); - pAction->SetSpeed(pInfo->meSpeed, eSpeed); - pAction->SetDim(pInfo->mbDimPrevious, bFadeOut); - pAction->SetDimColor(pInfo->maDimColor, aFadeColor); - pAction->SetDimHide(pInfo->mbDimHide, bInvisible); - pAction->SetSoundOn(pInfo->mbSoundOn, bSoundOn); - pAction->SetSound(pInfo->maSoundFile, aSound); - pAction->SetPlayFull(pInfo->mbPlayFull, bPlayFull); - pAction->SetPathObj(pInfo->mpPathObj, pPath); - pAction->SetClickAction(pInfo->meClickAction, eClickAction); - pAction->SetBookmark(pInfo->GetBookmark(), aBookmark); - pAction->SetVerb(pInfo->mnVerb, (sal_uInt16)pInfo->GetBookmark().ToInt32() ); - pAction->SetSecondEffect(pInfo->meSecondEffect, eSecondEffect); - pAction->SetSecondSpeed(pInfo->meSecondSpeed, eSecondSpeed); - pAction->SetSecondSoundOn(pInfo->mbSecondSoundOn, bSecondSoundOn); - pAction->SetSecondPlayFull(pInfo->mbSecondPlayFull,bSecondPlayFull); - pUndoGroup->AddAction(pAction); - - // neue Werte am Infoblock des Objekts eintragen - if (nAnimationSet == ATTR_SET) - pInfo->mbActive = bActive; - - if (nEffectSet == ATTR_SET) - pInfo->meEffect = eEffect; - - if (nTextEffectSet == ATTR_SET) - pInfo->meTextEffect = eTextEffect; - - if (nSpeedSet == ATTR_SET) - pInfo->meSpeed = eSpeed; - - if (nFadeOutSet == ATTR_SET) - pInfo->mbDimPrevious = bFadeOut; - - if (nFadeColorSet == ATTR_SET) - pInfo->maDimColor = aFadeColor; - - if (nInvisibleSet == ATTR_SET) - pInfo->mbDimHide = bInvisible; - - if (nSoundOnSet == ATTR_SET) - pInfo->mbSoundOn = bSoundOn; - - if (nSoundFileSet == ATTR_SET) - pInfo->maSoundFile = aSound; - - if (nPlayFullSet == ATTR_SET) - pInfo->mbPlayFull = bPlayFull; - - if (nClickActionSet == ATTR_SET) - pInfo->meClickAction = eClickAction; - - if (nBookmarkSet == ATTR_SET) - pInfo->SetBookmark( aBookmark ); - - if (nSecondEffectSet == ATTR_SET) - pInfo->meSecondEffect = eSecondEffect; - - if (nSecondSpeedSet == ATTR_SET) - pInfo->meSecondSpeed = eSecondSpeed; - - if (nSecondSoundOnSet == ATTR_SET) - pInfo->mbSecondSoundOn = bSecondSoundOn; - - if (nSecondPlayFullSet == ATTR_SET) - pInfo->mbSecondPlayFull = bSecondPlayFull; - - if (eClickAction == presentation::ClickAction_VERB) - pInfo->mnVerb = (sal_uInt16)aBookmark.ToInt32(); - } - } - // Set the Undo Group in of the Undo Manager - pUndoMgr->AddUndoAction(pUndoGroup); - pUndoMgr->LeaveListAction(); - - // Model changed - mpDoc->SetChanged(); - } - // sieht man nicht, also muss an den Bindings nicht invalidiert werden -} - -} // end of namespace sd - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |