1
Fork 0
mirror of https://github.com/redstrate/Novus.git synced 2025-04-25 05:17:44 +00:00

karaku: Finish up definition import function

This allows importing defintions offline or with a custom set of definitions easily.
This commit is contained in:
Joshua Goins 2024-02-03 09:31:57 -05:00
parent 57e3cd5fa8
commit 3623b3fe29

View file

@ -57,12 +57,48 @@ MainWindow::MainWindow(GameData *data)
}); });
} }
static bool copyDirectory(const QString &srcFilePath, const QString &tgtFilePath)
{
QFileInfo srcFileInfo(srcFilePath);
if (srcFileInfo.isDir()) {
const QDir targetDir(tgtFilePath);
const QDir sourceDir(srcFilePath);
const QStringList fileNames = sourceDir.entryList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot | QDir::Hidden | QDir::System);
for (const QString &fileName : fileNames) {
const QString newSrcFilePath = srcFilePath + QLatin1Char('/') + fileName;
const QString newTgtFilePath = tgtFilePath + QLatin1Char('/') + fileName;
if (!QFile::copy(newSrcFilePath, newTgtFilePath)) {
return false;
}
}
return true;
}
return false;
}
void MainWindow::setupFileMenu(QMenu *menu) void MainWindow::setupFileMenu(QMenu *menu)
{ {
auto openList = menu->addAction(QStringLiteral("Import Definitions...")); auto openList = menu->addAction(QStringLiteral("Import Definitions..."));
openList->setIcon(QIcon::fromTheme(QStringLiteral("document-open"))); openList->setIcon(QIcon::fromTheme(QStringLiteral("document-open")));
connect(openList, &QAction::triggered, [this] { connect(openList, &QAction::triggered, [this] {
auto fileName = QFileDialog::getOpenFileName(nullptr, QStringLiteral("Open Path List"), QStringLiteral("~")); auto fileName = QFileDialog::getExistingDirectory(nullptr, QStringLiteral("Open Defintions Directory"), QStringLiteral("~"));
const QDir dataDir = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
const QDir definitionsDir = dataDir.absoluteFilePath(QStringLiteral("definitions"));
// delete old directory
if (definitionsDir.exists()) {
QDir().rmdir(definitionsDir.absolutePath());
}
QDir().mkpath(definitionsDir.absolutePath());
copyDirectory(fileName, definitionsDir.absolutePath());
QMessageBox::information(this, QStringLiteral("Definitions"), QStringLiteral("Successfully imported definitions!"));
}); });
auto downloadList = menu->addAction(QStringLiteral("Download Definitions...")); auto downloadList = menu->addAction(QStringLiteral("Download Definitions..."));
@ -120,7 +156,7 @@ void MainWindow::setupFileMenu(QMenu *menu)
archive.close(); archive.close();
QMessageBox::information(this, QStringLiteral("Definitions"), QStringLiteral("Successfully updated definitions!")); QMessageBox::information(this, QStringLiteral("Definitions"), QStringLiteral("Successfully downloaded and imported definitions!"));
}); });
}); });
} }