mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-01-30 06:15:32 +00:00
Keep the settings page in sync with the real settings
This commit is contained in:
parent
64879c03e4
commit
dff3828710
8 changed files with 95 additions and 46 deletions
|
@ -10,6 +10,8 @@
|
|||
#include "state.hpp"
|
||||
#include "shortcutmanager.hpp"
|
||||
|
||||
#include <iostream>
|
||||
|
||||
namespace CSMPrefs
|
||||
{
|
||||
const int ShortcutSetting::MaxKeys;
|
||||
|
|
|
@ -591,18 +591,16 @@ CSMPrefs::State& CSMPrefs::State::get()
|
|||
|
||||
void CSMPrefs::State::resetCategory(const std::string& category)
|
||||
{
|
||||
for (Settings::CategorySettingValueMap::iterator i = mSettings.mUserSettings.begin();
|
||||
i != mSettings.mUserSettings.end(); ++i)
|
||||
{
|
||||
QMutexLocker lock (&mMutex);
|
||||
for (Settings::CategorySettingValueMap::iterator i = mSettings.mUserSettings.begin(); i != mSettings.mUserSettings.end(); ++i)
|
||||
// if the category matches
|
||||
if (i->first.first == category)
|
||||
{
|
||||
// if the category matches
|
||||
if (i->first.first == category)
|
||||
{
|
||||
// mark the setting as changed
|
||||
mSettings.mChangedSettings.insert(std::make_pair(i->first.first, i->first.second));
|
||||
// reset the value to the default
|
||||
i->second = mSettings.mDefaultSettings[i->first];
|
||||
}
|
||||
// mark the setting as changed
|
||||
mSettings.mChangedSettings.insert(std::make_pair(i->first.first, i->first.second));
|
||||
// reset the value to the default
|
||||
i->second = mSettings.mDefaultSettings[i->first];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -16,35 +16,12 @@ namespace CSVPrefs
|
|||
{
|
||||
KeyBindingPage::KeyBindingPage(CSMPrefs::Category& category, QWidget* parent)
|
||||
: PageBase(category, parent)
|
||||
, mTopWidget(0)
|
||||
, mStackedLayout(0)
|
||||
, mPageLayout(0)
|
||||
, mPageSelector(0)
|
||||
{
|
||||
// Need one widget for scroll area
|
||||
QWidget* topWidget = new QWidget();
|
||||
QVBoxLayout* topLayout = new QVBoxLayout(topWidget);
|
||||
|
||||
QWidget* resetAll = new QPushButton("Reset all to default", this);
|
||||
connect(resetAll, SIGNAL(clicked()), this, SLOT(resetCategory()));
|
||||
topLayout->addWidget(resetAll);
|
||||
|
||||
// Allows switching between "pages"
|
||||
QWidget* stackedWidget = new QWidget();
|
||||
mStackedLayout = new QStackedLayout(stackedWidget);
|
||||
|
||||
mPageSelector = new QComboBox();
|
||||
connect(mPageSelector, SIGNAL(currentIndexChanged(int)), mStackedLayout, SLOT(setCurrentIndex(int)));
|
||||
|
||||
topLayout->addWidget(mPageSelector);
|
||||
topLayout->addWidget(stackedWidget);
|
||||
topLayout->setSizeConstraint(QLayout::SetMinAndMaxSize);
|
||||
|
||||
// Add each option
|
||||
for (CSMPrefs::Category::Iterator iter = category.begin(); iter!=category.end(); ++iter)
|
||||
addSetting (*iter);
|
||||
|
||||
setWidgetResizable(true);
|
||||
setWidget(topWidget);
|
||||
init();
|
||||
}
|
||||
|
||||
void KeyBindingPage::addSetting(CSMPrefs::Setting *setting)
|
||||
|
@ -91,4 +68,41 @@ namespace CSVPrefs
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
void KeyBindingPage::refresh()
|
||||
{
|
||||
delete mTopWidget;
|
||||
|
||||
// reinitialize
|
||||
init();
|
||||
}
|
||||
|
||||
void KeyBindingPage::init()
|
||||
{
|
||||
// Need one widget for scroll area
|
||||
mTopWidget = new QWidget();
|
||||
QVBoxLayout* topLayout = new QVBoxLayout(mTopWidget);
|
||||
|
||||
QWidget* resetAll = new QPushButton("Reset all to default", this);
|
||||
connect(resetAll, SIGNAL(clicked()), this, SLOT(resetCategory()));
|
||||
topLayout->addWidget(resetAll);
|
||||
|
||||
// Allows switching between "pages"
|
||||
QWidget* stackedWidget = new QWidget();
|
||||
mStackedLayout = new QStackedLayout(stackedWidget);
|
||||
|
||||
mPageSelector = new QComboBox();
|
||||
connect(mPageSelector, SIGNAL(currentIndexChanged(int)), mStackedLayout, SLOT(setCurrentIndex(int)));
|
||||
|
||||
topLayout->addWidget(mPageSelector);
|
||||
topLayout->addWidget(stackedWidget);
|
||||
topLayout->setSizeConstraint(QLayout::SetMinAndMaxSize);
|
||||
|
||||
// Add each option
|
||||
for (CSMPrefs::Category::Iterator iter = getCategory().begin(); iter!=getCategory().end(); ++iter)
|
||||
addSetting (*iter);
|
||||
|
||||
setWidgetResizable(true);
|
||||
setWidget(mTopWidget);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
#include "pagebase.hpp"
|
||||
|
||||
class QWidget;
|
||||
class QComboBox;
|
||||
class QGridLayout;
|
||||
class QStackedLayout;
|
||||
|
@ -26,6 +27,11 @@ namespace CSVPrefs
|
|||
|
||||
private:
|
||||
|
||||
void refresh();
|
||||
|
||||
void init();
|
||||
|
||||
QWidget* mTopWidget;
|
||||
QStackedLayout* mStackedLayout;
|
||||
QGridLayout* mPageLayout;
|
||||
QComboBox* mPageSelector;
|
||||
|
|
|
@ -10,18 +10,9 @@
|
|||
|
||||
CSVPrefs::Page::Page (CSMPrefs::Category& category, QWidget *parent)
|
||||
: PageBase (category, parent)
|
||||
, mParent (parent)
|
||||
{
|
||||
QWidget *widget = new QWidget (parent);
|
||||
mGrid = new QGridLayout (widget);
|
||||
|
||||
QWidget* resetAll = new QPushButton("Reset all to default", this);
|
||||
connect (resetAll, SIGNAL (clicked()), this, SLOT (resetCategory()));
|
||||
mGrid->addWidget(resetAll, 0, 0, 1, 2);
|
||||
|
||||
for (CSMPrefs::Category::Iterator iter = category.begin(); iter!=category.end(); ++iter)
|
||||
addSetting (*iter);
|
||||
|
||||
setWidget (widget);
|
||||
init();
|
||||
}
|
||||
|
||||
void CSVPrefs::Page::addSetting (CSMPrefs::Setting *setting)
|
||||
|
@ -44,3 +35,26 @@ void CSVPrefs::Page::addSetting (CSMPrefs::Setting *setting)
|
|||
mGrid->addWidget (new QWidget (this), next, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void CSVPrefs::Page::refresh()
|
||||
{
|
||||
delete mWidget;
|
||||
|
||||
// reinitialize
|
||||
init();
|
||||
}
|
||||
|
||||
void CSVPrefs::Page::init()
|
||||
{
|
||||
mWidget = new QWidget(mParent);
|
||||
mGrid = new QGridLayout(mWidget);
|
||||
|
||||
QWidget* resetAll = new QPushButton("Reset all to default", this);
|
||||
connect(resetAll, SIGNAL(clicked()), this, SLOT(resetCategory()));
|
||||
mGrid->addWidget(resetAll, 0, 0, 1, 2);
|
||||
|
||||
for (CSMPrefs::Category::Iterator iter = getCategory().begin(); iter!=getCategory().end(); ++iter)
|
||||
addSetting (*iter);
|
||||
|
||||
setWidget(mWidget);
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
#include "pagebase.hpp"
|
||||
|
||||
class QGridLayout;
|
||||
class QWidget;
|
||||
|
||||
namespace CSMPrefs
|
||||
{
|
||||
|
@ -17,12 +18,20 @@ namespace CSVPrefs
|
|||
Q_OBJECT
|
||||
|
||||
QGridLayout *mGrid;
|
||||
QWidget* mParent;
|
||||
QWidget* mWidget;
|
||||
|
||||
public:
|
||||
|
||||
Page (CSMPrefs::Category& category, QWidget *parent);
|
||||
|
||||
void addSetting (CSMPrefs::Setting *setting);
|
||||
|
||||
private:
|
||||
|
||||
void refresh();
|
||||
|
||||
void init();
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -16,4 +16,5 @@ CSMPrefs::Category& CSVPrefs::PageBase::getCategory()
|
|||
void CSVPrefs::PageBase::resetCategory()
|
||||
{
|
||||
CSMPrefs::get().resetCategory(getCategory().getKey());
|
||||
refresh();
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#define CSV_PREFS_PAGEBASE_H
|
||||
|
||||
#include <QScrollArea>
|
||||
#include <QLayout>
|
||||
|
||||
namespace CSMPrefs
|
||||
{
|
||||
|
@ -25,6 +26,10 @@ namespace CSVPrefs
|
|||
public slots:
|
||||
|
||||
void resetCategory();
|
||||
|
||||
private:
|
||||
|
||||
virtual void refresh() {};
|
||||
};
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue