AutoType: resolve placeholders in window associations list

This commit is contained in:
frostasm 2017-10-06 18:22:59 +03:00
parent 1f5a0c0130
commit b6387f7709
3 changed files with 19 additions and 2 deletions

View file

@ -17,9 +17,12 @@
#include "AutoTypeAssociationsModel.h" #include "AutoTypeAssociationsModel.h"
#include "core/Entry.h"
AutoTypeAssociationsModel::AutoTypeAssociationsModel(QObject* parent) AutoTypeAssociationsModel::AutoTypeAssociationsModel(QObject* parent)
: QAbstractListModel(parent) : QAbstractListModel(parent)
, m_autoTypeAssociations(nullptr) , m_autoTypeAssociations(nullptr)
, m_entry(nullptr)
{ {
} }
@ -46,6 +49,11 @@ void AutoTypeAssociationsModel::setAutoTypeAssociations(AutoTypeAssociations* au
endResetModel(); endResetModel();
} }
void AutoTypeAssociationsModel::setEntry(const Entry *entry)
{
m_entry = entry;
}
int AutoTypeAssociationsModel::rowCount(const QModelIndex& parent) const int AutoTypeAssociationsModel::rowCount(const QModelIndex& parent) const
{ {
if (!m_autoTypeAssociations || parent.isValid()) { if (!m_autoTypeAssociations || parent.isValid()) {
@ -86,7 +94,12 @@ QVariant AutoTypeAssociationsModel::data(const QModelIndex& index, int role) con
if (role == Qt::DisplayRole) { if (role == Qt::DisplayRole) {
if (index.column() == 0) { if (index.column() == 0) {
return m_autoTypeAssociations->get(index.row()).window; QString window = m_autoTypeAssociations->get(index.row()).window;
if (m_entry) {
window = m_entry->maskPasswordPlaceholders(window);
window = m_entry->resolveMultiplePlaceholders(window);
}
return window;
} }
else { else {
QString sequence = m_autoTypeAssociations->get(index.row()).sequence; QString sequence = m_autoTypeAssociations->get(index.row()).sequence;

View file

@ -19,10 +19,11 @@
#define KEEPASSX_AUTOTYPEASSOCIATIONSMODEL_H #define KEEPASSX_AUTOTYPEASSOCIATIONSMODEL_H
#include <QAbstractListModel> #include <QAbstractListModel>
#include <QPointer>
#include "core/AutoTypeAssociations.h" #include "core/AutoTypeAssociations.h"
class EntryAttributes; class Entry;
class AutoTypeAssociationsModel : public QAbstractListModel class AutoTypeAssociationsModel : public QAbstractListModel
{ {
@ -31,6 +32,7 @@ class AutoTypeAssociationsModel : public QAbstractListModel
public: public:
explicit AutoTypeAssociationsModel(QObject* parent = nullptr); explicit AutoTypeAssociationsModel(QObject* parent = nullptr);
void setAutoTypeAssociations(AutoTypeAssociations* autoTypeAssociations); void setAutoTypeAssociations(AutoTypeAssociations* autoTypeAssociations);
void setEntry(const Entry* entry);
int rowCount(const QModelIndex& parent = QModelIndex()) const override; int rowCount(const QModelIndex& parent = QModelIndex()) const override;
int columnCount(const QModelIndex& parent = QModelIndex()) const override; int columnCount(const QModelIndex& parent = QModelIndex()) const override;
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
@ -47,6 +49,7 @@ public slots:
private: private:
AutoTypeAssociations* m_autoTypeAssociations; AutoTypeAssociations* m_autoTypeAssociations;
QPointer<const Entry> m_entry;
}; };
#endif // KEEPASSX_AUTOTYPEASSOCIATIONSMODEL_H #endif // KEEPASSX_AUTOTYPEASSOCIATIONSMODEL_H

View file

@ -378,6 +378,7 @@ void EditEntryWidget::setForms(const Entry* entry, bool restore)
m_autoTypeUi->defaultWindowSequenceButton->setChecked(true); m_autoTypeUi->defaultWindowSequenceButton->setChecked(true);
m_autoTypeUi->windowSequenceEdit->setText(""); m_autoTypeUi->windowSequenceEdit->setText("");
m_autoTypeAssoc->copyDataFrom(entry->autoTypeAssociations()); m_autoTypeAssoc->copyDataFrom(entry->autoTypeAssociations());
m_autoTypeAssocModel->setEntry(entry);
if (m_autoTypeAssoc->size() != 0) { if (m_autoTypeAssoc->size() != 0) {
m_autoTypeUi->assocView->setCurrentIndex(m_autoTypeAssocModel->index(0, 0)); m_autoTypeUi->assocView->setCurrentIndex(m_autoTypeAssocModel->index(0, 0));
} }