Kaydet (Commit) 4ee77518 authored tarafından Matteo Casalin's avatar Matteo Casalin Kaydeden (comit) Michael Stahl

SvTabListBox::GetToken: sal_Unicode* to OUString + OUString::getToken

Change-Id: I1006b33aaf4ba31cfbd38dd2a39b06cb7a381af6
Reviewed-on: https://gerrit.libreoffice.org/5461Reviewed-by: 's avatarMichael Stahl <mstahl@redhat.com>
Tested-by: 's avatarMichael Stahl <mstahl@redhat.com>
üst 4f144701
......@@ -53,7 +53,7 @@ private:
protected:
SvTreeListEntry* pViewParent;
static const sal_Unicode* GetToken( const sal_Unicode* pPtr, sal_uInt16& rLen );
static OUString GetToken( const OUString &sStr, sal_Int32 &nIndex );
virtual void SetTabs();
virtual void InitEntry(SvTreeListEntry*, const OUString&, const Image&, const Image&, SvLBoxButtonKind);
......
......@@ -76,25 +76,15 @@ void SvTabListBox::InitEntry(SvTreeListEntry* pEntry, const OUString& rStr,
const Image& rColl, const Image& rExp, SvLBoxButtonKind eButtonKind)
{
SvTreeListBox::InitEntry(pEntry, rStr, rColl, rExp, eButtonKind);
OUString aToken;
const sal_Unicode* pCurToken = aCurEntry.getStr();
sal_uInt16 nCurTokenLen;
const sal_Unicode* pNextToken = GetToken( pCurToken, nCurTokenLen );
sal_uInt16 nCount = nTabCount; nCount--;
sal_Int32 nIndex = 0;
// TODO: verify if nTabCount is always >0 here!
const sal_uInt16 nCount = nTabCount - 1;
for( sal_uInt16 nToken = 0; nToken < nCount; nToken++ )
{
if( pCurToken && nCurTokenLen )
aToken = OUString(pCurToken, nCurTokenLen);
else
aToken = OUString();
const OUString aToken = GetToken(aCurEntry, nIndex);
SvLBoxString* pStr = new SvLBoxString( pEntry, 0, aToken );
pEntry->AddItem( pStr );
pCurToken = pNextToken;
if( pCurToken )
pNextToken = GetToken( pCurToken, nCurTokenLen );
else
nCurTokenLen = 0;
}
}
......@@ -324,45 +314,26 @@ void SvTabListBox::SetEntryText(const OUString& rStr, SvTreeListEntry* pEntry, s
if (sOldText == rStr)
return;
sal_uInt16 nTextColumn = nCol;
const sal_Unicode* pCurToken = rStr.getStr();
sal_uInt16 nCurTokenLen;
const sal_Unicode* pNextToken = GetToken( pCurToken, nCurTokenLen );
OUString aTemp;
sal_uInt16 nCount = pEntry->ItemCount();
sal_uInt16 nCur = 0;
while( nCur < nCount )
sal_Int32 nIndex = 0;
const sal_uInt16 nTextColumn = nCol;
const sal_uInt16 nCount = pEntry->ItemCount();
for (sal_uInt16 nCur = 0; nCur < nCount; ++nCur)
{
SvLBoxItem* pStr = pEntry->GetItem( nCur );
if (pStr && pStr->GetType() == SV_ITEM_ID_LBOXSTRING)
{
if( nCol == 0xffff )
if (!nCol || nCol==0xFFFF)
{
if( pCurToken )
aTemp = OUString(pCurToken, nCurTokenLen);
else
aTemp = OUString(); // delete all columns without a token
const OUString aTemp(GetToken(rStr, nIndex));
((SvLBoxString*)pStr)->SetText( aTemp );
pCurToken = pNextToken;
pNextToken = GetToken( pCurToken, nCurTokenLen );
if (!nCol && nIndex<0)
break;
}
else
{
if( !nCol )
{
aTemp = OUString(pCurToken, nCurTokenLen);
((SvLBoxString*)pStr)->SetText( aTemp );
if( !pNextToken )
break;
pCurToken = pNextToken;
pNextToken = GetToken( pCurToken, nCurTokenLen );
}
else
nCol--;
--nCol;
}
}
nCur++;
}
GetModel()->InvalidateEntry( pEntry );
......@@ -420,27 +391,9 @@ void SvTabListBox::Resize()
}
// static
const sal_Unicode* SvTabListBox::GetToken( const sal_Unicode* pPtr, sal_uInt16& rLen )
OUString SvTabListBox::GetToken( const OUString &sStr, sal_Int32& nIndex )
{
if( !pPtr || *pPtr == 0 )
{
rLen = 0;
return 0;
}
sal_Unicode c = *pPtr;
sal_uInt16 nLen = 0;
while( c != '\t' && c != 0 )
{
pPtr++;
nLen++;
c = *pPtr;
}
if( c )
pPtr++; // skip tab
else
pPtr = 0;
rLen = nLen;
return pPtr;
return sStr.getToken(0, '\t', nIndex);
}
OUString SvTabListBox::GetTabEntryText( sal_uLong nPos, sal_uInt16 nCol ) const
......
......@@ -383,28 +383,14 @@ void SvxRedlinTable::InitEntry(SvTreeListEntry* pEntry, const OUString& rStr,
pString = new SvLBoxColorString( pEntry, 0, rStr ,aEntryColor);
pEntry->AddItem( pString );
XubString aToken;
sal_Unicode* pCurToken = (sal_Unicode*)aCurEntry.GetBuffer();
sal_uInt16 nCurTokenLen;
sal_Unicode* pNextToken = (sal_Unicode*)GetToken( pCurToken, nCurTokenLen );
sal_uInt16 nCount = TabCount(); nCount--;
sal_Int32 nIndex = 0;
// TODO: verify if TabCount() is always >0 here!
const sal_uInt16 nCount = TabCount()-1;
for( sal_uInt16 nToken = 0; nToken < nCount; nToken++ )
{
if( pCurToken && nCurTokenLen )
aToken = OUString(pCurToken, nCurTokenLen);
else
aToken.Erase();
SvLBoxColorString* pStr = new SvLBoxColorString( pEntry, 0, aToken ,aEntryColor);
const OUString aToken = GetToken(aCurEntry, nIndex);
SvLBoxColorString* pStr = new SvLBoxColorString( pEntry, 0, aToken, aEntryColor);
pEntry->AddItem( pStr );
pCurToken = pNextToken;
if( pCurToken )
pNextToken = (sal_Unicode*)GetToken( pCurToken, nCurTokenLen );
else
nCurTokenLen = 0;
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment