Browse Source

Game list: save and load column sizes, sort order, to QSettings

archshift 11 years ago
parent
commit
0fae76c741
3 changed files with 24 additions and 0 deletions
  1. 17 0
      src/citra_qt/game_list.cpp
  2. 4 0
      src/citra_qt/game_list.h
  3. 3 0
      src/citra_qt/main.cpp

+ 17 - 0
src/citra_qt/game_list.cpp

@@ -100,6 +100,23 @@ void GameList::PopulateAsync(const QString& dir_path, bool deep_scan)
     current_worker = std::move(worker);
 }
 
+void GameList::SaveInterfaceLayout(QSettings& settings)
+{
+    settings.beginGroup("UILayout");
+    settings.setValue("gameListHeaderState", tree_view->header()->saveState());
+    settings.endGroup();
+}
+
+void GameList::LoadInterfaceLayout(QSettings& settings)
+{
+    auto header = tree_view->header();
+    settings.beginGroup("UILayout");
+    header->restoreState(settings.value("gameListHeaderState").toByteArray());
+    settings.endGroup();
+
+    item_model->sort(header->sortIndicatorSection(), header->sortIndicatorOrder());
+}
+
 void GameListWorker::AddFstEntriesToGameList(const std::string& dir_path, bool deep_scan)
 {
     const auto callback = [&](const std::string& directory,

+ 4 - 0
src/citra_qt/game_list.h

@@ -5,6 +5,7 @@
 #pragma once
 
 #include <QModelIndex>
+#include <QSettings>
 #include <QStandardItem>
 #include <QStandardItemModel>
 #include <QString>
@@ -30,6 +31,9 @@ public:
 
     void PopulateAsync(const QString& dir_path, bool deep_scan);
 
+    void SaveInterfaceLayout(QSettings& settings);
+    void LoadInterfaceLayout(QSettings& settings);
+
 public slots:
     void AddEntry(QList<QStandardItem*> entry_items);
 

+ 3 - 0
src/citra_qt/main.cpp

@@ -141,6 +141,8 @@ GMainWindow::GMainWindow() : emu_thread(nullptr)
     microProfileDialog->setVisible(settings.value("microProfileDialogVisible").toBool());
     settings.endGroup();
 
+    game_list->LoadInterfaceLayout(settings);
+
     ui.action_Use_Hardware_Renderer->setChecked(Settings::values.use_hw_renderer);
     SetHardwareRendererEnabled(ui.action_Use_Hardware_Renderer->isChecked());
 
@@ -490,6 +492,7 @@ void GMainWindow::closeEvent(QCloseEvent* event) {
     settings.setValue("singleWindowMode", ui.action_Single_Window_Mode->isChecked());
     settings.setValue("displayTitleBars", ui.actionDisplay_widget_title_bars->isChecked());
     settings.setValue("firstStart", false);
+    game_list->SaveInterfaceLayout(settings);
     SaveHotkeys(settings);
 
     // Shutdown session if the emu thread is active...