Skip to content

Commit 65c3705

Browse files
committed
Add cached settings for Server.Ui.Dialogs.Action
1 parent d3c0562 commit 65c3705

File tree

5 files changed

+94
-8
lines changed

5 files changed

+94
-8
lines changed

doc/pages/page01_client.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ Client application have following list of dialog windows:
260260

261261
### Log
262262

263-
* `LogFlags` - show log message categories that was displayed in LogView;
263+
* `LogFlags` - show log message categories that will be displayed in LogView;
264264
* `Use timestamp` - display timestamp for log message in LogView;
265265
* `Format` - set format for timestamp to be displayed in LogView.
266266

@@ -278,7 +278,7 @@ Assumed that date and time are 21 May 2001 14:13:09.120.
278278

279279
![client_project_dialog](client_project_dialog.png)
280280

281-
* `Project`-dialog displayed when creating/editing current project settings such as:
281+
`Project`-dialog displayed when creating/editing current project settings such as:
282282
* `Name` - name of current project;
283283
* `Author` - author of current project;
284284
* `Comment` - some commentary for current project.

src/server/gui/dialogs/server_dialogaction.cpp

Lines changed: 66 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@
3131

3232
mbServerDialogAction::Strings::Strings() :
3333
title(QStringLiteral("Action")),
34-
count(QStringLiteral("Server.Ui.Dialogs.Action.Count"))
34+
count(QStringLiteral("actionCount")),
35+
settings_prefix(QStringLiteral("Ui.Dialogs.Action."))
3536
{
3637
}
3738

@@ -42,7 +43,7 @@ const mbServerDialogAction::Strings &mbServerDialogAction::Strings::instance()
4243
}
4344

4445
mbServerDialogAction::mbServerDialogAction(QWidget *parent) :
45-
QDialog(parent),
46+
mbCoreDialogSettings(parent),
4647
ui(new Ui::mbServerDialogAction)
4748
{
4849
ui->setupUi(this);
@@ -137,6 +138,69 @@ mbServerDialogAction::~mbServerDialogAction()
137138
delete ui;
138139
}
139140

