예제 #1
0
void CViewTransfers::GetDocStatus(size_t item, wxString& strBuffer) const {
    CMainDocument* pDoc = wxGetApp().GetDocument();
    FILE_TRANSFER* transfer = 0;
    if (pDoc) {
        transfer = pDoc->file_transfer(item);
    }

    CC_STATUS status;
    int retval = pDoc->GetCoreClientStatus(status);

    if ((transfer) && (!retval)) {
        wxDateTime dtNextRequest((time_t)transfer->next_request_time);
        wxDateTime dtNow(wxDateTime::Now());
        if (dtNextRequest > dtNow) {
            wxTimeSpan tsNextRequest(dtNextRequest - dtNow);
            strBuffer = _("Retry in ") + tsNextRequest.Format();
        } else if (ERR_GIVEUP_DOWNLOAD == transfer->status) {
            strBuffer = _("Download failed");
        } else if (ERR_GIVEUP_UPLOAD == transfer->status) {
            strBuffer = _("Upload failed");
        } else {
            if (status.network_suspend_reason) {
                strBuffer = _("Suspended");
            } else {
                if (transfer->xfer_active) {
                    strBuffer = transfer->generated_locally? _("Uploading") : _("Downloading");
                } else {
                    strBuffer = transfer->generated_locally? _("Upload pending") : _("Download pending");
                }
            }
        }
    }
}
예제 #2
0
void CViewTransfers::GetDocStatus(wxInt32 item, wxString& strBuffer) const {
    FILE_TRANSFER* transfer = NULL;
    CMainDocument* pDoc = wxGetApp().GetDocument();
    int retval;
    strBuffer = wxString("", wxConvUTF8);
    
    transfer = pDoc->file_transfer(item);
    if (!transfer) return;
    CC_STATUS      status;

    wxASSERT(pDoc);
    wxASSERT(wxDynamicCast(pDoc, CMainDocument));

    retval = pDoc->GetCoreClientStatus(status);
    if (retval) return;

    wxDateTime dtNextRequest((time_t)transfer->next_request_time);
    wxDateTime dtNow(wxDateTime::Now());

    strBuffer = transfer->is_upload?_("Upload"):_("Download");
    strBuffer += wxString(": ", wxConvUTF8);
    if (dtNextRequest > dtNow) {
        wxTimeSpan tsNextRequest(dtNextRequest - dtNow);
        strBuffer += _("retry in ") + tsNextRequest.Format();
    } else if (transfer->status == ERR_GIVEUP_DOWNLOAD || transfer->status == ERR_GIVEUP_UPLOAD) {
        strBuffer = _("failed");
    } else {
        if (status.network_suspend_reason) {
            strBuffer += _("suspended");
            strBuffer += wxString(" - ", wxConvUTF8);
            strBuffer += suspend_reason_wxstring(status.network_suspend_reason);
        } else {
            if (transfer->xfer_active) {
                strBuffer += _("active");
            } else {
                strBuffer += _("pending");
            }
        }
    }
    if (transfer->project_backoff) {
        wxString x;
        FormatTime(transfer->project_backoff, x);
        strBuffer += _(" (project backoff: ") + x + _(")");
    }
}
wxInt32 CViewTransfersGrid::FormatStatus(wxInt32 item, wxString& strBuffer) const {
    CMainDocument* doc = wxGetApp().GetDocument();
    FILE_TRANSFER* transfer = wxGetApp().GetDocument()->file_transfer(item);
    CC_STATUS      status;

    wxASSERT(doc);
    wxASSERT(wxDynamicCast(doc, CMainDocument));

    doc->GetCoreClientStatus(status);

    wxDateTime dtNextRequest((time_t)transfer->next_request_time);
    wxDateTime dtNow(wxDateTime::Now());

    if (transfer) {
        if      (dtNextRequest > dtNow) {
            wxTimeSpan tsNextRequest(dtNextRequest - dtNow);
            strBuffer = _("Retry in ") + tsNextRequest.Format();
        } else if (ERR_GIVEUP_DOWNLOAD == transfer->status) {
            strBuffer = _("Download failed");
        } else if (ERR_GIVEUP_UPLOAD == transfer->status) {
            strBuffer = _("Upload failed");
        } else {
            if (status.network_suspend_reason) {
                strBuffer = _("Suspended");
            } else {
                if (transfer->xfer_active) {
                    strBuffer = transfer->generated_locally? _("Uploading") : _("Downloading");
                } else {
                    strBuffer = transfer->generated_locally? _("Upload pending") : _("Download pending");
                }
            }
        }
    }

	strBuffer = wxT(" ") + strBuffer;

    return 0;
}
예제 #4
0
wxString CUtils::ConstructTransferStatus(CBSLTransfer& bslTransfer)
{
    CBSLClient* pState = wxGetApp().GetState();
    CBSLHostStatus bslHostStatus;
    wxString strBuffer = wxEmptyString;

    pState->GetHostStatus(bslTransfer.GetHostHandle(), &bslHostStatus, false);

    if (bslTransfer.GetProjectBackoff() > 1)
    {
        if (bslTransfer.IsUpload())
        {
            strBuffer.Printf(
                _("Upload: pending (project backoff: %s)"),
                bslTransfer.GetProjectBackoff().Format().wx_str()
            );
        }
        else
        {
            strBuffer.Printf(
                _("Download: pending (project backoff: %s)"),
                bslTransfer.GetProjectBackoff().Format().wx_str()
            );
        }
    }
    else if (bslTransfer.GetNextRequestTime() > wxDateTime::Now())
    {
        wxTimeSpan tsNextRequest(bslTransfer.GetNextRequestTime() - wxDateTime::Now());
        if (bslTransfer.IsUpload())
        {
            strBuffer = _("Upload: retry in ") + tsNextRequest.Format();
        }
        else
        {
            strBuffer = _("Download: retry in ") + tsNextRequest.Format();
        }
    }
    else if (bslHostStatus.GetNetworkSuspendReason())
    {
        if (bslTransfer.IsUpload())
        {
            strBuffer.Printf(
                _("Upload: suspended (%s)"),
                ConstructSuspendReason(bslHostStatus.GetTaskSuspendReason()).wx_str()
            );
        }
        else
        {
            strBuffer.Printf(
                _("Download: suspended (%s)"),
                ConstructSuspendReason(bslHostStatus.GetTaskSuspendReason()).wx_str()
            );
        }
    }
    else
    {
        if (bslTransfer.IsUpload())
        {
            strBuffer = _("Upload: active");
        }
        else
        {
            strBuffer = _("Download: active");
        }
    }

    return strBuffer;
}