summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@suse.com>2012-02-07 00:50:36 -0500
committerKohei Yoshida <kohei.yoshida@suse.com>2012-02-07 00:50:36 -0500
commit72c1b6141d590fb4479925ed8bc88b79357c2bfc (patch)
tree8d3606a61b33e2e6736dfc06010c553fc8568d91
parent9abbf7c181467e665e4b8da3561a31086b65ed08 (diff)
ScAutoFormat no longer a child of ScSortedCollection.
-rw-r--r--sc/inc/autoform.hxx56
-rw-r--r--sc/source/core/data/table4.cxx6
-rw-r--r--sc/source/core/tool/autoform.cxx145
-rw-r--r--sc/source/ui/docshell/docfunc.cxx8
-rw-r--r--sc/source/ui/inc/docfunc.hxx4
-rw-r--r--sc/source/ui/inc/scuiautofmt.hxx4
-rw-r--r--sc/source/ui/miscdlgs/scuiautofmt.cxx87
-rw-r--r--sc/source/ui/unoobj/afmtuno.cxx69
-rw-r--r--sc/source/ui/unoobj/cellsuno.cxx14
-rw-r--r--sc/source/ui/view/cellsh3.cxx4
10 files changed, 237 insertions, 160 deletions
diff --git a/sc/inc/autoform.hxx b/sc/inc/autoform.hxx
index 5ab5ac1560bc..724d63fd9f19 100644
--- a/sc/inc/autoform.hxx
+++ b/sc/inc/autoform.hxx
@@ -69,6 +69,7 @@
#include "global.hxx"
#include "zforauto.hxx"
+#include <boost/ptr_container/ptr_map.hpp>
struct ScAfVersions;
@@ -197,7 +198,7 @@ public:
};
-class SC_DLLPUBLIC ScAutoFormatData : public ScDataObject
+class SC_DLLPUBLIC ScAutoFormatData
{
private:
rtl::OUString aName;
@@ -218,11 +219,9 @@ private:
SC_DLLPRIVATE const ScAutoFormatDataField& GetField( sal_uInt16 nIndex ) const;
public:
- ScAutoFormatData();
- ScAutoFormatData( const ScAutoFormatData& rData );
- virtual ~ScAutoFormatData();
-
- virtual ScDataObject* Clone() const { return new ScAutoFormatData( *this ); }
+ ScAutoFormatData();
+ ScAutoFormatData( const ScAutoFormatData& rData );
+ ~ScAutoFormatData();
void SetName( const rtl::OUString& rName ) { aName = rName; nStrResId = USHRT_MAX; }
const rtl::OUString& GetName() const { return aName; }
@@ -260,23 +259,40 @@ public:
#endif
};
-class SC_DLLPUBLIC ScAutoFormat : public ScSortedCollection
+class SC_DLLPUBLIC ScAutoFormat
{
-private:
- bool bSaveLater;
+ typedef boost::ptr_map<rtl::OUString, ScAutoFormatData> MapType;
+ MapType maData;
+ bool mbSaveLater;
public:
- ScAutoFormat( sal_uInt16 nLim = 4, sal_uInt16 nDel = 4, sal_Bool bDup = false );
- ScAutoFormat( const ScAutoFormat& AutoFormat );
- virtual ~ScAutoFormat();
- virtual ScDataObject* Clone() const { return new ScAutoFormat( *this ); }
- ScAutoFormatData* operator[]( const sal_uInt16 nIndex ) const {return (ScAutoFormatData*)At( nIndex );}
- virtual short Compare( ScDataObject* pKey1, ScDataObject* pKey2 ) const;
- bool Load();
- bool Save();
- sal_uInt16 FindIndexPerName( const rtl::OUString& rName ) const;
- void SetSaveLater( bool bSet );
- bool IsSaveLater() const { return bSaveLater; }
+ typedef MapType::const_iterator const_iterator;
+ typedef MapType::iterator iterator;
+
+ ScAutoFormat();
+ ScAutoFormat(const ScAutoFormat& r);
+ ~ScAutoFormat();
+ bool Load();
+ bool Save();
+
+ void SetSaveLater( bool bSet );
+ bool IsSaveLater() const { return mbSaveLater; }
+
+ const ScAutoFormatData* findByIndex(size_t nIndex) const;
+ ScAutoFormatData* findByIndex(size_t nIndex);
+ const_iterator find(const ScAutoFormatData* pData) const;
+ iterator find(const ScAutoFormatData* pData);
+ const_iterator find(const rtl::OUString& rName) const;
+ iterator find(const rtl::OUString& rName);
+
+ bool insert(ScAutoFormatData* pNew);
+ void erase(const iterator& it);
+
+ size_t size() const;
+ const_iterator begin() const;
+ const_iterator end() const;
+ iterator begin();
+ iterator end();
};
diff --git a/sc/source/core/data/table4.cxx b/sc/source/core/data/table4.cxx
index dac41110b777..7990d28704c9 100644
--- a/sc/source/core/data/table4.cxx
+++ b/sc/source/core/data/table4.cxx
@@ -1591,7 +1591,8 @@ void ScTable::Fill( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
void ScTable::AutoFormatArea(SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow,
const ScPatternAttr& rAttr, sal_uInt16 nFormatNo)
{
- ScAutoFormatData* pData = (*ScGlobal::GetOrCreateAutoFormat())[nFormatNo];
+ ScAutoFormat& rFormat = *ScGlobal::GetOrCreateAutoFormat();
+ ScAutoFormatData* pData = rFormat.findByIndex(nFormatNo);
if (pData)
{
ApplyPatternArea(nStartCol, nStartRow, nEndCol, nEndRow, rAttr);
@@ -1603,7 +1604,8 @@ void ScTable::AutoFormat( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW
{
if (ValidColRow(nStartCol, nStartRow) && ValidColRow(nEndCol, nEndRow))
{
- ScAutoFormatData* pData = (*ScGlobal::GetOrCreateAutoFormat())[nFormatNo];
+ ScAutoFormat& rFormat = *ScGlobal::GetOrCreateAutoFormat();
+ ScAutoFormatData* pData = rFormat.findByIndex(nFormatNo);
if (pData)
{
ScPatternAttr* pPatternAttrs[16];
diff --git a/sc/source/core/tool/autoform.cxx b/sc/source/core/tool/autoform.cxx
index 76dc8b5d7f02..515110571fd3 100644
--- a/sc/source/core/tool/autoform.cxx
+++ b/sc/source/core/tool/autoform.cxx
@@ -495,7 +495,6 @@ ScAutoFormatData::ScAutoFormatData()
}
ScAutoFormatData::ScAutoFormatData( const ScAutoFormatData& rData ) :
- ScDataObject(),
aName( rData.aName ),
nStrResId( rData.nStrResId ),
bIncludeFont( rData.bIncludeFont ),
@@ -889,9 +888,8 @@ bool ScAutoFormatData::Save(SvStream& rStream)
//---------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------
-ScAutoFormat::ScAutoFormat(sal_uInt16 nLim, sal_uInt16 nDel, sal_Bool bDup):
- ScSortedCollection (nLim, nDel, bDup),
- bSaveLater (false)
+ScAutoFormat::ScAutoFormat() :
+ mbSaveLater(false)
{
// create default autoformat
ScAutoFormatData* pData = new ScAutoFormatData;
@@ -971,38 +969,113 @@ ScAutoFormat::ScAutoFormat(sal_uInt16 nLim, sal_uInt16 nDel, sal_Bool bDup):
}
}
- Insert(pData);
+ insert(pData);
}
-ScAutoFormat::ScAutoFormat(const ScAutoFormat& rAutoFormat) :
- ScSortedCollection (rAutoFormat),
- bSaveLater (false)
-{}
+ScAutoFormat::ScAutoFormat(const ScAutoFormat& r) :
+ maData(r.maData),
+ mbSaveLater(false) {}
ScAutoFormat::~ScAutoFormat()
{
// Bei Aenderungen per StarOne wird nicht sofort gespeichert, sondern zuerst nur
// das SaveLater Flag gesetzt. Wenn das Flag noch gesetzt ist, jetzt speichern.
- if (bSaveLater)
+ if (mbSaveLater)
Save();
}
void ScAutoFormat::SetSaveLater( bool bSet )
{
- bSaveLater = bSet;
+ mbSaveLater = bSet;
}
-short ScAutoFormat::Compare(ScDataObject* pKey1, ScDataObject* pKey2) const
+const ScAutoFormatData* ScAutoFormat::findByIndex(size_t nIndex) const
{
- rtl::OUString aStr1 = ((ScAutoFormatData*)pKey1)->GetName();
- rtl::OUString aStr2 = ((ScAutoFormatData*)pKey2)->GetName();
- String aStrStandard = ScGlobal::GetRscString(STR_STYLENAME_STANDARD);
- if ( ScGlobal::GetpTransliteration()->isEqual( aStr1, aStrStandard ) )
- return -1;
- if ( ScGlobal::GetpTransliteration()->isEqual( aStr2, aStrStandard ) )
- return 1;
- return (short) ScGlobal::GetpTransliteration()->compareString( aStr1, aStr2 );
+ if (nIndex >= maData.size())
+ return NULL;
+
+ MapType::const_iterator it = maData.begin();
+ std::advance(it, nIndex);
+ return it->second;
+}
+
+ScAutoFormatData* ScAutoFormat::findByIndex(size_t nIndex)
+{
+ if (nIndex >= maData.size())
+ return NULL;
+
+ MapType::iterator it = maData.begin();
+ std::advance(it, nIndex);
+ return it->second;
+}
+
+ScAutoFormat::const_iterator ScAutoFormat::find(const ScAutoFormatData* pData) const
+{
+ MapType::const_iterator it = maData.begin(), itEnd = maData.end();
+ for (; it != itEnd; ++it)
+ {
+ if (it->second == pData)
+ return it;
+ }
+ return itEnd;
+}
+
+ScAutoFormat::iterator ScAutoFormat::find(const ScAutoFormatData* pData)
+{
+ MapType::iterator it = maData.begin(), itEnd = maData.end();
+ for (; it != itEnd; ++it)
+ {
+ if (it->second == pData)
+ return it;
+ }
+ return itEnd;
+}
+
+ScAutoFormat::const_iterator ScAutoFormat::find(const rtl::OUString& rName) const
+{
+ return maData.find(rName);
+}
+
+ScAutoFormat::iterator ScAutoFormat::find(const rtl::OUString& rName)
+{
+ return maData.find(rName);
+}
+
+bool ScAutoFormat::insert(ScAutoFormatData* pNew)
+{
+ rtl::OUString aName = pNew->GetName();
+ return maData.insert(aName, pNew).second;
+}
+
+void ScAutoFormat::erase(const iterator& it)
+{
+ maData.erase(it);
+}
+
+size_t ScAutoFormat::size() const
+{
+ return maData.size();
+}
+
+ScAutoFormat::const_iterator ScAutoFormat::begin() const
+{
+ return maData.begin();
+}
+
+ScAutoFormat::const_iterator ScAutoFormat::end() const
+{
+ return maData.end();
+}
+
+ScAutoFormat::iterator ScAutoFormat::begin()
+{
+ return maData.begin();
+}
+
+ScAutoFormat::iterator ScAutoFormat::end()
+{
+ return maData.end();
}
bool ScAutoFormat::Load()
@@ -1059,7 +1132,7 @@ bool ScAutoFormat::Load()
{
pData = new ScAutoFormatData();
bRet = pData->Load(rStream, aVersions);
- Insert(pData);
+ insert(pData);
}
}
#ifdef READ_OLDVERS
@@ -1096,7 +1169,7 @@ bool ScAutoFormat::Load()
{
pData = new ScAutoFormatData();
bRet = pData->LoadOld( rStream, aVersions );
- Insert( pData );
+ insert(pData);
}
}
else
@@ -1105,7 +1178,7 @@ bool ScAutoFormat::Load()
#endif
}
}
- bSaveLater = false;
+ mbSaveLater = false;
return bRet;
}
@@ -1137,32 +1210,18 @@ bool ScAutoFormat::Save()
bRet = (rStream.GetError() == 0);
//-----------------------------------------------------------
- rStream << (sal_uInt16)(nCount - 1);
+ rStream << (sal_uInt16)(maData.size() - 1);
bRet = (rStream.GetError() == 0);
- for (sal_uInt16 i=1; bRet && (i < nCount); i++)
- bRet = ((ScAutoFormatData*)pItems[i])->Save(rStream);
+ MapType::iterator it = maData.begin(), itEnd = maData.end();
+ for (++it; bRet && it != itEnd; ++it) // Skip the first item.
+ bRet = it->second->Save(rStream);
+
rStream.Flush();
aMedium.Commit();
}
- bSaveLater = false;
+ mbSaveLater = false;
return bRet;
}
-sal_uInt16 ScAutoFormat::FindIndexPerName( const rtl::OUString& rName ) const
-{
- for( sal_uInt16 i=0; i<nCount ; i++ )
- {
- ScAutoFormatData* pItem = (ScAutoFormatData*)pItems[i];
-
- if (pItem->GetName().equals(rName))
- return i;
- }
-
- return 0;
-}
-
-
-
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/docshell/docfunc.cxx b/sc/source/ui/docshell/docfunc.cxx
index 94dd497dfd65..a211534b0c9f 100644
--- a/sc/source/ui/docshell/docfunc.cxx
+++ b/sc/source/ui/docshell/docfunc.cxx
@@ -3667,8 +3667,8 @@ sal_Bool ScDocFunc::ChangeIndent( const ScMarkData& rMark, sal_Bool bIncrement,
return sal_True;
}
-sal_Bool ScDocFunc::AutoFormat( const ScRange& rRange, const ScMarkData* pTabMark,
- sal_uInt16 nFormatNo, sal_Bool bRecord, sal_Bool bApi )
+bool ScDocFunc::AutoFormat( const ScRange& rRange, const ScMarkData* pTabMark,
+ sal_uInt16 nFormatNo, bool bRecord, bool bApi )
{
ScDocShellModificator aModificator( rDocShell );
@@ -3694,11 +3694,11 @@ sal_Bool ScDocFunc::AutoFormat( const ScRange& rRange, const ScMarkData* pTabMar
ScAutoFormat* pAutoFormat = ScGlobal::GetOrCreateAutoFormat();
ScEditableTester aTester( pDoc, nStartCol,nStartRow, nEndCol,nEndRow, aMark );
- if ( nFormatNo < pAutoFormat->GetCount() && aTester.IsEditable() )
+ if ( nFormatNo < pAutoFormat->size() && aTester.IsEditable() )
{
WaitObject aWait( rDocShell.GetActiveDialogParent() );
- sal_Bool bSize = (*pAutoFormat)[nFormatNo]->GetIncludeWidthHeight();
+ bool bSize = pAutoFormat->findByIndex(nFormatNo)->GetIncludeWidthHeight();
SCTAB nTabCount = pDoc->GetTableCount();
ScDocument* pUndoDoc = NULL;
diff --git a/sc/source/ui/inc/docfunc.hxx b/sc/source/ui/inc/docfunc.hxx
index a339b940d445..63cbc3975f66 100644
--- a/sc/source/ui/inc/docfunc.hxx
+++ b/sc/source/ui/inc/docfunc.hxx
@@ -151,8 +151,8 @@ public:
sal_Bool ClearItems( const ScMarkData& rMark, const sal_uInt16* pWhich, sal_Bool bApi );
sal_Bool ChangeIndent( const ScMarkData& rMark, sal_Bool bIncrement, sal_Bool bApi );
- sal_Bool AutoFormat( const ScRange& rRange, const ScMarkData* pTabMark,
- sal_uInt16 nFormatNo, sal_Bool bRecord, sal_Bool bApi );
+ bool AutoFormat( const ScRange& rRange, const ScMarkData* pTabMark,
+ sal_uInt16 nFormatNo, bool bRecord, bool bApi );
sal_Bool EnterMatrix( const ScRange& rRange, const ScMarkData* pTabMark,
const ScTokenArray* pTokenArray,
diff --git a/sc/source/ui/inc/scuiautofmt.hxx b/sc/source/ui/inc/scuiautofmt.hxx
index 654779673ed6..4a3a441bed81 100644
--- a/sc/source/ui/inc/scuiautofmt.hxx
+++ b/sc/source/ui/inc/scuiautofmt.hxx
@@ -70,8 +70,8 @@ private:
ScAutoFormat* pFormat;
const ScAutoFormatData* pSelFmtData;
sal_uInt16 nIndex;
- sal_Bool bCoreDataChanged;
- sal_Bool bFmtInserted;
+ bool bCoreDataChanged;
+ bool bFmtInserted;
void Init ();
void UpdateChecks ();
diff --git a/sc/source/ui/miscdlgs/scuiautofmt.cxx b/sc/source/ui/miscdlgs/scuiautofmt.cxx
index 8f8ef237ffb4..074cbe392185 100644
--- a/sc/source/ui/miscdlgs/scuiautofmt.cxx
+++ b/sc/source/ui/miscdlgs/scuiautofmt.cxx
@@ -104,7 +104,8 @@ ScAutoFormatDlg::ScAutoFormatDlg( Window* pParent,
bFmtInserted ( false )
{
Init();
- pWndPreview->NotifyChange( (*pFormat)[0] );
+ ScAutoFormat::iterator it = pFormat->begin();
+ pWndPreview->NotifyChange(it->second);
FreeResource();
}
@@ -119,9 +120,6 @@ ScAutoFormatDlg::~ScAutoFormatDlg()
void ScAutoFormatDlg::Init()
{
- sal_uInt16 nCount;
- String aEntry;
-
aLbFormat .SetSelectHdl( LINK( this, ScAutoFormatDlg, SelFmtHdl ) );
aBtnNumFormat.SetClickHdl ( LINK( this, ScAutoFormatDlg, CheckHdl ) );
aBtnBorder .SetClickHdl ( LINK( this, ScAutoFormatDlg, CheckHdl ) );
@@ -145,15 +143,11 @@ void ScAutoFormatDlg::Init()
aBtnMore.AddWindow( &aBtnAdjust );
aBtnMore.AddWindow( &aFlFormatting );
- nCount = pFormat->GetCount();
-
- for ( sal_uInt16 i = 0; i < nCount; i++ )
- {
- aEntry = ((*pFormat)[i])->GetName();
- aLbFormat.InsertEntry( aEntry );
- }
+ ScAutoFormat::const_iterator it = pFormat->begin(), itEnd = pFormat->end();
+ for (; it != itEnd; ++it)
+ aLbFormat.InsertEntry(it->second->GetName());
- if ( nCount == 1 )
+ if (pFormat->size() == 1)
aBtnRemove.Disable();
aLbFormat.SelectEntryPos( 0 );
@@ -167,7 +161,7 @@ void ScAutoFormatDlg::Init()
{
aBtnAdd.Disable();
aBtnRemove.Disable();
- bFmtInserted = sal_True;
+ bFmtInserted = true;
}
}
@@ -175,7 +169,7 @@ void ScAutoFormatDlg::Init()
void ScAutoFormatDlg::UpdateChecks()
{
- ScAutoFormatData* pData = (*pFormat)[nIndex];
+ const ScAutoFormatData* pData = pFormat->findByIndex(nIndex);
aBtnNumFormat.Check( pData->GetIncludeValueFormat() );
aBtnBorder .Check( pData->GetIncludeFrame() );
@@ -217,8 +211,8 @@ IMPL_LINK_INLINE_END( ScAutoFormatDlg, DblClkHdl, void *, EMPTYARG )
IMPL_LINK( ScAutoFormatDlg, CheckHdl, Button *, pBtn )
{
- ScAutoFormatData* pData = (*pFormat)[nIndex];
- sal_Bool bCheck = ((CheckBox*)pBtn)->IsChecked();
+ ScAutoFormatData* pData = pFormat->findByIndex(nIndex);
+ bool bCheck = ((CheckBox*)pBtn)->IsChecked();
if ( pBtn == &aBtnNumFormat )
pData->SetIncludeValueFormat( bCheck );
@@ -236,7 +230,7 @@ IMPL_LINK( ScAutoFormatDlg, CheckHdl, Button *, pBtn )
if ( !bCoreDataChanged )
{
aBtnCancel.SetText( aStrClose );
- bCoreDataChanged = sal_True;
+ bCoreDataChanged = true;
}
pWndPreview->NotifyChange( pData );
@@ -253,7 +247,7 @@ IMPL_LINK( ScAutoFormatDlg, AddHdl, void *, EMPTYARG )
String aStrStandard( SfxResId(STR_STANDARD) );
rtl::OUString aFormatName;
ScStringInputDlg* pDlg;
- sal_Bool bOk = false;
+ bool bOk = false;
while ( !bOk )
{
@@ -273,20 +267,21 @@ IMPL_LINK( ScAutoFormatDlg, AddHdl, void *, EMPTYARG )
= new ScAutoFormatData( *pSelFmtData );
pNewData->SetName( aFormatName );
- bFmtInserted = pFormat->Insert( pNewData );
+ bFmtInserted = pFormat->insert(pNewData);
if ( bFmtInserted )
{
- sal_uInt16 nAt = pFormat->IndexOf( pNewData );
-
- aLbFormat.InsertEntry( aFormatName, nAt );
+ ScAutoFormat::const_iterator it = pFormat->find(pNewData);
+ ScAutoFormat::const_iterator itBeg = pFormat->begin();
+ size_t nPos = std::distance(itBeg, it);
+ aLbFormat.InsertEntry(aFormatName, nPos);
aLbFormat.SelectEntry( aFormatName );
aBtnAdd.Disable();
if ( !bCoreDataChanged )
{
aBtnCancel.SetText( aStrClose );
- bCoreDataChanged = sal_True;
+ bCoreDataChanged = true;
}
SelFmtHdl( 0 );
@@ -340,10 +335,12 @@ IMPL_LINK( ScAutoFormatDlg, RemoveHdl, void *, EMPTYARG )
if ( !bCoreDataChanged )
{
aBtnCancel.SetText( aStrClose );
- bCoreDataChanged = sal_True;
+ bCoreDataChanged = true;
}
- pFormat->AtFree( nIndex ); // in der Core loeschen
+ ScAutoFormat::iterator it = pFormat->begin();
+ std::advance(it, nIndex);
+ pFormat->erase(it);
nIndex--;
SelFmtHdl( 0 );
@@ -371,57 +368,57 @@ IMPL_LINK( ScAutoFormatDlg, RenameHdl, void *, EMPTYARG )
HID_SC_REN_AFMT_DLG, HID_SC_REN_AFMT_NAME );
if( pDlg->Execute() == RET_OK )
{
- sal_Bool bFmtRenamed = false;
+ bool bFmtRenamed = false;
pDlg->GetInputString( aFormatName );
- sal_uInt16 n;
if (!aFormatName.isEmpty())
{
- for( n = 0; n < pFormat->GetCount(); ++n )
+ ScAutoFormat::iterator it = pFormat->begin(), itEnd = pFormat->end();
+ for (; it != itEnd; ++it)
{
- aEntry = (*pFormat)[n]->GetName();
+ aEntry = it->second->GetName();
if (aFormatName.equals(aEntry))
break;
}
- if( n >= pFormat->GetCount() )
+ if (it == itEnd)
{
// Format mit dem Namen noch nicht vorhanden, also
// umbenennen
aLbFormat.RemoveEntry(nIndex );
- ScAutoFormatData* p=(*pFormat)[ nIndex ];
+ const ScAutoFormatData* p = pFormat->findByIndex(nIndex);
ScAutoFormatData* pNewData
= new ScAutoFormatData(*p);
- pFormat->AtFree( nIndex );
+ it = pFormat->begin();
+ std::advance(it, nIndex);
+ pFormat->erase(it);
pNewData->SetName( aFormatName );
- pFormat->Insert( pNewData);
-
- sal_uInt16 nCount = pFormat->GetCount();
+ pFormat->insert(pNewData);
aLbFormat.SetUpdateMode(false);
aLbFormat.Clear();
- for ( sal_uInt16 i = 0; i < nCount; i++ )
+ for (it = pFormat->begin(); it != itEnd; ++it)
{
- aEntry = ((*pFormat)[i])->GetName();
+ aEntry = it->second->GetName();
aLbFormat.InsertEntry( aEntry );
}
- aLbFormat.SetUpdateMode( sal_True);
+ aLbFormat.SetUpdateMode(true);
aLbFormat.SelectEntry( aFormatName);
if ( !bCoreDataChanged )
{
aBtnCancel.SetText( aStrClose );
- bCoreDataChanged = sal_True;
+ bCoreDataChanged = true;
}
SelFmtHdl( 0 );
- bOk = sal_True;
- bFmtRenamed = sal_True;
+ bOk = true;
+ bFmtRenamed = true;
}
}
if( !bFmtRenamed )
@@ -433,7 +430,7 @@ IMPL_LINK( ScAutoFormatDlg, RenameHdl, void *, EMPTYARG )
}
}
else
- bOk = sal_True;
+ bOk = true;
delete pDlg;
}
@@ -458,7 +455,8 @@ IMPL_LINK( ScAutoFormatDlg, SelFmtHdl, void *, EMPTYARG )
aBtnRemove.Enable();
}
- pWndPreview->NotifyChange( (*pFormat)[nIndex] );
+ ScAutoFormatData* p = pFormat->findByIndex(nIndex);
+ pWndPreview->NotifyChange(p);
return 0;
}
@@ -467,7 +465,8 @@ IMPL_LINK( ScAutoFormatDlg, SelFmtHdl, void *, EMPTYARG )
rtl::OUString ScAutoFormatDlg::GetCurrFormatName()
{
- return ((*pFormat)[nIndex])->GetName();
+ const ScAutoFormatData* p = pFormat->findByIndex(nIndex);
+ return p ? p->GetName() : rtl::OUString();
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/unoobj/afmtuno.cxx b/sc/source/ui/unoobj/afmtuno.cxx
index e29fa2db7442..125a78874320 100644
--- a/sc/source/ui/unoobj/afmtuno.cxx
+++ b/sc/source/ui/unoobj/afmtuno.cxx
@@ -164,15 +164,16 @@ SC_SIMPLE_SERVICE_INFO( ScAutoFormatsObj, "ScAutoFormatsObj", SCAUTOFORMATSOBJ_S
//------------------------------------------------------------------------
-bool lcl_FindAutoFormatIndex( const ScAutoFormat& rFormats, const String& rName, sal_uInt16& rOutIndex )
+bool lcl_FindAutoFormatIndex( const ScAutoFormat& rFormats, const rtl::OUString& rName, sal_uInt16& rOutIndex )
{
- sal_uInt16 nCount = rFormats.GetCount();
- for( sal_uInt16 nPos=0; nPos<nCount; nPos++ )
+ ScAutoFormat::const_iterator itBeg = rFormats.begin(), itEnd = rFormats.end();
+ for (ScAutoFormat::const_iterator it = itBeg; it != itEnd; ++it)
{
- ScAutoFormatData* pEntry = rFormats[nPos];
+ const ScAutoFormatData* pEntry = it->second;
const rtl::OUString& aEntryName = pEntry->GetName();
if ( aEntryName.equals(rName) )
{
+ size_t nPos = std::distance(itBeg, it);
rOutIndex = nPos;
return true;
}
@@ -220,7 +221,7 @@ uno::Sequence<rtl::OUString> ScAutoFormatsObj::getSupportedServiceNames_Static()
ScAutoFormatObj* ScAutoFormatsObj::GetObjectByIndex_Impl(sal_uInt16 nIndex)
{
- if (nIndex < ScGlobal::GetOrCreateAutoFormat()->GetCount())
+ if (nIndex < ScGlobal::GetOrCreateAutoFormat()->size())
return new ScAutoFormatObj(nIndex);
return NULL; // falscher Index
@@ -260,7 +261,7 @@ void SAL_CALL ScAutoFormatsObj::insertByName( const rtl::OUString& aName, const
ScAutoFormatData* pNew = new ScAutoFormatData();
pNew->SetName( aNameStr );
- if (pFormats->Insert( pNew ))
+ if (pFormats->insert(pNew))
{
//! Notify fuer andere Objekte
pFormats->Save(); // sofort speichern
@@ -274,7 +275,6 @@ void SAL_CALL ScAutoFormatsObj::insertByName( const rtl::OUString& aName, const
}
else
{
- delete pNew;
OSL_FAIL("AutoFormat konnte nicht eingefuegt werden");
throw uno::RuntimeException();
}
@@ -311,10 +311,10 @@ void SAL_CALL ScAutoFormatsObj::removeByName( const rtl::OUString& aName )
String aNameStr(aName);
ScAutoFormat* pFormats = ScGlobal::GetOrCreateAutoFormat();
- sal_uInt16 nIndex;
- if (lcl_FindAutoFormatIndex( *pFormats, aNameStr, nIndex ))
+ ScAutoFormat::iterator it = pFormats->find(aName);
+ if (it != pFormats->end())
{
- pFormats->AtFree( nIndex );
+ pFormats->erase(it);
//! Notify fuer andere Objekte
pFormats->Save(); // sofort speichern
@@ -339,7 +339,7 @@ uno::Reference<container::XEnumeration> SAL_CALL ScAutoFormatsObj::createEnumera
sal_Int32 SAL_CALL ScAutoFormatsObj::getCount() throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
- return ScGlobal::GetOrCreateAutoFormat()->GetCount();
+ return ScGlobal::GetOrCreateAutoFormat()->size();
}
uno::Any SAL_CALL ScAutoFormatsObj::getByIndex( sal_Int32 nIndex )
@@ -384,12 +384,12 @@ uno::Sequence<rtl::OUString> SAL_CALL ScAutoFormatsObj::getElementNames()
SolarMutexGuard aGuard;
ScAutoFormat* pFormats = ScGlobal::GetOrCreateAutoFormat();
String aName;
- sal_uInt16 nCount = pFormats->GetCount();
- uno::Sequence<rtl::OUString> aSeq(nCount);
+ uno::Sequence<rtl::OUString> aSeq(pFormats->size());
rtl::OUString* pAry = aSeq.getArray();
- for (sal_uInt16 i=0; i<nCount; i++)
+ ScAutoFormat::const_iterator it = pFormats->begin(), itEnd = pFormats->end();
+ for (size_t i = 0; it != itEnd; ++it, ++i)
{
- pAry[i] = (*pFormats)[i]->GetName();
+ pAry[i] = it->second->GetName();
}
return aSeq;
}
@@ -536,8 +536,8 @@ rtl::OUString SAL_CALL ScAutoFormatObj::getName() throw(uno::RuntimeException)
{
SolarMutexGuard aGuard;
ScAutoFormat* pFormats = ScGlobal::GetOrCreateAutoFormat();
- if (IsInserted() && nFormatIndex < pFormats->GetCount())
- return (*pFormats)[nFormatIndex]->GetName();
+ if (IsInserted() && nFormatIndex < pFormats->size())
+ return pFormats->findByIndex(nFormatIndex)->GetName();
return rtl::OUString();
}
@@ -550,26 +550,29 @@ void SAL_CALL ScAutoFormatObj::setName( const rtl::OUString& aNewName )
ScAutoFormat* pFormats = ScGlobal::GetOrCreateAutoFormat();
sal_uInt16 nDummy;
- if (IsInserted() && nFormatIndex < pFormats->GetCount() &&
- !lcl_FindAutoFormatIndex( *pFormats, aNewString, nDummy ))
+ if (IsInserted() && nFormatIndex < pFormats->size() &&
+ !lcl_FindAutoFormatIndex( *pFormats, aNewName, nDummy ))
{
- ScAutoFormatData* pData = (*pFormats)[nFormatIndex];
+ ScAutoFormat::iterator it = pFormats->begin();
+ std::advance(it, nFormatIndex);
+ ScAutoFormatData* pData = it->second;
OSL_ENSURE(pData,"AutoFormat Daten nicht da");
ScAutoFormatData* pNew = new ScAutoFormatData(*pData);
pNew->SetName( aNewString );
- pFormats->AtFree( nFormatIndex );
- if (pFormats->Insert( pNew ))
+ pFormats->erase(it);
+ if (pFormats->insert(pNew))
{
- nFormatIndex = pFormats->IndexOf( pNew ); // ist evtl. anders einsortiert...
+ it = pFormats->find(pNew);
+ ScAutoFormat::iterator itBeg = pFormats->begin();
+ nFormatIndex = std::distance(itBeg, it);
//! Notify fuer andere Objekte
- pFormats->SetSaveLater(sal_True);
+ pFormats->SetSaveLater(true);
}
else
{
- delete pNew;
OSL_FAIL("AutoFormat konnte nicht eingefuegt werden");
nFormatIndex = 0; //! alter Index ist ungueltig
}
@@ -599,9 +602,9 @@ void SAL_CALL ScAutoFormatObj::setPropertyValue(
{
SolarMutexGuard aGuard;
ScAutoFormat* pFormats = ScGlobal::GetOrCreateAutoFormat();
- if (IsInserted() && nFormatIndex < pFormats->GetCount())
+ if (IsInserted() && nFormatIndex < pFormats->size())
{
- ScAutoFormatData* pData = (*pFormats)[nFormatIndex];
+ ScAutoFormatData* pData = pFormats->findByIndex(nFormatIndex);
OSL_ENSURE(pData,"AutoFormat Daten nicht da");
String aPropString(aPropertyName);
@@ -634,9 +637,9 @@ uno::Any SAL_CALL ScAutoFormatObj::getPropertyValue( const rtl::OUString& aPrope
uno::Any aAny;
ScAutoFormat* pFormats = ScGlobal::GetOrCreateAutoFormat();
- if (IsInserted() && nFormatIndex < pFormats->GetCount())
+ if (IsInserted() && nFormatIndex < pFormats->size())
{
- ScAutoFormatData* pData = (*pFormats)[nFormatIndex];
+ ScAutoFormatData* pData = pFormats->findByIndex(nFormatIndex);
OSL_ENSURE(pData,"AutoFormat Daten nicht da");
sal_Bool bValue;
@@ -707,9 +710,9 @@ void SAL_CALL ScAutoFormatFieldObj::setPropertyValue(
const SfxItemPropertySimpleEntry* pEntry =
aPropSet.getPropertyMap().getByName( aPropertyName );
- if ( pEntry && pEntry->nWID && nFormatIndex < pFormats->GetCount() )
+ if ( pEntry && pEntry->nWID && nFormatIndex < pFormats->size() )
{
- ScAutoFormatData* pData = (*pFormats)[nFormatIndex];
+ ScAutoFormatData* pData = pFormats->findByIndex(nFormatIndex);
if ( IsScItemWid( pEntry->nWID ) )
{
@@ -797,9 +800,9 @@ uno::Any SAL_CALL ScAutoFormatFieldObj::getPropertyValue( const rtl::OUString& a
const SfxItemPropertySimpleEntry* pEntry =
aPropSet.getPropertyMap().getByName( aPropertyName );
- if ( pEntry && pEntry->nWID && nFormatIndex < pFormats->GetCount() )
+ if ( pEntry && pEntry->nWID && nFormatIndex < pFormats->size() )
{
- const ScAutoFormatData* pData = (*pFormats)[nFormatIndex];
+ const ScAutoFormatData* pData = pFormats->findByIndex(nFormatIndex);
if ( IsScItemWid( pEntry->nWID ) )
{
diff --git a/sc/source/ui/unoobj/cellsuno.cxx b/sc/source/ui/unoobj/cellsuno.cxx
index 65f2dc49c234..de344e1b151f 100644
--- a/sc/source/ui/unoobj/cellsuno.cxx
+++ b/sc/source/ui/unoobj/cellsuno.cxx
@@ -5484,17 +5484,13 @@ void SAL_CALL ScCellRangeObj::autoFormat( const rtl::OUString& aName )
if ( pDocSh )
{
ScAutoFormat* pAutoFormat = ScGlobal::GetOrCreateAutoFormat();
- sal_uInt16 nCount = pAutoFormat->GetCount();
- sal_uInt16 nIndex;
- for (nIndex=0; nIndex<nCount; nIndex++)
- {
- if ((*pAutoFormat)[nIndex]->GetName().equals(aName)) //! Case-insensitiv ???
- break;
- }
- if (nIndex<nCount)
+ ScAutoFormat::const_iterator it = pAutoFormat->find(aName);
+ if (it != pAutoFormat->end())
{
+ ScAutoFormat::const_iterator itBeg = pAutoFormat->begin();
+ size_t nIndex = std::distance(itBeg, it);
ScDocFunc aFunc(*pDocSh);
- aFunc.AutoFormat( aRange, NULL, nIndex, sal_True, sal_True );
+ aFunc.AutoFormat(aRange, NULL, nIndex, true, true);
}
else
throw lang::IllegalArgumentException();
diff --git a/sc/source/ui/view/cellsh3.cxx b/sc/source/ui/view/cellsh3.cxx
index a9950c8213ca..f90c7c6b21c7 100644
--- a/sc/source/ui/view/cellsh3.cxx
+++ b/sc/source/ui/view/cellsh3.cxx
@@ -817,7 +817,9 @@ void ScCellShell::Execute( SfxRequest& rReq )
{
const SfxStringItem& rNameItem = (const SfxStringItem&)pReqArgs->Get( SID_AUTOFORMAT );
ScAutoFormat* pFormat = ScGlobal::GetOrCreateAutoFormat();
- sal_uInt16 nIndex = pFormat->FindIndexPerName( rNameItem.GetValue() );
+ ScAutoFormat::const_iterator it = pFormat->find(rNameItem.GetValue());
+ ScAutoFormat::const_iterator itBeg = pFormat->begin();
+ size_t nIndex = std::distance(itBeg, it);
pTabViewShell->AutoFormat( nIndex );