Changeset View
Changeset View
Standalone View
Standalone View
src/qt/addressbookpage.cpp
Show All 15 Lines | |||||
#include <qt/guiutil.h> | #include <qt/guiutil.h> | ||||
#include <qt/platformstyle.h> | #include <qt/platformstyle.h> | ||||
#include <QIcon> | #include <QIcon> | ||||
#include <QMenu> | #include <QMenu> | ||||
#include <QMessageBox> | #include <QMessageBox> | ||||
#include <QSortFilterProxyModel> | #include <QSortFilterProxyModel> | ||||
class AddressBookSortFilterProxyModel final : public QSortFilterProxyModel { | |||||
const QString m_type; | |||||
public: | |||||
AddressBookSortFilterProxyModel(const QString &type, QObject *parent) | |||||
: QSortFilterProxyModel(parent), m_type(type) { | |||||
setDynamicSortFilter(true); | |||||
setFilterCaseSensitivity(Qt::CaseInsensitive); | |||||
setSortCaseSensitivity(Qt::CaseInsensitive); | |||||
} | |||||
protected: | |||||
bool filterAcceptsRow(int row, const QModelIndex &parent) const { | |||||
auto model = sourceModel(); | |||||
auto label = model->index(row, AddressTableModel::Label, parent); | |||||
if (model->data(label, AddressTableModel::TypeRole).toString() != | |||||
m_type) { | |||||
return false; | |||||
} | |||||
auto address = model->index(row, AddressTableModel::Address, parent); | |||||
if (filterRegExp().indexIn(model->data(address).toString()) < 0 && | |||||
filterRegExp().indexIn(model->data(label).toString()) < 0) { | |||||
return false; | |||||
} | |||||
return true; | |||||
} | |||||
}; | |||||
AddressBookPage::AddressBookPage(const PlatformStyle *platformStyle, Mode _mode, | AddressBookPage::AddressBookPage(const PlatformStyle *platformStyle, Mode _mode, | ||||
Tabs _tab, QWidget *parent) | Tabs _tab, QWidget *parent) | ||||
: QDialog(parent), ui(new Ui::AddressBookPage), model(0), mode(_mode), | : QDialog(parent), ui(new Ui::AddressBookPage), model(0), mode(_mode), | ||||
tab(_tab) { | tab(_tab) { | ||||
ui->setupUi(this); | ui->setupUi(this); | ||||
if (!platformStyle->getImagesOnButtons()) { | if (!platformStyle->getImagesOnButtons()) { | ||||
ui->newAddress->setIcon(QIcon()); | ui->newAddress->setIcon(QIcon()); | ||||
▲ Show 20 Lines • Show All 92 Lines • ▼ Show 20 Lines | |||||
} | } | ||||
void AddressBookPage::setModel(AddressTableModel *_model) { | void AddressBookPage::setModel(AddressTableModel *_model) { | ||||
this->model = _model; | this->model = _model; | ||||
if (!_model) { | if (!_model) { | ||||
return; | return; | ||||
} | } | ||||
proxyModel = new QSortFilterProxyModel(this); | auto type = tab == ReceivingTab ? AddressTableModel::Receive | ||||
: AddressTableModel::Send; | |||||
proxyModel = new AddressBookSortFilterProxyModel(type, this); | |||||
proxyModel->setSourceModel(_model); | proxyModel->setSourceModel(_model); | ||||
proxyModel->setDynamicSortFilter(true); | |||||
proxyModel->setSortCaseSensitivity(Qt::CaseInsensitive); | connect(ui->searchLineEdit, SIGNAL(textChanged(QString)), proxyModel, | ||||
proxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive); | SLOT(setFilterWildcard(QString))); | ||||
switch (tab) { | |||||
case ReceivingTab: | |||||
// Receive filter | |||||
proxyModel->setFilterRole(AddressTableModel::TypeRole); | |||||
proxyModel->setFilterFixedString(AddressTableModel::Receive); | |||||
break; | |||||
case SendingTab: | |||||
// Send filter | |||||
proxyModel->setFilterRole(AddressTableModel::TypeRole); | |||||
proxyModel->setFilterFixedString(AddressTableModel::Send); | |||||
break; | |||||
} | |||||
ui->tableView->setModel(proxyModel); | ui->tableView->setModel(proxyModel); | ||||
ui->tableView->sortByColumn(0, Qt::AscendingOrder); | ui->tableView->sortByColumn(0, Qt::AscendingOrder); | ||||
// Set column widths | // Set column widths | ||||
ui->tableView->horizontalHeader()->setSectionResizeMode( | ui->tableView->horizontalHeader()->setSectionResizeMode( | ||||
AddressTableModel::Label, QHeaderView::Stretch); | AddressTableModel::Label, QHeaderView::Stretch); | ||||
ui->tableView->horizontalHeader()->setSectionResizeMode( | ui->tableView->horizontalHeader()->setSectionResizeMode( | ||||
AddressTableModel::Address, QHeaderView::ResizeToContents); | AddressTableModel::Address, QHeaderView::ResizeToContents); | ||||
▲ Show 20 Lines • Show All 166 Lines • Show Last 20 Lines |