Skip to content
Snippets Groups Projects
Select Git revision
  • e8f77e2d3de96f9c229c94732afe884c9736cd24
  • master default protected
  • release/202005
  • release/202001
  • release/201912
  • release/201911
  • release/releaseWindowsTestOne
  • release/windowsReleaseTest
  • release/releaseTest
  • release/releaseWindowsTest
  • release/201910
  • release/qt/201910
  • release/windows-test/201910
  • release/201908
  • release/201906
  • release/201905
  • release/201904
  • release/201903
  • release/201902
  • release/201901
  • release/201812
  • 4.0.0
  • 2.2.0
  • 2.1.0
  • 2.0.1
  • 2.0.0
  • 1.4.1
  • 1.4.0
  • 1.3.0
  • 1.2.0
  • 1.1.0
31 results

CallView.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("");
        }
    }