[Libreoffice-commits] core.git: sw/source
Matteo Casalin
matteo.casalin at yahoo.com
Sun Aug 25 07:52:39 PDT 2013
sw/source/ui/frmdlg/cption.cxx | 22 +++-----
sw/source/ui/inc/initui.hxx | 25 ++++-----
sw/source/ui/misc/glossary.cxx | 48 +++++++-----------
sw/source/ui/uiview/viewdlg2.cxx | 25 ++-------
sw/source/ui/utlui/initui.cxx | 101 ++++++++++++++++++++++++++++++---------
5 files changed, 126 insertions(+), 95 deletions(-)
New commits:
commit 9be8cc68cda77b22259bb418b5577918ba891362
Author: Matteo Casalin <matteo.casalin at yahoo.com>
Date: Sat Aug 24 14:22:58 2013 +0200
String to OUString and hide implementation details
Change-Id: I91ca70273b2262f8aee7e7bb8000d1271e727b18
Reviewed-on: https://gerrit.libreoffice.org/5617
Reviewed-by: Michael Stahl <mstahl at redhat.com>
Tested-by: Michael Stahl <mstahl at redhat.com>
diff --git a/sw/source/ui/frmdlg/cption.cxx b/sw/source/ui/frmdlg/cption.cxx
index 201b1c7..f124f1b 100644
--- a/sw/source/ui/frmdlg/cption.cxx
+++ b/sw/source/ui/frmdlg/cption.cxx
@@ -42,17 +42,13 @@
#include <com/sun/star/text/XTextFramesSupplier.hpp>
#include <com/sun/star/text/XTextFrame.hpp>
#include <comphelper/string.hxx>
+#include "initui.hxx"
#include <frmui.hrc>
#include <globals.hrc>
#include <SwStyleNameMapper.hxx>
using namespace ::com::sun::star;
-extern String* GetOldGrfCat();
-extern String* GetOldTabCat();
-extern String* GetOldFrmCat();
-extern String* GetOldDrwCat();
-
class SwSequenceOptionDialog : public SvxStandardDialog
{
ListBox* m_pLbLevel;
@@ -144,12 +140,12 @@ SwCaptionDialog::SwCaptionDialog( Window *pParent, SwView &rV ) :
m_pCategoryBox->InsertEntry(pType->GetName());
}
- String* pString = 0;
+ OUString sString;
sal_uInt16 nPoolId = 0;
if (eType & nsSelectionType::SEL_GRF)
{
nPoolId = RES_POOLCOLL_LABEL_ABB;
- pString = ::GetOldGrfCat();
+ sString = ::GetOldGrfCat();
bCopyAttributes = sal_True;
sObjectName = rSh.GetFlyName();
//if not OLE
@@ -163,7 +159,7 @@ SwCaptionDialog::SwCaptionDialog( Window *pParent, SwView &rV ) :
else if( eType & nsSelectionType::SEL_TBL )
{
nPoolId = RES_POOLCOLL_LABEL_TABLE;
- pString = ::GetOldTabCat();
+ sString = ::GetOldTabCat();
uno::Reference< text::XTextTablesSupplier > xTables(xModel, uno::UNO_QUERY);
xNameAccess = xTables->getTextTables();
sObjectName = rSh.GetTableFmt()->GetName();
@@ -171,7 +167,7 @@ SwCaptionDialog::SwCaptionDialog( Window *pParent, SwView &rV ) :
else if( eType & nsSelectionType::SEL_FRM )
{
nPoolId = RES_POOLCOLL_LABEL_FRAME;
- pString = ::GetOldFrmCat();
+ sString = ::GetOldFrmCat();
uno::Reference< text::XTextFramesSupplier > xFrms(xModel, uno::UNO_QUERY);
xNameAccess = xFrms->getTextFrames();
sObjectName = rSh.GetFlyName();
@@ -179,17 +175,17 @@ SwCaptionDialog::SwCaptionDialog( Window *pParent, SwView &rV ) :
else if( eType == nsSelectionType::SEL_TXT )
{
nPoolId = RES_POOLCOLL_LABEL_FRAME;
- pString = ::GetOldFrmCat();
+ sString = ::GetOldFrmCat();
}
else if( eType & nsSelectionType::SEL_DRW )
{
nPoolId = RES_POOLCOLL_LABEL_DRAWING;
- pString = ::GetOldDrwCat();
+ sString = ::GetOldDrwCat();
}
if( nPoolId )
{
- if( pString && pString->Len())
- m_pCategoryBox->SetText( *pString );
+ if (!sString.isEmpty())
+ m_pCategoryBox->SetText( sString );
else
m_pCategoryBox->SetText(
SwStyleNameMapper::GetUIName( nPoolId, aEmptyStr ));
diff --git a/sw/source/ui/inc/initui.hxx b/sw/source/ui/inc/initui.hxx
index 297bb0b..c6f0b10 100644
--- a/sw/source/ui/inc/initui.hxx
+++ b/sw/source/ui/inc/initui.hxx
@@ -21,6 +21,7 @@
#include "tools/solar.h"
#include "swdllapi.h"
+#include "rtl/ustring.hxx"
#include <vector>
@@ -35,19 +36,17 @@ class SwThesaurus;
*/
extern SwThesaurus* pThes;
-extern String* pOldGrfCat;
-extern String* pOldTabCat;
-extern String* pOldFrmCat;
-
-extern String* pCurrGlosGroup;
-
-SW_DLLPUBLIC String* GetOldGrfCat();
-SW_DLLPUBLIC String* GetOldTabCat();
-SW_DLLPUBLIC String* GetOldFrmCat();
-SW_DLLPUBLIC String* GetOldDrwCat();
-
-SW_DLLPUBLIC String* GetCurrGlosGroup();
-SW_DLLPUBLIC void SetCurrGlosGroup(String* pStr);
+SW_DLLPUBLIC OUString GetOldGrfCat();
+SW_DLLPUBLIC void SetOldGrfCat(OUString sStr);
+SW_DLLPUBLIC OUString GetOldTabCat();
+SW_DLLPUBLIC void SetOldTabCat(OUString sStr);
+SW_DLLPUBLIC OUString GetOldFrmCat();
+SW_DLLPUBLIC void SetOldFrmCat(OUString sStr);
+SW_DLLPUBLIC OUString GetOldDrwCat();
+SW_DLLPUBLIC void SetOldDrwCat(OUString sStr);
+
+SW_DLLPUBLIC OUString GetCurrGlosGroup();
+SW_DLLPUBLIC void SetCurrGlosGroup(OUString sStr);
extern std::vector<String>* pDBNameList;
diff --git a/sw/source/ui/misc/glossary.cxx b/sw/source/ui/misc/glossary.cxx
index 414430d..4319fcd 100644
--- a/sw/source/ui/misc/glossary.cxx
+++ b/sw/source/ui/misc/glossary.cxx
@@ -159,16 +159,14 @@ SwNewGlosNameDlg::SwNewGlosNameDlg(Window* pParent,
------------------------------------------------------------------------*/
String SwGlossaryDlg::GetCurrGroup()
{
- if( ::GetCurrGlosGroup() && ::GetCurrGlosGroup()->Len() )
- return *(::GetCurrGlosGroup());
+ if( !::GetCurrGlosGroup().isEmpty() )
+ return ::GetCurrGlosGroup();
return SwGlossaries::GetDefName();
}
void SwGlossaryDlg::SetActGroup(const String &rGrp)
{
- if( !::GetCurrGlosGroup() )
- ::SetCurrGlosGroup( new String );
- *(::GetCurrGlosGroup()) = rGrp;
+ ::SetCurrGlosGroup(rGrp);
}
SwGlossaryDlg::SwGlossaryDlg(SfxViewFrame* pViewFrame,
@@ -200,10 +198,6 @@ SwGlossaryDlg::SwGlossaryDlg(SfxViewFrame* pViewFrame,
SvtLinguConfig aLocalLinguConfig;
- // initialise static-pointer
- if( !::GetCurrGlosGroup() )
- ::SetCurrGlosGroup(new String);
-
PopupMenu *pMenu = m_pEditBtn->GetPopupMenu();
assert(pMenu);
pMenu->SetActivateHdl(LINK(this,SwGlossaryDlg,EnableHdl));
@@ -251,11 +245,10 @@ IMPL_LINK( SwGlossaryDlg, GrpSelect, SvTreeListBox *, pBox )
return 0;
SvTreeListEntry* pParent = pBox->GetParent(pEntry) ? pBox->GetParent(pEntry) : pEntry;
GroupUserData* pGroupData = (GroupUserData*)pParent->GetUserData();
- String *pGlosGroup = ::GetCurrGlosGroup();
- (*pGlosGroup) = pGroupData->sGroupName;
- (*pGlosGroup) += GLOS_DELIM;
- (*pGlosGroup) += OUString::number(pGroupData->nPathIdx);
- pGlossaryHdl->SetCurGroup(*pGlosGroup);
+ ::SetCurrGlosGroup(pGroupData->sGroupName
+ + OUString(GLOS_DELIM)
+ + OUString::number(pGroupData->nPathIdx));
+ pGlossaryHdl->SetCurGroup(::GetCurrGlosGroup());
// set current text block
bReadOnly = pGlossaryHdl->IsReadOnly();
EnableShortName( !bReadOnly );
@@ -268,7 +261,7 @@ IMPL_LINK( SwGlossaryDlg, GrpSelect, SvTreeListBox *, pBox )
m_pShortNameEdit->SetText(*(String*)pEntry->GetUserData());
pEntry = pBox->GetParent(pEntry);
m_pInsertBtn->Enable( !bIsDocReadOnly);
- ShowAutoText(*::GetCurrGlosGroup(), m_pShortNameEdit->GetText());
+ ShowAutoText(::GetCurrGlosGroup(), m_pShortNameEdit->GetText());
}
else
ShowAutoText(aEmptyStr, aEmptyStr);
@@ -277,10 +270,10 @@ IMPL_LINK( SwGlossaryDlg, GrpSelect, SvTreeListBox *, pBox )
if( SfxRequest::HasMacroRecorder( pSh->GetView().GetViewFrame() ) )
{
SfxRequest aReq( pSh->GetView().GetViewFrame(), FN_SET_ACT_GLOSSARY );
- String sTemp(*::GetCurrGlosGroup());
+ OUString sTemp(::GetCurrGlosGroup());
// the zeroth path is not being recorded!
- if('0' == sTemp.GetToken(1, GLOS_DELIM).GetChar(0))
- sTemp = sTemp.GetToken(0, GLOS_DELIM);
+ if (sTemp.getToken(1, GLOS_DELIM).startsWith("0"))
+ sTemp = sTemp.getToken(0, GLOS_DELIM);
aReq.AppendItem(SfxStringItem(FN_SET_ACT_GLOSSARY, sTemp));
aReq.Done();
}
@@ -294,10 +287,10 @@ void SwGlossaryDlg::Apply()
if( SfxRequest::HasMacroRecorder( pSh->GetView().GetViewFrame() ) )
{
SfxRequest aReq( pSh->GetView().GetViewFrame(), FN_INSERT_GLOSSARY );
- String sTemp(*::GetCurrGlosGroup());
+ OUString sTemp(::GetCurrGlosGroup());
// the zeroth path is not being recorded!
- if('0' == sTemp.GetToken(1, GLOS_DELIM).GetChar(0))
- sTemp = sTemp.GetToken(0, GLOS_DELIM);
+ if (sTemp.getToken(1, GLOS_DELIM).startsWith("0"))
+ sTemp = sTemp.getToken(0, GLOS_DELIM);
aReq.AppendItem(SfxStringItem(FN_INSERT_GLOSSARY, sTemp));
aReq.AppendItem(SfxStringItem(FN_PARAM_1, aGlosName));
aReq.Done();
@@ -454,10 +447,10 @@ IMPL_LINK( SwGlossaryDlg, MenuHdl, Menu *, pMn )
if( SfxRequest::HasMacroRecorder( pSh->GetView().GetViewFrame() ) )
{
SfxRequest aReq(pSh->GetView().GetViewFrame(), FN_NEW_GLOSSARY);
- String sTemp(*::GetCurrGlosGroup());
+ OUString sTemp(::GetCurrGlosGroup());
// the zeroth path is not being recorded!
- if('0' == sTemp.GetToken(1, GLOS_DELIM).GetChar(0))
- sTemp = sTemp.GetToken(0, GLOS_DELIM);
+ if (sTemp.getToken(1, GLOS_DELIM).startsWith("0"))
+ sTemp = sTemp.getToken(0, GLOS_DELIM);
aReq.AppendItem(SfxStringItem(FN_NEW_GLOSSARY, sTemp));
aReq.AppendItem(SfxStringItem(FN_PARAM_1, aShortName));
aReq.AppendItem(SfxStringItem(FN_PARAM_2, aStr));
@@ -674,8 +667,8 @@ void SwGlossaryDlg::Init()
// display text block regions
const sal_uInt16 nCnt = pGlossaryHdl->GetGroupCnt();
SvTreeListEntry* pSelEntry = 0;
- const String sSelStr(::GetCurrGlosGroup()->GetToken(0, GLOS_DELIM));
- const sal_uInt16 nSelPath = static_cast< sal_uInt16 >(::GetCurrGlosGroup()->GetToken(1, GLOS_DELIM).ToInt32());
+ const OUString sSelStr(::GetCurrGlosGroup().getToken(0, GLOS_DELIM));
+ const sal_uInt16 nSelPath = static_cast< sal_uInt16 >(::GetCurrGlosGroup().getToken(1, GLOS_DELIM).toInt32());
// #i66304# - "My AutoText" comes from mytexts.bau, but should be translated
const OUString sMyAutoTextEnglish("My AutoText");
const OUString sMyAutoTextTranslated(SW_RES(STR_MY_AUTOTEXT));
@@ -1073,8 +1066,7 @@ void SwGlossaryDlg::ShowPreview()
EX_SHOW_ONLINE_LAYOUT, &aLink );
}
- if (::GetCurrGlosGroup())
- ShowAutoText(*::GetCurrGlosGroup(), m_pShortNameEdit->GetText());
+ ShowAutoText(::GetCurrGlosGroup(), m_pShortNameEdit->GetText());
};
IMPL_LINK_NOARG(SwGlossaryDlg, PreviewLoadedHdl)
diff --git a/sw/source/ui/uiview/viewdlg2.cxx b/sw/source/ui/uiview/viewdlg2.cxx
index 2594c8f..e91509d 100644
--- a/sw/source/ui/uiview/viewdlg2.cxx
+++ b/sw/source/ui/uiview/viewdlg2.cxx
@@ -37,17 +37,13 @@
#include "edtwin.hxx"
#include <SwStyleNameMapper.hxx>
+#include "initui.hxx"
#include "swabstdlg.hxx"
#include "frmui.hrc"
#include "misc.hrc"
#include "view.hrc"
-extern String* pOldGrfCat;
-extern String* pOldTabCat;
-extern String* pOldFrmCat;
-extern String* pOldDrwCat;
-
void SwView::ExecDlgExt(SfxRequest &rReq)
{
Window *pMDI = &GetViewFrame()->GetWindow();
@@ -192,25 +188,16 @@ void SwView::InsertCaption(const InsCaptionOpt *pOpt)
}
// rember category
- String** ppStr = 0;
if (eType & nsSelectionType::SEL_GRF)
- ppStr = &pOldGrfCat;
+ SetOldGrfCat(rName);
else if( eType & nsSelectionType::SEL_TBL)
- ppStr = &pOldTabCat;
+ SetOldTabCat(rName);
else if( eType & nsSelectionType::SEL_FRM)
- ppStr = &pOldFrmCat;
+ SetOldFrmCat(rName);
else if( eType == nsSelectionType::SEL_TXT)
- ppStr = &pOldFrmCat;
+ SetOldFrmCat(rName);
else if( eType & nsSelectionType::SEL_DRW)
- ppStr = &pOldDrwCat;
-
- if( ppStr )
- {
- if( !*ppStr )
- *ppStr = new String( rName );
- else
- **ppStr = rName;
- }
+ SetOldDrwCat(rName);
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/ui/utlui/initui.cxx b/sw/source/ui/utlui/initui.cxx
index 043b650..52fef74 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;
More information about the Libreoffice-commits
mailing list