void CControlSocket::LogTransferResultMessage(int nErrorCode, CFileTransferOpData *pData) { bool tmp; CTransferStatus const status = engine_.transfer_status_.Get(tmp); if (!status.empty() && (nErrorCode == FZ_REPLY_OK || status.madeProgress)) { int elapsed = static_cast<int>((fz::datetime::now() - status.started).get_seconds()); if (elapsed <= 0) elapsed = 1; wxString time = wxString::Format( wxPLURAL("%d second", "%d seconds", elapsed), elapsed); int64_t transferred = status.currentOffset - status.startOffset; wxString size = CSizeFormatBase::Format(&engine_.GetOptions(), transferred, true); MessageType msgType = MessageType::Error; wxString msg; if (nErrorCode == FZ_REPLY_OK) { msgType = MessageType::Status; msg = _("File transfer successful, transferred %s in %s"); } else if ((nErrorCode & FZ_REPLY_CANCELED) == FZ_REPLY_CANCELED) msg = _("File transfer aborted by user after transferring %s in %s"); else if ((nErrorCode & FZ_REPLY_CRITICALERROR) == FZ_REPLY_CRITICALERROR) msg = _("Critical file transfer error after transferring %s in %s"); else msg = _("File transfer failed after transferring %s in %s"); LogMessage(msgType, msg, size, time); } else { if ((nErrorCode & FZ_REPLY_CANCELED) == FZ_REPLY_CANCELED) LogMessage(MessageType::Error, _("File transfer aborted by user")); else if (nErrorCode == FZ_REPLY_OK) { if (pData->transferInitiated) LogMessage(MessageType::Status, _("File transfer successful")); else LogMessage(MessageType::Status, _("File transfer skipped")); } else if ((nErrorCode & FZ_REPLY_CRITICALERROR) == FZ_REPLY_CRITICALERROR) LogMessage(MessageType::Error, _("Critical file transfer error")); else LogMessage(MessageType::Error, _("File transfer failed")); } }
void CStatusLineCtrl::OnTimer(wxTimerEvent&) { if (!m_pEngineData || !m_pEngineData->pEngine) { m_transferStatusTimer.Stop(); return; } bool changed; CTransferStatus status = m_pEngineData->pEngine->GetTransferStatus(changed); if (status.empty()) ClearTransferStatus(); else if (changed) { if (status.madeProgress && !status.list && m_pEngineData->pItem->GetType() == QueueItemType::File) { CFileItem* pItem = (CFileItem*)m_pEngineData->pItem; pItem->set_made_progress(true); } SetTransferStatus(status); } else m_transferStatusTimer.Stop(); }