1c287bfc93
2005/09/05 13:21:58 rt 1.5.374.1: #i54170# Change license header: remove SISSL
269 lines
11 KiB
C++
269 lines
11 KiB
C++
/*************************************************************************
|
|
*
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
|
*
|
|
* $RCSfile: present.cxx,v $
|
|
*
|
|
* $Revision: 1.6 $
|
|
*
|
|
* last change: $Author: rt $ $Date: 2005-09-09 04:12:54 $
|
|
*
|
|
* The Contents of this file are made available subject to
|
|
* the terms of GNU Lesser General Public License Version 2.1.
|
|
*
|
|
*
|
|
* GNU Lesser General Public License Version 2.1
|
|
* =============================================
|
|
* Copyright 2005 by Sun Microsystems, Inc.
|
|
* 901 San Antonio Road, Palo Alto, CA 94303, USA
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License version 2.1, as published by the Free Software Foundation.
|
|
*
|
|
* This library 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 for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
|
* MA 02111-1307 USA
|
|
*
|
|
************************************************************************/
|
|
|
|
#ifdef SD_DLLIMPLEMENTATION
|
|
#undef SD_DLLIMPLEMENTATION
|
|
#endif
|
|
|
|
#pragma hdrstop
|
|
|
|
#ifndef _SFXITEMSET_HXX //autogen
|
|
#include <svtools/itemset.hxx>
|
|
#endif
|
|
|
|
#include "sdattr.hxx"
|
|
#include "present.hxx"
|
|
#include "present.hrc"
|
|
#include "sdresid.hxx"
|
|
#include "cusshow.hxx"
|
|
|
|
/*************************************************************************
|
|
|* Ctor
|
|
\************************************************************************/
|
|
SdStartPresentationDlg::SdStartPresentationDlg( Window* pWindow,
|
|
const SfxItemSet& rInAttrs,
|
|
List& rPageNames, List* pCSList ) :
|
|
ModalDialog ( pWindow, SdResId( DLG_START_PRESENTATION ) ),
|
|
aRbtAll ( this, SdResId( RBT_ALL ) ),
|
|
aRbtAtDia ( this, SdResId( RBT_AT_DIA ) ),
|
|
aLbDias ( this, SdResId( LB_DIAS ) ),
|
|
aRbtCustomshow ( this, SdResId( RBT_CUSTOMSHOW ) ),
|
|
aLbCustomshow ( this, SdResId( LB_CUSTOMSHOW ) ),
|
|
aGrpRange ( this, SdResId( GRP_RANGE ) ),
|
|
aRbtStandard ( this, SdResId( RBT_STANDARD ) ),
|
|
aRbtWindow ( this, SdResId( RBT_WINDOW ) ),
|
|
aRbtAuto ( this, SdResId( RBT_AUTO ) ),
|
|
// aFtPause ( this, SdResId( FT_PAUSE ) ),
|
|
aTmfPause ( this, SdResId( TMF_PAUSE ) ),
|
|
aCbxAutoLogo ( this, SdResId( CBX_AUTOLOGO ) ),
|
|
aGrpKind ( this, SdResId( GRP_KIND ) ),
|
|
aCbxManuel ( this, SdResId( CBX_MANUEL ) ),
|
|
aCbxMousepointer ( this, SdResId( CBX_MOUSEPOINTER ) ),
|
|
aCbxPen ( this, SdResId( CBX_PEN ) ),
|
|
aCbxNavigator ( this, SdResId( CBX_NAVIGATOR ) ),
|
|
aCbxAnimationAllowed ( this, SdResId( CBX_ANIMATION_ALLOWED ) ),
|
|
aCbxChangePage ( this, SdResId( CBX_CHANGE_PAGE ) ),
|
|
aCbxAlwaysOnTop ( this, SdResId( CBX_ALWAYS_ON_TOP ) ),
|
|
aGrpOptions ( this, SdResId( GRP_OPTIONS ) ),
|
|
aBtnOK ( this, SdResId( BTN_OK ) ),
|
|
aBtnCancel ( this, SdResId( BTN_CANCEL ) ),
|
|
aBtnHelp ( this, SdResId( BTN_HELP ) ),
|
|
pCustomShowList ( pCSList ),
|
|
rOutAttrs ( rInAttrs )
|
|
{
|
|
FreeResource();
|
|
|
|
Link aLink( LINK( this, SdStartPresentationDlg, ChangeRangeHdl ) );
|
|
|
|
aRbtAll.SetClickHdl( aLink );
|
|
aRbtAtDia.SetClickHdl( aLink );
|
|
aRbtCustomshow.SetClickHdl( aLink );
|
|
aCbxMousepointer.SetClickHdl( LINK( this, SdStartPresentationDlg, ChangeMousepointerHdl ) );
|
|
|
|
aLink = LINK( this, SdStartPresentationDlg, ClickWindowPresentationHdl );
|
|
aRbtStandard.SetClickHdl( aLink );
|
|
aRbtWindow.SetClickHdl( aLink );
|
|
aRbtAuto.SetClickHdl( aLink );
|
|
|
|
aTmfPause.SetModifyHdl( LINK( this, SdStartPresentationDlg, ChangePauseHdl ) );
|
|
aTmfPause.SetFormat( TIMEF_SEC );
|
|
|
|
// Listbox mit Seitennamen fuellen
|
|
rPageNames.First();
|
|
for( UINT16 i = 0;
|
|
i < rPageNames.Count();
|
|
i++ )
|
|
{
|
|
aLbDias.InsertEntry( *( String* ) rPageNames.GetCurObject() );
|
|
rPageNames.Next();
|
|
}
|
|
|
|
if( pCustomShowList )
|
|
{
|
|
USHORT nPosToSelect = (USHORT) pCustomShowList->GetCurPos();
|
|
SdCustomShow* pCustomShow;
|
|
// Listbox mit CustomShows fuellen
|
|
for( pCustomShow = (SdCustomShow*) pCustomShowList->First();
|
|
pCustomShow != NULL;
|
|
pCustomShow = (SdCustomShow*) pCustomShowList->Next() )
|
|
{
|
|
aLbCustomshow.InsertEntry( pCustomShow->GetName() );
|
|
}
|
|
aLbCustomshow.SelectEntryPos( nPosToSelect );
|
|
pCustomShowList->Seek( nPosToSelect );
|
|
}
|
|
else
|
|
aRbtCustomshow.Disable();
|
|
|
|
if( ( ( const SfxBoolItem& ) rOutAttrs.Get( ATTR_PRESENT_CUSTOMSHOW ) ).GetValue() && pCSList )
|
|
aRbtCustomshow.Check();
|
|
else if( ( ( const SfxBoolItem& ) rOutAttrs.Get( ATTR_PRESENT_ALL ) ).GetValue() )
|
|
aRbtAll.Check();
|
|
else
|
|
aRbtAtDia.Check();
|
|
|
|
aLbDias.SelectEntry( ( ( const SfxStringItem& ) rOutAttrs.Get( ATTR_PRESENT_DIANAME ) ).GetValue() );
|
|
aCbxManuel.Check( ( ( const SfxBoolItem& ) rOutAttrs.Get( ATTR_PRESENT_MANUEL ) ).GetValue() );
|
|
aCbxMousepointer.Check( ( ( const SfxBoolItem& ) rOutAttrs.Get( ATTR_PRESENT_MOUSE ) ).GetValue() );
|
|
aCbxPen.Check( ( ( const SfxBoolItem& ) rOutAttrs.Get( ATTR_PRESENT_PEN ) ).GetValue() );
|
|
aCbxNavigator.Check( ( ( const SfxBoolItem& ) rOutAttrs.Get( ATTR_PRESENT_NAVIGATOR ) ).GetValue() );
|
|
aCbxAnimationAllowed.Check( ( ( const SfxBoolItem& ) rOutAttrs.Get( ATTR_PRESENT_ANIMATION_ALLOWED ) ).GetValue() );
|
|
aCbxChangePage.Check( ( ( const SfxBoolItem& ) rOutAttrs.Get( ATTR_PRESENT_CHANGE_PAGE ) ).GetValue() );
|
|
aCbxAlwaysOnTop.Check( ( ( const SfxBoolItem& ) rOutAttrs.Get( ATTR_PRESENT_ALWAYS_ON_TOP ) ).GetValue() );
|
|
|
|
const BOOL bEndless = ( ( const SfxBoolItem& ) rOutAttrs.Get( ATTR_PRESENT_ENDLESS ) ).GetValue();
|
|
const BOOL bWindow = !( ( const SfxBoolItem& ) rOutAttrs.Get( ATTR_PRESENT_FULLSCREEN ) ).GetValue();
|
|
const long nPause = ( ( const SfxUInt32Item& ) rOutAttrs.Get( ATTR_PRESENT_PAUSE_TIMEOUT ) ).GetValue();
|
|
|
|
aTmfPause.SetTime( Time( 0, 0, nPause ) );
|
|
// set cursor in timefield
|
|
Edit *pEdit = aTmfPause.GetField();
|
|
Selection aSel( pEdit->GetMaxTextLen(), pEdit->GetMaxTextLen() );
|
|
pEdit->SetSelection( aSel );
|
|
|
|
aCbxAutoLogo.Check( ( ( const SfxBoolItem& ) rOutAttrs.Get( ATTR_PRESENT_SHOW_PAUSELOGO ) ).GetValue() );
|
|
|
|
if( bWindow )
|
|
aRbtWindow.Check( TRUE );
|
|
else if( bEndless )
|
|
aRbtAuto.Check( TRUE );
|
|
else
|
|
aRbtStandard.Check( TRUE );
|
|
|
|
/* #109180# change in behaviour, even when always start with current page is enabled, range settings are
|
|
still used
|
|
BOOL bStartWithActualPage = ( ( const SfxBoolItem& ) rOutAttrs.Get( ATTR_PRESENT_START_ACTUAL_PAGE ) ).GetValue();
|
|
if( bStartWithActualPage )
|
|
{
|
|
aRbtAll.Enable( FALSE );
|
|
aRbtAtDia.Check();
|
|
aRbtAtDia.Enable( FALSE );
|
|
aLbDias.Enable( FALSE );
|
|
aLbCustomshow.Enable( FALSE );
|
|
aGrpRange.Enable( FALSE );
|
|
}
|
|
else
|
|
*/
|
|
ChangeRangeHdl( this );
|
|
|
|
ChangeMousepointerHdl( this );
|
|
ClickWindowPresentationHdl( NULL );
|
|
ChangePauseHdl( NULL );
|
|
}
|
|
|
|
/*************************************************************************
|
|
|* Setzt die ausgewaehlten Attribute des Dialogs
|
|
\************************************************************************/
|
|
void SdStartPresentationDlg::GetAttr( SfxItemSet& rOutAttrs )
|
|
{
|
|
rOutAttrs.Put( SfxBoolItem ( ATTR_PRESENT_ALL, aRbtAll.IsChecked() ) );
|
|
rOutAttrs.Put( SfxBoolItem ( ATTR_PRESENT_CUSTOMSHOW, aRbtCustomshow.IsChecked() ) );
|
|
rOutAttrs.Put( SfxStringItem ( ATTR_PRESENT_DIANAME, aLbDias.GetSelectEntry() ) );
|
|
rOutAttrs.Put( SfxBoolItem ( ATTR_PRESENT_MANUEL, aCbxManuel.IsChecked() ) );
|
|
rOutAttrs.Put( SfxBoolItem ( ATTR_PRESENT_MOUSE, aCbxMousepointer.IsChecked() ) );
|
|
rOutAttrs.Put( SfxBoolItem ( ATTR_PRESENT_PEN, aCbxPen.IsChecked() ) );
|
|
rOutAttrs.Put( SfxBoolItem ( ATTR_PRESENT_NAVIGATOR, aCbxNavigator.IsChecked() ) );
|
|
rOutAttrs.Put( SfxBoolItem ( ATTR_PRESENT_ANIMATION_ALLOWED, aCbxAnimationAllowed.IsChecked() ) );
|
|
rOutAttrs.Put( SfxBoolItem ( ATTR_PRESENT_CHANGE_PAGE, aCbxChangePage.IsChecked() ) );
|
|
rOutAttrs.Put( SfxBoolItem ( ATTR_PRESENT_ALWAYS_ON_TOP, aCbxAlwaysOnTop.IsChecked() ) );
|
|
rOutAttrs.Put( SfxBoolItem ( ATTR_PRESENT_FULLSCREEN, !aRbtWindow.IsChecked() ) );
|
|
rOutAttrs.Put( SfxBoolItem ( ATTR_PRESENT_ENDLESS, aRbtAuto.IsChecked() ) );
|
|
rOutAttrs.Put( SfxUInt32Item ( ATTR_PRESENT_PAUSE_TIMEOUT, aTmfPause.GetTime().GetMSFromTime() / 1000 ) );
|
|
rOutAttrs.Put( SfxBoolItem ( ATTR_PRESENT_SHOW_PAUSELOGO, aCbxAutoLogo.IsChecked() ) );
|
|
|
|
USHORT nPos = aLbCustomshow.GetSelectEntryPos();
|
|
if( nPos != LISTBOX_ENTRY_NOTFOUND )
|
|
pCustomShowList->Seek( nPos );
|
|
}
|
|
|
|
/*************************************************************************
|
|
|* Handler: Enabled/Disabled Listbox "Dias"
|
|
\************************************************************************/
|
|
IMPL_LINK( SdStartPresentationDlg, ChangeRangeHdl, void *, EMPTYARG )
|
|
{
|
|
aLbDias.Enable( aRbtAtDia.IsChecked() );
|
|
aLbCustomshow.Enable( aRbtCustomshow.IsChecked() );
|
|
|
|
return( 0L );
|
|
}
|
|
|
|
/*************************************************************************
|
|
|* Handler: Enabled/Disabled Checkbox "Pen"
|
|
\************************************************************************/
|
|
IMPL_LINK( SdStartPresentationDlg, ChangeMousepointerHdl, void *, EMPTYARG )
|
|
{
|
|
if( aCbxMousepointer.IsChecked() )
|
|
aCbxPen.Enable();
|
|
else
|
|
{
|
|
aCbxPen.Enable( FALSE );
|
|
aCbxPen.Check( FALSE );
|
|
}
|
|
|
|
return( 0L );
|
|
}
|
|
|
|
/*************************************************************************
|
|
|* Handler: Enabled/Disabled Checkbox "AlwaysOnTop"
|
|
\************************************************************************/
|
|
IMPL_LINK( SdStartPresentationDlg, ClickWindowPresentationHdl, void *, EMPTYARG )
|
|
{
|
|
const BOOL bAuto = aRbtAuto.IsChecked();
|
|
|
|
// aFtPause.Enable( bAuto );
|
|
aTmfPause.Enable( bAuto );
|
|
aCbxAutoLogo.Enable( bAuto && ( aTmfPause.GetTime().GetMSFromTime() > 0UL ) );
|
|
|
|
if( aRbtWindow.IsChecked() )
|
|
{
|
|
aCbxAlwaysOnTop.Enable( FALSE );
|
|
aCbxAlwaysOnTop.Check( FALSE );
|
|
}
|
|
else
|
|
aCbxAlwaysOnTop.Enable();
|
|
|
|
return( 0L );
|
|
}
|
|
|
|
/*************************************************************************
|
|
|* Handler: Enabled/Disabled Checkbox "AlwaysOnTop"
|
|
\************************************************************************/
|
|
IMPL_LINK( SdStartPresentationDlg, ChangePauseHdl, void *, EMPTYARG )
|
|
{
|
|
aCbxAutoLogo.Enable( aRbtAuto.IsChecked() && ( aTmfPause.GetTime().GetMSFromTime() > 0UL ) );
|
|
return( 0L );
|
|
}
|
|
|
|
|