Skip to content

Commit

Permalink
Replace private API QZipWriter with KArchive
Browse files Browse the repository at this point in the history
Signed-off-by: Claudio Cambra <claudio.cambra@gmail.com>
  • Loading branch information
claucambra committed Aug 2, 2022
1 parent 9a84edf commit 79ee85d
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 20 deletions.
2 changes: 2 additions & 0 deletions src/gui/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
project(gui)
find_package(Qt5 REQUIRED COMPONENTS Widgets Svg Qml Quick QuickControls2 Xml Network)
find_package(KF5Archive REQUIRED)

if(QUICK_COMPILER)
find_package(Qt5QuickCompiler)
Expand Down Expand Up @@ -566,6 +567,7 @@ target_link_libraries(nextcloudCore
Qt5::Qml
Qt5::Quick
Qt5::QuickControls2
KF5::Archive
)

add_subdirectory(socketapi)
Expand Down
35 changes: 15 additions & 20 deletions src/gui/generalsettings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
#include <QScopedValueRollback>
#include <QMessageBox>

#include <private/qzipwriter_p.h>
#include <KZip>

#define QTLEGACY (QT_VERSION < QT_VERSION_CHECK(5,9,0))

Expand Down Expand Up @@ -81,7 +81,7 @@ ZipEntry syncFolderToZipEntry(OCC::Folder *f)
return fileInfoToZipEntry(journalInfo);
}

QVector<ZipEntry> createFileList()
QVector<ZipEntry> createDebugArchiveFileList()
{
auto list = QVector<ZipEntry>();
OCC::ConfigFile cfg;
Expand All @@ -91,8 +91,6 @@ QVector<ZipEntry> createFileList()
const auto logger = OCC::Logger::instance();

if (!logger->logDir().isEmpty()) {
list.append({QString(), QStringLiteral("logs")});

QDir dir(logger->logDir());
const auto infoList = dir.entryInfoList(QDir::Files);
std::transform(std::cbegin(infoList), std::cend(infoList),
Expand All @@ -112,27 +110,24 @@ QVector<ZipEntry> createFileList()

void createDebugArchive(const QString &filename)
{
const auto entries = createFileList();
const auto entries = createDebugArchiveFileList();

KZip zip(filename);
zip.open(QIODevice::WriteOnly);

// TODO: Port away from this private API (best to port to KArchive)
QZipWriter zip(filename);
zip.setCreationPermissions(zip.creationPermissions() | QFile::ReadOther);
for (const auto &entry : entries) {
if (entry.localFilename.isEmpty()) {
zip.addDirectory(entry.zipFilename);
} else {
QFile file(entry.localFilename);
if (!file.open(QFile::ReadOnly)) {
continue;
}
zip.addFile(entry.zipFilename, &file);
}
zip.addLocalFile(entry.localFilename, entry.zipFilename);
}

zip.addFile("__nextcloud_client_parameters.txt", QCoreApplication::arguments().join(' ').toUtf8());
const auto clientParameters = QCoreApplication::arguments().join(' ').toUtf8();
zip.prepareWriting("__nextcloud_client_parameters.txt", {}, {}, clientParameters.size());
zip.writeData(clientParameters, clientParameters.size());
zip.finishWriting(clientParameters.size());

const auto buildInfo = QString(OCC::Theme::instance()->about() + "\n\n" + OCC::Theme::instance()->aboutDetails());
zip.addFile("__nextcloud_client_buildinfo.txt", buildInfo.toUtf8());
const auto buildInfo = QString(OCC::Theme::instance()->about() + "\n\n" + OCC::Theme::instance()->aboutDetails()).toUtf8();
zip.prepareWriting("__nextcloud_client_buildinfo.txt", {}, {}, buildInfo.size());
zip.writeData(buildInfo, buildInfo.size());
zip.finishWriting(buildInfo.size());
}
}

Expand Down

0 comments on commit 79ee85d

Please sign in to comment.