diff --git a/src/lib/autofill/passwordbackends/passwordbackend.cpp b/src/lib/autofill/passwordbackends/passwordbackend.cpp index 44632c7cb..9b9ea0edf 100644 --- a/src/lib/autofill/passwordbackends/passwordbackend.cpp +++ b/src/lib/autofill/passwordbackends/passwordbackend.cpp @@ -31,3 +31,13 @@ bool PasswordBackend::isActive() const { return m_active; } + +bool PasswordBackend::hasSettings() const +{ + return false; +} + +void PasswordBackend::showSettings(QWidget* parent) +{ + Q_UNUSED(parent) +} diff --git a/src/lib/autofill/passwordbackends/passwordbackend.h b/src/lib/autofill/passwordbackends/passwordbackend.h index fb8f8523a..41de23b02 100644 --- a/src/lib/autofill/passwordbackends/passwordbackend.h +++ b/src/lib/autofill/passwordbackends/passwordbackend.h @@ -20,6 +20,8 @@ #include "passwordmanager.h" +class QWidget; + class PasswordBackend { public: @@ -41,6 +43,9 @@ public: virtual void setActive(bool active); bool isActive() const; + virtual bool hasSettings() const; + virtual void showSettings(QWidget* parent); + private: bool m_active; }; diff --git a/src/lib/preferences/autofillmanager.cpp b/src/lib/preferences/autofillmanager.cpp index 2dee6b40d..c64f93e25 100644 --- a/src/lib/preferences/autofillmanager.cpp +++ b/src/lib/preferences/autofillmanager.cpp @@ -34,6 +34,7 @@ AutoFillManager::AutoFillManager(QWidget* parent) : QWidget(parent) , ui(new Ui::AutoFillManager) + , m_passwordManager(mApp->autoFill()->passwordManager()) , m_passwordsShown(false) { ui->setupUi(this); @@ -44,6 +45,7 @@ AutoFillManager::AutoFillManager(QWidget* parent) connect(ui->showPasswords, SIGNAL(clicked()), this, SLOT(showPasswords())); connect(ui->search, SIGNAL(textChanged(QString)), ui->treePass, SLOT(filterString(QString))); connect(ui->changeBackend, SIGNAL(clicked()), this, SLOT(changePasswordBackend())); + connect(ui->backendOptions, SIGNAL(clicked()), this, SLOT(showBackendOptions())); connect(ui->removeExcept, SIGNAL(clicked()), this, SLOT(removeExcept())); connect(ui->removeAllExcept, SIGNAL(clicked()), this, SLOT(removeAllExcept())); @@ -56,7 +58,8 @@ AutoFillManager::AutoFillManager(QWidget* parent) ui->search->setPlaceholderText(tr("Search")); // Password backends - ui->currentBackend->setText(QString("%1").arg(mApp->autoFill()->passwordManager()->activeBackend()->name())); + ui->currentBackend->setText(QString("%1").arg(m_passwordManager->activeBackend()->name())); + ui->backendOptions->setVisible(m_passwordManager->activeBackend()->hasSettings()); // Load passwords QTimer::singleShot(0, this, SLOT(loadPasswords())); @@ -98,13 +101,13 @@ void AutoFillManager::loadPasswords() void AutoFillManager::changePasswordBackend() { - QHash backends = mApp->autoFill()->passwordManager()->availableBackends(); + QHash backends = m_passwordManager->availableBackends(); QStringList items; int current = 0; foreach (const QString &key, backends.keys()) { - if (backends[key] == mApp->autoFill()->passwordManager()->activeBackend()) { + if (backends[key] == m_passwordManager->activeBackend()) { current = items.size(); } @@ -128,12 +131,24 @@ void AutoFillManager::changePasswordBackend() settings.endGroup(); - mApp->autoFill()->passwordManager()->switchBackend(backend); + if (backend) { + m_passwordManager->switchBackend(backend); + ui->backendOptions->setVisible(backend); + } } QTimer::singleShot(0, this, SLOT(loadPasswords())); } +void AutoFillManager::showBackendOptions() +{ + PasswordBackend* backend = m_passwordManager->activeBackend(); + + if (backend->hasSettings()) { + backend->showSettings(this); + } +} + void AutoFillManager::showPasswords() { if (m_passwordsShown) { diff --git a/src/lib/preferences/autofillmanager.h b/src/lib/preferences/autofillmanager.h index b626a6af9..8bb5b7d5b 100644 --- a/src/lib/preferences/autofillmanager.h +++ b/src/lib/preferences/autofillmanager.h @@ -22,6 +22,8 @@ #include "qz_namespace.h" +class PasswordManager; + namespace Ui { class AutoFillManager; @@ -40,6 +42,7 @@ public: private slots: void loadPasswords(); void changePasswordBackend(); + void showBackendOptions(); void removePass(); void removeAllPass(); @@ -55,6 +58,7 @@ private slots: private: Ui::AutoFillManager* ui; + PasswordManager* m_passwordManager; bool m_passwordsShown; }; diff --git a/src/lib/preferences/autofillmanager.ui b/src/lib/preferences/autofillmanager.ui index 46471fd78..f6ce29623 100644 --- a/src/lib/preferences/autofillmanager.ui +++ b/src/lib/preferences/autofillmanager.ui @@ -36,6 +36,13 @@ + + + + Backend options + + +