From 797cacf804e48a316a23472c0b755d32197a5938 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 16 Jan 2025 17:04:53 +0200 Subject: [PATCH] refactor to remove code duplication Signed-off-by: Trial97 --- launcher/FileIgnoreProxy.cpp | 25 ++++++++++++++++ launcher/FileIgnoreProxy.h | 4 +++ launcher/ui/dialogs/ExportInstanceDialog.cpp | 31 ++------------------ launcher/ui/dialogs/ExportInstanceDialog.h | 2 -- launcher/ui/dialogs/ExportPackDialog.cpp | 31 ++------------------ launcher/ui/dialogs/ExportPackDialog.h | 2 -- 6 files changed, 33 insertions(+), 62 deletions(-) diff --git a/launcher/FileIgnoreProxy.cpp b/launcher/FileIgnoreProxy.cpp index cf716b8d1..89c91ec1d 100644 --- a/launcher/FileIgnoreProxy.cpp +++ b/launcher/FileIgnoreProxy.cpp @@ -273,3 +273,28 @@ bool FileIgnoreProxy::filterFile(const QString& fileName) const { return m_blocked.covers(fileName) || ignoreFile(QFileInfo(QDir(m_root), fileName)); } + +void FileIgnoreProxy::loadBlockedPathsFromFile(const QString& fileName) +{ + QFile ignoreFile(fileName); + if (!ignoreFile.open(QIODevice::ReadOnly)) { + return; + } + auto ignoreData = ignoreFile.readAll(); + auto string = QString::fromUtf8(ignoreData); +#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) + setBlockedPaths(string.split('\n', Qt::SkipEmptyParts)); +#else + setBlockedPaths(string.split('\n', QString::SkipEmptyParts)); +#endif +} + +void FileIgnoreProxy::saveBlockedPathsToFile(const QString& fileName) +{ + auto ignoreData = blockedPaths().toStringList().join('\n').toUtf8(); + try { + FS::write(fileName, ignoreData); + } catch (const Exception& e) { + qWarning() << e.cause(); + } +} diff --git a/launcher/FileIgnoreProxy.h b/launcher/FileIgnoreProxy.h index a633739c6..25d85ab60 100644 --- a/launcher/FileIgnoreProxy.h +++ b/launcher/FileIgnoreProxy.h @@ -71,6 +71,10 @@ class FileIgnoreProxy : public QSortFilterProxyModel { bool filterFile(const QString& fileName) const; + void loadBlockedPathsFromFile(const QString& fileName); + + void saveBlockedPathsToFile(const QString& fileName); + protected: bool filterAcceptsColumn(int source_column, const QModelIndex& source_parent) const; bool filterAcceptsRow(int source_row, const QModelIndex& source_parent) const; diff --git a/launcher/ui/dialogs/ExportInstanceDialog.cpp b/launcher/ui/dialogs/ExportInstanceDialog.cpp index 1acecc6df..51e338503 100644 --- a/launcher/ui/dialogs/ExportInstanceDialog.cpp +++ b/launcher/ui/dialogs/ExportInstanceDialog.cpp @@ -73,7 +73,7 @@ ExportInstanceDialog::ExportInstanceDialog(InstancePtr instance, QWidget* parent m_proxyModel->ignoreFilesWithPath().insert(FS::PathCombine(prefix, path)); } m_proxyModel->ignoreFilesWithName().append({ ".DS_Store", "thumbs.db", "Thumbs.db" }); - loadPackIgnore(); + m_proxyModel->loadBlockedPathsFromFile(ignoreFileName()); m_ui->treeView->setModel(m_proxyModel); m_ui->treeView->setRootIndex(m_proxyModel->mapFromSource(model->index(root))); @@ -164,7 +164,7 @@ void ExportInstanceDialog::doExport() void ExportInstanceDialog::done(int result) { - savePackIgnore(); + m_proxyModel->saveBlockedPathsToFile(ignoreFileName()); if (result == QDialog::Accepted) { doExport(); return; @@ -191,30 +191,3 @@ QString ExportInstanceDialog::ignoreFileName() { return FS::PathCombine(m_instance->instanceRoot(), ".packignore"); } - -void ExportInstanceDialog::loadPackIgnore() -{ - auto filename = ignoreFileName(); - QFile ignoreFile(filename); - if (!ignoreFile.open(QIODevice::ReadOnly)) { - return; - } - auto ignoreData = ignoreFile.readAll(); - auto string = QString::fromUtf8(ignoreData); -#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) - m_proxyModel->setBlockedPaths(string.split('\n', Qt::SkipEmptyParts)); -#else - m_proxyModel->setBlockedPaths(string.split('\n', QString::SkipEmptyParts)); -#endif -} - -void ExportInstanceDialog::savePackIgnore() -{ - auto ignoreData = m_proxyModel->blockedPaths().toStringList().join('\n').toUtf8(); - auto filename = ignoreFileName(); - try { - FS::write(filename, ignoreData); - } catch (const Exception& e) { - qWarning() << e.cause(); - } -} diff --git a/launcher/ui/dialogs/ExportInstanceDialog.h b/launcher/ui/dialogs/ExportInstanceDialog.h index b74550033..989e1635a 100644 --- a/launcher/ui/dialogs/ExportInstanceDialog.h +++ b/launcher/ui/dialogs/ExportInstanceDialog.h @@ -60,8 +60,6 @@ class ExportInstanceDialog : public QDialog { private: void doExport(); - void loadPackIgnore(); - void savePackIgnore(); QString ignoreFileName(); private: diff --git a/launcher/ui/dialogs/ExportPackDialog.cpp b/launcher/ui/dialogs/ExportPackDialog.cpp index 5b3866d3f..303df94a1 100644 --- a/launcher/ui/dialogs/ExportPackDialog.cpp +++ b/launcher/ui/dialogs/ExportPackDialog.cpp @@ -79,7 +79,7 @@ ExportPackDialog::ExportPackDialog(InstancePtr instance, QWidget* parent, ModPla } m_proxy->ignoreFilesWithName().append({ ".DS_Store", "thumbs.db", "Thumbs.db" }); m_proxy->setSourceModel(model); - loadPackIgnore(); + m_proxy->loadBlockedPathsFromFile(ignoreFileName()); const QDir::Filters filter(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::AllDirs | QDir::Hidden); @@ -112,7 +112,7 @@ ExportPackDialog::~ExportPackDialog() void ExportPackDialog::done(int result) { - savePackIgnore(); + m_proxy->saveBlockedPathsToFile(ignoreFileName()); auto settings = m_instance->settings(); settings->set("ExportName", m_ui->name->text()); settings->set("ExportVersion", m_ui->version->text()); @@ -180,30 +180,3 @@ QString ExportPackDialog::ignoreFileName() { return FS::PathCombine(m_instance->instanceRoot(), ".packignore"); } - -void ExportPackDialog::loadPackIgnore() -{ - auto filename = ignoreFileName(); - QFile ignoreFile(filename); - if (!ignoreFile.open(QIODevice::ReadOnly)) { - return; - } - auto ignoreData = ignoreFile.readAll(); - auto string = QString::fromUtf8(ignoreData); -#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) - m_proxy->setBlockedPaths(string.split('\n', Qt::SkipEmptyParts)); -#else - m_proxy->setBlockedPaths(string.split('\n', QString::SkipEmptyParts)); -#endif -} - -void ExportPackDialog::savePackIgnore() -{ - auto ignoreData = m_proxy->blockedPaths().toStringList().join('\n').toUtf8(); - auto filename = ignoreFileName(); - try { - FS::write(filename, ignoreData); - } catch (const Exception& e) { - qWarning() << e.cause(); - } -} diff --git a/launcher/ui/dialogs/ExportPackDialog.h b/launcher/ui/dialogs/ExportPackDialog.h index 8931922a9..092288d49 100644 --- a/launcher/ui/dialogs/ExportPackDialog.h +++ b/launcher/ui/dialogs/ExportPackDialog.h @@ -41,8 +41,6 @@ class ExportPackDialog : public QDialog { void validate(); private: - void loadPackIgnore(); - void savePackIgnore(); QString ignoreFileName(); private: