1 #include "addressbookdialog.h"
2 #include "ui_addressbookdialog.h"
4 #include "addresstablemodel.h"
5 #include "editaddressdialog.h"
7 #include <QSortFilterProxyModel>
11 AddressBookDialog::AddressBookDialog(Mode mode, QWidget *parent) :
13 ui(new Ui::AddressBookDialog),
21 connect(ui->receiveTableView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(on_buttonBox_accepted()));
22 connect(ui->sendTableView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(on_buttonBox_accepted()));
23 ui->sendTableView->setFocus();
27 connect(ui->tabWidget, SIGNAL(currentChanged(int)), this, SLOT(selectionChanged()));
30 AddressBookDialog::~AddressBookDialog()
35 void AddressBookDialog::setModel(AddressTableModel *model)
38 // Refresh list from core
42 QSortFilterProxyModel *receive_model = new QSortFilterProxyModel(this);
43 receive_model->setSourceModel(model);
44 receive_model->setDynamicSortFilter(true);
45 receive_model->setFilterRole(AddressTableModel::TypeRole);
46 receive_model->setFilterFixedString(AddressTableModel::Receive);
47 ui->receiveTableView->setModel(receive_model);
48 ui->receiveTableView->sortByColumn(0, Qt::AscendingOrder);
51 QSortFilterProxyModel *send_model = new QSortFilterProxyModel(this);
52 send_model->setSourceModel(model);
53 send_model->setDynamicSortFilter(true);
54 send_model->setFilterRole(AddressTableModel::TypeRole);
55 send_model->setFilterFixedString(AddressTableModel::Send);
56 ui->sendTableView->setModel(send_model);
57 ui->sendTableView->sortByColumn(0, Qt::AscendingOrder);
60 ui->receiveTableView->horizontalHeader()->resizeSection(
61 AddressTableModel::Address, 320);
62 ui->receiveTableView->horizontalHeader()->setResizeMode(
63 AddressTableModel::Label, QHeaderView::Stretch);
64 ui->sendTableView->horizontalHeader()->resizeSection(
65 AddressTableModel::Address, 320);
66 ui->sendTableView->horizontalHeader()->setResizeMode(
67 AddressTableModel::Label, QHeaderView::Stretch);
69 connect(ui->receiveTableView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
70 this, SLOT(selectionChanged()));
71 connect(ui->sendTableView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
72 this, SLOT(selectionChanged()));
74 if(mode == ForSending)
76 // Auto-select first row when in sending mode
77 ui->sendTableView->selectRow(0);
81 void AddressBookDialog::setTab(int tab)
83 ui->tabWidget->setCurrentIndex(tab);
87 QTableView *AddressBookDialog::getCurrentTable()
89 switch(ui->tabWidget->currentIndex())
92 return ui->sendTableView;
94 return ui->receiveTableView;
100 void AddressBookDialog::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 AddressBookDialog::on_newAddressButton_clicked()
116 EditAddressDialog dlg(
117 ui->tabWidget->currentIndex() == SendingTab ?
118 EditAddressDialog::NewSendingAddress :
119 EditAddressDialog::NewReceivingAddress);
124 void AddressBookDialog::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 AddressBookDialog::on_buttonBox_accepted()
136 QTableView *table = getCurrentTable();
137 QModelIndexList indexes = table->selectionModel()->selectedRows(AddressTableModel::Address);
139 foreach (QModelIndex index, indexes)
141 QVariant address = table->model()->data(index);
142 returnValue = address.toString();
144 if(!returnValue.isEmpty())
154 void AddressBookDialog::selectionChanged()
156 // Set button states based on selected tab and selection
157 QTableView *table = getCurrentTable();
159 if(table->selectionModel()->hasSelection())
161 switch(ui->tabWidget->currentIndex())
164 ui->deleteButton->setEnabled(true);
167 ui->deleteButton->setEnabled(false);
170 ui->copyToClipboard->setEnabled(true);
174 ui->deleteButton->setEnabled(false);
175 ui->copyToClipboard->setEnabled(false);