bool CWizApi::uploadAttachment(const WIZDOCUMENTATTACHMENTDATAEX& data) { Q_ASSERT(data.nObjectPart != 0); int nParts = data.nObjectPart; bool bData = (nParts & WIZKM_XMKRPC_ATTACHMENT_PART_DATA) ? true : false; m_currentAttachment = data; if (bData) { if (!m_db->LoadCompressedAttachmentData(m_currentAttachment.strGUID, m_currentAttachment.arrayData)) { QString info = data.strName; Q_EMIT processErrorLog(tr("Could not load attachment data: ") + info); //skip onUploadAttachment(data); //re-upload attachment at next time m_db->ModifyObjectVersion(data.strGUID, WIZDOCUMENTATTACHMENTDATAEX::ObjectName(), -1); return false; } WIZOBJECTDATA obj; obj.strObjectGUID = m_currentAttachment.strGUID; obj.strDisplayName = m_currentAttachment.strName; obj.eObjectType = wizobjectDocumentAttachment; obj.arrayData = m_currentAttachment.arrayData; return uploadObjectData(obj); } else { return callAttachmentPostData(data); } }
void CWizApi::onUploadObjectDataCompleted(const WIZOBJECTDATA& data) { if (data.eObjectType == wizobjectDocument) { Q_ASSERT(data.strObjectGUID == m_currentDocument.strGUID); Q_ASSERT(m_currentDocument.nObjectPart & WIZKM_XMLRPC_OBJECT_PART_DATA); m_db.SetObjectDataDownloaded(m_currentDocument.strGUID, "document", true); callDocumentPostData(m_currentDocument); } else if (data.eObjectType == wizobjectDocumentAttachment) { Q_ASSERT(data.strObjectGUID == m_currentAttachment.strGUID); Q_ASSERT(m_currentAttachment.nObjectPart & WIZKM_XMLRPC_OBJECT_PART_DATA); m_db.SetObjectDataDownloaded(m_currentDocument.strGUID, "attachment", true); callAttachmentPostData(m_currentAttachment); } else { Q_ASSERT(false); } }