X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Fqt%2Faddressbookdialog.cpp;h=6d53ee865781fc1a20fb8415d6620026c38fe999;hb=5eaa1b435c144d841c9a03fb9c478ef760f22d8c;hp=90950a6441fa3c4f6a77191206f0fa6d8777770f;hpb=ba4081c1fcaddf361abd61b2721994eff5475bb3;p=novacoin.git diff --git a/src/qt/addressbookdialog.cpp b/src/qt/addressbookdialog.cpp index 90950a6..6d53ee8 100644 --- a/src/qt/addressbookdialog.cpp +++ b/src/qt/addressbookdialog.cpp @@ -8,12 +8,23 @@ #include #include -AddressBookDialog::AddressBookDialog(QWidget *parent) : +AddressBookDialog::AddressBookDialog(Mode mode, QWidget *parent) : QDialog(parent), ui(new Ui::AddressBookDialog), - model(0) + model(0), + mode(mode) { ui->setupUi(this); + switch(mode) + { + case ForSending: + connect(ui->receiveTableView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(on_buttonBox_accepted())); + connect(ui->sendTableView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(on_buttonBox_accepted())); + ui->sendTableView->setFocus(); + break; + } + + connect(ui->tabWidget, SIGNAL(currentChanged(int)), this, SLOT(selectionChanged())); } AddressBookDialog::~AddressBookDialog() @@ -24,26 +35,28 @@ AddressBookDialog::~AddressBookDialog() void AddressBookDialog::setModel(AddressTableModel *model) { this->model = model; - /* Refresh list from core */ + // Refresh list from core model->updateList(); - /* Receive filter */ + // Receive filter QSortFilterProxyModel *receive_model = new QSortFilterProxyModel(this); receive_model->setSourceModel(model); receive_model->setDynamicSortFilter(true); receive_model->setFilterRole(AddressTableModel::TypeRole); receive_model->setFilterFixedString(AddressTableModel::Receive); ui->receiveTableView->setModel(receive_model); + ui->receiveTableView->sortByColumn(0, Qt::AscendingOrder); - /* Send filter */ + // Send filter QSortFilterProxyModel *send_model = new QSortFilterProxyModel(this); send_model->setSourceModel(model); send_model->setDynamicSortFilter(true); send_model->setFilterRole(AddressTableModel::TypeRole); send_model->setFilterFixedString(AddressTableModel::Send); ui->sendTableView->setModel(send_model); + ui->sendTableView->sortByColumn(0, Qt::AscendingOrder); - /* Set column widths */ + // Set column widths ui->receiveTableView->horizontalHeader()->resizeSection( AddressTableModel::Address, 320); ui->receiveTableView->horizontalHeader()->setResizeMode( @@ -52,11 +65,23 @@ void AddressBookDialog::setModel(AddressTableModel *model) AddressTableModel::Address, 320); ui->sendTableView->horizontalHeader()->setResizeMode( AddressTableModel::Label, QHeaderView::Stretch); + + connect(ui->receiveTableView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), + this, SLOT(selectionChanged())); + connect(ui->sendTableView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), + this, SLOT(selectionChanged())); + + if(mode == ForSending) + { + // Auto-select first row when in sending mode + ui->sendTableView->selectRow(0); + } } void AddressBookDialog::setTab(int tab) { ui->tabWidget->setCurrentIndex(tab); + selectionChanged(); } QTableView *AddressBookDialog::getCurrentTable() @@ -74,9 +99,8 @@ QTableView *AddressBookDialog::getCurrentTable() void AddressBookDialog::on_copyToClipboard_clicked() { - /* Copy currently selected address to clipboard - (or nothing, if nothing selected) - */ + // Copy currently selected address to clipboard + // (or nothing, if nothing selected) QTableView *table = getCurrentTable(); QModelIndexList indexes = table->selectionModel()->selectedRows(AddressTableModel::Address); @@ -87,30 +111,6 @@ void AddressBookDialog::on_copyToClipboard_clicked() } } -void AddressBookDialog::on_editButton_clicked() -{ - QModelIndexList indexes = getCurrentTable()->selectionModel()->selectedRows(); - if(indexes.isEmpty()) - { - return; - } - /* Map selected index to source address book model */ - QAbstractProxyModel *proxy_model = static_cast(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( @@ -118,23 +118,7 @@ void AddressBookDialog::on_newAddressButton_clicked() 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->setEnabled(true); - break; - case ReceivingTab: - ui->deleteButton->setEnabled(false); - break; - } + dlg.exec(); } void AddressBookDialog::on_deleteButton_clicked() @@ -166,3 +150,28 @@ void AddressBookDialog::on_buttonBox_accepted() reject(); } } + +void AddressBookDialog::selectionChanged() +{ + // Set button states based on selected tab and selection + QTableView *table = getCurrentTable(); + + if(table->selectionModel()->hasSelection()) + { + switch(ui->tabWidget->currentIndex()) + { + case SendingTab: + ui->deleteButton->setEnabled(true); + break; + case ReceivingTab: + ui->deleteButton->setEnabled(false); + break; + } + ui->copyToClipboard->setEnabled(true); + } + else + { + ui->deleteButton->setEnabled(false); + ui->copyToClipboard->setEnabled(false); + } +}