INTEGRATION: CWS impresshydra (1.6.246); FILE MERGED
2006/09/20 10:57:56 cl 1.6.246.9: RESYNC: (1.7-1.8); FILE MERGED 2006/09/20 07:35:49 cl 1.6.246.8: #i12719# added support for multi monitors 2006/09/18 12:02:39 cl 1.6.246.7: #i12719# updated code to latest spec for multi display 2006/09/04 14:26:53 cl 1.6.246.6: #i67721# fixed display spanning 2006/09/01 11:50:00 cl 1.6.246.5: #i12719# added support for span displays 2006/08/28 12:24:56 cl 1.6.246.4: RESYNC: (1.6-1.7); FILE MERGED 2006/07/20 13:23:39 cl 1.6.246.3: #i12719# added support for multi monitors 2006/07/19 15:44:38 cl 1.6.246.2: #i12719# added support for multi monitors 2006/07/18 07:58:04 cl 1.6.246.1: #i12719# added support for multi monitors
This commit is contained in:
parent
a6a2e1159d
commit
58a2d900f9
1 changed files with 102 additions and 20 deletions
|
@ -4,9 +4,9 @@
|
|||
*
|
||||
* $RCSfile: present.cxx,v $
|
||||
*
|
||||
* $Revision: 1.8 $
|
||||
* $Revision: 1.9 $
|
||||
*
|
||||
* last change: $Author: obo $ $Date: 2006-09-16 18:41:32 $
|
||||
* last change: $Author: kz $ $Date: 2006-10-06 09:51:57 $
|
||||
*
|
||||
* The Contents of this file are made available subject to
|
||||
* the terms of GNU Lesser General Public License Version 2.1.
|
||||
|
@ -40,6 +40,18 @@
|
|||
#undef SD_DLLIMPLEMENTATION
|
||||
#endif
|
||||
|
||||
#ifndef _COM_SUN_STAR_LANG_XMULTISERVICEFACTORY_HPP_
|
||||
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
|
||||
#endif
|
||||
#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
|
||||
#include <com/sun/star/beans/XPropertySet.hpp>
|
||||
#endif
|
||||
#ifndef _COM_SUN_STAR_CONTAINER_XINDEXACCESS_HPP_
|
||||
#include <com/sun/star/container/XIndexAccess.hpp>
|
||||
#endif
|
||||
#ifndef _COMPHELPER_PROCESSFACTORY_HXX_
|
||||
#include <comphelper/processfactory.hxx>
|
||||
#endif
|
||||
|
||||
#ifndef _SFXITEMSET_HXX //autogen
|
||||
#include <svtools/itemset.hxx>
|
||||
|
@ -51,6 +63,12 @@
|
|||
#include "sdresid.hxx"
|
||||
#include "cusshow.hxx"
|
||||
|
||||
using ::rtl::OUString;
|
||||
using namespace ::com::sun::star::uno;
|
||||
using namespace ::com::sun::star::lang;
|
||||
using namespace ::com::sun::star::container;
|
||||
using namespace ::com::sun::star::beans;
|
||||
|
||||
/*************************************************************************
|
||||
|* Ctor
|
||||
\************************************************************************/
|
||||
|
@ -79,11 +97,19 @@ SdStartPresentationDlg::SdStartPresentationDlg( Window* pWindow,
|
|||
aCbxChangePage ( this, SdResId( CBX_CHANGE_PAGE ) ),
|
||||
aCbxAlwaysOnTop ( this, SdResId( CBX_ALWAYS_ON_TOP ) ),
|
||||
aGrpOptions ( this, SdResId( GRP_OPTIONS ) ),
|
||||
maGrpMonitor ( this, SdResId( GRP_MONITOR ) ),
|
||||
maFtMonitor ( this, SdResId( FT_MONITOR ) ),
|
||||
maLBMonitor ( this, SdResId( LB_MONITOR ) ),
|
||||
|
||||
aBtnOK ( this, SdResId( BTN_OK ) ),
|
||||
aBtnCancel ( this, SdResId( BTN_CANCEL ) ),
|
||||
aBtnHelp ( this, SdResId( BTN_HELP ) ),
|
||||
pCustomShowList ( pCSList ),
|
||||
rOutAttrs ( rInAttrs )
|
||||
rOutAttrs ( rInAttrs ),
|
||||
mnMonitors ( 0 ),
|
||||
msPrimaryMonitor( SdResId(STR_PRIMARY_MONITOR ) ),
|
||||
msMonitor( SdResId( STR_MONITOR ) ),
|
||||
msAllMonitors( SdResId( STR_ALL_MONITORS ) )
|
||||
{
|
||||
FreeResource();
|
||||
|
||||
|
@ -163,26 +189,73 @@ SdStartPresentationDlg::SdStartPresentationDlg( Window* pWindow,
|
|||
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
|
||||
*/
|
||||
InitMonitorSettings();
|
||||
|
||||
ChangeRangeHdl( this );
|
||||
|
||||
ClickWindowPresentationHdl( NULL );
|
||||
ChangePauseHdl( NULL );
|
||||
}
|
||||
|
||||
void SdStartPresentationDlg::InitMonitorSettings()
|
||||
{
|
||||
try
|
||||
{
|
||||
Reference< XMultiServiceFactory > xFactory( ::comphelper::getProcessServiceFactory(), UNO_QUERY_THROW );
|
||||
Reference< XIndexAccess > xMultiMon( xFactory->createInstance(OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.DisplayAccess" ) ) ), UNO_QUERY_THROW );
|
||||
maGrpMonitor.Show( true );
|
||||
maFtMonitor.Show( true );
|
||||
maLBMonitor.Show( true );
|
||||
|
||||
mnMonitors = xMultiMon->getCount();
|
||||
|
||||
if( mnMonitors <= 1 )
|
||||
{
|
||||
maFtMonitor.Enable( false );
|
||||
maLBMonitor.Enable( false );
|
||||
}
|
||||
else
|
||||
{
|
||||
sal_Bool bMultiscreen = false;
|
||||
sal_Int32 nPrimaryIndex = 0;
|
||||
Reference< XPropertySet > xMonProps( xMultiMon, UNO_QUERY );
|
||||
if( xMonProps.is() ) try
|
||||
{
|
||||
const OUString sPropName1( RTL_CONSTASCII_USTRINGPARAM( "MultiDisplay" ) );
|
||||
xMonProps->getPropertyValue( sPropName1 ) >>= bMultiscreen;
|
||||
const OUString sPropName2( RTL_CONSTASCII_USTRINGPARAM( "DefaultDisplay" ) );
|
||||
xMonProps->getPropertyValue( sPropName2 ) >>= nPrimaryIndex;
|
||||
}
|
||||
catch( Exception& )
|
||||
{
|
||||
}
|
||||
|
||||
const String sPlaceHolder( RTL_CONSTASCII_USTRINGPARAM( "%N" ) );
|
||||
for( sal_Int32 nDisplay = 0; nDisplay < mnMonitors; nDisplay++ )
|
||||
{
|
||||
String aName( nDisplay == nPrimaryIndex ? msPrimaryMonitor : msMonitor );
|
||||
const String aNumber( String::CreateFromInt32( nDisplay + 1 ) );
|
||||
aName.SearchAndReplace( sPlaceHolder, aNumber );
|
||||
maLBMonitor.InsertEntry( aName );
|
||||
}
|
||||
|
||||
if( !bMultiscreen )
|
||||
maLBMonitor.InsertEntry( msAllMonitors );
|
||||
|
||||
sal_Int32 nSelected = ( ( const SfxInt32Item& ) rOutAttrs.Get( ATTR_PRESENT_DISPLAY ) ).GetValue();
|
||||
if( nSelected <= 0 )
|
||||
nSelected = nPrimaryIndex;
|
||||
else
|
||||
nSelected--;
|
||||
|
||||
maLBMonitor.SelectEntryPos( nSelected );
|
||||
}
|
||||
}
|
||||
catch( Exception& )
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
|* Setzt die ausgewaehlten Attribute des Dialogs
|
||||
\************************************************************************/
|
||||
|
@ -203,7 +276,11 @@ void SdStartPresentationDlg::GetAttr( SfxItemSet& rOutAttrs )
|
|||
rOutAttrs.Put( SfxUInt32Item ( ATTR_PRESENT_PAUSE_TIMEOUT, aTmfPause.GetTime().GetMSFromTime() / 1000 ) );
|
||||
rOutAttrs.Put( SfxBoolItem ( ATTR_PRESENT_SHOW_PAUSELOGO, aCbxAutoLogo.IsChecked() ) );
|
||||
|
||||
USHORT nPos = aLbCustomshow.GetSelectEntryPos();
|
||||
USHORT nPos = maLBMonitor.GetSelectEntryPos();
|
||||
if( nPos != LISTBOX_ENTRY_NOTFOUND )
|
||||
rOutAttrs.Put( SfxInt32Item ( ATTR_PRESENT_DISPLAY, nPos + 1 ) );
|
||||
|
||||
nPos = aLbCustomshow.GetSelectEntryPos();
|
||||
if( nPos != LISTBOX_ENTRY_NOTFOUND )
|
||||
pCustomShowList->Seek( nPos );
|
||||
}
|
||||
|
@ -224,13 +301,18 @@ IMPL_LINK( SdStartPresentationDlg, ChangeRangeHdl, void *, EMPTYARG )
|
|||
\************************************************************************/
|
||||
IMPL_LINK( SdStartPresentationDlg, ClickWindowPresentationHdl, void *, EMPTYARG )
|
||||
{
|
||||
const BOOL bAuto = aRbtAuto.IsChecked();
|
||||
const bool bAuto = aRbtAuto.IsChecked();
|
||||
const bool bWindow = aRbtWindow.IsChecked();
|
||||
|
||||
// aFtPause.Enable( bAuto );
|
||||
aTmfPause.Enable( bAuto );
|
||||
aCbxAutoLogo.Enable( bAuto && ( aTmfPause.GetTime().GetMSFromTime() > 0UL ) );
|
||||
|
||||
if( aRbtWindow.IsChecked() )
|
||||
const bool bDisplay = !bWindow && ( mnMonitors > 1 );
|
||||
maFtMonitor.Enable( bDisplay );
|
||||
maLBMonitor.Enable( bDisplay );
|
||||
|
||||
if( bWindow )
|
||||
{
|
||||
aCbxAlwaysOnTop.Enable( FALSE );
|
||||
aCbxAlwaysOnTop.Check( FALSE );
|
||||
|
|
Loading…
Reference in a new issue