Zigbee and Window: bug fix and memory use optimized.

This commit is contained in:
Mentalflow 2024-02-27 21:53:36 +08:00
parent 611176bfcf
commit 75bee1a451
Signed by: Mentalflow
GPG Key ID: 5AE68D4401A2EE71
6 changed files with 62 additions and 7 deletions

2
3rdparty/RibbonUI vendored

@ -1 +1 @@
Subproject commit d8b4b1070c291680946f6af7f3783379fe9d52e4 Subproject commit aa3604579b8864efe9e777c7dec96209d7b8ee72

View File

@ -62,7 +62,7 @@ bool DLLN3X::send(ZigbeeFrame zf)
{ {
bool status = false; bool status = false;
uint8_t len = zf.size(); uint8_t len = zf.size();
if (zf.getSrcPort() < 0x80 || (len + 4) > 63) if (zf.getSrcPort() < 0x80 || len > 66)
return false; return false;
status = _DSerial->write((char *)zf.data(),len); status = _DSerial->write((char *)zf.data(),len);
status = _DSerial->flush(); status = _DSerial->flush();

View File

@ -11,12 +11,31 @@ RibbonView{
} }
spacing: 0 spacing: 0
property int max_msg_num: 10
property alias delegate: message_list.delegate property alias delegate: message_list.delegate
property alias message_model: message_model property alias message_model: message_model
property alias view: message_list property alias view: message_list
ListModel{ ListModel{
id: message_model id: message_model
property int begin_index: 0
property int end_index: 0
onCountChanged: {
if (end_index == count - 2 || begin_index == end_index)
{
while(show_model.count > max_msg_num)
{
show_model.remove(0)
begin_index++
}
show_model.append(message_model.get(count - 1))
end_index = count-1
//console.log('append:',begin_index,end_index)
}
}
}
ListModel{
id: show_model
} }
ListView{ ListView{
@ -25,9 +44,45 @@ RibbonView{
Layout.preferredHeight: contentHeight Layout.preferredHeight: contentHeight
Layout.preferredWidth: parent.width Layout.preferredWidth: parent.width
interactive: false interactive: false
model: message_model model: show_model
add: Transition { add: Transition {
NumberAnimation { properties: "x,y"; from: message_list.height; duration: 1000 } NumberAnimation { properties: "y"; from: message_list.height; duration: 200 }
}
displaced: Transition {
NumberAnimation { properties: "y"; duration: 200 }
}
}
Connections{
target: view
function onPull_up_triggered()
{
for(let i = message_model.begin_index - 1, count = 0;
i >= 0 && count < max_msg_num; i--,count++ )
{
show_model.insert(0,message_model.get(i))
message_model.begin_index = i
if (show_model.count > max_msg_num + 2)
{
show_model.remove(show_model.count - 1)
message_model.end_index--
}
}
//console.log('up:',message_model.begin_index,message_model.end_index)
}
function onPull_down_triggered()
{
for(let i = message_model.end_index + 1, count = 0;
i < message_model.count && count < max_msg_num; i++,count++ )
{
show_model.append(message_model.get(i))
message_model.end_index = i
if (show_model.count > max_msg_num)
{
show_model.remove(0)
message_model.begin_index++
}
}
//console.log('down:',message_model.begin_index,message_model.end_index)
} }
} }
} }

View File

@ -22,7 +22,7 @@ Item{
top_padding: serial_title_bar.height + control.top_padding + (!RibbonTheme.modern_style ? 10 : 0) top_padding: serial_title_bar.height + control.top_padding + (!RibbonTheme.modern_style ? 10 : 0)
bottom_padding: message_sender.height + control.bottom_padding bottom_padding: message_sender.height + control.bottom_padding
delegate: ZigBeeMessage{ delegate: ZigBeeMessage{
sender_text: `${Qt.formatDateTime(new Date(), "yyyy-MM-dd hh:mm:ss.zzz")} ${model.recieved ? '收' : '发'}` sender_text: `${model.time} ${model.recieved ? '收' : '发'}`
show_tooltip: control.show_tooltip show_tooltip: control.show_tooltip
component_width: serial_view.width / 2 component_width: serial_view.width / 2
} }

View File

@ -5,7 +5,7 @@ import RibbonUI
RibbonMessage{ RibbonMessage{
id: message_style id: message_style
sender_text: data_model.recieved ? `${Qt.formatDateTime(new Date(), "yyyy-MM-dd hh:mm:ss ")} Node 0x${data_model.sender}` : `${Qt.formatDateTime(new Date(), "yyyy-MM-dd hh:mm:ss ")} Computer 0x${data_model.sender}` sender_text: data_model.recieved ? `${data_model.time} Node 0x${data_model.sender}` : `${data_model.time} Computer 0x${data_model.sender}`
property var text_list: data_model.text ? data_model.text.split(' ') : [] property var text_list: data_model.text ? data_model.text.split(' ') : []
property var decrypted_text_list: data_model.decrypted_text ? data_model.decrypted_text.split(' ') : [] property var decrypted_text_list: data_model.decrypted_text ? data_model.decrypted_text.split(' ') : []
property bool show_tooltip: true property bool show_tooltip: true

View File

@ -35,7 +35,7 @@ void EventsBus::push_data(QString type, QJsonObject data)
if (_event_history.count() >= 100) if (_event_history.count() >= 100)
_event_history.pop_front(); _event_history.pop_front();
if (data["time"].toString()=="") if (data["time"].toString()=="")
data.insert("time",QJsonValue(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"))); data.insert("time",QJsonValue(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss.zzz")));
_event_history.append(data); _event_history.append(data);
for (auto event : _events) { for (auto event : _events) {
if (event->type() == type) if (event->type() == type)