ProtocolParser/app_source/qml/components/KeysList.qml

133 lines
3.7 KiB
QML

import QtQuick
import QtQuick.Layouts
import QtQuick.Controls
import RibbonUI
import ProtocolParser
Item {
id:obj
property var header_items: ["序号","密钥"]
property var header_items_width: [100,300]
property var data_source: []
implicitHeight: list_layout.height
implicitWidth: list_layout.width
onData_sourceChanged: {
list.data_model.clear()
list.data_model.append(data_source)
}
Component.onCompleted: {
var data = []
for (var i = 0; i < ZigBeeParser.pre_hmac_verify_key.length; i++)
{
data.push({"序号":i+1,"密钥":key_format(ZigBeeParser.pre_hmac_verify_key[i])})
}
data_source = data
}
Connections{
target: ZigBeeParser
function onPre_hmac_verify_keyChanged(){
var data = []
for (var i = 0; i < ZigBeeParser.pre_hmac_verify_key.length; i++)
{
data.push({"序号":i+1,"密钥":key_format(ZigBeeParser.pre_hmac_verify_key[i])})
}
data_source = data
}
}
RibbonButton{
anchors{
top:parent.top
margins: 4
right:parent.right
}
show_bg: false
show_hovered_bg: false
icon_source: RibbonIcons.Dismiss
onClicked: window_popup.close()
}
ColumnLayout{
id:list_layout
anchors{
bottom: parent.bottom
horizontalCenter: parent.horizontalCenter
}
RibbonText{
id: title_text
Layout.topMargin: 30
Layout.alignment: Qt.AlignHCenter
text: "密钥列表"
view_only: true
font.pixelSize: 15
}
RowLayout{
Layout.preferredWidth: list.implicitWidth
Layout.leftMargin: 30
Layout.topMargin: 15
RibbonText{
id: c_key_text
text: "当前密钥:"
view_only: true
}
RibbonText{
Layout.preferredWidth: implicitWidth > (parent.width - c_key_text.width) ? parent.width - c_key_text.width : implicitWidth
text: key_format(ZigBeeParser.hmac_verify_key)
font.bold: true
wrapMode: RibbonText.WordWrap
}
}
RibbonText{
text: `(${ZigBeeParser.pre_hmac_verify_key.length})`
Layout.leftMargin: 30
view_only: true
}
ListTable {
id: list
header_items: obj.header_items
header_items_width: obj.header_items_width
margins: 0
Layout.topMargin: 10
Layout.leftMargin: 30
Layout.rightMargin: Layout.leftMargin
Layout.bottomMargin: Layout.leftMargin
Layout.preferredHeight: implicitHeight > 250 ? 250 : implicitHeight
}
RowLayout{
spacing: 30
Layout.alignment: Qt.AlignHCenter
Layout.bottomMargin: 30
RibbonButton{
show_tooltip: false
icon_source: RibbonIcons.Delete
text: qsTr("删除")
enabled: list.has_selected
onClicked: {
let data = ZigBeeParser.pre_hmac_verify_key
data.splice(list.current_index,1)
ZigBeeParser.pre_hmac_verify_key = data
}
}
}
}
function key_format(key)
{
let str = '0x'
for (let i = 0; i < key.length; i++)
{
str += key[i]
if ((i + 1) % 2 === 0 && (i + 1) !== key.length)
str += ' 0x'
}
return str
}
}