From 0c536a4c12e37caec2c3107875a97d5343c2a0a0 Mon Sep 17 00:00:00 2001 From: Thomas Tanner Date: Tue, 15 Dec 2015 15:58:01 +0000 Subject: Makes iSaveGame responsible for returning all files involved in savegame. Cleans up save deletion and save transfer dialogue somewhat --- src/mainwindow.cpp | 86 +++++++++++++++++++++++++----------------------------- 1 file changed, 40 insertions(+), 46 deletions(-) (limited to 'src/mainwindow.cpp') diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 8c292f08..03233398 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -28,9 +28,11 @@ along with Mod Organizer. If not, see . #include "imodinterface.h" #include "iplugingame.h" #include "iplugindiagnose.h" +#include "isavegame.h" #include "nexusinterface.h" #include "organizercore.h" #include "previewgenerator.h" +#include "savegameinfo.h" #include "spawn.h" #include "versioninfo.h" @@ -70,7 +72,6 @@ along with Mod Organizer. If not, see . #include "safewritefile.h" #include "savegameinfowidget.h" #include "savegameinfowidgetgamebryo.h" -#include "scriptextender.h" #include "nxmaccessmanager.h" #include "appconfig.h" #include @@ -83,61 +84,63 @@ along with Mod Organizer. If not, see . #include #include #include +#include #include +#include #include +#include #include +#include +#include #include +#include #include #include #include +#include #include #include #include #include #include +#include #include +#include +#include +#include +#include #include #include +#include +#include +#include #include #include #include #include #include +#include +#include #include +#include #include #include +#include #include #include #include #include +#include +#include +#include +#include #include #include -#include -#include - -#include -#include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include + +#include +#include #if QT_VERSION >= QT_VERSION_CHECK(5,0,0) @@ -146,9 +149,6 @@ along with Mod Organizer. If not, see . #include #endif -#include -#include - #ifndef Q_MOC_RUN #include #include @@ -3220,34 +3220,26 @@ void MainWindow::on_categoriesList_itemSelectionChanged() void MainWindow::deleteSavegame_clicked() { - QModelIndexList selectedIndexes = ui->savegameList->selectionModel()->selectedIndexes(); - - //This feels wrong and should be part of savegame interface - QStringList extensions; - { - ScriptExtender *extender = m_OrganizerCore.managedGame()->feature(); - if (extender != nullptr) { - extensions += extender->saveGameAttachmentExtensions(); - } - } + SaveGameInfo const *info = m_OrganizerCore.managedGame()->feature(); QString savesMsgLabel; QStringList deleteFiles; int count = 0; - for (const QModelIndex &idx : selectedIndexes) { - //QString name = idx.data().toString(); - QFileInfo fileName(idx.data(Qt::UserRole).toString()); + for (const QModelIndex &idx : ui->savegameList->selectionModel()->selectedIndexes()) { + QString name = idx.data(Qt::UserRole).toString(); if (count < 10) { - savesMsgLabel += "
  • " + fileName.completeBaseName() + "
  • "; + savesMsgLabel += "
  • " + QFileInfo(name).completeBaseName() + "
  • "; } ++count; - deleteFiles << fileName.absoluteFilePath(); - for (QString const &ext : extensions) { - deleteFiles << fileName.absoluteDir().absoluteFilePath(fileName.completeBaseName() + "." + ext); + if (info == nullptr) { + deleteFiles.push_back(name); + } else { + ISaveGame const *save = info->getSaveGameInfo(name); + deleteFiles += save->allFiles(); } } @@ -3256,7 +3248,9 @@ void MainWindow::deleteSavegame_clicked() } if (QMessageBox::question(this, tr("Confirm"), - tr("Are you sure you want to remove the following %n save(s)?
      %1

    Removed saves will be sent to the Recycle Bin.", "", selectedIndexes.count()) + tr("Are you sure you want to remove the following %n save(s)?
    " + "
      %1

    " + "Removed saves will be sent to the Recycle Bin.", "", count) .arg(savesMsgLabel), QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) { shellDelete(deleteFiles, true); // recycle bin delete. -- cgit v1.3.1