141+
MBSETTINGS mbServerDialogAction::cachedSettings() const
142+
{
143+
MBSETTINGS m;
144+
const Strings &s = Strings::instance();
145+
const mbServerAction::Strings &sItem = mbServerAction::Strings::instance();
146+
const QString &prefix = Strings().settings_prefix;
147+
148+
mb::Address adr;
149+
adr.type = mb::toModbusMemoryType(ui->cmbAdrType->currentText());
150+
adr.offset = static_cast<quint16>(ui->spOffset->value()-1);
151+
152+
m[prefix+sItem.device ] = ui->cmbDevice->currentText();
153+
m[prefix+sItem.address ] = mb::toInt(adr);
154+
m[prefix+sItem.dataType ] = ui->cmbDataType->currentText();
155+
m[prefix+sItem.period ] = ui->spPeriod->value();
156+
m[prefix+sItem.incrementValue ] = ui->lnActionIncrement->text();
157+
m[prefix+sItem.sinePeriod ] = ui->lnActionSinePeriod->text();
158+
m[prefix+sItem.sinePhaseShift ] = ui->lnActionSinePhaseShift->text();
159+
m[prefix+sItem.sineAmplitude ] = ui->lnActionSineAmplitude->text();
160+
m[prefix+sItem.sineVerticalShift] = ui->lnActionSineVerticalShift->text();
161+
m[prefix+sItem.randomMin ] = ui->lnActionRandomMin->text();
162+
m[prefix+sItem.randomMax ] = ui->lnActionRandomMax->text();
163+
m[prefix+sItem.actionType ] = ui->cmbActionType->currentText();
164+
m[prefix+sItem.byteOrder ] = ui->cmbByteOrder->currentText();
165+
m[prefix+sItem.registerOrder ] = ui->cmbRegisterOrder->currentText();
166+
m[prefix+s.count ] = ui->spCount->value();
167+
168+
return m;
169+
}
170+
171+
void mbServerDialogAction::setCachedSettings(const MBSETTINGS &settings)
172+
{
173+
MBSETTINGS::const_iterator it;
174+
MBSETTINGS::const_iterator end = settings.end();
175+
const mbServerAction::Strings &sItem = mbServerAction::Strings::instance();
176+
const Strings &s = Strings::instance();
177+
const QString &prefix = Strings().settings_prefix;
178+
179+
it = settings.find(prefix+sItem.address);
180+
if (it != end)
181+
{
182+
mb::Address adr = mb::toAddress(it.value().toInt());
183+
ui->cmbAdrType->setCurrentText(mb::toModbusMemoryTypeString(adr.type));
184+
ui->spOffset->setValue(adr.offset+1);
185+
}
186+
187+
it = settings.find(prefix+sItem.device ); if (it != end) ui->cmbDevice ->setCurrentText(it.value().toString());
188+
it = settings.find(prefix+sItem.dataType ); if (it != end) ui->cmbDataType->setCurrentText(it.value().toString());
189+
it = settings.find(prefix+sItem.period ); if (it != end) ui->spPeriod ->setValue (it.value().toInt() );
190+
it = settings.find(prefix+sItem.incrementValue ); if (it != end) ui->lnActionIncrement->setText(it.value().toString());
191+
it = settings.find(prefix+sItem.sinePeriod ); if (it != end) ui->lnActionSinePeriod->setText(it.value().toString());
192+
it = settings.find(prefix+sItem.sinePhaseShift ); if (it != end) ui->lnActionSinePhaseShift->setText(it.value().toString());
193+
it = settings.find(prefix+sItem.sineAmplitude ); if (it != end) ui->lnActionSineAmplitude->setText(it.value().toString());
194+
it = settings.find(prefix+sItem.sineVerticalShift ); if (it != end) ui->lnActionSineVerticalShift->setText(it.value().toString());
195+
it = settings.find(prefix+sItem.randomMin ); if (it != end) ui->lnActionRandomMin->setText(it.value().toString());
196+
it = settings.find(prefix+sItem.randomMax ); if (it != end) ui->lnActionRandomMax->setText(it.value().toString());
197+
it = settings.find(prefix+sItem.actionType ); if (it != end) ui->cmbActionType->setCurrentText(mb::enumKey(mb::enumValue<mbServerAction::ActionType>(it.value())));
198+
it = settings.find(prefix+sItem.byteOrder ); if (it != end) fillFormByteOrder(mb::enumDataOrderValue(it.value()));
199+
it = settings.find(prefix+sItem.registerOrder ); if (it != end) fillFormRegisterOrder(mb::enumDataOrderValue(it.value()));
200+
201+
it = settings.find(prefix+s.count ); if (it != end) ui->spCount->setValue (it.value().toInt());
202+
}
203+
140204
MBSETTINGS mbServerDialogAction::getSettings(const MBSETTINGS &settings, const QString &title)
141205
{
142206
MBSETTINGS r;

src/server/gui/dialogs/server_dialogaction.h

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,18 @@
2323
#ifndef SERVER_DIALOGACTION_H
2424
#define SERVER_DIALOGACTION_H
2525

26-
#include <QDialog>
27-
2826
#include <mbcore.h>
2927
#include <project/server_action.h>
3028

29+
#include <gui/dialogs/core_dialogsettings.h>
30+
3131
class mbServerDevice;
3232

3333
namespace Ui {
3434
class mbServerDialogAction;
3535
}
3636

37-
class mbServerDialogAction : public QDialog
37+
class mbServerDialogAction : public mbCoreDialogSettings
3838
{
3939
Q_OBJECT
4040

@@ -43,6 +43,7 @@ class mbServerDialogAction : public QDialog
4343
{
4444
const QString title;
4545
const QString count;
46+
const QString settings_prefix;
4647

4748
Strings();
4849
static const Strings &instance();
@@ -53,7 +54,11 @@ class mbServerDialogAction : public QDialog
5354
~mbServerDialogAction();
5455

5556
public:
56-
MBSETTINGS getSettings(const MBSETTINGS &data, const QString &title = QString());
57+
MBSETTINGS cachedSettings() const override;
58+
void setCachedSettings(const MBSETTINGS &settings) override;
59+
60+
public:
61+
MBSETTINGS getSettings(const MBSETTINGS &data, const QString &title = QString()) override;
5762

5863
private:
5964
void fillForm(const MBSETTINGS &settings);

src/server/gui/dialogs/server_dialogs.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,19 @@ mbServerDialogs::~mbServerDialogs()
4141
{
4242
}
4343

44+
MBSETTINGS mbServerDialogs::cachedSettings() const
45+
{
46+
MBSETTINGS m = mbCoreDialogs::cachedSettings();
47+
mb::unite(m, m_action->cachedSettings());
48+
return m;
49+
}
50+
51+
void mbServerDialogs::setCachedSettings(const MBSETTINGS &settings)
52+
{
53+
mbCoreDialogs::setCachedSettings(settings);
54+
m_action->setCachedSettings(settings);
55+
}
56+
4457
MBSETTINGS mbServerDialogs::getAction(const MBSETTINGS &settings, const QString &title)
4558
{
4659
return m_action->getSettings(settings, title);

src/server/gui/dialogs/server_dialogs.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ class mbServerDialogs : public mbCoreDialogs
3939
mbServerDialogs(QWidget *parent = nullptr);
4040
~mbServerDialogs();
4141

42+
public:
43+
MBSETTINGS cachedSettings() const override;
44+
void setCachedSettings(const MBSETTINGS &settings) override;
45+
4246
public:
4347
MBSETTINGS getAction(const MBSETTINGS &settings, const QString &title = QString());
4448

0 commit comments

Comments
 (0)