diff options
Diffstat (limited to 'vcl/source')
-rw-r--r-- | vcl/source/app/svapp.cxx | 23 | ||||
-rw-r--r-- | vcl/source/components/display.cxx | 363 | ||||
-rw-r--r-- | vcl/source/components/factory.cxx | 10 |
3 files changed, 23 insertions, 373 deletions
diff --git a/vcl/source/app/svapp.cxx b/vcl/source/app/svapp.cxx index 6a799cd20c8c..1a799876bb0a 100644 --- a/vcl/source/app/svapp.cxx +++ b/vcl/source/app/svapp.cxx @@ -1238,6 +1238,29 @@ unsigned int Application::GetDisplayBuiltInScreen() return pSys ? pSys->GetDisplayBuiltInScreen() : 0; } +unsigned int Application::GetDisplayExternalScreen() +{ + // This is really unpleasant, in theory we could have multiple + // external displays etc. + int nExternal(0); + switch (GetDisplayBuiltInScreen()) + { + case 0: + nExternal = 1; + break; + case 1: + nExternal = 0; + break; + default: + // When the built-in display is neither 0 nor 1 + // then place the full-screen presentation on the + // first available screen. + nExternal = 0; + break; + } + return nExternal; +} + Rectangle Application::GetScreenPosSizePixel( unsigned int nScreen ) { SalSystem* pSys = ImplGetSalSystem(); diff --git a/vcl/source/components/display.cxx b/vcl/source/components/display.cxx deleted file mode 100644 index f1862bc2d228..000000000000 --- a/vcl/source/components/display.cxx +++ /dev/null @@ -1,363 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * 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 . - */ - -#include <com/sun/star/container/XIndexAccess.hpp> -#include <com/sun/star/lang/XServiceInfo.hpp> -#include <com/sun/star/beans/XPropertySet.hpp> -#include <com/sun/star/beans/PropertyAttribute.hpp> -#include <com/sun/star/awt/Rectangle.hpp> -#include <com/sun/star/lang/DisposedException.hpp> - -#include <vcl/svapp.hxx> - -#include <cppuhelper/implbase3.hxx> -#include <cppuhelper/implbase4.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 nDisplayScreen ); - - // 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 mnDisplayScreen; -}; - -static const char* pScreenAreaName = "ScreenArea"; -static const char* pWorkAreaName = "WorkArea"; -static const char* pScreenName = "ScreenName"; - -// -------------------------------------------------------------------- - -DisplayInfo::DisplayInfo( sal_uInt32 nDisplayScreen ) -: mnDisplayScreen( nDisplayScreen ) -{ -} - -// 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( mnDisplayScreen ); - } - else if( PropertyName.equalsAscii( pWorkAreaName ) ) - { - aRect = Application::GetWorkAreaPosSizePixel( mnDisplayScreen ); - } - else if( PropertyName.equalsAscii( pScreenName ) ) - { - return Any( Application::GetDisplayScreenName( mnDisplayScreen ) ); - } - 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) -{ - return OUString(RTL_CONSTASCII_USTRINGPARAM("vcl::DisplayInfo")); -} - -::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) -{ - OUString aServiceName(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.DisplayInfo")); - return Sequence< OUString >(&aServiceName, 1); -} - -// ==================================================================== - -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() -{ - OUString aServiceName( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.DisplayAccess" ) ); - return Sequence< OUString >( &aServiceName, 1 ); -} - -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* pUnifiedDisplayName = "IsUnifiedDisplay"; -static const char* pDefaultDisplayName = "DefaultDisplay"; -static const char* pBuiltInDisplayName = "BuiltInDisplay"; -static const char* pExternalDisplayName = "ExternalDisplay"; - -// 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( pUnifiedDisplayName ) ) - { - aRet <<= sal_Bool( Application::IsUnifiedDisplay() ); - } - else if( PropertyName.equalsAscii( pDefaultDisplayName ) || // Unhelpful name, legacy setting - PropertyName.equalsAscii( pBuiltInDisplayName ) ) - { - aRet <<= sal_Int32( Application::GetDisplayBuiltInScreen() ); - } - else if( PropertyName.equalsAscii( pExternalDisplayName ) ) - { - // This is really unpleasant, in theory we could have multiple - // external displays etc. - sal_Int32 nExternal(0); - switch (Application::GetDisplayBuiltInScreen()) - { - case 0: - nExternal = 1; - break; - case 1: - nExternal = 0; - break; - default: - // When the built-in display is neither 0 nor 1 - // then place the full-screen presentation on the - // first available screen. - nExternal = 0; - break; - } - aRet <<= nExternal; - } - 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(4); - aProps[0] = getPropertyByName( OUString::createFromAscii( pUnifiedDisplayName ) ); - aProps[1] = getPropertyByName( OUString::createFromAscii( pDefaultDisplayName ) ); - aProps[2] = getPropertyByName( OUString::createFromAscii( pBuiltInDisplayName ) ); - aProps[3] = getPropertyByName( OUString::createFromAscii( pExternalDisplayName ) ); - return aProps; -} - -Property SAL_CALL DisplayAccess::getPropertyByName( const OUString& aName ) throw (UnknownPropertyException, RuntimeException) -{ - if( aName.equalsAscii( pUnifiedDisplayName ) ) - return Property( aName, 0, ::getCppuType( (sal_Bool const *)0 ), PropertyAttribute::READONLY ); - - if( aName.equalsAscii( pDefaultDisplayName ) || - aName.equalsAscii( pBuiltInDisplayName ) || - aName.equalsAscii( pExternalDisplayName ) ) - 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( pUnifiedDisplayName ) || - Name.equalsAscii( pDefaultDisplayName ) || - Name.equalsAscii( pBuiltInDisplayName ) || - Name.equalsAscii( pExternalDisplayName ); -} - -// 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 - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/source/components/factory.cxx b/vcl/source/components/factory.cxx index 85bc7ee7ce9a..eb7c05bcce1f 100644 --- a/vcl/source/components/factory.cxx +++ b/vcl/source/components/factory.cxx @@ -37,10 +37,6 @@ extern Reference< XInterface > SAL_CALL vcl_session_createInstance( const Refere namespace vcl { -extern Sequence< OUString > SAL_CALL DisplayAccess_getSupportedServiceNames(); -extern OUString SAL_CALL DisplayAccess_getImplementationName(); -extern Reference< XInterface > SAL_CALL DisplayAccess_createInstance( const Reference< XMultiServiceFactory > & ); - extern Sequence< OUString > SAL_CALL FontIdentificator_getSupportedServiceNames(); extern OUString SAL_CALL FontIdentificator_getImplementationName(); extern Reference< XInterface > SAL_CALL FontIdentificator_createInstance( const Reference< XMultiServiceFactory > & ); @@ -84,12 +80,6 @@ extern "C" { xMgr, vcl_session_getImplementationName(), vcl_session_createInstance, vcl_session_getSupportedServiceNames() ); } - else if( vcl::DisplayAccess_getImplementationName().equalsAscii( pImplementationName ) ) - { - xFactory = ::cppu::createSingleFactory( - xMgr, vcl::DisplayAccess_getImplementationName(), vcl::DisplayAccess_createInstance, - vcl::DisplayAccess_getSupportedServiceNames() ); - } else if( vcl::FontIdentificator_getImplementationName().equalsAscii( pImplementationName ) ) { xFactory = ::cppu::createSingleFactory( |