From ba176e5e9b639ac0770192987833a3b40e71409a Mon Sep 17 00:00:00 2001 From: Thomas Tanner Date: Sun, 13 Dec 2015 18:30:40 +0000 Subject: Remove dependency of TransferSave on SaveGameBryo, part of fix for #418 Added a method to Profile class to get location of save games for the profile. I haven't added this to IProfile as am in two minds. Aside from this have done cleanups of issues suggested by include-what-you-use, and some OCD sorting of #includes --- src/mainwindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/mainwindow.cpp') diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index f30e46f1..a85a0fb3 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -1262,7 +1262,7 @@ QDir MainWindow::currentSavesDir() const { QDir savesDir; if (m_OrganizerCore.currentProfile()->localSavesEnabled()) { - savesDir.setPath(m_OrganizerCore.currentProfile()->absolutePath() + "/saves"); + savesDir.setPath(m_OrganizerCore.currentProfile()->savePath()); } else { wchar_t path[MAX_PATH]; ::GetPrivateProfileStringW( -- cgit v1.3.1 From 967c2ae653b54bfc61c3854294f7b1cbff76809b Mon Sep 17 00:00:00 2001 From: Thomas Tanner Date: Mon, 14 Dec 2015 22:25:57 +0000 Subject: Removes the SaveGame class from mainwindow. Using include what you use to add/remove #includes --- massage_messages.py | 14 ++++- src/mainwindow.cpp | 122 +++++++++++++++++++++++++------------ src/mainwindow.h | 101 +++++++++++++++++++----------- src/organizer.pro | 4 +- src/savegame.cpp | 38 ------------ src/savegame.h | 14 +---- src/savegamegamebryo.cpp | 2 +- src/savegamegamebryo.h | 78 ++++++++++++++++++++++++ src/savegamegamebyro.h | 77 ----------------------- src/savegameinfowidgetgamebryo.cpp | 2 +- 10 files changed, 243 insertions(+), 209 deletions(-) create mode 100644 src/savegamegamebryo.h delete mode 100644 src/savegamegamebyro.h (limited to 'src/mainwindow.cpp') diff --git a/massage_messages.py b/massage_messages.py index d79f4cea..0a3ee9ad 100644 --- a/massage_messages.py +++ b/massage_messages.py @@ -36,6 +36,7 @@ includes = dict() adding = None added = dict() +lcadded = dict() foundline = None @@ -70,6 +71,7 @@ def process_next_line(line, outfile): m = re.match(r'.*class (.*);', line) if m: added[m.group(1)] = (adding, line) + lcadded[m.group(1).lower() + '.h'] = m.group(1) else: added[line] = (adding, line) elif removing: @@ -79,12 +81,18 @@ def process_next_line(line, outfile): m = re.match(r'- #include [<"](.*)[">] +// lines (.*)-', line) if m: foundline = m.group(2) - if m.group(1) in added: + # Note: In this project at least we have a naming convention of + # lower case filename and upper case classname. + clname = m.group(1) + if clname not in added: + if clname in lcadded: + clname = lcadded[clname] + if clname in added: messages[removing].append( '%s(%s) : warning I0004: Replace include of %s with ' 'forward reference %s' % ( - removing, m.group(2), m.group(1), added[m.group(1)][1])) - del added[m.group(1)] + removing, m.group(2), m.group(1), added[clname][1])) + del added[clname] else: messages[removing].append( '%s(%s) : warning I0001: Unnecessary include of %s' % ( diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index a85a0fb3..8c292f08 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -20,7 +20,20 @@ along with Mod Organizer. If not, see . #include "mainwindow.h" #include "ui_mainwindow.h" +#include "directoryentry.h" +#include "directoryrefresher.h" +#include "executableinfo.h" +#include "executableslist.h" +#include "guessedvalue.h" +#include "imodinterface.h" +#include "iplugingame.h" +#include "iplugindiagnose.h" +#include "nexusinterface.h" +#include "organizercore.h" +#include "previewgenerator.h" #include "spawn.h" +#include "versioninfo.h" + #include "report.h" #include "modlist.h" #include "modlistsortproxy.h" @@ -31,7 +44,6 @@ along with Mod Organizer. If not, see . #include "editexecutablesdialog.h" #include "categories.h" #include "categoriesdialog.h" -#include "utility.h" #include "modinfodialog.h" #include "overwriteinfodialog.h" #include "activatemodsdialog.h" @@ -41,16 +53,13 @@ along with Mod Organizer. If not, see . #include "messagedialog.h" #include "installationmanager.h" #include "lockeddialog.h" -#include "syncoverwritedialog.h" #include "logbuffer.h" #include "downloadlistsortproxy.h" #include "motddialog.h" #include "filedialogmemory.h" -#include "questionboxmemory.h" #include "tutorialmanager.h" #include "modflagicondelegate.h" #include "genericicondelegate.h" -#include "credentialsdialog.h" #include "selectiondialog.h" #include "csvbuilder.h" #include "savetextasdialog.h" @@ -59,59 +68,84 @@ along with Mod Organizer. If not, see . #include "browserdialog.h" #include "aboutdialog.h" #include "safewritefile.h" -//? -//#include "isavegame.h" -//#include "savegameinfo.h" -//? +#include "savegameinfowidget.h" +#include "savegameinfowidgetgamebryo.h" +#include "scriptextender.h" #include "nxmaccessmanager.h" -#include -#include +#include "appconfig.h" #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) #include #else #include #endif + #include #include @@ -119,22 +153,19 @@ along with Mod Organizer. If not, see . #include #include #include -#include #include #endif -#include #include -#include -#include -#include -#include +#include +#include #include #include -#include -#include -#include +#include +#include +#include +#include #ifdef TEST_MODELS #include "modeltest.h" @@ -3191,29 +3222,42 @@ 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(); + } + } + QString savesMsgLabel; QStringList deleteFiles; int count = 0; - foreach (const QModelIndex &idx, selectedIndexes) { - QString name = idx.data().toString(); - SaveGame *save = new SaveGame(this, idx.data(Qt::UserRole).toString(), m_OrganizerCore.managedGame()); + for (const QModelIndex &idx : selectedIndexes) { + //QString name = idx.data().toString(); + QFileInfo fileName(idx.data(Qt::UserRole).toString()); if (count < 10) { - savesMsgLabel += "
  • " + QFileInfo(name).completeBaseName() + "
  • "; + savesMsgLabel += "
  • " + fileName.completeBaseName() + "
  • "; } ++count; - deleteFiles << save->saveFiles(); + deleteFiles << fileName.absoluteFilePath(); + for (QString const &ext : extensions) { + deleteFiles << fileName.absoluteDir().absoluteFilePath(fileName.completeBaseName() + "." + ext); + } } if (count > 10) { savesMsgLabel += "
  • ... " + tr("%1 more").arg(count - 10) + "
  • "; } - 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()) - .arg(savesMsgLabel), + 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()) + .arg(savesMsgLabel), QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes) { shellDelete(deleteFiles, true); // recycle bin delete. } diff --git a/src/mainwindow.h b/src/mainwindow.h index 0cdea807..04e9f221 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -20,51 +20,82 @@ along with Mod Organizer. If not, see . #ifndef MAINWINDOW_H #define MAINWINDOW_H -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "modlist.h" -#include "pluginlist.h" -#include "plugincontainer.h" -#define WIN32_LEAN_AND_MEAN -#include -#include -#include "directoryrefresher.h" -#include -#include "settings.h" -#include "downloadmanager.h" -#include "installationmanager.h" -#include "selfupdater.h" -#include "savegamegamebyro.h" -#include "modlistsortproxy.h" -#include "pluginlistsortproxy.h" -#include "tutorialcontrol.h" -#include "savegameinfowidgetgamebryo.h" -#include "previewgenerator.h" +#include "bsafolder.h" #include "browserdialog.h" +#include "delayedfilewriter.h" +#include "errorcodes.h" +#include "imoinfo.h" #include "iuserinterface.h" -#include -#include -#include +#include "modinfo.h" +#include "modlistsortproxy.h" +#include "tutorialcontrol.h" + +//Note the commented headers here can be replaced with forward references, +//when I get round to cleaning up main.cpp +struct Executable; +class CategoryFactory; +class LockedDialog; +class OrganizerCore; +#include "plugincontainer.h" //class PluginContainer; +class PluginListSortProxy; +#include "savegamegamebryo.h" //class SaveGameGamebryo; +class SaveGameInfoWidget; +namespace BSA { class Archive; } +#include "iplugingame.h" //namespace MOBase { class IPluginGame; } +namespace MOBase { class IPluginModPage; } +namespace MOBase { class IPluginTool; } +namespace MOShared { class DirectoryEntry; } + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class QAction; +class QAbstractItemModel; +class QDateTime; +class QEvent; +class QFile; +class QListWidgetItem; +class QMenu; +class QModelIndex; +class QPoint; +class QProgressBar; +class QProgressDialog; +class QTranslator; +class QTreeWidgetItem; +class QUrl; +class QSettings; +class QWidget; + #ifndef Q_MOC_RUN #include #endif +//Sigh - just for HANDLE +#define WIN32_LEAN_AND_MEAN +#include + +#include +#include +#include +#include + namespace Ui { class MainWindow; } -class LockedDialog; -class QToolButton; -class ModListSortProxy; -class ModListGroupCategoriesProxy; class MainWindow : public QMainWindow, public IUserInterface diff --git a/src/organizer.pro b/src/organizer.pro index 1284aa40..eed4190d 100644 --- a/src/organizer.pro +++ b/src/organizer.pro @@ -109,7 +109,6 @@ HEADERS += \ selectiondialog.h \ savegameinfowidgetgamebryo.h \ savegameinfowidget.h \ - savegamegamebyro.h \ savegame.h \ queryoverwritedialog.h \ profilesdialog.h \ @@ -175,7 +174,8 @@ HEADERS += \ modinforegular.h \ modinfobackup.h \ modinfooverwrite.h \ - modinfoforeign.h + modinfoforeign.h \ + savegamegamebryo.h FORMS += \ transfersavesdialog.ui \ diff --git a/src/savegame.cpp b/src/savegame.cpp index 2b125575..41120a88 100644 --- a/src/savegame.cpp +++ b/src/savegame.cpp @@ -19,20 +19,6 @@ along with Mod Organizer. If not, see . #include "savegame.h" -#include "iplugingame.h" -#include "scriptextender.h" -#include "utility.h" - -#include -#include -#include -#include - -#include -#include - -using namespace MOBase; - SaveGame::SaveGame(QObject *parent, const QString &filename, const MOBase::IPluginGame *game) : QObject(parent) , m_FileName(filename) @@ -43,27 +29,3 @@ SaveGame::SaveGame(QObject *parent, const QString &filename, const MOBase::IPlug SaveGame::~SaveGame() { } - -QStringList SaveGame::attachedFiles() const -{ - QStringList result; - ScriptExtender const *extender = m_Game->feature(); - if (extender != nullptr) { - for (QString const &ext : extender->saveGameAttachmentExtensions()) { - QFileInfo fi(fileName()); - fi.setFile(fi.canonicalPath() + "/" + fi.completeBaseName() + "." + ext); - if (fi.exists()) { - result.append(fi.filePath()); - } - } - } - - return result; -} - -QStringList SaveGame::saveFiles() const -{ - QStringList result = attachedFiles(); - result.append(fileName()); - return result; -} diff --git a/src/savegame.h b/src/savegame.h index d1bf4691..3afb2faa 100644 --- a/src/savegame.h +++ b/src/savegame.h @@ -24,10 +24,8 @@ along with Mod Organizer. If not, see . #include #include #include -#include -#include -#include +//Sigh - for SYSTEMTIME #define WIN32_LEAN_AND_MEAN #include @@ -63,16 +61,6 @@ public: */ const QString &fileName() const { return m_FileName; } - /** - * @return a list of additional files that belong to this savegame - */ - virtual QStringList attachedFiles() const; - - /** - * @return a list of all files that belong to this savegame - */ - virtual QStringList saveFiles() const; - /** * @return name of the player character **/ diff --git a/src/savegamegamebryo.cpp b/src/savegamegamebryo.cpp index 68ed30af..153be4b0 100644 --- a/src/savegamegamebryo.cpp +++ b/src/savegamegamebryo.cpp @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with Mod Organizer. If not, see . */ -#include "savegamegamebyro.h" +#include "savegamegamebryo.h" #include "isavegame.h" #include "savegameinfo.h" diff --git a/src/savegamegamebryo.h b/src/savegamegamebryo.h new file mode 100644 index 00000000..834cf8dd --- /dev/null +++ b/src/savegamegamebryo.h @@ -0,0 +1,78 @@ +/* +Copyright (C) 2012 Sebastian Herbord. All rights reserved. + +This file is part of Mod Organizer. + +Mod Organizer is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +Mod Organizer is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Mod Organizer. If not, see . +*/ + +#ifndef SAVEGAMEGAMEBRYO_H +#define SAVEGAMEGAMEBRYO_H + +#include "savegame.h" + +#include +#include +#include +#include + +namespace MOBase { class IPluginGame; class ISaveGame; } + +/** + * @brief represents a single save game + **/ +class SaveGameGamebryo : public SaveGame { + +Q_OBJECT + +public: + + /** + * @brief construct a save game and immediately read out information from the file + * + * @param filename absolute path of the save game file + **/ + SaveGameGamebryo(QObject *parent, const QString &filename, MOBase::IPluginGame const *game); + + /* + + SaveGameGamebryo(const SaveGameGamebryo &reference); + + SaveGameGamebryo &operator=(const SaveGameGamebryo &reference); + + ~SaveGameGamebryo(); + */ + + /** + * @return number of plugins that were enabled when the save game was created + **/ + int numPlugins() const { return m_Plugins.size(); } + + /** + * retrieve the name of one of the plugins that were enabled when the save game + * was created. valid indices are in the range between [0, numPlugins()[ + * @param index plugin index + * @return name of the plugin + **/ + const QString &plugin(int index) const { return m_Plugins.at(index); } + +private: + + QStringList m_Plugins; + //Note: This isn't owned by us so safe to copy + MOBase::ISaveGame const *m_Save; + +}; + +#endif // SAVEGAMEGAMEBRYO_H diff --git a/src/savegamegamebyro.h b/src/savegamegamebyro.h deleted file mode 100644 index bce08018..00000000 --- a/src/savegamegamebyro.h +++ /dev/null @@ -1,77 +0,0 @@ -/* -Copyright (C) 2012 Sebastian Herbord. All rights reserved. - -This file is part of Mod Organizer. - -Mod Organizer is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -Mod Organizer is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with Mod Organizer. If not, see . -*/ - -#ifndef SAVEGAMEGAMEBRYO_H -#define SAVEGAMEGAMEBRYO_H - -#include "savegame.h" - -#include -#include -#include - -namespace MOBase { class IPluginGame; class ISaveGame; } - -/** - * @brief represents a single save game - **/ -class SaveGameGamebryo : public SaveGame { - -Q_OBJECT - -public: - - /** - * @brief construct a save game and immediately read out information from the file - * - * @param filename absolute path of the save game file - **/ - SaveGameGamebryo(QObject *parent, const QString &filename, MOBase::IPluginGame const *game); - - /* - - SaveGameGamebryo(const SaveGameGamebryo &reference); - - SaveGameGamebryo &operator=(const SaveGameGamebryo &reference); - - ~SaveGameGamebryo(); - */ - - /** - * @return number of plugins that were enabled when the save game was created - **/ - int numPlugins() const { return m_Plugins.size(); } - - /** - * retrieve the name of one of the plugins that were enabled when the save game - * was created. valid indices are in the range between [0, numPlugins()[ - * @param index plugin index - * @return name of the plugin - **/ - const QString &plugin(int index) const { return m_Plugins.at(index); } - -private: - - QStringList m_Plugins; - //Note: This isn't owned by us so safe to copy - MOBase::ISaveGame const *m_Save; - -}; - -#endif // SAVEGAMEGAMEBRYO_H diff --git a/src/savegameinfowidgetgamebryo.cpp b/src/savegameinfowidgetgamebryo.cpp index c97e5810..d92025c2 100644 --- a/src/savegameinfowidgetgamebryo.cpp +++ b/src/savegameinfowidgetgamebryo.cpp @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with Mod Organizer. If not, see . */ -#include "savegamegamebyro.h" +#include "savegamegamebryo.h" #include "savegameinfowidgetgamebryo.h" #include #include -- cgit v1.3.1 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 +++++++++++++++++++++------------------------ src/transfersavesdialog.cpp | 19 +++++----- 2 files changed, 48 insertions(+), 57 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. 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(); - 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)) { -- cgit v1.3.1 From 5f5184ebfe9a6b7102654863cbb390a610ab1563 Mon Sep 17 00:00:00 2001 From: Thomas Tanner Date: Sat, 19 Dec 2015 20:49:54 +0000 Subject: Changes to support getting list of mods / esps to activate from game plugin --- src/activatemodsdialog.cpp | 22 +++++----- src/activatemodsdialog.h | 10 ++++- src/mainwindow.cpp | 97 ++++++++++----------------------------------- src/mainwindow.h | 3 +- src/modinfo.h | 1 - src/organizercore.cpp | 35 +++++++++++++--- src/organizercore.h | 29 ++++++++++---- src/organizerproxy.cpp | 8 +++- src/organizerproxy.h | 5 ++- src/transfersavesdialog.cpp | 6 +++ 10 files changed, 112 insertions(+), 104 deletions(-) (limited to 'src/mainwindow.cpp') diff --git a/src/activatemodsdialog.cpp b/src/activatemodsdialog.cpp index fd56ae3e..5ef0a4e5 100644 --- a/src/activatemodsdialog.cpp +++ b/src/activatemodsdialog.cpp @@ -21,9 +21,14 @@ along with Mod Organizer. If not, see . #include "ui_activatemodsdialog.h" #include +#include #include +#include +#include -ActivateModsDialog::ActivateModsDialog(const std::map > &missingPlugins, QWidget *parent) +#include + +ActivateModsDialog::ActivateModsDialog(SaveGameInfo::MissingAssets const &missingAssets, QWidget *parent) : TutorableDialog("ActivateMods", parent), ui(new Ui::ActivateModsDialog) { ui->setupUi(this); @@ -40,18 +45,17 @@ ActivateModsDialog::ActivateModsDialog(const std::mapsetRowCount(missingPlugins.size()); + modsTable->setRowCount(missingAssets.size()); - for (std::map >::const_iterator espIter = missingPlugins.begin(); - espIter != missingPlugins.end(); ++espIter, ++row) { - modsTable->setCellWidget(row, 0, new QLabel(espIter->first)); - if (espIter->second.size() == 0) { + for (SaveGameInfo::MissingAssets::const_iterator espIter = missingAssets.begin(); + espIter != missingAssets.end(); ++espIter, ++row) { + modsTable->setCellWidget(row, 0, new QLabel(espIter.key())); + if (espIter->size() == 0) { modsTable->setCellWidget(row, 1, new QLabel(tr("not found"))); } else { QComboBox* combo = new QComboBox(); - for (std::vector::const_iterator modIter = espIter->second.begin(); - modIter != espIter->second.end(); ++modIter) { - combo->addItem(*modIter); + for (QString const &mod : espIter.value()) { + combo->addItem(mod); } modsTable->setCellWidget(row, 1, combo); } diff --git a/src/activatemodsdialog.h b/src/activatemodsdialog.h index 08dbad8d..f36b5fde 100644 --- a/src/activatemodsdialog.h +++ b/src/activatemodsdialog.h @@ -20,8 +20,14 @@ along with Mod Organizer. If not, see . #ifndef ACTIVATEMODSDIALOG_H #define ACTIVATEMODSDIALOG_H +#include "savegameinfo.h" #include "tutorabledialog.h" -#include + +#include + +class QString; +class QWidget; + #include namespace Ui { @@ -42,7 +48,7 @@ public: * @param missingPlugins a map containing missing plugins that need to be activated * @param parent ... Defaults to 0. **/ - explicit ActivateModsDialog(const std::map > &missingPlugins, QWidget *parent = 0); + explicit ActivateModsDialog(SaveGameInfo::MissingAssets const &missingAssets, QWidget *parent = 0); ~ActivateModsDialog(); /** diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 03233398..0b551c5b 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -31,6 +31,7 @@ along with Mod Organizer. If not, see . #include "isavegame.h" #include "nexusinterface.h" #include "organizercore.h" +#include "pluginlistsortproxy.h" #include "previewgenerator.h" #include "savegameinfo.h" #include "spawn.h" @@ -104,6 +105,7 @@ along with Mod Organizer. If not, see . #include #include #include +#include #include #include #include @@ -124,6 +126,7 @@ along with Mod Organizer. If not, see . #include #include #include +#include #include #include #include @@ -134,6 +137,7 @@ along with Mod Organizer. If not, see . #include #include #include +#include #include #include #include @@ -3258,78 +3262,9 @@ void MainWindow::deleteSavegame_clicked() } -void MainWindow::fixMods_clicked() +void MainWindow::fixMods_clicked(SaveGameInfo::MissingAssets const &missingAssets) { - QListWidgetItem *selectedItem = ui->savegameList->currentItem(); - - if (selectedItem == nullptr) - return; - - // if required, parse the save game - if (selectedItem->data(Qt::UserRole).isNull()) { - QVariant temp; - SaveGameGamebryo *save = getSaveGame(selectedItem->data(Qt::UserRole).toString()); - save->setParent(selectedItem->listWidget()); - temp.setValue(save); - selectedItem->setData(Qt::UserRole, temp); - } - - const SaveGameGamebryo *save = getSaveGame(selectedItem); - - // collect the list of missing plugins - std::map > missingPlugins; - - for (int i = 0; i < save->numPlugins(); ++i) { - const QString &pluginName = save->plugin(i); - if (!m_OrganizerCore.pluginList()->isEnabled(pluginName)) { - missingPlugins[pluginName] = std::vector(); - } - } - - // figure out, for each esp/esm, which mod, if any, contains it - QStringList espFilter("*.esp"); - espFilter.append("*.esm"); - - // search in data - { - QDir dataDir(m_OrganizerCore.managedGame()->dataDirectory()); - QStringList esps = dataDir.entryList(espFilter); - for (const QString &esp : esps) { - std::map >::iterator iter = missingPlugins.find(esp); - if (iter != missingPlugins.end()) { - iter->second.push_back(""); - } - } - } - - // search in mods - for (unsigned int i = 0; i < m_OrganizerCore.currentProfile()->numRegularMods(); ++i) { - int modIndex = m_OrganizerCore.currentProfile()->modIndexByPriority(i); - ModInfo::Ptr modInfo = ModInfo::getByIndex(modIndex); - - QStringList esps = QDir(modInfo->absolutePath()).entryList(espFilter); - for (const QString &esp : esps) { - std::map >::iterator iter = missingPlugins.find(esp); - if (iter != missingPlugins.end()) { - iter->second.push_back(modInfo->name()); - } - } - } - - // search in overwrite - { - QDir overwriteDir(qApp->property("dataPath").toString() + "/" + QString::fromStdWString(AppConfig::overwritePath())); - QStringList esps = overwriteDir.entryList(espFilter); - for (const QString &esp : esps) { - std::map >::iterator iter = missingPlugins.find(esp); - if (iter != missingPlugins.end()) { - iter->second.push_back(""); - } - } - } - - - ActivateModsDialog dialog(missingPlugins, this); + ActivateModsDialog dialog(missingAssets, this); if (dialog.exec() == QDialog::Accepted) { // activate the required mods, then enable all esps std::set modsToActivate = dialog.getModsToActivate(); @@ -3356,13 +3291,25 @@ void MainWindow::on_savegameList_customContextMenuRequested(const QPoint &pos) { QItemSelectionModel *selection = ui->savegameList->selectionModel(); - if (!selection->hasSelection()) + if (!selection->hasSelection()) { return; + } QMenu menu; - - if (!(selection->selectedIndexes().count() > 1)) - menu.addAction(tr("Fix Mods..."), this, SLOT(fixMods_clicked())); + QAction *action = menu.addAction(tr("Enable Mods...")); + action->setEnabled(false); + + if (selection->selectedIndexes().count() == 1) { + SaveGameInfo const *info = this->m_OrganizerCore.managedGame()->feature(); + if (info != nullptr) { + QString save = ui->savegameList->currentItem()->data(Qt::UserRole).toString(); + SaveGameInfo::MissingAssets missing = info->getMissingAssets(save); + if (missing.size() != 0) { + connect(action, &QAction::triggered, this, [this, missing]{ fixMods_clicked(missing); }); + action->setEnabled(true); + } + } + } QString deleteMenuLabel = tr("Delete %n save(s)", "", selection->selectedIndexes().count()); diff --git a/src/mainwindow.h b/src/mainwindow.h index 04e9f221..a8c3ec0e 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -28,6 +28,7 @@ along with Mod Organizer. If not, see . #include "iuserinterface.h" #include "modinfo.h" #include "modlistsortproxy.h" +#include "savegameinfo.h" #include "tutorialcontrol.h" //Note the commented headers here can be replaced with forward references, @@ -393,7 +394,7 @@ private slots: void information_clicked(); // savegame context menu void deleteSavegame_clicked(); - void fixMods_clicked(); + void fixMods_clicked(SaveGameInfo::MissingAssets const &missingAssets); // data-tree context menu void writeDataToFile(); void openDataFile(); diff --git a/src/modinfo.h b/src/modinfo.h index ae22ccd8..c10232da 100644 --- a/src/modinfo.h +++ b/src/modinfo.h @@ -22,7 +22,6 @@ along with Mod Organizer. If not, see . #include "imodinterface.h" #include "versioninfo.h" -//#include class QDateTime; class QDir; diff --git a/src/organizercore.cpp b/src/organizercore.cpp index 06a6dba4..e92ecb97 100644 --- a/src/organizercore.cpp +++ b/src/organizercore.cpp @@ -1,15 +1,19 @@ #include "organizercore.h" +#include "imodinterface.h" #include "iplugingame.h" -#include "mainwindow.h" +#include "iuserinterface.h" +#include "loadmechanism.h" #include "messagedialog.h" +#include "modlistsortproxy.h" +#include "plugincontainer.h" +#include "pluginlistsortproxy.h" #include "logbuffer.h" #include "credentialsdialog.h" #include "filedialogmemory.h" #include "lockeddialog.h" #include "modinfodialog.h" #include "spawn.h" -#include "safewritefile.h" #include "syncoverwritedialog.h" #include "nxmaccessmanager.h" #include @@ -17,18 +21,27 @@ #include #include #include -#include +#include "appconfig.h" #include #include -#include -#include -#include #include +#include +#include +#include +#include +#include +#include + +#include #include +#include #include +#include +#include +#include using namespace MOShared; @@ -867,6 +880,16 @@ ModList *OrganizerCore::modList() return &m_ModList; } +QStringList OrganizerCore::modsSortedByProfilePriority() const +{ + QStringList res; + for (unsigned int i = 0; i < currentProfile()->numRegularMods(); ++i) { + int modIndex = currentProfile()->modIndexByPriority(i); + res.push_back(ModInfo::getByIndex(modIndex)->name()); + } + return res; +} + void OrganizerCore::spawnBinary(const QFileInfo &binary, const QString &arguments, const QDir ¤tDirectory, bool closeAfterStart, const QString &steamAppID) { LockedDialog *dialog = new LockedDialog(qApp->activeWindow()); diff --git a/src/organizercore.h b/src/organizercore.h index 5cfbaca4..b50b3e9f 100644 --- a/src/organizercore.h +++ b/src/organizercore.h @@ -2,30 +2,42 @@ #define ORGANIZERCORE_H -#include "profile.h" #include "selfupdater.h" -#include "iuserinterface.h" +#include "iuserinterface.h" //should be class IUserInterface; #include "settings.h" #include "modlist.h" +#include "modinfo.h" #include "pluginlist.h" #include "directoryrefresher.h" #include "installationmanager.h" #include "downloadmanager.h" -#include "modlistsortproxy.h" -#include "pluginlistsortproxy.h" #include "executableslist.h" -#include #include #include -#include #include -#include #include #include + +class ModListSortProxy; +class PluginListSortProxy; +class Profile; +namespace MOBase { template class GuessedValue; } +namespace MOShared { class DirectoryEntry; } + +#include +#include +#include #include #include +#include #include +class QNetworkReply; +class QUrl; +class QWidget; + +#include +#include class PluginContainer; @@ -89,7 +101,7 @@ public: m_ExecutablesList = executablesList; } - Profile *currentProfile() { return m_CurrentProfile; } + Profile *currentProfile() const { return m_CurrentProfile; } void setCurrentProfile(const QString &profileName); std::vector enabledArchives(); @@ -155,6 +167,7 @@ public: bool onAboutToRun(const std::function &func); bool onFinishedRun(const std::function &func); void refreshModList(bool saveChanges = true); + QStringList modsSortedByProfilePriority() const; //std::vector > fileMapping(); diff --git a/src/organizerproxy.cpp b/src/organizerproxy.cpp index ba07c154..474f0837 100644 --- a/src/organizerproxy.cpp +++ b/src/organizerproxy.cpp @@ -1,6 +1,7 @@ #include "organizerproxy.h" -#include +#include "appconfig.h" +#include "organizercore.h" #include @@ -170,3 +171,8 @@ MOBase::IPluginGame const *OrganizerProxy::managedGame() const { return m_Proxied->managedGame(); } + +QStringList OrganizerProxy::modsSortedByProfilePriority() const +{ + return m_Proxied->modsSortedByProfilePriority(); +} diff --git a/src/organizerproxy.h b/src/organizerproxy.h index 62a35498..2a0fc397 100644 --- a/src/organizerproxy.h +++ b/src/organizerproxy.h @@ -3,7 +3,8 @@ #include -#include "mainwindow.h" + +class OrganizerCore; class OrganizerProxy : public MOBase::IOrganizer { @@ -47,6 +48,8 @@ public: virtual MOBase::IPluginGame const *managedGame() const; + virtual QStringList modsSortedByProfilePriority() const; + private: OrganizerCore *m_Proxied; diff --git a/src/transfersavesdialog.cpp b/src/transfersavesdialog.cpp index a2201a69..b6be108b 100644 --- a/src/transfersavesdialog.cpp +++ b/src/transfersavesdialog.cpp @@ -84,6 +84,12 @@ public: { return new DummySave(file); } + + virtual MissingAssets getMissingAssets(QString const &) const override + { + return {}; + } + }; } //end anonymous namespace -- cgit v1.3.1 From f55a5f2b21664ccd2af1c24ef68f14f73e418b1c Mon Sep 17 00:00:00 2001 From: Thomas Tanner Date: Sun, 20 Dec 2015 21:08:14 +0000 Subject: Managed to remove SaveGame and SaveGameGamebryo classes from organizer --- src/CMakeLists.txt | 4 -- src/mainwindow.cpp | 32 +++++------ src/mainwindow.h | 8 +-- src/organizer.pro | 6 +- src/savegame.cpp | 31 ----------- src/savegame.h | 109 ------------------------------------- src/savegamegamebryo.cpp | 66 ---------------------- src/savegamegamebryo.h | 78 -------------------------- src/savegameinfowidget.cpp | 38 +++++++++---- src/savegameinfowidget.h | 8 ++- src/savegameinfowidgetgamebryo.cpp | 22 +++++--- src/savegameinfowidgetgamebryo.h | 8 +-- 12 files changed, 68 insertions(+), 342 deletions(-) delete mode 100644 src/savegame.cpp delete mode 100644 src/savegame.h delete mode 100644 src/savegamegamebryo.cpp delete mode 100644 src/savegamegamebryo.h (limited to 'src/mainwindow.cpp') diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 3c786868..428f18f9 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -20,8 +20,6 @@ SET(organizer_SRCS selectiondialog.cpp savegameinfowidgetgamebryo.cpp savegameinfowidget.cpp - savegamegamebryo.cpp - savegame.cpp queryoverwritedialog.cpp profilesdialog.cpp profile.cpp @@ -114,8 +112,6 @@ SET(organizer_HDRS selectiondialog.h savegameinfowidgetgamebryo.h savegameinfowidget.h - savegamegamebyro.h - savegame.h queryoverwritedialog.h profilesdialog.h profile.h diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 0b551c5b..8f71f636 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -864,28 +864,24 @@ void MainWindow::setBrowserGeometry(const QByteArray &geometry) m_IntegratedBrowser.restoreGeometry(geometry); } - -SaveGameGamebryo *MainWindow::getSaveGame(const QString &name) -{ - IPluginGame const *game = m_OrganizerCore.managedGame(); - return new SaveGameGamebryo(this, name, game); -} - - -SaveGameGamebryo *MainWindow::getSaveGame(QListWidgetItem *item) +ISaveGame const *MainWindow::getSaveGame(QListWidgetItem *item) { try { - SaveGameGamebryo *saveGame = getSaveGame(item->data(Qt::UserRole).toString()); - saveGame->setParent(item->listWidget()); - return saveGame; + IPluginGame const *game = m_OrganizerCore.managedGame(); + SaveGameInfo const *info = game->feature(); + if (info != nullptr) { + return info->getSaveGameInfo(item->data(Qt::UserRole).toString()); + } + //SaveGameGamebryo *saveGame = new SaveGameGamebryo(/*this,*/ item->data(Qt::UserRole).toString(), game); + //saveGame->setParent(item->listWidget()); + //return saveGame; } catch (const std::exception &e) { reportError(tr("failed to read savegame: %1").arg(e.what())); - return nullptr; } + return nullptr; } - -void MainWindow::displaySaveGameInfo(const SaveGameGamebryo *save, QPoint pos) +void MainWindow::displaySaveGameInfo(MOBase::ISaveGame const *save, QPoint pos) { if (m_CurrentSaveView == nullptr) { m_CurrentSaveView = new SaveGameInfoWidgetGamebryo(save, m_OrganizerCore.pluginList(), this); @@ -918,11 +914,11 @@ void MainWindow::saveSelectionChanged(QListWidgetItem *newItem) { if (newItem == nullptr) { hideSaveGameInfo(); - } else if ((m_CurrentSaveView == nullptr) || (newItem != m_CurrentSaveView->property("displayItem").value())) { - const SaveGameGamebryo *save = getSaveGame(newItem); + } else if (m_CurrentSaveView == nullptr || newItem != m_CurrentSaveView->property("displayItem").value()) { + MOBase::ISaveGame const *save = getSaveGame(newItem); if (save != nullptr) { displaySaveGameInfo(save, QCursor::pos()); - m_CurrentSaveView->setProperty("displayItem", qVariantFromValue((void*)newItem)); + m_CurrentSaveView->setProperty("displayItem", qVariantFromValue(static_cast(newItem))); } } } diff --git a/src/mainwindow.h b/src/mainwindow.h index a8c3ec0e..07f24540 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -39,12 +39,13 @@ class LockedDialog; class OrganizerCore; #include "plugincontainer.h" //class PluginContainer; class PluginListSortProxy; -#include "savegamegamebryo.h" //class SaveGameGamebryo; class SaveGameInfoWidget; namespace BSA { class Archive; } #include "iplugingame.h" //namespace MOBase { class IPluginGame; } namespace MOBase { class IPluginModPage; } namespace MOBase { class IPluginTool; } +namespace MOBase { class ISaveGame; } + namespace MOShared { class DirectoryEntry; } #include @@ -255,10 +256,9 @@ private: void setCategoryListVisible(bool visible); - SaveGameGamebryo *getSaveGame(const QString &name); - SaveGameGamebryo *getSaveGame(QListWidgetItem *item); + MOBase::ISaveGame const *getSaveGame(QListWidgetItem *item); - void displaySaveGameInfo(const SaveGameGamebryo *save, QPoint pos); + void displaySaveGameInfo(MOBase::ISaveGame const *save, QPoint pos); HANDLE nextChildProcess(); diff --git a/src/organizer.pro b/src/organizer.pro index eed4190d..ee0526ed 100644 --- a/src/organizer.pro +++ b/src/organizer.pro @@ -29,8 +29,6 @@ SOURCES += \ selectiondialog.cpp \ savegameinfowidgetgamebryo.cpp \ savegameinfowidget.cpp \ - savegamegamebryo.cpp \ - savegame.cpp \ queryoverwritedialog.cpp \ profilesdialog.cpp \ profile.cpp \ @@ -109,7 +107,6 @@ HEADERS += \ selectiondialog.h \ savegameinfowidgetgamebryo.h \ savegameinfowidget.h \ - savegame.h \ queryoverwritedialog.h \ profilesdialog.h \ profile.h \ @@ -174,8 +171,7 @@ HEADERS += \ modinforegular.h \ modinfobackup.h \ modinfooverwrite.h \ - modinfoforeign.h \ - savegamegamebryo.h + modinfoforeign.h FORMS += \ transfersavesdialog.ui \ diff --git a/src/savegame.cpp b/src/savegame.cpp deleted file mode 100644 index 41120a88..00000000 --- a/src/savegame.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* -Copyright (C) 2012 Sebastian Herbord. All rights reserved. - -This file is part of Mod Organizer. - -Mod Organizer is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -Mod Organizer is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with Mod Organizer. If not, see . -*/ - -#include "savegame.h" - -SaveGame::SaveGame(QObject *parent, const QString &filename, const MOBase::IPluginGame *game) - : QObject(parent) - , m_FileName(filename) - , m_Game(game) -{ -} - -SaveGame::~SaveGame() -{ -} diff --git a/src/savegame.h b/src/savegame.h deleted file mode 100644 index 3afb2faa..00000000 --- a/src/savegame.h +++ /dev/null @@ -1,109 +0,0 @@ -/* -Copyright (C) 2012 Sebastian Herbord. All rights reserved. - -This file is part of Mod Organizer. - -Mod Organizer is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -Mod Organizer is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with Mod Organizer. If not, see . -*/ - -#ifndef SAVEGAME_H -#define SAVEGAME_H - - -#include -#include -#include - -//Sigh - for SYSTEMTIME -#define WIN32_LEAN_AND_MEAN -#include - -namespace MOBase { class IPluginGame; } - -/** - * @brief represents a single save game - **/ -class SaveGame : public QObject { - -Q_OBJECT - -public: - - /** - * @brief construct a save game and immediately read out information from the file - * - * @param filename absolute path of the save game file - **/ - SaveGame(QObject *parent, const QString &filename, MOBase::IPluginGame const *game); - - virtual ~SaveGame(); - - /** - * @brief read out information from a savegame - * - * @param fileName absolute path of the save game file - **/ - virtual void readFile(const QString) { } - - /** - * @return filename of this savegame - */ - const QString &fileName() const { return m_FileName; } - - /** - * @return name of the player character - **/ - const QString &pcName() const { return m_PCName; } - - /** - * @return level of the player character - **/ - unsigned short pcLevel() const { return m_PCLevel; } - - /** - * @return location of the player character - **/ - const QString &pcLocation() const { return m_PCLocation; } - - /** - * @return index of the save game - **/ - unsigned long saveNumber() const { return m_SaveNumber; } - - /** - * @return creation time of the save game - **/ - SYSTEMTIME creationTime() const { return m_CreationTime; } - - /** - * @return screenshot in the savegame - **/ - const QImage &screenshot() const { return m_Screenshot; } - -protected: - - QString m_FileName; - QString m_PCName; - unsigned short m_PCLevel; - QString m_PCLocation; - unsigned long m_SaveNumber; - SYSTEMTIME m_CreationTime; - QImage m_Screenshot; - -private: - MOBase::IPluginGame const * const m_Game; -}; - - -#endif // SAVEGAME_H diff --git a/src/savegamegamebryo.cpp b/src/savegamegamebryo.cpp deleted file mode 100644 index 153be4b0..00000000 --- a/src/savegamegamebryo.cpp +++ /dev/null @@ -1,66 +0,0 @@ -/* -Copyright (C) 2012 Sebastian Herbord. All rights reserved. - -This file is part of Mod Organizer. - -Mod Organizer is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -Mod Organizer is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with Mod Organizer. If not, see . -*/ - -#include "savegamegamebryo.h" - -#include "isavegame.h" -#include "savegameinfo.h" -#include "iplugingame.h" -#include "gamebryosavegame.h" - -#include -#include - -using namespace MOBase; - - -SaveGameGamebryo::SaveGameGamebryo(QObject *parent, const QString &fileName, IPluginGame const *game) - : SaveGame(parent, fileName, game) - , m_Plugins() -{ - SaveGameInfo const *info = game->feature(); - if (info != nullptr) { - ISaveGame const *save = info->getSaveGameInfo(fileName); - m_Save = save; - - //Kludgery - GamebryoSaveGame const *s = dynamic_cast(save); - m_PCName = s->getPCName(); - m_PCLevel = s->getPCLevel(); - m_PCLocation = s->getPCLocation(); - m_SaveNumber = s->getSaveNumber(); - - QDateTime modified = s->getCreationTime(); - memset(&m_CreationTime, 0, sizeof(SYSTEMTIME)); - - m_CreationTime.wDay = static_cast(modified.date().day()); - m_CreationTime.wDayOfWeek = static_cast(modified.date().dayOfWeek()); - m_CreationTime.wMonth = static_cast(modified.date().month()); - m_CreationTime.wYear =static_cast( modified.date().year()); - - m_CreationTime.wHour = static_cast(modified.time().hour()); - m_CreationTime.wMinute = static_cast(modified.time().minute()); - m_CreationTime.wSecond = static_cast(modified.time().second()); - m_CreationTime.wMilliseconds = static_cast(modified.time().msec()); - - m_Screenshot = s->getScreenshot(); - - m_Plugins = s->getPlugins(); - } -} diff --git a/src/savegamegamebryo.h b/src/savegamegamebryo.h deleted file mode 100644 index 834cf8dd..00000000 --- a/src/savegamegamebryo.h +++ /dev/null @@ -1,78 +0,0 @@ -/* -Copyright (C) 2012 Sebastian Herbord. All rights reserved. - -This file is part of Mod Organizer. - -Mod Organizer is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -Mod Organizer is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with Mod Organizer. If not, see . -*/ - -#ifndef SAVEGAMEGAMEBRYO_H -#define SAVEGAMEGAMEBRYO_H - -#include "savegame.h" - -#include -#include -#include -#include - -namespace MOBase { class IPluginGame; class ISaveGame; } - -/** - * @brief represents a single save game - **/ -class SaveGameGamebryo : public SaveGame { - -Q_OBJECT - -public: - - /** - * @brief construct a save game and immediately read out information from the file - * - * @param filename absolute path of the save game file - **/ - SaveGameGamebryo(QObject *parent, const QString &filename, MOBase::IPluginGame const *game); - - /* - - SaveGameGamebryo(const SaveGameGamebryo &reference); - - SaveGameGamebryo &operator=(const SaveGameGamebryo &reference); - - ~SaveGameGamebryo(); - */ - - /** - * @return number of plugins that were enabled when the save game was created - **/ - int numPlugins() const { return m_Plugins.size(); } - - /** - * retrieve the name of one of the plugins that were enabled when the save game - * was created. valid indices are in the range between [0, numPlugins()[ - * @param index plugin index - * @return name of the plugin - **/ - const QString &plugin(int index) const { return m_Plugins.at(index); } - -private: - - QStringList m_Plugins; - //Note: This isn't owned by us so safe to copy - MOBase::ISaveGame const *m_Save; - -}; - -#endif // SAVEGAMEGAMEBRYO_H diff --git a/src/savegameinfowidget.cpp b/src/savegameinfowidget.cpp index 63eefb93..bf4a9598 100644 --- a/src/savegameinfowidget.cpp +++ b/src/savegameinfowidget.cpp @@ -19,9 +19,22 @@ along with Mod Organizer. If not, see . #include "savegameinfowidget.h" #include "ui_savegameinfowidget.h" -#include "utility.h" -#include "savegame.h" -#include + +#include "isavegame.h" +#include "gamebryosavegame.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include SaveGameInfoWidget::SaveGameInfoWidget(QWidget *parent) @@ -41,14 +54,19 @@ SaveGameInfoWidget::~SaveGameInfoWidget() } -void SaveGameInfoWidget::setSave(const SaveGame *saveGame) +void SaveGameInfoWidget::setSave(MOBase::ISaveGame const *saveGame) { - ui->saveNumLabel->setText(QString("%1").arg(saveGame->saveNumber())); - ui->characterLabel->setText(saveGame->pcName()); - ui->locationLabel->setText(saveGame->pcLocation()); - ui->levelLabel->setText(QString("%1").arg(saveGame->pcLevel())); - ui->dateLabel->setText(MOBase::ToString(saveGame->creationTime())); - ui->screenshotLabel->setPixmap(QPixmap::fromImage(saveGame->screenshot())); + GamebryoSaveGame const *game = dynamic_cast(saveGame); + ui->saveNumLabel->setText(QString("%1").arg(game->getSaveNumber())); + ui->characterLabel->setText(game->getPCName()); + ui->locationLabel->setText(game->getPCLocation()); + ui->levelLabel->setText(QString("%1").arg(game->getPCLevel())); + //This somewhat contorted code is because on my system at least, the + //old way of doing this appears to give short date and long time. + QDateTime t = saveGame->getCreationTime(); + ui->dateLabel->setText(t.date().toString(Qt::DefaultLocaleShortDate) + " " + + t.time().toString(Qt::DefaultLocaleLongDate)); + ui->screenshotLabel->setPixmap(QPixmap::fromImage(game->getScreenshot())); if (ui->gameFrame->layout() != nullptr) { QLayoutItem *item = nullptr; while ((item = ui->gameFrame->layout()->takeAt(0)) != nullptr) { diff --git a/src/savegameinfowidget.h b/src/savegameinfowidget.h index dfb0f8b1..c811313c 100644 --- a/src/savegameinfowidget.h +++ b/src/savegameinfowidget.h @@ -20,14 +20,16 @@ along with Mod Organizer. If not, see . #ifndef SAVEGAMEINFOWIDGET_H #define SAVEGAMEINFOWIDGET_H +#include #include -#include + +class QFrame; namespace Ui { class SaveGameInfoWidget; } -class SaveGame; +namespace MOBase { class ISaveGame; } class SaveGameInfoWidget : public QWidget { @@ -38,7 +40,7 @@ public: explicit SaveGameInfoWidget(QWidget *parent = 0); ~SaveGameInfoWidget(); - virtual void setSave(const SaveGame *saveGame); + virtual void setSave(MOBase::ISaveGame const *saveGame); signals: diff --git a/src/savegameinfowidgetgamebryo.cpp b/src/savegameinfowidgetgamebryo.cpp index d92025c2..854043a3 100644 --- a/src/savegameinfowidgetgamebryo.cpp +++ b/src/savegameinfowidgetgamebryo.cpp @@ -17,13 +17,18 @@ You should have received a copy of the GNU General Public License along with Mod Organizer. If not, see . */ -#include "savegamegamebryo.h" #include "savegameinfowidgetgamebryo.h" + +#include "pluginlist.h" +#include "gamebryosavegame.h" + +#include #include +#include #include -SaveGameInfoWidgetGamebryo::SaveGameInfoWidgetGamebryo(const SaveGame *saveGame, PluginList *pluginList, QWidget *parent) +SaveGameInfoWidgetGamebryo::SaveGameInfoWidgetGamebryo(MOBase::ISaveGame const *saveGame, PluginList *pluginList, QWidget *parent) : SaveGameInfoWidget(parent), m_PluginList(pluginList) { QVBoxLayout *gameLayout = new QVBoxLayout(); @@ -34,10 +39,10 @@ SaveGameInfoWidgetGamebryo::SaveGameInfoWidgetGamebryo(const SaveGame *saveGame, } -void SaveGameInfoWidgetGamebryo::setSave(const SaveGame *saveGame) +void SaveGameInfoWidgetGamebryo::setSave(MOBase::ISaveGame const *saveGame) { SaveGameInfoWidget::setSave(saveGame); - const SaveGameGamebryo *gamebryoSave = qobject_cast(saveGame); + GamebryoSaveGame const *gamebryoSave = dynamic_cast(saveGame); QLayout *layout = getGameFrame()->layout(); QLabel *header = new QLabel(tr("Missing ESPs")); QFont headerFont = header->font(); @@ -48,19 +53,18 @@ void SaveGameInfoWidgetGamebryo::setSave(const SaveGame *saveGame) header->setFont(headerFont); layout->addWidget(header); int count = 0; - for (int i = 0; i < gamebryoSave->numPlugins(); ++i) { - const QString &pluginName = gamebryoSave->plugin(i); + for (QString const &pluginName : gamebryoSave->getPlugins()) { if (m_PluginList->isEnabled(pluginName)) { continue; - } else { - ++count; } + ++count; + if (count > 10) { break; } - QLabel *pluginLabel = new QLabel(gamebryoSave->plugin(i)); + QLabel *pluginLabel = new QLabel(pluginName); pluginLabel->setIndent(10); pluginLabel->setFont(contentFont); layout->addWidget(pluginLabel); diff --git a/src/savegameinfowidgetgamebryo.h b/src/savegameinfowidgetgamebryo.h index 149a8885..db6c91df 100644 --- a/src/savegameinfowidgetgamebryo.h +++ b/src/savegameinfowidgetgamebryo.h @@ -22,18 +22,16 @@ along with Mod Organizer. If not, see . #include "savegameinfowidget.h" -#include "pluginlist.h" - -class SaveGame; +class PluginList; class SaveGameInfoWidgetGamebryo : public SaveGameInfoWidget { public: - explicit SaveGameInfoWidgetGamebryo(const SaveGame *saveGame, PluginList *pluginList, QWidget *parent = 0); + explicit SaveGameInfoWidgetGamebryo(MOBase::ISaveGame const *saveGame, PluginList *pluginList, QWidget *parent = 0); - virtual void setSave(const SaveGame *saveGame); + virtual void setSave(MOBase::ISaveGame const *saveGame); private: -- cgit v1.3.1 From 3869eaaf2bfacf4a44733b8346d790999588c37f Mon Sep 17 00:00:00 2001 From: Thomas Tanner Date: Fri, 25 Dec 2015 21:57:23 +0000 Subject: Transferring the savegame widget into gamebryo + some cleanup --- src/mainwindow.cpp | 40 +++++++++++++------------------------- src/mainwindow.h | 7 +++---- src/savegameinfowidgetgamebryo.cpp | 4 +++- src/transfersavesdialog.cpp | 4 ++++ 4 files changed, 24 insertions(+), 31 deletions(-) (limited to 'src/mainwindow.cpp') diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 8f71f636..0a690a8e 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -29,6 +29,7 @@ along with Mod Organizer. If not, see . #include "iplugingame.h" #include "iplugindiagnose.h" #include "isavegame.h" +#include "isavegameinfowidget.h" #include "nexusinterface.h" #include "organizercore.h" #include "pluginlistsortproxy.h" @@ -864,33 +865,25 @@ void MainWindow::setBrowserGeometry(const QByteArray &geometry) m_IntegratedBrowser.restoreGeometry(geometry); } -ISaveGame const *MainWindow::getSaveGame(QListWidgetItem *item) +void MainWindow::displaySaveGameInfo(QListWidgetItem *newItem) { - try { + QString const &save = newItem->data(Qt::UserRole).toString(); + if (m_CurrentSaveView == nullptr) { + //FIXME Is this the right place? IPluginGame const *game = m_OrganizerCore.managedGame(); SaveGameInfo const *info = game->feature(); if (info != nullptr) { - return info->getSaveGameInfo(item->data(Qt::UserRole).toString()); + m_CurrentSaveView = info->getSaveGameWidget(this); + } + if (m_CurrentSaveView == nullptr) { + return; } - //SaveGameGamebryo *saveGame = new SaveGameGamebryo(/*this,*/ item->data(Qt::UserRole).toString(), game); - //saveGame->setParent(item->listWidget()); - //return saveGame; - } catch (const std::exception &e) { - reportError(tr("failed to read savegame: %1").arg(e.what())); - } - return nullptr; -} - -void MainWindow::displaySaveGameInfo(MOBase::ISaveGame const *save, QPoint pos) -{ - if (m_CurrentSaveView == nullptr) { - m_CurrentSaveView = new SaveGameInfoWidgetGamebryo(save, m_OrganizerCore.pluginList(), this); - } else { - m_CurrentSaveView->setSave(save); } + m_CurrentSaveView->setSave(save); QRect screenRect = QApplication::desktop()->availableGeometry(m_CurrentSaveView); + QPoint pos = QCursor::pos(); if (pos.x() + m_CurrentSaveView->width() > screenRect.right()) { pos.rx() -= (m_CurrentSaveView->width() + 2); } else { @@ -905,8 +898,9 @@ void MainWindow::displaySaveGameInfo(MOBase::ISaveGame const *save, QPoint pos) m_CurrentSaveView->move(pos); m_CurrentSaveView->show(); + m_CurrentSaveView->setProperty("displayItem", qVariantFromValue(static_cast(newItem))); + ui->savegameList->activateWindow(); - connect(m_CurrentSaveView, SIGNAL(closeSaveInfo()), this, SLOT(hideSaveGameInfo())); } @@ -915,20 +909,14 @@ void MainWindow::saveSelectionChanged(QListWidgetItem *newItem) if (newItem == nullptr) { hideSaveGameInfo(); } else if (m_CurrentSaveView == nullptr || newItem != m_CurrentSaveView->property("displayItem").value()) { - MOBase::ISaveGame const *save = getSaveGame(newItem); - if (save != nullptr) { - displaySaveGameInfo(save, QCursor::pos()); - m_CurrentSaveView->setProperty("displayItem", qVariantFromValue(static_cast(newItem))); - } + displaySaveGameInfo(newItem); } } - void MainWindow::hideSaveGameInfo() { if (m_CurrentSaveView != nullptr) { - disconnect(m_CurrentSaveView, SIGNAL(closeSaveInfo()), this, SLOT(hideSaveGameInfo())); m_CurrentSaveView->deleteLater(); m_CurrentSaveView = nullptr; } diff --git a/src/mainwindow.h b/src/mainwindow.h index 07f24540..0fd15d85 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -256,9 +256,7 @@ private: void setCategoryListVisible(bool visible); - MOBase::ISaveGame const *getSaveGame(QListWidgetItem *item); - - void displaySaveGameInfo(MOBase::ISaveGame const *save, QPoint pos); + void displaySaveGameInfo(QListWidgetItem *newItem); HANDLE nextChildProcess(); @@ -333,7 +331,8 @@ private: QTimer m_UpdateProblemsTimer; QTime m_StartTime; - SaveGameInfoWidget *m_CurrentSaveView; + //SaveGameInfoWidget *m_CurrentSaveView; + MOBase::ISaveGameInfoWidget *m_CurrentSaveView; OrganizerCore &m_OrganizerCore; PluginContainer &m_PluginContainer; diff --git a/src/savegameinfowidgetgamebryo.cpp b/src/savegameinfowidgetgamebryo.cpp index 854043a3..1836a8f2 100644 --- a/src/savegameinfowidgetgamebryo.cpp +++ b/src/savegameinfowidgetgamebryo.cpp @@ -54,7 +54,9 @@ void SaveGameInfoWidgetGamebryo::setSave(MOBase::ISaveGame const *saveGame) layout->addWidget(header); int count = 0; for (QString const &pluginName : gamebryoSave->getPlugins()) { - if (m_PluginList->isEnabled(pluginName)) { + //if (m_PluginList->isEnabled(pluginName)) { + //should use IPluginList * in interface + if (m_PluginList->state(pluginName) == MOBase::IPluginList::STATE_ACTIVE) { continue; } diff --git a/src/transfersavesdialog.cpp b/src/transfersavesdialog.cpp index 2f1c41a1..cb3d0d61 100644 --- a/src/transfersavesdialog.cpp +++ b/src/transfersavesdialog.cpp @@ -90,6 +90,10 @@ public: return {}; } + MOBase::ISaveGameInfoWidget *getSaveGameWidget(QWidget *) const override + { + return nullptr; + } }; } //end anonymous namespace -- cgit v1.3.1 From ae6bb99c521af611989439b6db8a14a1b27866fc Mon Sep 17 00:00:00 2001 From: Thomas Tanner Date: Sat, 26 Dec 2015 08:23:43 +0000 Subject: Remove savegameinfowidget from organizer core --- src/CMakeLists.txt | 5 - src/mainwindow.cpp | 3 - src/mainwindow.h | 1 - src/organizer.pro | 5 - src/savegameinfowidget.cpp | 83 --------------- src/savegameinfowidget.h | 63 ----------- src/savegameinfowidget.ui | 209 ------------------------------------- src/savegameinfowidgetgamebryo.cpp | 86 --------------- src/savegameinfowidgetgamebryo.h | 42 -------- 9 files changed, 497 deletions(-) delete mode 100644 src/savegameinfowidget.cpp delete mode 100644 src/savegameinfowidget.h delete mode 100644 src/savegameinfowidget.ui delete mode 100644 src/savegameinfowidgetgamebryo.cpp delete mode 100644 src/savegameinfowidgetgamebryo.h (limited to 'src/mainwindow.cpp') diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 428f18f9..b80283af 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -18,8 +18,6 @@ SET(organizer_SRCS settings.cpp selfupdater.cpp selectiondialog.cpp - savegameinfowidgetgamebryo.cpp - savegameinfowidget.cpp queryoverwritedialog.cpp profilesdialog.cpp profile.cpp @@ -110,8 +108,6 @@ SET(organizer_HDRS settings.h selfupdater.h selectiondialog.h - savegameinfowidgetgamebryo.h - savegameinfowidget.h queryoverwritedialog.h profilesdialog.h profile.h @@ -200,7 +196,6 @@ SET(organizer_UIS simpleinstalldialog.ui settingsdialog.ui selectiondialog.ui - savegameinfowidget.ui queryoverwritedialog.ui profilesdialog.ui overwriteinfodialog.ui diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 0a690a8e..4d608d59 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -72,8 +72,6 @@ along with Mod Organizer. If not, see . #include "browserdialog.h" #include "aboutdialog.h" #include "safewritefile.h" -#include "savegameinfowidget.h" -#include "savegameinfowidgetgamebryo.h" #include "nxmaccessmanager.h" #include "appconfig.h" #include @@ -869,7 +867,6 @@ void MainWindow::displaySaveGameInfo(QListWidgetItem *newItem) { QString const &save = newItem->data(Qt::UserRole).toString(); if (m_CurrentSaveView == nullptr) { - //FIXME Is this the right place? IPluginGame const *game = m_OrganizerCore.managedGame(); SaveGameInfo const *info = game->feature(); if (info != nullptr) { diff --git a/src/mainwindow.h b/src/mainwindow.h index 0fd15d85..177048b4 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -39,7 +39,6 @@ class LockedDialog; class OrganizerCore; #include "plugincontainer.h" //class PluginContainer; class PluginListSortProxy; -class SaveGameInfoWidget; namespace BSA { class Archive; } #include "iplugingame.h" //namespace MOBase { class IPluginGame; } namespace MOBase { class IPluginModPage; } diff --git a/src/organizer.pro b/src/organizer.pro index ee0526ed..0ef2638b 100644 --- a/src/organizer.pro +++ b/src/organizer.pro @@ -27,8 +27,6 @@ SOURCES += \ settings.cpp \ selfupdater.cpp \ selectiondialog.cpp \ - savegameinfowidgetgamebryo.cpp \ - savegameinfowidget.cpp \ queryoverwritedialog.cpp \ profilesdialog.cpp \ profile.cpp \ @@ -105,8 +103,6 @@ HEADERS += \ settings.h \ selfupdater.h \ selectiondialog.h \ - savegameinfowidgetgamebryo.h \ - savegameinfowidget.h \ queryoverwritedialog.h \ profilesdialog.h \ profile.h \ @@ -179,7 +175,6 @@ FORMS += \ simpleinstalldialog.ui \ settingsdialog.ui \ selectiondialog.ui \ - savegameinfowidget.ui \ queryoverwritedialog.ui \ profilesdialog.ui \ overwriteinfodialog.ui \ diff --git a/src/savegameinfowidget.cpp b/src/savegameinfowidget.cpp deleted file mode 100644 index bf4a9598..00000000 --- a/src/savegameinfowidget.cpp +++ /dev/null @@ -1,83 +0,0 @@ -/* -Copyright (C) 2012 Sebastian Herbord. All rights reserved. - -This file is part of Mod Organizer. - -Mod Organizer is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -Mod Organizer is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with Mod Organizer. If not, see . -*/ - -#include "savegameinfowidget.h" -#include "ui_savegameinfowidget.h" - -#include "isavegame.h" -#include "gamebryosavegame.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - - -SaveGameInfoWidget::SaveGameInfoWidget(QWidget *parent) - : QWidget(parent) - , ui(new Ui::SaveGameInfoWidget) -{ - ui->setupUi(this); - this->setWindowFlags(Qt::ToolTip | Qt::BypassGraphicsProxyWidget); - setWindowOpacity(style()->styleHint(QStyle::SH_ToolTipLabel_Opacity, 0, this) / qreal(255.0)); - ui->gameFrame->setStyleSheet("background-color: transparent;"); -// installEventFilter(this); -} - -SaveGameInfoWidget::~SaveGameInfoWidget() -{ - delete ui; -} - - -void SaveGameInfoWidget::setSave(MOBase::ISaveGame const *saveGame) -{ - GamebryoSaveGame const *game = dynamic_cast(saveGame); - ui->saveNumLabel->setText(QString("%1").arg(game->getSaveNumber())); - ui->characterLabel->setText(game->getPCName()); - ui->locationLabel->setText(game->getPCLocation()); - ui->levelLabel->setText(QString("%1").arg(game->getPCLevel())); - //This somewhat contorted code is because on my system at least, the - //old way of doing this appears to give short date and long time. - QDateTime t = saveGame->getCreationTime(); - ui->dateLabel->setText(t.date().toString(Qt::DefaultLocaleShortDate) + " " + - t.time().toString(Qt::DefaultLocaleLongDate)); - ui->screenshotLabel->setPixmap(QPixmap::fromImage(game->getScreenshot())); - if (ui->gameFrame->layout() != nullptr) { - QLayoutItem *item = nullptr; - while ((item = ui->gameFrame->layout()->takeAt(0)) != nullptr) { - delete item->widget(); - delete item; - } - ui->gameFrame->layout()->setSizeConstraint(QLayout::SetFixedSize); - } -} - -QFrame *SaveGameInfoWidget::getGameFrame() -{ - return ui->gameFrame; -} diff --git a/src/savegameinfowidget.h b/src/savegameinfowidget.h deleted file mode 100644 index c811313c..00000000 --- a/src/savegameinfowidget.h +++ /dev/null @@ -1,63 +0,0 @@ -/* -Copyright (C) 2012 Sebastian Herbord. All rights reserved. - -This file is part of Mod Organizer. - -Mod Organizer is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -Mod Organizer is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with Mod Organizer. If not, see . -*/ - -#ifndef SAVEGAMEINFOWIDGET_H -#define SAVEGAMEINFOWIDGET_H - -#include -#include - -class QFrame; - -namespace Ui { -class SaveGameInfoWidget; -} - -namespace MOBase { class ISaveGame; } - -class SaveGameInfoWidget : public QWidget -{ - Q_OBJECT - -public: - - explicit SaveGameInfoWidget(QWidget *parent = 0); - ~SaveGameInfoWidget(); - - virtual void setSave(MOBase::ISaveGame const *saveGame); - -signals: - - void closeSaveInfo(); - -protected: - -// virtual bool eventFilter(QObject *object, QEvent *event); - - QFrame *getGameFrame(); - -private: - -private: - - Ui::SaveGameInfoWidget *ui; - -}; - -#endif // SAVEGAMEINFOWIDGET_H diff --git a/src/savegameinfowidget.ui b/src/savegameinfowidget.ui deleted file mode 100644 index e2e9588c..00000000 --- a/src/savegameinfowidget.ui +++ /dev/null @@ -1,209 +0,0 @@ - - - SaveGameInfoWidget - - - - 0 - 0 - 400 - 300 - - - - - 0 - 0 - - - - - - - - - - - - - QFormLayout::AllNonFixedFieldsGrow - - - - - - true - - - - Save # - - - - - - - - true - - - - Character - - - - - - - - true - - - - Level - - - - - - - - true - - - - Location - - - - - - - - true - - - - Date - - - - - - - - 75 - true - - - - - - - - - - - - 75 - true - - - - - - - - - - - - 75 - true - - - - - - - - - - - - 75 - true - - - - - - - - - - - - 75 - true - - - - - - - - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - false - - - - - - Qt::AlignCenter - - - - - - - - diff --git a/src/savegameinfowidgetgamebryo.cpp b/src/savegameinfowidgetgamebryo.cpp deleted file mode 100644 index 1836a8f2..00000000 --- a/src/savegameinfowidgetgamebryo.cpp +++ /dev/null @@ -1,86 +0,0 @@ -/* -Copyright (C) 2012 Sebastian Herbord. All rights reserved. - -This file is part of Mod Organizer. - -Mod Organizer is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -Mod Organizer is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with Mod Organizer. If not, see . -*/ - -#include "savegameinfowidgetgamebryo.h" - -#include "pluginlist.h" -#include "gamebryosavegame.h" - -#include -#include -#include -#include - - -SaveGameInfoWidgetGamebryo::SaveGameInfoWidgetGamebryo(MOBase::ISaveGame const *saveGame, PluginList *pluginList, QWidget *parent) - : SaveGameInfoWidget(parent), m_PluginList(pluginList) -{ - QVBoxLayout *gameLayout = new QVBoxLayout(); - gameLayout->setMargin(0); - gameLayout->setSpacing(2); - getGameFrame()->setLayout(gameLayout); - setSave(saveGame); -} - - -void SaveGameInfoWidgetGamebryo::setSave(MOBase::ISaveGame const *saveGame) -{ - SaveGameInfoWidget::setSave(saveGame); - GamebryoSaveGame const *gamebryoSave = dynamic_cast(saveGame); - QLayout *layout = getGameFrame()->layout(); - QLabel *header = new QLabel(tr("Missing ESPs")); - QFont headerFont = header->font(); - QFont contentFont = headerFont; - headerFont.setItalic(true); - contentFont.setBold(true); - contentFont.setPointSize(7); - header->setFont(headerFont); - layout->addWidget(header); - int count = 0; - for (QString const &pluginName : gamebryoSave->getPlugins()) { - //if (m_PluginList->isEnabled(pluginName)) { - //should use IPluginList * in interface - if (m_PluginList->state(pluginName) == MOBase::IPluginList::STATE_ACTIVE) { - continue; - } - - ++count; - - if (count > 10) { - break; - } - - QLabel *pluginLabel = new QLabel(pluginName); - pluginLabel->setIndent(10); - pluginLabel->setFont(contentFont); - layout->addWidget(pluginLabel); - } - if (count > 10) { - QLabel *dotDotLabel = new QLabel("..."); - dotDotLabel->setIndent(10); - dotDotLabel->setFont(contentFont); - layout->addWidget(dotDotLabel); - } - if (count == 0) { - QLabel *dotDotLabel = new QLabel(tr("None")); - dotDotLabel->setIndent(10); - dotDotLabel->setFont(contentFont); - layout->addWidget(dotDotLabel); - } -} diff --git a/src/savegameinfowidgetgamebryo.h b/src/savegameinfowidgetgamebryo.h deleted file mode 100644 index db6c91df..00000000 --- a/src/savegameinfowidgetgamebryo.h +++ /dev/null @@ -1,42 +0,0 @@ -/* -Copyright (C) 2012 Sebastian Herbord. All rights reserved. - -This file is part of Mod Organizer. - -Mod Organizer is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -Mod Organizer is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with Mod Organizer. If not, see . -*/ - -#ifndef SAVEGAMEINFOWIDGETGAMEBRYO_H -#define SAVEGAMEINFOWIDGETGAMEBRYO_H - - -#include "savegameinfowidget.h" - -class PluginList; - -class SaveGameInfoWidgetGamebryo : public SaveGameInfoWidget -{ -public: - - explicit SaveGameInfoWidgetGamebryo(MOBase::ISaveGame const *saveGame, PluginList *pluginList, QWidget *parent = 0); - - virtual void setSave(MOBase::ISaveGame const *saveGame); - -private: - - PluginList *m_PluginList; - -}; - -#endif // SAVEGAMEINFOWIDGETGAMEBRYO_H -- cgit v1.3.1