diff options
Diffstat (limited to 'sw/source/ui/utlui/initui.cxx')
-rw-r--r-- | sw/source/ui/utlui/initui.cxx | 101 |
1 files changed, 79 insertions, 22 deletions
diff --git a/sw/source/ui/utlui/initui.cxx b/sw/source/ui/utlui/initui.cxx index 043b650eed63..52fef745d172 100644 --- a/sw/source/ui/utlui/initui.cxx +++ b/sw/source/ui/utlui/initui.cxx @@ -42,35 +42,96 @@ SwGlossaries* pGlossaries = 0; // Provides all needed paths. Is initialized by UI. SwGlossaryList* pGlossaryList = 0; -String* pOldGrfCat = 0; -String* pOldTabCat = 0; -String* pOldFrmCat = 0; -String* pOldDrwCat = 0; -String* pCurrGlosGroup = 0; +namespace +{ + +enum CachedStringID +{ + OldGrfCat, + OldTabCat, + OldFrmCat, + OldDrwCat, + CurrGlosGroup, + CachedStrings +}; + +OUString *StringCache[CachedStrings] = {0}; + +inline OUString GetCachedString(CachedStringID id) +{ + return StringCache[id] ? *StringCache[id] : OUString(); +} + +inline void SetCachedString(CachedStringID id, OUString sStr) +{ + if (StringCache[id]) + { + *StringCache[id] = sStr; + } + else + { + StringCache[id] = new OUString(sStr); + } +} + +void ClearStringCache() +{ + for (int i=0; i<CachedStrings; ++i) + { + delete StringCache[i]; + } +} + +} + +OUString GetOldGrfCat() +{ + return GetCachedString(OldGrfCat); +} + +void SetOldGrfCat(OUString sStr) +{ + SetCachedString(OldGrfCat, sStr); +} + +OUString GetOldTabCat() +{ + return GetCachedString(OldTabCat); +} + +void SetOldTabCat(OUString sStr) +{ + SetCachedString(OldTabCat, sStr); +} -String* GetOldGrfCat() +OUString GetOldFrmCat() { - return pOldGrfCat; + return GetCachedString(OldFrmCat); } -String* GetOldTabCat() + +void SetOldFrmCat(OUString sStr) { - return pOldTabCat; + SetCachedString(OldFrmCat, sStr); } -String* GetOldFrmCat() + +OUString GetOldDrwCat() { - return pOldFrmCat; + return GetCachedString(OldDrwCat); } -String* GetOldDrwCat() + +void SetOldDrwCat(OUString sStr) { - return pOldDrwCat; + SetCachedString(OldDrwCat, sStr); } -String* GetCurrGlosGroup() + +OUString GetCurrGlosGroup() { - return pCurrGlosGroup; + return GetCachedString(CurrGlosGroup); } -void SetCurrGlosGroup(String* pStr) + +void SetCurrGlosGroup(OUString sStr) { - pCurrGlosGroup = pStr; + SetCachedString(CurrGlosGroup, sStr); } std::vector<String>* pDBNameList = 0; @@ -97,11 +158,7 @@ void _FinitUI() delete SwFieldType::pFldNames; - delete pOldGrfCat; - delete pOldTabCat; - delete pOldFrmCat; - delete pOldDrwCat; - delete pCurrGlosGroup; + ClearStringCache(); delete pDBNameList; delete pGlossaryList; delete pAuthFieldNameList; |