1212#include " client_scanner.h"
1313#include " client_scannermodel.h"
1414
15+ mbClientScannerUi::Strings::Strings () :
16+ prefix (QStringLiteral(" Ui.Scanner." )),
17+ type (prefix+Modbus::Strings::instance().type),
18+ timeout (prefix+Modbus::Strings::instance().timeout),
19+ tries (prefix+QStringLiteral(" tries" )),
20+ unitStart (prefix+QStringLiteral(" unitStart" )),
21+ unitEnd (prefix+QStringLiteral(" unitEnd" )),
22+ host (prefix+Modbus::Strings::instance().host),
23+ port (prefix+Modbus::Strings::instance().port),
24+ serialPortName(prefix+Modbus::Strings::instance().serialPortName),
25+ baudRateList (QStringLiteral(" baudRateList" )),
26+ dataBitsList (QStringLiteral(" dataBitsList" )),
27+ parityList (QStringLiteral(" parityList" ) ),
28+ stopBitsList (QStringLiteral(" stopBitsList" ))
29+ {
30+
31+ }
32+
33+ const mbClientScannerUi::Strings &mbClientScannerUi::Strings::instance ()
34+ {
35+ static Strings s;
36+ return s;
37+ }
1538
1639mbClientScannerUi::mbClientScannerUi (QWidget *parent) :
1740 QDialog(parent),
@@ -25,7 +48,7 @@ mbClientScannerUi::mbClientScannerUi(QWidget *parent) :
2548 m_scanner = new mbClientScanner (this );
2649 connect (m_scanner, &mbClientScanner::stateChanged, this , &mbClientScannerUi::stateChange);
2750
28-
51+ QVariantList vls;
2952 QLineEdit *ln;
3053 QSpinBox* sp;
3154 QComboBox* cmb;
@@ -70,6 +93,26 @@ mbClientScannerUi::mbClientScannerUi(QWidget *parent) :
7093 Q_FOREACH (const QString &port, ports)
7194 cmb->addItem (port);
7295
96+ // Baud Rate List
97+ vls.clear ();
98+ vls.append (QString::number (md.baudRate ));
99+ setValues (ui->lsBaudRate , vls);
100+
101+ // Data Bits List
102+ vls.clear ();
103+ vls.append (QString::number (md.dataBits ));
104+ setValues (ui->lsDataBits , vls);
105+
106+ // Parity List
107+ vls.clear ();
108+ vls.append (Modbus::toString (md.parity ));
109+ setValues (ui->lsParity , vls);
110+
111+ // Stop Bits List
112+ vls.clear ();
113+ vls.append (Modbus::toString (md.stopBits ));
114+ setValues (ui->lsStopBits , vls);
115+
73116 // --------------------- TCP ---------------------
74117 // Host
75118 ln = ui->lnTcpHost ;
@@ -108,6 +151,49 @@ mbClientScannerUi::~mbClientScannerUi()
108151 delete ui;
109152}
110153
154+ MBSETTINGS mbClientScannerUi::cachedSettings () const
155+ {
156+ MBSETTINGS m;
157+ const Strings &s = Strings::instance ();
158+
159+ m[s.type ] = ui->cmbType ->currentText ();
160+ m[s.timeout ] = ui->spTimeout ->value ();
161+ m[s.tries ] = ui->spTries ->value ();
162+ m[s.unitStart ] = ui->spUnitStart ->value ();
163+ m[s.unitEnd ] = ui->spUnitEnd ->value ();
164+ m[s.host ] = ui->lnTcpHost ->text ();
165+ m[s.port ] = ui->spTcpPort ->value ();
166+ m[s.serialPortName ] = ui->cmbSerialPortName ->currentText ();
167+ m[s.baudRateList ] = getValues (ui->lsBaudRate );
168+ m[s.dataBitsList ] = getValues (ui->lsDataBits );
169+ m[s.parityList ] = getValues (ui->lsParity );
170+ m[s.stopBitsList ] = getValues (ui->lsStopBits );
171+
172+ return m;
173+ }
174+
175+ void mbClientScannerUi::setCachedSettings (const MBSETTINGS &m)
176+ {
177+ const Strings &s = Strings::instance ();
178+
179+ MBSETTINGS::const_iterator it;
180+ MBSETTINGS::const_iterator end = m.end ();
181+ // bool ok;
182+
183+ it = m.find (s.type ); if (it != end) ui->cmbType ->setCurrentText (it.value ().toString ());
184+ it = m.find (s.timeout ); if (it != end) ui->spTimeout ->setValue (it.value ().toInt () );
185+ it = m.find (s.tries ); if (it != end) ui->spTries ->setValue (it.value ().toInt () );
186+ it = m.find (s.unitStart ); if (it != end) ui->spUnitStart ->setValue (it.value ().toInt () );
187+ it = m.find (s.unitEnd ); if (it != end) ui->spUnitEnd ->setValue (it.value ().toInt () );
188+ it = m.find (s.host ); if (it != end) ui->lnTcpHost ->setText (it.value ().toString ());
189+ it = m.find (s.port ); if (it != end) ui->spTcpPort ->setValue (it.value ().toInt () );
190+ it = m.find (s.serialPortName ); if (it != end) ui->cmbSerialPortName ->setCurrentText (it.value ().toString ());
191+ it = m.find (s.baudRateList ); if (it != end) setValues (ui->lsBaudRate , it.value ().toList ());
192+ it = m.find (s.dataBitsList ); if (it != end) setValues (ui->lsDataBits , it.value ().toList ());
193+ it = m.find (s.parityList ); if (it != end) setValues (ui->lsParity , it.value ().toList ());
194+ it = m.find (s.stopBitsList ); if (it != end) setValues (ui->lsStopBits , it.value ().toList ());
195+ }
196+
111197void mbClientScannerUi::slotEditBaudRate ()
112198{
113199 QVariantList ls = getValues (ui->lsBaudRate );
@@ -215,7 +301,7 @@ void mbClientScannerUi::closeEvent(QCloseEvent *)
215301 // m_scanner->stopScanning();
216302}
217303
218- QVariantList mbClientScannerUi::getValues (const QListWidget *w)
304+ QVariantList mbClientScannerUi::getValues (const QListWidget *w) const
219305{
220306 QVariantList ls;
221307 for (int i = 0 ; i < w->count (); i++)
0 commit comments