Ref T163, using settings descriptions

* renamed to getUnsavedSettingsKeys
* no private slots in close dialog
* use descriptions instead of keys
This commit is contained in:
Klaus Basan
2017-09-26 20:08:02 +02:00
parent 4fcdd0e1f0
commit 3cf97b3f37
4 changed files with 40 additions and 37 deletions

View File

@@ -538,7 +538,7 @@ namespace BlackCore
bool CApplication::hasUnsavedSettings() const bool CApplication::hasUnsavedSettings() const
{ {
return !this->getAllUnsavedSettings().isEmpty(); return !this->getUnsavedSettingsKeys().isEmpty();
} }
void CApplication::setSettingsAutoSave(bool autoSave) void CApplication::setSettingsAutoSave(bool autoSave)
@@ -546,23 +546,19 @@ namespace BlackCore
m_autoSaveSettings = autoSave; m_autoSaveSettings = autoSave;
} }
QStringList CApplication::getAllUnsavedSettings() const QStringList CApplication::getUnsavedSettingsKeys() const
{ {
if (this->supportsContexts()) return this->supportsContexts() ?
{ this->getIContextApplication()->getUnsavedSettingsKeys() :
return this->getIContextApplication()->getUnsavedSettingsKeys(); CSettingsCache::instance()->getAllUnsavedKeys();
}
return {};
} }
CStatusMessage CApplication::saveSettingsByKey(const QStringList &keys) CStatusMessage CApplication::saveSettingsByKey(const QStringList &keys)
{ {
if (keys.isEmpty()) { return CStatusMessage(); } if (keys.isEmpty()) { return CStatusMessage(); }
if (this->supportsContexts()) return this->supportsContexts() ?
{ this->getIContextApplication()->saveSettingsByKey(keys) :
return this->getIContextApplication()->saveSettingsByKey(keys); CSettingsCache::instance()->saveToStore(keys);
}
return CSettingsCache::instance()->saveToStore(keys);
} }
QString CApplication::getTemporaryDirectory() const QString CApplication::getTemporaryDirectory() const

View File

@@ -197,6 +197,7 @@ namespace BlackCore
BlackMisc::CStatusMessageList requestReloadOfSetupAndVersion(); BlackMisc::CStatusMessageList requestReloadOfSetupAndVersion();
//! Web data services available? //! Web data services available?
//! \threadsafe
bool hasWebDataServices() const; bool hasWebDataServices() const;
//! Get the web data services //! Get the web data services
@@ -234,7 +235,7 @@ namespace BlackCore
void setSettingsAutoSave(bool autoSave); void setSettingsAutoSave(bool autoSave);
//! All unsaved settings //! All unsaved settings
QStringList getAllUnsavedSettings() const; QStringList getUnsavedSettingsKeys() const;
//! Save all settings //! Save all settings
BlackMisc::CStatusMessage saveSettingsByKey(const QStringList &keys); BlackMisc::CStatusMessage saveSettingsByKey(const QStringList &keys);

View File

