Address book: Disable "copy to clipboard" and "Delete" buttons when nothing selected

This commit is contained in:
Wladimir J. van der Laan 2011-07-06 21:52:23 +02:00
parent 8bca4099c7
commit 393adf7acd
2 changed files with 34 additions and 16 deletions

View File

@ -23,6 +23,8 @@ AddressBookDialog::AddressBookDialog(Mode mode, QWidget *parent) :
ui->sendTableView->setFocus(); ui->sendTableView->setFocus();
break; break;
} }
connect(ui->tabWidget, SIGNAL(currentChanged(int)), this, SLOT(selectionChanged()));
} }
AddressBookDialog::~AddressBookDialog() AddressBookDialog::~AddressBookDialog()
@ -64,6 +66,11 @@ void AddressBookDialog::setModel(AddressTableModel *model)
ui->sendTableView->horizontalHeader()->setResizeMode( ui->sendTableView->horizontalHeader()->setResizeMode(
AddressTableModel::Label, QHeaderView::Stretch); 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) if(mode == ForSending)
{ {
// Auto-select first row when in sending mode // Auto-select first row when in sending mode
@ -74,7 +81,7 @@ void AddressBookDialog::setModel(AddressTableModel *model)
void AddressBookDialog::setTab(int tab) void AddressBookDialog::setTab(int tab)
{ {
ui->tabWidget->setCurrentIndex(tab); ui->tabWidget->setCurrentIndex(tab);
on_tabWidget_currentChanged(tab); selectionChanged();
} }
QTableView *AddressBookDialog::getCurrentTable() QTableView *AddressBookDialog::getCurrentTable()
@ -114,20 +121,6 @@ void AddressBookDialog::on_newAddressButton_clicked()
dlg.exec(); dlg.exec();
} }
void AddressBookDialog::on_tabWidget_currentChanged(int index)
{
// Enable/disable buttons based on selected tab
switch(index)
{
case SendingTab:
ui->deleteButton->setEnabled(true);
break;
case ReceivingTab:
ui->deleteButton->setEnabled(false);
break;
}
}
void AddressBookDialog::on_deleteButton_clicked() void AddressBookDialog::on_deleteButton_clicked()
{ {
QTableView *table = getCurrentTable(); QTableView *table = getCurrentTable();
@ -158,3 +151,27 @@ void AddressBookDialog::on_buttonBox_accepted()
} }
} }
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);
}
}

View File

@ -10,6 +10,7 @@ class AddressTableModel;
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
class QTableView; class QTableView;
class QItemSelection;
QT_END_NAMESPACE QT_END_NAMESPACE
class AddressBookDialog : public QDialog class AddressBookDialog : public QDialog
@ -44,9 +45,9 @@ private:
private slots: private slots:
void on_buttonBox_accepted(); void on_buttonBox_accepted();
void on_deleteButton_clicked(); void on_deleteButton_clicked();
void on_tabWidget_currentChanged(int index);
void on_newAddressButton_clicked(); void on_newAddressButton_clicked();
void on_copyToClipboard_clicked(); void on_copyToClipboard_clicked();
void selectionChanged();
}; };
#endif // ADDRESSBOOKDIALOG_H #endif // ADDRESSBOOKDIALOG_H