mirror of
https://github.com/QRouland/UTPass.git
synced 2025-06-29 08:42:29 +00:00
Initial Commit : 0.0.1
This commit is contained in:
82
qml/pages/settings/ImportKeyFile.qml
Normal file
82
qml/pages/settings/ImportKeyFile.qml
Normal file
@ -0,0 +1,82 @@
|
||||
import QtQuick 2.4
|
||||
import Ubuntu.Components 1.3
|
||||
import Ubuntu.Content 1.3
|
||||
import Ubuntu.Components.Popups 1.3
|
||||
import Pass 1.0
|
||||
import Utils 1.0
|
||||
import "../headers"
|
||||
import "../../dialogs"
|
||||
|
||||
Page {
|
||||
id: importKeyFilePage
|
||||
|
||||
property var activeTransfer
|
||||
|
||||
header: StackHeader {
|
||||
id: importKeyHeader
|
||||
title: i18n.tr("GPG Key Import")
|
||||
}
|
||||
|
||||
ContentPeerPicker {
|
||||
anchors.top: importKeyHeader.bottom
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.topMargin: importKeyFilePage.header.height
|
||||
|
||||
width: parent.width
|
||||
|
||||
visible: parent.visible
|
||||
showTitle: false
|
||||
contentType: ContentType.Text
|
||||
handler: ContentHandler.Source
|
||||
|
||||
onPeerSelected: {
|
||||
peer.selectionType = ContentTransfer.Single
|
||||
importKeyFilePage.activeTransfer = peer.request()
|
||||
|
||||
importKeyFilePage.activeTransfer.stateChanged.connect(function () {
|
||||
if (importKeyFilePage.activeTransfer.state === ContentTransfer.Charged) {
|
||||
console.log("Charged")
|
||||
console.log(importKeyFilePage.activeTransfer.items[0].url)
|
||||
|
||||
var status = Pass.gpgImportKeyFromFile(
|
||||
importKeyFilePage.activeTransfer.items[0].url)
|
||||
|
||||
Utils.rmFile(importKeyFilePage.activeTransfer.items[0].url)
|
||||
if (status) {
|
||||
PopupUtils.open(dialogImportKeyPageSucess)
|
||||
} else {
|
||||
PopupUtils.open(dialogImportKeyPageError)
|
||||
}
|
||||
importKeyFilePage.activeTransfer = null
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
onCancelPressed: {
|
||||
pageStack.pop()
|
||||
}
|
||||
}
|
||||
|
||||
ContentTransferHint {
|
||||
id: transferHint
|
||||
anchors.fill: parent
|
||||
activeTransfer: importKeyFilePage.activeTransfer
|
||||
}
|
||||
|
||||
Component {
|
||||
id: dialogImportKeyPageError
|
||||
ErrorDialog {
|
||||
textError: i18n.tr("Key import failed !")
|
||||
}
|
||||
}
|
||||
|
||||
Component {
|
||||
id: dialogImportKeyPageSucess
|
||||
SuccessDialog {
|
||||
textSuccess: i18n.tr("Key successfully imported !")
|
||||
onDialogClosed: {
|
||||
pageStack.pop()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
99
qml/pages/settings/ImportZip.qml
Normal file
99
qml/pages/settings/ImportZip.qml
Normal file
@ -0,0 +1,99 @@
|
||||
import QtQuick 2.4
|
||||
import Ubuntu.Components 1.3
|
||||
import Ubuntu.Content 1.3
|
||||
import Ubuntu.Components.Popups 1.3
|
||||
import Pass 1.0
|
||||
import Utils 1.0
|
||||
import "../headers"
|
||||
import "../../dialogs"
|
||||
|
||||
Page {
|
||||
id: importZipPage
|
||||
|
||||
property var activeTransfer
|
||||
|
||||
header: StackHeader {
|
||||
id: importZipHeader
|
||||
title: i18n.tr("Zip Password Store Import")
|
||||
}
|
||||
|
||||
ContentPeerPicker {
|
||||
anchors.top: importZipHeader.bottom
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.topMargin: importZipPage.header.height
|
||||
|
||||
width: parent.width
|
||||
|
||||
visible: parent.visible
|
||||
showTitle: false
|
||||
contentType: ContentType.Text
|
||||
handler: ContentHandler.Source
|
||||
|
||||
onPeerSelected: {
|
||||
peer.selectionType = ContentTransfer.Single
|
||||
importZipPage.activeTransfer = peer.request()
|
||||
|
||||
importZipPage.activeTransfer.stateChanged.connect(function () {
|
||||
if (importZipPage.activeTransfer.state === ContentTransfer.Charged) {
|
||||
console.log("Charged")
|
||||
console.log(importZipPage.activeTransfer.items[0].url)
|
||||
|
||||
var status = Utils.unzip(
|
||||
importZipPage.activeTransfer.items[0].url,
|
||||
Pass.getPasswordStore())
|
||||
|
||||
Utils.rmFile(importZipPage.activeTransfer.items[0].url)
|
||||
|
||||
if (status) {
|
||||
PopupUtils.open(dialogImportZipPageSuccess)
|
||||
} else {
|
||||
PopupUtils.open(dialogImportZipPageError)
|
||||
}
|
||||
importZipPage.activeTransfer = null
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
onCancelPressed: {
|
||||
pageStack.pop()
|
||||
}
|
||||
}
|
||||
|
||||
ContentTransferHint {
|
||||
id: transferHint
|
||||
anchors.fill: parent
|
||||
activeTransfer: importZipPage.activeTransfer
|
||||
}
|
||||
|
||||
Component {
|
||||
id: importZipPageImportValidation
|
||||
SimpleValidationDialog {
|
||||
text: i18n.tr(
|
||||
"Importing a new zip will delete<br>any existing password store!<br>Continue ?")
|
||||
onCanceled: {
|
||||
pageStack.pop()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Component {
|
||||
id: dialogImportZipPageError
|
||||
ErrorDialog {
|
||||
textError: i18n.tr("Password store import failed !")
|
||||
}
|
||||
}
|
||||
|
||||
Component {
|
||||
id: dialogImportZipPageSuccess
|
||||
SuccessDialog {
|
||||
textSuccess: i18n.tr("Password store sucessfully imported !")
|
||||
onDialogClosed: {
|
||||
pageStack.pop()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
PopupUtils.open(importZipPageImportValidation, importZipPage)
|
||||
}
|
||||
}
|
100
qml/pages/settings/InfoKeys.qml
Normal file
100
qml/pages/settings/InfoKeys.qml
Normal file
@ -0,0 +1,100 @@
|
||||
import QtQuick 2.4
|
||||
import Ubuntu.Components 1.3
|
||||
import Ubuntu.Components.Popups 1.3
|
||||
import Pass 1.0
|
||||
import "../headers"
|
||||
import "../../components"
|
||||
import "../../dialogs"
|
||||
|
||||
Page {
|
||||
id: infoKeysPage
|
||||
|
||||
property string currentKey
|
||||
|
||||
header: StackHeader {
|
||||
id: infoKeysHeader
|
||||
title: i18n.tr('Info Keys')
|
||||
}
|
||||
|
||||
ListView {
|
||||
id: infoKeysListView
|
||||
anchors.top: infoKeysHeader.bottom
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.right: parent.right
|
||||
anchors.left: parent.left
|
||||
|
||||
model: Pass.gpgGetAllKeysModel()
|
||||
|
||||
delegate: Grid {
|
||||
columns: 1
|
||||
width: parent.width
|
||||
horizontalItemAlignment: Grid.AlignHCenter
|
||||
verticalItemAlignment: Grid.AlignVCenter
|
||||
|
||||
Rectangle {
|
||||
width: parent.width
|
||||
height: units.gu(1)
|
||||
}
|
||||
|
||||
Text {
|
||||
id: uidKey
|
||||
width: parent.width
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
text: i18n.tr('Key id : %1').arg(model.modelData.uid)
|
||||
}
|
||||
|
||||
Button {
|
||||
id: buttonDeleteKey
|
||||
text: i18n.tr("Delete this key")
|
||||
color: UbuntuColors.red
|
||||
onClicked: {
|
||||
infoKeysPage.currentKey = model.modelData.uid
|
||||
PopupUtils.open(infoKeysPageDeleteValidation, infoKeysPage)
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
width: parent.width
|
||||
height: units.gu(1)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Component {
|
||||
id: infoKeysPageDeleteValidation
|
||||
DoubleValidationDialog {
|
||||
text1: i18n.tr(
|
||||
"You're are about to delete<br>%1<br>Continue ?").arg(
|
||||
infoKeysPage.currentKey)
|
||||
text2: i18n.tr(
|
||||
"%1<br>will be definitively removed.<br>Continue ?").arg(
|
||||
infoKeysPage.currentKey)
|
||||
onDoubleValidated: {
|
||||
var status = Pass.gpgDeleteKeyId(infoKeysPage.currentKey)
|
||||
if (status) {
|
||||
PopupUtils.open(infoKeysPageDeleteSuccess)
|
||||
} else {
|
||||
PopupUtils.open(infoKeysPageDeleteError)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Component {
|
||||
id: infoKeysPageDeleteError
|
||||
ErrorDialog {
|
||||
textError: i18n.tr("Key removal failed !")
|
||||
}
|
||||
}
|
||||
|
||||
Component {
|
||||
id: infoKeysPageDeleteSuccess
|
||||
SuccessDialog {
|
||||
textSuccess: i18n.tr("Key successfully deleted !")
|
||||
onDialogClosed: {
|
||||
infoKeysListView.model = Pass.gpgGetAllKeysModel()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
59
qml/pages/settings/Settings.qml
Normal file
59
qml/pages/settings/Settings.qml
Normal file
@ -0,0 +1,59 @@
|
||||
import QtQuick 2.4
|
||||
import Ubuntu.Components 1.3
|
||||
import Pass 1.0
|
||||
import "../headers"
|
||||
import "../../components"
|
||||
|
||||
Page {
|
||||
id: settingsPage
|
||||
|
||||
property string gpgKeyId: ""
|
||||
|
||||
header: StackHeader {
|
||||
id: settingsHeader
|
||||
title: i18n.tr('Settings')
|
||||
}
|
||||
|
||||
Flow {
|
||||
anchors.top: settingsHeader.bottom
|
||||
anchors.bottom: parent.bottom
|
||||
width: parent.width
|
||||
spacing: 1
|
||||
|
||||
Text {
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
width: parent.width
|
||||
height: units.gu(4)
|
||||
text: i18n.tr('GPG')
|
||||
}
|
||||
PageStackLink {
|
||||
page: Qt.resolvedUrl("ImportKeyFile.qml")
|
||||
text: i18n.tr('Import a GPG key file')
|
||||
}
|
||||
PageStackLink {
|
||||
page: Qt.resolvedUrl("InfoKeys.qml")
|
||||
text: i18n.tr('Show GPG keys')
|
||||
}
|
||||
Text {
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
width: parent.width
|
||||
height: units.gu(4)
|
||||
text: i18n.tr('Password Store')
|
||||
}
|
||||
PageStackLink {
|
||||
page: Qt.resolvedUrl("ImportZip.qml")
|
||||
text: i18n.tr('Import a Password Store Zip')
|
||||
}
|
||||
Text {
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
width: parent.width
|
||||
height: units.gu(4)
|
||||
color: UbuntuColors.red
|
||||
text: i18n.tr(
|
||||
'Warning: importing delete any exiting Password Store')
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user