void CFragmentBar::DrawUpload(CDC* pDC, CRect* prcBar, CUploadFile* pFile, COLORREF crNatural) { CUploadTransfer* pUpload = pFile->GetActive(); if ( !pUpload ) return; Fragments::List::const_iterator pItr = pFile->m_oFragments.begin(); const Fragments::List::const_iterator pEnd = pFile->m_oFragments.end(); for ( ; pItr != pEnd ; ++pItr ) { DrawFragment( pDC, prcBar, pFile->m_nSize, pItr->begin(), pItr->size(), CoolInterface.m_crFragmentComplete, true ); } if ( pFile == pUpload->m_pBaseFile && pUpload->m_nLength != SIZE_UNKNOWN ) { if ( pUpload->m_nProtocol == PROTOCOL_HTTP && ((CUploadTransferHTTP*)pUpload)->IsBackwards() ) { DrawFragment( pDC, prcBar, pFile->m_nSize, pUpload->m_nOffset + pUpload->m_nLength - pUpload->m_nPosition, pUpload->m_nPosition, CoolInterface.m_crFragmentComplete, true ); DrawFragment( pDC, prcBar, pFile->m_nSize, pUpload->m_nOffset, pUpload->m_nLength - pUpload->m_nPosition, crNatural, false ); } else { DrawFragment( pDC, prcBar, pFile->m_nSize, pUpload->m_nOffset, pUpload->m_nPosition, CoolInterface.m_crFragmentComplete, true ); DrawFragment( pDC, prcBar, pFile->m_nSize, pUpload->m_nOffset + pUpload->m_nPosition, pUpload->m_nLength - pUpload->m_nPosition, crNatural, false ); } } pDC->FillSolidRect( prcBar, ( pFile == pUpload->m_pBaseFile ) ? CoolInterface.m_crFragmentShaded : crNatural ); }
void CFragmentBar::DrawDownload(CDC* pDC, CRect* prcBar, CDownload* pDownload, COLORREF crNatural) { QWORD nvOffset, nvLength; BOOL bvSuccess; if ( Settings.Downloads.ShowPercent ) { DrawStateBar( pDC, prcBar, pDownload->m_nSize, 0, pDownload->GetVolumeComplete(), RGB( 0, 255, 0 ), true ); } for ( nvOffset = 0 ; pDownload->GetNextVerifyRange( nvOffset, nvLength, bvSuccess ) ; ) { DrawStateBar( pDC, prcBar, pDownload->m_nSize, nvOffset, nvLength, bvSuccess ? CoolInterface.m_crFragmentPass : CoolInterface.m_crFragmentFail ); nvOffset += nvLength; } Fragments::List oList( pDownload->GetEmptyFragmentList() ); Fragments::List::const_iterator pItr = oList.begin(); const Fragments::List::const_iterator pEnd = oList.end(); for ( ; pItr != pEnd ; ++pItr ) { DrawFragment( pDC, prcBar, pDownload->m_nSize, pItr->begin(), pItr->size(), crNatural, false ); } for ( POSITION posSource = pDownload->GetIterator(); posSource ; ) { CDownloadSource* pSource = pDownload->GetNext( posSource ); pSource->Draw( pDC, prcBar ); } pDC->FillSolidRect( prcBar, pDownload->IsStarted() ? CoolInterface.m_crFragmentComplete : crNatural ); }