Replace Table with std::set.

This commit is contained in:
Marcel Metz
2012-01-09 11:53:48 +01:00
committed by Stephan Bergmann
parent 9ec31184f7
commit 04292aee15

View File

@@ -27,6 +27,7 @@
************************************************************************/ ************************************************************************/
#include <set>
#include <comphelper/string.hxx> #include <comphelper/string.hxx>
#include <tools/table.hxx> #include <tools/table.hxx>
#include <tools/debug.hxx> #include <tools/debug.hxx>
@@ -44,15 +45,7 @@
// ======================================================================= // =======================================================================
inline sal_uLong ImplCreateKey( sal_uInt16 nPos ) static void lcl_GetSelectedEntries( ::std::set< sal_uInt16 >& rSelectedPos, const XubString& rText, xub_Unicode cTokenSep, const ImplEntryList* pEntryList )
{
// Key = Pos+1, wegen Pos 0
return nPos+1;
}
// -----------------------------------------------------------------------
static void lcl_GetSelectedEntries( Table& rSelectedPos, const XubString& rText, xub_Unicode cTokenSep, const ImplEntryList* pEntryList )
{ {
for (xub_StrLen n = comphelper::string::getTokenCount(rText, cTokenSep); n;) for (xub_StrLen n = comphelper::string::getTokenCount(rText, cTokenSep); n;)
{ {
@@ -60,7 +53,7 @@ static void lcl_GetSelectedEntries( Table& rSelectedPos, const XubString& rText,
aToken = comphelper::string::strip(aToken, ' '); aToken = comphelper::string::strip(aToken, ' ');
sal_uInt16 nPos = pEntryList->FindEntry( aToken ); sal_uInt16 nPos = pEntryList->FindEntry( aToken );
if ( nPos != LISTBOX_ENTRY_NOTFOUND ) if ( nPos != LISTBOX_ENTRY_NOTFOUND )
rSelectedPos.Insert( ImplCreateKey( nPos ), (void*)sal_IntPtr(1L) ); rSelectedPos.insert( nPos );
} }
} }
@@ -417,13 +410,13 @@ IMPL_LINK( ComboBox, ImplSelectHdl, void*, EMPTYARG )
} }
// Fehlende Eintraege anhaengen... // Fehlende Eintraege anhaengen...
Table aSelInText; ::std::set< sal_uInt16 > aSelInText;
lcl_GetSelectedEntries( aSelInText, aText, mcMultiSep, mpImplLB->GetEntryList() ); lcl_GetSelectedEntries( aSelInText, aText, mcMultiSep, mpImplLB->GetEntryList() );
sal_uInt16 nSelectedEntries = mpImplLB->GetEntryList()->GetSelectEntryCount(); sal_uInt16 nSelectedEntries = mpImplLB->GetEntryList()->GetSelectEntryCount();
for ( sal_uInt16 n = 0; n < nSelectedEntries; n++ ) for ( sal_uInt16 n = 0; n < nSelectedEntries; n++ )
{ {
sal_uInt16 nP = mpImplLB->GetEntryList()->GetSelectEntryPos( n ); sal_uInt16 nP = mpImplLB->GetEntryList()->GetSelectEntryPos( n );
if ( !aSelInText.IsKeyValid( ImplCreateKey( nP ) ) ) if ( !aSelInText.count( nP ) )
{ {
if ( aText.Len() && (aText.GetChar( aText.Len()-1 ) != mcMultiSep) ) if ( aText.Len() && (aText.GetChar( aText.Len()-1 ) != mcMultiSep) )
aText += mcMultiSep; aText += mcMultiSep;
@@ -952,10 +945,10 @@ void ComboBox::ImplUpdateFloatSelection()
} }
else else
{ {
Table aSelInText; ::std::set< sal_uInt16 > aSelInText;
lcl_GetSelectedEntries( aSelInText, mpSubEdit->GetText(), mcMultiSep, mpImplLB->GetEntryList() ); lcl_GetSelectedEntries( aSelInText, mpSubEdit->GetText(), mcMultiSep, mpImplLB->GetEntryList() );
for ( sal_uInt16 n = 0; n < mpImplLB->GetEntryList()->GetEntryCount(); n++ ) for ( sal_uInt16 n = 0; n < mpImplLB->GetEntryList()->GetEntryCount(); n++ )
mpImplLB->SelectEntry( n, aSelInText.IsKeyValid( ImplCreateKey( n ) ) ); mpImplLB->SelectEntry( n, aSelInText.count( n ) );
} }
mpImplLB->SetCallSelectionChangedHdl( sal_True ); mpImplLB->SetCallSelectionChangedHdl( sal_True );
} }