1
0
mirror of https://github.com/QRouland/UTPass.git synced 2025-02-10 14:47:14 +00:00

Some ui improvements

This commit is contained in:
Quentin Rouland 2025-01-28 10:17:57 +01:00
parent 7a2b12419d
commit 630d707190
13 changed files with 133 additions and 67 deletions

View File

@ -6,7 +6,7 @@ scripts:
style: >- style: >-
echo 'Running Astyle :' && astyle --options=.astylerc --recursive '*.cpp,*.h' --exclude=build && echo 'Running QmlFormat' && find . -name "*.qml" -exec qmlformat -i {} \; && echo 'Success' echo 'Running Astyle :' && astyle --options=.astylerc --recursive '*.cpp,*.h' --exclude=build && echo 'Running QmlFormat' && find . -name "*.qml" -exec qmlformat -i {} \; && echo 'Success'
skip_review: true
dependencies_target: dependencies_target:
@ -14,7 +14,10 @@ dependencies_target:
- libgpgme-dev - libgpgme-dev
- libgit2-dev - libgit2-dev
- libquazip5-dev - libquazip5-dev
- gpg-agent
- gpgconf
- gpg - gpg
- fakechroot:all
install_lib: install_lib:
- "libgpg-error.so.0.28.0" - "libgpg-error.so.0.28.0"
@ -31,4 +34,6 @@ install_lib:
- "libssh2.so*" - "libssh2.so*"
install_bin: install_bin:
- "fakechroot"
- "gpg-agent"
- "gpg" - "gpg"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: utpass.qrouland\n" "Project-Id-Version: utpass.qrouland\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-20 15:56+0100\n" "POT-Creation-Date: 2025-01-28 09:40+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -38,12 +38,12 @@ msgid "passphrase"
msgstr "" msgstr ""
#: ../qml/dialogs/PassphraseDialog.qml:29 #: ../qml/dialogs/PassphraseDialog.qml:29
#: ../qml/dialogs/SimpleValidationDialog.qml:9 #: ../qml/dialogs/SimpleValidationDialog.qml:8
msgid "Ok" msgid "Ok"
msgstr "" msgstr ""
#: ../qml/dialogs/PassphraseDialog.qml:41 #: ../qml/dialogs/PassphraseDialog.qml:41
#: ../qml/dialogs/SimpleValidationDialog.qml:34 #: ../qml/dialogs/SimpleValidationDialog.qml:29
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
@ -79,27 +79,27 @@ msgstr ""
msgid "Info" msgid "Info"
msgstr "" msgstr ""
#: ../qml/pages/PasswordList.qml:44 #: ../qml/pages/PasswordList.qml:45
msgid "No password found" msgid "No password found"
msgstr "" msgstr ""
#: ../qml/pages/PasswordList.qml:55 #: ../qml/pages/PasswordList.qml:58
msgid "You can import a password store by cloning or" msgid "You can import a password store by cloning or"
msgstr "" msgstr ""
#: ../qml/pages/PasswordList.qml:61 #: ../qml/pages/PasswordList.qml:65
msgid "importing a password store zip in the settings" msgid "importing a password store zip in the settings"
msgstr "" msgstr ""
#: ../qml/pages/PasswordList.qml:95 #: ../qml/pages/PasswordList.qml:100
msgid "Decryption failed !" msgid "Decryption failed !"
msgstr "" msgstr ""
#: ../qml/pages/PasswordList.qml:109 #: ../qml/pages/PasswordList.qml:114
msgid "Back" msgid "Back"
msgstr "" msgstr ""
#: ../qml/pages/PasswordList.qml:116 ../qml/pages/headers/MainHeader.qml:9 #: ../qml/pages/PasswordList.qml:121 ../qml/pages/headers/MainHeader.qml:9
#: ../qml/pages/headers/StackHeader.qml:9 UTPass.desktop.in.h:1 #: ../qml/pages/headers/StackHeader.qml:9 UTPass.desktop.in.h:1
msgid "UTPass" msgid "UTPass"
msgstr "" msgstr ""
@ -112,90 +112,94 @@ msgstr ""
msgid "Search" msgid "Search"
msgstr "" msgstr ""
#: ../qml/pages/settings/DeleteRepo.qml:41 #: ../qml/pages/settings/DeleteRepo.qml:43
#: ../qml/pages/settings/Settings.qml:58 #: ../qml/pages/settings/Settings.qml:58
msgid "Delete Password Store" msgid "Delete Password Store"
msgstr "" msgstr ""
#: ../qml/pages/settings/DeleteRepo.qml:54 #: ../qml/pages/settings/DeleteRepo.qml:56
msgid "You're are about to delete<br>the current Password Store.<br>Continue ?" msgid "You're are about to delete<br>the current Password Store.<br>Continue ?"
msgstr "" msgstr ""
#: ../qml/pages/settings/DeleteRepo.qml:55 #: ../qml/pages/settings/DeleteRepo.qml:57
#: ../qml/pages/settings/ImportZip.qml:66 #: ../qml/pages/settings/ImportZip.qml:64
#: ../qml/pages/settings/InfoKeys.qml:140 #: ../qml/pages/settings/InfoKeys.qml:170
#: ../qml/pages/settings/git/ImportGitClone.qml:55 #: ../qml/pages/settings/git/ImportGitClone.qml:56
msgid "Yes" msgid "Yes"
msgstr "" msgstr ""
#: ../qml/pages/settings/DeleteRepo.qml:68 #: ../qml/pages/settings/DeleteRepo.qml:70
msgid "Password Store removal failed !" msgid "Password Store removal failed !"
msgstr "" msgstr ""
#: ../qml/pages/settings/DeleteRepo.qml:77 #: ../qml/pages/settings/DeleteRepo.qml:79
msgid "Password Store deleted !" msgid "Password Store deleted !"
msgstr "" msgstr ""
#: ../qml/pages/settings/DeleteRepo.qml:89 #: ../qml/pages/settings/DeleteRepo.qml:91
#: ../qml/pages/settings/InfoKeys.qml:182 #: ../qml/pages/settings/InfoKeys.qml:212
msgid "Info Keys" msgid "Info Keys"
msgstr "" msgstr ""
#: ../qml/pages/settings/ImportKeyFile.qml:57 #: ../qml/pages/settings/ImportKeyFile.qml:59
msgid "Key import failed !" msgid "Key import failed !"
msgstr "" msgstr ""
#: ../qml/pages/settings/ImportKeyFile.qml:66 #: ../qml/pages/settings/ImportKeyFile.qml:68
msgid "Key successfully imported !" msgid "Key successfully imported !"
msgstr "" msgstr ""
#: ../qml/pages/settings/ImportKeyFile.qml:77 #: ../qml/pages/settings/ImportKeyFile.qml:79
msgid "GPG Key Import" msgid "GPG Key Import"
msgstr "" msgstr ""
#: ../qml/pages/settings/ImportZip.qml:65 #: ../qml/pages/settings/ImportZip.qml:63
msgid "" msgid ""
"Importing a new zip will delete<br>any existing password store!<br>Continue ?" "Importing a new zip will delete<br>any existing password store!<br>Continue ?"
msgstr "" msgstr ""
#: ../qml/pages/settings/ImportZip.qml:79 #: ../qml/pages/settings/ImportZip.qml:77
msgid "Password store import failed !" msgid "Password store import failed !"
msgstr "" msgstr ""
#: ../qml/pages/settings/ImportZip.qml:88 #: ../qml/pages/settings/ImportZip.qml:86
#: ../qml/pages/settings/git/ImportGitClone.qml:77 #: ../qml/pages/settings/git/ImportGitClone.qml:78
msgid "Password store sucessfully imported !" msgid "Password store sucessfully imported !"
msgstr "" msgstr ""
#: ../qml/pages/settings/ImportZip.qml:100 #: ../qml/pages/settings/ImportZip.qml:98
msgid "Zip Password Store Import" msgid "Zip Password Store Import"
msgstr "" msgstr ""
#: ../qml/pages/settings/InfoKeys.qml:56 #: ../qml/pages/settings/InfoKeys.qml:49
msgid "No key found"
msgstr ""
#: ../qml/pages/settings/InfoKeys.qml:85
msgid "Key ID :" msgid "Key ID :"
msgstr "" msgstr ""
#: ../qml/pages/settings/InfoKeys.qml:90 #: ../qml/pages/settings/InfoKeys.qml:120
msgid "Users IDs : " msgid "Users IDs : "
msgstr "" msgstr ""
#: ../qml/pages/settings/InfoKeys.qml:117 #: ../qml/pages/settings/InfoKeys.qml:147
msgid "Delete this key" msgid "Delete this key"
msgstr "" msgstr ""
#: ../qml/pages/settings/InfoKeys.qml:139 #: ../qml/pages/settings/InfoKeys.qml:169
msgid "You're are about to delete<br>%1.<br>Continue ?" msgid "You're are about to delete<br>%1.<br>Continue ?"
msgstr "" msgstr ""
#: ../qml/pages/settings/InfoKeys.qml:153 #: ../qml/pages/settings/InfoKeys.qml:183
msgid "Key removal failed !" msgid "Key removal failed !"
msgstr "" msgstr ""
#: ../qml/pages/settings/InfoKeys.qml:162 #: ../qml/pages/settings/InfoKeys.qml:192
msgid "Key successfully deleted !" msgid "Key successfully deleted !"
msgstr "" msgstr ""
#: ../qml/pages/settings/InfoKeys.qml:174 #: ../qml/pages/settings/InfoKeys.qml:204
msgid "An Error occured getting GPG keys !" msgid "An Error occured getting GPG keys !"
msgstr "" msgstr ""
@ -232,25 +236,26 @@ msgstr ""
msgid "Repo Url" msgid "Repo Url"
msgstr "" msgstr ""
#: ../qml/pages/settings/git/GitCloneHttp.qml:32 #: ../qml/pages/settings/git/GitCloneHttp.qml:40
#: ../qml/pages/settings/git/GitCloneHttpAuth.qml:50 #: ../qml/pages/settings/git/GitCloneHttpAuth.qml:60
msgid "Clone" msgid "Clone"
msgstr "" msgstr ""
#: ../qml/pages/settings/git/GitCloneHttpAuth.qml:33 #: ../qml/pages/settings/git/GitCloneHttpAuth.qml:35
#: ../qml/pages/settings/git/GitCloneHttpAuth.qml:46
msgid "Password" msgid "Password"
msgstr "" msgstr ""
#: ../qml/pages/settings/git/ImportGitClone.qml:54 #: ../qml/pages/settings/git/ImportGitClone.qml:55
msgid "" msgid ""
"Importing a git repo will delete<br>any existing password store!" "Importing a git repo will delete<br>any existing password store!"
"<br>Continue ?" "<br>Continue ?"
msgstr "" msgstr ""
#: ../qml/pages/settings/git/ImportGitClone.qml:68 #: ../qml/pages/settings/git/ImportGitClone.qml:69
msgid "An error occured during git clone !" msgid "An error occured during git clone !"
msgstr "" msgstr ""
#: ../qml/pages/settings/git/ImportGitClone.qml:89 #: ../qml/pages/settings/git/ImportGitClone.qml:90
msgid "Git Clone Import" msgid "Git Clone Import"
msgstr "" msgstr ""

