diff --git a/app_source/include/zigbeedataresolver.h b/app_source/include/zigbeedataresolver.h index e55b45f..a5b9329 100644 --- a/app_source/include/zigbeedataresolver.h +++ b/app_source/include/zigbeedataresolver.h @@ -11,8 +11,11 @@ class ZigBeeDataResolver : public QObject Q_OBJECT public: static ZigBeeDataResolver* instance(); + QList& get_allow_list(){return _allow_list;}; + QList& get_deny_list(){return _deny_list;}; + QList& get_wait_queue(){return _wait_queue;}; public slots: - void message_parser(QJsonObject message, QString self_addr, QList allow_list, QList deny_list, QList wait_queue); + void message_parser(QJsonObject message, QString self_addr); private: explicit ZigBeeDataResolver(QObject *parent = nullptr); ~ZigBeeDataResolver(); @@ -26,7 +29,7 @@ private: QMap> nodes; QList _allow_list,_deny_list,_wait_queue; signals: - void data_send(QString type, QJsonObject data, QList allow_list, QList deny_list, QList wait_queue); + void data_send(QString type, QJsonObject data); }; #endif // ZIGBEEDATARESOLVER_H diff --git a/app_source/include/zigbeeparser.h b/app_source/include/zigbeeparser.h index 9f18031..546ab78 100644 --- a/app_source/include/zigbeeparser.h +++ b/app_source/include/zigbeeparser.h @@ -7,7 +7,6 @@ #include #include #include -#include "../3rdparty/RibbonUI/lib_source/definitions.h" #include "protocol.h" #include "eventsbus.h" #include "config.h" @@ -19,14 +18,20 @@ class ZigBeeParser : public QObject QML_ELEMENT QML_SINGLETON QML_NAMED_ELEMENT(ZigBeeParser) - Q_PROPERTY_RW(QList, allow_list) - Q_PROPERTY_RW(QList, deny_list) - Q_PROPERTY_RW(QList, wait_queue) + Q_PROPERTY(QList allow_list READ allow_list WRITE setAllow_list NOTIFY allow_listChanged FINAL) + Q_PROPERTY(QList deny_list READ deny_list WRITE setDeny_list NOTIFY deny_listChanged FINAL) + Q_PROPERTY(QList wait_queue READ wait_queue WRITE setWait_queue NOTIFY wait_queueChanged FINAL) Q_PROPERTY(QString self_addr READ self_addr FINAL) Q_PROPERTY(QString hmac_verify_key READ hmac_verify_key WRITE setHmac_verify_key NOTIFY hmac_verify_keyChanged FINAL) Q_PROPERTY(QStringList pre_hmac_verify_key READ pre_hmac_verify_key WRITE setPre_hmac_verify_key NOTIFY pre_hmac_verify_keyChanged FINAL) public: Q_INVOKABLE QString self_addr(){ _self_addr = QString::number(_protocol->self_addr,16).toUpper(); return _self_addr;}; + QList allow_list(){if(!_resolver)_resolver=ZigBeeDataResolver::instance();return _resolver->get_allow_list();}; + void setAllow_list(QList allow_list){if(!_resolver)_resolver=ZigBeeDataResolver::instance();QList &a=_resolver->get_allow_list();a=allow_list;emit allow_listChanged();}; + QList deny_list(){if(!_resolver)_resolver=ZigBeeDataResolver::instance();return _resolver->get_deny_list();}; + void setDeny_list(QList deny_list){if(!_resolver)_resolver=ZigBeeDataResolver::instance();QList &a=_resolver->get_deny_list();a=deny_list;emit deny_listChanged();}; + QList wait_queue(){if(!_resolver)_resolver=ZigBeeDataResolver::instance();return _resolver->get_wait_queue();}; + void setWait_queue(QList wait_queue){if(!_resolver)_resolver=ZigBeeDataResolver::instance();QList &a=_resolver->get_wait_queue();a=wait_queue;emit wait_queueChanged();}; QString hmac_verify_key(){ return _protocol->hmac_verify_key;}; void setHmac_verify_key(QString key){ _config->Set("Protocol","hmac_verify_key",key); _protocol->hmac_verify_key = key;emit hmac_verify_keyChanged();}; QStringList pre_hmac_verify_key(){ return _protocol->pre_hmac_verify_key;}; @@ -37,7 +42,10 @@ public: signals: void hmac_verify_keyChanged(); void pre_hmac_verify_keyChanged(); - void message_recved(QJsonObject message, QString self_addr, QList allow_list, QList deny_list, QList wait_queue); + void allow_listChanged(); + void deny_listChanged(); + void wait_queueChanged(); + void message_recved(QJsonObject message, QString self_addr); private: explicit ZigBeeParser(QObject *parent = nullptr); ~ZigBeeParser(); @@ -50,6 +58,6 @@ private: ZigBeeDataResolver* _resolver = nullptr; QThread *_thread = nullptr; private slots: - void bus_data_send(QString type, QJsonObject data, QList allow_list, QList deny_list, QList wait_queue); + void bus_data_send(QString type, QJsonObject data); }; #endif // ZIGBEEPARSER_H diff --git a/app_source/qml/components/RibbonMessageListView.qml b/app_source/qml/components/RibbonMessageListView.qml index 874a6cf..a2ab23f 100644 --- a/app_source/qml/components/RibbonMessageListView.qml +++ b/app_source/qml/components/RibbonMessageListView.qml @@ -32,6 +32,8 @@ RibbonView{ end_index = count-1 //console.log('append:',begin_index,end_index) } + if(count===0) + show_model.clear() } } ListModel{ @@ -40,16 +42,17 @@ RibbonView{ ListView{ id: message_list + cacheBuffer: message_list.height * 2 Layout.alignment: Qt.AlignHCenter Layout.preferredHeight: contentHeight Layout.preferredWidth: parent.width interactive: false model: show_model add: Transition { - NumberAnimation { properties: "y"; from: message_list.height; duration: 200 } + NumberAnimation { properties: "y"; from: message_list.height; duration: 100 } } displaced: Transition { - NumberAnimation { properties: "y"; duration: 200 } + NumberAnimation { properties: "y"; duration: 100 } } } Connections{ diff --git a/app_source/source/main.cpp b/app_source/source/main.cpp index ed7d198..4a9b30f 100644 --- a/app_source/source/main.cpp +++ b/app_source/source/main.cpp @@ -17,12 +17,13 @@ int main(int argc, char *argv[]) QGuiApplication app(argc, argv); #ifdef Q_OS_WIN - FramelessConfig::instance()->set(Global::Option::ForceHideWindowFrameBorder); - FramelessConfig::instance()->set(Global::Option::ForceNonNativeBackgroundBlur); + FramelessConfig::instance()->set(Global::Option::UseCrossPlatformQtImplementation); + //FramelessConfig::instance()->set(Global::Option::ForceHideWindowFrameBorder); + //FramelessConfig::instance()->set(Global::Option::ForceNonNativeBackgroundBlur); +#else + FramelessConfig::instance()->set(Global::Option::EnableBlurBehindWindow); #endif FramelessConfig::instance()->set(Global::Option::CenterWindowBeforeShow); - FramelessConfig::instance()->set(Global::Option::EnableBlurBehindWindow); - QTranslator translator; bool result = translator.load(QLocale::system(), u""_qs, u""_qs, u":/translations"_qs); if (result) diff --git a/app_source/source/zigbeedataresolver.cpp b/app_source/source/zigbeedataresolver.cpp index f171164..f76b930 100644 --- a/app_source/source/zigbeedataresolver.cpp +++ b/app_source/source/zigbeedataresolver.cpp @@ -89,7 +89,7 @@ void ZigBeeDataResolver::des_port_parser(zigbee_protocol::ZigbeeFrame &zframe, b object.insert("recieved", true); object.insert("sender", sender); object.insert("type","zigbee_identify_data"); - emit data_send("zigbee_identify_data_view",object,_allow_list,_deny_list,_wait_queue); + emit data_send("zigbee_identify_data_view",object); return; } switch (zframe.getDesPort()) { @@ -102,7 +102,7 @@ void ZigBeeDataResolver::des_port_parser(zigbee_protocol::ZigbeeFrame &zframe, b object.insert("note_text",QJsonValue("收到节点0x"+ sender +"发送的验证信息")); object.insert("recieved", true); object.insert("type","zigbee_identify_data"); - emit data_send("zigbee_identify_data_view",object,_allow_list,_deny_list,_wait_queue); + emit data_send("zigbee_identify_data_view",object); if (_allow_list.contains(node->first.addr)) { u8 hmac[33]=""; @@ -127,9 +127,9 @@ void ZigBeeDataResolver::des_port_parser(zigbee_protocol::ZigbeeFrame &zframe, b object.insert("recieved", false); object.insert("sender", QString::number(_protocol->self_addr,16).toUpper()); object.insert("type","zigbee_identify_data"); - emit data_send("zigbee_identify_data_view",object,_allow_list,_deny_list,_wait_queue); + emit data_send("zigbee_identify_data_view",object); if(!is_demo) - emit data_send("serial_port",object,_allow_list,_deny_list,_wait_queue); + emit data_send("serial_port",object); } else { @@ -158,9 +158,9 @@ void ZigBeeDataResolver::des_port_parser(zigbee_protocol::ZigbeeFrame &zframe, b object.insert("recieved", false); object.insert("sender", QString::number(_protocol->self_addr,16).toUpper()); object.insert("type","zigbee_identify_data"); - emit data_send("zigbee_identify_data_view",object,_allow_list,_deny_list,_wait_queue); + emit data_send("zigbee_identify_data_view",object); if(!is_demo) - emit data_send("serial_port",object,_allow_list,_deny_list,_wait_queue); + emit data_send("serial_port",object); return; } } @@ -168,7 +168,7 @@ void ZigBeeDataResolver::des_port_parser(zigbee_protocol::ZigbeeFrame &zframe, b object.insert("recieved", true); object.insert("sender", sender); object.insert("type","zigbee_identify_data"); - emit data_send("zigbee_identify_data_view",object,_allow_list,_deny_list,_wait_queue); + emit data_send("zigbee_identify_data_view",object); } } else if(_deny_list.contains(node->first.addr)) @@ -178,7 +178,7 @@ void ZigBeeDataResolver::des_port_parser(zigbee_protocol::ZigbeeFrame &zframe, b object.insert("note_text",QJsonValue("节点0x"+QString::number(((base_frame *)zframe.getData().data())->ori_addr,16).toUpper()+"被禁止接入")); object.insert("recieved", true); object.insert("type","zigbee_identify_data"); - emit data_send("zigbee_identify_data_view",object,_allow_list,_deny_list,_wait_queue); + emit data_send("zigbee_identify_data_view",object); } else { if (!_wait_queue.contains(node->first.addr)) @@ -189,7 +189,7 @@ void ZigBeeDataResolver::des_port_parser(zigbee_protocol::ZigbeeFrame &zframe, b object.insert("note_text",QJsonValue("节点0x"+QString::number(((base_frame *)zframe.getData().data())->ori_addr,16).toUpper()+"进入等待队列")); object.insert("recieved", true); object.insert("type","zigbee_identify_data"); - emit data_send("zigbee_identify_data_view",object,_allow_list,_deny_list,_wait_queue); + emit data_send("zigbee_identify_data_view",object); } else { @@ -198,7 +198,7 @@ void ZigBeeDataResolver::des_port_parser(zigbee_protocol::ZigbeeFrame &zframe, b object.insert("note_text",QJsonValue("节点0x"+QString::number(((base_frame *)zframe.getData().data())->ori_addr,16).toUpper()+"已在等待队列")); object.insert("recieved", true); object.insert("type","zigbee_identify_data"); - emit data_send("zigbee_identify_data_view",object,_allow_list,_deny_list,_wait_queue); + emit data_send("zigbee_identify_data_view",object); } } break; @@ -231,7 +231,7 @@ void ZigBeeDataResolver::des_port_parser(zigbee_protocol::ZigbeeFrame &zframe, b object.insert("type","zigbee_recv_data"); if (QRandomGenerator::global()->bounded(2)!=0 && is_demo) object.insert("decrypted_text", QJsonValue(QString(zdata.toHex(' ').toUpper()))); - emit data_send("zigbee_recv_data_view",object,_allow_list,_deny_list,_wait_queue); + emit data_send("zigbee_recv_data_view",object); } else { @@ -240,7 +240,7 @@ void ZigBeeDataResolver::des_port_parser(zigbee_protocol::ZigbeeFrame &zframe, b object.insert("note_text",QJsonValue("收到节点0x"+sender+"发送的数据,但节点并未认证")); object.insert("recieved", true); object.insert("type","zigbee_recv_data"); - emit data_send("zigbee_recv_data_view",object,_allow_list,_deny_list,_wait_queue); + emit data_send("zigbee_recv_data_view",object); node->second.id=0; new_data_frame(5) dframe; memset(&dframe,0,sizeof (dframe)); @@ -256,7 +256,7 @@ void ZigBeeDataResolver::des_port_parser(zigbee_protocol::ZigbeeFrame &zframe, b object.insert("note_text",QJsonValue("向节点0x"+sender+"发送重置命令")); object.insert("recieved", false); object.insert("type","zigbee_recv_data"); - emit data_send("zigbee_recv_data_view",object,_allow_list,_deny_list,_wait_queue); + emit data_send("zigbee_recv_data_view",object); } } default: @@ -275,12 +275,9 @@ void ZigBeeDataResolver::remote_addr_parser(zigbee_protocol::ZigbeeFrame &zframe } } -void ZigBeeDataResolver::message_parser(QJsonObject message, QString self_addr, QList allow_list, QList deny_list, QList wait_queue) +void ZigBeeDataResolver::message_parser(QJsonObject message, QString self_addr) { _self_addr = self_addr; - _allow_list = allow_list; - _deny_list = deny_list; - _wait_queue = wait_queue; if (message["type"] == "demo_verify_request") { hmac_frame frame; diff --git a/app_source/source/zigbeeparser.cpp b/app_source/source/zigbeeparser.cpp index d692f23..106b6e4 100644 --- a/app_source/source/zigbeeparser.cpp +++ b/app_source/source/zigbeeparser.cpp @@ -49,13 +49,10 @@ ZigBeeParser* ZigBeeParser::instance() void ZigBeeParser::message_parser(QJsonObject message) { - emit message_recved(message, _self_addr, _allow_list, _deny_list, _wait_queue); + emit message_recved(message, _self_addr); } -void ZigBeeParser::bus_data_send(QString type, QJsonObject data, QList allow_list, QList deny_list, QList wait_queue) +void ZigBeeParser::bus_data_send(QString type, QJsonObject data) { _bus->push_data(type, data); - _allow_list = allow_list; - _deny_list = deny_list; - _wait_queue = wait_queue; }