diff options
author | Oliver Bolte <obo@openoffice.org> | 2006-07-13 12:21:28 +0000 |
---|---|---|
committer | Oliver Bolte <obo@openoffice.org> | 2006-07-13 12:21:28 +0000 |
commit | 1030c32520378eafcc8f36dd82ab4069d6477202 (patch) | |
tree | 1643fd3f581dbe76408a4c44808046d44e9b6248 /shell | |
parent | 09b1398dc4b44aafec5b6aa3a92e0763ded1f161 (diff) |
INTEGRATION: CWS pathoptions01 (1.1.2); FILE ADDED
2006/07/11 12:05:09 obr 1.1.2.1: #i66461# has moved to Paths.xcs
Diffstat (limited to 'shell')
-rw-r--r-- | shell/source/backends/kdebe/kdepathslayer.cxx | 140 | ||||
-rw-r--r-- | shell/source/backends/kdebe/kdepathslayer.hxx | 107 |
2 files changed, 247 insertions, 0 deletions
diff --git a/shell/source/backends/kdebe/kdepathslayer.cxx b/shell/source/backends/kdebe/kdepathslayer.cxx new file mode 100644 index 000000000000..d2335c56474a --- /dev/null +++ b/shell/source/backends/kdebe/kdepathslayer.cxx @@ -0,0 +1,140 @@ +/************************************************************************* + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: kdepathslayer.cxx,v $ + * + * $Revision: 1.2 $ + * + * last change: $Author: obo $ $Date: 2006-07-13 13:21:18 $ + * + * The Contents of this file are made available subject to + * the terms of GNU Lesser General Public License Version 2.1. + * + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2005 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + ************************************************************************/ + +#ifndef KDEPATHSLAYER_HXX_ +#include "kdepathslayer.hxx" +#endif + +#ifndef _KGLOBALSETTINGS_H +#include "kglobalsettings.h" +#endif + +#ifndef _COM_SUN_STAR_CONFIGURATION_BACKEND_PROPERTYINFO_HPP_ +#include <com/sun/star/configuration/backend/PropertyInfo.hpp> +#endif +#ifndef _COM_SUN_STAR_CONFIGURATION_BACKEND_XLAYERCONTENTDESCIBER_HPP_ +#include <com/sun/star/configuration/backend/XLayerContentDescriber.hpp> +#endif + +#ifndef _OSL_SECURITY_HXX_ +#include <osl/security.hxx> +#endif +#ifndef _OSL_FILE_HXX_ +#include <osl/file.hxx> +#endif + +#ifndef _COM_SUN_STAR_UNO_SEQUENCE_HXX_ +#include <com/sun/star/uno/Sequence.hxx> +#endif + +#define SPACE ' ' + +//============================================================================== + +KDEPathsLayer::KDEPathsLayer(const uno::Reference<uno::XComponentContext>& xContext) +{ + //Create instance of LayerContentDescriber Service + rtl::OUString const k_sLayerDescriberService(RTL_CONSTASCII_USTRINGPARAM( + "com.sun.star.comp.configuration.backend.LayerDescriber")); + + typedef uno::Reference<backend::XLayerContentDescriber> LayerDescriber; + uno::Reference< lang::XMultiComponentFactory > xServiceManager = xContext->getServiceManager(); + if( xServiceManager.is() ) + { + m_xLayerContentDescriber = LayerDescriber::query( + xServiceManager->createInstanceWithContext(k_sLayerDescriberService, xContext)); + } + else + { + OSL_TRACE("Could not retrieve ServiceManager"); + } +} + +//------------------------------------------------------------------------------ + +void SAL_CALL KDEPathsLayer::readData( const uno::Reference<backend::XLayerHandler>& xHandler) + throw ( backend::MalformedDataException, lang::NullPointerException, + lang::WrappedTargetException, uno::RuntimeException) +{ + if( ! m_xLayerContentDescriber.is() ) + { + throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( + "Could not create com.sun.star.configuration.backend.LayerContentDescriber Service" + ) ), static_cast < backend::XLayer * > (this) ); + } + + uno::Sequence<backend::PropertyInfo> aPropInfoList(1); + sal_Int32 nProperties = 0; + + QString aDocumentsDir( "file:" ); + ::rtl::OUString sDocumentsDir; + + aDocumentsDir += KGlobalSettings::documentPath(); + if ( aDocumentsDir.endsWith(QChar('/')) ) + aDocumentsDir.truncate ( aDocumentsDir.length() - 1 ); + sDocumentsDir = (const sal_Unicode *) aDocumentsDir.ucs2(); + + aPropInfoList[nProperties].Name = rtl::OUString( + RTL_CONSTASCII_USTRINGPARAM( "org.openoffice.Office.Paths/Variables/Work") ); + aPropInfoList[nProperties].Type = rtl::OUString( + RTL_CONSTASCII_USTRINGPARAM( "string" ) ); + aPropInfoList[nProperties].Protected = sal_False; + aPropInfoList[nProperties++].Value = uno::makeAny( sDocumentsDir ); + + if( nProperties > 0 ) + { + aPropInfoList.realloc(nProperties); + m_xLayerContentDescriber->describeLayer(xHandler, aPropInfoList); + } +} + +//------------------------------------------------------------------------------ + +rtl::OUString SAL_CALL KDEPathsLayer::getTimestamp(void) + throw (uno::RuntimeException) +{ + // Return the value as timestamp to avoid regenerating the binary cache + // on each office launch. + + ::rtl::OUString sTimeStamp, + sep( RTL_CONSTASCII_USTRINGPARAM( "$" ) ); + + QString aDocumentsDir; + aDocumentsDir = KGlobalSettings::documentPath(); + + sTimeStamp += (const sal_Unicode *) aDocumentsDir.ucs2(); + + return sTimeStamp; +} diff --git a/shell/source/backends/kdebe/kdepathslayer.hxx b/shell/source/backends/kdebe/kdepathslayer.hxx new file mode 100644 index 000000000000..675882997304 --- /dev/null +++ b/shell/source/backends/kdebe/kdepathslayer.hxx @@ -0,0 +1,107 @@ +/************************************************************************* + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: kdepathslayer.hxx,v $ + * + * $Revision: 1.2 $ + * + * last change: $Author: obo $ $Date: 2006-07-13 13:21:28 $ + * + * The Contents of this file are made available subject to + * the terms of GNU Lesser General Public License Version 2.1. + * + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2005 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + ************************************************************************/ + +#ifndef KDEPATHSLAYER_HXX_ +#define KDEPATHSLAYER_HXX_ + +#ifndef KDEBACKEND_HXX_ +#include "kdebackend.hxx" +#endif + +#ifndef _COM_SUN_STAR_UNO_XCOMPONENTCONTEXT_HPP_ +#include <com/sun/star/uno/XComponentContext.hpp> +#endif + +#ifndef _COM_SUN_STAR_CONFIGURATION_BACKEND_XLAYER_HPP_ +#include <com/sun/star/configuration/backend/XLayer.hpp> +#endif +#ifndef _COM_SUN_STAR_CONFIGURATION_BACKEND_BACKENDACCESSEXCEPTION_HPP_ +#include <com/sun/star/configuration/backend/BackendAccessException.hpp> +#endif +#ifndef _COM_SUN_STAR_CONFIGURATION_BACKEND_XLAYERCONTENTDESCIBER_HPP_ +#include <com/sun/star/configuration/backend/XLayerContentDescriber.hpp> +#endif + +#ifndef _COM_SUN_STAR_UTIL_XTIMESTAMPED_HPP_ +#include <com/sun/star/util/XTimeStamped.hpp> +#endif + +#ifndef _CPPUHELPER_IMPLBASE2_HXX_ +#include <cppuhelper/implbase2.hxx> +#endif + +namespace css = com::sun::star ; +namespace uno = css::uno ; +namespace lang = css::lang ; +namespace backend = css::configuration::backend ; +namespace util = css::util ; + +/** + Implementation of the XLayer interface for the KDE values mapped into + the org.openoffice.Office.Paths configuration component. + */ +class KDEPathsLayer : public cppu::WeakImplHelper2<backend::XLayer, util::XTimeStamped> +{ +public : + /** + Constructor given the component context + + @param xContext The component context + */ + + KDEPathsLayer(const uno::Reference<uno::XComponentContext>& xContext); + + // XLayer + virtual void SAL_CALL readData( + const uno::Reference<backend::XLayerHandler>& xHandler) + throw ( backend::MalformedDataException, + lang::NullPointerException, + lang::WrappedTargetException, + uno::RuntimeException) ; + + // XTimeStamped + virtual rtl::OUString SAL_CALL getTimestamp(void) + throw (uno::RuntimeException); + + protected: + + /** Destructor */ + ~KDEPathsLayer(void) {} + + private : + uno::Reference<backend::XLayerContentDescriber> m_xLayerContentDescriber ; + } ; + +#endif // KDEPATHSLAYER |