[Libreoffice-commits] .: unotools/inc unotools/source
Caolán McNamara
caolan at kemper.freedesktop.org
Tue Oct 12 07:37:08 PDT 2010
unotools/inc/unotools/configmgr.hxx | 4 ---
unotools/source/config/configitem.cxx | 2 -
unotools/source/config/configmgr.cxx | 22 +++-------------
unotools/source/config/docinfohelper.cxx | 41 ++++++++++++++-----------------
unotools/source/config/pathoptions.cxx | 2 -
unotools/source/config/useroptions.cxx | 2 -
6 files changed, 27 insertions(+), 46 deletions(-)
New commits:
commit 824b7fbefdf081dd2ebb2e14f68c127b5fe28d95
Author: Caolán McNamara <caolanm at redhat.com>
Date: Mon Oct 11 15:19:05 2010 +0100
#i112786# make ConfigManager a well-behaved singleton
diff --git a/unotools/inc/unotools/configmgr.hxx b/unotools/inc/unotools/configmgr.hxx
index b1a349b..20efadd 100644
--- a/unotools/inc/unotools/configmgr.hxx
+++ b/unotools/inc/unotools/configmgr.hxx
@@ -54,7 +54,6 @@ namespace utl
xConfigurationProvider;
ConfigMgr_Impl* pMgrImpl;
- static ConfigManager* pConfigManager;
static void getBasisAboutBoxProductVersion( rtl::OUString& rVersion );
public:
@@ -80,8 +79,7 @@ namespace utl
void StoreConfigItems();
- static ConfigManager* GetConfigManager();
- static void RemoveConfigManager();
+ static ConfigManager& GetConfigManager();
static rtl::OUString GetConfigBaseURL();
enum ConfigProperty
diff --git a/unotools/source/config/configitem.cxx b/unotools/source/config/configitem.cxx
index a3268cf..0172276 100644
--- a/unotools/source/config/configitem.cxx
+++ b/unotools/source/config/configitem.cxx
@@ -240,7 +240,7 @@ ConfigItem::ConfigItem(const OUString rSubTree, sal_Int16 nSetMode ) :
{
AutoDeleter<ConfigItem_Impl> aNewImpl(pImpl);
- pImpl->pManager = ConfigManager::GetConfigManager();
+ pImpl->pManager = &ConfigManager::GetConfigManager();
pImpl->nMode = nSetMode;
if(0 != (nSetMode&CONFIG_MODE_RELEASE_TREE))
pImpl->pManager->AddConfigItem(*this);
diff --git a/unotools/source/config/configmgr.cxx b/unotools/source/config/configmgr.cxx
index 9f8b904..28a9dde 100644
--- a/unotools/source/config/configmgr.cxx
+++ b/unotools/source/config/configmgr.cxx
@@ -352,28 +352,14 @@ void ConfigManager::StoreConfigItems()
}
}
}
-ConfigManager* ConfigManager::pConfigManager = 0;
/* -----------------------------07.09.00 11:06--------------------------------
---------------------------------------------------------------------------*/
-ConfigManager* ConfigManager::GetConfigManager()
-{
- if(!pConfigManager)
- {
- pConfigManager = new ConfigManager();
- }
- return pConfigManager;
-}
-/* -----------------------------07.09.00 11:06--------------------------------
+struct theConfigManager : public rtl::Static<ConfigManager, theConfigManager> {};
- ---------------------------------------------------------------------------*/
-void ConfigManager::RemoveConfigManager()
+ConfigManager& ConfigManager::GetConfigManager()
{
- if(pConfigManager)
- {
- delete pConfigManager;
- pConfigManager = 0;
- }
+ return theConfigManager::get();
}
/* -----------------------------08.09.00 13:22--------------------------------
@@ -515,7 +501,7 @@ Any ConfigManager::GetDirectConfigProperty(ConfigProperty eProp)
}
Sequence< Any > aArgs(1);
aArgs[0] <<= sPath;
- Reference< XMultiServiceFactory > xCfgProvider = GetConfigManager()->GetConfigurationProvider();
+ Reference< XMultiServiceFactory > xCfgProvider = GetConfigManager().GetConfigurationProvider();
if(!xCfgProvider.is())
return aRet;
Reference< XInterface > xIFace;
diff --git a/unotools/source/config/docinfohelper.cxx b/unotools/source/config/docinfohelper.cxx
index f75d0c0..5b02624 100644
--- a/unotools/source/config/docinfohelper.cxx
+++ b/unotools/source/config/docinfohelper.cxx
@@ -45,39 +45,36 @@ namespace utl
// First product: branded name + version
// version is <product_versions>_<product_extension>$<platform>
- utl::ConfigManager* pMgr = utl::ConfigManager::GetConfigManager();
- if ( pMgr )
+ utl::ConfigManager& rMgr = utl::ConfigManager::GetConfigManager();
+ // plain product name
+ rtl::OUString aValue;
+ uno::Any aAny = rMgr.GetDirectConfigProperty(
+ utl::ConfigManager::PRODUCTNAME);
+ if ( (aAny >>= aValue) && aValue.getLength() )
{
- // plain product name
- rtl::OUString aValue;
- uno::Any aAny = pMgr->GetDirectConfigProperty(
- utl::ConfigManager::PRODUCTNAME);
+ aResult.append( aValue.replace( ' ', '_' ) );
+ aResult.append( (sal_Unicode)'/' );
+
+ aAny = rMgr.GetDirectConfigProperty(
+ utl::ConfigManager::PRODUCTVERSION);
if ( (aAny >>= aValue) && aValue.getLength() )
{
aResult.append( aValue.replace( ' ', '_' ) );
- aResult.append( (sal_Unicode)'/' );
- aAny = pMgr->GetDirectConfigProperty(
- utl::ConfigManager::PRODUCTVERSION);
+ aAny = rMgr.GetDirectConfigProperty(
+ utl::ConfigManager::PRODUCTEXTENSION);
if ( (aAny >>= aValue) && aValue.getLength() )
{
+ aResult.append( (sal_Unicode)'_' );
aResult.append( aValue.replace( ' ', '_' ) );
-
- aAny = pMgr->GetDirectConfigProperty(
- utl::ConfigManager::PRODUCTEXTENSION);
- if ( (aAny >>= aValue) && aValue.getLength() )
- {
- aResult.append( (sal_Unicode)'_' );
- aResult.append( aValue.replace( ' ', '_' ) );
- }
}
+ }
- aResult.append( (sal_Unicode)'$' );
- aResult.append( ::rtl::OUString::createFromAscii(
- TOOLS_INETDEF_OS ).replace( ' ', '_' ) );
+ aResult.append( (sal_Unicode)'$' );
+ aResult.append( ::rtl::OUString::createFromAscii(
+ TOOLS_INETDEF_OS ).replace( ' ', '_' ) );
- aResult.append( (sal_Unicode)' ' );
- }
+ aResult.append( (sal_Unicode)' ' );
}
// second product: OpenOffice.org_project/<build_information>
diff --git a/unotools/source/config/pathoptions.cxx b/unotools/source/config/pathoptions.cxx
index 6580e4e..cb84cfd 100644
--- a/unotools/source/config/pathoptions.cxx
+++ b/unotools/source/config/pathoptions.cxx
@@ -530,7 +530,7 @@ SvtPathOptions_Impl::SvtPathOptions_Impl() :
}
// Set language type!
- Any aLocale = ConfigManager::GetConfigManager()->GetDirectConfigProperty( ConfigManager::LOCALE );
+ Any aLocale = ConfigManager::GetConfigManager().GetDirectConfigProperty( ConfigManager::LOCALE );
OUString aLocaleStr;
if ( aLocale >>= aLocaleStr )
{
diff --git a/unotools/source/config/useroptions.cxx b/unotools/source/config/useroptions.cxx
index e8292ae..d8e7b49 100644
--- a/unotools/source/config/useroptions.cxx
+++ b/unotools/source/config/useroptions.cxx
@@ -212,7 +212,7 @@ SvtUserOptions_Impl::SvtUserOptions_Impl() :
LogHelper::logIt(ex);
}
- Any aAny = ConfigManager::GetConfigManager()->GetDirectConfigProperty( ConfigManager::LOCALE );
+ Any aAny = ConfigManager::GetConfigManager().GetDirectConfigProperty( ConfigManager::LOCALE );
::rtl::OUString aLocale;
if ( aAny >>= aLocale )
m_aLocale = aLocale;
More information about the Libreoffice-commits
mailing list