2019-07-25 16:43:52 +10:00
|
|
|
import QtQuick 2.12
|
|
|
|
import QtQuick.Controls 2.12
|
|
|
|
import QtQuick.Layouts 1.12
|
|
|
|
import "../../Base"
|
|
|
|
import "../../utils.js" as Utils
|
|
|
|
|
|
|
|
HColumnLayout {
|
|
|
|
function importKeys(file, passphrase) {
|
|
|
|
importButton.loading = true
|
|
|
|
|
|
|
|
let path = Qt.resolvedUrl(file).replace(/^file:\/\//, "")
|
|
|
|
|
|
|
|
py.callClientCoro(
|
|
|
|
editAccount.userId, "import_keys", [path, passphrase], () => {
|
|
|
|
importButton.loading = false
|
|
|
|
}
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
HLabel {
|
|
|
|
wrapMode: Text.Wrap
|
|
|
|
text: qsTr(
|
2019-08-16 23:47:44 +10:00
|
|
|
"The decryption keys for messages you received in encrypted " +
|
|
|
|
"rooms can be exported to a passphrase-protected file.%1" +
|
2019-07-25 16:43:52 +10:00
|
|
|
"You will then be able to import this file in another " +
|
|
|
|
"Matrix client."
|
2019-08-20 05:37:48 +10:00
|
|
|
).arg(pageLoader.isWide ? "\n" :"\n\n")
|
2019-07-25 16:43:52 +10:00
|
|
|
|
|
|
|
Layout.fillWidth: true
|
|
|
|
Layout.margins: currentSpacing
|
|
|
|
}
|
|
|
|
|
|
|
|
HRowLayout {
|
2019-08-21 07:41:24 +10:00
|
|
|
HButton {
|
2019-07-25 16:43:52 +10:00
|
|
|
id: exportButton
|
2019-08-22 05:45:13 +10:00
|
|
|
icon.name: "export-keys"
|
2019-07-25 16:43:52 +10:00
|
|
|
text: qsTr("Export")
|
|
|
|
enabled: false
|
|
|
|
|
|
|
|
Layout.fillWidth: true
|
|
|
|
Layout.alignment: Qt.AlignBottom
|
|
|
|
}
|
|
|
|
|
2019-08-21 07:41:24 +10:00
|
|
|
HButton {
|
2019-07-25 16:43:52 +10:00
|
|
|
id: importButton
|
2019-08-22 05:45:13 +10:00
|
|
|
icon.name: "import-keys"
|
2019-07-25 16:43:52 +10:00
|
|
|
text: qsTr("Import")
|
|
|
|
|
|
|
|
Layout.fillWidth: true
|
|
|
|
Layout.alignment: Qt.AlignBottom
|
|
|
|
|
|
|
|
HFileDialogOpener {
|
|
|
|
id: fileDialog
|
|
|
|
dialog.title: qsTr("Select a decryption key file to import")
|
|
|
|
onFileChanged: {
|
|
|
|
importPasswordPopup.file = file
|
|
|
|
importPasswordPopup.open()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
HPasswordPopup {
|
|
|
|
property url file: ""
|
|
|
|
|
|
|
|
id: importPasswordPopup
|
|
|
|
label.text: qsTr(
|
|
|
|
"Please enter the passphrase that was used to protect this " +
|
|
|
|
"file.\n\n" +
|
|
|
|
"The import can take a few minutes. " +
|
|
|
|
"You can leave the account settings page while it is running. " +
|
|
|
|
"Messages may not be sent or received until the operation is done."
|
|
|
|
)
|
|
|
|
onPasswordChanged: importKeys(file, password)
|
|
|
|
}
|
|
|
|
}
|