27static const int passwordEntryVersion = 2;
31 stream << passwordEntryVersion;
47 if (version != passwordEntryVersion) {
68 m_backends[
QSL(
"database")] = m_databaseBackend;
69 m_backends[
QSL(
"database-encrypted")] = m_databaseEncryptedBackend;
76 QString backendId = settings.
value(
QSL(
"Backend"),
QSL(
"database")).toString();
82 m_backend = m_backends[m_backends.contains(backendId) ? backendId :
QSL(
"database")];
171 if (m_backends.contains(
id)) {
175 m_backends[id] = backend;
181 const QString key = m_backends.key(backend);
182 m_backends.remove(key);
184 if (m_backend == backend) {
185 m_backend = m_databaseBackend;
191 QString host = url.host();
193 if (host.isEmpty()) {
194 host = url.toString();
197 if (url.port() != -1) {
198 host.append(QLatin1Char(
':'));
199 host.append(QString::number(url.port()));
208 QByteArray encodedPass = QUrl::toPercentEncoding(password,
" ");
209 encodedPass.replace(
' ',
'+');
210 encodedPass.replace(
'~',
"%7E");
214void PasswordManager::ensureLoaded()
224 delete m_databaseBackend;
225 delete m_databaseEncryptedBackend;
virtual bool updateEntry(const PasswordEntry &entry)=0
virtual void addEntry(const PasswordEntry &entry)=0
virtual QVector< PasswordEntry > getAllEntries()=0
virtual void removeAll()=0
virtual QStringList getUsernames(const QUrl &url)
virtual void removeEntry(const PasswordEntry &entry)=0
virtual void updateLastUsed(PasswordEntry &entry)=0
virtual QVector< PasswordEntry > getEntries(const QUrl &url)=0
virtual void setActive(bool active)
bool updateEntry(const PasswordEntry &entry)
static QString createHost(const QUrl &url)
void switchBackend(const QString &backendID)
void removeEntry(const PasswordEntry &entry)
QStringList getUsernames(const QUrl &url)
static QByteArray urlEncodePassword(const QString &password)
bool registerBackend(const QString &id, PasswordBackend *backend)
void passwordBackendChanged()
PasswordManager(QObject *parent=nullptr)
void unregisterBackend(PasswordBackend *backend)
QVector< PasswordEntry > getEntries(const QUrl &url)
void updateLastUsed(PasswordEntry &entry)
PasswordBackend * activeBackend()
QVector< PasswordEntry > getAllEntries()
void addEntry(const PasswordEntry &entry)
QHash< QString, PasswordBackend * > availableBackends()
void beginGroup(const QString &prefix)
QVariant value(const QString &key, const QVariant &defaultValue=QVariant())
void setValue(const QString &key, const QVariant &defaultValue=QVariant())
QDataStream & operator>>(QDataStream &stream, PasswordEntry &entry)
QDataStream & operator<<(QDataStream &stream, const PasswordEntry &entry)