void CWizDocument::PermanentlyDelete() { CWizDocumentAttachmentDataArray arrayAttachment; m_db.GetDocumentAttachments(m_data.strGUID, arrayAttachment); CWizDocumentAttachmentDataArray::const_iterator it; for (it = arrayAttachment.begin(); it != arrayAttachment.end(); it++) { CString strFileName = m_db.GetAttachmentFileName(it->strGUID); ::WizDeleteFile(strFileName); m_db.DeleteAttachment(*it, true); } if (!m_db.DeleteDocument(m_data, true)) { TOLOG1(_T("Failed to delete document: %1"), m_data.strTitle); return; } CString strZipFileName = m_db.GetDocumentFileName(m_data.strGUID); if (PathFileExists(strZipFileName)) { WizDeleteFile(strZipFileName); } }
bool WizNoteManager::updateLocalTemplates(const QByteArray& newJsonData, QNetworkAccessManager& manager) { rapidjson::Document d; d.Parse(newJsonData.constData()); if (d.HasParseError()) return false; QString localFile = Utils::WizPathResolve::wizTemplateJsonFilePath(); bool needUpdateJs = true; QMap<int, TemplateData> localTmplMap; QFile file(localFile); if (file.open(QFile::ReadOnly)) { QTextStream stream(&file); QString jsonData = stream.readAll(); rapidjson::Document localD; localD.Parse(jsonData.toUtf8().constData()); if (!localD.HasParseError()) { if (localD.HasMember("template_js_version") && d.HasMember("template_js_version")) { needUpdateJs = (localD.FindMember("template_js_version")->value.GetString() != d.FindMember("template_js_version")->value.GetString()); } } getTemplatesFromJsonData(jsonData.toUtf8(), localTmplMap); } // if (needUpdateJs) { QString link; if (d.HasMember("template_js_link")) { link = d.FindMember("template_js_link")->value.GetString(); } if (!link.isEmpty()) { qDebug() << "get templates js file from url : " << link; QString file = Utils::WizPathResolve::wizTemplateJsFilePath(); QNetworkReply* reply = manager.get(QNetworkRequest(link)); // WizAutoTimeOutEventLoop loop(reply); loop.exec(); // if (loop.error() != QNetworkReply::NoError || loop.result().isEmpty()) return false; QByteArray ba = loop.result(); std::ofstream jsFile(file.toUtf8().constData(), std::ios::out | std::ios::trunc); jsFile << ba.constData(); } } // QMap<int, TemplateData> serverTmplMap; getTemplatesFromJsonData(newJsonData, serverTmplMap); //下载服务器上有更新的模板 for (auto it = serverTmplMap.begin(); it != serverTmplMap.end(); ++it) { auto iter = localTmplMap.find(it.key()); if (iter == localTmplMap.end()) continue; if (iter.value().strVersion != it.value().strVersion || !QFile::exists(it.value().strFileName)) { QString strUrl = WizCommonApiEntry::asServerUrl() + "/a/templates/download/" + QString::number(it.value().id); QFileInfo info(it.value().strFileName); WizFileDownloader* downloader = new WizFileDownloader(strUrl, info.fileName(), info.absolutePath() + "/", false); downloader->startDownload(); } } //删除服务器上不存在的模板 for (auto it = localTmplMap.begin(); it != localTmplMap.end(); ++it) { auto iter = serverTmplMap.find(it.key()); if (iter == localTmplMap.end()) { WizDeleteFile(it.value().strFileName); } } return true; }