Add ability to apply settings without closing dialog

This commit is contained in:
Gres 2020-03-15 15:20:28 +03:00
parent 032895830c
commit 83232bfc76
7 changed files with 42 additions and 42 deletions

View File

@ -185,6 +185,12 @@ void Manager::translated(const TaskPtr &task)
representer_->represent(task);
}
void Manager::applySettings(const Settings &settings)
{
updateSettings(settings);
settings.save();
}
void Manager::fatalError(const QString &text)
{
tray_->blockActions(false);
@ -216,7 +222,7 @@ void Manager::showLast()
void Manager::settings()
{
SettingsEditor editor(*updater_);
SettingsEditor editor(*this, *updater_);
Settings settings;
settings.load();

View File

@ -16,6 +16,7 @@ public:
void corrected(const TaskPtr &task);
void translated(const TaskPtr &task);
void applySettings(const Settings &settings);
void fatalError(const QString &text);
void capture();
void repeatCapture();

View File

@ -93,7 +93,7 @@ void cleanupOutdated(QSettings& settings)
} // namespace
Settings::Settings()
void Settings::save() const
{
const auto baseDataPath =
QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);

View File

@ -21,9 +21,7 @@ enum class AutoUpdate { Disabled, Daily, Weekly, Monthly };
class Settings
{
public:
Settings();
void save();
void save() const;
void load();
QString captureHotkey{"Ctrl+Alt+Z"};

View File

@ -1,5 +1,7 @@
#include "settingseditor.h"
#include "debug.h"
#include "languagecodes.h"
#include "manager.h"
#include "ui_settingseditor.h"
#include "updates.h"
#include "widgetstate.h"
@ -9,12 +11,16 @@
#include <QSortFilterProxyModel>
#include <QStringListModel>
SettingsEditor::SettingsEditor(update::Loader &updater)
SettingsEditor::SettingsEditor(Manager &manager, update::Loader &updater)
: ui(new Ui::SettingsEditor)
, manager_(manager)
, updater_(updater)
{
ui->setupUi(this);
connect(ui->buttonBox, &QDialogButtonBox::clicked, //
this, &SettingsEditor::handleButtonBoxClicked);
{
auto model = new QStringListModel(this);
model->setStringList({tr("General"), tr("Recognition"), tr("Correction"),
@ -248,3 +254,22 @@ void SettingsEditor::adjustUpdatesView()
updateTesseractLanguages();
updateTranslators();
}
void SettingsEditor::handleButtonBoxClicked(QAbstractButton *button)
{
if (!button)
return;
if (button == ui->buttonBox->button(QDialogButtonBox::Ok)) {
accept();
return;
}
if (button == ui->buttonBox->button(QDialogButtonBox::Cancel)) {
reject();
return;
}
if (button == ui->buttonBox->button(QDialogButtonBox::Apply)) {
manager_.applySettings(settings());
return;
}
}

View File

@ -8,13 +8,14 @@ namespace Ui
{
class SettingsEditor;
}
class QAbstractButton;
class SettingsEditor : public QDialog
{
Q_OBJECT
public:
explicit SettingsEditor(update::Loader &updater);
SettingsEditor(Manager &manager, update::Loader &updater);
~SettingsEditor();
Settings settings() const;
@ -26,8 +27,10 @@ private:
void updateTranslators();
void updateTranslationLanguages();
void adjustUpdatesView();
void handleButtonBoxClicked(QAbstractButton *button);
Ui::SettingsEditor *ui;
Manager &manager_;
update::Loader &updater_;
QStringList enabledTranslators_;
};

View File

@ -20,7 +20,7 @@
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
<set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
@ -541,38 +541,5 @@
<tabstop>proxySaveCheck</tabstop>
</tabstops>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>SettingsEditor</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>256</x>
<y>447</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>SettingsEditor</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>324</x>
<y>447</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
<connections/>
</ui>