summaryrefslogtreecommitdiff
path: root/unotools
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2010-10-11 15:19:05 +0100
committerCaolán McNamara <caolanm@redhat.com>2010-10-12 15:35:11 +0100
commit34ebfb2b61686999065015295dab9f623027e94d (patch)
tree1ba7728b93f9d38750a25cbc3dfb7df9c6fc222d /unotools
parent2e9987515e5c83353dbe6151cc309289b38a78f6 (diff)
#i112786# make ConfigManager a well-behaved singleton
Diffstat (limited to 'unotools')
-rw-r--r--unotools/inc/unotools/configmgr.hxx4
-rw-r--r--unotools/source/config/configitem.cxx2
-rw-r--r--unotools/source/config/configmgr.cxx22
-rw-r--r--unotools/source/config/docinfohelper.cxx41
-rw-r--r--unotools/source/config/pathoptions.cxx2
-rw-r--r--unotools/source/config/useroptions.cxx2
6 files changed, 27 insertions, 46 deletions
diff --git a/unotools/inc/unotools/configmgr.hxx b/unotools/inc/unotools/configmgr.hxx
index c26ff5245739..7e67c419447f 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 e191f471057a..482d7391d8be 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 0df6d49afe59..562df834d7b2 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 677432e1f7d3..ada79cff167b 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 1f07f724a9d0..ca948eec96ef 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 6c63bbfee34b..5237db1c5f66 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;