You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
2.8 KiB
108 lines
2.8 KiB
|
8 years ago
|
#include "settingsviewmodel.h"
|
||
|
|
#include "settingsviewmodel_p.h"
|
||
|
8 years ago
|
#include "coreapp.h"
|
||
|
|
#include "qtmvvm_logging_p.h"
|
||
|
8 years ago
|
#include "settingssetuploader_p.h"
|
||
|
|
|
||
|
|
using namespace QtMvvm;
|
||
|
|
|
||
|
8 years ago
|
const QString SettingsViewModel::paramSettings(QStringLiteral("settings"));
|
||
|
|
const QString SettingsViewModel::paramSetupFile(QStringLiteral("setupFile"));
|
||
|
|
|
||
|
8 years ago
|
SettingsViewModel::SettingsViewModel(QObject *parent) :
|
||
|
|
ViewModel(parent),
|
||
|
|
d(new SettingsViewModelPrivate())
|
||
|
|
{}
|
||
|
|
|
||
|
|
SettingsViewModel::~SettingsViewModel() {}
|
||
|
|
|
||
|
8 years ago
|
QVariantHash SettingsViewModel::showParams(QSettings *settings, const QString &setupFile)
|
||
|
8 years ago
|
{
|
||
|
8 years ago
|
return {
|
||
|
|
{paramSettings, QVariant::fromValue(settings)},
|
||
|
|
{paramSetupFile, setupFile}
|
||
|
|
};
|
||
|
8 years ago
|
}
|
||
|
|
|
||
|
8 years ago
|
bool SettingsViewModel::canRestoreDefaults() const
|
||
|
8 years ago
|
{
|
||
|
8 years ago
|
return true;
|
||
|
8 years ago
|
}
|
||
|
|
|
||
|
8 years ago
|
MessageConfig SettingsViewModel::restoreConfig() const
|
||
|
8 years ago
|
{
|
||
|
8 years ago
|
MessageConfig config;
|
||
|
|
config.setType(MessageConfig::TypeMessageBox);
|
||
|
|
config.setSubType(MessageConfig::SubTypeWarning);
|
||
|
|
config.setTitle(tr("Restore Defaults?"));
|
||
|
|
config.setText(tr("All custom changes will be deleted and the defaults restored. <i>This cannot be undone!</i>"));
|
||
|
|
config.setButtons(MessageConfig::Yes | MessageConfig::No);
|
||
|
|
return config;
|
||
|
8 years ago
|
}
|
||
|
|
|
||
|
|
ISettingsSetupLoader *SettingsViewModel::settingsSetupLoader() const
|
||
|
|
{
|
||
|
8 years ago
|
return d->setupLoader;
|
||
|
|
}
|
||
|
|
|
||
|
8 years ago
|
SettingsElements::Setup SettingsViewModel::loadSetup(const QString &frontend) const
|
||
|
8 years ago
|
{
|
||
|
8 years ago
|
try {
|
||
|
|
QFileSelector selector;
|
||
|
|
return d->setupLoader->loadSetup(d->setupFile, frontend, &selector);
|
||
|
|
} catch(SettingsLoaderException &e) {
|
||
|
|
logCritical() << "Failed to load settings setup:" << e.what();
|
||
|
|
return {};
|
||
|
|
}
|
||
|
8 years ago
|
}
|
||
|
|
|
||
|
|
QSettings *SettingsViewModel::settings() const
|
||
|
|
{
|
||
|
|
return d->settings;
|
||
|
|
}
|
||
|
|
|
||
|
|
QVariant SettingsViewModel::loadValue(const QString &key, const QVariant &defaultValue) const
|
||
|
|
{
|
||
|
|
return d->settings->value(key, defaultValue);
|
||
|
|
}
|
||
|
|
|
||
|
|
void SettingsViewModel::saveValue(const QString &key, const QVariant &value)
|
||
|
|
{
|
||
|
|
d->settings->setValue(key, value);
|
||
|
|
}
|
||
|
|
|
||
|
|
void SettingsViewModel::resetValue(const QString &key)
|
||
|
|
{
|
||
|
|
d->settings->remove(key);
|
||
|
8 years ago
|
}
|
||
|
|
|
||
|
8 years ago
|
void SettingsViewModel::callAction(const QString &entryId, const QVariantMap ¶meters)
|
||
|
8 years ago
|
{
|
||
|
8 years ago
|
Q_UNUSED(parameters)
|
||
|
8 years ago
|
logWarning() << "Unknown action requested with entry id" << entryId
|
||
|
|
<< "and parameters" << parameters;
|
||
|
8 years ago
|
}
|
||
|
|
|
||
|
|
void SettingsViewModel::setSettingsSetupLoader(ISettingsSetupLoader *settingsSetupLoader)
|
||
|
|
{
|
||
|
8 years ago
|
if (d->setupLoader == settingsSetupLoader)
|
||
|
8 years ago
|
return;
|
||
|
|
|
||
|
8 years ago
|
d->setupLoader = settingsSetupLoader;
|
||
|
|
emit settingsSetupLoaderChanged(d->setupLoader);
|
||
|
8 years ago
|
}
|
||
|
|
|
||
|
|
void SettingsViewModel::onInit(const QVariantHash ¶ms)
|
||
|
|
{
|
||
|
8 years ago
|
Q_ASSERT_X(d->setupLoader, Q_FUNC_INFO, "settingsSetupLoader must not be null");
|
||
|
8 years ago
|
|
||
|
8 years ago
|
d->settings = params.value(paramSettings).value<QSettings*>();
|
||
|
|
if(!d->settings)
|
||
|
|
d->settings = new QSettings(this);
|
||
|
|
d->setupFile = params.value(paramSetupFile).toString();
|
||
|
|
if(d->setupFile.isEmpty())
|
||
|
|
d->setupFile = QStringLiteral(":/etc/settings.xml");
|
||
|
8 years ago
|
|
||
|
|
emit beginLoadSetup();
|
||
|
8 years ago
|
}
|