keysmith/src/model/password.h

52 lines
1.7 KiB
C++

/*
* SPDX-License-Identifier: GPL-3.0-or-later
* SPDX-FileCopyrightText: 2020 Johan Ouwerkerk <jm.ouwerkerk@gmail.com>
*/
#ifndef MODEL_PASSWORD_H
#define MODEL_PASSWORD_H
#include "../account/keys.h"
namespace model
{
class PasswordRequest: public QObject
{
Q_OBJECT
Q_PROPERTY(bool firstRun READ firstRun NOTIFY passwordRequestChanged)
Q_PROPERTY(bool previouslyDefined READ previouslyDefined NOTIFY passwordRequestChanged)
Q_PROPERTY(bool keyAvailable READ keyAvailable NOTIFY passwordAccepted)
Q_PROPERTY(bool passwordProvided READ passwordProvided NOTIFY passwordStateChanged)
public:
explicit PasswordRequest(accounts::AccountSecret *secret, QObject *parent = nullptr);
bool firstRun(void) const;
bool previouslyDefined(void) const;
bool keyAvailable(void) const;
bool passwordProvided(void) const;
public:
Q_INVOKABLE bool providePassword(QString password);
Q_INVOKABLE bool provideBothPasswords(QString password, QString other);
Q_SIGNALS:
void passwordRequestChanged(void);
void passwordExists(void);
void newPasswordNeeded(void);
void passwordAccepted(void);
void passwordRejected(void);
void passwordStateChanged(void);
private Q_SLOTS:
void setKeyAvailable(void);
void setPasswordAvailable(void);
void setPasswordRejected(void);
void setPreviouslyDefined(void);
void setNewPasswordNeeded(void);
private:
accounts::AccountSecret * m_secret;
private:
bool m_firstRun;
bool m_previous;
bool m_haveKey;
bool m_havePassword;
};
}
#endif