summaryrefslogtreecommitdiff
path: root/vcl/source/components/display.cxx
diff options
context:
space:
mode:
authorKurt Zenker <kz@openoffice.org>2006-10-06 08:58:22 +0000
committerKurt Zenker <kz@openoffice.org>2006-10-06 08:58:22 +0000
commit6fe2c8741a9aa4839cfd3070aaa0b0fd3ebd08de (patch)
tree41d2c7a33ce33fdac2c85cc821e230b794e1b1d5 /vcl/source/components/display.cxx
parent3472654c08100449f710cc376b69158c4534eb0c (diff)
INTEGRATION: CWS impresshydra (1.1.2); FILE ADDED
2006/09/18 09:08:23 pl 1.1.2.7: #i12719# add property default screen number, change naming 2006/08/07 14:44:22 pl 1.1.2.6: #i67721# preparations for multi monitor support 2006/07/19 16:08:04 cl 1.1.2.5: #i12719# added support for multi monitor 2006/07/19 16:07:29 cl 1.1.2.4: #i12719# added support for multi monitor 2006/07/19 16:06:31 cl 1.1.2.3: #i12719# added support for multi monitor 2006/07/19 16:04:07 cl 1.1.2.2: #i12719# added support for multi monitor 2006/07/19 15:54:06 cl 1.1.2.1: #i12719# added support for multi monitor
Diffstat (limited to 'vcl/source/components/display.cxx')
-rw-r--r--vcl/source/components/display.cxx358
1 files changed, 358 insertions, 0 deletions
diff --git a/vcl/source/components/display.cxx b/vcl/source/components/display.cxx
new file mode 100644
index 000000000000..6a43b0a40ce6
--- /dev/null
+++ b/vcl/source/components/display.cxx
@@ -0,0 +1,358 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: display.cxx,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * last change: $Author: kz $ $Date: 2006-10-06 09:58:22 $
+ *
+ * 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
+ *
+ ************************************************************************/
+
+#ifndef _COM_SUN_STAR_CONTAINER_XINDEXACCESS_HPP_
+#include <com/sun/star/container/XIndexAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_PROPERTYATTRIBUTE_HPP_
+#include <com/sun/star/beans/PropertyAttribute.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_RECTANGLE_HPP_
+#include <com/sun/star/awt/Rectangle.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_DISPOSEDEXCEPTION_HPP_
+#include <com/sun/star/lang/DisposedException.hpp>
+#endif
+
+#include <svapp.hxx>
+
+#include <cppuhelper/implbase3.hxx>
+#include <cppuhelper/implbase4.hxx>
+
+#include <vector>
+#include <tools/debug.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;
+
+// -----------------------------------------------------------------------
+
+namespace vcl
+{
+
+class DisplayInfo : public ::cppu::WeakAggImplHelper3< XPropertySet, XPropertySetInfo, XServiceInfo >
+{
+public:
+ DisplayInfo( sal_uInt32 nDisplay );
+
+ // XPropertySet
+ virtual Reference< XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw (RuntimeException);
+ virtual void SAL_CALL setPropertyValue( const OUString& aPropertyName, const Any& aValue ) throw (UnknownPropertyException, PropertyVetoException, IllegalArgumentException, WrappedTargetException, RuntimeException);
+ virtual Any SAL_CALL getPropertyValue( const OUString& PropertyName ) throw (UnknownPropertyException, WrappedTargetException, RuntimeException);
+ virtual void SAL_CALL addPropertyChangeListener( const OUString& aPropertyName, const Reference< XPropertyChangeListener >& xListener ) throw (UnknownPropertyException, WrappedTargetException, RuntimeException);
+ virtual void SAL_CALL removePropertyChangeListener( const OUString& aPropertyName, const Reference< XPropertyChangeListener >& aListener ) throw (UnknownPropertyException, WrappedTargetException, RuntimeException);
+ virtual void SAL_CALL addVetoableChangeListener( const OUString& PropertyName, const Reference< XVetoableChangeListener >& aListener ) throw (UnknownPropertyException, WrappedTargetException, RuntimeException);
+ virtual void SAL_CALL removeVetoableChangeListener( const OUString& PropertyName, const Reference< XVetoableChangeListener >& aListener ) throw (UnknownPropertyException, WrappedTargetException, RuntimeException);
+
+ // XPropertySetInfo
+ virtual Sequence< Property > SAL_CALL getProperties( ) throw (RuntimeException);
+ virtual Property SAL_CALL getPropertyByName( const OUString& aName ) throw (UnknownPropertyException, RuntimeException);
+ virtual ::sal_Bool SAL_CALL hasPropertyByName( const OUString& Name ) throw (RuntimeException);
+
+ // XServiceInfo
+ virtual OUString SAL_CALL getImplementationName( ) throw (RuntimeException);
+ virtual ::sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) throw (RuntimeException);
+ virtual Sequence< OUString > SAL_CALL getSupportedServiceNames( ) throw (RuntimeException);
+
+private:
+ sal_uInt32 mnDisplay;
+};
+
+static const char* pScreenAreaName = "ScreenArea";
+static const char* pWorkAreaName = "WorkArea";
+
+// --------------------------------------------------------------------
+
+DisplayInfo::DisplayInfo( sal_uInt32 nDisplay )
+: mnDisplay( nDisplay )
+{
+}
+
+// XPropertySet
+Reference< XPropertySetInfo > SAL_CALL DisplayInfo::getPropertySetInfo( ) throw (RuntimeException)
+{
+ return this;
+}
+
+void SAL_CALL DisplayInfo::setPropertyValue( const OUString& /*aPropertyName* */, const Any& /*aValue*/ ) throw (UnknownPropertyException, PropertyVetoException, IllegalArgumentException, WrappedTargetException, RuntimeException)
+{
+ throw PropertyVetoException();
+}
+
+Any SAL_CALL DisplayInfo::getPropertyValue( const OUString& PropertyName ) throw (UnknownPropertyException, WrappedTargetException, RuntimeException)
+{
+ Rectangle aRect;
+ if( PropertyName.equalsAscii( pScreenAreaName ) )
+ {
+ aRect = Application::GetScreenPosSizePixel( mnDisplay );
+ }
+ else if( PropertyName.equalsAscii( pWorkAreaName ) )
+ {
+ aRect = Application::GetWorkAreaPosSizePixel( mnDisplay );
+ }
+ else
+ throw UnknownPropertyException();
+
+ return Any( com::sun::star::awt::Rectangle( aRect.Left(), aRect.Top(), aRect.getWidth(), aRect.getHeight() ) );
+}
+
+void SAL_CALL DisplayInfo::addPropertyChangeListener( const OUString&, const Reference< XPropertyChangeListener >& ) throw (UnknownPropertyException, WrappedTargetException, RuntimeException) {}
+void SAL_CALL DisplayInfo::removePropertyChangeListener( const OUString&, const Reference< XPropertyChangeListener >& ) throw (UnknownPropertyException, WrappedTargetException, RuntimeException) {}
+void SAL_CALL DisplayInfo::addVetoableChangeListener( const OUString&, const Reference< XVetoableChangeListener >& ) throw (UnknownPropertyException, WrappedTargetException, RuntimeException) {}
+void SAL_CALL DisplayInfo::removeVetoableChangeListener( const OUString&, const Reference< XVetoableChangeListener >& ) throw (UnknownPropertyException, WrappedTargetException, RuntimeException) {}
+
+// XPropertySetInfo
+Sequence< Property > SAL_CALL DisplayInfo::getProperties( ) throw (RuntimeException)
+{
+ Sequence< Property > aProps(2);
+ aProps[0] = getPropertyByName( OUString::createFromAscii( pScreenAreaName ) );
+ aProps[1] = getPropertyByName( OUString::createFromAscii( pWorkAreaName ) );
+ return aProps;
+}
+
+Property SAL_CALL DisplayInfo::getPropertyByName( const OUString& aName ) throw (UnknownPropertyException, RuntimeException)
+{
+ if( aName.equalsAscii( pScreenAreaName ) ||
+ aName.equalsAscii( pWorkAreaName ) )
+ return Property( aName, 0, ::getCppuType( (::com::sun::star::awt::Rectangle const *)0 ), PropertyAttribute::READONLY );
+ throw UnknownPropertyException();
+}
+
+::sal_Bool SAL_CALL DisplayInfo::hasPropertyByName( const OUString& Name ) throw (RuntimeException)
+{
+ return Name.equalsAscii( pScreenAreaName ) ||
+ Name.equalsAscii( pWorkAreaName );
+}
+
+// XServiceInfo
+OUString SAL_CALL DisplayInfo::getImplementationName( ) throw (RuntimeException)
+{
+ static OUString aImplementationName( RTL_CONSTASCII_USTRINGPARAM( "vcl::DisplayInfo" ) );
+ return aImplementationName;
+}
+
+::sal_Bool SAL_CALL DisplayInfo::supportsService( const OUString& ServiceName ) throw (RuntimeException)
+{
+ Sequence< OUString > aSN( getSupportedServiceNames() );
+ for( sal_Int32 nService = 0; nService < aSN.getLength(); nService++ )
+ {
+ if( aSN[nService] == ServiceName )
+ return sal_True;
+ }
+ return sal_False;
+}
+
+Sequence< OUString > SAL_CALL DisplayInfo::getSupportedServiceNames( ) throw (RuntimeException)
+{
+ static OUString aServiceName( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.DisplayInfo" ) );
+ static Sequence< OUString > aServiceNames( &aServiceName, 1 );
+ return aServiceNames;
+}
+
+// ====================================================================
+
+class DisplayAccess : public ::cppu::WeakAggImplHelper4< XPropertySet, XPropertySetInfo, XIndexAccess, XServiceInfo >
+{
+public:
+ DisplayAccess ();
+
+ // XPropertySet
+ virtual Reference< XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw (RuntimeException);
+ virtual void SAL_CALL setPropertyValue( const OUString& aPropertyName, const Any& aValue ) throw (UnknownPropertyException, PropertyVetoException, IllegalArgumentException, WrappedTargetException, RuntimeException);
+ virtual Any SAL_CALL getPropertyValue( const OUString& PropertyName ) throw (UnknownPropertyException, WrappedTargetException, RuntimeException);
+ virtual void SAL_CALL addPropertyChangeListener( const OUString& aPropertyName, const Reference< XPropertyChangeListener >& xListener ) throw (UnknownPropertyException, WrappedTargetException, RuntimeException);
+ virtual void SAL_CALL removePropertyChangeListener( const OUString& aPropertyName, const Reference< XPropertyChangeListener >& aListener ) throw (UnknownPropertyException, WrappedTargetException, RuntimeException);
+ virtual void SAL_CALL addVetoableChangeListener( const OUString& PropertyName, const Reference< XVetoableChangeListener >& aListener ) throw (UnknownPropertyException, WrappedTargetException, RuntimeException);
+ virtual void SAL_CALL removeVetoableChangeListener( const OUString& PropertyName, const Reference< XVetoableChangeListener >& aListener ) throw (UnknownPropertyException, WrappedTargetException, RuntimeException);
+
+ // XPropertySetInfo
+ virtual Sequence< Property > SAL_CALL getProperties( ) throw (RuntimeException);
+ virtual Property SAL_CALL getPropertyByName( const OUString& aName ) throw (UnknownPropertyException, RuntimeException);
+ virtual ::sal_Bool SAL_CALL hasPropertyByName( const OUString& Name ) throw (RuntimeException);
+
+ // XIndexAccess
+ virtual ::sal_Int32 SAL_CALL getCount() throw (RuntimeException);
+ virtual Any SAL_CALL getByIndex( ::sal_Int32 Index ) throw (IndexOutOfBoundsException, WrappedTargetException, RuntimeException);
+
+ // XElementAccess
+ virtual Type SAL_CALL getElementType( ) throw (RuntimeException);
+ virtual ::sal_Bool SAL_CALL hasElements( ) throw (RuntimeException);
+
+ // XServiceInfo
+ virtual OUString SAL_CALL getImplementationName( ) throw (RuntimeException);
+ virtual ::sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) throw (RuntimeException);
+ virtual Sequence< OUString > SAL_CALL getSupportedServiceNames( ) throw (RuntimeException);
+};
+
+Sequence< OUString > DisplayAccess_getSupportedServiceNames()
+{
+ static OUString aServiceName( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.DisplayAccess" ) );
+ static Sequence< OUString > aServiceNames( &aServiceName, 1 );
+ return aServiceNames;
+}
+
+OUString DisplayAccess_getImplementationName()
+{
+ return OUString( RTL_CONSTASCII_USTRINGPARAM( "vcl::DisplayAccess" ) );
+}
+
+Reference< XInterface > SAL_CALL DisplayAccess_createInstance( const Reference< XMultiServiceFactory >& )
+{
+ return static_cast< ::cppu::OWeakObject * >( new DisplayAccess );
+}
+
+DisplayAccess::DisplayAccess()
+{
+}
+
+static const char* pMultiDisplayName = "MultiDisplay";
+static const char* pDefaultDisplayName = "DefaultDisplay";
+
+// XPropertySet
+Reference< XPropertySetInfo > SAL_CALL DisplayAccess::getPropertySetInfo( ) throw (RuntimeException)
+{
+ return this;
+}
+
+void SAL_CALL DisplayAccess::setPropertyValue( const OUString& /*aPropertyName* */, const Any& /*aValue*/ ) throw (UnknownPropertyException, PropertyVetoException, IllegalArgumentException, WrappedTargetException, RuntimeException)
+{
+ throw PropertyVetoException();
+}
+
+Any SAL_CALL DisplayAccess::getPropertyValue( const OUString& PropertyName ) throw (UnknownPropertyException, WrappedTargetException, RuntimeException)
+{
+ Any aRet;
+ if( PropertyName.equalsAscii( pMultiDisplayName ) )
+ {
+ aRet <<= sal_Bool( Application::IsMultiDisplay() );
+ }
+ else if( PropertyName.equalsAscii( pDefaultDisplayName ) )
+ {
+ aRet <<= sal_Int32( Application::GetDefaultDisplayNumber() );
+ }
+ else
+ throw UnknownPropertyException();
+
+ return aRet;
+}
+
+void SAL_CALL DisplayAccess::addPropertyChangeListener( const OUString&, const Reference< XPropertyChangeListener >& ) throw (UnknownPropertyException, WrappedTargetException, RuntimeException) {}
+void SAL_CALL DisplayAccess::removePropertyChangeListener( const OUString&, const Reference< XPropertyChangeListener >& ) throw (UnknownPropertyException, WrappedTargetException, RuntimeException) {}
+void SAL_CALL DisplayAccess::addVetoableChangeListener( const OUString&, const Reference< XVetoableChangeListener >& ) throw (UnknownPropertyException, WrappedTargetException, RuntimeException) {}
+void SAL_CALL DisplayAccess::removeVetoableChangeListener( const OUString&, const Reference< XVetoableChangeListener >& ) throw (UnknownPropertyException, WrappedTargetException, RuntimeException) {}
+
+// XPropertySetInfo
+Sequence< Property > SAL_CALL DisplayAccess::getProperties( ) throw (RuntimeException)
+{
+ Sequence< Property > aProps(2);
+ aProps[0] = getPropertyByName( OUString::createFromAscii( pMultiDisplayName ) );
+ aProps[1] = getPropertyByName( OUString::createFromAscii( pDefaultDisplayName ) );
+ return aProps;
+}
+
+Property SAL_CALL DisplayAccess::getPropertyByName( const OUString& aName ) throw (UnknownPropertyException, RuntimeException)
+{
+ if( aName.equalsAscii( pMultiDisplayName ) )
+ return Property( aName, 0, ::getCppuType( (sal_Bool const *)0 ), PropertyAttribute::READONLY );
+
+ if( aName.equalsAscii( pDefaultDisplayName ) )
+ return Property( aName, 0, ::getCppuType( (sal_Int32 const *)0 ), PropertyAttribute::READONLY );
+ throw UnknownPropertyException();
+}
+
+::sal_Bool SAL_CALL DisplayAccess::hasPropertyByName( const OUString& Name ) throw (RuntimeException)
+{
+ return Name.equalsAscii( pMultiDisplayName ) ||
+ Name.equalsAscii( pDefaultDisplayName );
+}
+
+// XIndexAccess
+::sal_Int32 SAL_CALL DisplayAccess::getCount() throw (RuntimeException)
+{
+ return Application::GetScreenCount();
+}
+
+Any SAL_CALL DisplayAccess::getByIndex( ::sal_Int32 Index ) throw (IndexOutOfBoundsException, WrappedTargetException, RuntimeException)
+{
+ if( (Index < 0) || (Index >= getCount()) )
+ throw IndexOutOfBoundsException();
+
+ return makeAny( Reference< XPropertySet >( new DisplayInfo( Index ) ) );
+}
+
+// XElementAccess
+Type SAL_CALL DisplayAccess::getElementType( ) throw (RuntimeException)
+{
+ return XPropertySet::static_type();
+}
+
+::sal_Bool SAL_CALL DisplayAccess::hasElements() throw (RuntimeException)
+{
+ return true;
+}
+
+// XServiceInfo
+OUString SAL_CALL DisplayAccess::getImplementationName( ) throw (RuntimeException)
+{
+ return DisplayAccess_getImplementationName();
+}
+
+::sal_Bool SAL_CALL DisplayAccess::supportsService( const OUString& ServiceName ) throw (RuntimeException)
+{
+ Sequence< OUString > aSN( DisplayAccess_getSupportedServiceNames() );
+ for( sal_Int32 nService = 0; nService < aSN.getLength(); nService++ )
+ {
+ if( aSN[nService] == ServiceName )
+ return sal_True;
+ }
+ return sal_False;
+}
+
+Sequence< OUString > SAL_CALL DisplayAccess::getSupportedServiceNames( ) throw (RuntimeException)
+{
+ return DisplayAccess_getSupportedServiceNames();
+}
+
+} // namespace vcl