cui/source/options/optpath.cxx | 3 include/unotools/defaultoptions.hxx | 20 - include/unotools/itemholderbase.hxx | 2 unotools/source/config/defaultoptions.cxx | 381 +++++------------------------- unotools/source/config/itemholder1.cxx | 4 5 files changed, 77 insertions(+), 333 deletions(-)
New commits: commit 6bb901a1282373e747fcca5deaa9dbe92488812c Author: Noel Grandin <noelgran...@gmail.com> AuthorDate: Sun Jul 25 18:10:21 2021 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Mon Jul 26 10:58:14 2021 +0200 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.gran...@collabora.co.uk> diff --git a/cui/source/options/optpath.cxx b/cui/source/options/optpath.cxx index 6e2cc6e48d61..1670dfb91d82 100644 --- a/cui/source/options/optpath.cxx +++ b/cui/source/options/optpath.cxx @@ -62,7 +62,6 @@ using namespace svx; struct OptPath_Impl { - SvtDefaultOptions m_aDefOpt; OUString m_sMultiPathDlg; Reference< css::util::XPathSettings > m_xPathSettings; @@ -351,7 +350,7 @@ IMPL_LINK_NOARG(SvxPathTabPage, StandardHdl_Impl, weld::Button&, void) { m_xPathBox->selected_foreach([this](weld::TreeIter& rEntry){ PathUserData_Impl* pPathImpl = reinterpret_cast<PathUserData_Impl*>(m_xPathBox->get_id(rEntry).toInt64()); - OUString aOldPath = pImpl->m_aDefOpt.GetDefaultPath( pPathImpl->nRealId ); + OUString aOldPath = SvtDefaultOptions::GetDefaultPath( pPathImpl->nRealId ); if ( !aOldPath.isEmpty() ) { diff --git a/include/unotools/defaultoptions.hxx b/include/unotools/defaultoptions.hxx index 6192522c5002..dfa07fb5e100 100644 --- a/include/unotools/defaultoptions.hxx +++ b/include/unotools/defaultoptions.hxx @@ -16,29 +16,15 @@ * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ -#ifndef INCLUDED_UNOTOOLS_DEFAULTOPTIONS_HXX -#define INCLUDED_UNOTOOLS_DEFAULTOPTIONS_HXX +#pragma once #include <unotools/unotoolsdllapi.h> #include <rtl/ustring.hxx> -#include <unotools/options.hxx> #include <unotools/pathoptions.hxx> -#include <memory> -class SvtDefaultOptions_Impl; - -class SAL_WARN_UNUSED UNOTOOLS_DLLPUBLIC SvtDefaultOptions final : public utl::detail::Options +namespace SvtDefaultOptions { -private: - std::shared_ptr<SvtDefaultOptions_Impl> pImpl; - -public: - SvtDefaultOptions(); - virtual ~SvtDefaultOptions() override; - - OUString GetDefaultPath(SvtPathOptions::Paths nId) const; +UNOTOOLS_DLLPUBLIC OUString GetDefaultPath(SvtPathOptions::Paths nId); }; -#endif // INCLUDED_UNOTOOLS_DEFAULTOPTIONS_HXX - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/include/unotools/itemholderbase.hxx b/include/unotools/itemholderbase.hxx index 579046511e38..0d7390e20537 100644 --- a/include/unotools/itemholderbase.hxx +++ b/include/unotools/itemholderbase.hxx @@ -39,8 +39,6 @@ enum class EItem Compatibility , CTLOptions , // 2 - DefaultOptions , - EventConfig , HistoryOptions , 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; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits