diff options
author | Kurt Zenker <kz@openoffice.org> | 2008-04-03 13:51:24 +0000 |
---|---|---|
committer | Kurt Zenker <kz@openoffice.org> | 2008-04-03 13:51:24 +0000 |
commit | fe410189c0b526399f1b15bfb1d15131cedef29e (patch) | |
tree | 4266c1e876bd19701e9d2267c75e4105a4a1ee8d /sd/source/ui/tools/ConfigurationAccess.cxx | |
parent | INTEGRATION: CWS presenterview (1.7.54); FILE MERGED (diff) | |
download | core-fe410189c0b526399f1b15bfb1d15131cedef29e.tar.gz core-fe410189c0b526399f1b15bfb1d15131cedef29e.zip |
INTEGRATION: CWS presenterview (1.2.22); FILE MERGED
2007/11/15 13:28:06 af 1.2.22.5: #i18486# Reimplemented GetConfigurationNode() in terms of the other, static GetConfigurationNode() variant.
2007/10/16 16:00:12 af 1.2.22.4: #i18486# Minor optimization in GetConfigurationNode() for empty path.
2007/09/11 12:51:09 af 1.2.22.3: #i18486# Added GetConfigurationNode() variant.
2007/08/13 09:28:11 af 1.2.22.2: #i18486# GetConfigurationNode returns Any.
2007/06/19 15:26:18 af 1.2.22.1: #i18486# Supply callbacks with entry names.
Diffstat (limited to 'sd/source/ui/tools/ConfigurationAccess.cxx')
-rw-r--r-- | sd/source/ui/tools/ConfigurationAccess.cxx | 137 |
1 files changed, 89 insertions, 48 deletions
diff --git a/sd/source/ui/tools/ConfigurationAccess.cxx b/sd/source/ui/tools/ConfigurationAccess.cxx index 6648db74d604..4b4173322d33 100644 --- a/sd/source/ui/tools/ConfigurationAccess.cxx +++ b/sd/source/ui/tools/ConfigurationAccess.cxx @@ -4,9 +4,9 @@ * * $RCSfile: ConfigurationAccess.cxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: rt $ $Date: 2007-04-03 16:23:14 $ + * last change: $Author: kz $ $Date: 2008-04-03 14:51:24 $ * * The Contents of this file are made available subject to * the terms of GNU Lesser General Public License Version 2.1. @@ -58,46 +58,77 @@ using ::rtl::OUString; namespace sd { namespace tools { ConfigurationAccess::ConfigurationAccess ( + const Reference<XComponentContext>& rxContext, const OUString& rsRootName, - WriteMode eMode) + const WriteMode eMode) : mxRoot() { - try + Reference<lang::XMultiComponentFactory> xFactory (rxContext->getServiceManager()); + if (xFactory.is()) { Reference<lang::XMultiServiceFactory> xProvider ( - ::comphelper::getProcessServiceFactory()->createInstance( - OUString::createFromAscii("com.sun.star.configuration.ConfigurationProvider")), + xFactory->createInstanceWithContext( + OUString::createFromAscii("com.sun.star.configuration.ConfigurationProvider"), + rxContext), UNO_QUERY); if (xProvider.is()) - { - Sequence<Any> aCreationArguments(3); - aCreationArguments[0] = makeAny(beans::PropertyValue( - OUString( - RTL_CONSTASCII_USTRINGPARAM("nodepath")), - 0, - makeAny(rsRootName), - beans::PropertyState_DIRECT_VALUE)); - aCreationArguments[1] = makeAny(beans::PropertyValue( - OUString(RTL_CONSTASCII_USTRINGPARAM("depth")), - 0, - makeAny((sal_Int32)-1), - beans::PropertyState_DIRECT_VALUE)); - aCreationArguments[2] = makeAny(beans::PropertyValue( - OUString(RTL_CONSTASCII_USTRINGPARAM("lazywrite")), - 0, - makeAny(true), - beans::PropertyState_DIRECT_VALUE)); - OUString sAccessService; - if (eMode == READ_ONLY) - sAccessService = OUString(RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.configuration.ConfigurationAccess")); - else - sAccessService = OUString(RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.configuration.ConfigurationUpdateAccess")); - - mxRoot = xProvider->createInstanceWithArguments( - sAccessService, aCreationArguments); - } + Initialize(xProvider, rsRootName, eMode); + } +} + + + + +ConfigurationAccess::ConfigurationAccess ( + const OUString& rsRootName, + const WriteMode eMode) + : mxRoot() +{ + Reference<lang::XMultiServiceFactory> xProvider ( + ::comphelper::getProcessServiceFactory()->createInstance( + OUString::createFromAscii("com.sun.star.configuration.ConfigurationProvider")), + UNO_QUERY); + if (xProvider.is()) + Initialize(xProvider, rsRootName, eMode); +} + + + + +void ConfigurationAccess::Initialize ( + const Reference<lang::XMultiServiceFactory>& rxProvider, + const OUString& rsRootName, + const WriteMode eMode) +{ + try + { + Sequence<Any> aCreationArguments(3); + aCreationArguments[0] = makeAny(beans::PropertyValue( + OUString(RTL_CONSTASCII_USTRINGPARAM("nodepath")), + 0, + makeAny(rsRootName), + beans::PropertyState_DIRECT_VALUE)); + aCreationArguments[1] = makeAny(beans::PropertyValue( + OUString(RTL_CONSTASCII_USTRINGPARAM("depth")), + 0, + makeAny((sal_Int32)-1), + beans::PropertyState_DIRECT_VALUE)); + aCreationArguments[2] = makeAny(beans::PropertyValue( + OUString(RTL_CONSTASCII_USTRINGPARAM("lazywrite")), + 0, + makeAny(true), + beans::PropertyState_DIRECT_VALUE)); + OUString sAccessService; + if (eMode == READ_ONLY) + sAccessService = OUString(RTL_CONSTASCII_USTRINGPARAM( + "com.sun.star.configuration.ConfigurationAccess")); + else + sAccessService = OUString(RTL_CONSTASCII_USTRINGPARAM( + "com.sun.star.configuration.ConfigurationUpdateAccess")); + + mxRoot = rxProvider->createInstanceWithArguments( + sAccessService, + aCreationArguments); } catch (Exception& rException) { @@ -110,29 +141,39 @@ ConfigurationAccess::ConfigurationAccess ( -Reference<XInterface> ConfigurationAccess::GetConfigurationNode ( +Any ConfigurationAccess::GetConfigurationNode ( const OUString& sPathToNode) { - Reference<XInterface> xNode; + return GetConfigurationNode( + Reference<container::XHierarchicalNameAccess>(mxRoot, UNO_QUERY), + sPathToNode); +} + + + + +Any ConfigurationAccess::GetConfigurationNode ( + const css::uno::Reference<css::container::XHierarchicalNameAccess>& rxNode, + const OUString& sPathToNode) +{ + if (sPathToNode.getLength() == 0) + return Any(rxNode); try { - Reference<container::XHierarchicalNameAccess> xHierarchy (mxRoot, UNO_QUERY); - if (xHierarchy.is()) + if (rxNode.is()) { - xHierarchy->getByHierarchicalName(sPathToNode) >>= xNode; + return rxNode->getByHierarchicalName(sPathToNode); } } catch (Exception& rException) { OSL_TRACE ("caught exception while getting configuration node %s: %s", - ::rtl::OUStringToOString(sPathToNode, - RTL_TEXTENCODING_UTF8).getStr(), - ::rtl::OUStringToOString(rException.Message, - RTL_TEXTENCODING_UTF8).getStr()); + ::rtl::OUStringToOString(sPathToNode, RTL_TEXTENCODING_UTF8).getStr(), + ::rtl::OUStringToOString(rException.Message, RTL_TEXTENCODING_UTF8).getStr()); } - return xNode; + return Any(); } @@ -159,8 +200,8 @@ void ConfigurationAccess::ForAll ( Sequence<OUString> aKeys (rxContainer->getElementNames()); for (sal_Int32 nItemIndex=0; nItemIndex<aKeys.getLength(); ++nItemIndex) { - Reference<container::XNameAccess> xSetItem ( - rxContainer->getByName(aKeys[nItemIndex]), UNO_QUERY); + const OUString& rsKey (aKeys[nItemIndex]); + Reference<container::XNameAccess> xSetItem (rxContainer->getByName(rsKey), UNO_QUERY); if (xSetItem.is()) { // Get from the current item of the container the children @@ -168,7 +209,7 @@ void ConfigurationAccess::ForAll ( for (sal_uInt32 nValueIndex=0; nValueIndex<aValues.size(); ++nValueIndex) aValues[nValueIndex] = xSetItem->getByName(rArguments[nValueIndex]); } - rFunctor(aValues); + rFunctor(rsKey, aValues); } } } |