From f8f52419c873f19e5ebda02a325d1882ef55a576 Mon Sep 17 00:00:00 2001 From: Felix Geyer Date: Wed, 2 May 2012 10:30:30 +0200 Subject: [PATCH] Turn EntryAttachmentsModel into a QAbstractListModel. --- src/gui/EntryAttachmentsModel.cpp | 42 +++++++++++++------------------ src/gui/EntryAttachmentsModel.h | 6 ++--- tests/TestEntryModel.cpp | 2 +- 3 files changed, 21 insertions(+), 29 deletions(-) diff --git a/src/gui/EntryAttachmentsModel.cpp b/src/gui/EntryAttachmentsModel.cpp index 0e94fab26..d627d2874 100644 --- a/src/gui/EntryAttachmentsModel.cpp +++ b/src/gui/EntryAttachmentsModel.cpp @@ -21,7 +21,7 @@ #include "core/Tools.h" EntryAttachmentsModel::EntryAttachmentsModel(QObject* parent) - : QAbstractTableModel(parent) + : QAbstractListModel(parent) , m_entryAttachments(0) { } @@ -63,21 +63,7 @@ int EntryAttachmentsModel::columnCount(const QModelIndex& parent) const { Q_UNUSED(parent); - return 2; -} - -QVariant EntryAttachmentsModel::headerData(int section, Qt::Orientation orientation, int role) const -{ - if ((orientation == Qt::Horizontal) && (role == Qt::DisplayRole)) { - switch (section) { - case 0: - return tr("Name"); - case 1: - return tr("Size"); - } - } - - return QVariant(); + return 1; } QVariant EntryAttachmentsModel::data(const QModelIndex& index, int role) const @@ -86,18 +72,24 @@ QVariant EntryAttachmentsModel::data(const QModelIndex& index, int role) const return QVariant(); } - if (role == Qt::DisplayRole) { - QString key = m_entryAttachments->keys().at(index.row()); + if (role == Qt::DisplayRole && index.column() == 0) { + QString key = keyByIndex(index); - if (index.column() == 0) { - return key; - } - else { - return Tools::humanReadableFileSize(m_entryAttachments->value(key).size()); - } + return QString("%1 (%2)").arg(key, + Tools::humanReadableFileSize(m_entryAttachments->value(key).size())); + } + else { + return QVariant(); + } +} + +QString EntryAttachmentsModel::keyByIndex(const QModelIndex& index) const +{ + if (!index.isValid()) { + return QString(); } - return QVariant(); + return m_entryAttachments->keys().at(index.row()); } void EntryAttachmentsModel::attachmentChange(const QString& key) diff --git a/src/gui/EntryAttachmentsModel.h b/src/gui/EntryAttachmentsModel.h index 162030a2c..5501bd87a 100644 --- a/src/gui/EntryAttachmentsModel.h +++ b/src/gui/EntryAttachmentsModel.h @@ -18,11 +18,11 @@ #ifndef KEEPASSX_ENTRYATTACHMENTSMODEL_H #define KEEPASSX_ENTRYATTACHMENTSMODEL_H -#include +#include class EntryAttachments; -class EntryAttachmentsModel : public QAbstractTableModel +class EntryAttachmentsModel : public QAbstractListModel { Q_OBJECT @@ -31,8 +31,8 @@ public: void setEntryAttachments(EntryAttachments* entry); int rowCount(const QModelIndex& parent = QModelIndex()) const; int columnCount(const QModelIndex& parent = QModelIndex()) const; - QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const; + QString keyByIndex(const QModelIndex& index) const; private Q_SLOTS: void attachmentChange(const QString& key); diff --git a/tests/TestEntryModel.cpp b/tests/TestEntryModel.cpp index 2913c22e9..f9ebf1155 100644 --- a/tests/TestEntryModel.cpp +++ b/tests/TestEntryModel.cpp @@ -117,7 +117,7 @@ void TestEntryModel::testAttachmentsModel() entryAttachments->set("2nd", QByteArray("456")); entryAttachments->set("2nd", QByteArray("789")); - QCOMPARE(model->data(model->index(0, 0)).toString(), QString("2nd")); + QCOMPARE(model->data(model->index(0, 0)).toString().left(4), QString("2nd ")); entryAttachments->remove("first");