@@ -21,6 +21,7 @@
using namespace BlackMisc; using namespace BlackMisc;
using namespace BlackGui; using namespace BlackGui;
using namespace BlackCore::Context;
namespace BlackGui namespace BlackGui
{ {
@@ -35,35 +36,37 @@ namespace BlackGui
this->initSettingsView(); this->initSettingsView();
ui->bb_ApplicationCloseDialog->button(QDialogButtonBox::Save)->setDefault(true); ui->bb_ApplicationCloseDialog->button(QDialogButtonBox::Save)->setDefault(true);
connect(this, &CApplicationCloseDialog::accepted, this, &CApplicationCloseDialog::ps_onAccepted); connect(this, &CApplicationCloseDialog::accepted, this, &CApplicationCloseDialog::onAccepted);
connect(this, &CApplicationCloseDialog::rejected, this, &CApplicationCloseDialog::ps_onRejected); connect(this, &CApplicationCloseDialog::rejected, this, &CApplicationCloseDialog::onRejected);
connect(ui->bb_ApplicationCloseDialog, &QDialogButtonBox::clicked, this, &CApplicationCloseDialog::ps_buttonClicked); connect(ui->bb_ApplicationCloseDialog, &QDialogButtonBox::clicked, this, &CApplicationCloseDialog::buttonClicked);
} }
CApplicationCloseDialog::~CApplicationCloseDialog() CApplicationCloseDialog::~CApplicationCloseDialog()
{ } { }
void CApplicationCloseDialog::ps_onAccepted() void CApplicationCloseDialog::onAccepted()
{ {
const QModelIndexList indexes = ui->lv_UnsavedSettings->selectionModel()->selectedIndexes(); const QModelIndexList indexes = ui->lv_UnsavedSettings->selectionModel()->selectedIndexes();
if (indexes.isEmpty()) { return; } if (indexes.isEmpty()) { return; }
const QList<int> rows = CGuiUtility::indexToUniqueRows(indexes);
QStringList saveKeys; QStringList saveKeys;
const QList<int> rows = CGuiUtility::indexToUniqueRows(indexes);
for (int r : rows) for (int r : rows)
{ {
const QString key = this->m_settingskeys.at(r); const QString description = m_settingsDescriptions[r];
saveKeys.append(key); const QString key = m_settingsDictionary.key(description);
if (!key.isEmpty()) { saveKeys.append(description); }
} }
if (saveKeys.isEmpty()) { return; }
CStatusMessage msg = sApp->saveSettingsByKey(saveKeys); CStatusMessage msg = sApp->saveSettingsByKey(saveKeys);
if (msg.isFailure()) { CLogMessage::preformatted(msg); } if (msg.isFailure()) { CLogMessage::preformatted(msg); }
} }
void CApplicationCloseDialog::ps_onRejected() void CApplicationCloseDialog::onRejected()
{ {
// void // void
} }
void CApplicationCloseDialog::ps_buttonClicked(QAbstractButton *button) void CApplicationCloseDialog::buttonClicked(QAbstractButton *button)
{ {
if (button == ui->bb_ApplicationCloseDialog->button(QDialogButtonBox::Discard)) if (button == ui->bb_ApplicationCloseDialog->button(QDialogButtonBox::Discard))
{ {
@@ -74,13 +77,15 @@ namespace BlackGui
void CApplicationCloseDialog::initSettingsView() void CApplicationCloseDialog::initSettingsView()
{ {
QStringList settings(sApp->getIContextApplication()->getUnsavedSettingsKeys()); const CSettingsDictionary settingsDictionary(sApp->getIContextApplication()->getUnsavedSettingsKeysDescribed());
settings.sort(); QStringList descriptions = settingsDictionary.values();
QStringListModel *model = new QStringListModel(settings, this); descriptions.sort();
QStringListModel *model = new QStringListModel(descriptions, this);
ui->lv_UnsavedSettings->setModel(model); ui->lv_UnsavedSettings->setModel(model);
ui->lv_UnsavedSettings->selectAll(); ui->lv_UnsavedSettings->selectAll();
this->m_settingskeys = settings; m_settingsDictionary = settingsDictionary;
m_settingsDescriptions = descriptions;
} }
} // ns } // ns
} // ns } // ns

View File

@@ -15,6 +15,7 @@
#include <QDialog> #include <QDialog>
#include <QScopedPointer> #include <QScopedPointer>
#include <QAbstractButton> #include <QAbstractButton>
#include "blackcore/context/contextapplication.h"
namespace Ui { class CApplicationCloseDialog; } namespace Ui { class CApplicationCloseDialog; }
namespace BlackGui namespace BlackGui
@@ -35,19 +36,19 @@ namespace BlackGui
//! Destructor //! Destructor
virtual ~CApplicationCloseDialog(); virtual ~CApplicationCloseDialog();
private slots:
//! Accepted
void ps_onAccepted();
//! Rejected
void ps_onRejected();
//! Button pressed
void ps_buttonClicked(QAbstractButton *button);
private: private:
QScopedPointer<Ui::CApplicationCloseDialog> ui; QScopedPointer<Ui::CApplicationCloseDialog> ui;
QStringList m_settingskeys; QStringList m_settingsDescriptions; //!< values as displayed
BlackCore::Context::CSettingsDictionary m_settingsDictionary; //!< values and descriptions, unsorted
//! Accepted
void onAccepted();
//! Rejected
void onRejected();
//! Button pressed
void buttonClicked(QAbstractButton *button);
//! Init the settings view //! Init the settings view
void initSettingsView(); void initSettingsView();