summaryrefslogtreecommitdiff
path: root/svtools/source/config/pathoptions.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'svtools/source/config/pathoptions.cxx')
-rw-r--r--svtools/source/config/pathoptions.cxx1094
1 files changed, 0 insertions, 1094 deletions
diff --git a/svtools/source/config/pathoptions.cxx b/svtools/source/config/pathoptions.cxx
deleted file mode 100644
index 8c561b299d46..000000000000
--- a/svtools/source/config/pathoptions.cxx
+++ /dev/null
@@ -1,1094 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: pathoptions.cxx,v $
- * $Revision: 1.81 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_svtools.hxx"
-#ifndef GCC
-#endif
-
-#include <svtools/pathoptions.hxx>
-#include <unotools/configitem.hxx>
-#include <unotools/configmgr.hxx>
-#include <tools/debug.hxx>
-#include <tools/resmgr.hxx>
-#include <tools/urlobj.hxx>
-#include <com/sun/star/uno/Any.hxx>
-#include <com/sun/star/uno/Sequence.hxx>
-#include <osl/mutex.hxx>
-#include <osl/file.hxx>
-#include <unotools/localfilehelper.hxx>
-#include <unotools/bootstrap.hxx>
-
-#include <unotools/ucbhelper.hxx>
-#include <vos/process.hxx>
-#include <comphelper/processfactory.hxx>
-#include <com/sun/star/beans/XFastPropertySet.hpp>
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#include <com/sun/star/beans/XPropertySetInfo.hpp>
-#include <com/sun/star/util/XStringSubstitution.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <rtl/instance.hxx>
-
-#include <itemholder1.hxx>
-
-#include <vector>
-#include <hash_map>
-
-using namespace osl;
-using namespace utl;
-using namespace rtl;
-using namespace com::sun::star::uno;
-using namespace com::sun::star::beans;
-using namespace com::sun::star::util;
-using namespace com::sun::star::lang;
-
-// define ----------------------------------------------------------------
-
-#define SEARCHPATH_DELIMITER ';'
-
-#define ASCII_STR(s) OUString( RTL_CONSTASCII_USTRINGPARAM(s) )
-
-#define SIGN_STARTVARIABLE ASCII_STR("$(")
-#define SIGN_ENDVARIABLE ASCII_STR(")")
-
-// Supported variables by the old SvtPathOptions implementation
-#define SUBSTITUTE_INST "$(inst)"
-#define SUBSTITUTE_PROG "$(prog)"
-#define SUBSTITUTE_USER "$(user)"
-#define SUBSTITUTE_INSTPATH "$(instpath)"
-#define SUBSTITUTE_PROGPATH "$(progpath)"
-#define SUBSTITUTE_USERPATH "$(userpath)"
-#define SUBSTITUTE_INSTURL "$(insturl)"
-#define SUBSTITUTE_PROGURL "$(progurl)"
-#define SUBSTITUTE_USERURL "$(userurl)"
-#define SUBSTITUTE_PATH "$(path)"
-//#define SUBSTITUTE_LANG "$(lang)"
-#define SUBSTITUTE_LANGID "$(langid)"
-#define SUBSTITUTE_VLANG "$(vlang)"
-#define SUBSTITUTE_WORKDIRURL "$(workdirurl)"
-
-#define STRPOS_NOTFOUND -1
-
-struct OUStringHashCode
-{
- size_t operator()( const ::rtl::OUString& sString ) const
- {
- return sString.hashCode();
- }
-};
-
-enum VarNameProperty
-{
- VAR_NEEDS_SYSTEM_PATH,
- VAR_NEEDS_FILEURL
-};
-
-class NameToHandleMap : public ::std::hash_map< ::rtl::OUString, sal_Int32, OUStringHashCode, ::std::equal_to< ::rtl::OUString > >
-{
- public:
- inline void free() { NameToHandleMap().swap( *this ); }
-};
-
-class EnumToHandleMap : public ::std::hash_map< sal_Int32, sal_Int32, std::hash< sal_Int32 >, std::equal_to< sal_Int32 > >
-{
- public:
- inline void free() { EnumToHandleMap().swap( *this ); }
-};
-
-class VarNameToEnumMap : public ::std::hash_map< OUString, VarNameProperty, OUStringHashCode, ::std::equal_to< OUString > >
-{
- public:
- inline void free() { VarNameToEnumMap().swap( *this ); }
-};
-
-
-// class SvtPathOptions_Impl ---------------------------------------------
-class SvtPathOptions_Impl
-{
- private:
- // Local variables to return const references
- std::vector< String > m_aPathArray;
- Reference< XFastPropertySet > m_xPathSettings;
- Reference< XStringSubstitution > m_xSubstVariables;
- mutable EnumToHandleMap m_aMapEnumToPropHandle;
- VarNameToEnumMap m_aMapVarNamesToEnum;
-
- ::com::sun::star::lang::Locale m_aLocale;
- String m_aEmptyString;
- mutable ::osl::Mutex m_aMutex;
-
- public:
- SvtPathOptions_Impl();
-
- // get the pathes, not const because of using a mutex
- const String& GetPath( SvtPathOptions::Pathes );
- const String& GetAddinPath() { return GetPath( SvtPathOptions::PATH_ADDIN ); }
- const String& GetAutoCorrectPath() { return GetPath( SvtPathOptions::PATH_AUTOCORRECT ); }
- const String& GetAutoTextPath() { return GetPath( SvtPathOptions::PATH_AUTOTEXT ); }
- const String& GetBackupPath() { return GetPath( SvtPathOptions::PATH_BACKUP ); }
- const String& GetBasicPath() { return GetPath( SvtPathOptions::PATH_BASIC ); }
- const String& GetBitmapPath() { return GetPath( SvtPathOptions::PATH_BITMAP ); }
- const String& GetConfigPath() { return GetPath( SvtPathOptions::PATH_CONFIG ); }
- const String& GetDictionaryPath() { return GetPath( SvtPathOptions::PATH_DICTIONARY ); }
- const String& GetFavoritesPath() { return GetPath( SvtPathOptions::PATH_FAVORITES ); }
- const String& GetFilterPath() { return GetPath( SvtPathOptions::PATH_FILTER ); }
- const String& GetGalleryPath() { return GetPath( SvtPathOptions::PATH_GALLERY ); }
- const String& GetGraphicPath() { return GetPath( SvtPathOptions::PATH_GRAPHIC ); }
- const String& GetHelpPath() { return GetPath( SvtPathOptions::PATH_HELP ); }
- const String& GetLinguisticPath() { return GetPath( SvtPathOptions::PATH_LINGUISTIC ); }
- const String& GetModulePath() { return GetPath( SvtPathOptions::PATH_MODULE ); }
- const String& GetPalettePath() { return GetPath( SvtPathOptions::PATH_PALETTE ); }
- const String& GetPluginPath() { return GetPath( SvtPathOptions::PATH_PLUGIN ); }
- const String& GetStoragePath() { return GetPath( SvtPathOptions::PATH_STORAGE ); }
- const String& GetTempPath() { return GetPath( SvtPathOptions::PATH_TEMP ); }
- const String& GetTemplatePath() { return GetPath( SvtPathOptions::PATH_TEMPLATE ); }
- const String& GetUserConfigPath() { return GetPath( SvtPathOptions::PATH_USERCONFIG ); }
- const String& GetWorkPath() { return GetPath( SvtPathOptions::PATH_WORK ); }
- const String& GetUIConfigPath() { return GetPath( SvtPathOptions::PATH_UICONFIG ); }
- const String& GetFingerprintPath() { return GetPath( SvtPathOptions::PATH_FINGERPRINT ); }
-
- // set the pathes
- void SetPath( SvtPathOptions::Pathes, const String& rNewPath );
- void SetAddinPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_ADDIN, rPath ); }
- void SetAutoCorrectPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_AUTOCORRECT, rPath ); }
- void SetAutoTextPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_AUTOTEXT, rPath ); }
- void SetBackupPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_BACKUP, rPath ); }
- void SetBasicPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_BASIC, rPath ); }
- void SetBitmapPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_BITMAP, rPath ); }
- void SetConfigPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_CONFIG, rPath ); }
- void SetDictionaryPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_DICTIONARY, rPath ); }
- void SetFavoritesPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_FAVORITES, rPath ); }
- void SetFilterPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_FILTER, rPath ); }
- void SetGalleryPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_GALLERY, rPath ); }
- void SetGraphicPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_GRAPHIC, rPath ); }
- void SetHelpPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_HELP, rPath ); }
- void SetLinguisticPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_LINGUISTIC, rPath ); }
- void SetModulePath( const String& rPath ) { SetPath( SvtPathOptions::PATH_MODULE, rPath ); }
- void SetPalettePath( const String& rPath ) { SetPath( SvtPathOptions::PATH_PALETTE, rPath ); }
- void SetPluginPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_PLUGIN, rPath ); }
- void SetStoragePath( const String& rPath ) { SetPath( SvtPathOptions::PATH_STORAGE, rPath ); }
- void SetTempPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_TEMP, rPath ); }
- void SetTemplatePath( const String& rPath ) { SetPath( SvtPathOptions::PATH_TEMPLATE, rPath ); }
- void SetUserConfigPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_USERCONFIG, rPath ); }
- void SetWorkPath( const String& rPath ) { SetPath( SvtPathOptions::PATH_WORK, rPath ); }
-
- rtl::OUString SubstVar( const rtl::OUString& rVar );
- rtl::OUString SubstituteAndConvert( const rtl::OUString& rPath );
- rtl::OUString UsePathVariables( const rtl::OUString& rPath );
-
- ::com::sun::star::lang::Locale GetLocale() const { return m_aLocale; }
-
- BOOL IsPathReadonly(SvtPathOptions::Pathes ePath)const;
-};
-
-// global ----------------------------------------------------------------
-
-static SvtPathOptions_Impl* pOptions = NULL;
-static sal_Int32 nRefCount = 0;
-
-// functions -------------------------------------------------------------
-struct PropertyStruct
-{
- const char* pPropName; // The ascii name of the Office path
- SvtPathOptions::Pathes ePath; // The enum value used by SvtPathOptions
-};
-
-struct VarNameAttribute
-{
- const char* pVarName; // The name of the path variable
- VarNameProperty eVarProperty; // Which return value is needed by this path variable
-};
-
-static PropertyStruct aPropNames[] =
-{
- { "Addin", SvtPathOptions::PATH_ADDIN },
- { "AutoCorrect", SvtPathOptions::PATH_AUTOCORRECT },
- { "AutoText", SvtPathOptions::PATH_AUTOTEXT },
- { "Backup", SvtPathOptions::PATH_BACKUP },
- { "Basic", SvtPathOptions::PATH_BASIC },
- { "Bitmap", SvtPathOptions::PATH_BITMAP },
- { "Config", SvtPathOptions::PATH_CONFIG },
- { "Dictionary", SvtPathOptions::PATH_DICTIONARY },
- { "Favorite", SvtPathOptions::PATH_FAVORITES },
- { "Filter", SvtPathOptions::PATH_FILTER },
- { "Gallery", SvtPathOptions::PATH_GALLERY },
- { "Graphic", SvtPathOptions::PATH_GRAPHIC },
- { "Help", SvtPathOptions::PATH_HELP },
- { "Linguistic", SvtPathOptions::PATH_LINGUISTIC },
- { "Module", SvtPathOptions::PATH_MODULE },
- { "Palette", SvtPathOptions::PATH_PALETTE },
- { "Plugin", SvtPathOptions::PATH_PLUGIN },
- { "Storage", SvtPathOptions::PATH_STORAGE },
- { "Temp", SvtPathOptions::PATH_TEMP },
- { "Template", SvtPathOptions::PATH_TEMPLATE },
- { "UserConfig", SvtPathOptions::PATH_USERCONFIG },
- { "Work", SvtPathOptions::PATH_WORK },
- { "UIConfig", SvtPathOptions::PATH_UICONFIG },
- { "Fingerprint", SvtPathOptions::PATH_FINGERPRINT }
-};
-
-static VarNameAttribute aVarNameAttribute[] =
-{
- { SUBSTITUTE_INSTPATH, VAR_NEEDS_SYSTEM_PATH }, // $(instpath)
- { SUBSTITUTE_PROGPATH, VAR_NEEDS_SYSTEM_PATH }, // $(progpath)
- { SUBSTITUTE_USERPATH, VAR_NEEDS_SYSTEM_PATH }, // $(userpath)
- { SUBSTITUTE_PATH, VAR_NEEDS_SYSTEM_PATH }, // $(path)
-};
-
-#if 0
-// currently unused
-static Sequence< OUString > GetPathPropertyNames()
-{
- const int nCount = sizeof( aPropNames ) / sizeof( PropertyStruct );
- Sequence< OUString > aNames( nCount );
- OUString* pNames = aNames.getArray();
- for ( int i = 0; i < nCount; i++ )
- pNames[i] = OUString::createFromAscii( aPropNames[i].pPropName );
-
- return aNames;
-}
-#endif
-
-// class SvtPathOptions_Impl ---------------------------------------------
-
-const String& SvtPathOptions_Impl::GetPath( SvtPathOptions::Pathes ePath )
-{
- ::osl::MutexGuard aGuard( m_aMutex );
-
- if ( ePath < SvtPathOptions::PATH_COUNT )
- {
- OUString aPathValue;
- String aResult;
- sal_Int32 nHandle = m_aMapEnumToPropHandle[ (sal_Int32)ePath ];
-
- // Substitution is done by the service itself using the substition service
- Any a = m_xPathSettings->getFastPropertyValue( nHandle );
- a >>= aPathValue;
- if( ePath == SvtPathOptions::PATH_ADDIN ||
- ePath == SvtPathOptions::PATH_FILTER ||
- ePath == SvtPathOptions::PATH_HELP ||
- ePath == SvtPathOptions::PATH_MODULE ||
- ePath == SvtPathOptions::PATH_PLUGIN ||
- ePath == SvtPathOptions::PATH_STORAGE
- )
- {
- // These office paths have to be converted to system pathes
- utl::LocalFileHelper::ConvertURLToPhysicalName( aPathValue, aResult );
- aPathValue = aResult;
- }
-
- m_aPathArray[ ePath ] = aPathValue;
- return m_aPathArray[ ePath ];
- }
-
- return m_aEmptyString;
-}
-// -----------------------------------------------------------------------
-BOOL SvtPathOptions_Impl::IsPathReadonly(SvtPathOptions::Pathes ePath)const
-{
- ::osl::MutexGuard aGuard( m_aMutex );
- BOOL bReadonly = FALSE;
- if ( ePath < SvtPathOptions::PATH_COUNT )
- {
- Reference<XPropertySet> xPrSet(m_xPathSettings, UNO_QUERY);
- if(xPrSet.is())
- {
- Reference<XPropertySetInfo> xInfo = xPrSet->getPropertySetInfo();
- const char* pA = aPropNames[ePath].pPropName;
- ::rtl::OUString sU = OUString::createFromAscii(pA);
- Property aProperty = xInfo->getPropertyByName(sU);
- bReadonly = 0 != (aProperty.Attributes & PropertyAttribute::READONLY);
- }
- }
- return bReadonly;
-}
-// -----------------------------------------------------------------------
-
-void SvtPathOptions_Impl::SetPath( SvtPathOptions::Pathes ePath, const String& rNewPath )
-{
- ::osl::MutexGuard aGuard( m_aMutex );
-
- if ( ePath < SvtPathOptions::PATH_COUNT )
- {
- String aResult;
- OUString aNewValue;
- Any a;
-
- switch ( ePath )
- {
- case SvtPathOptions::PATH_ADDIN:
- case SvtPathOptions::PATH_FILTER:
- case SvtPathOptions::PATH_HELP:
- case SvtPathOptions::PATH_MODULE:
- case SvtPathOptions::PATH_PLUGIN:
- case SvtPathOptions::PATH_STORAGE:
- {
- // These office paths have to be convert back to UCB-URL's
- utl::LocalFileHelper::ConvertPhysicalNameToURL( rNewPath, aResult );
- aNewValue = aResult;
- }
- break;
-
- default:
- aNewValue = rNewPath;
- }
-
- // Resubstitution is done by the service itself using the substition service
- a <<= aNewValue;
- try
- {
- m_xPathSettings->setFastPropertyValue( m_aMapEnumToPropHandle[ (sal_Int32)ePath], a );
- }
- catch (const Exception&)
- {
- }
- }
-}
-
-// -----------------------------------------------------------------------
-
-OUString SvtPathOptions_Impl::SubstituteAndConvert( const rtl::OUString& rPath )
-{
- return SubstVar( rPath );
-}
-
-//-------------------------------------------------------------------------
-
-OUString SvtPathOptions_Impl::UsePathVariables( const OUString& rPath )
-{
- return m_xSubstVariables->reSubstituteVariables( rPath );
-}
-
-// -----------------------------------------------------------------------
-
-OUString SvtPathOptions_Impl::SubstVar( const OUString& rVar )
-{
- // Don't work at parameter-string directly. Copy it.
- OUString aWorkText = rVar;
-
- // Convert the returned path to system path!
- BOOL bConvertLocal = FALSE;
-
- // Search for first occure of "$(...".
- sal_Int32 nPosition = aWorkText.indexOf( SIGN_STARTVARIABLE ); // = first position of "$(" in string
- sal_Int32 nLength = 0; // = count of letters from "$(" to ")" in string
-
- // Have we found any variable like "$(...)"?
- if ( nPosition != STRPOS_NOTFOUND )
- {
- // Yes; Get length of found variable.
- // If no ")" was found - nLength is set to 0 by default! see before.
- sal_Int32 nEndPosition = aWorkText.indexOf( SIGN_ENDVARIABLE, nPosition );
- if ( nEndPosition != STRPOS_NOTFOUND )
- nLength = nEndPosition - nPosition + 1;
- }
-
- // Is there another path variable?
- while ( ( nPosition != STRPOS_NOTFOUND ) && ( nLength > 0 ) )
- {
- // YES; Get the next variable for replace.
- OUString aReplacement;
- OUString aSubString = aWorkText.copy( nPosition, nLength );
- aSubString = aSubString.toAsciiLowerCase();
-
- // Look for special variable that needs a system path.
- VarNameToEnumMap::const_iterator pIter = m_aMapVarNamesToEnum.find( aSubString );
- if ( pIter != m_aMapVarNamesToEnum.end() )
- bConvertLocal = TRUE;
-
- nPosition += nLength;
-
- // We must control index in string before call something at OUString!
- // The OUString-implementation don't do it for us :-( but the result is not defined otherwise.
- if ( nPosition + 1 > aWorkText.getLength() )
- {
- // Position is out of range. Break loop!
- nPosition = STRPOS_NOTFOUND;
- nLength = 0;
- }
- else
- {
- // Else; Position is valid. Search for next variable.
- nPosition = aWorkText.indexOf( SIGN_STARTVARIABLE, nPosition );
- // Have we found any variable like "$(...)"?
- if ( nPosition != STRPOS_NOTFOUND )
- {
- // Yes; Get length of found variable. If no ")" was found - nLength must set to 0!
- nLength = 0;
- sal_Int32 nEndPosition = aWorkText.indexOf( SIGN_ENDVARIABLE, nPosition );
- if ( nEndPosition != STRPOS_NOTFOUND )
- nLength = nEndPosition - nPosition + 1;
- }
- }
- }
-
- aWorkText = m_xSubstVariables->substituteVariables( rVar, sal_False );
-
- if ( bConvertLocal )
- {
- // Convert the URL to a system path for special path variables
- String aReturn;
- utl::LocalFileHelper::ConvertURLToPhysicalName( aWorkText, aReturn );
- return aReturn;
- }
-
- return aWorkText;
-}
-
-// -----------------------------------------------------------------------
-
-SvtPathOptions_Impl::SvtPathOptions_Impl() :
- m_aPathArray( (sal_Int32)SvtPathOptions::PATH_COUNT )
-{
- Reference< XMultiServiceFactory > xSMgr = comphelper::getProcessServiceFactory();
-
- // Create necessary services
- m_xPathSettings = Reference< XFastPropertySet >( xSMgr->createInstance(
- ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
- "com.sun.star.util.PathSettings" ))),
- UNO_QUERY );
- if ( !m_xPathSettings.is() )
- {
- // #112719#: check for existance
- DBG_ERROR( "SvtPathOptions_Impl::SvtPathOptions_Impl(): #112719# happened again!" );
- throw RuntimeException(
- ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Service com.sun.star.util.PathSettings cannot be created" )),
- Reference< XInterface >() );
- }
-
- m_xSubstVariables = Reference< XStringSubstitution >( xSMgr->createInstance(
- ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
- "com.sun.star.util.PathSubstitution" ))),
- UNO_QUERY );
- if ( !m_xSubstVariables.is() )
- {
- // #112719#: check for existance
- DBG_ERROR( "SvtPathOptions_Impl::SvtPathOptions_Impl(): #112719# happened again!" );
- throw RuntimeException(
- ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Service com.sun.star.util.PathSubstitution cannot be created" )),
- Reference< XInterface >() );
- }
-
- // Create temporary hash map to have a mapping between property names and property handles
- Reference< XPropertySet > xPropertySet = Reference< XPropertySet >( m_xPathSettings, UNO_QUERY );
- Reference< XPropertySetInfo > xPropSetInfo = xPropertySet->getPropertySetInfo();
- Sequence< Property > aPathPropSeq = xPropSetInfo->getProperties();
-
- NameToHandleMap aTempHashMap;
- for ( sal_Int32 n = 0; n < aPathPropSeq.getLength(); n++ )
- {
- const com::sun::star::beans::Property& aProperty = aPathPropSeq[n];
- aTempHashMap.insert( NameToHandleMap::value_type( aProperty.Name, aProperty.Handle ));
- }
-
- // Create mapping between internal enum (SvtPathOptions::Pathes) and property handle
- sal_Int32 nCount = sizeof( aPropNames ) / sizeof( PropertyStruct );
- sal_Int32 i;
- for ( i = 0; i < nCount; i++ )
- {
- NameToHandleMap::const_iterator pIter =
- aTempHashMap.find( rtl::OUString::createFromAscii( aPropNames[i].pPropName ));
-
- if ( pIter != aTempHashMap.end() )
- {
- sal_Int32 nHandle = pIter->second;
- sal_Int32 nEnum = aPropNames[i].ePath;
- m_aMapEnumToPropHandle.insert( EnumToHandleMap::value_type( nEnum, nHandle ));
- }
- }
-
- // Create hash map for path variables that need a system path as a return value!
- nCount = sizeof( aVarNameAttribute ) / sizeof( VarNameAttribute );
- for ( i = 0; i < nCount; i++ )
- {
- m_aMapVarNamesToEnum.insert( VarNameToEnumMap::value_type(
- OUString::createFromAscii( aVarNameAttribute[i].pVarName ),
- aVarNameAttribute[i].eVarProperty ));
- }
-
- // Set language type!
- Any aLocale = ConfigManager::GetConfigManager()->GetDirectConfigProperty( ConfigManager::LOCALE );
- OUString aLocaleStr;
- if ( aLocale >>= aLocaleStr )
- {
- sal_Int32 nIndex = 0;
- m_aLocale.Language = aLocaleStr.getToken(0, '-', nIndex );
- m_aLocale.Country = aLocaleStr.getToken(0, '-', nIndex );
- m_aLocale.Variant = aLocaleStr.getToken(0, '-', nIndex );
- }
- else
- {
- DBG_ERRORFILE( "wrong any type" );
- m_aLocale.Language = OStringToOUString(OString("en"), RTL_TEXTENCODING_UTF8);
- m_aLocale.Country = OStringToOUString(OString("US"), RTL_TEXTENCODING_UTF8);
- m_aLocale.Variant = OStringToOUString(OString(""), RTL_TEXTENCODING_UTF8);
- }
-}
-
-// -----------------------------------------------------------------------
-
-// class SvtPathOptions --------------------------------------------------
-
-namespace { struct lclMutex : public rtl::Static< ::osl::Mutex, lclMutex > {}; }
-
-SvtPathOptions::SvtPathOptions()
-{
- // Global access, must be guarded (multithreading)
- ::osl::MutexGuard aGuard( lclMutex::get() );
- if ( !pOptions )
- {
- pOptions = new SvtPathOptions_Impl;
- ItemHolder1::holdConfigItem(E_PATHOPTIONS);
- }
- ++nRefCount;
- pImp = pOptions;
-}
-
-// -----------------------------------------------------------------------
-
-SvtPathOptions::~SvtPathOptions()
-{
- // Global access, must be guarded (multithreading)
- ::osl::MutexGuard aGuard( lclMutex::get() );
- if ( !--nRefCount )
- {
- DELETEZ( pOptions );
- }
-}
-
-// -----------------------------------------------------------------------
-
-const String& SvtPathOptions::GetAddinPath() const
-{
- return pImp->GetAddinPath();
-}
-
-// -----------------------------------------------------------------------
-
-const String& SvtPathOptions::GetAutoCorrectPath() const
-{
- return pImp->GetAutoCorrectPath();
-}
-
-// -----------------------------------------------------------------------
-
-const String& SvtPathOptions::GetAutoTextPath() const
-{
- return pImp->GetAutoTextPath();
-}
-
-// -----------------------------------------------------------------------
-
-const String& SvtPathOptions::GetBackupPath() const
-{
- return pImp->GetBackupPath();
-}
-
-// -----------------------------------------------------------------------
-
-const String& SvtPathOptions::GetBasicPath() const
-{
- return pImp->GetBasicPath();
-}
-
-// -----------------------------------------------------------------------
-
-const String& SvtPathOptions::GetBitmapPath() const
-{
- return pImp->GetBitmapPath();
-}
-
-// -----------------------------------------------------------------------
-
-const String& SvtPathOptions::GetConfigPath() const
-{
- return pImp->GetConfigPath();
-}
-
-// -----------------------------------------------------------------------
-
-const String& SvtPathOptions::GetDictionaryPath() const
-{
- return pImp->GetDictionaryPath();
-}
-
-// -----------------------------------------------------------------------
-
-const String& SvtPathOptions::GetFavoritesPath() const
-{
- return pImp->GetFavoritesPath();
-}
-
-// -----------------------------------------------------------------------
-
-const String& SvtPathOptions::GetFilterPath() const
-{
- return pImp->GetFilterPath();
-}
-
-// -----------------------------------------------------------------------
-
-const String& SvtPathOptions::GetGalleryPath() const
-{
- return pImp->GetGalleryPath();
-}
-
-// -----------------------------------------------------------------------
-
-const String& SvtPathOptions::GetGraphicPath() const
-{
- return pImp->GetGraphicPath();
-}
-
-// -----------------------------------------------------------------------
-
-const String& SvtPathOptions::GetHelpPath() const
-{
- return pImp->GetHelpPath();
-}
-
-// -----------------------------------------------------------------------
-
-const String& SvtPathOptions::GetLinguisticPath() const
-{
- return pImp->GetLinguisticPath();
-}
-
-// -----------------------------------------------------------------------
-
-const String& SvtPathOptions::GetFingerprintPath() const
-{
- return pImp->GetFingerprintPath();
-}
-
-// -----------------------------------------------------------------------
-
-const String& SvtPathOptions::GetModulePath() const
-{
- return pImp->GetModulePath();
-}
-
-// -----------------------------------------------------------------------
-
-const String& SvtPathOptions::GetPalettePath() const
-{
- return pImp->GetPalettePath();
-}
-
-// -----------------------------------------------------------------------
-
-const String& SvtPathOptions::GetPluginPath() const
-{
- return pImp->GetPluginPath();
-}
-
-// -----------------------------------------------------------------------
-
-const String& SvtPathOptions::GetStoragePath() const
-{
- return pImp->GetStoragePath();
-}
-
-// -----------------------------------------------------------------------
-
-const String& SvtPathOptions::GetTempPath() const
-{
- return pImp->GetTempPath();
-}
-
-// -----------------------------------------------------------------------
-
-const String& SvtPathOptions::GetTemplatePath() const
-{
- return pImp->GetTemplatePath();
-}
-
-// -----------------------------------------------------------------------
-
-const String& SvtPathOptions::GetUserConfigPath() const
-{
- return pImp->GetUserConfigPath();
-}
-
-const String& SvtPathOptions::GetUIConfigPath() const
-{
- return pImp->GetUIConfigPath();
-}
-
-// -----------------------------------------------------------------------
-
-const String& SvtPathOptions::GetWorkPath() const
-{
- return pImp->GetWorkPath();
-}
-
-// -----------------------------------------------------------------------
-
-void SvtPathOptions::SetAddinPath( const String& rPath )
-{
- pImp->SetAddinPath( rPath );
-}
-
-// -----------------------------------------------------------------------
-
-void SvtPathOptions::SetAutoCorrectPath( const String& rPath )
-{
- pImp->SetAutoCorrectPath( rPath );
-}
-
-// -----------------------------------------------------------------------
-
-void SvtPathOptions::SetAutoTextPath( const String& rPath )
-{
- pImp->SetAutoTextPath( rPath );
-}
-
-// -----------------------------------------------------------------------
-
-void SvtPathOptions::SetBackupPath( const String& rPath )
-{
- pImp->SetBackupPath( rPath );
-}
-
-// -----------------------------------------------------------------------
-
-void SvtPathOptions::SetBasicPath( const String& rPath )
-{
- pImp->SetBasicPath( rPath );
-}
-
-// -----------------------------------------------------------------------
-
-void SvtPathOptions::SetBitmapPath( const String& rPath )
-{
- pImp->SetBitmapPath( rPath );
-}
-
-// -----------------------------------------------------------------------
-
-void SvtPathOptions::SetConfigPath( const String& rPath )
-{
- pImp->SetConfigPath( rPath );
-}
-
-// -----------------------------------------------------------------------
-
-void SvtPathOptions::SetDictionaryPath( const String& rPath )
-{
- pImp->SetDictionaryPath( rPath );
-}
-
-// -----------------------------------------------------------------------
-
-void SvtPathOptions::SetFavoritesPath( const String& rPath )
-{
- pImp->SetFavoritesPath( rPath );
-}
-
-// -----------------------------------------------------------------------
-
-void SvtPathOptions::SetFilterPath( const String& rPath )
-{
- pImp->SetFilterPath( rPath );
-}
-
-// -----------------------------------------------------------------------
-
-void SvtPathOptions::SetGalleryPath( const String& rPath )
-{
- pImp->SetGalleryPath( rPath );
-}
-
-// -----------------------------------------------------------------------
-
-void SvtPathOptions::SetGraphicPath( const String& rPath )
-{
- pImp->SetGraphicPath( rPath );
-}
-
-// -----------------------------------------------------------------------
-
-void SvtPathOptions::SetHelpPath( const String& rPath )
-{
- pImp->SetHelpPath( rPath );
-}
-
-// -----------------------------------------------------------------------
-
-void SvtPathOptions::SetLinguisticPath( const String& rPath )
-{
- pImp->SetLinguisticPath( rPath );
-}
-
-// -----------------------------------------------------------------------
-
-void SvtPathOptions::SetModulePath( const String& rPath )
-{
- pImp->SetModulePath( rPath );
-}
-
-// -----------------------------------------------------------------------
-
-void SvtPathOptions::SetPalettePath( const String& rPath )
-{
- pImp->SetPalettePath( rPath );
-}
-
-// -----------------------------------------------------------------------
-
-void SvtPathOptions::SetPluginPath( const String& rPath )
-{
- pImp->SetPluginPath( rPath );
-}
-
-// -----------------------------------------------------------------------
-
-void SvtPathOptions::SetStoragePath( const String& rPath )
-{
- pImp->SetStoragePath( rPath );
-}
-
-// -----------------------------------------------------------------------
-
-void SvtPathOptions::SetTempPath( const String& rPath )
-{
- pImp->SetTempPath( rPath );
-}
-
-// -----------------------------------------------------------------------
-
-void SvtPathOptions::SetTemplatePath( const String& rPath )
-{
- pImp->SetTemplatePath( rPath );
-}
-
-// -----------------------------------------------------------------------
-
-void SvtPathOptions::SetUserConfigPath( const String& rPath )
-{
- pImp->SetUserConfigPath( rPath );
-}
-
-// -----------------------------------------------------------------------
-
-void SvtPathOptions::SetWorkPath( const String& rPath )
-{
- pImp->SetWorkPath( rPath );
-}
-
-// -----------------------------------------------------------------------
-
-String SvtPathOptions::SubstituteVariable( const String& rVar )
-{
- String aRet = pImp->SubstituteAndConvert( rVar );
- return aRet;
-}
-
-String SvtPathOptions::UseVariable( const String& rPath )
-{
- String aRet = pImp->UsePathVariables( rPath );
- return aRet;
-}
-
-// -----------------------------------------------------------------------
-
-sal_Bool SvtPathOptions::SearchFile( String& rIniFile, Pathes ePath )
-{
- // check parameter: empty inifile name?
- if ( !rIniFile.Len() )
- {
- DBG_ERRORFILE( "SvtPathOptions::SearchFile(): invalid parameter" );
- return sal_False;
- }
-
- String aIniFile = pImp->SubstVar( rIniFile );
- sal_Bool bRet = sal_False;
-
- switch ( ePath )
- {
- case PATH_USERCONFIG:
- {
- // path is a URL
- bRet = sal_True;
- INetURLObject aObj( GetUserConfigPath() );
- xub_StrLen i, nCount = aIniFile.GetTokenCount( '/' );
- for ( i = 0; i < nCount; ++i )
- aObj.insertName( aIniFile.GetToken( i, '/' ) );
-
- if ( !::utl::UCBContentHelper::Exists( aObj.GetMainURL( INetURLObject::NO_DECODE ) ) )
- {
- aObj.SetSmartURL( GetConfigPath() );
- aObj.insertName( aIniFile );
- bRet = ::utl::UCBContentHelper::Exists( aObj.GetMainURL( INetURLObject::NO_DECODE ) );
- }
-
- if ( bRet )
- rIniFile = aObj.GetMainURL( INetURLObject::NO_DECODE );
-
- break;
- }
-
- default:
- {
- String aPath;
- switch ( ePath )
- {
- case PATH_ADDIN: aPath = GetAddinPath(); break;
- case PATH_AUTOCORRECT: aPath = GetAutoCorrectPath(); break;
- case PATH_AUTOTEXT: aPath = GetAutoTextPath(); break;
- case PATH_BACKUP: aPath = GetBackupPath(); break;
- case PATH_BASIC: aPath = GetBasicPath(); break;
- case PATH_BITMAP: aPath = GetBitmapPath(); break;
- case PATH_CONFIG: aPath = GetConfigPath(); break;
- case PATH_DICTIONARY: aPath = GetDictionaryPath(); break;
- case PATH_FAVORITES: aPath = GetFavoritesPath(); break;
- case PATH_FILTER: aPath = GetFilterPath(); break;
- case PATH_GALLERY: aPath = GetGalleryPath(); break;
- case PATH_GRAPHIC: aPath = GetGraphicPath(); break;
- case PATH_HELP: aPath = GetHelpPath(); break;
- case PATH_LINGUISTIC: aPath = GetLinguisticPath(); break;
- case PATH_MODULE: aPath = GetModulePath(); break;
- case PATH_PALETTE: aPath = GetPalettePath(); break;
- case PATH_PLUGIN: aPath = GetPluginPath(); break;
- case PATH_STORAGE: aPath = GetStoragePath(); break;
- case PATH_TEMP: aPath = GetTempPath(); break;
- case PATH_TEMPLATE: aPath = GetTemplatePath(); break;
- case PATH_WORK: aPath = GetWorkPath(); break;
- case PATH_UICONFIG: aPath = GetUIConfigPath(); break;
- case PATH_FINGERPRINT: aPath = GetFingerprintPath(); break;
- case PATH_USERCONFIG:/*-Wall???*/ break;
- case PATH_COUNT: /*-Wall???*/ break;
- }
-
- sal_uInt16 j, nIdx = 0, nTokenCount = aPath.GetTokenCount( SEARCHPATH_DELIMITER );
- for ( j = 0; j < nTokenCount; ++j )
- {
- BOOL bIsURL = TRUE;
- String aPathToken = aPath.GetToken( 0, SEARCHPATH_DELIMITER, nIdx );
- INetURLObject aObj( aPathToken );
- if ( aObj.HasError() )
- {
- bIsURL = FALSE;
- String aURL;
- if ( LocalFileHelper::ConvertPhysicalNameToURL( aPathToken, aURL ) )
- aObj.SetURL( aURL );
- }
-
- xub_StrLen i, nCount = aIniFile.GetTokenCount( '/' );
- for ( i = 0; i < nCount; ++i )
- aObj.insertName( aIniFile.GetToken( i, '/' ) );
- bRet = ::utl::UCBContentHelper::Exists( aObj.GetMainURL( INetURLObject::NO_DECODE ) );
-
- if ( bRet )
- {
- if ( !bIsURL )
- ::utl::LocalFileHelper::ConvertURLToPhysicalName(
- aObj.GetMainURL( INetURLObject::NO_DECODE ), rIniFile );
- else
- rIniFile = aObj.GetMainURL( INetURLObject::NO_DECODE );
- break;
- }
- }
- }
- }
-
- return bRet;
-}
-
-// -----------------------------------------------------------------------
-
-::com::sun::star::lang::Locale SvtPathOptions::GetLocale() const
-{
- return pImp->GetLocale();
-}
-// -----------------------------------------------------------------------
-BOOL SvtPathOptions::IsPathReadonly(Pathes ePath)const
-{
- return pImp->IsPathReadonly(ePath);
-}
-// -----------------------------------------------------------------------
-const String& SvtPathOptions::GetPath(Pathes ePath)const
-{
- return pImp->GetPath(ePath);
-}
-// -----------------------------------------------------------------------
-void SvtPathOptions::SetPath( SvtPathOptions::Pathes ePath, const String& rNewPath )
-{
- pImp->SetPath(ePath, rNewPath);
-}
-
-// class PathService -----------------------------------------------------
-#include <com/sun/star/frame/XConfigManager.hpp>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <cppuhelper/implbase2.hxx>
-
-class PathService : public ::cppu::WeakImplHelper2< ::com::sun::star::frame::XConfigManager, ::com::sun::star::lang::XServiceInfo >
-{
- virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL
- getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL substituteVariables( const ::rtl::OUString& sText ) throw(::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& sKeyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& xListener ) throw(::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& sKeyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& xListener ) throw(::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL flush( ) throw(::com::sun::star::uno::RuntimeException);
-};
-
-// class PathService -----------------------------------------------------
-
-void SAL_CALL PathService::addPropertyChangeListener( const ::rtl::OUString&, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& ) throw(::com::sun::star::uno::RuntimeException) {}
-void SAL_CALL PathService::removePropertyChangeListener( const ::rtl::OUString&, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& ) throw(::com::sun::star::uno::RuntimeException) {}
-void SAL_CALL PathService::flush( ) throw(::com::sun::star::uno::RuntimeException) {}
-
-::rtl::OUString SAL_CALL PathService::substituteVariables( const ::rtl::OUString& sText ) throw(::com::sun::star::uno::RuntimeException)
-{
- return SvtPathOptions().SubstituteVariable( sText );
-}
-
-::rtl::OUString SAL_CALL PathService::getImplementationName( ) throw(::com::sun::star::uno::RuntimeException)
-{
- return OUString::createFromAscii("com.sun.star.comp.svtools.PathService");
-}
-
-sal_Bool SAL_CALL PathService::supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException)
-{
- if ( ServiceName.compareToAscii("com.sun.star.config.SpecialConfigManager") == COMPARE_EQUAL )
- return sal_True;
- else
- return sal_False;
-}
-
-::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL PathService::getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException)
-{
- Sequence< OUString > aRet(1);
- *aRet.getArray() = OUString::createFromAscii("com.sun.star.config.SpecialConfigManager");
- return aRet;
-}