1+ #include < QEvent>
12#include < QMdiSubWindow>
23#include " mainstatusbar.h"
34
@@ -11,22 +12,12 @@ MainStatusBar::MainStatusBar(const ModbusMultiServer& server, QWidget* parent)
1112 connect (&server, &ModbusMultiServer::connected, this , [&](const ConnectionDetails& cd)
1213 {
1314 auto label = new QLabel (this );
14- label->setText (QString (tr (" Polls: %1" )).arg (0 ));
1515 label->setFrameShadow (QFrame::Sunken);
1616 label->setFrameShape (QFrame::Panel);
1717 label->setMinimumWidth (120 );
1818 label->setProperty (" ConnectionDetails" , QVariant::fromValue (cd));
1919
20- switch (cd.Type )
21- {
22- case ConnectionType::Tcp:
23- label->setText (QString (tr (" Modbus/TCP Srv: %1" )).arg (cd.TcpParams .ServicePort ));
24- break ;
25-
26- case ConnectionType::Serial:
27- label->setText (QString (tr (" Port %1: %2" )).arg (cd.SerialParams .PortName , QString::number (cd.SerialParams .BaudRate )));
28- break ;
29- }
20+ updateConnectionInfo (label, cd);
3021
3122 _labels.append (label);
3223 addPermanentWidget (label);
@@ -47,3 +38,49 @@ MainStatusBar::MainStatusBar(const ModbusMultiServer& server, QWidget* parent)
4738 }
4839 });
4940}
41+
42+ // /
43+ // / \brief MainStatusBar::~MainStatusBar
44+ // /
45+ MainStatusBar::~MainStatusBar ()
46+ {
47+ for (auto && label : _labels)
48+ delete label;
49+ }
50+
51+ // /
52+ // / \brief MainStatusBar::changeEvent
53+ // / \param event
54+ // /
55+ void MainStatusBar::changeEvent (QEvent* event)
56+ {
57+ if (event->type () == QEvent::LanguageChange)
58+ {
59+ for (auto && label : _labels)
60+ {
61+ const auto cd = label->property (" ConnectionDetails" ).value <ConnectionDetails>();
62+ updateConnectionInfo (label, cd);
63+ }
64+ }
65+
66+ QStatusBar::changeEvent (event);
67+ }
68+
69+ // /
70+ // / \brief MainStatusBar::updateConnectionInfo
71+ // / \param label
72+ // / \param cd
73+ // /
74+ void MainStatusBar::updateConnectionInfo (QLabel* label, const ConnectionDetails& cd)
75+ {
76+ switch (cd.Type )
77+ {
78+ case ConnectionType::Tcp:
79+ label->setText (QString (tr (" Modbus/TCP Srv: %1" )).arg (cd.TcpParams .ServicePort ));
80+ break ;
81+
82+ case ConnectionType::Serial:
83+ label->setText (QString (tr (" Port %1: %2" )).arg (cd.SerialParams .PortName , QString::number (cd.SerialParams .BaudRate )));
84+ break ;
85+ }
86+ }
0 commit comments