1 #include "addressbookpage.h"
2 #include "ui_addressbookpage.h"
4 #include "addresstablemodel.h"
5 #include "editaddressdialog.h"
7 #include <QSortFilterProxyModel>
11 AddressBookPage::AddressBookPage(Mode mode, Tabs tab, QWidget *parent) :
13 ui(new Ui::AddressBookPage),
22 connect(ui->tableView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(on_buttonBox_accepted()));
23 ui->tableView->setFocus();
26 ui->buttonBox->hide();
32 ui->labelExplanation->hide();
39 AddressBookPage::~AddressBookPage()
44 void AddressBookPage::setModel(AddressTableModel *model)
47 // Refresh list from core
54 QSortFilterProxyModel *receive_model = new QSortFilterProxyModel(this);
55 receive_model->setSourceModel(model);
56 receive_model->setDynamicSortFilter(true);
57 receive_model->setFilterRole(AddressTableModel::TypeRole);
58 receive_model->setFilterFixedString(AddressTableModel::Receive);
59 ui->tableView->setModel(receive_model);
60 ui->tableView->sortByColumn(0, Qt::AscendingOrder);
64 QSortFilterProxyModel *send_model = new QSortFilterProxyModel(this);
65 send_model->setSourceModel(model);
66 send_model->setDynamicSortFilter(true);
67 send_model->setFilterRole(AddressTableModel::TypeRole);
68 send_model->setFilterFixedString(AddressTableModel::Send);
69 ui->tableView->setModel(send_model);
70 ui->tableView->sortByColumn(0, Qt::AscendingOrder);
75 ui->tableView->horizontalHeader()->resizeSection(
76 AddressTableModel::Address, 320);
77 ui->tableView->horizontalHeader()->setResizeMode(
78 AddressTableModel::Label, QHeaderView::Stretch);
80 connect(ui->tableView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
81 this, SLOT(selectionChanged()));
83 if(mode == ForSending)
85 // Auto-select first row when in sending mode
86 ui->tableView->selectRow(0);
91 QTableView *AddressBookPage::getCurrentTable()
96 void AddressBookPage::on_copyToClipboard_clicked()
98 // Copy currently selected address to clipboard
99 // (or nothing, if nothing selected)
100 QTableView *table = getCurrentTable();
101 QModelIndexList indexes = table->selectionModel()->selectedRows(AddressTableModel::Address);
103 foreach (QModelIndex index, indexes)
105 QVariant address = index.data();
106 QApplication::clipboard()->setText(address.toString());
110 void AddressBookPage::on_newAddressButton_clicked()
112 EditAddressDialog dlg(
114 EditAddressDialog::NewSendingAddress :
115 EditAddressDialog::NewReceivingAddress);
120 void AddressBookPage::on_deleteButton_clicked()
122 QTableView *table = getCurrentTable();
123 QModelIndexList indexes = table->selectionModel()->selectedRows();
124 if(!indexes.isEmpty())
126 table->model()->removeRow(indexes.at(0).row());
130 void AddressBookPage::on_buttonBox_accepted()
132 QTableView *table = getCurrentTable();
133 QModelIndexList indexes = table->selectionModel()->selectedRows(AddressTableModel::Address);
135 foreach (QModelIndex index, indexes)
137 QVariant address = table->model()->data(index);
138 returnValue = address.toString();
140 if(!returnValue.isEmpty())
150 void AddressBookPage::selectionChanged()
152 // Set button states based on selected tab and selection
153 QTableView *table = getCurrentTable();
155 if(table->selectionModel()->hasSelection())
160 ui->deleteButton->setEnabled(true);
163 ui->deleteButton->setEnabled(false);
166 ui->copyToClipboard->setEnabled(true);
170 ui->deleteButton->setEnabled(false);
171 ui->copyToClipboard->setEnabled(false);
175 void AddressBookPage::done(int retval)
177 // When this is a tab/widget and not a model dialog, ignore "done"
178 if(mode == ForEditing)
180 QDialog::done(retval);