blob: d146c2c78095340fae8152a209be5cc288d5fd46 [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"
#ifndef _COM_SUN_STAR_UTIL_XCOLLATOR_HPP_
#include <com/sun/star/i18n/XCollator.hpp>
#endif
#ifndef _UNOTOOLS_PROCESSFACTORY_HXX
#include <comphelper/processfactory.hxx>
#endif
#include <vcl/svapp.hxx>
#include <vcl/tabctrl.hxx>
#include <vcl/tabpage.hxx>
#ifndef _SV_BUTTON_HXX
#include <vcl/button.hxx>
#endif
#include <vcl/fixed.hxx>
#include <vcl/lstbox.hxx>
#include <vcl/combobox.hxx>
#include <svtools/valueset.hxx>
#include <svx/svdetc.hxx>
#include <svx/svdstr.hrc>
#include "sdresid.hxx"
#include <unotools/viewoptions.hxx>
#include <com/sun/star/presentation/EffectNodeType.hpp>
#include "CustomAnimationCreateDialog.hxx"
#ifndef _SD_CUSTOMANIMATIONCREATEDIALOG_HRC
#include "CustomAnimationCreateDialog.hrc"
#endif
#ifndef _SD_CUSTOMANIMATION_HRC
#include "CustomAnimation.hrc"
#endif
#include "CustomAnimationPane.hxx"
#include "optsitem.hxx"
#include "sddll.hxx"
#include "helpids.h"
using namespace ::com::sun::star;
using ::rtl::OUString;
using ::com::sun::star::uno::UNO_QUERY;
using ::com::sun::star::uno::UNO_QUERY_THROW;
using ::com::sun::star::uno::Any;
using ::com::sun::star::uno::Reference;
using ::com::sun::star::uno::Exception;
using namespace ::com::sun::star::presentation;
namespace sd {
const int ENTRANCE = 0;
const int EMPHASIS = 1;
const int EXIT = 2;
const int MOTIONPATH = 3;
const int MISCEFFECTS = 4;
extern void fillDurationComboBox( ComboBox* pBox );
// --------------------------------------------------------------------
class CategoryListBox : public ListBox
{
public:
CategoryListBox( Window* pParent, const ResId& rResId );
~CategoryListBox();
virtual void MouseButtonUp( const MouseEvent& rMEvt );
sal_uInt16 InsertCategory( const XubString& rStr, sal_uInt16 nPos = LISTBOX_APPEND );
void SetDoubleClickLink( const Link& rDoubleClickHdl ) { maDoubleClickHdl = rDoubleClickHdl; }
DECL_LINK( implDoubleClickHdl, Control* );
private:
virtual void UserDraw( const UserDrawEvent& rUDEvt );
Link maDoubleClickHdl;
};
CategoryListBox::CategoryListBox( Window* pParent, const ResId& rResId )
: ListBox( pParent, rResId )
{
EnableUserDraw( sal_True );
SetDoubleClickHdl( LINK( this, CategoryListBox, implDoubleClickHdl ) );
}
CategoryListBox::~CategoryListBox()
{
}
sal_uInt16 CategoryListBox::InsertCategory( const XubString& rStr, sal_uInt16 nPos /* = LISTBOX_APPEND */ )
{
sal_uInt16 n = ListBox::InsertEntry( rStr, nPos );
if( n != LISTBOX_ENTRY_NOTFOUND )
ListBox::SetEntryFlags( n, ListBox::GetEntryFlags(n) | LISTBOX_ENTRY_FLAG_DISABLE_SELECTION );
return n;
}
void CategoryListBox::UserDraw( const UserDrawEvent& rUDEvt )
{
const sal_uInt16 nItem = rUDEvt.GetItemId();
if( ListBox::GetEntryFlags(nItem) & LISTBOX_ENTRY_FLAG_DISABLE_SELECTION )
{
Rectangle aOutRect( rUDEvt.GetRect() );
OutputDevice* pDev = rUDEvt.GetDevice();
// fill the background
Color aColor (GetSettings().GetStyleSettings().GetDialogColor());
pDev->SetFillColor (aColor);
pDev->SetLineColor ();
pDev->DrawRect(aOutRect);
// Erase the four corner pixels to make the rectangle appear rounded.
pDev->SetLineColor( GetSettings().GetStyleSettings().GetWindowColor());
pDev->DrawPixel( aOutRect.TopLeft());
pDev->DrawPixel( Point(aOutRect.Right(), aOutRect.Top()));
pDev->DrawPixel( Point(aOutRect.Left(), aOutRect.Bottom()));
pDev->DrawPixel( Point(aOutRect.Right(), aOutRect.Bottom()));
// draw the category title
pDev->DrawText (aOutRect, GetEntry(nItem), TEXT_DRAW_CENTER );
}
else
{
DrawEntry( rUDEvt, sal_True, sal_True );
}
}
// --------------------------------------------------------------------
IMPL_LINK( CategoryListBox, implDoubleClickHdl, Control*, EMPTYARG )
{
CaptureMouse();
return 0;
}
// --------------------------------------------------------------------
void CategoryListBox::MouseButtonUp( const MouseEvent& rMEvt )
{
ReleaseMouse();
if( rMEvt.IsLeft() && (rMEvt.GetClicks() == 2) )
{
if( maDoubleClickHdl.IsSet() )
maDoubleClickHdl.Call( this );
}
else
{
ListBox::MouseButtonUp( rMEvt );
}
}
// --------------------------------------------------------------------
class CustomAnimationCreateTabPage : public TabPage
{
public:
CustomAnimationCreateTabPage( Window* pParent, CustomAnimationCreateDialog* pDialogParent, int nTabId, const PresetCategoryList& rCategoryList, bool bHasText );
~CustomAnimationCreateTabPage();
PathKind getCreatePathKind() const;
CustomAnimationPresetPtr getSelectedPreset() const;
double getDuration() const;
void setDuration( double fDuration );
bool getIsPreview() const;
void setIsPreview( bool bIsPreview );
bool select( const OUString& rsPresetId );
private:
DECL_LINK( implSelectHdl, Control* );
DECL_LINK( implDoubleClickHdl, Control* );
void onSelectEffect();
void clearEffects();
private:
CategoryListBox* mpLBEffects;
FixedText* mpFTSpeed;
ComboBox* mpCBSpeed;
CheckBox* mpCBXPReview;
CustomAnimationCreateDialog* mpParent;
sal_uInt16 mnCurvePathPos;
sal_uInt16 mnPolygonPathPos;
sal_uInt16 mnFreeformPathPos;
};
struct ImplStlEffectCategorySortHelper
{
ImplStlEffectCategorySortHelper();
bool operator()( const CustomAnimationPresetPtr& p1, const CustomAnimationPresetPtr& p2 );
private:
uno::Reference< i18n::XCollator > mxCollator;
};
ImplStlEffectCategorySortHelper::ImplStlEffectCategorySortHelper()
{
uno::Reference<lang::XMultiServiceFactory> xFac( ::comphelper::getProcessServiceFactory() );
if( xFac.is() )
{
mxCollator.set( xFac->createInstance( ::rtl::OUString::createFromAscii( "com.sun.star.i18n.Collator" ) ), uno::UNO_QUERY );
if( mxCollator.is() )
{
const lang::Locale& rLocale = Application::GetSettings().GetLocale();
mxCollator->loadDefaultCollator(rLocale, 0);
}
}
}
bool ImplStlEffectCategorySortHelper::operator()( const CustomAnimationPresetPtr& p1, const CustomAnimationPresetPtr& p2 )
{
return mxCollator.is() ? mxCollator->compareString(p1->getLabel(), p2->getLabel()) == -1 : false;
}
CustomAnimationCreateTabPage::CustomAnimationCreateTabPage( Window* pParent, CustomAnimationCreateDialog* pDialogParent, int nTabId, const PresetCategoryList& rCategoryList, bool bHasText )
: TabPage( pParent, SdResId( RID_TP_CUSTOMANIMATION_ENTRANCE ) )
, mpParent( pDialogParent )
, mnCurvePathPos( LISTBOX_ENTRY_NOTFOUND )
, mnPolygonPathPos( LISTBOX_ENTRY_NOTFOUND )
, mnFreeformPathPos( LISTBOX_ENTRY_NOTFOUND )
{
mpLBEffects = new CategoryListBox( this, SdResId( LB_EFFECTS ) );
mpFTSpeed = new FixedText( this, SdResId( FT_SPEED ) );
mpCBSpeed = new ComboBox( this, SdResId( CB_SPEED ) );
mpCBXPReview = new CheckBox( this, SdResId( CBX_PREVIEW ) );
String sMotionPathLabel( SdResId( STR_USERPATH ) );
FreeResource();
sal_uInt16 nFirstEffect = LISTBOX_ENTRY_NOTFOUND;
if( nTabId == MOTIONPATH )
{
mpLBEffects->InsertCategory( sMotionPathLabel );
mnCurvePathPos = nFirstEffect = mpLBEffects->InsertEntry( sdr::GetResourceString(STR_ObjNameSingulCOMBLINE) );
mnPolygonPathPos = mpLBEffects->InsertEntry( sdr::GetResourceString(STR_ObjNameSingulPOLY) );
mnFreeformPathPos = mpLBEffects->InsertEntry( sdr::GetResourceString(STR_ObjNameSingulFREELINE) );
};
PresetCategoryList::const_iterator aCategoryIter( rCategoryList.begin() );
const PresetCategoryList::const_iterator aCategoryEnd( rCategoryList.end() );
while( aCategoryIter != aCategoryEnd )
{
PresetCategoryPtr pCategory( *aCategoryIter++ );
if( pCategory.get() )
{
mpLBEffects->InsertCategory( pCategory->maLabel );
std::vector< CustomAnimationPresetPtr > aSortedVector(pCategory->maEffects.size());
std::copy( pCategory->maEffects.begin(), pCategory->maEffects.end(), aSortedVector.begin() );
ImplStlEffectCategorySortHelper aSortHelper;
std::sort( aSortedVector.begin(), aSortedVector.end(), aSortHelper );
std::vector< CustomAnimationPresetPtr >::const_iterator aIter( aSortedVector.begin() );
const std::vector< CustomAnimationPresetPtr >::const_iterator aEnd( aSortedVector.end() );
while( aIter != aEnd )
{
CustomAnimationPresetPtr pDescriptor = (*aIter++);
if( pDescriptor.get() && (bHasText || !pDescriptor->isTextOnly() ) )
{
sal_uInt16 nPos = mpLBEffects->InsertEntry( pDescriptor->getLabel() );
mpLBEffects->SetEntryData( nPos, static_cast<void*>( new CustomAnimationPresetPtr( pDescriptor ) ) );
if( nFirstEffect == LISTBOX_ENTRY_NOTFOUND )
nFirstEffect = nPos;
}
}
}
}
mpLBEffects->SelectEntryPos( nFirstEffect );
fillDurationComboBox( mpCBSpeed );
if( nFirstEffect != LISTBOX_ENTRY_NOTFOUND )
onSelectEffect();
mpLBEffects->SetSelectHdl( LINK( this, CustomAnimationCreateTabPage, implSelectHdl ) );
mpLBEffects->SetDoubleClickLink( LINK( this, CustomAnimationCreateTabPage, implDoubleClickHdl ) );
}
CustomAnimationCreateTabPage::~CustomAnimationCreateTabPage()
{
clearEffects();
delete mpLBEffects;
delete mpFTSpeed;
delete mpCBSpeed;
delete mpCBXPReview;
}
IMPL_LINK( CustomAnimationCreateTabPage, implSelectHdl, Control*, pControl )
{
if( pControl == mpLBEffects )
onSelectEffect();
return 0;
}
IMPL_LINK( CustomAnimationCreateTabPage, implDoubleClickHdl, Control*, pControl )
{
if( pControl == mpLBEffects )
{
if( mpLBEffects->GetSelectEntryCount() )
mpParent->EndDialog( sal_True );
}
return 0;
}
void CustomAnimationCreateTabPage::onSelectEffect()
{
CustomAnimationPresetPtr*p = static_cast< CustomAnimationPresetPtr* >( mpLBEffects->GetEntryData( mpLBEffects->GetSelectEntryPos() ) );
if( !p )
return;
CustomAnimationPresetPtr pPreset( *p );
const double fDuration = pPreset->getDuration();
sal_uInt16 nPos = 0xffff;
if( fDuration == 5.0 )
nPos = 0;
else if( fDuration == 3.0 )
nPos = 1;
else if( fDuration == 2.0 )
nPos = 2;
else if( fDuration == 1.0 )
nPos = 3;
else if( fDuration == 0.5 )
nPos = 4;
mpCBSpeed->SelectEntryPos( nPos );
bool bHasSpeed = pPreset->getDuration() > 0.001;
mpCBSpeed->Enable( bHasSpeed );
mpFTSpeed->Enable( bHasSpeed );
if( mpCBXPReview->IsChecked() )
{
mpParent->preview( pPreset );
}
}
void CustomAnimationCreateTabPage::clearEffects()
{
sal_uInt16 nPos = mpLBEffects->GetEntryCount();
while( nPos-- )
delete static_cast< CustomAnimationPresetPtr* >( mpLBEffects->GetEntryData( nPos ) );
mpLBEffects->Clear();
}
CustomAnimationPresetPtr CustomAnimationCreateTabPage::getSelectedPreset() const
{
CustomAnimationPresetPtr pPreset;
if( mpLBEffects->GetSelectEntryCount() == 1 )
{
void* pEntryData = mpLBEffects->GetEntryData( mpLBEffects->GetSelectEntryPos() );
if( pEntryData )
pPreset = *static_cast< CustomAnimationPresetPtr* >( pEntryData );
}
return pPreset;
}
PathKind CustomAnimationCreateTabPage::getCreatePathKind() const
{
PathKind eKind = NONE;
if( mpLBEffects->GetSelectEntryCount() == 1 )
{
const sal_uInt16 nPos = mpLBEffects->GetSelectEntryPos();
if( nPos == mnCurvePathPos )
{
eKind = CURVE;
}
else if( nPos == mnPolygonPathPos )
{
eKind = POLYGON;
}
else if( nPos == mnFreeformPathPos )
{
eKind = FREEFORM;
}
}
return eKind;
}
double CustomAnimationCreateTabPage::getDuration() const
{
sal_uInt16 nPos = mpCBSpeed->GetSelectEntryPos();
if( (nPos == 0xffff) || !mpCBSpeed->IsEnabled() )
{
CustomAnimationPresetPtr pPreset = getSelectedPreset();
if( pPreset.get() )
return pPreset->getDuration();
}
switch( nPos )
{
case 0: return 5.0f;
case 1: return 3.0f;
case 2: return 2.0f;
case 3: return 1.0f;
case 4: return 0.5f;
}
return 0.0f;
}
void CustomAnimationCreateTabPage::setDuration( double fDuration )
{
sal_uInt16 nPos = 0;
if( fDuration < 2.0f )
{
if( fDuration < 1.0f )
{
nPos = 4;
}
else
{
nPos = 3;
}
}
else if( fDuration < 5.0f )
{
if( fDuration < 3.0f )
{
nPos = 2;
}
else
{
nPos = 1;
}
}
mpCBSpeed->SelectEntryPos( nPos );
}
bool CustomAnimationCreateTabPage::getIsPreview() const
{
return mpCBXPReview->IsChecked() ? true : false;
}
void CustomAnimationCreateTabPage::setIsPreview( bool bIsPreview )
{
mpCBXPReview->Check( bIsPreview ? sal_True : sal_False );
}
bool CustomAnimationCreateTabPage::select( const OUString& rsPresetId )
{
sal_uInt16 nPos = mpLBEffects->GetEntryCount();
while( nPos-- )
{
void* pEntryData = mpLBEffects->GetEntryData( nPos );
if( pEntryData )
{
CustomAnimationPresetPtr& pPtr = *static_cast< CustomAnimationPresetPtr* >(pEntryData);
if( pPtr.get() && pPtr->getPresetId() == rsPresetId )
{
mpLBEffects->SelectEntryPos( nPos );
return true;
}
}
}
return false;
}
// --------------------------------------------------------------------
CustomAnimationCreateDialog::CustomAnimationCreateDialog( Window* pParent, CustomAnimationPane* pPane, const std::vector< ::com::sun::star::uno::Any >& rTargets, bool bHasText, const ::rtl::OUString& rsPresetId, double fDuration )
: TabDialog( pParent, SdResId( DLG_CUSTOMANIMATION_CREATE ) )
, mpPane( pPane )
, mrTargets( rTargets )
, mfDuration( fDuration )
{
mpTabControl = new TabControl( this, SdResId( 1 ) );
mpOKButton = new OKButton(this, SdResId( 1 ) ) ;
mpCancelButton = new CancelButton(this, SdResId( 1 ) );
mpHelpButton = new HelpButton(this, SdResId( 1 ) );
FreeResource();
SdOptions* pOptions = SD_MOD()->GetSdOptions(DOCUMENT_TYPE_IMPRESS);
mbIsPreview = pOptions->IsPreviewNewEffects();
const CustomAnimationPresets& rPresets = CustomAnimationPresets::getCustomAnimationPresets();
mpTabPages[ENTRANCE] = new CustomAnimationCreateTabPage( mpTabControl, this, ENTRANCE, rPresets.getEntrancePresets(), bHasText );
mpTabPages[ENTRANCE]->SetHelpId( HID_SD_CUSTOMANIMATIONDIALOG_ENTRANCE );
mpTabControl->SetTabPage( RID_TP_CUSTOMANIMATION_ENTRANCE, mpTabPages[ENTRANCE] );
mpTabPages[EMPHASIS] = new CustomAnimationCreateTabPage( mpTabControl, this, EMPHASIS, rPresets.getEmphasisPresets(), bHasText );
mpTabPages[EMPHASIS]->SetHelpId( HID_SD_CUSTOMANIMATIONDIALOG_EMPHASIS );
mpTabControl->SetTabPage( RID_TP_CUSTOMANIMATION_EMPHASIS, mpTabPages[EMPHASIS] );
mpTabPages[EXIT] = new CustomAnimationCreateTabPage( mpTabControl, this, EXIT, rPresets.getExitPresets(), bHasText );
mpTabPages[EXIT]->SetHelpId( HID_SD_CUSTOMANIMATIONDIALOG_EXIT );
mpTabControl->SetTabPage( RID_TP_CUSTOMANIMATION_EXIT, mpTabPages[EXIT] );
mpTabPages[MOTIONPATH] = new CustomAnimationCreateTabPage( mpTabControl, this, MOTIONPATH, rPresets.getMotionPathsPresets(), bHasText );
mpTabPages[MOTIONPATH]->SetHelpId( HID_SD_CUSTOMANIMATIONDIALOG_MOTIONPATH );
mpTabControl->SetTabPage( RID_TP_CUSTOMANIMATION_MOTIONPATH, mpTabPages[MOTIONPATH] );
mpTabPages[MISCEFFECTS] = new CustomAnimationCreateTabPage( mpTabControl, this, MISCEFFECTS, rPresets.getMiscPresets(), bHasText );
mpTabPages[MISCEFFECTS]->SetHelpId( HID_SD_CUSTOMANIMATIONDIALOG_MISCEFFECTS );
mpTabControl->SetTabPage( RID_TP_CUSTOMANIMATION_MISCEFFECTS, mpTabPages[MISCEFFECTS] );
getCurrentPage()->setDuration( mfDuration );
getCurrentPage()->setIsPreview( mbIsPreview );
mpTabControl->SetActivatePageHdl( LINK( this, CustomAnimationCreateDialog, implActivatePagekHdl ) );
mpTabControl->SetDeactivatePageHdl( LINK( this, CustomAnimationCreateDialog, implDeactivatePagekHdl ) );
setPosition();
// select current preset if available
if( rsPresetId.getLength() != 0 )
{
for( sal_uInt16 i = ENTRANCE; i <= MOTIONPATH; i++ )
{
if( mpTabPages[i]->select( rsPresetId ) )
{
mpTabControl->SetCurPageId( RID_TP_CUSTOMANIMATION_ENTRANCE + i );
break;
}
}
}
}
CustomAnimationCreateDialog::~CustomAnimationCreateDialog()
{
storePosition();
SdOptions* pOptions = SD_MOD()->GetSdOptions(DOCUMENT_TYPE_IMPRESS);
pOptions->SetPreviewNewEffects( getCurrentPage()->getIsPreview() );
delete mpTabPages[ENTRANCE];
delete mpTabPages[EMPHASIS];
delete mpTabPages[EXIT];
delete mpTabPages[MOTIONPATH];
delete mpTabPages[MISCEFFECTS];
delete mpTabControl;
delete mpOKButton;
delete mpCancelButton;
delete mpHelpButton;
}
CustomAnimationCreateTabPage* CustomAnimationCreateDialog::getCurrentPage() const
{
switch( mpTabControl->GetCurPageId() )
{
case RID_TP_CUSTOMANIMATION_ENTRANCE: return mpTabPages[ENTRANCE];
case RID_TP_CUSTOMANIMATION_EMPHASIS: return mpTabPages[EMPHASIS];
case RID_TP_CUSTOMANIMATION_EXIT: return mpTabPages[EXIT];
case RID_TP_CUSTOMANIMATION_MISCEFFECTS:return mpTabPages[MISCEFFECTS];
//case RID_TP_CUSTOMANIMATION_MOTIONPATH:
default:
return mpTabPages[MOTIONPATH];
}
}
PathKind CustomAnimationCreateDialog::getCreatePathKind() const
{
return getCurrentPage()->getCreatePathKind();
}
CustomAnimationPresetPtr CustomAnimationCreateDialog::getSelectedPreset() const
{
return getCurrentPage()->getSelectedPreset();
}
double CustomAnimationCreateDialog::getSelectedDuration() const
{
return getCurrentPage()->getDuration();
}
IMPL_LINK( CustomAnimationCreateDialog, implActivatePagekHdl, Control*, EMPTYARG )
{
getCurrentPage()->setDuration( mfDuration );
getCurrentPage()->setIsPreview( mbIsPreview );
return 1;
}
IMPL_LINK( CustomAnimationCreateDialog, implDeactivatePagekHdl, Control*, EMPTYARG )
{
mfDuration = getCurrentPage()->getDuration();
mbIsPreview = getCurrentPage()->getIsPreview();
return 1;
}
void CustomAnimationCreateDialog::preview( const CustomAnimationPresetPtr& pPreset ) const
{
MainSequencePtr pSequence( new MainSequence() );
std::vector< Any >::const_iterator aIter( mrTargets.begin() );
const std::vector< Any >::const_iterator aEnd( mrTargets.end() );
const double fDuration = getSelectedDuration();
bool bFirst = true;
while( aIter != aEnd )
{
CustomAnimationEffectPtr pNew(
pSequence->append( pPreset, (*aIter++), fDuration ) );
if( bFirst )
bFirst = false;
else
pNew->setNodeType( EffectNodeType::WITH_PREVIOUS );
}
mpPane->preview( pSequence->getRootNode() );
}
namespace
{
Window * lcl_GetTopmostParent( Window * pWindow )
{
Window * pResult = 0;
Window * pCurrent = pWindow ? pWindow->GetParent() : 0;
while( pCurrent )
{
pResult = pCurrent;
pCurrent = pCurrent->GetParent();
}
return pResult;
}
}
void CustomAnimationCreateDialog::setPosition()
{
SvtViewOptions aDlgOpt(
E_TABDIALOG, String::CreateFromInt32( DLG_CUSTOMANIMATION_CREATE ) );
if ( aDlgOpt.Exists() )
{
SetWindowState( ByteString( aDlgOpt.GetWindowState().getStr(),
RTL_TEXTENCODING_ASCII_US ) );
}
else
{
// default position: aligned with right edge of parent
Window * pParent = lcl_GetTopmostParent( this );
if( pParent )
{
Point aPos( GetPosPixel());
Size aSize( GetSizePixel());
Point aParentPos( pParent->GetPosPixel());
Size aParentSize( pParent->GetSizePixel());
// right center
aPos.setX( aParentSize.getWidth() - aSize.getWidth() );
aPos.setY( (aParentSize.getHeight() - aSize.getHeight()) / 2 );
SetPosPixel( aPos );
}
}
}
void CustomAnimationCreateDialog::storePosition()
{
// save settings (screen position and current page)
SvtViewOptions aDlgOpt(
E_TABDIALOG, String::CreateFromInt32( DLG_CUSTOMANIMATION_CREATE ) );
aDlgOpt.SetWindowState(
OUString::createFromAscii( GetWindowState( WINDOWSTATE_MASK_POS ).GetBuffer() ) );
}
}