mirror of
https://github.com/QRouland/UTPass.git
synced 2025-02-24 20:24:56 +00:00
150 lines
3.6 KiB
QML
150 lines
3.6 KiB
QML
|
import Git 1.0
|
||
|
import Lomiri.Components 1.3
|
||
|
import Pass 1.0
|
||
|
import Utils 1.0
|
||
|
import QtQuick 2.4
|
||
|
|
||
|
Column {
|
||
|
|
||
|
|
||
|
property alias importSshPrivKeyButton : repoImportPrivKeyButton
|
||
|
property alias importSshPubKeyButton : repoImportPubKeyButton
|
||
|
property alias deleteSshPrivKeyButton : repoDeletePrivKeyButton
|
||
|
property alias deleteSshPubKeyButton : repoDeletePubKeyButton
|
||
|
property bool __sshPrivKeyAvailable : false
|
||
|
property bool __sshPubKeyAvailable : false
|
||
|
|
||
|
signal repoUrlChanged(string url)
|
||
|
|
||
|
function setRepoUrl(url) {
|
||
|
repoUrlInput.text = url;
|
||
|
}
|
||
|
|
||
|
function update() {
|
||
|
__sshPrivKeyAvailable = Utils.fileExists(Git.privKey);
|
||
|
__sshPubKeyAvailable = Utils.fileExists(Git.pubKey);
|
||
|
}
|
||
|
|
||
|
Component.onCompleted: {
|
||
|
update();
|
||
|
}
|
||
|
|
||
|
anchors.top: parent.fill
|
||
|
spacing: units.gu(1)
|
||
|
|
||
|
Text {
|
||
|
id: repoUrlLabel
|
||
|
|
||
|
horizontalAlignment: Text.AlignHCenter
|
||
|
verticalAlignment: Text.AlignVCenter
|
||
|
width: parent.width
|
||
|
text: i18n.tr('Repo Url')
|
||
|
color: theme.palette.normal.backgroundText
|
||
|
}
|
||
|
|
||
|
TextField {
|
||
|
id: repoUrlInput
|
||
|
|
||
|
horizontalAlignment: Text.AlignHCenter
|
||
|
verticalAlignment: Text.AlignVCenter
|
||
|
width: parent.width
|
||
|
placeholderText: "<username>@<hostname>"
|
||
|
onTextChanged: repoUrlChanged(repoUrlInput.text)
|
||
|
}
|
||
|
|
||
|
Text {
|
||
|
id: repoPrivKeyLabel
|
||
|
|
||
|
horizontalAlignment: Text.AlignHCenter
|
||
|
verticalAlignment: Text.AlignVCenter
|
||
|
width: parent.width
|
||
|
text: i18n.tr('SSH private key')
|
||
|
color: theme.palette.normal.backgroundText
|
||
|
}
|
||
|
|
||
|
Button {
|
||
|
id: repoImportPrivKeyButton
|
||
|
|
||
|
width: parent.width
|
||
|
color: theme.palette.normal.positive
|
||
|
text: i18n.tr('Import SSH private key')
|
||
|
visible: !__sshPrivKeyAvailable
|
||
|
}
|
||
|
|
||
|
Button {
|
||
|
id: repoDeletePrivKeyButton
|
||
|
|
||
|
width: parent.width
|
||
|
color: theme.palette.normal.negative
|
||
|
text: i18n.tr('Delete SSH private key')
|
||
|
visible: __sshPrivKeyAvailable
|
||
|
}
|
||
|
|
||
|
Text {
|
||
|
id: repoPubKeyLabel
|
||
|
|
||
|
horizontalAlignment: Text.AlignHCenter
|
||
|
verticalAlignment: Text.AlignVCenter
|
||
|
width: parent.width
|
||
|
text: i18n.tr('SSH public key')
|
||
|
color: theme.palette.normal.backgroundText
|
||
|
}
|
||
|
|
||
|
Button {
|
||
|
id: repoDeletePubKeyButton
|
||
|
|
||
|
width: parent.width
|
||
|
color: theme.palette.normal.negative
|
||
|
text: i18n.tr('Delete SSH public key')
|
||
|
visible: __sshPrivKeyAvailable
|
||
|
}
|
||
|
|
||
|
Button {
|
||
|
id: repoImportPubKeyButton
|
||
|
|
||
|
width: parent.width
|
||
|
color: theme.palette.normal.positive
|
||
|
text: i18n.tr('Import SSH public key')
|
||
|
visible: !__sshPrivKeyAvailable
|
||
|
}
|
||
|
|
||
|
|
||
|
Text {
|
||
|
id: repoPassphraseLabel
|
||
|
|
||
|
horizontalAlignment: Text.AlignHCenter
|
||
|
verticalAlignment: Text.AlignVCenter
|
||
|
width: parent.width
|
||
|
text: i18n.tr('Passphrase')
|
||
|
color: theme.palette.normal.backgroundText
|
||
|
}
|
||
|
|
||
|
TextField {
|
||
|
id: repoPassphraseInput
|
||
|
|
||
|
horizontalAlignment: Text.AlignHCenter
|
||
|
verticalAlignment: Text.AlignVCenter
|
||
|
width: parent.width
|
||
|
echoMode: TextInput.Password
|
||
|
placeholderText: i18n.tr('Passphrase')
|
||
|
}
|
||
|
|
||
|
Rectangle {
|
||
|
width: parent.width
|
||
|
height: units.gu(1)
|
||
|
color: theme.palette.normal.background
|
||
|
}
|
||
|
|
||
|
Button {
|
||
|
id: buttonClone
|
||
|
|
||
|
width: parent.width
|
||
|
color: theme.palette.normal.positive
|
||
|
text: i18n.tr('Clone')
|
||
|
onClicked: {
|
||
|
Git.cloneSSHKey(repoUrlInput.text, Pass.Passphrase_store, repoPassphraseInput.text);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|