Skip to content
Snippets Groups Projects
Select Git revision
  • 2afd2bfeb3ddfca2b22124be9f9d90c615fd0ed5
  • master default protected
  • release/202005
  • release/202001
  • release/201912
  • release/201911
  • release/201910
  • release/201908
  • release/201906
  • release/201905
  • release/201904
  • release/201903
  • release/201902
  • release/201901
  • release/201812
  • release/201811
  • release/201808
  • releases/beta1
  • packaging
  • native
  • release-0.2.x
  • 1.0.0
  • 0.2.0
  • 0.1.1
  • 0.1.0
25 results

aboutdialog.cpp

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    passworddialog.cpp 4.08 KiB
    /**************************************************************************
    * Copyright (C) 2018 by Savoir-faire Linux                           *
    * Author: Isa Nanic <isa.nanic@savoirfairelinux.com>                      *
    *                                                                         *
    * This program is free software; you can redistribute it and/or modify    *
    * it under the terms of the GNU General Public License as published by    *
    * the Free Software Foundation; either version 3 of the License, or       *
    * (at your option) any later version.                                     *
    *                                                                         *
    * This program is distributed in the hope that it will be useful,         *
    * but WITHOUT ANY WARRANTY; without even the implied warranty of          *
    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           *
    * GNU General Public License for more details.                            *
    *                                                                         *
    * You should have received a copy of the GNU General Public License       *
    * along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
    **************************************************************************/
    #include <QTimer>
    
    #include "passworddialog.h"
    #include "ui_passworddialog.h"
    
    #include "lrcinstance.h"
    
    PasswordDialog::PasswordDialog(QWidget* parent)
        :ui(new Ui::PasswordDialog),
        QDialog(parent)
    {
        ui->setupUi(this);
    
        ui->currentPsswdEdit->setEchoMode(QLineEdit::Password);
        ui->newPsswdEdit->setEchoMode(QLineEdit::Password);
        ui->confirmNewPsswdEdit->setEchoMode(QLineEdit::Password);
    
        if (!LRCInstance::getCurrAccConfig().archiveHasPassword) {
            ui->currentPsswdEdit->hide();
        } else {
            ui->currentPsswdEdit->show();
        }
    
        connect(ui->currentPsswdEdit, &QLineEdit::textChanged, this, &PasswordDialog::validateNewPsswd);
        connect(ui->newPsswdEdit, &QLineEdit::textChanged, this, &PasswordDialog::validateNewPsswd);
        connect(ui->confirmNewPsswdEdit, &QLineEdit::textChanged, this, &PasswordDialog::validateNewPsswd);
    
        connect(ui->confirmButton, &QPushButton::clicked, [=]() {
            savePassword();
            }
        );
    
        connect(ui->cancelButton, &QPushButton::clicked, this, &PasswordDialog::closeSlot);
    
        ui->confirmButton->setEnabled(false);
    }
    
    PasswordDialog::~PasswordDialog()
    {
        delete ui;
    }
    
    // only sets new password if both new passwords match
    void
    PasswordDialog::validateNewPsswd()
    {
        ui->newPsswdEdit->setStyleSheet("border: 1px solid red;");
        ui->confirmNewPsswdEdit->setStyleSheet("border: 1px solid red;");
    
        if (ui->newPsswdEdit->text() == ui->confirmNewPsswdEdit->text()) {
            ui->newPsswdEdit->setStyleSheet("border: 1px solid green;");
            ui->confirmNewPsswdEdit->setStyleSheet("border: 1px solid green;");
        }
        freeConfirmButton();
    }
    
    void
    PasswordDialog::freeConfirmButton()
    {
        if (ui->newPsswdEdit->text() == ui->confirmNewPsswdEdit->text()) {
            ui->confirmButton->setEnabled(true);
        }
        else {
            ui->confirmButton->setEnabled(false);
        }
    }
    
    void
    PasswordDialog::savePassword()
    {
        if (LRCInstance::editableAccountModel()->changeAccountPassword(LRCInstance::getCurrAccId(),
            ui->currentPsswdEdit->text().toStdString(), ui->newPsswdEdit->text().toStdString())) {
            ui->userMessageLabel->setText(tr("Password Changed Successfully"));
    
            auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
            ui->newPsswdEdit->text().isEmpty() ? confProps.archiveHasPassword = false : confProps.archiveHasPassword = true;
            LRCInstance::editableAccountModel()->setAccountConfig(LRCInstance::getCurrAccId(), confProps);
    
            ui->cancelButton->hide();
            ui->confirmButton->hide();
            ui->currentPsswdEdit->hide();
            ui->newPsswdEdit->hide();
            ui->confirmNewPsswdEdit->hide();
    
            QTimer::singleShot(900, this, SLOT(closeSlot()));
        }
        else {
            ui->userMessageLabel->setText(tr("Current Password Incorrect"));
            ui->currentPsswdEdit->setText("");
        }
    }