refactor to remove code duplication

Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
Trial97 2025-01-16 17:04:53 +02:00
parent 9d25680587
commit 797cacf804
No known key found for this signature in database
GPG Key ID: 55EF5DA53DB36318
6 changed files with 33 additions and 62 deletions

View File

@ -273,3 +273,28 @@ bool FileIgnoreProxy::filterFile(const QString& fileName) const
{ {
return m_blocked.covers(fileName) || ignoreFile(QFileInfo(QDir(m_root), fileName)); 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();
}
}

View File

@ -71,6 +71,10 @@ class FileIgnoreProxy : public QSortFilterProxyModel {
bool filterFile(const QString& fileName) const; bool filterFile(const QString& fileName) const;
void loadBlockedPathsFromFile(const QString& fileName);
void saveBlockedPathsToFile(const QString& fileName);
protected: protected:
bool filterAcceptsColumn(int source_column, const QModelIndex& source_parent) const; bool filterAcceptsColumn(int source_column, const QModelIndex& source_parent) const;
bool filterAcceptsRow(int source_row, const QModelIndex& source_parent) const; bool filterAcceptsRow(int source_row, const QModelIndex& source_parent) const;

View File

@ -73,7 +73,7 @@ ExportInstanceDialog::ExportInstanceDialog(InstancePtr instance, QWidget* parent
m_proxyModel->ignoreFilesWithPath().insert(FS::PathCombine(prefix, path)); m_proxyModel->ignoreFilesWithPath().insert(FS::PathCombine(prefix, path));
} }
m_proxyModel->ignoreFilesWithName().append({ ".DS_Store", "thumbs.db", "Thumbs.db" }); m_proxyModel->ignoreFilesWithName().append({ ".DS_Store", "thumbs.db", "Thumbs.db" });
loadPackIgnore(); m_proxyModel->loadBlockedPathsFromFile(ignoreFileName());
m_ui->treeView->setModel(m_proxyModel); m_ui->treeView->setModel(m_proxyModel);
m_ui->treeView->setRootIndex(m_proxyModel->mapFromSource(model->index(root))); m_ui->treeView->setRootIndex(m_proxyModel->mapFromSource(model->index(root)));
@ -164,7 +164,7 @@ void ExportInstanceDialog::doExport()
void ExportInstanceDialog::done(int result) void ExportInstanceDialog::done(int result)
{ {
savePackIgnore(); m_proxyModel->saveBlockedPathsToFile(ignoreFileName());
if (result == QDialog::Accepted) { if (result == QDialog::Accepted) {
doExport(); doExport();
return; return;
@ -191,30 +191,3 @@ QString ExportInstanceDialog::ignoreFileName()
{ {
return FS::PathCombine(m_instance->instanceRoot(), ".packignore"); 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();
}
}

View File

@ -60,8 +60,6 @@ class ExportInstanceDialog : public QDialog {
private: private:
void doExport(); void doExport();
void loadPackIgnore();
void savePackIgnore();
QString ignoreFileName(); QString ignoreFileName();
private: private:

View File

@ -79,7 +79,7 @@ ExportPackDialog::ExportPackDialog(InstancePtr instance, QWidget* parent, ModPla
} }
m_proxy->ignoreFilesWithName().append({ ".DS_Store", "thumbs.db", "Thumbs.db" }); m_proxy->ignoreFilesWithName().append({ ".DS_Store", "thumbs.db", "Thumbs.db" });
m_proxy->setSourceModel(model); m_proxy->setSourceModel(model);
loadPackIgnore(); m_proxy->loadBlockedPathsFromFile(ignoreFileName());
const QDir::Filters filter(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::AllDirs | QDir::Hidden); const QDir::Filters filter(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::AllDirs | QDir::Hidden);
@ -112,7 +112,7 @@ ExportPackDialog::~ExportPackDialog()
void ExportPackDialog::done(int result) void ExportPackDialog::done(int result)
{ {
savePackIgnore(); m_proxy->saveBlockedPathsToFile(ignoreFileName());
auto settings = m_instance->settings(); auto settings = m_instance->settings();
settings->set("ExportName", m_ui->name->text()); settings->set("ExportName", m_ui->name->text());
settings->set("ExportVersion", m_ui->version->text()); settings->set("ExportVersion", m_ui->version->text());
@ -180,30 +180,3 @@ QString ExportPackDialog::ignoreFileName()
{ {
return FS::PathCombine(m_instance->instanceRoot(), ".packignore"); 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();
}
}

View File

@ -41,8 +41,6 @@ class ExportPackDialog : public QDialog {
void validate(); void validate();
private: private:
void loadPackIgnore();
void savePackIgnore();
QString ignoreFileName(); QString ignoreFileName();
private: private: