From 8968bf2e36ca17d18ffe4c333d349cd7557c058b Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Sun, 22 May 2011 19:32:37 +0200 Subject: [PATCH] use user roles instead of hidden columns for model sort/filter keys --- gui/include/addresstablemodel.h | 9 ++++++--- gui/include/transactiontablemodel.h | 7 +++++-- gui/src/addressbookdialog.cpp | 10 ++-------- gui/src/addresstablemodel.cpp | 5 +++-- gui/src/bitcoingui.cpp | 4 +--- gui/src/transactiontablemodel.cpp | 7 ++++--- 6 files changed, 21 insertions(+), 21 deletions(-) diff --git a/gui/include/addresstablemodel.h b/gui/include/addresstablemodel.h index 50ed80dd3..97780c542 100644 --- a/gui/include/addresstablemodel.h +++ b/gui/include/addresstablemodel.h @@ -10,11 +10,14 @@ public: explicit AddressTableModel(QObject *parent = 0); enum { - Label = 0, /* User specified label */ - Address = 1, /* Bitcoin address */ - Type = 2 /* Send/Receive, used for filter */ + Label = 0, /* User specified label */ + Address = 1 /* Bitcoin address */ } ColumnIndex; + enum { + TypeRole = Qt::UserRole + } RoleIndex; + static const QString Send; /* Send addres */ static const QString Receive; /* Receive address */ diff --git a/gui/include/transactiontablemodel.h b/gui/include/transactiontablemodel.h index 77ad73067..e86ab988c 100644 --- a/gui/include/transactiontablemodel.h +++ b/gui/include/transactiontablemodel.h @@ -15,10 +15,13 @@ public: Date = 1, Description = 2, Debit = 3, - Credit = 4, - Type = 5 + Credit = 4 } ColumnIndex; + enum { + TypeRole = Qt::UserRole + } RoleIndex; + /* Transaction type */ static const QString Sent; static const QString Received; diff --git a/gui/src/addressbookdialog.cpp b/gui/src/addressbookdialog.cpp index 9ad18f1cd..4ca863bd2 100644 --- a/gui/src/addressbookdialog.cpp +++ b/gui/src/addressbookdialog.cpp @@ -29,8 +29,7 @@ void AddressBookDialog::setModel(AddressTableModel *model) QSortFilterProxyModel *receive_model = new QSortFilterProxyModel(this); receive_model->setSourceModel(model); receive_model->setDynamicSortFilter(true); - receive_model->setFilterRole(Qt::UserRole); - receive_model->setFilterKeyColumn(AddressTableModel::Type); + receive_model->setFilterRole(AddressTableModel::TypeRole); receive_model->setFilterFixedString(AddressTableModel::Receive); ui->receiveTableView->setModel(receive_model); @@ -38,8 +37,7 @@ void AddressBookDialog::setModel(AddressTableModel *model) QSortFilterProxyModel *send_model = new QSortFilterProxyModel(this); send_model->setSourceModel(model); send_model->setDynamicSortFilter(true); - send_model->setFilterRole(Qt::UserRole); - send_model->setFilterKeyColumn(AddressTableModel::Type); + send_model->setFilterRole(AddressTableModel::TypeRole); send_model->setFilterFixedString(AddressTableModel::Send); ui->sendTableView->setModel(send_model); @@ -52,10 +50,6 @@ void AddressBookDialog::setModel(AddressTableModel *model) AddressTableModel::Address, 320); ui->sendTableView->horizontalHeader()->setResizeMode( AddressTableModel::Label, QHeaderView::Stretch); - - /* Hide "Type" column in both views as it is only used for filtering */ - ui->receiveTableView->setColumnHidden(AddressTableModel::Type, true); - ui->sendTableView->setColumnHidden(AddressTableModel::Type, true); } void AddressBookDialog::setTab(int tab) diff --git a/gui/src/addresstablemodel.cpp b/gui/src/addresstablemodel.cpp index d985bcee3..9a72cd972 100644 --- a/gui/src/addresstablemodel.cpp +++ b/gui/src/addresstablemodel.cpp @@ -1,4 +1,5 @@ #include "addresstablemodel.h" +#include "main.h" const QString AddressTableModel::Send = "S"; const QString AddressTableModel::Receive = "R"; @@ -16,7 +17,7 @@ int AddressTableModel::rowCount(const QModelIndex &parent) const int AddressTableModel::columnCount(const QModelIndex &parent) const { - return 3; + return 2; } QVariant AddressTableModel::data(const QModelIndex &index, int role) const @@ -32,7 +33,7 @@ QVariant AddressTableModel::data(const QModelIndex &index, int role) const return "1PC9aZC4hNX2rmmrt7uHTfYAS3hRbph4UN" + QString::number(index.row()); else return "Description"; - } else if (role == Qt::UserRole) + } else if (role == TypeRole) { switch(index.row() % 2) { diff --git a/gui/src/bitcoingui.cpp b/gui/src/bitcoingui.cpp index 5546a0ecf..168dffd7c 100644 --- a/gui/src/bitcoingui.cpp +++ b/gui/src/bitcoingui.cpp @@ -193,8 +193,7 @@ QWidget *BitcoinGUI::createTabs() QSortFilterProxyModel *proxy_model = new QSortFilterProxyModel(this); proxy_model->setSourceModel(transaction_model); proxy_model->setDynamicSortFilter(true); - proxy_model->setFilterRole(Qt::UserRole); - proxy_model->setFilterKeyColumn(TransactionTableModel::Type); + proxy_model->setFilterRole(TransactionTableModel::TypeRole); proxy_model->setFilterRegExp(QRegExp(tab_filters.at(i))); QTableView *transaction_table = new QTableView(this); @@ -213,7 +212,6 @@ QWidget *BitcoinGUI::createTabs() TransactionTableModel::Debit, 79); transaction_table->horizontalHeader()->resizeSection( TransactionTableModel::Credit, 79); - transaction_table->setColumnHidden(TransactionTableModel::Type, true); tabs->addTab(transaction_table, tab_labels.at(i)); } diff --git a/gui/src/transactiontablemodel.cpp b/gui/src/transactiontablemodel.cpp index ee58ecba4..0f16a3faf 100644 --- a/gui/src/transactiontablemodel.cpp +++ b/gui/src/transactiontablemodel.cpp @@ -1,4 +1,5 @@ #include "transactiontablemodel.h" +#include "main.h" #include @@ -19,13 +20,13 @@ static int column_alignments[] = { TransactionTableModel::TransactionTableModel(QObject *parent): QAbstractTableModel(parent) { - columns << tr("Status") << tr("Date") << tr("Description") << tr("Debit") << tr("Credit") << tr("Type"); + columns << tr("Status") << tr("Date") << tr("Description") << tr("Debit") << tr("Credit"); } int TransactionTableModel::rowCount(const QModelIndex &parent) const { Q_UNUSED(parent); - return 5; + return 4; } int TransactionTableModel::columnCount(const QModelIndex &parent) const @@ -47,7 +48,7 @@ QVariant TransactionTableModel::data(const QModelIndex &index, int role) const } else if (role == Qt::TextAlignmentRole) { return column_alignments[index.column()]; - } else if (role == Qt::UserRole) + } else if (role == TypeRole) { /* user role: transaction type for filtering "s" (sent)