Finalize the instance settings dialog, add setting reset mechanism

This commit is contained in:
Petr Mrázek
2013-07-16 00:30:32 +02:00
parent b5450042b5
commit e2ee6d6d25
11 changed files with 272 additions and 95 deletions

View File

@ -40,6 +40,15 @@ void INISettingsObject::changeSetting(const Setting &setting, QVariant value)
}
}
void INISettingsObject::resetSetting ( const Setting& setting )
{
if (contains(setting.id()))
{
m_ini.remove(setting.configKey());
m_ini.saveFile(m_filePath);
}
}
QVariant INISettingsObject::retrieveValue(const Setting &setting)
{
if (contains(setting.id()))

View File

@ -47,3 +47,8 @@ void Setting::set(QVariant value)
{
emit settingChanged(*this, value);
}
void Setting::reset()
{
emit settingReset(*this);
}

View File

@ -98,6 +98,14 @@ bool SettingsObject::set(const QString &id, QVariant value)
}
}
void SettingsObject::reset(const QString &id) const
{
Setting *setting = getSetting(id);
if(setting)
setting->reset();
}
QList<Setting *> SettingsObject::getSettings()
{
return m_settings.values();
@ -115,6 +123,11 @@ void SettingsObject::connectSignals(const Setting &setting)
SLOT(changeSetting(const Setting &, QVariant)));
connect(&setting, SIGNAL(settingChanged(const Setting &, QVariant)),
SIGNAL(settingChanged(const Setting &, QVariant)));
connect(&setting, SIGNAL(settingReset(Setting)),
SLOT(resetSetting(const Setting &)));
connect(&setting, SIGNAL(settingReset(Setting)),
SIGNAL(settingReset(const Setting &)));
}
void SettingsObject::disconnectSignals(const Setting &setting)
@ -123,4 +136,9 @@ void SettingsObject::disconnectSignals(const Setting &setting)
this, SLOT(changeSetting(const Setting &, QVariant)));
setting.disconnect(SIGNAL(settingChanged(const Setting &, QVariant)),
this, SIGNAL(settingChanged(const Setting &, QVariant)));
setting.disconnect(SIGNAL(settingReset(const Setting &, QVariant)),
this, SLOT(resetSetting(const Setting &, QVariant)));
setting.disconnect(SIGNAL(settingReset(const Setting &, QVariant)),
this, SIGNAL(settingReset(const Setting &, QVariant)));
}