save sets dialog size (#4791)

* save sets dialog size

* reset sorting when restoring

* add to gitignore
This commit is contained in:
ebbit1q 2023-04-30 05:10:59 +02:00 committed by GitHub
parent 421da882d8
commit 70ab02987a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 61 additions and 8 deletions

2
.gitignore vendored
View file

@ -11,3 +11,5 @@ preferences
compile_commands.json
.vs/
.vscode/
.cache
.gdb_history

View file

@ -4,6 +4,7 @@
#include "main.h"
#include "pictureloader.h"
#include "setsmodel.h"
#include "settingscache.h"
#include <QAction>
#include <QDebug>
@ -84,7 +85,6 @@ WndSets::WndSets(QWidget *parent) : QMainWindow(parent)
displayModel->setDynamicSortFilter(false);
view = new QTreeView;
view->setModel(displayModel);
view->setMinimumSize(QSize(500, 250));
view->setAlternatingRowColors(true);
view->setUniformRowHeights(true);
@ -98,10 +98,6 @@ WndSets::WndSets(QWidget *parent) : QMainWindow(parent)
view->setDropIndicatorShown(true);
view->setDragDropMode(QAbstractItemView::InternalMove);
view->header()->setSectionResizeMode(QHeaderView::Stretch);
view->header()->setSectionResizeMode(SetsModel::EnabledCol, QHeaderView::ResizeToContents);
view->header()->setSectionResizeMode(SetsModel::LongNameCol, QHeaderView::ResizeToContents);
view->sortByColumn(SetsModel::SortKeyCol, Qt::AscendingOrder);
view->setColumnHidden(SetsModel::SortKeyCol, true);
view->setColumnHidden(SetsModel::IsKnownCol, true);
@ -170,7 +166,7 @@ WndSets::WndSets(QWidget *parent) : QMainWindow(parent)
mainLayout = new QGridLayout;
mainLayout->addLayout(filterBox, 0, 1, 1, 2);
mainLayout->addWidget(setsEditToolBar, 1, 0, 2, 1);
mainLayout->addWidget(setsEditToolBar, 1, 0, 4, 1);
mainLayout->addWidget(view, 1, 1, 1, 2);
mainLayout->addWidget(enableAllButton, 2, 1);
mainLayout->addWidget(disableAllButton, 2, 2);
@ -190,13 +186,35 @@ WndSets::WndSets(QWidget *parent) : QMainWindow(parent)
setCentralWidget(centralWidget);
setWindowTitle(tr("Manage sets"));
resize(800, 500);
setMinimumSize(800, 500);
auto &geometry = SettingsCache::instance().getSetsDialogGeometry();
if (!geometry.isEmpty()) {
restoreGeometry(geometry);
}
auto &headerState = SettingsCache::instance().layouts().getSetsDialogHeaderState();
if (!headerState.isEmpty()) {
view->header()->restoreState(headerState);
view->header()->setSortIndicator(SORT_RESET, Qt::DescendingOrder);
} else {
view->header()->resizeSections(QHeaderView::ResizeToContents);
}
connect(view->header(), &QHeaderView::geometriesChanged, this, &WndSets::saveHeaderState);
}
WndSets::~WndSets()
{
}
void WndSets::closeEvent(QCloseEvent * /*ev*/)
{
SettingsCache::instance().setSetsDialogGeometry(saveGeometry());
}
void WndSets::saveHeaderState()
{
SettingsCache::instance().layouts().setSetsDialogHeaderState(view->header()->saveState());
}
void WndSets::rebuildMainLayout(int actionToTake)
{
if (mainLayout == nullptr)

View file

@ -40,6 +40,8 @@ private:
QHBoxLayout *filterBox;
int sortIndex;
Qt::SortOrder sortOrder;
void closeEvent(QCloseEvent *ev) override;
void saveHeaderState();
void rebuildMainLayout(int actionToTake);
bool setOrderIsSorted;
enum

View file

@ -68,6 +68,16 @@ void LayoutsSettings::setDeckEditorDbHeaderState(const QByteArray &value)
setValue(value, "layouts/deckEditorDbHeader_state");
}
const QByteArray LayoutsSettings::getSetsDialogHeaderState()
{
return getValue("layouts/setsDialogHeader_state").toByteArray();
}
void LayoutsSettings::setSetsDialogHeaderState(const QByteArray &value)
{
setValue(value, "layouts/setsDialogHeader_state");
}
void LayoutsSettings::setGamePlayAreaGeometry(const QByteArray &value)
{
setValue(value, "layouts/gameplayarea_geometry");

View file

@ -17,6 +17,7 @@ public:
void setDeckEditorDeckSize(const QSize &value);
void setDeckEditorFilterSize(const QSize &value);
void setDeckEditorDbHeaderState(const QByteArray &value);
void setSetsDialogHeaderState(const QByteArray &value);
void setGamePlayAreaGeometry(const QByteArray &value);
void setGamePlayAreaState(const QByteArray &value);
@ -37,6 +38,7 @@ public:
const QSize getDeckEditorDeckSize();
const QSize getDeckEditorFilterSize();
const QByteArray getDeckEditorDbHeaderState();
const QByteArray getSetsDialogHeaderState();
const QByteArray getGamePlayAreaLayoutState();
const QByteArray getGamePlayAreaGeometry();

View file

@ -225,6 +225,7 @@ SettingsCache::SettingsCache()
mainWindowGeometry = settings->value("interface/main_window_geometry").toByteArray();
tokenDialogGeometry = settings->value("interface/token_dialog_geometry").toByteArray();
setsDialogGeometry = settings->value("interface/sets_dialog_geometry").toByteArray();
notificationsEnabled = settings->value("interface/notificationsenabled", true).toBool();
spectatorNotificationsEnabled = settings->value("interface/specnotificationsenabled", false).toBool();
buddyConnectNotificationsEnabled = settings->value("interface/buddyconnectnotificationsenabled", true).toBool();
@ -617,6 +618,12 @@ void SettingsCache::setTokenDialogGeometry(const QByteArray &_tokenDialogGeometr
settings->setValue("interface/token_dialog_geometry", tokenDialogGeometry);
}
void SettingsCache::setSetsDialogGeometry(const QByteArray &_setsDialogGeometry)
{
setsDialogGeometry = _setsDialogGeometry;
settings->setValue("interface/sets_dialog_geometry", setsDialogGeometry);
}
void SettingsCache::setPixmapCacheSize(const int _pixmapCacheSize)
{
pixmapCacheSize = _pixmapCacheSize;

View file

@ -70,6 +70,7 @@ private:
QByteArray mainWindowGeometry;
QByteArray tokenDialogGeometry;
QByteArray setsDialogGeometry;
QString lang;
QString deckPath, replaysPath, picsPath, customPicsPath, cardDatabasePath, customCardDatabasePath, themesPath,
spoilerDatabasePath, tokenDatabasePath, themeName;
@ -154,6 +155,10 @@ public:
{
return tokenDialogGeometry;
}
const QByteArray &getSetsDialogGeometry() const
{
return setsDialogGeometry;
}
QString getLang() const
{
return lang;
@ -493,6 +498,7 @@ public slots:
void setMainWindowGeometry(const QByteArray &_mainWindowGeometry);
void setTokenDialogGeometry(const QByteArray &_tokenDialog);
void setSetsDialogGeometry(const QByteArray &_setsDialog);
void setLang(const QString &_lang);
void setShowTipsOnStartup(bool _showTipsOnStartup);
void setSeenTips(const QList<int> &_seenTips);

View file

@ -199,6 +199,9 @@ void SettingsCache::setMainWindowGeometry(const QByteArray & /* _mainWindowGeome
void SettingsCache::setTokenDialogGeometry(const QByteArray & /* _tokenDialogGeometry */)
{
}
void SettingsCache::setSetsDialogGeometry(const QByteArray & /* _setsDialogGeometry */)
{
}
void SettingsCache::setPixmapCacheSize(const int /* _pixmapCacheSize */)
{
}

View file

@ -203,6 +203,9 @@ void SettingsCache::setMainWindowGeometry(const QByteArray & /* _mainWindowGeome
void SettingsCache::setTokenDialogGeometry(const QByteArray & /* _tokenDialogGeometry */)
{
}
void SettingsCache::setSetsDialogGeometry(const QByteArray & /* _setsDialogGeometry */)
{
}
void SettingsCache::setPixmapCacheSize(const int /* _pixmapCacheSize */)
{
}