comphelper/Library_comphelp.mk | 1 comphelper/Package_inc.mk | 1 comphelper/inc/comphelper/configuration.hxx | 353 ++++++++++++++++++++++++++++ comphelper/source/misc/configuration.cxx | 233 ++++++++++++++++++ cui/source/options/fontsubs.cxx | 4 cui/source/options/optmemory.cxx | 4 officecfg/prj/build.lst | 2 officecfg/registry/cppheader.xsl | 10 sfx2/source/appl/appbas.cxx | 4 sfx2/source/appl/appcfg.cxx | 4 svl/source/config/asiancfg.cxx | 6 unotools/Library_utl.mk | 1 unotools/Package_inc.mk | 1 unotools/inc/unotools/configuration.hxx | 353 ---------------------------- unotools/source/config/configuration.cxx | 232 ------------------ 15 files changed, 605 insertions(+), 604 deletions(-)
New commits: commit ca3e3e7e3198f492b2d4608ffc5420e657d99b00 Author: Stephan Bergmann <[email protected]> Date: Tue Jan 31 15:36:49 2012 +0100 Move unotools/configuration.hxx to comphelper ...so that other code in comphelper can use it. diff --git a/comphelper/Library_comphelp.mk b/comphelper/Library_comphelp.mk index 7534de6..2b37596 100644 --- a/comphelper/Library_comphelp.mk +++ b/comphelper/Library_comphelp.mk @@ -80,6 +80,7 @@ $(eval $(call gb_Library_add_exception_objects,comphelper,\ comphelper/source/misc/componentbase \ comphelper/source/misc/componentcontext \ comphelper/source/misc/componentmodule \ + comphelper/source/misc/configuration \ comphelper/source/misc/configurationhelper \ comphelper/source/misc/docpasswordhelper \ comphelper/source/misc/docpasswordrequest \ diff --git a/comphelper/Package_inc.mk b/comphelper/Package_inc.mk index ba1344a..7ed759b 100644 --- a/comphelper/Package_inc.mk +++ b/comphelper/Package_inc.mk @@ -130,6 +130,7 @@ $(eval $(call gb_Package_add_file,comphelper_inc,inc/comphelper/seqstream.hxx,co $(eval $(call gb_Package_add_file,comphelper_inc,inc/comphelper/namecontainer.hxx,comphelper/namecontainer.hxx)) $(eval $(call gb_Package_add_file,comphelper_inc,inc/comphelper/processfactory.hxx,comphelper/processfactory.hxx)) $(eval $(call gb_Package_add_file,comphelper_inc,inc/comphelper/sequenceashashmap.hxx,comphelper/sequenceashashmap.hxx)) +$(eval $(call gb_Package_add_file,comphelper_inc,inc/comphelper/configuration.hxx,comphelper/configuration.hxx)) $(eval $(call gb_Package_add_file,comphelper_inc,inc/comphelper/configurationhelper.hxx,comphelper/configurationhelper.hxx)) # vim: set noet sw=4 ts=4: diff --git a/comphelper/inc/comphelper/configuration.hxx b/comphelper/inc/comphelper/configuration.hxx new file mode 100644 index 0000000..85f45f9 --- /dev/null +++ b/comphelper/inc/comphelper/configuration.hxx @@ -0,0 +1,353 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * Version: MPL 1.1 / GPLv3+ / LGPLv3+ + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License or as specified alternatively below. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * Major Contributor(s): + * Copyright (C) 2011 Red Hat, Inc., Stephan Bergmann <[email protected]> + * (initial developer) + * + * All Rights Reserved. + * + * For minor contributions see the git repository. + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 3 or later (the "GPLv3+"), or + * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), + * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable + * instead of those above. + */ + +#ifndef INCLUDED_COMPHELPER_CONFIGURATION_HXX +#define INCLUDED_COMPHELPER_CONFIGURATION_HXX + +#include "sal/config.h" + +#include "boost/noncopyable.hpp" +#include "boost/optional.hpp" +#include "boost/shared_ptr.hpp" +#include "com/sun/star/uno/Any.hxx" +#include "com/sun/star/uno/Reference.hxx" +#include "comphelper/comphelperdllapi.h" +#include "sal/types.h" + +namespace com { namespace sun { namespace star { + namespace configuration { class XReadWriteAccess; } + namespace container { + class XHierarchicalNameAccess; + class XHierarchicalNameReplace; + class XNameAccess; + class XNameContainer; + } + namespace uno { class XComponentContext; } +} } } +namespace rtl { class OUString; } + +namespace comphelper { + +namespace detail { class ConfigurationWrapper; } + +/// A batch of configuration changes that is committed as a whole. +/// +/// Client code needs to call commit explicitly; otherwise the changes are lost +/// when the instance is destroyed. +/// +/// This is the only class from this header file that client code should use +/// directly. +class COMPHELPER_DLLPUBLIC ConfigurationChanges: private boost::noncopyable { +public: + static boost::shared_ptr< ConfigurationChanges > create( + com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > + const & context); + + ~ConfigurationChanges(); + + void commit() const; + +private: + SAL_DLLPRIVATE ConfigurationChanges( + com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > + const & context); + + SAL_DLLPRIVATE void setPropertyValue( + rtl::OUString const & path, com::sun::star::uno::Any const & value) + const; + + SAL_DLLPRIVATE com::sun::star::uno::Reference< + com::sun::star::container::XHierarchicalNameReplace > + getGroup(rtl::OUString const & path) const; + + SAL_DLLPRIVATE + com::sun::star::uno::Reference< com::sun::star::container::XNameContainer > + getSet(rtl::OUString const & path) const; + + com::sun::star::uno::Reference< + com::sun::star::configuration::XReadWriteAccess > access_; + + friend class detail::ConfigurationWrapper; +}; + +namespace detail { + +/// @internal +class COMPHELPER_DLLPUBLIC ConfigurationWrapper: private boost::noncopyable { +public: + static ConfigurationWrapper const & get( + com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > + const & context); + + SAL_DLLPRIVATE explicit ConfigurationWrapper( + com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > + const & context); + + SAL_DLLPRIVATE ~ConfigurationWrapper(); + + com::sun::star::uno::Any getPropertyValue(rtl::OUString const & path) const; + + void setPropertyValue( + boost::shared_ptr< ConfigurationChanges > const & batch, + rtl::OUString const & path, com::sun::star::uno::Any const & value) + const; + + com::sun::star::uno::Any getLocalizedPropertyValue( + rtl::OUString const & path) const; + + void setLocalizedPropertyValue( + boost::shared_ptr< ConfigurationChanges > const & batch, + rtl::OUString const & path, com::sun::star::uno::Any const & value) + const; + + com::sun::star::uno::Reference< + com::sun::star::container::XHierarchicalNameAccess > + getGroupReadOnly(rtl::OUString const & path) const; + + com::sun::star::uno::Reference< + com::sun::star::container::XHierarchicalNameReplace > + getGroupReadWrite( + boost::shared_ptr< ConfigurationChanges > const & batch, + rtl::OUString const & path) const; + + com::sun::star::uno::Reference< com::sun::star::container::XNameAccess > + getSetReadOnly(rtl::OUString const & path) const; + + com::sun::star::uno::Reference< com::sun::star::container::XNameContainer > + getSetReadWrite( + boost::shared_ptr< ConfigurationChanges > const & batch, + rtl::OUString const & path) const; + + boost::shared_ptr< ConfigurationChanges > createChanges() const; + +private: + rtl::OUString extendLocalizedPath(rtl::OUString const & path) const; + + com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > + context_; + + com::sun::star::uno::Reference< + com::sun::star::container::XHierarchicalNameAccess > access_; +}; + +/// @internal +template< typename T > struct Convert: private boost::noncopyable { + static com::sun::star::uno::Any toAny(T const & value) + { return com::sun::star::uno::makeAny(value); } + + static T fromAny(com::sun::star::uno::Any const & value) + { return value.get< T >(); } + +private: + Convert(); // not defined + ~Convert(); // not defined +}; + +/// @internal +template< typename T > struct Convert< boost::optional< T > >: + private boost::noncopyable +{ + static com::sun::star::uno::Any toAny(boost::optional< T > const & value) { + return value + ? com::sun::star::uno::makeAny(value.get()) + : com::sun::star::uno::Any(); + } + + static boost::optional< T > fromAny(com::sun::star::uno::Any const & value) + { + return value.hasValue() + ? boost::optional< T >(value.get< T >()) : boost::optional< T >(); + } + +private: + Convert(); // not defined + ~Convert(); // not defined +}; + +} + +/// A type-safe wrapper around a (non-localized) configuration property. +/// +/// Automatically generated headers for the various configuration properties +/// derive from this template and make available its member functions to access +/// each given configuration property. +template< typename T, typename U > struct ConfigurationProperty: + private boost::noncopyable +{ + /// Get the value of the given (non-localized) configuration property. + /// + /// For nillable properties, U is of type boost::optional<U'>. + static U get( + com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > + const & context) + { + // Folding this into one statement causes a bogus error at least with + // Red Hat GCC 4.6.2-1: + com::sun::star::uno::Any a( + detail::ConfigurationWrapper::get(context).getPropertyValue( + T::path())); + return detail::Convert< U >::fromAny(a); + } + + /// Set the value of the given (non-localized) configuration property, via a + /// given changes batch. + /// + /// For nillable properties, U is of type boost::optional<U'>. + static void set( + com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > + const & context, + boost::shared_ptr< ConfigurationChanges > const & batch, + U const & value) + { + detail::ConfigurationWrapper::get(context).setPropertyValue( + batch, T::path(), detail::Convert< U >::toAny(value)); + } + +private: + ConfigurationProperty(); // not defined + ~ConfigurationProperty(); // not defined +}; + +/// A type-safe wrapper around a localized configuration property. +/// +/// Automatically generated headers for the various localized configuration +/// properties derive from this template and make available its member functions +/// to access each given localized configuration property. +template< typename T, typename U > struct ConfigurationLocalizedProperty: + private boost::noncopyable +{ + /// Get the value of the given localized configuration property, for the + /// locale currently set at the + /// com.sun.star.configuration.theDefaultProvider. + /// + /// For nillable properties, U is of type boost::optional<U'>. + static U get( + com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > + const & context) + { + // Folding this into one statement causes a bogus error at least with + // Red Hat GCC 4.6.2-1: + com::sun::star::uno::Any a( + detail::ConfigurationWrapper::get(context). + getLocalizedPropertyValue(T::path())); + return detail::Convert< U >::fromAny(a); + } + + /// Set the value of the given localized configuration property, for the + /// locale currently set at the + /// com.sun.star.configuration.theDefaultProvider, via a given changes + /// batch. + /// + /// For nillable properties, U is of type boost::optional<U'>. + static void set( + com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > + const & context, + boost::shared_ptr< ConfigurationChanges > const & batch, + U const & value) + { + detail::ConfigurationWrapper::get(context).setLocalizedPropertyValue( + batch, T::path(), detail::Convert< U >::toAny(value)); + } + +private: + ConfigurationLocalizedProperty(); // not defined + ~ConfigurationLocalizedProperty(); // not defined +}; + +/// A type-safe wrapper around a configuration group. +/// +/// Automatically generated headers for the various configuration groups derive +/// from this template and make available its member functions to access each +/// given configuration group. +template< typename T > struct ConfigurationGroup: private boost::noncopyable { + /// Get read-only access to the given configuration group. + static com::sun::star::uno::Reference< + com::sun::star::container::XHierarchicalNameAccess > + get(com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > + const & context) + { + return detail::ConfigurationWrapper::get(context).getGroupReadOnly( + T::path()); + } + + /// Get read/write access to the given configuration group, storing any + /// modifications via the given changes batch. + static com::sun::star::uno::Reference< + com::sun::star::container::XHierarchicalNameReplace > + get(com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > + const & context, + boost::shared_ptr< ConfigurationChanges > const & batch) + { + return detail::ConfigurationWrapper::get(context).getGroupReadWrite( + batch, T::path()); + } + +private: + ConfigurationGroup(); // not defined + ~ConfigurationGroup(); // not defined +}; + +/// A type-safe wrapper around a configuration set. +/// +/// Automatically generated headers for the various configuration sets derive +/// from this template and make available its member functions to access each +/// given configuration set. +template< typename T > struct ConfigurationSet: private boost::noncopyable { + /// Get read-only access to the given configuration set. + static + com::sun::star::uno::Reference< com::sun::star::container::XNameAccess > + get(com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > + const & context) + { + return detail::ConfigurationWrapper::get(context).getSetReadOnly( + T::path()); + } + + /// Get read/write access to the given configuration set, storing any + /// modifications via the given changes batch. + static + com::sun::star::uno::Reference< com::sun::star::container::XNameContainer > + get(com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > + const & context, + boost::shared_ptr< ConfigurationChanges > const & batch) + { + return detail::ConfigurationWrapper::get(context).getSetReadWrite( + batch, T::path()); + } + +private: + ConfigurationSet(); // not defined + ~ConfigurationSet(); // not defined +}; + +} + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/comphelper/source/misc/configuration.cxx b/comphelper/source/misc/configuration.cxx new file mode 100644 index 0000000..8954f4f --- /dev/null +++ b/comphelper/source/misc/configuration.cxx @@ -0,0 +1,233 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * Version: MPL 1.1 / GPLv3+ / LGPLv3+ + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License or as specified alternatively below. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * Major Contributor(s): + * Copyright (C) 2011 Red Hat, Inc., Stephan Bergmann <[email protected]> + * (initial developer) + * + * All Rights Reserved. + * + * For minor contributions see the git repository. + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 3 or later (the "GPLv3+"), or + * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), + * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable + * instead of those above. + */ + +#include "sal/config.h" + +#include <cassert> + +#include "boost/shared_ptr.hpp" +#include "com/sun/star/configuration/ReadOnlyAccess.hpp" +#include "com/sun/star/configuration/ReadWriteAccess.hpp" +#include "com/sun/star/configuration/XReadWriteAccess.hpp" +#include "com/sun/star/configuration/theDefaultProvider.hpp" +#include "com/sun/star/container/XHierarchicalNameAccess.hpp" +#include "com/sun/star/container/XHierarchicalNameReplace.hpp" +#include "com/sun/star/container/XNameAccess.hpp" +#include "com/sun/star/container/XNameContainer.hpp" +#include "com/sun/star/lang/Locale.hpp" +#include "com/sun/star/lang/XLocalizable.hpp" +#include "com/sun/star/uno/Any.hxx" +#include "com/sun/star/uno/Reference.hxx" +#include "com/sun/star/uno/XComponentContext.hpp" +#include "comphelper/configuration.hxx" +#include "rtl/instance.hxx" +#include "rtl/oustringostreaminserter.hxx" +#include "rtl/ustrbuf.hxx" +#include "rtl/ustring.h" +#include "rtl/ustring.hxx" +#include "sal/log.hxx" + +namespace { + +namespace css = com::sun::star; + +struct TheConfigurationWrapper: + public rtl::StaticWithArg< + comphelper::detail::ConfigurationWrapper, + css::uno::Reference< css::uno::XComponentContext >, + TheConfigurationWrapper > +{}; + +} + +boost::shared_ptr< comphelper::ConfigurationChanges > +comphelper::ConfigurationChanges::create( + css::uno::Reference< css::uno::XComponentContext > const & context) +{ + return TheConfigurationWrapper::get(context).createChanges(); +} + + +comphelper::ConfigurationChanges::~ConfigurationChanges() {} + +void comphelper::ConfigurationChanges::commit() const { + access_->commitChanges(); +} + +comphelper::ConfigurationChanges::ConfigurationChanges( + css::uno::Reference< css::uno::XComponentContext > const & context): + access_(css::configuration::ReadWriteAccess::create(context)) +{} + +void comphelper::ConfigurationChanges::setPropertyValue( + rtl::OUString const & path, css::uno::Any const & value) const +{ + access_->replaceByHierarchicalName(path, value); +} + +css::uno::Reference< css::container::XHierarchicalNameReplace > +comphelper::ConfigurationChanges::getGroup(rtl::OUString const & path) const +{ + return css::uno::Reference< css::container::XHierarchicalNameReplace >( + access_->getByHierarchicalName(path), css::uno::UNO_QUERY_THROW); +} + +css::uno::Reference< css::container::XNameContainer > +comphelper::ConfigurationChanges::getSet(rtl::OUString const & path) const +{ + return css::uno::Reference< css::container::XNameContainer >( + access_->getByHierarchicalName(path), css::uno::UNO_QUERY_THROW); +} + +comphelper::detail::ConfigurationWrapper const & +comphelper::detail::ConfigurationWrapper::get( + css::uno::Reference< css::uno::XComponentContext > const & context) +{ + return TheConfigurationWrapper::get(context); +} + +comphelper::detail::ConfigurationWrapper::ConfigurationWrapper( + css::uno::Reference< css::uno::XComponentContext > const & context): + context_(context), access_(css::configuration::ReadOnlyAccess::get(context)) +{} + +comphelper::detail::ConfigurationWrapper::~ConfigurationWrapper() {} + +css::uno::Any comphelper::detail::ConfigurationWrapper::getPropertyValue( + rtl::OUString const & path) const +{ + return access_->getByHierarchicalName(path); +} + +void comphelper::detail::ConfigurationWrapper::setPropertyValue( + boost::shared_ptr< ConfigurationChanges > const & batch, + rtl::OUString const & path, com::sun::star::uno::Any const & value) const +{ + assert(batch.get() != 0); + batch->setPropertyValue(path, value); +} + +css::uno::Any +comphelper::detail::ConfigurationWrapper::getLocalizedPropertyValue( + rtl::OUString const & path) const +{ + return access_->getByHierarchicalName(extendLocalizedPath(path)); +} + +void comphelper::detail::ConfigurationWrapper::setLocalizedPropertyValue( + boost::shared_ptr< ConfigurationChanges > const & batch, + rtl::OUString const & path, com::sun::star::uno::Any const & value) const +{ + assert(batch.get() != 0); + batch->setPropertyValue(extendLocalizedPath(path), value); +} + +css::uno::Reference< css::container::XHierarchicalNameAccess > +comphelper::detail::ConfigurationWrapper::getGroupReadOnly( + rtl::OUString const & path) const +{ + return css::uno::Reference< css::container::XHierarchicalNameAccess >( + access_->getByHierarchicalName(path), css::uno::UNO_QUERY_THROW); +} + +css::uno::Reference< css::container::XHierarchicalNameReplace > +comphelper::detail::ConfigurationWrapper::getGroupReadWrite( + boost::shared_ptr< ConfigurationChanges > const & batch, + rtl::OUString const & path) const +{ + assert(batch.get() != 0); + return batch->getGroup(path); +} + +css::uno::Reference< css::container::XNameAccess > +comphelper::detail::ConfigurationWrapper::getSetReadOnly( + rtl::OUString const & path) const +{ + return css::uno::Reference< css::container::XNameAccess >( + access_->getByHierarchicalName(path), css::uno::UNO_QUERY_THROW); +} + +css::uno::Reference< css::container::XNameContainer > +comphelper::detail::ConfigurationWrapper::getSetReadWrite( + boost::shared_ptr< ConfigurationChanges > const & batch, + rtl::OUString const & path) const +{ + assert(batch.get() != 0); + return batch->getSet(path); +} + +boost::shared_ptr< comphelper::ConfigurationChanges > +comphelper::detail::ConfigurationWrapper::createChanges() const { + return boost::shared_ptr< ConfigurationChanges >( + new ConfigurationChanges(context_)); +} + +rtl::OUString comphelper::detail::ConfigurationWrapper::extendLocalizedPath( + rtl::OUString const & path) const +{ + rtl::OUStringBuffer buf(path); + buf.appendAscii(RTL_CONSTASCII_STRINGPARAM("/['")); + css::lang::Locale locale( + css::uno::Reference< css::lang::XLocalizable >( + css::configuration::theDefaultProvider::get(context_), + css::uno::UNO_QUERY_THROW)-> + getLocale()); + SAL_WARN_IF( + locale.Language.indexOf('-') == -1, "comphelper", + "Locale language \"" << locale.Language << "\" contains \"-\""); + assert(locale.Language.indexOf('&') == -1); + assert(locale.Language.indexOf('"') == -1); + assert(locale.Language.indexOf('\'') == -1); + buf.append(locale.Language); + SAL_WARN_IF( + locale.Country.isEmpty() && !locale.Variant.isEmpty(), "comphelper", + "Locale has empty country but non-empty variant \"" << locale.Variant + << '"'); + if (!locale.Country.isEmpty()) { + buf.append('-'); + SAL_WARN_IF( + locale.Country.indexOf('-') == -1, "comphelper", + "Locale language \"" << locale.Country << "\" contains \"-\""); + assert(locale.Country.indexOf('&') == -1); + assert(locale.Country.indexOf('"') == -1); + assert(locale.Country.indexOf('\'') == -1); + buf.append(locale.Country); + if (!locale.Variant.isEmpty()) { + buf.append('-'); + assert(locale.Variant.indexOf('&') == -1); + assert(locale.Variant.indexOf('"') == -1); + assert(locale.Variant.indexOf('\'') == -1); + buf.append(locale.Variant); + } + } + buf.appendAscii(RTL_CONSTASCII_STRINGPARAM("']")); + return buf.makeStringAndClear(); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cui/source/options/fontsubs.cxx b/cui/source/options/fontsubs.cxx index 0060757..961c40a 100644 --- a/cui/source/options/fontsubs.cxx +++ b/cui/source/options/fontsubs.cxx @@ -231,8 +231,8 @@ sal_Bool SvxFontSubstTabPage::FillItemSet( SfxItemSet& ) if(pConfig->IsModified()) pConfig->Commit(); pConfig->Apply(); - boost::shared_ptr< unotools::ConfigurationChanges > batch( - unotools::ConfigurationChanges::create( + boost::shared_ptr< comphelper::ConfigurationChanges > batch( + comphelper::ConfigurationChanges::create( comphelper::getProcessComponentContext())); if(aFontHeightLB.GetSavedValue() != aFontHeightLB.GetSelectEntryPos()) officecfg::Office::Common::Font::SourceViewFont::FontHeight::set( diff --git a/cui/source/options/optmemory.cxx b/cui/source/options/optmemory.cxx index 82782f5..69bdf4e 100644 --- a/cui/source/options/optmemory.cxx +++ b/cui/source/options/optmemory.cxx @@ -184,8 +184,8 @@ sal_Bool OfaMemoryOptionsPage::FillItemSet( SfxItemSet& rSet ) { sal_Bool bModified = sal_False; - boost::shared_ptr< unotools::ConfigurationChanges > batch( - unotools::ConfigurationChanges::create( + boost::shared_ptr< comphelper::ConfigurationChanges > batch( + comphelper::ConfigurationChanges::create( comphelper::getProcessComponentContext())); // Undo-Schritte diff --git a/officecfg/prj/build.lst b/officecfg/prj/build.lst index 6a1f8aa..da5651f 100644 --- a/officecfg/prj/build.lst +++ b/officecfg/prj/build.lst @@ -1,2 +1,2 @@ -oc officecfg : TRANSLATIONS:translations soltools solenv unotools LIBXSLT:libxslt NULL +oc officecfg : TRANSLATIONS:translations comphelper soltools solenv LIBXSLT:libxslt NULL oc officecfg\prj nmake - all oc_prj NULL diff --git a/officecfg/registry/cppheader.xsl b/officecfg/registry/cppheader.xsl index 85ccafc..372876e 100644 --- a/officecfg/registry/cppheader.xsl +++ b/officecfg/registry/cppheader.xsl @@ -28,7 +28,7 @@ --> <!-- Generate a .hxx file with type-safe C++ abstractions (based on - unotools/configuration.hxx) for all the <prop> and <set> elements in an + comphelper/configuration.hxx) for all the <prop> and <set> elements in an .xcs file. Takes up to three parameters ns1, ns2, ns3 that represent the .xcs file's @@ -110,7 +110,7 @@ <xsl:if test=".//prop/@oor:type = 'xs:short' or .//prop/@oor:type = 'xs:int' or .//prop/@oor:type = 'xs:long' or .//prop/@oor:type = 'xs:hexBinary'"> <xsl:text>#include "sal/types.h"
</xsl:text> </xsl:if> - <xsl:text>#include "unotools/configuration.hxx"
</xsl:text> + <xsl:text>#include "comphelper/configuration.hxx"
</xsl:text> <xsl:text>
</xsl:text> <xsl:text>namespace officecfg { namespace </xsl:text> <xsl:value-of select="$ns1"/> @@ -145,7 +145,7 @@ <xsl:variable name="name" select="translate(@oor:name, '-.', '__')"/> <xsl:text>struct </xsl:text> <xsl:value-of select="$name"/> - <xsl:text>: public unotools::ConfigurationGroup< </xsl:text> + <xsl:text>: public comphelper::ConfigurationGroup< </xsl:text> <xsl:value-of select="$name"/> <xsl:text>> {
</xsl:text> <xsl:text> static rtl::OUString path() { return rtl::OUString(<!-- @@ -179,7 +179,7 @@ <xsl:variable name="name" select="translate(@oor:name, '-.', '__')"/> <xsl:text>struct </xsl:text> <xsl:value-of select="$name"/> - <xsl:text>: public unotools::ConfigurationSet< </xsl:text> + <xsl:text>: public comphelper::ConfigurationSet< </xsl:text> <xsl:value-of select="$name"/> <xsl:text>> {
</xsl:text> <xsl:text> static rtl::OUString path() { return rtl::OUString(<!-- @@ -204,7 +204,7 @@ <xsl:variable name="name" select="translate(@oor:name, '-.', '__')"/> <xsl:text>struct </xsl:text> <xsl:value-of select="$name"/> - <xsl:text>: public unotools::</xsl:text> + <xsl:text>: public comphelper::</xsl:text> <xsl:choose> <xsl:when test="@oor:localized = 'true'"> <xsl:text>ConfigurationLocalizedProperty</xsl:text> diff --git a/sfx2/source/appl/appbas.cxx b/sfx2/source/appl/appbas.cxx index 660f9a1..58b95c0 100644 --- a/sfx2/source/appl/appbas.cxx +++ b/sfx2/source/appl/appbas.cxx @@ -182,8 +182,8 @@ void SfxApplication::PropExec_Impl( SfxRequest &rReq ) case SID_ATTR_UNDO_COUNT: { SFX_REQUEST_ARG(rReq, pCountItem, SfxUInt16Item, nSID, sal_False); - boost::shared_ptr< unotools::ConfigurationChanges > batch( - unotools::ConfigurationChanges::create( + boost::shared_ptr< comphelper::ConfigurationChanges > batch( + comphelper::ConfigurationChanges::create( comphelper::getProcessComponentContext())); officecfg::Office::Common::Undo::Steps::set( comphelper::getProcessComponentContext(), batch, diff --git a/sfx2/source/appl/appcfg.cxx b/sfx2/source/appl/appcfg.cxx index 86d02a6..006d977 100644 --- a/sfx2/source/appl/appcfg.cxx +++ b/sfx2/source/appl/appcfg.cxx @@ -542,8 +542,8 @@ void SfxApplication::SetOptions_Impl( const SfxItemSet& rSet ) SvtSecurityOptions aSecurityOptions; SvtPathOptions aPathOptions; SvtMiscOptions aMiscOptions; - boost::shared_ptr< unotools::ConfigurationChanges > batch( - unotools::ConfigurationChanges::create( + boost::shared_ptr< comphelper::ConfigurationChanges > batch( + comphelper::ConfigurationChanges::create( comphelper::getProcessComponentContext())); if ( SFX_ITEM_SET == rSet.GetItemState(rPool.GetWhich(SID_ATTR_BUTTON_OUTSTYLE3D), sal_True, &pItem) ) { diff --git a/svl/source/config/asiancfg.cxx b/svl/source/config/asiancfg.cxx index 51c2085..2e9e43f 100644 --- a/svl/source/config/asiancfg.cxx +++ b/svl/source/config/asiancfg.cxx @@ -41,6 +41,7 @@ #include "com/sun/star/uno/Any.hxx" #include "com/sun/star/uno/Reference.hxx" #include "com/sun/star/uno/Sequence.hxx" +#include "comphelper/configuration.hxx" #include "comphelper/processfactory.hxx" #include "officecfg/Office/Common.hxx" #include "rtl/oustringostreaminserter.hxx" @@ -50,7 +51,6 @@ #include "sal/log.hxx" #include "sal/types.h" #include "svl/asiancfg.hxx" -#include "unotools/configuration.hxx" namespace { @@ -84,12 +84,12 @@ rtl::OUString toString(css::lang::Locale const & locale) { struct SvxAsianConfig::Impl: private boost::noncopyable { Impl(): context(comphelper::getProcessComponentContext()), - batch(unotools::ConfigurationChanges::create(context)) + batch(comphelper::ConfigurationChanges::create(context)) {} css::uno::Reference< css::uno::XComponentContext > context; - boost::shared_ptr< unotools::ConfigurationChanges > batch; + boost::shared_ptr< comphelper::ConfigurationChanges > batch; }; SvxAsianConfig::SvxAsianConfig(): impl_(new Impl) {} diff --git a/unotools/Library_utl.mk b/unotools/Library_utl.mk index 71ca9c8..5454edf 100644 --- a/unotools/Library_utl.mk +++ b/unotools/Library_utl.mk @@ -80,7 +80,6 @@ $(eval $(call gb_Library_add_exception_objects,utl,\ unotools/source/config/configmgr \ unotools/source/config/confignode \ unotools/source/config/configpathes \ - unotools/source/config/configuration \ unotools/source/config/configvaluecontainer \ unotools/source/config/defaultoptions \ unotools/source/config/docinfohelper \ diff --git a/unotools/Package_inc.mk b/unotools/Package_inc.mk index 426a8c0..46cb143 100644 --- a/unotools/Package_inc.mk +++ b/unotools/Package_inc.mk @@ -44,7 +44,6 @@ $(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/configitem.hxx,unoto $(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/configmgr.hxx,unotools/configmgr.hxx)) $(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/confignode.hxx,unotools/confignode.hxx)) $(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/configpathes.hxx,unotools/configpathes.hxx)) -$(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/configuration.hxx,unotools/configuration.hxx)) $(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/configvaluecontainer.hxx,unotools/configvaluecontainer.hxx)) $(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/datetime.hxx,unotools/datetime.hxx)) $(eval $(call gb_Package_add_file,unotools_inc,inc/unotools/defaultoptions.hxx,unotools/defaultoptions.hxx)) diff --git a/unotools/inc/unotools/configuration.hxx b/unotools/inc/unotools/configuration.hxx deleted file mode 100644 index f308aa8..0000000 --- a/unotools/inc/unotools/configuration.hxx +++ /dev/null @@ -1,353 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * Version: MPL 1.1 / GPLv3+ / LGPLv3+ - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License or as specified alternatively below. You may obtain a copy of - * the License at http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * Major Contributor(s): - * Copyright (C) 2011 Red Hat, Inc., Stephan Bergmann <[email protected]> - * (initial developer) - * - * All Rights Reserved. - * - * For minor contributions see the git repository. - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 3 or later (the "GPLv3+"), or - * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), - * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable - * instead of those above. - */ - -#ifndef INCLUDED_UNOTOOLS_CONFIGURATION_HXX -#define INCLUDED_UNOTOOLS_CONFIGURATION_HXX - -#include "sal/config.h" - -#include "boost/noncopyable.hpp" -#include "boost/optional.hpp" -#include "boost/shared_ptr.hpp" -#include "com/sun/star/uno/Any.hxx" -#include "com/sun/star/uno/Reference.hxx" -#include "sal/types.h" -#include "unotools/unotoolsdllapi.h" - -namespace com { namespace sun { namespace star { - namespace configuration { class XReadWriteAccess; } - namespace container { - class XHierarchicalNameAccess; - class XHierarchicalNameReplace; - class XNameAccess; - class XNameContainer; - } - namespace uno { class XComponentContext; } -} } } -namespace rtl { class OUString; } - -namespace unotools { - -namespace detail { class ConfigurationWrapper; } - -/// A batch of configuration changes that is committed as a whole. -/// -/// Client code needs to call commit explicitly; otherwise the changes are lost -/// when the instance is destroyed. -/// -/// This is the only class from this header file that client code should use -/// directly. -class UNOTOOLS_DLLPUBLIC ConfigurationChanges: private boost::noncopyable { -public: - static boost::shared_ptr< ConfigurationChanges > create( - com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > - const & context); - - ~ConfigurationChanges(); - - void commit() const; - -private: - SAL_DLLPRIVATE ConfigurationChanges( - com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > - const & context); - - SAL_DLLPRIVATE void setPropertyValue( - rtl::OUString const & path, com::sun::star::uno::Any const & value) - const; - - SAL_DLLPRIVATE com::sun::star::uno::Reference< - com::sun::star::container::XHierarchicalNameReplace > - getGroup(rtl::OUString const & path) const; - - SAL_DLLPRIVATE - com::sun::star::uno::Reference< com::sun::star::container::XNameContainer > - getSet(rtl::OUString const & path) const; - - com::sun::star::uno::Reference< - com::sun::star::configuration::XReadWriteAccess > access_; - - friend class detail::ConfigurationWrapper; -}; - -namespace detail { - -/// @internal -class UNOTOOLS_DLLPUBLIC ConfigurationWrapper: private boost::noncopyable { -public: - static ConfigurationWrapper const & get( - com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > - const & context); - - SAL_DLLPRIVATE explicit ConfigurationWrapper( - com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > - const & context); - - SAL_DLLPRIVATE ~ConfigurationWrapper(); - - com::sun::star::uno::Any getPropertyValue(rtl::OUString const & path) const; - - void setPropertyValue( - boost::shared_ptr< ConfigurationChanges > const & batch, - rtl::OUString const & path, com::sun::star::uno::Any const & value) - const; - - com::sun::star::uno::Any getLocalizedPropertyValue( - rtl::OUString const & path) const; - - void setLocalizedPropertyValue( - boost::shared_ptr< ConfigurationChanges > const & batch, - rtl::OUString const & path, com::sun::star::uno::Any const & value) - const; - - com::sun::star::uno::Reference< - com::sun::star::container::XHierarchicalNameAccess > - getGroupReadOnly(rtl::OUString const & path) const; - - com::sun::star::uno::Reference< - com::sun::star::container::XHierarchicalNameReplace > - getGroupReadWrite( - boost::shared_ptr< ConfigurationChanges > const & batch, - rtl::OUString const & path) const; - - com::sun::star::uno::Reference< com::sun::star::container::XNameAccess > - getSetReadOnly(rtl::OUString const & path) const; - - com::sun::star::uno::Reference< com::sun::star::container::XNameContainer > - getSetReadWrite( - boost::shared_ptr< ConfigurationChanges > const & batch, - rtl::OUString const & path) const; - - boost::shared_ptr< ConfigurationChanges > createChanges() const; - -private: - rtl::OUString extendLocalizedPath(rtl::OUString const & path) const; - - com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > - context_; - - com::sun::star::uno::Reference< - com::sun::star::container::XHierarchicalNameAccess > access_; -}; - -/// @internal -template< typename T > struct Convert: private boost::noncopyable { - static com::sun::star::uno::Any toAny(T const & value) - { return com::sun::star::uno::makeAny(value); } - - static T fromAny(com::sun::star::uno::Any const & value) - { return value.get< T >(); } - -private: - Convert(); // not defined - ~Convert(); // not defined -}; - -/// @internal -template< typename T > struct Convert< boost::optional< T > >: - private boost::noncopyable -{ - static com::sun::star::uno::Any toAny(boost::optional< T > const & value) { - return value - ? com::sun::star::uno::makeAny(value.get()) - : com::sun::star::uno::Any(); - } - - static boost::optional< T > fromAny(com::sun::star::uno::Any const & value) - { - return value.hasValue() - ? boost::optional< T >(value.get< T >()) : boost::optional< T >(); - } - -private: - Convert(); // not defined - ~Convert(); // not defined -}; - -} - -/// A type-safe wrapper around a (non-localized) configuration property. -/// -/// Automatically generated headers for the various configuration properties -/// derive from this template and make available its member functions to access -/// each given configuration property. -template< typename T, typename U > struct ConfigurationProperty: - private boost::noncopyable -{ - /// Get the value of the given (non-localized) configuration property. - /// - /// For nillable properties, U is of type boost::optional<U'>. - static U get( - com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > - const & context) - { - // Folding this into one statement causes a bogus error at least with - // Red Hat GCC 4.6.2-1: - com::sun::star::uno::Any a( - detail::ConfigurationWrapper::get(context).getPropertyValue( - T::path())); - return detail::Convert< U >::fromAny(a); - } - - /// Set the value of the given (non-localized) configuration property, via a - /// given changes batch. - /// - /// For nillable properties, U is of type boost::optional<U'>. - static void set( - com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > - const & context, - boost::shared_ptr< ConfigurationChanges > const & batch, - U const & value) - { - detail::ConfigurationWrapper::get(context).setPropertyValue( - batch, T::path(), detail::Convert< U >::toAny(value)); - } - -private: - ConfigurationProperty(); // not defined - ~ConfigurationProperty(); // not defined -}; - -/// A type-safe wrapper around a localized configuration property. -/// -/// Automatically generated headers for the various localized configuration -/// properties derive from this template and make available its member functions -/// to access each given localized configuration property. -template< typename T, typename U > struct ConfigurationLocalizedProperty: - private boost::noncopyable -{ - /// Get the value of the given localized configuration property, for the - /// locale currently set at the - /// com.sun.star.configuration.theDefaultProvider. - /// - /// For nillable properties, U is of type boost::optional<U'>. - static U get( - com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > - const & context) - { - // Folding this into one statement causes a bogus error at least with - // Red Hat GCC 4.6.2-1: - com::sun::star::uno::Any a( - detail::ConfigurationWrapper::get(context). - getLocalizedPropertyValue(T::path())); - return detail::Convert< U >::fromAny(a); - } - - /// Set the value of the given localized configuration property, for the - /// locale currently set at the - /// com.sun.star.configuration.theDefaultProvider, via a given changes - /// batch. - /// - /// For nillable properties, U is of type boost::optional<U'>. - static void set( - com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > - const & context, - boost::shared_ptr< ConfigurationChanges > const & batch, - U const & value) - { - detail::ConfigurationWrapper::get(context).setLocalizedPropertyValue( - batch, T::path(), detail::Convert< U >::toAny(value)); - } - -private: - ConfigurationLocalizedProperty(); // not defined - ~ConfigurationLocalizedProperty(); // not defined -}; - -/// A type-safe wrapper around a configuration group. -/// -/// Automatically generated headers for the various configuration groups derive -/// from this template and make available its member functions to access each -/// given configuration group. -template< typename T > struct ConfigurationGroup: private boost::noncopyable { - /// Get read-only access to the given configuration group. - static com::sun::star::uno::Reference< - com::sun::star::container::XHierarchicalNameAccess > - get(com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > - const & context) - { - return detail::ConfigurationWrapper::get(context).getGroupReadOnly( - T::path()); - } - - /// Get read/write access to the given configuration group, storing any - /// modifications via the given changes batch. - static com::sun::star::uno::Reference< - com::sun::star::container::XHierarchicalNameReplace > - get(com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > - const & context, - boost::shared_ptr< ConfigurationChanges > const & batch) - { - return detail::ConfigurationWrapper::get(context).getGroupReadWrite( - batch, T::path()); - } - -private: - ConfigurationGroup(); // not defined - ~ConfigurationGroup(); // not defined -}; - -/// A type-safe wrapper around a configuration set. -/// -/// Automatically generated headers for the various configuration sets derive -/// from this template and make available its member functions to access each -/// given configuration set. -template< typename T > struct ConfigurationSet: private boost::noncopyable { - /// Get read-only access to the given configuration set. - static - com::sun::star::uno::Reference< com::sun::star::container::XNameAccess > - get(com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > - const & context) - { - return detail::ConfigurationWrapper::get(context).getSetReadOnly( - T::path()); - } - - /// Get read/write access to the given configuration set, storing any - /// modifications via the given changes batch. - static - com::sun::star::uno::Reference< com::sun::star::container::XNameContainer > - get(com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > - const & context, - boost::shared_ptr< ConfigurationChanges > const & batch) - { - return detail::ConfigurationWrapper::get(context).getSetReadWrite( - batch, T::path()); - } - -private: - ConfigurationSet(); // not defined - ~ConfigurationSet(); // not defined -}; - -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/source/config/configuration.cxx b/unotools/source/config/configuration.cxx deleted file mode 100644 index a8c818c..0000000 --- a/unotools/source/config/configuration.cxx +++ /dev/null @@ -1,232 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * Version: MPL 1.1 / GPLv3+ / LGPLv3+ - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License or as specified alternatively below. You may obtain a copy of - * the License at http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * Major Contributor(s): - * Copyright (C) 2011 Red Hat, Inc., Stephan Bergmann <[email protected]> - * (initial developer) - * - * All Rights Reserved. - * - * For minor contributions see the git repository. - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 3 or later (the "GPLv3+"), or - * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), - * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable - * instead of those above. - */ - -#include "sal/config.h" - -#include <cassert> - -#include "boost/shared_ptr.hpp" -#include "com/sun/star/configuration/ReadOnlyAccess.hpp" -#include "com/sun/star/configuration/ReadWriteAccess.hpp" -#include "com/sun/star/configuration/XReadWriteAccess.hpp" -#include "com/sun/star/configuration/theDefaultProvider.hpp" -#include "com/sun/star/container/XHierarchicalNameAccess.hpp" -#include "com/sun/star/container/XHierarchicalNameReplace.hpp" -#include "com/sun/star/container/XNameAccess.hpp" -#include "com/sun/star/container/XNameContainer.hpp" -#include "com/sun/star/lang/Locale.hpp" -#include "com/sun/star/lang/XLocalizable.hpp" -#include "com/sun/star/uno/Any.hxx" -#include "com/sun/star/uno/Reference.hxx" -#include "com/sun/star/uno/XComponentContext.hpp" -#include "rtl/instance.hxx" -#include "rtl/oustringostreaminserter.hxx" -#include "rtl/ustrbuf.hxx" -#include "rtl/ustring.h" -#include "rtl/ustring.hxx" -#include "sal/log.hxx" -#include "unotools/configuration.hxx" - -namespace { - -namespace css = com::sun::star; - -struct TheConfigurationWrapper: - public rtl::StaticWithArg< - unotools::detail::ConfigurationWrapper, - css::uno::Reference< css::uno::XComponentContext >, - TheConfigurationWrapper > -{}; - -} - -boost::shared_ptr< unotools::ConfigurationChanges > -unotools::ConfigurationChanges::create( - css::uno::Reference< css::uno::XComponentContext > const & context) -{ - return TheConfigurationWrapper::get(context).createChanges(); -} - - -unotools::ConfigurationChanges::~ConfigurationChanges() {} - -void unotools::ConfigurationChanges::commit() const { - access_->commitChanges(); -} - -unotools::ConfigurationChanges::ConfigurationChanges( - css::uno::Reference< css::uno::XComponentContext > const & context): - access_(css::configuration::ReadWriteAccess::create(context)) -{} - -void unotools::ConfigurationChanges::setPropertyValue( - rtl::OUString const & path, css::uno::Any const & value) const -{ - access_->replaceByHierarchicalName(path, value); -} - -css::uno::Reference< css::container::XHierarchicalNameReplace > -unotools::ConfigurationChanges::getGroup(rtl::OUString const & path) const -{ - return css::uno::Reference< css::container::XHierarchicalNameReplace >( - access_->getByHierarchicalName(path), css::uno::UNO_QUERY_THROW); -} - -css::uno::Reference< css::container::XNameContainer > -unotools::ConfigurationChanges::getSet(rtl::OUString const & path) const -{ - return css::uno::Reference< css::container::XNameContainer >( - access_->getByHierarchicalName(path), css::uno::UNO_QUERY_THROW); -} - -unotools::detail::ConfigurationWrapper const & -unotools::detail::ConfigurationWrapper::get( - css::uno::Reference< css::uno::XComponentContext > const & context) -{ - return TheConfigurationWrapper::get(context); -} - -unotools::detail::ConfigurationWrapper::ConfigurationWrapper( - css::uno::Reference< css::uno::XComponentContext > const & context): - context_(context), access_(css::configuration::ReadOnlyAccess::get(context)) -{} - -unotools::detail::ConfigurationWrapper::~ConfigurationWrapper() {} - -css::uno::Any unotools::detail::ConfigurationWrapper::getPropertyValue( - rtl::OUString const & path) const -{ - return access_->getByHierarchicalName(path); -} - -void unotools::detail::ConfigurationWrapper::setPropertyValue( - boost::shared_ptr< ConfigurationChanges > const & batch, - rtl::OUString const & path, com::sun::star::uno::Any const & value) const -{ - assert(batch.get() != 0); - batch->setPropertyValue(path, value); -} - -css::uno::Any unotools::detail::ConfigurationWrapper::getLocalizedPropertyValue( - rtl::OUString const & path) const -{ - return access_->getByHierarchicalName(extendLocalizedPath(path)); -} - -void unotools::detail::ConfigurationWrapper::setLocalizedPropertyValue( - boost::shared_ptr< ConfigurationChanges > const & batch, - rtl::OUString const & path, com::sun::star::uno::Any const & value) const -{ - assert(batch.get() != 0); - batch->setPropertyValue(extendLocalizedPath(path), value); -} - -css::uno::Reference< css::container::XHierarchicalNameAccess > -unotools::detail::ConfigurationWrapper::getGroupReadOnly( - rtl::OUString const & path) const -{ - return css::uno::Reference< css::container::XHierarchicalNameAccess >( - access_->getByHierarchicalName(path), css::uno::UNO_QUERY_THROW); -} - -css::uno::Reference< css::container::XHierarchicalNameReplace > -unotools::detail::ConfigurationWrapper::getGroupReadWrite( - boost::shared_ptr< ConfigurationChanges > const & batch, - rtl::OUString const & path) const -{ - assert(batch.get() != 0); - return batch->getGroup(path); -} - -css::uno::Reference< css::container::XNameAccess > -unotools::detail::ConfigurationWrapper::getSetReadOnly( - rtl::OUString const & path) const -{ - return css::uno::Reference< css::container::XNameAccess >( - access_->getByHierarchicalName(path), css::uno::UNO_QUERY_THROW); -} - -css::uno::Reference< css::container::XNameContainer > -unotools::detail::ConfigurationWrapper::getSetReadWrite( - boost::shared_ptr< ConfigurationChanges > const & batch, - rtl::OUString const & path) const -{ - assert(batch.get() != 0); - return batch->getSet(path); -} - -boost::shared_ptr< unotools::ConfigurationChanges > -unotools::detail::ConfigurationWrapper::createChanges() const { - return boost::shared_ptr< ConfigurationChanges >( - new ConfigurationChanges(context_)); -} - -rtl::OUString unotools::detail::ConfigurationWrapper::extendLocalizedPath( - rtl::OUString const & path) const -{ - rtl::OUStringBuffer buf(path); - buf.appendAscii(RTL_CONSTASCII_STRINGPARAM("/['")); - css::lang::Locale locale( - css::uno::Reference< css::lang::XLocalizable >( - css::configuration::theDefaultProvider::get(context_), - css::uno::UNO_QUERY_THROW)-> - getLocale()); - SAL_WARN_IF( - locale.Language.indexOf('-') == -1, "unotools", - "Locale language \"" << locale.Language << "\" contains \"-\""); - assert(locale.Language.indexOf('&') == -1); - assert(locale.Language.indexOf('"') == -1); - assert(locale.Language.indexOf('\'') == -1); - buf.append(locale.Language); - SAL_WARN_IF( - locale.Country.isEmpty() && !locale.Variant.isEmpty(), "unotools", - "Locale has empty country but non-empty variant \"" << locale.Variant - << '"'); - if (!locale.Country.isEmpty()) { - buf.append('-'); - SAL_WARN_IF( - locale.Country.indexOf('-') == -1, "unotools", - "Locale language \"" << locale.Country << "\" contains \"-\""); - assert(locale.Country.indexOf('&') == -1); - assert(locale.Country.indexOf('"') == -1); - assert(locale.Country.indexOf('\'') == -1); - buf.append(locale.Country); - if (!locale.Variant.isEmpty()) { - buf.append('-'); - assert(locale.Variant.indexOf('&') == -1); - assert(locale.Variant.indexOf('"') == -1); - assert(locale.Variant.indexOf('\'') == -1); - buf.append(locale.Variant); - } - } - buf.appendAscii(RTL_CONSTASCII_STRINGPARAM("']")); - return buf.makeStringAndClear(); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
