#include "editaddressdialog.h"
#include <QSortFilterProxyModel>
+#include <QClipboard>
#include <QDebug>
AddressBookDialog::AddressBookDialog(QWidget *parent) :
model(0)
{
ui->setupUi(this);
-
- model = new AddressTableModel(this);
- setModel(model);
}
AddressBookDialog::~AddressBookDialog()
void AddressBookDialog::setModel(AddressTableModel *model)
{
+ this->model = model;
+ /* Refresh list from core */
+ model->updateList();
+
/* Receive filter */
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);
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);
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)
void AddressBookDialog::on_copyToClipboard_clicked()
{
- /* Copy currently selected address to clipboard */
+ /* Copy currently selected address to clipboard
+ (or nothing, if nothing selected)
+ */
+ QTableView *table = getCurrentTable();
+ QModelIndexList indexes = table->selectionModel()->selectedRows(AddressTableModel::Address);
+ foreach (QModelIndex index, indexes)
+ {
+ QVariant address = index.data();
+ QApplication::clipboard()->setText(address.toString());
+ }
}
void AddressBookDialog::on_editButton_clicked()
{
- /* Double click should trigger edit button */
- EditAddressDialog dlg;
- dlg.exec();
+ QModelIndexList indexes = getCurrentTable()->selectionModel()->selectedRows();
+ if(indexes.isEmpty())
+ {
+ return;
+ }
+ /* Map selected index to source address book model */
+ QAbstractProxyModel *proxy_model = static_cast<QAbstractProxyModel*>(getCurrentTable()->model());
+ QModelIndex selected = proxy_model->mapToSource(indexes.at(0));
+
+ /* Double click also triggers edit button */
+ EditAddressDialog dlg(
+ ui->tabWidget->currentIndex() == SendingTab ?
+ EditAddressDialog::EditSendingAddress :
+ EditAddressDialog::EditReceivingAddress);
+ dlg.setModel(model);
+ dlg.loadRow(selected.row());
+ if(dlg.exec())
+ {
+ dlg.saveCurrentRow();
+ }
}
void AddressBookDialog::on_newAddressButton_clicked()
{
- EditAddressDialog dlg;
- dlg.exec();
+ EditAddressDialog dlg(
+ ui->tabWidget->currentIndex() == SendingTab ?
+ EditAddressDialog::NewSendingAddress :
+ EditAddressDialog::NewReceivingAddress);
+ dlg.setModel(model);
+ if(dlg.exec())
+ {
+ dlg.saveCurrentRow();
+ }
}
void AddressBookDialog::on_tabWidget_currentChanged(int index)
switch(index)
{
case SendingTab:
- ui->deleteButton->show();
+ ui->deleteButton->setEnabled(true);
break;
case ReceivingTab:
- ui->deleteButton->hide();
+ ui->deleteButton->setEnabled(false);
break;
}
}
{
QTableView *table = getCurrentTable();
QModelIndexList indexes = table->selectionModel()->selectedRows();
-
- foreach (QModelIndex index, indexes) {
- table->model()->removeRow(index.row());
+ if(!indexes.isEmpty())
+ {
+ table->model()->removeRow(indexes.at(0).row());
}
}
QTableView *table = getCurrentTable();
QModelIndexList indexes = table->selectionModel()->selectedRows(AddressTableModel::Address);
- foreach (QModelIndex index, indexes) {
+ foreach (QModelIndex index, indexes)
+ {
QVariant address = table->model()->data(index);
returnValue = address.toString();
}
-
- accept();
+ if(!returnValue.isEmpty())
+ {
+ accept();
+ }
+ else
+ {
+ reject();
+ }
}