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(accept()));
23 ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
24 ui->tableView->setFocus();
27 ui->buttonBox->hide();
33 ui->labelExplanation->hide();
38 ui->tableView->setTabKeyNavigation(false);
40 connect(ui->buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
43 AddressBookPage::~AddressBookPage()
48 void AddressBookPage::setModel(AddressTableModel *model)
51 // Refresh list from core
58 QSortFilterProxyModel *receive_model = new QSortFilterProxyModel(this);
59 receive_model->setSourceModel(model);
60 receive_model->setDynamicSortFilter(true);
61 receive_model->setFilterRole(AddressTableModel::TypeRole);
62 receive_model->setFilterFixedString(AddressTableModel::Receive);
63 ui->tableView->setModel(receive_model);
64 ui->tableView->sortByColumn(0, Qt::AscendingOrder);
68 QSortFilterProxyModel *send_model = new QSortFilterProxyModel(this);
69 send_model->setSourceModel(model);
70 send_model->setDynamicSortFilter(true);
71 send_model->setFilterRole(AddressTableModel::TypeRole);
72 send_model->setFilterFixedString(AddressTableModel::Send);
73 ui->tableView->setModel(send_model);
74 ui->tableView->sortByColumn(0, Qt::AscendingOrder);
79 ui->tableView->horizontalHeader()->resizeSection(
80 AddressTableModel::Address, 320);
81 ui->tableView->horizontalHeader()->setResizeMode(
82 AddressTableModel::Label, QHeaderView::Stretch);
84 connect(ui->tableView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
85 this, SLOT(selectionChanged()));
87 if(mode == ForSending)
89 // Auto-select first row when in sending mode
90 ui->tableView->selectRow(0);
95 QTableView *AddressBookPage::getCurrentTable()
100 void AddressBookPage::on_copyToClipboard_clicked()
102 // Copy currently selected address to clipboard
103 // (or nothing, if nothing selected)
104 QTableView *table = getCurrentTable();
105 QModelIndexList indexes = table->selectionModel()->selectedRows(AddressTableModel::Address);
107 foreach (QModelIndex index, indexes)
109 QVariant address = index.data();
110 QApplication::clipboard()->setText(address.toString());
114 void AddressBookPage::on_newAddressButton_clicked()
116 EditAddressDialog dlg(
118 EditAddressDialog::NewSendingAddress :
119 EditAddressDialog::NewReceivingAddress);
124 void AddressBookPage::on_deleteButton_clicked()
126 QTableView *table = getCurrentTable();
127 QModelIndexList indexes = table->selectionModel()->selectedRows();
128 if(!indexes.isEmpty())
130 table->model()->removeRow(indexes.at(0).row());
134 void AddressBookPage::selectionChanged()
136 // Set button states based on selected tab and selection
137 QTableView *table = getCurrentTable();
139 if(table->selectionModel()->hasSelection())
144 ui->deleteButton->setEnabled(true);
147 ui->deleteButton->setEnabled(false);
150 ui->copyToClipboard->setEnabled(true);
154 ui->deleteButton->setEnabled(false);
155 ui->copyToClipboard->setEnabled(false);
159 void AddressBookPage::done(int retval)
161 // When this is a tab/widget and not a model dialog, ignore "done"
162 if(mode == ForEditing)
165 // Figure out which address was selected, and return it
166 QTableView *table = getCurrentTable();
167 QModelIndexList indexes = table->selectionModel()->selectedRows(AddressTableModel::Address);
169 foreach (QModelIndex index, indexes)
171 QVariant address = table->model()->data(index);
172 returnValue = address.toString();
175 if(returnValue.isEmpty())
180 QDialog::done(retval);