Просмотр исходного кода

Persist mod table header (especially column widths).

DJWarmonger 6 лет назад
Родитель
Сommit
d58c7b2105
1 измененных файлов с 21 добавлено и 6 удалено
  1. 21 6
      launcher/modManager/cmodlistview_moc.cpp

+ 21 - 6
launcher/modManager/cmodlistview_moc.cpp

@@ -11,6 +11,7 @@
 #include "cmodlistview_moc.h"
 #include "ui_cmodlistview_moc.h"
 #include "imageviewer_moc.h"
+#include "../mainwindow_moc.h"
 
 #include <QJsonArray>
 #include <QCryptographicHash>
@@ -42,16 +43,26 @@ void CModListView::setupModsView()
 	ui->allModsView->setModel(filterModel);
 	// input data is not sorted - sort it before display
 	ui->allModsView->sortByColumn(ModFields::TYPE, Qt::AscendingOrder);
-	ui->allModsView->setColumnWidth(ModFields::NAME, 185);
-	ui->allModsView->setColumnWidth(ModFields::STATUS_ENABLED, 30);
-	ui->allModsView->setColumnWidth(ModFields::STATUS_UPDATE, 30);
-	ui->allModsView->setColumnWidth(ModFields::TYPE, 75);
-	ui->allModsView->setColumnWidth(ModFields::SIZE, 80);
-	ui->allModsView->setColumnWidth(ModFields::VERSION, 60);
 
 	ui->allModsView->header()->setSectionResizeMode(ModFields::STATUS_ENABLED, QHeaderView::Fixed);
 	ui->allModsView->header()->setSectionResizeMode(ModFields::STATUS_UPDATE, QHeaderView::Fixed);
 
+	QSettings s(Ui::teamName, Ui::appName);
+	auto state = s.value("AllModsView/State").toByteArray();
+	if (!state.isNull()) //read last saved settings
+	{
+		ui->allModsView->header()->restoreState(state);
+	}
+	else //default //TODO: default high-DPI scaling
+	{
+		ui->allModsView->setColumnWidth(ModFields::NAME, 185);
+		ui->allModsView->setColumnWidth(ModFields::STATUS_ENABLED, 30);
+		ui->allModsView->setColumnWidth(ModFields::STATUS_UPDATE, 30);
+		ui->allModsView->setColumnWidth(ModFields::TYPE, 75);
+		ui->allModsView->setColumnWidth(ModFields::SIZE, 80);
+		ui->allModsView->setColumnWidth(ModFields::VERSION, 60);
+	}
+
 	ui->allModsView->setUniformRowHeights(true);
 
 	connect(ui->allModsView->selectionModel(), SIGNAL(currentRowChanged(const QModelIndex&,const QModelIndex&)),
@@ -70,6 +81,7 @@ CModListView::CModListView(QWidget * parent)
 	settingsListener([&](const JsonNode &){ repositoriesChanged = true; });
 	ui->setupUi(this);
 
+
 	setupModModel();
 	setupFilterModel();
 	setupModsView();
@@ -104,6 +116,9 @@ void CModListView::loadRepositories()
 
 CModListView::~CModListView()
 {
+	QSettings s(Ui::teamName, Ui::appName);
+	s.setValue("AllModsView/State", ui->allModsView->header()->saveState());
+
 	delete ui;
 }