int CUploadListCtrl::SortProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort) { const CUpDownClient *item1 = (CUpDownClient *)lParam1; const CUpDownClient *item2 = (CUpDownClient *)lParam2; int iColumn = (lParamSort >= 100) ? lParamSort - 100 : lParamSort; int iResult = 0; switch (iColumn) { case 0: if (item1->GetUserName() && item2->GetUserName()) iResult = CompareLocaleStringNoCase(item1->GetUserName(), item2->GetUserName()); else if (item1->GetUserName() == NULL) iResult = 1; // place clients with no usernames at bottom else if (item2->GetUserName() == NULL) iResult = -1; // place clients with no usernames at bottom break; case 1: { // ==> requpfile optimization [SiRoB] - Stulle /* const CKnownFile *file1 = theApp.sharedfiles->GetFileByID(item1->GetUploadFileID()); const CKnownFile *file2 = theApp.sharedfiles->GetFileByID(item2->GetUploadFileID()); */ const CKnownFile *file1 = item1->CheckAndGetReqUpFile(); const CKnownFile *file2 = item2->CheckAndGetReqUpFile(); // <== requpfile optimization [SiRoB] - Stulle if (file1 != NULL && file2 != NULL) iResult = CompareLocaleStringNoCase(file1->GetFileName(), file2->GetFileName()); else if (file1 == NULL) iResult = 1; else iResult = -1; break; } // Maella -Accurate measure of bandwidth: eDonkey data + control, network adapter- /* case 2: iResult = CompareUnsigned(item1->GetDatarate(), item2->GetDatarate()); break; */ case 2: iResult = item1->GetUploadDatarate() - item2->GetUploadDatarate(); break; // Maella end case 3: iResult = CompareUnsigned(item1->GetSessionUp(), item2->GetSessionUp()); //Xman don't show too many values /* if (iResult == 0 && thePrefs.m_bExtControls) iResult = CompareUnsigned(item1->GetQueueSessionPayloadUp(), item2->GetQueueSessionPayloadUp()); */ //Xman end break; case 4: iResult = CompareUnsigned(item1->GetWaitTime(), item2->GetWaitTime()); break; case 5: iResult = CompareUnsigned(item1->GetUpStartTimeDelay() ,item2->GetUpStartTimeDelay()); break; case 6: iResult = item1->GetUploadState() - item2->GetUploadState(); break; case 7: // ==> Sort progress bars by percentage [Fafner/Xman] - Stulle /* iResult = CompareUnsigned(item1->GetUpPartCount(), item2->GetUpPartCount()); */ if (item1->GetHisCompletedPartsPercent_UP() == item2->GetHisCompletedPartsPercent_UP()) iResult=0; else iResult=item1->GetHisCompletedPartsPercent_UP() > item2->GetHisCompletedPartsPercent_UP()?1:-1; // <== Sort progress bars by percentage [Fafner/Xman] - Stulle break; //Xman version see clientversion in every window case 8: // Maella -Support for tag ET_MOD_VERSION 0x55- if(item1->GetClientSoft() == item2->GetClientSoft()) if(item1->GetVersion() == item2->GetVersion() && (item1->GetClientSoft() == SO_EMULE || item1->GetClientSoft() == SO_AMULE)) { iResult = item2->DbgGetFullClientSoftVer().CompareNoCase( item1->DbgGetFullClientSoftVer()); } else { iResult = item1->GetVersion() - item2->GetVersion(); } else iResult = -(item1->GetClientSoft() - item2->GetClientSoft()); // invert result to place eMule's at top break; //Xman end //Xman show complete up/down in uploadlist case 9: if(item1->Credits() && item2->Credits()) { iResult=CompareUnsigned64(item1->credits->GetUploadedTotal(), item2->credits->GetUploadedTotal()); } else iResult=0; break; //Xman end // ==> Uploading Chunk Detail Display [SiRoB/Fafner] - Stulle case 10: if (item1->GetUpChunkProgressPercent() == item2->GetUpChunkProgressPercent()) iResult=0; else iResult=item1->GetUpChunkProgressPercent() > item2->GetUpChunkProgressPercent()?1:-1; break; // <== Uploading Chunk Detail Display [SiRoB/Fafner] - Stulle } if (lParamSort >= 100) iResult = -iResult; // SLUGFILLER: multiSort remove - handled in parent class /* //call secondary sortorder, if this one results in equal int dwNextSort; if (iResult == 0 && (dwNextSort = theApp.emuledlg->transferwnd->m_pwndTransfer->uploadlistctrl.GetNextSortOrder(lParamSort)) != -1) iResult = SortProc(lParam1, lParam2, dwNextSort); */ // SLUGFILLER End return iResult; }
int CUploadListCtrl::SortProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort) { const CUpDownClient* item1 = (CUpDownClient*)lParam1; const CUpDownClient* item2 = (CUpDownClient*)lParam2; int iResult=0; switch(lParamSort){ case 0: if(item1->GetUserName() && item2->GetUserName()) iResult=CompareLocaleStringNoCase(item1->GetUserName(), item2->GetUserName()); else if(item1->GetUserName()) iResult=1; else iResult=-1; break; case 100: if(item1->GetUserName() && item2->GetUserName()) iResult=CompareLocaleStringNoCase(item2->GetUserName(), item1->GetUserName()); else if(item2->GetUserName()) iResult=1; else iResult=-1; break; case 1: { CKnownFile* file1 = theApp.sharedfiles->GetFileByID(item1->GetUploadFileID()); CKnownFile* file2 = theApp.sharedfiles->GetFileByID(item2->GetUploadFileID()); if( (file1 != NULL) && (file2 != NULL)) iResult=CompareLocaleStringNoCase(file1->GetFileName(), file2->GetFileName()); else if( file1 == NULL ) iResult=1; else iResult=-1; break; } case 101:{ CKnownFile* file1 = theApp.sharedfiles->GetFileByID(item1->GetUploadFileID()); CKnownFile* file2 = theApp.sharedfiles->GetFileByID(item2->GetUploadFileID()); if( (file1 != NULL) && (file2 != NULL)) iResult=CompareLocaleStringNoCase(file2->GetFileName(), file1->GetFileName()); else if( file1 == NULL ) iResult=1; else iResult=-1; break; } case 2: iResult=CompareUnsigned(item1->GetDatarate(), item2->GetDatarate()); break; case 102: iResult=CompareUnsigned(item2->GetDatarate(), item1->GetDatarate()); break; case 3: iResult=CompareUnsigned(item1->GetSessionUp(), item2->GetSessionUp()); if (iResult == 0 && thePrefs.m_bExtControls) { iResult = CompareUnsigned(item1->GetQueueSessionPayloadUp(), item2->GetQueueSessionPayloadUp()); } break; case 103: iResult=CompareUnsigned(item2->GetSessionUp(), item1->GetSessionUp()); if (iResult == 0 && thePrefs.m_bExtControls) { iResult = CompareUnsigned(item2->GetQueueSessionPayloadUp(), item1->GetQueueSessionPayloadUp()); } break; case 4: iResult=item1->GetWaitTime() - item2->GetWaitTime(); break; case 104: iResult=item2->GetWaitTime() - item1->GetWaitTime(); break; case 5: iResult=item1->GetUpStartTimeDelay() - item2->GetUpStartTimeDelay(); break; case 105: iResult=item2->GetUpStartTimeDelay() - item1->GetUpStartTimeDelay(); break; case 6: iResult=item1->GetUploadState() - item2->GetUploadState(); break; case 106: iResult=item2->GetUploadState() - item1->GetUploadState(); break; case 7: iResult=item1->GetUpPartCount() - item2->GetUpPartCount(); break; case 107: iResult=item2->GetUpPartCount() - item1->GetUpPartCount(); break; default: iResult=0; break; } int dwNextSort; //call secondary sortorder, if this one results in equal //(Note: yes I know this call is evil OO wise, but better than changing a lot more code, while we have only one instance anyway - might be fixed later) if (iResult == 0 && (dwNextSort = theApp.emuledlg->transferwnd->uploadlistctrl.GetNextSortOrder(lParamSort)) != (-1)){ iResult= SortProc(lParam1, lParam2, dwNextSort); } return iResult; }
int CDownloadClientsCtrl::SortProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort) { const CUpDownClient *item1 = (CUpDownClient *)lParam1; const CUpDownClient *item2 = (CUpDownClient *)lParam2; int iColumn = (lParamSort >= 100) ? lParamSort - 100 : lParamSort; int iResult = 0; switch (iColumn) { case 0: if (item1->GetUserName() && item2->GetUserName()) iResult = CompareLocaleStringNoCase(item1->GetUserName(), item2->GetUserName()); else if (item1->GetUserName() == NULL) iResult = 1; // place clients with no usernames at bottom else if (item2->GetUserName() == NULL) iResult = -1; // place clients with no usernames at bottom break; case 1: //Xman // Maella -Support for tag ET_MOD_VERSION 0x55- /* if (item1->GetClientSoft() == item2->GetClientSoft()) iResult = item1->GetVersion() - item2->GetVersion(); else iResult = -(item1->GetClientSoft() - item2->GetClientSoft()); // invert result to place eMule's at top */ if(item1->GetClientSoft() == item2->GetClientSoft()) if(item1->GetVersion() == item2->GetVersion() && (item1->GetClientSoft() == SO_EMULE || item1->GetClientSoft() == SO_AMULE)){ iResult = item2->DbgGetFullClientSoftVer().CompareNoCase( item1->DbgGetFullClientSoftVer()); } else { iResult = item1->GetVersion() - item2->GetVersion(); } else iResult = -(item1->GetClientSoft() - item2->GetClientSoft()); // invert result to place eMule's at top //Xman end break; case 2: { const CKnownFile *file1 = item1->GetRequestFile(); const CKnownFile *file2 = item2->GetRequestFile(); if( (file1 != NULL) && (file2 != NULL)) iResult = CompareLocaleStringNoCase(file1->GetFileName(), file2->GetFileName()); else if (file1 == NULL) iResult = 1; else iResult = -1; break; } case 3: iResult = CompareUnsigned(item1->GetDownloadDatarate(), item2->GetDownloadDatarate()); break; case 4: // ==> Sort progress bars by percentage [Fafner/Xman] - Stulle /* iResult = CompareUnsigned(item1->GetPartCount(), item2->GetPartCount()); */ if (item1->GetHisCompletedPartsPercent_Down() == item2->GetHisCompletedPartsPercent_Down()) iResult=0; else iResult=item1->GetHisCompletedPartsPercent_Down() > item2->GetHisCompletedPartsPercent_Down()?1:-1; // <== Sort progress bars by percentage [Fafner/Xman] - Stulle break; case 5: iResult = CompareUnsigned(item1->GetSessionDown(), item2->GetSessionDown()); break; case 6: iResult = CompareUnsigned(item1->GetSessionUp(), item2->GetSessionUp()); break; case 7: iResult = item1->GetSourceFrom() - item2->GetSourceFrom(); break; } if (lParamSort >= 100) iResult = -iResult; // SLUGFILLER: multiSort remove - handled in parent class /* //call secondary sortorder, if this one results in equal int dwNextSort; if (iResult == 0 && (dwNextSort = theApp.emuledlg->transferwnd->GetDownloadClientsList()->GetNextSortOrder(lParamSort)) != -1) iResult = SortProc(lParam1, lParam2, dwNextSort); */ // SLUGFILLER End return iResult; }
int CQueueListCtrl::SortProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort) { const CUpDownClient* item1 = (CUpDownClient*)lParam1; const CUpDownClient* item2 = (CUpDownClient*)lParam2; int iResult=0; switch(lParamSort){ case 0: if(item1->GetUserName() && item2->GetUserName()) iResult=CompareLocaleStringNoCase(item1->GetUserName(), item2->GetUserName()); else if(item1->GetUserName()) iResult=1; else iResult=-1; break; case 100: if(item2->GetUserName() && item1->GetUserName()) iResult=CompareLocaleStringNoCase(item2->GetUserName(), item1->GetUserName()); else if(item2->GetUserName()) iResult=1; else iResult=-1; break; case 1: { CKnownFile* file1 = theApp.sharedfiles->GetFileByID(item1->GetUploadFileID()); CKnownFile* file2 = theApp.sharedfiles->GetFileByID(item2->GetUploadFileID()); if( (file1 != NULL) && (file2 != NULL)) iResult=CompareLocaleStringNoCase(file1->GetFileName(), file2->GetFileName()); else if( file1 == NULL ) iResult=1; else iResult=-1; break; } case 101: { CKnownFile* file1 = theApp.sharedfiles->GetFileByID(item1->GetUploadFileID()); CKnownFile* file2 = theApp.sharedfiles->GetFileByID(item2->GetUploadFileID()); if( (file1 != NULL) && (file2 != NULL)) iResult=CompareLocaleStringNoCase(file2->GetFileName(), file1->GetFileName()); else if( file1 == NULL ) iResult=1; else iResult=-1; break; } case 2: { CKnownFile* file1 = theApp.sharedfiles->GetFileByID(item1->GetUploadFileID()); CKnownFile* file2 = theApp.sharedfiles->GetFileByID(item2->GetUploadFileID()); if( (file1 != NULL) && (file2 != NULL)) iResult=((file1->GetUpPriority()==PR_VERYLOW) ? -1 : file1->GetUpPriority()) - ((file2->GetUpPriority()==PR_VERYLOW) ? -1 : file2->GetUpPriority()); else if( file1 == NULL ) iResult=1; else iResult=-1; break; } case 102:{ CKnownFile* file1 = theApp.sharedfiles->GetFileByID(item1->GetUploadFileID()); CKnownFile* file2 = theApp.sharedfiles->GetFileByID(item2->GetUploadFileID()); if( (file1 != NULL) && (file2 != NULL)) iResult=((file2->GetUpPriority()==PR_VERYLOW) ? -1 : file2->GetUpPriority()) - ((file1->GetUpPriority()==PR_VERYLOW) ? -1 : file1->GetUpPriority()); else if( file1 == NULL ) iResult=1; else iResult=-1; break; } case 3: iResult=CompareUnsigned(item1->GetScore(false,false,true), item2->GetScore(false,false,true)); break; case 103: iResult=CompareUnsigned(item2->GetScore(false,false,true), item1->GetScore(false,false,true)); break; case 4: iResult=CompareUnsigned(item1->GetScore(false), item2->GetScore(false)); break; case 104: iResult=CompareUnsigned(item2->GetScore(false), item1->GetScore(false)); break; case 5: iResult=item1->GetAskedCount() - item2->GetAskedCount(); break; case 105: iResult=item2->GetAskedCount() - item1->GetAskedCount(); break; case 6: iResult=item1->GetLastUpRequest() - item2->GetLastUpRequest(); break; case 106: iResult=item2->GetLastUpRequest() - item1->GetLastUpRequest(); break; case 7: iResult=item1->GetWaitStartTime() - item2->GetWaitStartTime(); break; case 107: iResult=item2->GetWaitStartTime() - item1->GetWaitStartTime(); break; case 8: iResult=item1->IsBanned() - item2->IsBanned(); break; case 108: iResult=item2->IsBanned() - item1->IsBanned(); break; case 9: iResult=item1->GetUpPartCount() - item2->GetUpPartCount(); break; case 109: iResult=item2->GetUpPartCount() - item1->GetUpPartCount(); break; default: iResult=0; break; } int dwNextSort; //call secondary sortorder, if this one results in equal //(Note: yes I know this call is evil OO wise, but better than changing a lot more code, while we have only one instance anyway - might be fixed later) if (iResult == 0 && (dwNextSort = theApp.emuledlg->transferwnd->queuelistctrl.GetNextSortOrder(lParamSort)) != (-1)){ iResult= SortProc(lParam1, lParam2, dwNextSort); } return iResult; }
int CClientListCtrl::SortProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort) { const CUpDownClient* item1 = (CUpDownClient*)lParam1; const CUpDownClient* item2 = (CUpDownClient*)lParam2; int iResult=0; switch (lParamSort) { case 0: if (item1->GetUserName() && item2->GetUserName()) iResult=CompareLocaleStringNoCase(item1->GetUserName(), item2->GetUserName()); else if (!item1->GetUserName() && !item2->GetUserName()) iResult=0; else { // place clients with no usernames at bottom if (!item1->GetUserName()) iResult=1; else iResult=-1; } break; case 100: if (item1->GetUserName() && item2->GetUserName()) iResult=CompareLocaleStringNoCase(item2->GetUserName(), item1->GetUserName()); else if (!item1->GetUserName() && !item2->GetUserName()) iResult=0; else { // place clients with no usernames at bottom if (!item1->GetUserName()) iResult=1; else iResult=-1; } break; case 1: iResult=item1->GetUploadState() - item2->GetUploadState(); break; case 101: iResult=item2->GetUploadState() - item1->GetUploadState(); break; case 2: if (item1->credits && item2->credits) iResult=CompareUnsigned64(item1->credits->GetUploadedTotal(), item2->credits->GetUploadedTotal()); else if (!item1->credits) iResult=1; else iResult=-1; break; case 102: if (item1->credits && item2->credits) iResult=CompareUnsigned64(item2->credits->GetUploadedTotal(), item1->credits->GetUploadedTotal()); else if (!item1->credits) iResult=1; else iResult=-1; break; case 3: if (item1->GetDownloadState() == item2->GetDownloadState()) { if (item1->IsRemoteQueueFull() && item2->IsRemoteQueueFull()) iResult=0; else if (item1->IsRemoteQueueFull()) iResult=1; else if (item2->IsRemoteQueueFull()) iResult=-1; else iResult=0; } else iResult=item1->GetDownloadState() - item2->GetDownloadState(); break; case 103: if (item2->GetDownloadState() == item1->GetDownloadState()) { if (item2->IsRemoteQueueFull() && item1->IsRemoteQueueFull()) iResult=0; else if (item2->IsRemoteQueueFull()) iResult=1; else if (item1->IsRemoteQueueFull()) iResult=-1; else iResult=0; } else iResult=item2->GetDownloadState() - item1->GetDownloadState(); break; case 4: if (item1->credits && item2->credits) iResult=CompareUnsigned64(item1->credits->GetDownloadedTotal(), item2->credits->GetDownloadedTotal()); else if (!item1->credits) iResult=1; else iResult=-1; break; case 104: if (item1->credits && item2->credits) iResult=CompareUnsigned64(item2->credits->GetDownloadedTotal(), item1->credits->GetDownloadedTotal()); else if (!item1->credits) iResult=1; else iResult=-1; break; case 5: if (item1->GetClientSoft() == item2->GetClientSoft()) iResult=item2->GetVersion() - item1->GetVersion(); else iResult=item1->GetClientSoft() - item2->GetClientSoft(); break; case 105: if (item1->GetClientSoft() == item2->GetClientSoft()) iResult=item1->GetVersion() - item2->GetVersion(); else iResult=item2->GetClientSoft() - item1->GetClientSoft(); break; case 6: if (item1->socket && item2->socket) iResult=item1->socket->IsConnected() - item2->socket->IsConnected(); else if (!item1->socket) iResult=-1; else iResult=1; break; case 106: if (item1->socket && item2->socket) iResult=item2->socket->IsConnected() - item1->socket->IsConnected(); else if (!item2->socket) iResult=-1; else iResult=1; break; case 7: iResult=memcmp(item1->GetUserHash(), item2->GetUserHash(), 16); break; case 107: iResult=memcmp(item2->GetUserHash(), item1->GetUserHash(), 16); break; default: iResult=0; } int dwNextSort; //call secondary sortorder, if this one results in equal //(Note: yes I know this call is evil OO wise, but better than changing a lot more code, while we have only one instance anyway - might be fixed later) if (iResult == 0 && (dwNextSort = theApp.emuledlg->transferwnd->clientlistctrl.GetNextSortOrder(lParamSort)) != (-1)){ iResult= SortProc(lParam1, lParam2, dwNextSort); } return iResult; }
int CQueueListCtrl::SortProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort) { const CUpDownClient *item1 = (CUpDownClient *)lParam1; const CUpDownClient *item2 = (CUpDownClient *)lParam2; int iColumn = (lParamSort >= 100) ? lParamSort - 100 : lParamSort; int iResult = 0; switch (iColumn) { case 0: if (item1->GetUserName() && item2->GetUserName()) iResult = CompareLocaleStringNoCase(item1->GetUserName(), item2->GetUserName()); else if (item1->GetUserName() == NULL) iResult = 1; // place clients with no usernames at bottom else if (item2->GetUserName() == NULL) iResult = -1; // place clients with no usernames at bottom break; case 1: { // ==> requpfile optimization [SiRoB] - Stulle /* const CKnownFile *file1 = theApp.sharedfiles->GetFileByID(item1->GetUploadFileID()); const CKnownFile *file2 = theApp.sharedfiles->GetFileByID(item2->GetUploadFileID()); */ const CKnownFile *file1 = item1->CheckAndGetReqUpFile(); const CKnownFile *file2 = item2->CheckAndGetReqUpFile(); // <== requpfile optimization [SiRoB] - Stulle if (file1 != NULL && file2 != NULL) iResult = CompareLocaleStringNoCase(file1->GetFileName(), file2->GetFileName()); else if (file1 == NULL) iResult = 1; else iResult = -1; break; } case 2: { // ==> requpfile optimization [SiRoB] - Stulle /* const CKnownFile *file1 = theApp.sharedfiles->GetFileByID(item1->GetUploadFileID()); const CKnownFile *file2 = theApp.sharedfiles->GetFileByID(item2->GetUploadFileID()); */ const CKnownFile *file1 = item1->CheckAndGetReqUpFile(); const CKnownFile *file2 = item2->CheckAndGetReqUpFile(); // <== requpfile optimization [SiRoB] - Stulle if (file1 != NULL && file2 != NULL) // ==> PowerShare [ZZ/MorphXT] - Stulle // ==> Fair Play [AndCycle/Stulle] - Stulle { if (!file1->GetPowerShared() && !file1->statistic.GetFairPlay() && (file2->GetPowerShared() || file2->statistic.GetFairPlay())) iResult=-1; else if ((file1->GetPowerShared() || file1->statistic.GetFairPlay()) && !file2->GetPowerShared() && !file2->statistic.GetFairPlay()) iResult=1; else // <== Fair Play [AndCycle/Stulle] - Stulle // <== PowerShare [ZZ/MorphXT] - Stulle iResult = (file1->GetUpPriority() == PR_VERYLOW ? -1 : file1->GetUpPriority()) - (file2->GetUpPriority() == PR_VERYLOW ? -1 : file2->GetUpPriority()); } // PowerShare [ZZ/MorphXT] - Stulle else if (file1 == NULL) iResult = 1; else iResult = -1; break; } case 3: iResult = CompareUnsigned(item1->GetScore(false, false, true), item2->GetScore(false, false, true)); break; case 4: // ==> Superior Client Handling [Stulle] - Stulle if(!item1->IsSuperiorClient() && item2->IsSuperiorClient()) iResult=-1; else if(item1->IsSuperiorClient() && !item2->IsSuperiorClient()) iResult=1; else // <== Superior Client Handling [Stulle] - Stulle iResult = CompareUnsigned(item1->GetScore(false), item2->GetScore(false)); break; case 5: iResult = CompareUnsigned(item1->GetAskedCount(), item2->GetAskedCount()); break; case 6: iResult = CompareUnsigned(item1->GetLastUpRequest(), item2->GetLastUpRequest()); break; case 7: // ==> SUQWT [Moonlight/EastShare/ MorphXT] - Stulle /* iResult = CompareUnsigned(item1->GetWaitStartTime(), item2->GetWaitStartTime()); */ { sint64 time1 = item1->GetWaitStartTime(); sint64 time2 = item2->GetWaitStartTime(); if ( time1 == time2 ) { iResult = 0; } else if ( time1 > time2 ) { iResult = 1; } else { iResult = -1; } break; } // <== SUQWT [Moonlight/EastShare/ MorphXT] - Stulle break; case 8: iResult = item1->IsBanned() - item2->IsBanned(); break; case 9: // ==> Sort progress bars by percentage [Fafner/Xman] - Stulle /* iResult = CompareUnsigned(item1->GetUpPartCount(), item2->GetUpPartCount()); */ if (item1->GetHisCompletedPartsPercent_UP() == item2->GetHisCompletedPartsPercent_UP()) iResult=0; else iResult=item1->GetHisCompletedPartsPercent_UP() > item2->GetHisCompletedPartsPercent_UP()?1:-1; // <== Sort progress bars by percentage [Fafner/Xman] - Stulle break; //Xman version see clientversion in every window case 10: // Maella -Support for tag ET_MOD_VERSION 0x55- if(item1->GetClientSoft() == item2->GetClientSoft()) if(item1->GetVersion() == item2->GetVersion() && (item1->GetClientSoft() == SO_EMULE || item1->GetClientSoft() == SO_AMULE)){ iResult = item2->DbgGetFullClientSoftVer().CompareNoCase( item1->DbgGetFullClientSoftVer()); } else { iResult = item1->GetVersion() - item2->GetVersion(); } else iResult = -(item1->GetClientSoft() - item2->GetClientSoft()); // invert result to place eMule's at top break; //Xman show complete up/down in queuelist case 11: if(item1->Credits() && item2->Credits()) iResult=CompareUnsigned64(item1->credits->GetUploadedTotal(), item2->credits->GetUploadedTotal()); else iResult=0; break; //Xman end // ==> push small files [sivka] - Stulle case 12: iResult=item1->GetSmallFilePush() - item2->GetSmallFilePush(); break; // <== push small files [sivka] - Stulle // ==> push rare file - Stulle case 13: iResult=CompareFloat(item1->GetRareFilePushRatio(),item2->GetRareFilePushRatio()); break; // <== push rare file - Stulle } if (lParamSort >= 100) iResult = -iResult; // SLUGFILLER: multiSort remove - handled in parent class /* //call secondary sortorder, if this one results in equal int dwNextSort; if (iResult == 0 && (dwNextSort = theApp.emuledlg->transferwnd->GetQueueList()->GetNextSortOrder(lParamSort)) != -1) iResult = SortProc(lParam1, lParam2, dwNextSort); */ // SLUGFILLER: multiSort remove - handled in parent class return iResult; }