summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMikaël Capelle <capelle.mikael@gmail.com>2021-02-27 12:42:37 +0100
committerMikaël Capelle <capelle.mikael@gmail.com>2021-02-27 12:42:37 +0100
commitc72326ee4bbb6511d5088b1e421fd7448f20c80d (patch)
tree01933bf9b3d123b675b0bc518611f01a1226806b /src
parent2b86a14c8644eac8ca6eddcb6be9d96d01b7ff68 (diff)
Display savegame name and filepath in saves tab.
Diffstat (limited to 'src')
-rw-r--r--src/mainwindow.cpp2
-rw-r--r--src/mainwindow.ui41
-rw-r--r--src/savestab.cpp24
-rw-r--r--src/savestab.h6
-rw-r--r--src/stylesheets/skyrim.qss3
-rw-r--r--src/stylesheets/vs15 Dark-Green.qss1
-rw-r--r--src/stylesheets/vs15 Dark-Orange.qss1
-rw-r--r--src/stylesheets/vs15 Dark-Purple.qss1
-rw-r--r--src/stylesheets/vs15 Dark-Red.qss1
-rw-r--r--src/stylesheets/vs15 Dark-Yellow.qss1
-rw-r--r--src/stylesheets/vs15 Dark.qss1
11 files changed, 64 insertions, 18 deletions
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 64ed6781..bc9a3ce6 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -351,6 +351,7 @@ MainWindow::MainWindow(Settings &settings
}
settings.geometry().restoreState(ui->downloadView->header());
+ settings.geometry().restoreState(ui->savegameList->header());
ui->splitter->setStretchFactor(0, 3);
ui->splitter->setStretchFactor(1, 2);
@@ -2005,6 +2006,7 @@ void MainWindow::storeSettings()
s.geometry().saveState(ui->espList->header());
s.geometry().saveState(ui->downloadView->header());
+ s.geometry().saveState(ui->savegameList->header());
s.widgets().saveIndex(ui->executablesListBox);
s.widgets().saveIndex(ui->tabWidget);
diff --git a/src/mainwindow.ui b/src/mainwindow.ui
index 4317b6c0..fd149dfb 100644
--- a/src/mainwindow.ui
+++ b/src/mainwindow.ui
@@ -1199,7 +1199,7 @@ p, li { white-space: pre-wrap; }
<number>0</number>
</property>
<item>
- <widget class="QListWidget" name="savegameList">
+ <widget class="QTreeWidget" name="savegameList">
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
</property>
@@ -1215,6 +1215,9 @@ p, li { white-space: pre-wrap; }
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-size:8pt;&quot;&gt;If you click &amp;quot;Fix Mods...&amp;quot; in the context menu, MO will try to activate all mods and esps to fix those missing esps. It will not disable anything!&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
+ <property name="sizeAdjustPolicy">
+ <enum>QAbstractScrollArea::AdjustIgnored</enum>
+ </property>
<property name="alternatingRowColors">
<bool>true</bool>
</property>
@@ -1224,9 +1227,43 @@ p, li { white-space: pre-wrap; }
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
- <property name="uniformItemSizes">
+ <property name="indentation">
+ <number>0</number>
+ </property>
+ <property name="rootIsDecorated">
+ <bool>false</bool>
+ </property>
+ <property name="uniformRowHeights">
<bool>true</bool>
</property>
+ <property name="sortingEnabled">
+ <bool>false</bool>
+ </property>
+ <property name="columnCount">
+ <number>2</number>
+ </property>
+ <attribute name="headerCascadingSectionResizes">
+ <bool>false</bool>
+ </attribute>
+ <attribute name="headerStretchLastSection">
+ <bool>false</bool>
+ </attribute>
+ <column>
+ <property name="text">
+ <string>Name</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignLeading|AlignVCenter</set>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>File</string>
+ </property>
+ <property name="textAlignment">
+ <set>AlignLeading|AlignVCenter</set>
+ </property>
+ </column>
</widget>
</item>
</layout>
diff --git a/src/savestab.cpp b/src/savestab.cpp
index e2c796b6..5b0b5275 100644
--- a/src/savestab.cpp
+++ b/src/savestab.cpp
@@ -30,10 +30,8 @@ SavesTab::SavesTab(QWidget* window, OrganizerCore& core, Ui::MainWindow* mwui)
[&](auto pos){ onContextMenu(pos); });
connect(
- ui.list, &QListWidget::itemEntered,
+ ui.list, &QTreeWidget::itemEntered,
[&](auto* item){ saveSelectionChanged(item); });
-
- ui.list->installEventFilter(this);
}
bool SavesTab::eventFilter(QObject* object, QEvent* e)
@@ -52,7 +50,7 @@ bool SavesTab::eventFilter(QObject* object, QEvent* e)
return false;
}
-void SavesTab::displaySaveGameInfo(QListWidgetItem *newItem)
+void SavesTab::displaySaveGameInfo(QTreeWidgetItem *newItem)
{
// don't display the widget if the main window doesn't have focus
//
@@ -76,7 +74,7 @@ void SavesTab::displaySaveGameInfo(QListWidgetItem *newItem)
}
}
- m_CurrentSaveView->setSave(*m_SaveGames[ui.list->row(newItem)]);
+ m_CurrentSaveView->setSave(*m_SaveGames[ui.list->indexOfTopLevelItem(newItem)]);
QWindow *window = m_CurrentSaveView->window()->windowHandle();
QRect screenRect;
@@ -104,7 +102,7 @@ void SavesTab::displaySaveGameInfo(QListWidgetItem *newItem)
}
-void SavesTab::saveSelectionChanged(QListWidgetItem *newItem)
+void SavesTab::saveSelectionChanged(QTreeWidgetItem *newItem)
{
if (newItem == nullptr) {
hideSaveGameInfo();
@@ -192,7 +190,9 @@ void SavesTab::refreshSaveList()
ui.list->clear();
for (auto& save: m_SaveGames) {
- ui.list->addItem(savesDir.relativeFilePath(save->getFilepath()));
+ auto relpath = savesDir.relativeFilePath(save->getFilepath());
+ auto display = save->getName();
+ ui.list->addTopLevelItem(new QTreeWidgetItem(ui.list, { display, relpath }));
}
}
catch(std::exception& e)
@@ -211,7 +211,7 @@ void SavesTab::deleteSavegame()
int count = 0;
- for (const QModelIndex &idx : ui.list->selectionModel()->selectedIndexes()) {
+ for (const QModelIndex &idx : ui.list->selectionModel()->selectedRows()) {
auto& saveGame = m_SaveGames[idx.row()];
@@ -253,8 +253,8 @@ void SavesTab::onContextMenu(const QPoint& pos)
if (info != nullptr) {
QAction* action = menu.addAction(tr("Fix enabled mods..."));
action->setEnabled(false);
- if (selection->selectedIndexes().count() == 1) {
- auto& save = m_SaveGames[selection->selectedIndexes()[0].row()];
+ if (selection->selectedRows().count() == 1) {
+ auto& save = m_SaveGames[selection->selectedRows()[0].row()];
SaveGameInfo::MissingAssets missing = info->getMissingAssets(*save);
if (missing.size() != 0) {
connect(action, &QAction::triggered, this, [this, missing] { fixMods(missing); });
@@ -263,7 +263,7 @@ void SavesTab::onContextMenu(const QPoint& pos)
}
}
- QString deleteMenuLabel = tr("Delete %n save(s)", "", selection->selectedIndexes().count());
+ QString deleteMenuLabel = tr("Delete %n save(s)", "", selection->selectedRows().count());
menu.addAction(deleteMenuLabel, [&]{ deleteSavegame(); });
menu.addAction(tr("Open in Explorer..."), [&]{ openInExplorer(); });
@@ -300,7 +300,7 @@ void SavesTab::openInExplorer()
{
const SaveGameInfo* info = m_core.managedGame()->feature<SaveGameInfo>();
- const auto sel = ui.list->selectionModel()->selectedIndexes();
+ const auto sel = ui.list->selectionModel()->selectedRows();
if (sel.empty()) {
return;
}
diff --git a/src/savestab.h b/src/savestab.h
index db82b816..5ab8c55b 100644
--- a/src/savestab.h
+++ b/src/savestab.h
@@ -24,7 +24,7 @@ public:
SavesTab(QWidget* window, OrganizerCore& core, Ui::MainWindow* ui);
void refreshSaveList();
- void displaySaveGameInfo(QListWidgetItem *newItem);
+ void displaySaveGameInfo(QTreeWidgetItem *newItem);
QDir currentSavesDir() const;
@@ -40,7 +40,7 @@ private:
{
QTabWidget* mainTabs;
QWidget* tab;
- QListWidget* list;
+ QTreeWidget* list;
};
QWidget* m_window;
@@ -55,7 +55,7 @@ private:
void onContextMenu(const QPoint &pos);
void deleteSavegame();
- void saveSelectionChanged(QListWidgetItem *newItem);
+ void saveSelectionChanged(QTreeWidgetItem *newItem);
void fixMods(SaveGameInfo::MissingAssets const &missingAssets);
void refreshSavesIfOpen();
void openInExplorer();
diff --git a/src/stylesheets/skyrim.qss b/src/stylesheets/skyrim.qss
index 7006e09a..71b93605 100644
--- a/src/stylesheets/skyrim.qss
+++ b/src/stylesheets/skyrim.qss
@@ -47,7 +47,8 @@ QTreeView::item {
#modList::item,
#settingsTree::item,
#pluginSettingsList::item,
-#espList::item {
+#espList::item,
+#savegameList::item {
min-height: 34px;
padding: 0; }
#modList::item QComboBox,
diff --git a/src/stylesheets/vs15 Dark-Green.qss b/src/stylesheets/vs15 Dark-Green.qss
index 65cba739..370dbba0 100644
--- a/src/stylesheets/vs15 Dark-Green.qss
+++ b/src/stylesheets/vs15 Dark-Green.qss
@@ -43,6 +43,7 @@ QListView::item:disabled,
#bsaList::item,
#dataTree::item,
QTreeView#modList::item,
+#savegameList::item,
QTreeWidget#categoriesTree::item,
#tabConflicts QTreeWidget::item {
padding: 0.3em 0; }
diff --git a/src/stylesheets/vs15 Dark-Orange.qss b/src/stylesheets/vs15 Dark-Orange.qss
index 62bd4bb8..af1fcc1e 100644
--- a/src/stylesheets/vs15 Dark-Orange.qss
+++ b/src/stylesheets/vs15 Dark-Orange.qss
@@ -44,6 +44,7 @@ QListView::item:disabled,
#bsaList::item,
#dataTree::item,
QTreeView#modList::item,
+#savegameList::item,
QTreeWidget#categoriesTree::item,
#tabConflicts QTreeWidget::item {
padding: 0.3em 0; }
diff --git a/src/stylesheets/vs15 Dark-Purple.qss b/src/stylesheets/vs15 Dark-Purple.qss
index 4e28b1d5..63b571ae 100644
--- a/src/stylesheets/vs15 Dark-Purple.qss
+++ b/src/stylesheets/vs15 Dark-Purple.qss
@@ -44,6 +44,7 @@ QListView::item:disabled,
#bsaList::item,
#dataTree::item,
QTreeView#modList::item,
+#savegameList::item,
QTreeWidget#categoriesTree::item,
#tabConflicts QTreeWidget::item {
padding: 0.3em 0; }
diff --git a/src/stylesheets/vs15 Dark-Red.qss b/src/stylesheets/vs15 Dark-Red.qss
index 5faaf3a9..304d9c39 100644
--- a/src/stylesheets/vs15 Dark-Red.qss
+++ b/src/stylesheets/vs15 Dark-Red.qss
@@ -44,6 +44,7 @@ QListView::item:disabled,
#bsaList::item,
#dataTree::item,
QTreeView#modList::item,
+#savegameList::item,
QTreeWidget#categoriesTree::item,
#tabConflicts QTreeWidget::item {
padding: 0.3em 0; }
diff --git a/src/stylesheets/vs15 Dark-Yellow.qss b/src/stylesheets/vs15 Dark-Yellow.qss
index 83610ea6..7d40b171 100644
--- a/src/stylesheets/vs15 Dark-Yellow.qss
+++ b/src/stylesheets/vs15 Dark-Yellow.qss
@@ -43,6 +43,7 @@ QListView::item:disabled,
#bsaList::item,
#dataTree::item,
QTreeView#modList::item,
+#savegameList::item,
QTreeWidget#categoriesTree::item,
#tabConflicts QTreeWidget::item {
padding: 0.3em 0; }
diff --git a/src/stylesheets/vs15 Dark.qss b/src/stylesheets/vs15 Dark.qss
index 7368f230..58cfd65f 100644
--- a/src/stylesheets/vs15 Dark.qss
+++ b/src/stylesheets/vs15 Dark.qss
@@ -44,6 +44,7 @@ QListView::item:disabled,
#dataTree::item,
QTreeView#modList::item,
QTreeWidget#categoriesTree::item,
+#savegameList::item,
#tabConflicts QTreeWidget::item {
padding: 0.3em 0; }