sailfish-safe

Sailfish frontend for safe(1)
git clone git://git.z3bra.org/sailfish-safe.git
Log | Files | Refs | README | LICENSE

NewPasswordDialog.qml (2935B)


      1 /*
      2  *   Copyright (C) 2019  Daniel Vrátil <dvratil@kde.org>
      3  *
      4  *   This program is free software: you can redistribute it and/or modify
      5  *   it under the terms of the GNU General Public License as published by
      6  *   the Free Software Foundation, either version 3 of the License, or
      7  *   (at your option) any later version.
      8  *
      9  *   This program is distributed in the hope that it will be useful,
     10  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
     11  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     12  *   GNU General Public License for more details.
     13  *
     14  *   You should have received a copy of the GNU General Public License
     15  *   along with this program.  If not, see <https://www.gnu.org/licenses/>.
     16  */
     17 
     18 import QtQuick 2.2
     19 import QtQml.Models 2.2
     20 import Sailfish.Silica 1.0
     21 import harbour.safe 0.1
     22 
     23 Dialog {
     24     id: newPasswordDialog
     25 
     26     property var model
     27     property var currentIndex
     28 
     29     canAccept: nameField.text !== "" && passwordField.text !== ""
     30 
     31     onAccepted: {
     32         model.addPassword(currentIndex, nameField.text, passwordField.text, extrasField.text)
     33     }
     34 
     35     DialogHeader {
     36         id: header
     37         width: parent.width
     38     }
     39 
     40     SilicaFlickable {
     41         id: flickable
     42 
     43         anchors {
     44             top: header.bottom
     45             left: parent.left
     46             right: parent.right
     47             bottom: parent.bottom
     48         }
     49 
     50         clip: true
     51         contentHeight: column.height
     52 
     53         Column {
     54             id: column
     55 
     56             anchors {
     57                 left: parent.left
     58                 right: parent.right
     59                 leftMargin: Theme.horizontalPageMargin
     60                 rightMargin: Theme.horizontalPageMargin
     61             }
     62 
     63             spacing: Theme.paddingMedium
     64 
     65             Label {
     66                 text: qsTr("Name:")
     67                 width: parent.width
     68             }
     69 
     70             TextField {
     71                 id: nameField
     72                 width: parent.width
     73             }
     74 
     75             Label {
     76                 text: qsTr("Password:")
     77                 width: parent.width
     78             }
     79 
     80             PasswordField {
     81                 id: passwordField
     82                 width: parent.width
     83             }
     84 
     85             Button {
     86                 id: generatePassButton
     87                 width: parent.width
     88                 text: qsTr("Generate Password")
     89 
     90                 onClicked: app.pageStack.push(genPassDialog)
     91             }
     92 
     93             Label {
     94                 text: qsTr("Additional Info:")
     95                 width: parent.width
     96             }
     97 
     98             TextArea {
     99                 id: extrasField
    100                 width: parent.width
    101             }
    102         }
    103 
    104 
    105         HorizontalScrollDecorator {
    106             flickable: parent
    107         }
    108     }
    109 
    110     Component {
    111         id: genPassDialog
    112 
    113         GeneratePasswordDialog {
    114             onAccepted: {
    115                 passwordField.text = PasswordGenerator.generate(passLen, allowSymbols)
    116             }
    117         }
    118     }
    119 }