View File

@ -21,12 +21,17 @@ MainView {
pop.activateFocus(); pop.activateFocus();
} }
objectName: "mainView" objectName: "mainView"
applicationName: "utpass.qrouland" applicationName: "utpass.qrouland"
automaticOrientation: true automaticOrientation: true
width: units.gu(45) width: units.gu(45)
height: units.gu(75) height: units.gu(75)
Component.onCompleted: {
myWorker.sendMessage("Hello World !")
}
PageStack { PageStack {
id: pageStack id: pageStack

View File

@ -5,17 +5,12 @@ import QtQuick 2.4
Dialog { Dialog {
id: dialog id: dialog
property string text
property string continueText: i18n.tr("Ok") property string continueText: i18n.tr("Ok")
property color continueColor: theme.palette.normal.positive property color continueColor: theme.palette.normal.positive
signal validated() signal validated()
signal canceled() signal canceled()
Text {
horizontalAlignment: Text.AlignHCenter
text: dialog.text
}
Button { Button {
id: continueButton id: continueButton

View File

@ -38,29 +38,34 @@ Page {
Rectangle { Rectangle {
width: parent.width width: parent.width
height: units.gu(1) height: units.gu(1)
color: theme.palette.normal.background
} }
Text { Text {
text: i18n.tr("No password found") text: i18n.tr("No password found")
width: parent.width width: parent.width
horizontalAlignment: Text.AlignHCenter horizontalAlignment: Text.AlignHCenter
color: theme.palette.normal.backgroundText
} }
Rectangle { Rectangle {
width: parent.width width: parent.width
height: units.gu(1) height: units.gu(1)
color: theme.palette.normal.background
} }
Text { Text {
text: i18n.tr("You can import a password store by cloning or") text: i18n.tr("You can import a password store by cloning or")
width: parent.width width: parent.width
horizontalAlignment: Text.AlignHCenter horizontalAlignment: Text.AlignHCenter
color: theme.palette.normal.backgroundText
} }
Text { Text {
text: i18n.tr("importing a password store zip in the settings") text: i18n.tr("importing a password store zip in the settings")
width: parent.width width: parent.width
horizontalAlignment: Text.AlignHCenter horizontalAlignment: Text.AlignHCenter
color: theme.palette.normal.backgroundText
} }
} }

View File

@ -29,9 +29,11 @@ Page {
anchors.rightMargin: units.gu(2) anchors.rightMargin: units.gu(2)
spacing: units.gu(1) spacing: units.gu(1)
Rectangle { Rectangle {
width: parent.width width: parent.width
height: units.gu(1) height: units.gu(1)
color: theme.palette.normal.background
} }
Button { Button {

View File

@ -29,12 +29,14 @@ Page {
console.log("Charged"); console.log("Charged");
console.log(importKeyFilePage.activeTransfer.items[0].url); console.log(importKeyFilePage.activeTransfer.items[0].url);
var status = Pass.importGPGKey(importKeyFilePage.activeTransfer.items[0].url); var status = Pass.importGPGKey(importKeyFilePage.activeTransfer.items[0].url);
Utils.rmFile(importKeyFilePage.activeTransfer.items[0].url); Pass.importGPGKeySucceed.connect(function() {
if (status) importKeyFilePage.activeTransfer = null;
PopupUtils.open(dialogImportKeyPageSucess); PopupUtils.open(dialogImportKeyPageSucess);
else });
Pass.importGPGKeyFailed.connect(function(message) {
importKeyFilePage.activeTransfer = null;
PopupUtils.open(dialogImportKeyPageError); PopupUtils.open(dialogImportKeyPageError);
importKeyFilePage.activeTransfer = null; });
} }
}); });
} }

View File

@ -13,16 +13,6 @@ Page {
property var activeTransfer property var activeTransfer
Component.onCompleted: { Component.onCompleted: {
Utils.unzipSucceed.connect(function() {
PopupUtils.open(dialogImportZipPageSuccess);
// Utils.rmFile(importZipPage.activeTransfer.items[0].url);
importZipPage.activeTransfer = null;
});
Utils.unzipFailed.connect(function(message) {
PopupUtils.open(dialogImportZipPageError);
// Utils.rmFile(importZipPage.activeTransfer.items[0].url);
importZipPage.activeTransfer = null;
});
PopupUtils.open(importZipPageImportValidation, importZipPage); PopupUtils.open(importZipPageImportValidation, importZipPage);
} }
@ -43,6 +33,14 @@ Page {
console.log("Charged"); console.log("Charged");
console.log(importZipPage.activeTransfer.items[0].url); console.log(importZipPage.activeTransfer.items[0].url);
var status = Utils.unzip(importZipPage.activeTransfer.items[0].url, Pass.getPasswordStore()); var status = Utils.unzip(importZipPage.activeTransfer.items[0].url, Pass.getPasswordStore());
Utils.unzipSucceed.connect(function() {
importZipPage.activeTransfer = null;
PopupUtils.open(dialogImportZipPageSuccess);
});
Utils.unzipFailed.connect(function(message) {
importZipPage.activeTransfer = null;
PopupUtils.open(dialogImportZipPageError);
});
} }
}); });
} }

