Skip to content

Commit 2e062ca

Browse files
committed
Refactoring
1 parent 2ab16cd commit 2e062ca

6 files changed

Lines changed: 57 additions & 24 deletions

File tree

omodsim/controls/modbuslogwidget.cpp

Lines changed: 37 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,27 @@ void ModbusLogModel::clear()
7878
endResetModel();
7979
}
8080

81+
///
82+
/// \brief ModbusLogModel::setBufferingMode
83+
/// \param freeze
84+
///
85+
void ModbusLogModel::setBufferingMode(bool freeze)
86+
{
87+
_bufferingMode = freeze;
88+
if(!_bufferingMode)
89+
{
90+
for(auto&& data : _bufferingItems) {
91+
_items.push_back(data);
92+
93+
while(_items.size() >= _rowLimit) {
94+
_items.removeFirst();
95+
}
96+
}
97+
_bufferingItems.clear();
98+
update();
99+
}
100+
}
101+
81102
///
82103
/// \brief ModbusLogModel::append
83104
/// \param data
@@ -86,16 +107,21 @@ void ModbusLogModel::append(QSharedPointer<const ModbusMessage> data)
86107
{
87108
if(data == nullptr) return;
88109

89-
while(rowCount() >= _rowLimit)
90-
{
91-
beginRemoveRows(QModelIndex(), 0, 0);
92-
_items.removeFirst();
93-
endRemoveRows();
110+
if(_bufferingMode) {
111+
_bufferingItems.push_back(data);
94112
}
113+
else {
114+
while(rowCount() >= _rowLimit)
115+
{
116+
beginRemoveRows(QModelIndex(), 0, 0);
117+
_items.removeFirst();
118+
endRemoveRows();
119+
}
95120

96-
beginInsertRows(QModelIndex(), rowCount(), rowCount());
97-
_items.push_back(data);
98-
endInsertRows();
121+
beginInsertRows(QModelIndex(), rowCount(), rowCount());
122+
_items.push_back(data);
123+
endInsertRows();
124+
}
99125
}
100126

101127
///
@@ -122,6 +148,7 @@ void ModbusLogModel::setRowLimit(int val)
122148
void ModbusLogModel::deleteItems()
123149
{
124150
_items.clear();
151+
_bufferingItems.clear();
125152
}
126153

127154
///
@@ -361,12 +388,11 @@ void ModbusLogWidget::setState(LogViewState state)
361388
_state = state;
362389
switch (state) {
363390
case Paused:
364-
model()->blockSignals(true);
391+
((ModbusLogModel*)model())->setBufferingMode(true);
365392
break;
366393

367394
case Running:
368-
model()->blockSignals(false);
369-
update();
395+
((ModbusLogModel*)model())->setBufferingMode(false);
370396
break;
371397

372398
default:

omodsim/controls/modbuslogwidget.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,20 @@ class ModbusLogModel : public QAbstractListModel
3030
int rowLimit() const;
3131
void setRowLimit(int val);
3232

33+
bool isBufferingMode() const {
34+
return _bufferingMode;
35+
}
36+
void setBufferingMode(bool value);
37+
3338
private:
3439
void deleteItems();
3540

3641
private:
3742
int _rowLimit = 30;
43+
bool _bufferingMode = false;
3844
ModbusLogWidget* _parentWidget;
3945
QQueue<QSharedPointer<const ModbusMessage>> _items;
46+
QQueue<QSharedPointer<const ModbusMessage>> _bufferingItems;
4047
};
4148

4249
///

omodsim/formmodsim.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -866,12 +866,12 @@ void FormModSim::on_mbDisconnected(const ConnectionDetails&)
866866
}
867867

