diff options
| author | Thomas Tanner <trtanner@btinternet.com> | 2015-12-15 15:58:01 +0000 |
|---|---|---|
| committer | Thomas Tanner <trtanner@btinternet.com> | 2015-12-15 15:58:01 +0000 |
| commit | 0c536a4c12e37caec2c3107875a97d5343c2a0a0 (patch) | |
| tree | cb2b7a908eb1c11d726b5d54926ac9638fa911af /src | |
| parent | 967c2ae653b54bfc61c3854294f7b1cbff76809b (diff) | |
Makes iSaveGame responsible for returning all files involved in savegame.
Cleans up save deletion and save transfer dialogue somewhat
Diffstat (limited to 'src')
| -rw-r--r-- | src/mainwindow.cpp | 86 | ||||
| -rw-r--r-- | src/transfersavesdialog.cpp | 19 |
2 files changed, 48 insertions, 57 deletions
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 <http://www.gnu.org/licenses/>. #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 <http://www.gnu.org/licenses/>. #include "safewritefile.h"
#include "savegameinfowidget.h"
#include "savegameinfowidgetgamebryo.h"
-#include "scriptextender.h"
#include "nxmaccessmanager.h"
#include "appconfig.h"
#include <utility.h>
@@ -83,61 +84,63 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>. #include <QAbstractProxyModel>
#include <QAction>
#include <QApplication>
+#include <QBuffer>
#include <QCheckBox>
+#include <QClipboard>
#include <QCloseEvent>
+#include <QCoreApplication>
#include <QCursor>
+#include <QDebug>
+#include <QDesktopWidget>
#include <QDialog>
+#include <QDirIterator>
#include <QDragEnterEvent>
#include <QDropEvent>
#include <QEvent>
+#include <QFileDialog>
#include <QFont>
#include <QFuture>
#include <QHash>
#include <QIODevice>
#include <QIcon>
+#include <QInputDialog>
#include <QItemSelectionModel>
+#include <QJsonArray>
+#include <QJsonDocument>
+#include <QJsonObject>
+#include <QJsonValueRef>
#include <QLineEdit>
#include <QListWidgetItem>
+#include <QMenu>
+#include <QMessageBox>
+#include <QMimeData>
#include <QModelIndex>
#include <QNetworkProxyFactory>
#include <QPainter>
#include <QPixmap>
#include <QPoint>
+#include <QProcess>
+#include <QProgressDialog>
#include <QPushButton>
+#include <QRadioButton>
#include <QRect>
#include <QResizeEvent>
+#include <QSettings>
#include <QScopedPointer>
#include <QSizePolicy>
#include <QSize>
#include <QTime>
+#include <QTimer>
+#include <QToolButton>
+#include <QToolTip>
+#include <QTranslator>
#include <QUrl>
#include <QVariantList>
-#include <QtDebug>
-#include <QtGlobal>
-
-#include <QInputDialog>
-#include <QSettings>
#include <QWhatsThis>
-#include <QProcess>
-#include <QMenu>
-#include <QBuffer>
-#include <QDirIterator>
-#include <QToolTip>
-#include <QFileDialog>
-#include <QTimer>
-#include <QTranslator>
-#include <QMessageBox>
-#include <QDebug>
#include <QWidgetAction>
-#include <QToolButton>
-#include <QRadioButton>
-#include <QDesktopWidget>
-#include <QClipboard>
-#include <QJsonDocument>
-#include <QJsonArray>
-#include <QJsonObject>
-#include <QJsonValueRef>
-#include <QMimeData>
+
+#include <QtDebug>
+#include <QtGlobal>
#if QT_VERSION >= QT_VERSION_CHECK(5,0,0)
@@ -146,9 +149,6 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>. #include <QtConcurrentRun>
#endif
-#include <QCoreApplication>
-#include <QProgressDialog>
-
#ifndef Q_MOC_RUN
#include <boost/thread.hpp>
#include <boost/algorithm/string.hpp>
@@ -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<ScriptExtender>();
- if (extender != nullptr) {
- extensions += extender->saveGameAttachmentExtensions();
- }
- }
+ SaveGameInfo const *info = m_OrganizerCore.managedGame()->feature<SaveGameInfo>();
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 += "<li>" + fileName.completeBaseName() + "</li>";
+ savesMsgLabel += "<li>" + QFileInfo(name).completeBaseName() + "</li>";
}
++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)?<br><ul>%1</ul><br>Removed saves will be sent to the Recycle Bin.", "", selectedIndexes.count())
+ tr("Are you sure you want to remove the following %n save(s)?<br>"
+ "<ul>%1</ul><br>"
+ "Removed saves will be sent to the Recycle Bin.", "", count)
.arg(savesMsgLabel),
QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) {
shellDelete(deleteFiles, true); // recycle bin delete.
diff --git a/src/transfersavesdialog.cpp b/src/transfersavesdialog.cpp index 710a33b9..b07a9510 100644 --- a/src/transfersavesdialog.cpp +++ b/src/transfersavesdialog.cpp @@ -71,6 +71,11 @@ public: return m_File;
}
+ virtual QStringList allFiles() const override
+ {
+ return { m_File };
+ }
+
private:
QString m_File;
};
@@ -298,19 +303,11 @@ bool TransferSavesDialog::transferCharacters(QString const &character, OverwriteMode overwriteMode = OVERWRITE_ASK;
- QStringList extensions = { m_GamePlugin->savegameExtension() };
- {
- ScriptExtender *ext = m_GamePlugin->feature<ScriptExtender>();
- if (ext != nullptr) {
- extensions += ext->saveGameAttachmentExtensions();
- }
- }
QDir destination(dest);
for (SaveListItem const &save : saves) {
- QFileInfo const saveFile = save->getFilename();
- for (QString const &ext : extensions) {
- QFileInfo sourceFile(saveFile.absoluteDir().absoluteFilePath(saveFile.completeBaseName() + "." + ext));
- QString destinationFile = destination.absoluteFilePath(sourceFile.fileName());
+ for (QString source : save->allFiles()) {
+ QFileInfo sourceFile(source);
+ QString destinationFile(destination.absoluteFilePath(sourceFile.fileName()));
//If the file is already there, let them skip (or not).
if (QFile::exists(destinationFile)) {
|