View File

@ -8,12 +8,15 @@ import QtQuick 2.4
Page { Page {
id: infoKeysPage id: infoKeysPage
property list<QtObject> __keys
property QtObject currentKey property QtObject __currentKey
Component.onCompleted: { Component.onCompleted: {
Pass.getAllGPGKeysSucceed.connect(function(keys_info) { Pass.getAllGPGKeysSucceed.connect(function(keys_info) {
infoKeysListView.model = keys_info; infoKeysPage.__keys = keys_info;
for (var i = 0; i < keys_info.length; ++i) {
console.debug("is secret " + keys_info[i].isSecret)
}
}); });
Pass.getAllGPGKeysFailed.connect(function(message) { Pass.getAllGPGKeysFailed.connect(function(message) {
PopupUtils.open(infoKeysPageGetAllError); PopupUtils.open(infoKeysPageGetAllError);
@ -27,6 +30,30 @@ Page {
Pass.getAllGPGKeys(); Pass.getAllGPGKeys();
} }
Column {
anchors.top: infoKeysHeader.bottom
anchors.bottom: parent.bottom
anchors.right: parent.right
anchors.left: parent.left
anchors.leftMargin: units.gu(2)
anchors.rightMargin: units.gu(2)
visible: infoKeysPage.__keys.length === 0
Rectangle {
width: parent.width
height: units.gu(1)
color: theme.palette.normal.background
}
Text {
text: i18n.tr("No key found")
width: parent.width
horizontalAlignment: Text.AlignHCenter
color: theme.palette.normal.backgroundText
}
}
ListView { ListView {
id: infoKeysListView id: infoKeysListView
@ -36,6 +63,8 @@ Page {
anchors.left: parent.left anchors.left: parent.left
anchors.leftMargin: units.gu(2) anchors.leftMargin: units.gu(2)
anchors.rightMargin: units.gu(2) anchors.rightMargin: units.gu(2)
visible: infoKeysPage.__keys.length !== 0
model: infoKeysPage.__keys
delegate: Grid { delegate: Grid {
columns: 1 columns: 1
@ -79,6 +108,7 @@ Page {
userIdsModel.append({ userIdsModel.append({
"model": model.modelData.userIds[i] "model": model.modelData.userIds[i]
}); });
} }
} }
} }
@ -117,7 +147,7 @@ Page {
text: i18n.tr("Delete this key") text: i18n.tr("Delete this key")
color: theme.palette.normal.negative color: theme.palette.normal.negative
onClicked: { onClicked: {
infoKeysPage.currentKey = model.modelData; infoKeysPage.__currentKey = model.modelData;
PopupUtils.open(infoKeysPageDeleteValidation, infoKeysPage); PopupUtils.open(infoKeysPageDeleteValidation, infoKeysPage);
} }
} }
@ -136,11 +166,11 @@ Page {
id: infoKeysPageDeleteValidation id: infoKeysPageDeleteValidation
SimpleValidationDialog { SimpleValidationDialog {
text: i18n.tr("You're are about to delete<br>%1.<br>Continue ?").arg(infoKeysPage.currentKey.uid) text: i18n.tr("You're are about to delete<br>%1.<br>Continue ?").arg(infoKeysPage.__currentKey.uid)
continueText: i18n.tr("Yes") continueText: i18n.tr("Yes")
continueColor: theme.palette.normal.negative continueColor: theme.palette.normal.negative
onValidated: { onValidated: {
var status = Pass.deleteGPGKey(infoKeysPage.currentKey); var status = Pass.deleteGPGKey(infoKeysPage.__currentKey);
} }
} }

View File

@ -63,7 +63,7 @@ Page {
verticalAlignment: Text.AlignVCenter verticalAlignment: Text.AlignVCenter
width: parent.width width: parent.width
height: units.gu(4) height: units.gu(4)
color: LomiriColors.red color: theme.palette.normal.negative
text: i18n.tr('Warning: importing delete any exiting Password Store') text: i18n.tr('Warning: importing delete any exiting Password Store')
} }

View File

@ -14,6 +14,7 @@ Column {
verticalAlignment: Text.AlignVCenter verticalAlignment: Text.AlignVCenter
width: parent.width width: parent.width
text: i18n.tr('Repo Url') text: i18n.tr('Repo Url')
color: theme.palette.normal.backgroundText
} }
TextField { TextField {
@ -22,6 +23,13 @@ Column {
horizontalAlignment: Text.AlignHCenter horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter verticalAlignment: Text.AlignVCenter
width: parent.width width: parent.width
placeholderText: "http(s)://<hostname>"
}
Rectangle {
width: parent.width
height: units.gu(1)
color: theme.palette.normal.background
} }
Button { Button {

View File

@ -14,6 +14,7 @@ Column {
verticalAlignment: Text.AlignVCenter verticalAlignment: Text.AlignVCenter
width: parent.width width: parent.width
text: i18n.tr('Repo Url') text: i18n.tr('Repo Url')
color: theme.palette.normal.backgroundText
} }
TextField { TextField {
@ -22,6 +23,7 @@ Column {
horizontalAlignment: Text.AlignHCenter horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter verticalAlignment: Text.AlignVCenter
width: parent.width width: parent.width
placeholderText: "http(s)://<username>@<hostname>"
} }
Text { Text {
@ -31,6 +33,7 @@ Column {
verticalAlignment: Text.AlignVCenter verticalAlignment: Text.AlignVCenter
width: parent.width width: parent.width
text: i18n.tr('Password') text: i18n.tr('Password')
color: theme.palette.normal.backgroundText
} }
TextField { TextField {
@ -40,6 +43,13 @@ Column {
verticalAlignment: Text.AlignVCenter verticalAlignment: Text.AlignVCenter
width: parent.width width: parent.width
echoMode: TextInput.Password echoMode: TextInput.Password
placeholderText: i18n.tr('Password')
}
Rectangle {
width: parent.width
height: units.gu(1)
color: theme.palette.normal.background
} }
Button { Button {

View File

@ -33,6 +33,7 @@ Page {
Rectangle { Rectangle {
width: parent.width width: parent.width
height: units.gu(1) height: units.gu(1)
color: theme.palette.normal.background
} }
GitModeOptionSelector { GitModeOptionSelector {