From a39c96af53ec3364de70012ebfa7c09c4a55a7c3 Mon Sep 17 00:00:00 2001 From: Noel Grandin Date: Thu, 9 May 2013 09:09:52 +0200 Subject: fdo#46808, Convert sheet::GlobalSheetSettings service to new style Change-Id: If5fc10e408427fe5d87968a0ad51a3142f895709 --- offapi/UnoApi_offapi.mk | 3 +- offapi/com/sun/star/sheet/GlobalSheetSettings.idl | 126 +--------------- offapi/com/sun/star/sheet/XGlobalSheetSettings.idl | 161 +++++++++++++++++++++ offapi/type_reference/offapi.rdb | Bin 6834688 -> 6833664 bytes sc/inc/appluno.hxx | 94 +++++++++++- sc/source/filter/xml/xmlexprt.cxx | 37 ++--- sc/source/ui/unoobj/appluno.cxx | 16 ++ sc/source/ui/vba/excelvbahelper.cxx | 15 +- sc/source/ui/vba/vbahelper.cxx | 23 ++- 9 files changed, 302 insertions(+), 173 deletions(-) create mode 100644 offapi/com/sun/star/sheet/XGlobalSheetSettings.idl diff --git a/offapi/UnoApi_offapi.mk b/offapi/UnoApi_offapi.mk index 56c4f4add6b6..825182a666cc 100644 --- a/offapi/UnoApi_offapi.mk +++ b/offapi/UnoApi_offapi.mk @@ -343,6 +343,7 @@ $(eval $(call gb_UnoApi_add_idlfiles_nohdl,offapi,offapi/com/sun/star/sheet,\ ExternalDocLinks \ ExternalSheetCache \ FilterFormulaParser \ + GlobalSheetSettings \ FormulaOpCodeMapper \ RecentFunctions \ Solver \ @@ -1185,7 +1186,6 @@ $(eval $(call gb_UnoApi_add_idlfiles_noheader,offapi,offapi/com/sun/star/sheet,\ FunctionDescription \ FunctionDescriptionEnumeration \ FunctionDescriptions \ - GlobalSheetSettings \ HeaderFooterContent \ LabelRange \ LabelRanges \ @@ -3440,6 +3440,7 @@ $(eval $(call gb_UnoApi_add_idlfiles,offapi,offapi/com/sun/star/sheet,\ XFormulaTokens \ XFunctionAccess \ XFunctionDescriptions \ + XGlobalSheetSettings \ XGoalSeek \ XHeaderFooterContent \ XHierarchiesSupplier \ diff --git a/offapi/com/sun/star/sheet/GlobalSheetSettings.idl b/offapi/com/sun/star/sheet/GlobalSheetSettings.idl index 0360988744a5..44438f30f9d1 100644 --- a/offapi/com/sun/star/sheet/GlobalSheetSettings.idl +++ b/offapi/com/sun/star/sheet/GlobalSheetSettings.idl @@ -20,7 +20,7 @@ #ifndef __com_sun_star_sheet_GlobalSheetSettings_idl__ #define __com_sun_star_sheet_GlobalSheetSettings_idl__ -#include +#include module com { module sun { module star { module sheet { @@ -29,129 +29,7 @@ module com { module sun { module star { module sheet { /** contributes properties to access the settings for all spreadsheets of a spreadsheet document. */ -published service GlobalSheetSettings -{ - -//! service com::sun::star::beans::PropertySet; - /** provides access to the properties. - */ - interface com::sun::star::beans::XPropertySet; - - - /** specifies whether the cursor is moved after entering into cells. - */ - [property] boolean MoveSelection; - - - /** contains the direction the cursor moves after entering cells. - - @see com::sun::star::sheet::MoveDirection - */ - [property] short MoveDirection; - - - /** specifies whether the enter key can be used to start editing a cell. - */ - [property] boolean EnterEdit; - - - /** specifies whether cell formatting is extended when entering data. - */ - [property] boolean ExtendFormat; - - - /** specifies whether ranges are highlighted on the sheet when - editing a formula. - */ - [property] boolean RangeFinder; - - - /** specifies whether formula references are extended when cells - are inserted below or to the right of them. - */ - [property] boolean ExpandReferences; - - - /** specifies whether the current selection is highlighted in - column and row headers. - */ - [property] boolean MarkHeader; - - - /** specifies whether the enter key moves the cursor to the column - it was in before using the tab key to change columns. - */ - [property] boolean UseTabCol; - - - /** contains the metric for all spreadsheet documents. - - @see com::sun::star::util::MeasureUnit - */ - [property] short Metric; - - - /** contains the default scale for new spreadsheet documents - (in percent). - -

