diff options
author | Caolán McNamara <caolanm@redhat.com> | 2010-10-11 15:19:05 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2010-10-12 15:35:11 +0100 |
commit | 34ebfb2b61686999065015295dab9f623027e94d (patch) | |
tree | 1ba7728b93f9d38750a25cbc3dfb7df9c6fc222d /unotools | |
parent | 2e9987515e5c83353dbe6151cc309289b38a78f6 (diff) |
#i112786# make ConfigManager a well-behaved singleton
Diffstat (limited to 'unotools')
-rw-r--r-- | unotools/inc/unotools/configmgr.hxx | 4 | ||||
-rw-r--r-- | unotools/source/config/configitem.cxx | 2 | ||||
-rw-r--r-- | unotools/source/config/configmgr.cxx | 22 | ||||
-rw-r--r-- | unotools/source/config/docinfohelper.cxx | 41 | ||||
-rw-r--r-- | unotools/source/config/pathoptions.cxx | 2 | ||||
-rw-r--r-- | unotools/source/config/useroptions.cxx | 2 |
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; |