summaryrefslogtreecommitdiff
path: root/unotools
diff options
context:
space:
mode:
authorNoel Grandin <noelgrandin@gmail.com>2021-07-25 18:10:21 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2021-07-26 10:58:14 +0200
commit6bb901a1282373e747fcca5deaa9dbe92488812c (patch)
treec9a048e8ee7482096004be3d36b3598f7c481f86 /unotools
parent5e93753ca60ac52f94f9adee5c6b55a2e9387750 (diff)
use officecfg for default options
Change-Id: I5241c21fa097c104f1131db61787191d019a5de4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119485 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'unotools')
-rw-r--r--unotools/source/config/defaultoptions.cxx381
-rw-r--r--unotools/source/config/itemholder1.cxx4
2 files changed, 73 insertions, 312 deletions
diff --git a/unotools/source/config/defaultoptions.cxx b/unotools/source/config/defaultoptions.cxx
index c24d7daf8388..2cdbc263b2be 100644
--- a/unotools/source/config/defaultoptions.cxx
+++ b/unotools/source/config/defaultoptions.cxx
@@ -23,335 +23,100 @@
#include <sal/log.hxx>
#include <unotools/defaultoptions.hxx>
#include <unotools/pathoptions.hxx>
-#include <unotools/configitem.hxx>
#include <tools/debug.hxx>
#include <com/sun/star/uno/Any.hxx>
#include <com/sun/star/uno/Sequence.hxx>
-#include <osl/mutex.hxx>
-
-#include <rtl/instance.hxx>
#include <rtl/ustrbuf.hxx>
+#include <officecfg/Office/Common.hxx>
-#include "itemholder1.hxx"
-
-using namespace osl;
-using namespace utl;
-using namespace com::sun::star::uno;
-
-#define DEFAULTPATH_ADDIN 0
-#define DEFAULTPATH_AUTOCORRECT 1
-#define DEFAULTPATH_AUTOTEXT 2
-#define DEFAULTPATH_BACKUP 3
-#define DEFAULTPATH_BASIC 4
-#define DEFAULTPATH_BITMAP 5
-#define DEFAULTPATH_CONFIG 6
-#define DEFAULTPATH_DICTIONARY 7
-#define DEFAULTPATH_FAVORITES 8
-#define DEFAULTPATH_FILTER 9
-#define DEFAULTPATH_GALLERY 10
-#define DEFAULTPATH_GRAPHIC 11
-#define DEFAULTPATH_HELP 12
-#define DEFAULTPATH_LINGUISTIC 13
-#define DEFAULTPATH_MODULE 14
-#define DEFAULTPATH_PALETTE 15
-#define DEFAULTPATH_PLUGIN 16
-#define DEFAULTPATH_TEMP 17
-#define DEFAULTPATH_TEMPLATE 18
-#define DEFAULTPATH_USERCONFIG 19
-#define DEFAULTPATH_WORK 20
-#define DEFAULTPATH_CLASSIFICATION 21
-#define DEFAULTPATH_USERDICTIONARY 22
-
-// class SvtDefaultOptions_Impl ------------------------------------------
-
-class SvtDefaultOptions_Impl : public utl::ConfigItem
-{
-public:
- OUString m_aAddinPath;
- OUString m_aAutoCorrectPath;
- OUString m_aAutoTextPath;
- OUString m_aBackupPath;
- OUString m_aBasicPath;
- OUString m_aBitmapPath;
- OUString m_aConfigPath;
- OUString m_aDictionaryPath;
- OUString m_aFavoritesPath;
- OUString m_aFilterPath;
- OUString m_aGalleryPath;
- OUString m_aGraphicPath;
- OUString m_aHelpPath;
- OUString m_aLinguisticPath;
- OUString m_aModulePath;
- OUString m_aPalettePath;
- OUString m_aPluginPath;
- OUString m_aTempPath;
- OUString m_aTemplatePath;
- OUString m_aUserConfigPath;
- OUString m_aWorkPath;
- OUString m_aClassificationPath;
-
- SvtDefaultOptions_Impl();
- virtual ~SvtDefaultOptions_Impl() override;
-
- OUString GetDefaultPath( SvtPathOptions::Paths nId ) const;
- virtual void Notify( const css::uno::Sequence<OUString>& aPropertyNames) override;
-
-private:
- virtual void ImplCommit() final override;
-};
-
-// global ----------------------------------------------------------------
-
-namespace {
-
-std::weak_ptr<SvtDefaultOptions_Impl> g_pOptions;
-
-}
-
-typedef OUString SvtDefaultOptions_Impl::*PathStrPtr;
-
-namespace {
-
-struct PathToDefaultMapping_Impl
+namespace SvtDefaultOptions
{
- SvtPathOptions::Paths _ePath;
- PathStrPtr _pDefaultPath;
-};
-
-}
-
-PathToDefaultMapping_Impl const PathMap_Impl[] =
-{
- { SvtPathOptions::Paths::AddIn, &SvtDefaultOptions_Impl::m_aAddinPath },
- { SvtPathOptions::Paths::AutoCorrect, &SvtDefaultOptions_Impl::m_aAutoCorrectPath },
- { SvtPathOptions::Paths::AutoText, &SvtDefaultOptions_Impl::m_aAutoTextPath },
- { SvtPathOptions::Paths::Backup, &SvtDefaultOptions_Impl::m_aBackupPath },
- { SvtPathOptions::Paths::Basic, &SvtDefaultOptions_Impl::m_aBasicPath },
- { SvtPathOptions::Paths::Bitmap, &SvtDefaultOptions_Impl::m_aBitmapPath },
- { SvtPathOptions::Paths::Config, &SvtDefaultOptions_Impl::m_aConfigPath },
- { SvtPathOptions::Paths::Dictionary, &SvtDefaultOptions_Impl::m_aDictionaryPath },
- { SvtPathOptions::Paths::Favorites, &SvtDefaultOptions_Impl::m_aFavoritesPath },
- { SvtPathOptions::Paths::Filter, &SvtDefaultOptions_Impl::m_aFilterPath },
- { SvtPathOptions::Paths::Gallery, &SvtDefaultOptions_Impl::m_aGalleryPath },
- { SvtPathOptions::Paths::Graphic, &SvtDefaultOptions_Impl::m_aGraphicPath },
- { SvtPathOptions::Paths::Help, &SvtDefaultOptions_Impl::m_aHelpPath },
- { SvtPathOptions::Paths::Linguistic, &SvtDefaultOptions_Impl::m_aLinguisticPath },
- { SvtPathOptions::Paths::Module, &SvtDefaultOptions_Impl::m_aModulePath },
- { SvtPathOptions::Paths::Palette, &SvtDefaultOptions_Impl::m_aPalettePath },
- { SvtPathOptions::Paths::Plugin, &SvtDefaultOptions_Impl::m_aPluginPath },
- { SvtPathOptions::Paths::Temp, &SvtDefaultOptions_Impl::m_aTempPath },
- { SvtPathOptions::Paths::Template, &SvtDefaultOptions_Impl::m_aTemplatePath },
- { SvtPathOptions::Paths::UserConfig, &SvtDefaultOptions_Impl::m_aUserConfigPath },
- { SvtPathOptions::Paths::Work, &SvtDefaultOptions_Impl::m_aWorkPath },
- { SvtPathOptions::Paths::Classification, &SvtDefaultOptions_Impl::m_aClassificationPath }
-};
-
-// functions -------------------------------------------------------------
-
-static Sequence< OUString > GetDefaultPropertyNames()
-{
- static const char* aPropNames[] =
- {
- "Addin", // PATH_ADDIN
- "AutoCorrect", // PATH_AUTOCORRECT
- "AutoText", // PATH_AUTOTEXT
- "Backup", // PATH_BACKUP
- "Basic", // PATH_BASIC
- "Bitmap", // PATH_BITMAP
- "Config", // PATH_CONFIG
- "Dictionary", // PATH_DICTIONARY
- "Favorite", // PATH_FAVORITES
- "Filter", // PATH_FILTER
- "Gallery", // PATH_GALLERY
- "Graphic", // PATH_GRAPHIC
- "Help", // PATH_HELP
- "Linguistic", // PATH_LINGUISTIC
- "Module", // PATH_MODULE
- "Palette", // PATH_PALETTE
- "Plugin", // PATH_PLUGIN
- "Temp", // PATH_TEMP
- "Template", // PATH_TEMPLATE
- "UserConfig", // PATH_USERCONFIG
- "Work", // PATH_WORK
- "Classification" // PATH_CLASSIFICATION
- };
-
- const int nCount = SAL_N_ELEMENTS( aPropNames );
- Sequence< OUString > aNames( nCount );
- OUString* pNames = aNames.getArray();
- for ( int i = 0; i < nCount; i++ )
- pNames[i] = OUString::createFromAscii( aPropNames[i] );
-
- return aNames;
-}
-
-void SvtDefaultOptions_Impl::Notify( const Sequence< OUString >& )
-{
- // no notification, will never be changed
-}
-
-void SvtDefaultOptions_Impl::ImplCommit()
-{
- // will never be changed
-}
-// class SvtDefaultOptions_Impl ------------------------------------------
-
-OUString SvtDefaultOptions_Impl::GetDefaultPath( SvtPathOptions::Paths nId ) const
+OUString GetDefaultPath( SvtPathOptions::Paths nId )
{
- OUString aRet;
- sal_uInt16 nIdx = 0;
-
- while ( PathMap_Impl[nIdx]._ePath <= SvtPathOptions::Paths::Classification )
- {
- if ( nId == PathMap_Impl[nIdx]._ePath && PathMap_Impl[nIdx]._pDefaultPath )
+ SvtPathOptions aPathOpt;
+ auto seqToPath = [&aPathOpt] (const css::uno::Sequence<OUString> & rSeq)
{
- aRet = this->*(PathMap_Impl[nIdx]._pDefaultPath);
- if ( nId == SvtPathOptions::Paths::AddIn ||
- nId == SvtPathOptions::Paths::Filter ||
- nId == SvtPathOptions::Paths::Help ||
- nId == SvtPathOptions::Paths::Module ||
- nId == SvtPathOptions::Paths::Plugin )
+ // single paths
+ sal_Int32 nCount = rSeq.getLength();
+ OUStringBuffer aFullPathBuf(nCount * 40);
+ for ( sal_Int32 nPosition = 0; nPosition < nCount; ++nPosition )
{
- OUString aTmp;
- osl::FileBase::getFileURLFromSystemPath( aRet, aTmp );
- aRet = aTmp;
+ aFullPathBuf.append(aPathOpt.SubstituteVariable( rSeq[ nPosition ] ));
+ if ( nPosition < nCount-1 )
+ aFullPathBuf.append(";");
}
+ return aFullPathBuf.makeStringAndClear();
+ };
- break;
- }
- ++nIdx;
+ OUString aRet;
+ switch (nId)
+ {
+ case SvtPathOptions::Paths::AddIn:
+ aRet = aPathOpt.SubstituteVariable(officecfg::Office::Common::Path::Default::Addin::get()); break;
+ case SvtPathOptions::Paths::AutoCorrect:
+ aRet = seqToPath(officecfg::Office::Common::Path::Default::AutoCorrect::get()); break;
+ case SvtPathOptions::Paths::AutoText:
+ aRet = seqToPath(officecfg::Office::Common::Path::Default::AutoText::get()); break;
+ case SvtPathOptions::Paths::Backup:
+ aRet = aPathOpt.SubstituteVariable(officecfg::Office::Common::Path::Default::Backup::get()); break;
+ case SvtPathOptions::Paths::Basic:
+ aRet = seqToPath(officecfg::Office::Common::Path::Default::Basic::get()); break;
+ case SvtPathOptions::Paths::Bitmap:
+ aRet = aPathOpt.SubstituteVariable(officecfg::Office::Common::Path::Default::Bitmap::get()); break;
+ case SvtPathOptions::Paths::Config:
+ aRet = aPathOpt.SubstituteVariable(officecfg::Office::Common::Path::Default::Config::get()); break;
+ case SvtPathOptions::Paths::Dictionary:
+ aRet = aPathOpt.SubstituteVariable(officecfg::Office::Common::Path::Default::Dictionary::get()); break;
+ case SvtPathOptions::Paths::Favorites:
+ aRet = aPathOpt.SubstituteVariable(officecfg::Office::Common::Path::Default::Favorite::get()); break;
+ case SvtPathOptions::Paths::Filter:
+ aRet = aPathOpt.SubstituteVariable(officecfg::Office::Common::Path::Default::Filter::get()); break;
+ case SvtPathOptions::Paths::Gallery:
+ aRet = seqToPath(officecfg::Office::Common::Path::Default::Gallery::get()); break;
+ case SvtPathOptions::Paths::Graphic:
+ aRet = aPathOpt.SubstituteVariable(officecfg::Office::Common::Path::Default::Graphic::get()); break;
+ case SvtPathOptions::Paths::Help:
+ aRet = aPathOpt.SubstituteVariable(officecfg::Office::Common::Path::Default::Help::get()); break;
+ case SvtPathOptions::Paths::Linguistic:
+ aRet = aPathOpt.SubstituteVariable(officecfg::Office::Common::Path::Default::Linguistic::get()); break;
+ case SvtPathOptions::Paths::Module:
+ aRet = aPathOpt.SubstituteVariable(officecfg::Office::Common::Path::Default::Module::get()); break;
+ case SvtPathOptions::Paths::Palette:
+ aRet = aPathOpt.SubstituteVariable(officecfg::Office::Common::Path::Default::Palette::get()); break;
+ case SvtPathOptions::Paths::Plugin:
+ aRet = seqToPath(officecfg::Office::Common::Path::Default::Plugin::get()); break;
+ case SvtPathOptions::Paths::Temp:
+ aRet = aPathOpt.SubstituteVariable(officecfg::Office::Common::Path::Default::Temp::get()); break;
+ case SvtPathOptions::Paths::Template:
+ aRet = seqToPath(officecfg::Office::Common::Path::Default::Template::get()); break;
+ case SvtPathOptions::Paths::UserConfig:
+ aRet = aPathOpt.SubstituteVariable(officecfg::Office::Common::Path::Default::UserConfig::get()); break;
+ case SvtPathOptions::Paths::Work:
+ aRet = aPathOpt.SubstituteVariable(officecfg::Office::Common::Path::Default::Work::get()); break;
+ case SvtPathOptions::Paths::Classification:
+ aRet = aPathOpt.SubstituteVariable(officecfg::Office::Common::Path::Default::Classification::get()); break;
+ default:
+ assert(false);
}
- return aRet;
-}
-SvtDefaultOptions_Impl::SvtDefaultOptions_Impl() : ConfigItem( "Office.Common/Path/Default" )
-{
- Sequence< OUString > aNames = GetDefaultPropertyNames();
- 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() )
- return;
-
- SvtPathOptions aPathOpt;
- OUString aTempStr;
- OUStringBuffer aFullPathBuf;
-
- for ( int nProp = 0; nProp < aNames.getLength(); nProp++ )
+ if ( nId == SvtPathOptions::Paths::AddIn ||
+ nId == SvtPathOptions::Paths::Filter ||
+ nId == SvtPathOptions::Paths::Help ||
+ nId == SvtPathOptions::Paths::Module ||
+ nId == SvtPathOptions::Paths::Plugin )
{
- if ( pValues[nProp].hasValue() )
- {
- switch ( pValues[nProp].getValueTypeClass() )
- {
- case css::uno::TypeClass_STRING :
- {
- // multi paths
- if ( pValues[nProp] >>= aTempStr )
- aFullPathBuf = aPathOpt.SubstituteVariable( aTempStr );
- else
- {
- SAL_WARN( "unotools.config", "any operator >>= failed" );
- }
- break;
- }
-
- case css::uno::TypeClass_SEQUENCE :
- {
- // single paths
- aFullPathBuf.setLength(0);
- Sequence < OUString > aList;
- if ( pValues[nProp] >>= aList )
- {
- sal_Int32 nCount = aList.getLength();
- for ( sal_Int32 nPosition = 0; nPosition < nCount; ++nPosition )
- {
- aFullPathBuf.append(aPathOpt.SubstituteVariable( aList[ nPosition ] ));
- if ( nPosition < nCount-1 )
- aFullPathBuf.append(";");
- }
- }
- else
- {
- SAL_WARN( "unotools.config", "any operator >>= failed" );
- }
- break;
- }
-
- default:
- {
- SAL_WARN( "unotools.config", "Wrong any type" );
- }
- }
-
- auto aFullPath = aFullPathBuf.makeStringAndClear();
- switch ( nProp )
- {
- case DEFAULTPATH_ADDIN: m_aAddinPath = aFullPath; break;
- case DEFAULTPATH_AUTOCORRECT: m_aAutoCorrectPath = aFullPath; break;
- case DEFAULTPATH_AUTOTEXT: m_aAutoTextPath = aFullPath; break;
- case DEFAULTPATH_BACKUP: m_aBackupPath = aFullPath; break;
- case DEFAULTPATH_BASIC: m_aBasicPath = aFullPath; break;
- case DEFAULTPATH_BITMAP: m_aBitmapPath = aFullPath; break;
- case DEFAULTPATH_CONFIG: m_aConfigPath = aFullPath; break;
- case DEFAULTPATH_DICTIONARY: m_aDictionaryPath = aFullPath; break;
- case DEFAULTPATH_FAVORITES: m_aFavoritesPath = aFullPath; break;
- case DEFAULTPATH_FILTER: m_aFilterPath = aFullPath; break;
- case DEFAULTPATH_GALLERY: m_aGalleryPath = aFullPath; break;
- case DEFAULTPATH_GRAPHIC: m_aGraphicPath = aFullPath; break;
- case DEFAULTPATH_HELP: m_aHelpPath = aFullPath; break;
- case DEFAULTPATH_LINGUISTIC: m_aLinguisticPath = aFullPath; break;
- case DEFAULTPATH_MODULE: m_aModulePath = aFullPath; break;
- case DEFAULTPATH_PALETTE: m_aPalettePath = aFullPath; break;
- case DEFAULTPATH_PLUGIN: m_aPluginPath = aFullPath; break;
- case DEFAULTPATH_TEMP: m_aTempPath = aFullPath; break;
- case DEFAULTPATH_TEMPLATE: m_aTemplatePath = aFullPath; break;
- case DEFAULTPATH_USERCONFIG: m_aUserConfigPath = aFullPath; break;
- case DEFAULTPATH_WORK: m_aWorkPath = aFullPath; break;
- case DEFAULTPATH_CLASSIFICATION: m_aClassificationPath = aFullPath;break;
- case DEFAULTPATH_USERDICTIONARY: break;
-
- default:
- SAL_WARN( "unotools.config", "invalid index to load a default path" );
- }
- }
+ OUString aTmp;
+ osl::FileBase::getFileURLFromSystemPath( aRet, aTmp );
+ aRet = aTmp;
}
-}
-SvtDefaultOptions_Impl::~SvtDefaultOptions_Impl()
-{
- if ( IsModified() )
- Commit();
+ return aRet;
}
-// class SvtDefaultOptions -----------------------------------------------
-namespace { struct lclMutex : public rtl::Static< ::osl::Mutex, lclMutex > {}; }
+} // namespace
-SvtDefaultOptions::SvtDefaultOptions()
-{
- // Global access, must be guarded (multithreading)
- ::osl::MutexGuard aGuard( lclMutex::get() );
- pImpl = g_pOptions.lock();
- if ( !pImpl )
- {
- pImpl = std::make_shared<SvtDefaultOptions_Impl>();
- g_pOptions = pImpl;
- ItemHolder1::holdConfigItem(EItem::DefaultOptions);
- }
-}
-
-SvtDefaultOptions::~SvtDefaultOptions()
-{
- // Global access, must be guarded (multithreading)
- ::osl::MutexGuard aGuard( lclMutex::get() );
- pImpl.reset();
-}
-OUString SvtDefaultOptions::GetDefaultPath( SvtPathOptions::Paths nId ) const
-{
- return pImpl->GetDefaultPath( nId );
-}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/unotools/source/config/itemholder1.cxx b/unotools/source/config/itemholder1.cxx
index b5bc50b7e118..cad18b90e2ed 100644
--- a/unotools/source/config/itemholder1.cxx
+++ b/unotools/source/config/itemholder1.cxx
@@ -125,10 +125,6 @@ void ItemHolder1::impl_newItem(TItemInfo& rItem)
rItem.pItem.reset( new SvtCompatibilityOptions() );
break;
- case EItem::DefaultOptions :
- rItem.pItem.reset( new SvtDefaultOptions() );
- break;
-
case EItem::EventConfig :
//rItem.pItem.reset( new GlobalEventConfig() );
break;