There are several special values:

-

-1 = Optimal width

-

-2 = Show whole page

-

-3 = Page width

- */ - [property] short Scale; - - - /** specifies whether automatic completion of text in a cell is used. - */ - [property] boolean DoAutoComplete; - - - /** contains the function that is displayed in the status bar. - - @see com::sun::star::sheet::StatusBarFunction - */ - [property] short StatusBarFunction; - - - /** contains the string lists used for sorting and filling. - -

Each string contains the members of a list, separated by - commas.

- */ - [property] sequence< string > UserLists; - - - /** specifies the update mode for external linked data. - -

0 = always

-

1 = never

-

2 = on demand

- */ - [optional, property] short LinkUpdateMode; - - - /** specifies whether all sheets or only selected sheets are printed. - */ - [optional, property] boolean PrintAllSheets; - - - /** specifies whether empty pages are printed. - */ - [optional, property] boolean PrintEmptyPages; - - - /** specifies whether printer metrics are used for display. - */ - [optional, property] boolean UsePrinterMetrics; - - - /** specifies whether a warning is shown before replacing cells - (i.e. when pasting from clipboard). - */ - [optional, property] boolean ReplaceCellsWarning; - -}; +published service GlobalSheetSettings : XGlobalSheetSettings; }; }; }; }; diff --git a/offapi/com/sun/star/sheet/XGlobalSheetSettings.idl b/offapi/com/sun/star/sheet/XGlobalSheetSettings.idl new file mode 100644 index 000000000000..0843d30c6b25 --- /dev/null +++ b/offapi/com/sun/star/sheet/XGlobalSheetSettings.idl @@ -0,0 +1,161 @@ +/* -*- 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 . + */ + +#ifndef __com_sun_star_sheet_XGlobalSheetSettings_idl__ +#define __com_sun_star_sheet_XGlobalSheetSettings_idl__ + +#include + + +module com { module sun { module star { module sheet { + + +/** + @since LibreOffice 4.1 + */ +published interface XGlobalSheetSettings +{ + +//! service com::sun::star::beans::PropertySet; + /** provides access to the properties. + */ + interface com::sun::star::beans::XPropertySet; + + + /** specifies whether the cursor is moved after entering into cells. + */ + [attribute] boolean MoveSelection; + + + /** contains the direction the cursor moves after entering cells. + + @see com::sun::star::sheet::MoveDirection + */ + [attribute] short MoveDirection; + + + /** specifies whether the enter key can be used to start editing a cell. + */ + [attribute] boolean EnterEdit; + + + /** specifies whether cell formatting is extended when entering data. + */ + [attribute] boolean ExtendFormat; + + + /** specifies whether ranges are highlighted on the sheet when + editing a formula. + */ + [attribute] boolean RangeFinder; + + + /** specifies whether formula references are extended when cells + are inserted below or to the right of them. + */ + [attribute] boolean ExpandReferences; + + + /** specifies whether the current selection is highlighted in + column and row headers. + */ + [attribute] boolean MarkHeader; + + + /** specifies whether the enter key moves the cursor to the column + it was in before using the tab key to change columns. + */ + [attribute] boolean UseTabCol; + + + /** contains the metric for all spreadsheet documents. + + @see com::sun::star::util::MeasureUnit + */ + [attribute] short Metric; + + + /** contains the default scale for new spreadsheet documents + (in percent). + +

