void ImportHTML::UpdateFiles(HTMLResource &html_resource, QString & source, const QHash<QString, QString> &updates) { Q_ASSERT(&html_resource != NULL); QHash<QString, QString> html_updates; QHash<QString, QString> css_updates; QString newsource = source; QString currentpath = html_resource.GetCurrentBookRelPath(); std::tie(html_updates, css_updates, std::ignore) = UniversalUpdates::SeparateHtmlCssXmlUpdates(updates); QList<Resource *> all_files = m_Book->GetFolderKeeper().GetResourceList(); int num_files = all_files.count(); QList<CSSResource *> css_resources; for (int i = 0; i < num_files; ++i) { Resource *resource = all_files.at(i); if (resource->Type() == Resource::CSSResourceType) { css_resources.append(qobject_cast<CSSResource *>(resource)); } } QFutureSynchronizer<void> sync; sync.addFuture(QtConcurrent::map(css_resources, std::bind(UniversalUpdates::LoadAndUpdateOneCSSFile, std::placeholders::_1, css_updates))); html_resource.SetText(PerformHTMLUpdates(newsource, html_updates, css_updates, currentpath)()); html_resource.SetCurrentBookRelPath(""); sync.waitForFinished(); }
HTMLResource *ImportHTML::CreateHTMLResource() { TempFolder tempfolder; QString fullfilepath = tempfolder.GetPath() + "/" + QFileInfo(m_FullFilePath).fileName(); Utility::WriteUnicodeTextFile("TEMP_SOURCE", fullfilepath); HTMLResource *resource = qobject_cast<HTMLResource *>(m_Book->GetFolderKeeper()->AddContentFileToFolder(fullfilepath)); resource->SetCurrentBookRelPath(m_FullFilePath); return resource; }