diff --git a/ui/tabs/fattools/fattoolstabsignals.cpp b/ui/tabs/fattools/fattoolstabsignals.cpp index 010ac68..76fe0cb 100644 --- a/ui/tabs/fattools/fattoolstabsignals.cpp +++ b/ui/tabs/fattools/fattoolstabsignals.cpp @@ -8,7 +8,7 @@ void MainWindow::on_fatExtractorLoadFatDataBtn_clicked() QString FatDataPath = QFileDialog::getOpenFileName( Q_NULLPTR, "NDS Fat Data", - QDir::currentPath(), + "", "NDS FAT_DATA (*.bin)"); if (!FatDataPath.isNull()) @@ -22,7 +22,7 @@ void MainWindow::on_fatExtractorLoadFatBtn_clicked() QString FatPath = QFileDialog::getOpenFileName( Q_NULLPTR, "NDS Fat", - QDir::currentPath(), + "", "NDS FAT (*.bin)"); if (!FatPath.isNull()) @@ -36,7 +36,7 @@ void MainWindow::on_fatExtractorLoadFntBtn_clicked() QString FntPath = QFileDialog::getOpenFileName( Q_NULLPTR, "NDS Fnt", - QDir::currentPath(), + "", "NDS FNT (*.bin)"); if (!FntPath.isNull()) @@ -68,7 +68,7 @@ void MainWindow::on_fatPatcherLoadFatBtn_clicked() QString fatPath = QFileDialog::getOpenFileName( Q_NULLPTR, "NDS Fat", - QDir::currentPath(), + "", "NDS Fat (*.bin)"); if( !fatPath.isNull() ) diff --git a/ui/tabs/packer/packertabsignals.cpp b/ui/tabs/packer/packertabsignals.cpp index f342d03..48b59f9 100644 --- a/ui/tabs/packer/packertabsignals.cpp +++ b/ui/tabs/packer/packertabsignals.cpp @@ -35,7 +35,7 @@ void MainWindow::on_packerLoadArm9BinBtn_clicked() QString arm9BinPath = QFileDialog::getOpenFileName( Q_NULLPTR, "NDS Arm9Bin", - QDir::currentPath(), + "", "NDS Arm9Bin (*.bin)"); if(!arm9BinPath.isNull()) @@ -49,7 +49,7 @@ void MainWindow::on_packerLoadArm7BinBtn_clicked() QString arm7BinPath = QFileDialog::getOpenFileName( Q_NULLPTR, "NDS Arm7Bin", - QDir::currentPath(), + "", "NDS Arm7Bin (*.bin)"); if(!arm7BinPath.isNull()) @@ -63,7 +63,7 @@ void MainWindow::on_packerLoadFntBtn_clicked() QString fntPath = QFileDialog::getOpenFileName( Q_NULLPTR, "NDS Fnt", - QDir::currentPath(), + "", "NDS Fnt (*.bin)"); if(!fntPath.isNull()) @@ -77,7 +77,7 @@ void MainWindow::on_packerLoadFatBtn_clicked() QString fatPath = QFileDialog::getOpenFileName( Q_NULLPTR, "NDS Fat", - QDir::currentPath(), + "", "NDS Fat (*.bin)"); if(!fatPath.isNull()) @@ -91,7 +91,7 @@ void MainWindow::on_packerLoadArm9OverlayBtn_clicked() QString arm9OverlayPath = QFileDialog::getOpenFileName( Q_NULLPTR, "NDS Arm9Overlay", - QDir::currentPath(), + "", "NDS A9OVR (*.bin)"); if( !arm9OverlayPath.isNull() ) @@ -105,7 +105,7 @@ void MainWindow::on_packerLoadArm9OverlayFilesBtn_clicked() QString arm9OverlayFilesPath = QFileDialog::getOpenFileName( Q_NULLPTR, "NDS Arm9Overlay Data", - QDir::currentPath(), + "", "NDS A9OVR_DATA (*.bin)"); if(!arm9OverlayFilesPath.isNull()) @@ -119,7 +119,7 @@ void MainWindow::on_packerLoadArm7OverlayBtn_clicked() QString arm7OverlayPath = QFileDialog::getOpenFileName( Q_NULLPTR, "NDS Arm7Overlay", - QDir::currentPath(), + "", "NDS A7OVR (*.bin)"); if(!arm7OverlayPath.isNull()) @@ -133,7 +133,7 @@ void MainWindow::on_packerLoadArm7OverlayFilesBtn_clicked() QString arm7OverlayFilesPath = QFileDialog::getOpenFileName( Q_NULLPTR, "NDS Arm7Overlay Data", - QDir::currentPath(), + "", "NDS A7OVR_DATA (*.bin)"); if(!arm7OverlayFilesPath.isNull()) @@ -147,7 +147,7 @@ void MainWindow::on_packerLoadIconTitleBtn_clicked() QString iconTitlePath = QFileDialog::getOpenFileName( Q_NULLPTR, "NDS IconTitleLogo", - QDir::currentPath(), + "", "NDS ITL (*.bin)"); if(!iconTitlePath.isNull()) @@ -161,7 +161,7 @@ void MainWindow::on_packerLoadFatFilesBtn_clicked() QString fatFilesPath = QFileDialog::getOpenFileName( Q_NULLPTR, "NDS Fat Data", - QDir::currentPath(), + "", "NDS FAT_DATA (*.bin)"); if(!fatFilesPath.isNull()) diff --git a/ui/tabs/unpacker/unpackertabsignals.cpp b/ui/tabs/unpacker/unpackertabsignals.cpp index af814d8..e80f8c8 100644 --- a/ui/tabs/unpacker/unpackertabsignals.cpp +++ b/ui/tabs/unpacker/unpackertabsignals.cpp @@ -3,6 +3,7 @@ #include #include "./../../mainwindow.h" #include "./../../ui_mainwindow.h" +#include "./../../utils/filepicker.h" void MainWindow::on_loadRomBtn_clicked() @@ -34,11 +35,7 @@ void MainWindow::on_loadRomBtn_clicked() void MainWindow::on_unpackerDumpHeaderBtn_clicked() { - QString dirPath = QFileDialog::getSaveFileName( - Q_NULLPTR, - "NDS Header", - "header.bin", - "Binary (*.bin)"); + QString dirPath = customSaveFileDialog("NDS Header", "header.bin", "Binary (*.bin)"); if (!dirPath.isNull()) notifyExtractionResult(dumpHeader(dirPath.toStdString())); @@ -46,11 +43,7 @@ void MainWindow::on_unpackerDumpHeaderBtn_clicked() void MainWindow::on_unpackerDumpArm9Btn_clicked() { - QString dirPath = QFileDialog::getSaveFileName( - Q_NULLPTR, - "NDS ARM9", - "arm9.bin", - "Binary (*.bin)"); + QString dirPath = customSaveFileDialog("NDS ARM9", "arm9.bin", "Binary (*.bin)"); QMessageBox::StandardButton dumpExtraBytes = QMessageBox::question( this, @@ -64,11 +57,7 @@ void MainWindow::on_unpackerDumpArm9Btn_clicked() void MainWindow::on_unpackerDumpArm7Btn_clicked() { - QString dirPath = QFileDialog::getSaveFileName( - Q_NULLPTR, - "NDS ARM7", - "arm7.bin", - "Binary (*.bin)"); + QString dirPath = customSaveFileDialog("NDS ARM7", "arm7.bin", "Binary (*.bin)"); if (!dirPath.isNull()) notifyExtractionResult(dumpArm7Bin(dirPath.toStdString())); @@ -76,11 +65,7 @@ void MainWindow::on_unpackerDumpArm7Btn_clicked() void MainWindow::on_unpackerDumpFntBtn_clicked() { - QString dirPath = QFileDialog::getSaveFileName( - Q_NULLPTR, - "NDS FNT", - "fnt.bin", - "Binary (*.bin)"); + QString dirPath = customSaveFileDialog("NDS FNT", "fnt.bin", "Binary (*.bin)"); if (!dirPath.isNull()) notifyExtractionResult(dumpFnt(dirPath.toStdString())); @@ -88,11 +73,7 @@ void MainWindow::on_unpackerDumpFntBtn_clicked() void MainWindow::on_unpackerDumpFatBtn_clicked() { - QString dirPath = QFileDialog::getSaveFileName( - Q_NULLPTR, - "NDS FAT", - "fat.bin", - "Binary (*.bin)"); + QString dirPath = customSaveFileDialog("NDS FAT", "fat.bin", "Binary (*.bin)"); if (!dirPath.isNull()) notifyExtractionResult(dumpFat(dirPath.toStdString())); @@ -100,11 +81,7 @@ void MainWindow::on_unpackerDumpFatBtn_clicked() void MainWindow::on_unpackerDumpArm9OverlayBtn_clicked() { - QString dirPath = QFileDialog::getSaveFileName( - Q_NULLPTR, - "NDS ARM9 Overlay", - "a9ovr.bin", - "Binary (*.bin)"); + QString dirPath = customSaveFileDialog("NDS ARM9 Overlay", "a9ovr.bin", "Binary (*.bin)"); if (!dirPath.isNull()) notifyExtractionResult(dumpArm9Overlay(dirPath.toStdString())); @@ -112,11 +89,7 @@ void MainWindow::on_unpackerDumpArm9OverlayBtn_clicked() void MainWindow::on_unpackerDumpArm7OverlayBtn_clicked() { - QString dirPath = QFileDialog::getSaveFileName( - Q_NULLPTR, - "NDS ARM7 Overlay", - "a7ovr.bin", - "Binary (*.bin)"); + QString dirPath = customSaveFileDialog("NDS ARM7 Overlay", "a7ovr.bin", "Binary (*.bin)"); if (!dirPath.isNull()) notifyExtractionResult(dumpArm7Overlay(dirPath.toStdString())); @@ -124,11 +97,7 @@ void MainWindow::on_unpackerDumpArm7OverlayBtn_clicked() void MainWindow::on_unpackerDumpIconTitleLogoBtn_clicked() { - QString dirPath = QFileDialog::getSaveFileName( - Q_NULLPTR, - "NDS IconTitleLogo", - "itl.bin", - "Binary (*.bin)"); + QString dirPath = customSaveFileDialog("NDS IconTitleLogo", "itl.bin", "Binary (*.bin)"); if (!dirPath.isNull()) notifyExtractionResult(dumpIconTitle(dirPath.toStdString())); @@ -136,11 +105,7 @@ void MainWindow::on_unpackerDumpIconTitleLogoBtn_clicked() void MainWindow::on_unpackerDumpFatFilesBtn_clicked() { - QString dirPath = QFileDialog::getSaveFileName( - Q_NULLPTR, - "NDS FAT Files", - "fat_data.bin", - "Binary (*.bin)"); + QString dirPath = customSaveFileDialog("NDS FAT Files", "fat_data.bin", "Binary (*.bin)"); if (!dirPath.isNull()) notifyExtractionResult(dumpFatFiles(dirPath.toStdString())); @@ -148,11 +113,7 @@ void MainWindow::on_unpackerDumpFatFilesBtn_clicked() void MainWindow::on_unpackerDumpArm9OverlayFilesBtn_clicked() { - QString dirPath = QFileDialog::getSaveFileName( - Q_NULLPTR, - "NDS ARM9 Overlay Data", - "a9ovr_data.bin", - "Binary (*.bin)"); + QString dirPath = customSaveFileDialog("NDS ARM9 Overlay Data", "a9ovr_data.bin", "Binary (*.bin)"); if (!dirPath.isNull()) notifyExtractionResult(dumpArm9OverlayFiles(dirPath.toStdString())); @@ -160,11 +121,7 @@ void MainWindow::on_unpackerDumpArm9OverlayFilesBtn_clicked() void MainWindow::on_unpackerDumpArm7OverlayFilesBtn_clicked() { - QString dirPath = QFileDialog::getSaveFileName( - Q_NULLPTR, - "NDS ARM7 Overlay Data", - "a7ovr_data.bin", - "Binary (*.bin)"); + QString dirPath = customSaveFileDialog("NDS ARM7 Overlay Data", "a7ovr_data.bin", "Binary (*.bin)"); if (!dirPath.isNull()) notifyExtractionResult(dumpArm7OverlayFiles(dirPath.toStdString())); diff --git a/ui/utils/filepicker.h b/ui/utils/filepicker.h new file mode 100644 index 0000000..6a4bb49 --- /dev/null +++ b/ui/utils/filepicker.h @@ -0,0 +1,21 @@ +#pragma once + + +#include + +QString customSaveFileDialog(const QString& title, const QString& defaultName, const QString& filter) +{ + + static QString lastUsedPath; + + QString selectedPath = QFileDialog::getSaveFileName( + Q_NULLPTR, + title, + lastUsedPath + defaultName, + filter); + + if (!selectedPath.isNull()) + lastUsedPath = selectedPath.mid(0, selectedPath.lastIndexOf('/', Qt::CaseInsensitive)+1); + + return selectedPath; +} \ No newline at end of file