From a8f6f0d7a0f1c8506e225dc5a817cadc0c0b3662 Mon Sep 17 00:00:00 2001 From: isanae <14251494+isanae@users.noreply.github.com> Date: Mon, 28 Dec 2020 05:28:37 -0500 Subject: split saves tab, no changes --- src/savestab.h | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 src/savestab.h (limited to 'src/savestab.h') diff --git a/src/savestab.h b/src/savestab.h new file mode 100644 index 00000000..d3eb7e63 --- /dev/null +++ b/src/savestab.h @@ -0,0 +1,60 @@ +#ifndef MODORGANIZER_SAVESTAB_INCLUDED +#define MODORGANIZER_SAVESTAB_INCLUDED + +#include "savegameinfo.h" +#include + +namespace Ui { class MainWindow; } + +namespace MOBase +{ + class ISaveGame; + class ISaveGameInfoWidget; +} + +class MainWindow; +class OrganizerCore; + + +class SavesTab : public QObject +{ + Q_OBJECT; + +public: + SavesTab(QWidget* window, OrganizerCore& core, Ui::MainWindow* ui); + + void refreshSaveList(); + void displaySaveGameInfo(QListWidgetItem *newItem); + + QDir currentSavesDir() const; + + void startMonitorSaves(); + void stopMonitorSaves(); + void hideSaveGameInfo(); + +private: + struct SavesTabUi + { + QTabWidget* mainTabs; + QWidget* tab; + QListWidget* list; + }; + + QWidget* m_window; + OrganizerCore& m_core; + SavesTabUi ui; + MOBase::FilterWidget m_filter; + std::vector> m_SaveGames; + MOBase::ISaveGameInfoWidget *m_CurrentSaveView; + + QTimer m_SavesWatcherTimer; + QFileSystemWatcher m_SavesWatcher; + + void onContextMenu(const QPoint &pos); + void deleteSavegame(); + void saveSelectionChanged(QListWidgetItem *newItem); + void fixMods(SaveGameInfo::MissingAssets const &missingAssets); + void refreshSavesIfOpen(); +}; + +#endif // MODORGANIZER_SAVESTAB_INCLUDED -- cgit v1.3.1 From f46a14f3bfa0bec9decad453d967de089e4833ad Mon Sep 17 00:00:00 2001 From: isanae <14251494+isanae@users.noreply.github.com> Date: Mon, 28 Dec 2020 05:37:14 -0500 Subject: delete shortcut for save games --- src/mainwindow.cpp | 5 +---- src/savestab.cpp | 18 ++++++++++++++++++ src/savestab.h | 3 +++ 3 files changed, 22 insertions(+), 4 deletions(-) (limited to 'src/savestab.h') diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index e7d99f23..0f5b15e3 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -1503,10 +1503,7 @@ void MainWindow::cleanup() bool MainWindow::eventFilter(QObject *object, QEvent *event) { - if ((object == ui->savegameList) && - ((event->type() == QEvent::Leave) || (event->type() == QEvent::WindowDeactivate))) { - m_SavesTab->hideSaveGameInfo(); - } else if (event->type() == QEvent::StatusTip && object != this) { + if (event->type() == QEvent::StatusTip && object != this) { QMainWindow::event(event); return true; } diff --git a/src/savestab.cpp b/src/savestab.cpp index a14321d3..31471740 100644 --- a/src/savestab.cpp +++ b/src/savestab.cpp @@ -32,6 +32,24 @@ SavesTab::SavesTab(QWidget* window, OrganizerCore& core, Ui::MainWindow* mwui) connect( ui.list, &QListWidget::itemEntered, [&](auto* item){ saveSelectionChanged(item); }); + + ui.list->installEventFilter(this); +} + +bool SavesTab::eventFilter(QObject* object, QEvent* e) +{ + if (object == ui.list) { + if (e->type() == QEvent::Leave || e->type() == QEvent::WindowDeactivate) { + hideSaveGameInfo(); + } else if (e->type() == QEvent::KeyPress) { + QKeyEvent *keyEvent = static_cast(e); + if (keyEvent->key() == Qt::Key_Delete) { + deleteSavegame(); + } + } + } + + return false; } void SavesTab::displaySaveGameInfo(QListWidgetItem *newItem) diff --git a/src/savestab.h b/src/savestab.h index d3eb7e63..8d84e3c1 100644 --- a/src/savestab.h +++ b/src/savestab.h @@ -32,6 +32,9 @@ public: void stopMonitorSaves(); void hideSaveGameInfo(); +protected: + bool eventFilter(QObject* object, QEvent* e) override; + private: struct SavesTabUi { -- cgit v1.3.1 From c2c0f7c98d4b61314c679e0fed7fac914f4f1284 Mon Sep 17 00:00:00 2001 From: isanae <14251494+isanae@users.noreply.github.com> Date: Mon, 28 Dec 2020 05:44:51 -0500 Subject: added open in explorer in save game context menu --- src/savestab.cpp | 16 +++++++++++++++- src/savestab.h | 1 + 2 files changed, 16 insertions(+), 1 deletion(-) (limited to 'src/savestab.h') diff --git a/src/savestab.cpp b/src/savestab.cpp index 31471740..e2c796b6 100644 --- a/src/savestab.cpp +++ b/src/savestab.cpp @@ -264,9 +264,10 @@ void SavesTab::onContextMenu(const QPoint& pos) } QString deleteMenuLabel = tr("Delete %n save(s)", "", selection->selectedIndexes().count()); - menu.addAction(deleteMenuLabel, [&]{ deleteSavegame(); }); + menu.addAction(tr("Open in Explorer..."), [&]{ openInExplorer(); }); + menu.exec(ui.list->viewport()->mapToGlobal(pos)); } @@ -294,3 +295,16 @@ void SavesTab::fixMods(SaveGameInfo::MissingAssets const &missingAssets) m_core.saveCurrentLists(); } } + +void SavesTab::openInExplorer() +{ + const SaveGameInfo* info = m_core.managedGame()->feature(); + + const auto sel = ui.list->selectionModel()->selectedIndexes(); + if (sel.empty()) { + return; + } + + auto& saveGame = m_SaveGames[sel[0].row()]; + shell::Explore(saveGame->getFilepath()); +} diff --git a/src/savestab.h b/src/savestab.h index 8d84e3c1..db82b816 100644 --- a/src/savestab.h +++ b/src/savestab.h @@ -58,6 +58,7 @@ private: void saveSelectionChanged(QListWidgetItem *newItem); void fixMods(SaveGameInfo::MissingAssets const &missingAssets); void refreshSavesIfOpen(); + void openInExplorer(); }; #endif // MODORGANIZER_SAVESTAB_INCLUDED -- cgit v1.3.1