diff --git a/3rdparty/RibbonUI b/3rdparty/RibbonUI index d8b4b10..aa36045 160000 --- a/3rdparty/RibbonUI +++ b/3rdparty/RibbonUI @@ -1 +1 @@ -Subproject commit d8b4b1070c291680946f6af7f3783379fe9d52e4 +Subproject commit aa3604579b8864efe9e777c7dec96209d7b8ee72 diff --git a/app_source/dlln3x/DLLN3X.cpp b/app_source/dlln3x/DLLN3X.cpp index b2246f7..ba9cda5 100644 --- a/app_source/dlln3x/DLLN3X.cpp +++ b/app_source/dlln3x/DLLN3X.cpp @@ -62,7 +62,7 @@ bool DLLN3X::send(ZigbeeFrame zf) { bool status = false; uint8_t len = zf.size(); - if (zf.getSrcPort() < 0x80 || (len + 4) > 63) + if (zf.getSrcPort() < 0x80 || len > 66) return false; status = _DSerial->write((char *)zf.data(),len); status = _DSerial->flush(); diff --git a/app_source/qml/components/RibbonMessageListView.qml b/app_source/qml/components/RibbonMessageListView.qml index b0f5fdc..874a6cf 100644 --- a/app_source/qml/components/RibbonMessageListView.qml +++ b/app_source/qml/components/RibbonMessageListView.qml @@ -11,12 +11,31 @@ RibbonView{ } spacing: 0 + property int max_msg_num: 10 property alias delegate: message_list.delegate property alias message_model: message_model property alias view: message_list ListModel{ 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{ @@ -25,9 +44,45 @@ RibbonView{ Layout.preferredHeight: contentHeight Layout.preferredWidth: parent.width interactive: false - model: message_model + model: show_model 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) } } } diff --git a/app_source/qml/components/SerialPortAssistant.qml b/app_source/qml/components/SerialPortAssistant.qml index 83781a4..d8985ac 100644 --- a/app_source/qml/components/SerialPortAssistant.qml +++ b/app_source/qml/components/SerialPortAssistant.qml @@ -22,7 +22,7 @@ Item{ top_padding: serial_title_bar.height + control.top_padding + (!RibbonTheme.modern_style ? 10 : 0) bottom_padding: message_sender.height + control.bottom_padding 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 component_width: serial_view.width / 2 } diff --git a/app_source/qml/components/ZigBeeMessage.qml b/app_source/qml/components/ZigBeeMessage.qml index d8a741e..4142b95 100644 --- a/app_source/qml/components/ZigBeeMessage.qml +++ b/app_source/qml/components/ZigBeeMessage.qml @@ -5,7 +5,7 @@ import RibbonUI RibbonMessage{ 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 decrypted_text_list: data_model.decrypted_text ? data_model.decrypted_text.split(' ') : [] property bool show_tooltip: true diff --git a/app_source/source/eventsbus.cpp b/app_source/source/eventsbus.cpp index 8eb647c..dc0d829 100644 --- a/app_source/source/eventsbus.cpp +++ b/app_source/source/eventsbus.cpp @@ -35,7 +35,7 @@ void EventsBus::push_data(QString type, QJsonObject data) if (_event_history.count() >= 100) _event_history.pop_front(); 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); for (auto event : _events) { if (event->type() == type)