868868
///
869-
/// \brief FormModSim::isLoggedRequest
869+
/// \brief FormModSim::isLoggingRequest
870870
/// \param req
871871
/// \param protocol
872872
/// \return
873873
///
874-
bool FormModSim::isLoggedRequest(const QModbusRequest& req, ModbusMessage::ProtocolType protocol) const
874+
bool FormModSim::isLoggingRequest(const QModbusRequest& req, ModbusMessage::ProtocolType protocol) const
875875
{
876876
const auto dd = displayDefinition();
877877
const auto startAddress = dd.PointAddress - (dd.ZeroBasedAddress ? 0 : 1);
@@ -931,7 +931,7 @@ bool FormModSim::isLoggedRequest(const QModbusRequest& req, ModbusMessage::Proto
931931
///
932932
void FormModSim::on_mbRequest(const QModbusRequest& req, ModbusMessage::ProtocolType protocol, int transactionId)
933933
{
934-
if(isLoggedRequest(req, protocol)) {
934+
if(isLoggingRequest(req, protocol)) {
935935
ui->statisticWidget->increaseRequests();
936936
ui->outputWidget->updateTraffic(req, ui->lineEditDeviceId->value<int>(), transactionId, protocol);
937937
}
@@ -946,7 +946,7 @@ void FormModSim::on_mbRequest(const QModbusRequest& req, ModbusMessage::Protocol
946946
///
947947
void FormModSim::on_mbResponse(const QModbusRequest& req, const QModbusResponse& resp, ModbusMessage::ProtocolType protocol, int transactionId)
948948
{
949-
if(isLoggedRequest(req, protocol)) {
949+
if(isLoggingRequest(req, protocol)) {
950950
ui->statisticWidget->increaseResponses();
951951
ui->outputWidget->updateTraffic(resp, ui->lineEditDeviceId->value<int>(), transactionId, protocol);
952952
}

omodsim/formmodsim.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ private slots:
153153
void updateStatus();
154154
void onDefinitionChanged();
155155
ScriptControl* scriptControl();
156-
bool isLoggedRequest(const QModbusRequest& req, ModbusMessage::ProtocolType protocol) const;
156+
bool isLoggingRequest(const QModbusRequest& req, ModbusMessage::ProtocolType protocol) const;
157157

158158
private:
159159
Ui::FormModSim *ui;

omodsim/translations/omodsim_ru.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1619,14 +1619,14 @@ MODBUS Point Type:
16191619
<context>
16201620
<name>ModbusLogWidget</name>
16211621
<message>
1622-
<location filename="../controls/modbuslogwidget.cpp" line="146"/>
1623-
<location filename="../controls/modbuslogwidget.cpp" line="192"/>
1622+
<location filename="../controls/modbuslogwidget.cpp" line="173"/>
1623+
<location filename="../controls/modbuslogwidget.cpp" line="219"/>
16241624
<source>Copy Text</source>
16251625
<translation type="unfinished"></translation>
16261626
</message>
16271627
<message>
1628-
<location filename="../controls/modbuslogwidget.cpp" line="161"/>
1629-
<location filename="../controls/modbuslogwidget.cpp" line="193"/>
1628+
<location filename="../controls/modbuslogwidget.cpp" line="188"/>
1629+
<location filename="../controls/modbuslogwidget.cpp" line="220"/>
16301630
<source>Copy Bytes</source>
16311631
<translation type="unfinished"></translation>
16321632
</message>

omodsim/translations/omodsim_zh.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1627,14 +1627,14 @@ MODBUS Point Type:
16271627
<context>
16281628
<name>ModbusLogWidget</name>
16291629
<message>
1630-
<location filename="../controls/modbuslogwidget.cpp" line="146"/>
1631-
<location filename="../controls/modbuslogwidget.cpp" line="192"/>
1630+
<location filename="../controls/modbuslogwidget.cpp" line="173"/>
1631+
<location filename="../controls/modbuslogwidget.cpp" line="219"/>
16321632
<source>Copy Text</source>
16331633
<translation type="unfinished"></translation>
16341634
</message>
16351635
<message>
1636-
<location filename="../controls/modbuslogwidget.cpp" line="161"/>
1637-
<location filename="../controls/modbuslogwidget.cpp" line="193"/>
1636+
<location filename="../controls/modbuslogwidget.cpp" line="188"/>
1637+
<location filename="../controls/modbuslogwidget.cpp" line="220"/>
16381638
<source>Copy Bytes</source>
16391639
<translation type="unfinished"></translation>
16401640
</message>

0 commit comments

Comments
 (0)