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
+
+
+
-