mirror of
https://github.com/1dot13/source.git
synced 2026-09-16 14:47:17 +02:00
Fix email sorting
* Simplify pSubject copying else ifs * Formatting
This commit is contained in:
+176
-185
@@ -1370,217 +1370,208 @@ void AddMessageToPages(INT32 iMessageId)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SortMessages(INT32 iCriteria)
|
static void SortMessages(INT32 iCriteria)
|
||||||
{
|
{
|
||||||
EmailPtr pA=pEmailList;
|
EmailPtr pA = pEmailList;
|
||||||
EmailPtr pB=pEmailList;
|
EmailPtr pB = pEmailList;
|
||||||
CHAR16 pSubjectA[256];
|
CHAR16 pSubjectA[256];
|
||||||
CHAR16 pSubjectB[256];
|
CHAR16 pSubjectB[256];
|
||||||
|
|
||||||
// no messages to sort?
|
// no messages to sort?
|
||||||
if( ( pA == NULL) ||( pB == NULL ) )
|
if ( (pA == NULL) || (pB == NULL) )
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// nothing here either?
|
// nothing here either?
|
||||||
if(!pA->Next)
|
if ( !pA->Next )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
pB=pA->Next;
|
pB = pA->Next;
|
||||||
switch(iCriteria)
|
switch ( iCriteria )
|
||||||
{
|
{
|
||||||
case RECEIVED:
|
case RECEIVED:
|
||||||
while(pA)
|
while ( pA )
|
||||||
{
|
{
|
||||||
|
// set B to next in A
|
||||||
|
pB = pA->Next;
|
||||||
|
while ( pB )
|
||||||
|
{
|
||||||
|
|
||||||
// set B to next in A
|
if ( fSortDateUpwards )
|
||||||
pB=pA->Next;
|
{
|
||||||
while(pB)
|
// if date is lesser, swap
|
||||||
{
|
if ( pA->iDate > pB->iDate )
|
||||||
|
SwapMessages(pA->iId, pB->iId);
|
||||||
if( fSortDateUpwards )
|
}
|
||||||
{
|
else
|
||||||
// if date is lesser, swap
|
{
|
||||||
if(pA->iDate > pB->iDate)
|
// if date is lesser, swap
|
||||||
SwapMessages(pA->iId, pB->iId);
|
if ( pA->iDate < pB->iDate )
|
||||||
}
|
SwapMessages(pA->iId, pB->iId);
|
||||||
else
|
}
|
||||||
{
|
|
||||||
// if date is lesser, swap
|
|
||||||
if(pA->iDate < pB->iDate)
|
|
||||||
SwapMessages(pA->iId, pB->iId);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// next in B's list
|
// next in B's list
|
||||||
pB=pB->Next;
|
pB = pB->Next;
|
||||||
}
|
}
|
||||||
|
|
||||||
// next in A's List
|
// next in A's List
|
||||||
pA=pA->Next;
|
pA = pA->Next;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SENDER:
|
case SENDER:
|
||||||
while(pA)
|
while ( pA )
|
||||||
{
|
{
|
||||||
|
pB = pA->Next;
|
||||||
|
while ( pB )
|
||||||
|
{
|
||||||
|
// lesser string?...need sorting
|
||||||
|
if ( fSortSenderUpwards )
|
||||||
|
{
|
||||||
|
if ( (wcscmp(pSenderNameList[pA->ubSender], pSenderNameList[pB->ubSender])) < 0 )
|
||||||
|
SwapMessages(pA->iId, pB->iId);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( (wcscmp(pSenderNameList[pA->ubSender], pSenderNameList[pB->ubSender])) > 0 )
|
||||||
|
SwapMessages(pA->iId, pB->iId);
|
||||||
|
}
|
||||||
|
// next in B's list
|
||||||
|
pB = pB->Next;
|
||||||
|
}
|
||||||
|
// next in A's List
|
||||||
|
pA = pA->Next;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SUBJECT:
|
||||||
|
while ( pA )
|
||||||
|
{
|
||||||
|
pB = pA->Next;
|
||||||
|
while ( pB )
|
||||||
|
{
|
||||||
|
// clear out control codes
|
||||||
|
CleanOutControlCodesFromString(pA->pSubject, pSubjectA);
|
||||||
|
CleanOutControlCodesFromString(pB->pSubject, pSubjectB);
|
||||||
|
|
||||||
pB = pA->Next;
|
// lesser string?...need sorting
|
||||||
while(pB)
|
if ( fSortSubjectUpwards )
|
||||||
{
|
{
|
||||||
// lesser string?...need sorting
|
if ( (wcscmp(pA->pSubject, pB->pSubject)) < 0 )
|
||||||
if( fSortSenderUpwards )
|
SwapMessages(pA->iId, pB->iId);
|
||||||
{
|
}
|
||||||
if(( wcscmp( pSenderNameList[pA->ubSender] , pSenderNameList[pB->ubSender] ) ) < 0 )
|
else
|
||||||
SwapMessages(pA->iId, pB->iId);
|
{
|
||||||
}
|
if ( (wcscmp(pA->pSubject, pB->pSubject)) > 0 )
|
||||||
else
|
SwapMessages(pA->iId, pB->iId);
|
||||||
{
|
}
|
||||||
if(( wcscmp( pSenderNameList[pA->ubSender] , pSenderNameList[pB->ubSender] ) ) > 0 )
|
// next in B's list
|
||||||
SwapMessages(pA->iId, pB->iId);
|
pB = pB->Next;
|
||||||
}
|
}
|
||||||
// next in B's list
|
// next in A's List
|
||||||
pB=pB->Next;
|
pA = pA->Next;
|
||||||
}
|
}
|
||||||
// next in A's List
|
break;
|
||||||
pA=pA->Next;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case SUBJECT:
|
|
||||||
while(pA)
|
|
||||||
{
|
|
||||||
|
|
||||||
pB = pA->Next;
|
case READ:
|
||||||
while(pB)
|
while ( pA )
|
||||||
{
|
{
|
||||||
// clear out control codes
|
pB = pA->Next;
|
||||||
CleanOutControlCodesFromString( pA->pSubject, pSubjectA );
|
while ( pB )
|
||||||
CleanOutControlCodesFromString( pB->pSubject, pSubjectB );
|
{
|
||||||
|
// one read and another not?...need sorting
|
||||||
|
if ( (pA->fRead) && (!(pB->fRead)) )
|
||||||
|
SwapMessages(pA->iId, pB->iId);
|
||||||
|
|
||||||
// lesser string?...need sorting
|
// next in B's list
|
||||||
if( fSortSubjectUpwards )
|
pB = pB->Next;
|
||||||
{
|
}
|
||||||
if( ( wcscmp( pA->pSubject ,pB->pSubject ) ) < 0)
|
// next in A's List
|
||||||
SwapMessages(pA->iId, pB->iId);
|
pA = pA->Next;
|
||||||
}
|
}
|
||||||
else
|
break;
|
||||||
{
|
}
|
||||||
if( ( wcscmp( pA->pSubject ,pB->pSubject ) ) > 0)
|
|
||||||
SwapMessages(pA->iId, pB->iId);
|
|
||||||
}
|
|
||||||
// next in B's list
|
|
||||||
pB=pB->Next;
|
|
||||||
}
|
|
||||||
// next in A's List
|
|
||||||
pA=pA->Next;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case READ:
|
// place new list into pages of email
|
||||||
while(pA)
|
//PlaceMessagesinPages();
|
||||||
{
|
|
||||||
|
|
||||||
pB = pA->Next;
|
// redraw the screen
|
||||||
while(pB)
|
fReDrawScreenFlag = TRUE;
|
||||||
{
|
|
||||||
// one read and another not?...need sorting
|
|
||||||
if( ( pA->fRead ) && ( ! ( pB->fRead ) ) )
|
|
||||||
SwapMessages(pA->iId, pB->iId);
|
|
||||||
|
|
||||||
// next in B's list
|
|
||||||
pB=pB->Next;
|
|
||||||
}
|
|
||||||
// next in A's List
|
|
||||||
pA=pA->Next;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// place new list into pages of email
|
|
||||||
//PlaceMessagesinPages();
|
|
||||||
|
|
||||||
// redraw the screen
|
|
||||||
fReDrawScreenFlag=TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SwapMessages(INT32 iIdA, INT32 iIdB)
|
void SwapMessages(INT32 iIdA, INT32 iIdB)
|
||||||
{
|
{
|
||||||
// swaps locations of messages in the linked list
|
// swaps locations of messages in the linked list
|
||||||
EmailPtr pA=pEmailList;
|
EmailPtr pA = pEmailList;
|
||||||
EmailPtr pB=pEmailList;
|
EmailPtr pB = pEmailList;
|
||||||
EmailPtr pTemp= (EmailPtr) MemAlloc(sizeof(Email) );
|
EmailPtr pTemp = (EmailPtr)MemAlloc(sizeof(Email));
|
||||||
pTemp->pSubject = (STR16) MemAlloc( 128 * sizeof(CHAR16) );
|
pTemp->pSubject = (STR16)MemAlloc(128 * sizeof(CHAR16));
|
||||||
|
|
||||||
memset( pTemp->pSubject, 0, sizeof( CHAR16 ) * 128 );
|
memset(pTemp->pSubject, 0, sizeof(CHAR16) * 128);
|
||||||
|
|
||||||
if(!pA->Next)
|
if ( !pA->Next )
|
||||||
return;
|
return;
|
||||||
//find pA
|
//find pA
|
||||||
while(pA->iId!=iIdA)
|
while ( pA->iId != iIdA )
|
||||||
pA=pA->Next;
|
pA = pA->Next;
|
||||||
// find pB
|
// find pB
|
||||||
while(pB->iId!=iIdB)
|
while ( pB->iId != iIdB )
|
||||||
pB=pB->Next;
|
pB = pB->Next;
|
||||||
|
|
||||||
// swap
|
// swap
|
||||||
|
|
||||||
// pTemp becomes pA
|
// pTemp becomes pA
|
||||||
pTemp->iId=pA->iId;
|
pTemp->iId = pA->iId;
|
||||||
pTemp->fRead=pA->fRead;
|
pTemp->fRead = pA->fRead;
|
||||||
pTemp->fNew=pA->fNew;
|
pTemp->fNew = pA->fNew;
|
||||||
pTemp->usOffset=pA->usOffset;
|
pTemp->usOffset = pA->usOffset;
|
||||||
pTemp->EmailVersion=pA->EmailVersion;
|
pTemp->EmailVersion = pA->EmailVersion;
|
||||||
pTemp->usLength=pA->usLength;
|
pTemp->usLength = pA->usLength;
|
||||||
pTemp->iDate=pA->iDate;
|
pTemp->iDate = pA->iDate;
|
||||||
pTemp->ubSender=pA->ubSender;
|
pTemp->ubSender = pA->ubSender;
|
||||||
|
|
||||||
if ( pA->EmailVersion == TYPE_EMAIL_AIM_AVAILABLE )
|
if ( pA->EmailVersion == TYPE_EMAIL_AIM_AVAILABLE )
|
||||||
wcscpy(pTemp->pSubject,EmailMercAvailableText[pA->ubSender].szSubject);
|
wcscpy(pTemp->pSubject, EmailMercAvailableText[pA->ubSender].szSubject);
|
||||||
else if ( pA->EmailVersion == TYPE_EMAIL_MERC_LEVEL_UP )
|
else if ( pA->EmailVersion == TYPE_EMAIL_MERC_LEVEL_UP )
|
||||||
wcscpy(pTemp->pSubject,EmailMercLevelUpText[pA->ubSender].szSubject);
|
wcscpy(pTemp->pSubject, EmailMercLevelUpText[pA->ubSender].szSubject);
|
||||||
else if ( pA->EmailVersion == TYPE_EMAIL_OTHER )
|
else if ( pA->EmailVersion == TYPE_EMAIL_OTHER )
|
||||||
wcscpy(pTemp->pSubject,EmailOtherText[pA->usLength].szSubject);
|
wcscpy(pTemp->pSubject, EmailOtherText[pA->usLength].szSubject);
|
||||||
else if ( pA->EmailVersion == TYPE_EMAIL_BOBBY_R || pA->EmailVersion == TYPE_EMAIL_BOBBY_R_EMAIL_JA2_EDT )
|
else
|
||||||
wcscpy(pTemp->pSubject,pA->pSubject);
|
wcscpy(pTemp->pSubject, pA->pSubject);
|
||||||
else if ( pA->EmailVersion == TYPE_EMAIL_EMAIL_EDT || pA->EmailVersion == TYPE_EMAIL_INSURANCE_COMPANY_EMAIL_JA2_EDT || pA->EmailVersion == TYPE_EMAIL_DEAD_MERC_AIM_SITE_EMAIL_JA2_EDT )
|
|
||||||
wcscpy(pTemp->pSubject,pA->pSubject);
|
|
||||||
|
|
||||||
// pA becomes pB
|
// pA becomes pB
|
||||||
pA->iId=pB->iId;
|
pA->iId = pB->iId;
|
||||||
pA->fRead=pB->fRead;
|
pA->fRead = pB->fRead;
|
||||||
pA->fNew=pB->fNew;
|
pA->fNew = pB->fNew;
|
||||||
pA->usOffset=pB->usOffset;
|
pA->usOffset = pB->usOffset;
|
||||||
pA->EmailVersion=pB->EmailVersion;
|
pA->EmailVersion = pB->EmailVersion;
|
||||||
pA->usLength=pB->usLength;
|
pA->usLength = pB->usLength;
|
||||||
pA->iDate=pB->iDate;
|
pA->iDate = pB->iDate;
|
||||||
pA->ubSender=pB->ubSender;
|
pA->ubSender = pB->ubSender;
|
||||||
wcscpy(pA->pSubject, pB->pSubject);
|
wcscpy(pA->pSubject, pB->pSubject);
|
||||||
|
|
||||||
// pB becomes pTemp
|
// pB becomes pTemp
|
||||||
pB->iId=pTemp->iId;
|
pB->iId = pTemp->iId;
|
||||||
pB->fRead=pTemp->fRead;
|
pB->fRead = pTemp->fRead;
|
||||||
pB->fNew=pTemp->fNew;
|
pB->fNew = pTemp->fNew;
|
||||||
pB->usOffset=pTemp->usOffset;
|
pB->usOffset = pTemp->usOffset;
|
||||||
pB->EmailVersion=pTemp->EmailVersion;
|
pB->EmailVersion = pTemp->EmailVersion;
|
||||||
pB->usLength=pTemp->usLength;
|
pB->usLength = pTemp->usLength;
|
||||||
pB->iDate=pTemp->iDate;
|
pB->iDate = pTemp->iDate;
|
||||||
pB->ubSender=pTemp->ubSender;
|
pB->ubSender = pTemp->ubSender;
|
||||||
|
|
||||||
if ( pB->EmailVersion == TYPE_EMAIL_AIM_AVAILABLE )
|
if ( pB->EmailVersion == TYPE_EMAIL_AIM_AVAILABLE )
|
||||||
wcscpy(pB->pSubject,EmailMercAvailableText[pTemp->ubSender].szSubject);
|
wcscpy(pB->pSubject, EmailMercAvailableText[pTemp->ubSender].szSubject);
|
||||||
else if ( pB->EmailVersion == TYPE_EMAIL_MERC_LEVEL_UP )
|
else if ( pB->EmailVersion == TYPE_EMAIL_MERC_LEVEL_UP )
|
||||||
wcscpy(pB->pSubject,EmailMercLevelUpText[pTemp->ubSender].szSubject);
|
wcscpy(pB->pSubject, EmailMercLevelUpText[pTemp->ubSender].szSubject);
|
||||||
else if ( pB->EmailVersion == TYPE_EMAIL_OTHER )
|
else if ( pB->EmailVersion == TYPE_EMAIL_OTHER )
|
||||||
wcscpy(pB->pSubject,EmailOtherText[pTemp->usLength].szSubject);
|
wcscpy(pB->pSubject, EmailOtherText[pTemp->usLength].szSubject);
|
||||||
else if ( pB->EmailVersion == TYPE_EMAIL_BOBBY_R || pB->EmailVersion == TYPE_EMAIL_BOBBY_R_EMAIL_JA2_EDT )
|
else
|
||||||
wcscpy(pB->pSubject, pTemp->pSubject);
|
wcscpy(pB->pSubject, pTemp->pSubject);
|
||||||
else if ( pB->EmailVersion == TYPE_EMAIL_EMAIL_EDT || pB->EmailVersion == TYPE_EMAIL_INSURANCE_COMPANY_EMAIL_JA2_EDT || pB->EmailVersion == TYPE_EMAIL_DEAD_MERC_AIM_SITE_EMAIL_JA2_EDT )
|
|
||||||
wcscpy(pB->pSubject, pTemp->pSubject);
|
|
||||||
|
|
||||||
// free up memory
|
// free up memory
|
||||||
MemFree(pTemp->pSubject);
|
MemFree(pTemp->pSubject);
|
||||||
MemFree( pTemp );
|
MemFree(pTemp);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ClearPages()
|
void ClearPages()
|
||||||
|
|||||||
Reference in New Issue
Block a user