[Libreoffice-commits] core.git: include/unotools unotools/source
Noel Grandin (via logerrit)
logerrit at kemper.freedesktop.org
Wed Jul 28 11:13:56 UTC 2021
include/unotools/itemholderbase.hxx | 2
include/unotools/optionsdlg.hxx | 30 +++---
unotools/source/config/itemholder1.cxx | 4
unotools/source/config/optionsdlg.cxx | 151 ++++++---------------------------
4 files changed, 44 insertions(+), 143 deletions(-)
New commits:
commit 3ed7511eca99819012fc1baa490ef85963a9472e
Author: Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Mon Jul 26 15:21:35 2021 +0200
Commit: Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Wed Jul 28 13:13:16 2021 +0200
simplify SvtOptionsDialogOptions
Change-Id: I8977c92897757bc62cdc93de98bfa05a00355f0d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119555
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
diff --git a/include/unotools/itemholderbase.hxx b/include/unotools/itemholderbase.hxx
index 5aca7107158a..0445c8fc2498 100644
--- a/include/unotools/itemholderbase.hxx
+++ b/include/unotools/itemholderbase.hxx
@@ -45,8 +45,6 @@ enum class EItem
MiscOptions ,
ModuleOptions ,
- OptionsDialogOptions ,
-
PathOptions ,
SysLocaleOptions , // 2
diff --git a/include/unotools/optionsdlg.hxx b/include/unotools/optionsdlg.hxx
index 239740a0e4b3..4e0d78245b65 100644
--- a/include/unotools/optionsdlg.hxx
+++ b/include/unotools/optionsdlg.hxx
@@ -16,26 +16,22 @@
* 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_OPTIONSDLG_HXX
-#define INCLUDED_UNOTOOLS_OPTIONSDLG_HXX
+#pragma once
#include <sal/config.h>
-
-#include <string_view>
-
#include <unotools/unotoolsdllapi.h>
-#include <unotools/options.hxx>
-
-class SvtOptionsDlgOptions_Impl;
+#include <rtl/ustring.hxx>
+#include <unordered_map>
+#include <string_view>
-class SAL_WARN_UNUSED UNOTOOLS_DLLPUBLIC SvtOptionsDialogOptions final : public utl::detail::Options
+// Loads the dialog options from config
+class UNOTOOLS_DLLPUBLIC SvtOptionsDialogOptions
{
-private:
- SvtOptionsDlgOptions_Impl* m_pImp;
-
public:
- SvtOptionsDialogOptions();
- virtual ~SvtOptionsDialogOptions() override;
+
+ typedef std::unordered_map< OUString, bool > OptionNodeList;
+
+ SvtOptionsDialogOptions();
bool IsGroupHidden ( std::u16string_view _rGroup ) const;
bool IsPageHidden ( std::u16string_view _rPage,
@@ -43,8 +39,10 @@ public:
bool IsOptionHidden ( std::u16string_view _rOption,
std::u16string_view _rPage,
std::u16string_view _rGroup ) const;
-};
+private:
+ bool IsHidden( const OUString& _rPath ) const;
-#endif
+ OptionNodeList m_aOptionNodeList;
+};
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/unotools/source/config/itemholder1.cxx b/unotools/source/config/itemholder1.cxx
index 8cb01998b063..f56e88cb0b2f 100644
--- a/unotools/source/config/itemholder1.cxx
+++ b/unotools/source/config/itemholder1.cxx
@@ -137,10 +137,6 @@ void ItemHolder1::impl_newItem(TItemInfo& rItem)
rItem.pItem.reset( new SvtModuleOptions() );
break;
- case EItem::OptionsDialogOptions :
- rItem.pItem.reset( new SvtOptionsDialogOptions() );
- break;
-
case EItem::PathOptions :
rItem.pItem.reset( new SvtPathOptions() );
break;
diff --git a/unotools/source/config/optionsdlg.cxx b/unotools/source/config/optionsdlg.cxx
index 52897278be7c..32e5ee0d2bf7 100644
--- a/unotools/source/config/optionsdlg.cxx
+++ b/unotools/source/config/optionsdlg.cxx
@@ -19,91 +19,44 @@
#include <unotools/optionsdlg.hxx>
#include <unotools/configitem.hxx>
+#include <unotools/configmgr.hxx>
#include <com/sun/star/uno/Any.hxx>
#include <com/sun/star/uno/Sequence.hxx>
-#include <osl/mutex.hxx>
-#include "itemholder1.hxx"
-
-#include <string_view>
-#include <unordered_map>
-
-using namespace utl;
using namespace com::sun::star::beans;
using namespace com::sun::star::uno;
-#define CFG_FILENAME "Office.OptionsDialog"
-#define ROOT_NODE "OptionsDialogGroups"
-#define PAGES_NODE "Pages"
-#define OPTIONS_NODE "Options"
-
-static SvtOptionsDlgOptions_Impl* pOptions = nullptr;
-static sal_Int32 nRefCount = 0;
-
-class SvtOptionsDlgOptions_Impl : public utl::ConfigItem
-{
-private:
- typedef std::unordered_map< OUString, bool > OptionNodeList;
-
- static constexpr OUStringLiteral g_sPathDelimiter = u"/";
- OptionNodeList m_aOptionNodeList;
+constexpr OUStringLiteral ROOT_NODE = u"OptionsDialogGroups";
+constexpr OUStringLiteral PAGES_NODE = u"Pages";
+constexpr OUStringLiteral OPTIONS_NODE = u"Options";
+namespace {
enum NodeType{ NT_Group, NT_Page, NT_Option };
- void ReadNode( std::u16string_view _rNode, NodeType _eType );
- bool IsHidden( const OUString& _rPath ) const;
-
- virtual void ImplCommit() override;
-
-public:
- SvtOptionsDlgOptions_Impl();
-
- virtual void Notify( const css::uno::Sequence< OUString >& aPropertyNames ) override;
-
- static ::osl::Mutex & getInitMutex();
-
- bool IsGroupHidden ( std::u16string_view _rGroup ) const;
- bool IsPageHidden ( std::u16string_view _rPage,
- std::u16string_view _rGroup ) const;
- bool IsOptionHidden ( std::u16string_view _rOption,
- std::u16string_view _rPage,
- std::u16string_view _rGroup ) const;
-};
-
-namespace
-{
- class theOptionsDlgOptions_ImplMutex : public rtl::Static<osl::Mutex, theOptionsDlgOptions_ImplMutex>{};
}
+constexpr OUStringLiteral g_sPathDelimiter = u"/";
+static void ReadNode(
+ const Reference<css::container::XHierarchicalNameAccess>& xHierarchyAccess,
+ SvtOptionsDialogOptions::OptionNodeList & aOptionNodeList,
+ std::u16string_view _rNode, NodeType _eType );
-::osl::Mutex & SvtOptionsDlgOptions_Impl::getInitMutex()
-{
- return theOptionsDlgOptions_ImplMutex::get();
-}
-SvtOptionsDlgOptions_Impl::SvtOptionsDlgOptions_Impl()
- : ConfigItem( CFG_FILENAME ),
- m_aOptionNodeList( OptionNodeList() )
+SvtOptionsDialogOptions::SvtOptionsDialogOptions()
{
- OUString sRootNode( ROOT_NODE );
- const Sequence< OUString > aNodeSeq = GetNodeNames( sRootNode );
- OUString sNode( sRootNode + g_sPathDelimiter );
+ Reference<css::container::XHierarchicalNameAccess> xHierarchyAccess = utl::ConfigManager::acquireTree(u"Office.OptionsDialog");
+ const Sequence< OUString > aNodeSeq = utl::ConfigItem::GetNodeNames( xHierarchyAccess, ROOT_NODE, utl::ConfigNameFormat::LocalPath);
+ OUString sNode( ROOT_NODE + g_sPathDelimiter );
for ( const auto& rNode : aNodeSeq )
{
OUString sSubNode( sNode + rNode );
- ReadNode( sSubNode, NT_Group );
+ ReadNode( xHierarchyAccess, m_aOptionNodeList, sSubNode, NT_Group );
}
}
-void SvtOptionsDlgOptions_Impl::ImplCommit()
-{
- // nothing to commit
-}
-
-void SvtOptionsDlgOptions_Impl::Notify( const Sequence< OUString >& )
-{
- // nothing to notify
-}
-void SvtOptionsDlgOptions_Impl::ReadNode( std::u16string_view _rNode, NodeType _eType )
+static void ReadNode(
+ const Reference<css::container::XHierarchicalNameAccess>& xHierarchyAccess,
+ SvtOptionsDialogOptions::OptionNodeList & aOptionNodeList,
+ std::u16string_view _rNode, NodeType _eType )
{
OUString sNode( _rNode + g_sPathDelimiter );
OUString sSet;
@@ -136,37 +89,37 @@ void SvtOptionsDlgOptions_Impl::ReadNode( std::u16string_view _rNode, NodeType _
if ( _eType != NT_Option )
lResult[1] = sNode + sSet;
- Sequence< Any > aValues = GetProperties( lResult );
+ Sequence< Any > aValues = utl::ConfigItem::GetProperties( xHierarchyAccess, lResult, /*bAllLocales*/false );
bool bHide = false;
if ( aValues[0] >>= bHide )
- m_aOptionNodeList.emplace( sNode, bHide );
+ aOptionNodeList.emplace( sNode, bHide );
if ( _eType != NT_Option )
{
OUString sNodes( sNode + sSet );
- const Sequence< OUString > aNodes = GetNodeNames( sNodes );
+ const Sequence< OUString > aNodes = utl::ConfigItem::GetNodeNames( xHierarchyAccess, sNodes, utl::ConfigNameFormat::LocalPath );
for ( const auto& rNode : aNodes )
{
OUString sSubNodeName( sNodes + g_sPathDelimiter + rNode );
- ReadNode( sSubNodeName, _eType == NT_Group ? NT_Page : NT_Option );
+ ReadNode( xHierarchyAccess, aOptionNodeList, sSubNodeName, _eType == NT_Group ? NT_Page : NT_Option );
}
}
}
static OUString getGroupPath( std::u16string_view _rGroup )
{
- return OUString( OUString::Concat(ROOT_NODE "/") + _rGroup + "/" );
+ return OUString( OUString::Concat(ROOT_NODE) + "/" + _rGroup + "/" );
}
static OUString getPagePath( std::u16string_view _rPage )
{
- return OUString( OUString::Concat(PAGES_NODE "/") + _rPage + "/" );
+ return OUString( OUString::Concat(PAGES_NODE) + "/" + _rPage + "/" );
}
static OUString getOptionPath( std::u16string_view _rOption )
{
- return OUString( OUString::Concat(OPTIONS_NODE "/") + _rOption + "/" );
+ return OUString( OUString::Concat(OPTIONS_NODE) + "/" + _rOption + "/" );
}
-bool SvtOptionsDlgOptions_Impl::IsHidden( const OUString& _rPath ) const
+bool SvtOptionsDialogOptions::IsHidden( const OUString& _rPath ) const
{
bool bRet = false;
OptionNodeList::const_iterator pIter = m_aOptionNodeList.find( _rPath );
@@ -175,64 +128,20 @@ bool SvtOptionsDlgOptions_Impl::IsHidden( const OUString& _rPath ) const
return bRet;
}
-bool SvtOptionsDlgOptions_Impl::IsGroupHidden( std::u16string_view _rGroup ) const
+bool SvtOptionsDialogOptions::IsGroupHidden( std::u16string_view _rGroup ) const
{
return IsHidden( getGroupPath( _rGroup ) );
}
-bool SvtOptionsDlgOptions_Impl::IsPageHidden( std::u16string_view _rPage, std::u16string_view _rGroup ) const
+bool SvtOptionsDialogOptions::IsPageHidden( std::u16string_view _rPage, std::u16string_view _rGroup ) const
{
return IsHidden( getGroupPath( _rGroup ) + getPagePath( _rPage ) );
}
-bool SvtOptionsDlgOptions_Impl::IsOptionHidden(
- std::u16string_view _rOption, std::u16string_view _rPage, std::u16string_view _rGroup ) const
-{
- return IsHidden( getGroupPath( _rGroup ) + getPagePath( _rPage ) + getOptionPath( _rOption ) );
-}
-
-SvtOptionsDialogOptions::SvtOptionsDialogOptions()
-{
- // Global access, must be guarded (multithreading)
- ::osl::MutexGuard aGuard( SvtOptionsDlgOptions_Impl::getInitMutex() );
- ++nRefCount;
- if ( !pOptions )
- {
- pOptions = new SvtOptionsDlgOptions_Impl;
-
- ItemHolder1::holdConfigItem( EItem::OptionsDialogOptions );
- }
- m_pImp = pOptions;
-}
-
-SvtOptionsDialogOptions::~SvtOptionsDialogOptions()
-{
- // Global access, must be guarded (multithreading)
- ::osl::MutexGuard aGuard( SvtOptionsDlgOptions_Impl::getInitMutex() );
- if ( !--nRefCount )
- {
- if ( pOptions->IsModified() )
- pOptions->Commit();
- delete pOptions;
- pOptions = nullptr;
- }
-}
-
-bool SvtOptionsDialogOptions::IsGroupHidden( std::u16string_view _rGroup ) const
-{
- return m_pImp->IsGroupHidden( _rGroup );
-}
-
-bool SvtOptionsDialogOptions::IsPageHidden(
- std::u16string_view _rPage, std::u16string_view _rGroup ) const
-{
- return m_pImp->IsPageHidden( _rPage, _rGroup );
-}
-
bool SvtOptionsDialogOptions::IsOptionHidden(
std::u16string_view _rOption, std::u16string_view _rPage, std::u16string_view _rGroup ) const
{
- return m_pImp->IsOptionHidden( _rOption, _rPage, _rGroup );
+ return IsHidden( getGroupPath( _rGroup ) + getPagePath( _rPage ) + getOptionPath( _rOption ) );
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
More information about the Libreoffice-commits
mailing list