There are several special values:

+

-1 = Optimal width

+

-2 = Show whole page

+

-3 = Page width

+ */ + [attribute] short Scale; + + + /** specifies whether automatic completion of text in a cell is used. + */ + [attribute] boolean DoAutoComplete; + + + /** contains the function that is displayed in the status bar. + + @see com::sun::star::sheet::StatusBarFunction + */ + [attribute] short StatusBarFunction; + + + /** contains the string lists used for sorting and filling. + +

Each string contains the members of a list, separated by + commas.

+ */ + [attribute] sequence< string > UserLists; + + + /** specifies the update mode for external linked data. + +

0 = always

+

1 = never

+

2 = on demand

+ */ + [attribute] short LinkUpdateMode; + + + /** specifies whether all sheets or only selected sheets are printed. + */ + [attribute] boolean PrintAllSheets; + + + /** specifies whether empty pages are printed. + */ + [attribute] boolean PrintEmptyPages; + + + /** specifies whether printer metrics are used for display. + */ + [attribute] boolean UsePrinterMetrics; + + + /** specifies whether a warning is shown before replacing cells + (i.e. when pasting from clipboard). + */ + [attribute] boolean ReplaceCellsWarning; + +}; + + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/offapi/type_reference/offapi.rdb b/offapi/type_reference/offapi.rdb index 2aa5361ff528..fc2dc3299087 100644 Binary files a/offapi/type_reference/offapi.rdb and b/offapi/type_reference/offapi.rdb differ diff --git a/sc/inc/appluno.hxx b/sc/inc/appluno.hxx index aba493bab79e..2189fa1cd412 100644 --- a/sc/inc/appluno.hxx +++ b/sc/inc/appluno.hxx @@ -22,9 +22,9 @@ #include #include -#include #include #include +#include #include #include #include @@ -48,12 +48,19 @@ com::sun::star::uno::Reference SAL_CALL class ScSpreadsheetSettings : public cppu::WeakImplHelper2< - com::sun::star::beans::XPropertySet, + com::sun::star::sheet::XGlobalSheetSettings, com::sun::star::lang::XServiceInfo> { private: SfxItemPropertySet aPropSet; + + sal_Bool getPropertyBool(const OUString& aPropertyName) throw (css::uno::RuntimeException); + sal_Int16 getPropertyInt16(const OUString& aPropertyName) throw (css::uno::RuntimeException); + void setProperty(const OUString& aPropertyName, sal_Bool p1) throw (css::uno::RuntimeException) + { setPropertyValue( aPropertyName, css::uno::Any(p1) ); } + void setProperty(const OUString& aPropertyName, sal_Int16 p1) throw (css::uno::RuntimeException) + { setPropertyValue( aPropertyName, css::uno::Any(p1) ); } public: ScSpreadsheetSettings(); virtual ~ScSpreadsheetSettings(); @@ -61,7 +68,86 @@ public: static OUString getImplementationName_Static(); static ::com::sun::star::uno::Sequence< OUString > getSupportedServiceNames_Static(); - // XPropertySet + // XGlobalSheetSettings + virtual sal_Bool SAL_CALL getMoveSelection() throw (css::uno::RuntimeException) + { return getPropertyBool("MoveSelection"); } + virtual void SAL_CALL setMoveSelection(sal_Bool p1) throw (css::uno::RuntimeException) + { setProperty("MoveSelection", p1); } + virtual sal_Int16 SAL_CALL getMoveDirection() throw (css::uno::RuntimeException) + { return getPropertyInt16("MoveDirection"); } + virtual void SAL_CALL setMoveDirection(sal_Int16 p1) throw (css::uno::RuntimeException) + { setProperty("MoveDirection", p1); } + virtual sal_Bool SAL_CALL getEnterEdit() throw (css::uno::RuntimeException) + { return getPropertyBool("EnterEdit"); } + virtual void SAL_CALL setEnterEdit(sal_Bool p1) throw (css::uno::RuntimeException) + { setProperty("EnterEdit", p1); } + virtual sal_Bool SAL_CALL getExtendFormat() throw (css::uno::RuntimeException) + { return getPropertyBool("ExtendFormat"); } + virtual void SAL_CALL setExtendFormat(sal_Bool p1) throw (css::uno::RuntimeException) + { setProperty("ExtendFormat", p1); } + virtual sal_Bool SAL_CALL getRangeFinder() throw (css::uno::RuntimeException) + { return getPropertyBool("RangeFinder"); } + virtual void SAL_CALL setRangeFinder(sal_Bool p1) throw (css::uno::RuntimeException) + { setProperty("RangeFinder", p1); } + virtual sal_Bool SAL_CALL getExpandReferences() throw (css::uno::RuntimeException) + { return getPropertyBool("ExpandReferences"); } + virtual void SAL_CALL setExpandReferences(sal_Bool p1) throw (css::uno::RuntimeException) + { setProperty("ExpandReferences", p1); } + virtual sal_Bool SAL_CALL getMarkHeader() throw (css::uno::RuntimeException) + { return getPropertyBool("MarkHeader"); } + virtual void SAL_CALL setMarkHeader(sal_Bool p1) throw (css::uno::RuntimeException) + { setProperty("MarkHeader", p1); } + virtual sal_Bool SAL_CALL getUseTabCol() throw (css::uno::RuntimeException) + { return getPropertyBool("UseTabCol"); } + virtual void SAL_CALL setUseTabCol(sal_Bool p1) throw (css::uno::RuntimeException) + { setProperty("UseTabCol", p1); } + virtual sal_Int16 SAL_CALL getMetric() throw (css::uno::RuntimeException) + { return getPropertyInt16("Metric"); } + virtual void SAL_CALL setMetric(sal_Int16 p1) throw (css::uno::RuntimeException) + { setProperty("Metric", p1); } + virtual sal_Int16 SAL_CALL getScale() throw (css::uno::RuntimeException) + { return getPropertyInt16("Scale"); } + virtual void SAL_CALL setScale(sal_Int16 p1) throw (css::uno::RuntimeException) + { setProperty("Scale", p1); } + virtual sal_Bool SAL_CALL getDoAutoComplete() throw (css::uno::RuntimeException) + { return getPropertyBool("DoAutoComplete"); } + virtual void SAL_CALL setDoAutoComplete(sal_Bool p1) throw (css::uno::RuntimeException) + { setProperty("DoAutoComplete", p1); } + virtual sal_Int16 SAL_CALL getStatusBarFunction() throw (css::uno::RuntimeException) + { return getPropertyInt16("StatusBarFunction"); } + virtual void SAL_CALL setStatusBarFunction(sal_Int16 p1) throw (css::uno::RuntimeException) + { setProperty("StatusBarFunction", p1); } + virtual css::uno::Sequence SAL_CALL getUserLists() throw (css::uno::RuntimeException) + { + css::uno::Any any = getPropertyValue("UserLists"); + css::uno::Sequence b; + any >>= b; + return b; + } + virtual void SAL_CALL setUserLists(const css::uno::Sequence& p1) throw (css::uno::RuntimeException) + { setPropertyValue( "UserLists", css::uno::Any(p1) ); } + virtual sal_Int16 SAL_CALL getLinkUpdateMode() throw (css::uno::RuntimeException) + { return getPropertyInt16("LinkUpdateMode"); } + virtual void SAL_CALL setLinkUpdateMode(sal_Int16 p1) throw (css::uno::RuntimeException) + { setProperty("LinkUpdateMode", p1); } + virtual sal_Bool SAL_CALL getPrintAllSheets() throw (css::uno::RuntimeException) + { return getPropertyBool("PrintAllSheets"); } + virtual void SAL_CALL setPrintAllSheets(sal_Bool p1) throw (css::uno::RuntimeException) + { setProperty("PrintAllSheets", p1); } + virtual sal_Bool SAL_CALL getPrintEmptyPages() throw (css::uno::RuntimeException) + { return getPropertyBool("PrintEmptyPages"); } + virtual void SAL_CALL setPrintEmptyPages(sal_Bool p1) throw (css::uno::RuntimeException) + { setProperty("PrintEmptyPages", p1); } + virtual sal_Bool SAL_CALL getUsePrinterMetrics() throw (css::uno::RuntimeException) + { return getPropertyBool("UsePrinterMetrics"); } + virtual void SAL_CALL setUsePrinterMetrics(sal_Bool p1) throw (css::uno::RuntimeException) + { setProperty("UsePrinterMetrics", p1); } + virtual sal_Bool SAL_CALL getReplaceCellsWarning() throw (css::uno::RuntimeException) + { return getPropertyBool("ReplaceCellsWarning"); } + virtual void SAL_CALL setReplaceCellsWarning(sal_Bool p1) throw (css::uno::RuntimeException) + { setProperty("ReplaceCellsWarning", p1); } + + // XPropertySet virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() throw(::com::sun::star::uno::RuntimeException); @@ -102,7 +188,7 @@ public: ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - // XServiceInfo + // XServiceInfo virtual OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException); virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) diff --git a/sc/source/filter/xml/xmlexprt.cxx b/sc/source/filter/xml/xmlexprt.cxx index c78c4df0ecb6..28a155a93b59 100644 --- a/sc/source/filter/xml/xmlexprt.cxx +++ b/sc/source/filter/xml/xmlexprt.cxx @@ -88,22 +88,21 @@ #include #include +#include +#include +#include +#include +#include +#include #include #include #include #include -#include -#include #include -#include -#include -#include #include #include #include -#include #include -#include #include #include #include @@ -111,10 +110,12 @@ #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include #include @@ -418,17 +419,9 @@ void ScXMLShapeExport::onExport( const uno::Reference < drawing::XShape >& xShap sal_Int16 ScXMLExport::GetFieldUnit() { - com::sun::star::uno::Reference xProperties( - comphelper::getProcessServiceFactory()->createInstance( - OUString( "com.sun.star.sheet.GlobalSheetSettings" ) ), - com::sun::star::uno::UNO_QUERY); - if (xProperties.is()) - { - sal_Int16 nFieldUnit = 0; - if (xProperties->getPropertyValue(OUString("Metric")) >>= nFieldUnit) - return nFieldUnit; - } - return 0; + css::uno::Reference xProperties = + css::sheet::GlobalSheetSettings::create( comphelper::getProcessComponentContext() ); + return xProperties->getMetric(); } diff --git a/sc/source/ui/unoobj/appluno.cxx b/sc/source/ui/unoobj/appluno.cxx index 07eb1156c484..1862f9ddf62d 100644 --- a/sc/source/ui/unoobj/appluno.cxx +++ b/sc/source/ui/unoobj/appluno.cxx @@ -378,6 +378,22 @@ uno::Sequence ScSpreadsheetSettings::getSupportedServiceNames_Static() return aRet; } +sal_Bool ScSpreadsheetSettings::getPropertyBool(const OUString& aPropertyName) throw (css::uno::RuntimeException) +{ + uno::Any any = getPropertyValue(aPropertyName); + sal_Bool b; + any >>= b; + return b; +} + +sal_Int16 ScSpreadsheetSettings::getPropertyInt16(const OUString& aPropertyName) throw (css::uno::RuntimeException) +{ + uno::Any any = getPropertyValue(aPropertyName); + sal_Int16 b; + any >>= b; + return b; +} + // XPropertySet uno::Reference SAL_CALL ScSpreadsheetSettings::getPropertySetInfo() diff --git a/sc/source/ui/vba/excelvbahelper.cxx b/sc/source/ui/vba/excelvbahelper.cxx index 86943a21d4ac..d8eb7f321e67 100644 --- a/sc/source/ui/vba/excelvbahelper.cxx +++ b/sc/source/ui/vba/excelvbahelper.cxx @@ -21,6 +21,8 @@ #include #include +#include + #include "docuno.hxx" #include "tabvwsh.hxx" #include "transobj.hxx" @@ -107,26 +109,21 @@ class PasteCellsWarningReseter { private: bool bInitialWarningState; - static uno::Reference< beans::XPropertySet > getGlobalSheetSettings() throw ( uno::RuntimeException ) + static uno::Reference< sheet::XGlobalSheetSettings > getGlobalSheetSettings() throw ( uno::RuntimeException ) { - static uno::Reference xContext( - comphelper::getProcessComponentContext() ); - static uno::Reference xServiceManager( - xContext->getServiceManager() ); - static uno::Reference< beans::XPropertySet > xProps( xServiceManager->createInstanceWithContext( OUString( "com.sun.star.sheet.GlobalSheetSettings" ) ,xContext ), uno::UNO_QUERY_THROW ); + static uno::Reference< sheet::XGlobalSheetSettings > xProps = sheet::GlobalSheetSettings::create( comphelper::getProcessComponentContext() ); return xProps; } bool getReplaceCellsWarning() throw ( uno::RuntimeException ) { - sal_Bool res = false; - getGlobalSheetSettings()->getPropertyValue( REPLACE_CELLS_WARNING ) >>= res; + sal_Bool res = getGlobalSheetSettings()->getReplaceCellsWarning(); return ( res == sal_True ); } void setReplaceCellsWarning( bool bState ) throw ( uno::RuntimeException ) { - getGlobalSheetSettings()->setPropertyValue( REPLACE_CELLS_WARNING, uno::makeAny( bState ) ); + getGlobalSheetSettings()->setReplaceCellsWarning( bState ); } public: PasteCellsWarningReseter() throw ( uno::RuntimeException ) diff --git a/sc/source/ui/vba/vbahelper.cxx b/sc/source/ui/vba/vbahelper.cxx index d77fe9074b5e..d6b5552b3aa0 100644 --- a/sc/source/ui/vba/vbahelper.cxx +++ b/sc/source/ui/vba/vbahelper.cxx @@ -17,17 +17,19 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ #include -#include +#include +#include #include #include #include #include #include +#include #include +#include #include -#include -#include -#include +#include + #include @@ -111,26 +113,21 @@ class PasteCellsWarningReseter { private: bool bInitialWarningState; - static uno::Reference< beans::XPropertySet > getGlobalSheetSettings() throw ( uno::RuntimeException ) + static uno::Reference< sheet::XGlobalSheetSettings > getGlobalSheetSettings() throw ( uno::RuntimeException ) { - static uno::Reference xContext( - comphelper::getProcessComponentContext() ); - static uno::Reference xServiceManager( - xContext->getServiceManager() ); - static uno::Reference< beans::XPropertySet > xProps( xServiceManager->createInstanceWithContext( OUString( "com.sun.star.sheet.GlobalSheetSettings" ) ,xContext ), uno::UNO_QUERY_THROW ); + static uno::Reference< sheet::XGlobalSheetSettings > xProps = sheet::sheet( comphelper::getProcessComponentContext() ); return xProps; } bool getReplaceCellsWarning() throw ( uno::RuntimeException ) { - sal_Bool res = false; - getGlobalSheetSettings()->getPropertyValue( OUString(REPLACE_CELLS_WARNING) ) >>= res; + sal_Bool res = getGlobalSheetSettings()->getReplaceCellsWarning(); return ( res == sal_True ); } void setReplaceCellsWarning( bool bState ) throw ( uno::RuntimeException ) { - getGlobalSheetSettings()->setPropertyValue( OUString(REPLACE_CELLS_WARNING), uno::makeAny( bState ) ); + getGlobalSheetSettings()->setReplaceCellsWarning( bState ); } public: PasteCellsWarningReseter() throw ( uno::RuntimeException ) -- cgit