Files
libreoffice/svtools/source/config/pathoptions.cxx

410 lines
17 KiB
C++
Raw Normal View History

2000-09-18 16:07:07 +00:00
/*************************************************************************
*
* $RCSfile: pathoptions.cxx,v $
*
* $Revision: 1.1.1.1 $
*
* last change: $Author: hr $ $Date: 2000-09-18 16:58:56 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
*
* - GNU Lesser General Public License Version 2.1
* - Sun Industry Standards Source License Version 1.1
*
* Sun Microsystems Inc., October, 2000
*
* GNU Lesser General Public License Version 2.1
* =============================================
* Copyright 2000 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
*
*
* Sun Industry Standards Source License Version 1.1
* =================================================
* The contents of this file are subject to the Sun Industry Standards
* Source License Version 1.1 (the "License"); You may not use this file
* except in compliance with the License. You may obtain a copy of the
* License at http://www.openoffice.org/license.html.
*
* Software provided under this License is provided on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
* WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
* MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
* See the License for the specific provisions governing your rights and
* obligations concerning the Software.
*
* The Initial Developer of the Original Code is: Sun Microsystems, Inc.
*
* Copyright: 2000 by Sun Microsystems, Inc.
*
* All Rights Reserved.
*
* Contributor(s): _______________________________________
*
*
************************************************************************/
#pragma hdrstop
#include "pathoptions.hxx"
#ifndef _UTL_CONFIGMGR_HXX_
#include <unotools/configmgr.hxx>
#endif
#ifndef _TOOLS_DEBUG_HXX
#include <tools/debug.hxx>
#endif
#ifndef _COM_SUN_STAR_UNO_ANY_HXX_
#include <com/sun/star/uno/Any.hxx>
#endif
#ifndef _COM_SUN_STAR_UNO_SEQUENCE_HXX_
#include <com/sun/star/uno/Sequence.hxx>
#endif
using namespace utl;
using namespace rtl;
using namespace com::sun::star::uno;
// class SvtPathOptions --------------------------------------------------
// initialize the static member
SvtPathOptions* SvtPathOptions::m_pOptions = NULL;
// -----------------------------------------------------------------------
Sequence< OUString > SvtPathOptions::GetPropertyNames()
{
static const char* aPropNames[] =
{
"Addin", // PATH_ADDIN
"AutoCorrect", // PATH_AUTOCORRECT
"AutoPilot", // PATH_AUTOPILOT
"Backup", // PATH_BACKUP
"Basic", // PATH_BASIC
"Bitmap", // PATH_BITMAP
"Config", // PATH_CONFIG
"Database", // PATH_DATABASE
"Dictionary", // PATH_DICTIONARY
"Favorite", // PATH_FAVORITES
"Filter", // PATH_FILTER
"Gallery", // PATH_GALLERY
"Glossary", // PATH_GLOSSARY
"Graphic", // PATH_GRAPHIC
"Help", // PATH_HELP
"Linguistic", // PATH_LINGUISTIC
"Module", // PATH_MODULE
"New", // PATH_NEWMENU
"Palette", // PATH_PALETTE
"Plugin", // PATH_PLUGIN
"Storage", // PATH_STORAGE
"SubIni", // PATH_SUBINI
"Temp", // PATH_TEMP
"Template", // PATH_TEMPLATE
"Trash", // PATH_TRASH
"UserConfig", // PATH_USERCONFIG
"UserDictionary", // PATH_USERDICTIONARY
"Work" // PATH_WORK
};
const int nCount = 28;
Sequence< OUString > aNames( nCount );
OUString* pNames = aNames.getArray();
for ( int i = 0; i < nCount; i++ )
pNames[i] = OUString::createFromAscii( aPropNames[i] );
return aNames;
}
// -----------------------------------------------------------------------
const String& SvtPathOptions::GetPath( int nIndex )
{
::osl::MutexGuard aGuard( m_aMutex );
if ( PATH_ADDIN == nIndex )
return m_aAddinPath;
else if ( PATH_AUTOCORRECT == nIndex )
return m_aAutoCorrectPath;
else if ( PATH_AUTOPILOT == nIndex )
return m_aAutoPilotPath;
else if ( PATH_BACKUP == nIndex )
return m_aBackupPath;
else if ( PATH_BASIC == nIndex )
return m_aBasicPath;
else if ( PATH_BITMAP == nIndex )
return m_aBitmapPath;
else if ( PATH_CONFIG == nIndex )
return m_aConfigPath;
else if ( PATH_DATABASE == nIndex )
return m_aDatabasePath;
else if ( PATH_DICTIONARY == nIndex )
return m_aDictionaryPath;
else if ( PATH_FAVORITES == nIndex )
return m_aFavoritesPath;
else if ( PATH_FILTER == nIndex )
return m_aFilterPath;
else if ( PATH_GALLERY == nIndex )
return m_aGalleryPath;
else if ( PATH_GLOSSARY == nIndex )
return m_aGlossaryPath;
else if ( PATH_GRAPHIC == nIndex )
return m_aGraphicPath;
else if ( PATH_HELP == nIndex )
return m_aHelpPath;
else if ( PATH_LINGUISTIC == nIndex )
return m_aLinguisticPath;
else if ( PATH_MODULE == nIndex )
return m_aModulePath;
else if ( PATH_NEWMENU == nIndex )
return m_aNewMenuPath;
else if ( PATH_PALETTE == nIndex )
return m_aPalettePath;
else if ( PATH_PLUGIN == nIndex )
return m_aPluginPath;
else if ( PATH_STORAGE == nIndex )
return m_aStoragePath;
else if ( PATH_SUBINI == nIndex )
return m_aSubIniPath;
else if ( PATH_TEMP == nIndex )
return m_aTempPath;
else if ( PATH_TEMPLATE == nIndex )
return m_aTemplatePath;
else if ( PATH_TRASH == nIndex )
return m_aTrashPath;
else if ( PATH_USERCONFIG == nIndex )
return m_aUserConfigPath;
else if ( PATH_USERDICTIONARY == nIndex )
return m_aUserDictionaryPath;
else if ( PATH_WORK == nIndex )
return m_aWorkPath;
else
{
DBG_ERRORFILE( "invalid index to get a path" );
return m_aEmptyString;
}
}
// -----------------------------------------------------------------------
void SvtPathOptions::SetPath( int nIndex, const String& rNewPath )
{
::osl::MutexGuard aGuard( m_aMutex );
if ( PATH_ADDIN == nIndex )
m_aAddinPath = rNewPath;
else if ( PATH_AUTOCORRECT == nIndex )
m_aAutoCorrectPath = rNewPath;
else if ( PATH_AUTOPILOT == nIndex )
m_aAutoPilotPath = rNewPath;
else if ( PATH_BACKUP == nIndex )
m_aBackupPath = rNewPath;
else if ( PATH_BASIC == nIndex )
m_aBasicPath = rNewPath;
else if ( PATH_BITMAP == nIndex )
m_aBitmapPath = rNewPath;
else if ( PATH_CONFIG == nIndex )
m_aConfigPath = rNewPath;
else if ( PATH_DATABASE == nIndex )
m_aDatabasePath = rNewPath;
else if ( PATH_DICTIONARY == nIndex )
m_aDictionaryPath = rNewPath;
else if ( PATH_FAVORITES == nIndex )
m_aFavoritesPath = rNewPath;
else if ( PATH_FILTER == nIndex )
m_aFilterPath = rNewPath;
else if ( PATH_GALLERY == nIndex )
m_aGalleryPath = rNewPath;
else if ( PATH_GLOSSARY == nIndex )
m_aGlossaryPath = rNewPath;
else if ( PATH_GRAPHIC == nIndex )
m_aGraphicPath = rNewPath;
else if ( PATH_HELP == nIndex )
m_aHelpPath = rNewPath;
else if ( PATH_LINGUISTIC == nIndex )
m_aLinguisticPath = rNewPath;
else if ( PATH_MODULE == nIndex )
m_aModulePath = rNewPath;
else if ( PATH_NEWMENU == nIndex )
m_aNewMenuPath = rNewPath;
else if ( PATH_PALETTE == nIndex )
m_aPalettePath = rNewPath;
else if ( PATH_PLUGIN == nIndex )
m_aPluginPath = rNewPath;
else if ( PATH_STORAGE == nIndex )
m_aStoragePath = rNewPath;
else if ( PATH_SUBINI == nIndex )
m_aSubIniPath = rNewPath;
else if ( PATH_TEMP == nIndex )
m_aTempPath = rNewPath;
else if ( PATH_TEMPLATE == nIndex )
m_aTemplatePath = rNewPath;
else if ( PATH_TRASH == nIndex )
m_aTrashPath = rNewPath;
else if ( PATH_USERCONFIG == nIndex )
m_aUserConfigPath = rNewPath;
else if ( PATH_USERDICTIONARY == nIndex )
m_aUserDictionaryPath = rNewPath;
else if ( PATH_WORK == nIndex )
m_aWorkPath = rNewPath;
else
DBG_ERRORFILE( "invalid index to set a path" );
SetModified();
}
// -----------------------------------------------------------------------
SvtPathOptions::SvtPathOptions() : ConfigItem( OUString::createFromAscii("Office/Common/Path") )
{
Sequence< OUString > aNames = GetPropertyNames();
Sequence< Any > aValues = GetProperties( aNames );
EnableNotification( aNames );
const Any* pValues = aValues.getConstArray();
DBG_ASSERT( aValues.getLength() == aNames.getLength(), "GetProperties failed" );
if ( aValues.getLength() == aNames.getLength() )
{
OUString aTempStr;
for ( int nProp = 0; nProp < aNames.getLength(); nProp++ )
{
DBG_ASSERT( pValues[nProp].hasValue(), "property value missing" );
if ( pValues[nProp].hasValue() )
{
pValues[nProp] >>= aTempStr;
switch ( nProp )
{
case PATH_ADDIN: m_aAddinPath = String( aTempStr ); break;
case PATH_AUTOCORRECT: m_aAutoCorrectPath = String( aTempStr ); break;
case PATH_AUTOPILOT: m_aAutoPilotPath = String( aTempStr ); break;
case PATH_BACKUP: m_aBackupPath = String( aTempStr ); break;
case PATH_BASIC: m_aBasicPath = String( aTempStr ); break;
case PATH_BITMAP: m_aBitmapPath = String( aTempStr ); break;
case PATH_CONFIG: m_aConfigPath = String( aTempStr ); break;
case PATH_DATABASE: m_aDatabasePath = String( aTempStr ); break;
case PATH_DICTIONARY: m_aDictionaryPath = String( aTempStr ); break;
case PATH_FAVORITES: m_aFavoritesPath = String( aTempStr ); break;
case PATH_FILTER: m_aFilterPath = String( aTempStr ); break;
case PATH_GALLERY: m_aGalleryPath = String( aTempStr ); break;
case PATH_GLOSSARY: m_aGlossaryPath = String( aTempStr ); break;
case PATH_GRAPHIC: m_aGraphicPath = String( aTempStr ); break;
case PATH_HELP: m_aHelpPath = String( aTempStr ); break;
case PATH_LINGUISTIC: m_aLinguisticPath = String( aTempStr ); break;
case PATH_MODULE: m_aModulePath = String( aTempStr ); break;
case PATH_NEWMENU: m_aNewMenuPath = String( aTempStr ); break;
case PATH_PALETTE: m_aPalettePath = String( aTempStr ); break;
case PATH_PLUGIN: m_aPluginPath = String( aTempStr ); break;
case PATH_STORAGE: m_aStoragePath = String( aTempStr ); break;
case PATH_SUBINI: m_aSubIniPath = String( aTempStr ); break;
case PATH_TEMP: m_aTempPath = String( aTempStr ); break;
case PATH_TEMPLATE: m_aTemplatePath = String( aTempStr ); break;
case PATH_TRASH: m_aTrashPath = String( aTempStr ); break;
case PATH_USERCONFIG: m_aUserConfigPath = String( aTempStr ); break;
case PATH_USERDICTIONARY: m_aUserDictionaryPath = String( aTempStr ); break;
case PATH_WORK: m_aWorkPath = String( aTempStr ); break;
default:
DBG_ERRORFILE( "invalid index to load a path" );
}
}
}
}
}
// -----------------------------------------------------------------------
SvtPathOptions::~SvtPathOptions()
{
}
// -----------------------------------------------------------------------
SvtPathOptions* SvtPathOptions::GetPathOptions()
{
if ( !m_pOptions )
m_pOptions = new SvtPathOptions;
return m_pOptions;
}
// -----------------------------------------------------------------------
void SvtPathOptions::DestroyPathOptions()
{
if ( m_pOptions )
DELETEZ( m_pOptions );
}
// -----------------------------------------------------------------------
void SvtPathOptions::Commit()
{
::osl::MutexGuard aGuard( m_aMutex );
Sequence< OUString > aNames = GetPropertyNames();
OUString* pNames = aNames.getArray();
Sequence< Any > aValues( aNames.getLength() );
Any* pValues = aValues.getArray();
const Type& rType = ::getBooleanCppuType();
OUString aTempStr;
for ( int nProp = 0; nProp < aNames.getLength(); nProp++ )
{
switch ( nProp )
{
case PATH_ADDIN: aTempStr = OUString( m_aAddinPath ); break;
case PATH_AUTOCORRECT: aTempStr = OUString( m_aAutoCorrectPath ); break;
case PATH_AUTOPILOT: aTempStr = OUString( m_aAutoPilotPath ); break;
case PATH_BACKUP: aTempStr = OUString( m_aBackupPath ); break;
case PATH_BASIC: aTempStr = OUString( m_aBasicPath ); break;
case PATH_BITMAP: aTempStr = OUString( m_aBitmapPath ); break;
case PATH_CONFIG: aTempStr = OUString( m_aConfigPath ); break;
case PATH_DATABASE: aTempStr = OUString( m_aDatabasePath ); break;
case PATH_DICTIONARY: aTempStr = OUString( m_aDictionaryPath ); break;
case PATH_FAVORITES: aTempStr = OUString( m_aFavoritesPath ); break;
case PATH_FILTER: aTempStr = OUString( m_aFilterPath ); break;
case PATH_GALLERY: aTempStr = OUString( m_aGalleryPath ); break;
case PATH_GLOSSARY: aTempStr = OUString( m_aGlossaryPath ); break;
case PATH_GRAPHIC: aTempStr = OUString( m_aGraphicPath ); break;
case PATH_HELP: aTempStr = OUString( m_aHelpPath ); break;
case PATH_LINGUISTIC: aTempStr = OUString( m_aLinguisticPath ); break;
case PATH_MODULE: aTempStr = OUString( m_aModulePath ); break;
case PATH_NEWMENU: aTempStr = OUString( m_aNewMenuPath ); break;
case PATH_PALETTE: aTempStr = OUString( m_aPalettePath ); break;
case PATH_PLUGIN: aTempStr = OUString( m_aPluginPath ); break;
case PATH_STORAGE: aTempStr = OUString( m_aStoragePath ); break;
case PATH_SUBINI: aTempStr = OUString( m_aSubIniPath ); break;
case PATH_TEMP: aTempStr = OUString( m_aTempPath ); break;
case PATH_TEMPLATE: aTempStr = OUString( m_aTemplatePath ); break;
case PATH_TRASH: aTempStr = OUString( m_aTrashPath ); break;
case PATH_USERCONFIG: aTempStr = OUString( m_aUserConfigPath ); break;
case PATH_USERDICTIONARY: aTempStr = OUString( m_aUserDictionaryPath ); break;
case PATH_WORK: aTempStr = OUString( m_aWorkPath ); break;
default:
DBG_ERRORFILE( "invalid index to save a path" );
}
pValues[nProp] <<= aTempStr;
}
PutProperties( aNames, aValues );
}
// -----------------------------------------------------------------------
void SvtPathOptions::Notify( const Sequence<rtl::OUString>& aPropertyNames )
{
DBG_ERRORFILE( "properties have been changed" );
}