bool CViewTransfers::SynchronizeCacheItem(wxInt32 iRowIndex, wxInt32 iColumnIndex) { wxString strDocumentText = wxEmptyString; wxString strDocumentText2 = wxEmptyString; float fDocumentFloat = 0.0; double fDocumentDouble = 0.0, fDocumentDouble2 = 0.0; CTransfer* transfer; bool bNeedRefresh = false; strDocumentText.Empty(); if (GetTransferCacheAtIndex(transfer, m_iSortedIndexes[iRowIndex])) { return false; } switch(iColumnIndex) { case COLUMN_PROJECT: GetDocProjectName(m_iSortedIndexes[iRowIndex], strDocumentText); GetDocProjectURL(m_iSortedIndexes[iRowIndex], strDocumentText2); if (!strDocumentText.IsSameAs(transfer->m_strProjectName) || !strDocumentText2.IsSameAs(transfer->m_strProjectURL)) { transfer->m_strProjectName = strDocumentText; transfer->m_strProjectURL = strDocumentText2; bNeedRefresh = true; } break; case COLUMN_FILE: GetDocFileName(m_iSortedIndexes[iRowIndex], strDocumentText); if (!strDocumentText.IsSameAs(transfer->m_strFileName)) { transfer->m_strFileName = strDocumentText; bNeedRefresh = true; } break; case COLUMN_PROGRESS: GetDocProgress(m_iSortedIndexes[iRowIndex], fDocumentFloat); if (fDocumentFloat != transfer->m_fProgress) { transfer->m_fProgress = fDocumentFloat; FormatProgress(fDocumentFloat, transfer->m_strProgress); bNeedRefresh = true; } break; case COLUMN_SIZE: GetDocBytesXferred(m_iSortedIndexes[iRowIndex], fDocumentDouble); GetDocTotalBytes(m_iSortedIndexes[iRowIndex], fDocumentDouble2); if (( fDocumentDouble != transfer->m_fBytesXferred) || (fDocumentDouble2 != transfer->m_fTotalBytes) ) { transfer->m_fBytesXferred = fDocumentDouble; transfer->m_fTotalBytes = fDocumentDouble2; FormatSize(fDocumentDouble, fDocumentDouble2, transfer->m_strSize); bNeedRefresh = true; } break; case COLUMN_TIME: GetDocTime(m_iSortedIndexes[iRowIndex], fDocumentDouble); if (fDocumentDouble != transfer->m_dTime) { transfer->m_dTime = fDocumentDouble; FormatTime(fDocumentDouble, transfer->m_strTime); bNeedRefresh = true; } break; case COLUMN_SPEED: GetDocSpeed(m_iSortedIndexes[iRowIndex], fDocumentDouble); if (fDocumentDouble != transfer->m_dSpeed) { transfer->m_dSpeed = fDocumentDouble; FormatSpeed(fDocumentDouble, transfer->m_strSpeed); bNeedRefresh = true; } break; case COLUMN_STATUS: GetDocStatus(m_iSortedIndexes[iRowIndex], strDocumentText); if (!strDocumentText.IsSameAs(transfer->m_strStatus)) { transfer->m_strStatus = strDocumentText; return true; } break; } return bNeedRefresh; }
bool CViewWork::SynchronizeCacheItem(wxInt32 iRowIndex, wxInt32 iColumnIndex) { wxString strDocumentText = wxEmptyString; wxString strDocumentText2 = wxEmptyString; float fDocumentFloat = 0.0; time_t tDocumentTime = (time_t)0; CWork* work; strDocumentText.Empty(); if (GetWorkCacheAtIndex(work, m_iSortedIndexes[iRowIndex])) { return false; } switch (iColumnIndex) { case COLUMN_PROJECT: GetDocProjectName(m_iSortedIndexes[iRowIndex], strDocumentText); GetDocProjectURL(m_iSortedIndexes[iRowIndex], strDocumentText2); if (!strDocumentText.IsSameAs(work->m_strProjectName) || !strDocumentText2.IsSameAs(work->m_strProjectURL)) { work->m_strProjectName = strDocumentText; work->m_strProjectURL = strDocumentText2; return true; } break; case COLUMN_APPLICATION: GetDocApplicationName(m_iSortedIndexes[iRowIndex], strDocumentText); if (!strDocumentText.IsSameAs(work->m_strApplicationName)) { work->m_strApplicationName = strDocumentText; return true; } break; case COLUMN_NAME: GetDocName(m_iSortedIndexes[iRowIndex], strDocumentText); if (!strDocumentText.IsSameAs(work->m_strName)) { work->m_strName = strDocumentText; return true; } break; case COLUMN_CPUTIME: GetDocCPUTime(m_iSortedIndexes[iRowIndex], fDocumentFloat); if (fDocumentFloat != work->m_fCPUTime) { work->m_fCPUTime = fDocumentFloat; FormatCPUTime(fDocumentFloat, work->m_strCPUTime); return true; } break; case COLUMN_PROGRESS: GetDocProgress(m_iSortedIndexes[iRowIndex], fDocumentFloat); if (fDocumentFloat != work->m_fProgress) { work->m_fProgress = fDocumentFloat; FormatProgress(fDocumentFloat, work->m_strProgress); return true; } break; case COLUMN_TOCOMPLETION: GetDocTimeToCompletion(m_iSortedIndexes[iRowIndex], fDocumentFloat); if (fDocumentFloat != work->m_fTimeToCompletion) { work->m_fTimeToCompletion = fDocumentFloat; FormatTimeToCompletion(fDocumentFloat, work->m_strTimeToCompletion); return true; } break; case COLUMN_REPORTDEADLINE: GetDocReportDeadline(m_iSortedIndexes[iRowIndex], tDocumentTime); if (tDocumentTime != work->m_tReportDeadline) { work->m_tReportDeadline = tDocumentTime; FormatReportDeadline(tDocumentTime, work->m_strReportDeadline); return true; } break; case COLUMN_STATUS: int i = m_iSortedIndexes[iRowIndex]; RESULT* result = wxGetApp().GetDocument()->result(i); strDocumentText = result_description(result); if (!strDocumentText.IsSameAs(work->m_strStatus)) { work->m_strStatus = strDocumentText; return true; } break; } return false; }
void CViewTransfersGrid::OnListRender( wxTimerEvent& WXUNUSED(event) ) { wxInt32 docCount = GetDocCount(); // We haven't connected up to the CC yet, there is nothing to display, make sure // everything is deleted. if ( docCount <= 0 ) { if ( m_pGridPane->GetNumberRows() ) { m_pGridPane->DeleteRows(0, m_pGridPane->GetNumberRows()); } return; } // Right-size the grid so that the number of rows matches // the document state. if(docCount != m_pGridPane->GetNumberRows()) { if (docCount > m_pGridPane->GetNumberRows()) { m_pGridPane->AppendRows(docCount - m_pGridPane->GetNumberRows()); } else { m_pGridPane->DeleteRows(0, m_pGridPane->GetNumberRows() - docCount); m_bForceUpdateSelection = true; } wxASSERT(docCount == m_pGridPane->GetNumberRows()); } m_bIgnoreUIEvents = true; m_pGridPane->SaveSelection(); m_bIgnoreUIEvents = false; //update cell values wxString strBuffer; int iMax = m_pGridPane->GetNumberRows(); for(int iRow = 0; iRow < iMax; iRow++) { FormatProjectName(iRow, strBuffer); if (m_pGridPane->GetCellValue(iRow, COLUMN_PROJECT) != strBuffer) { m_pGridPane->SetCellValue(iRow, COLUMN_PROJECT, strBuffer); } FormatFileName(iRow, strBuffer); if (m_pGridPane->GetCellValue(iRow, COLUMN_FILE) != strBuffer) { m_pGridPane->SetCellValue(iRow, COLUMN_FILE, strBuffer); } FormatProgress(iRow, strBuffer); if (m_pGridPane->GetCellValue(iRow, COLUMN_PROGRESS) != strBuffer) { m_pGridPane->SetCellValue(iRow, COLUMN_PROGRESS, strBuffer); m_pGridPane->SetCellAlignment(iRow, COLUMN_PROGRESS, wxALIGN_CENTRE, wxALIGN_CENTRE); } FormatSize(iRow, strBuffer); if (m_pGridPane->GetCellValue(iRow, COLUMN_SIZE) != strBuffer) { m_pGridPane->SetCellValue(iRow, COLUMN_SIZE, strBuffer); } FormatTime(iRow, strBuffer); if (m_pGridPane->GetCellValue(iRow, COLUMN_TIME) != strBuffer) { m_pGridPane->SetCellValue(iRow, COLUMN_TIME, strBuffer); } FormatSpeed(iRow, strBuffer); if (m_pGridPane->GetCellValue(iRow, COLUMN_SPEED) != strBuffer) { m_pGridPane->SetCellValue(iRow, COLUMN_SPEED, strBuffer); } strBuffer = wxEmptyString; FormatStatus(iRow, strBuffer); if (m_pGridPane->GetCellValue(iRow, COLUMN_STATUS) != strBuffer) { m_pGridPane->SetCellValue(iRow, COLUMN_STATUS, strBuffer); } FormatProjectURL(iRow, strBuffer); if (m_pGridPane->GetCellValue(iRow, COLUMN_HIDDEN_URL) != strBuffer) { m_pGridPane->SetCellValue(iRow, COLUMN_HIDDEN_URL, strBuffer); } } m_pGridPane->SortData(); m_bIgnoreUIEvents = true; m_pGridPane->RestoreSelection(); m_bIgnoreUIEvents = false; UpdateSelection(); }