Allow selecting multiple rows in entry view.

This commit is contained in:
Felix Geyer 2012-05-25 13:25:46 +02:00
parent 5c0a83eae5
commit 28bfd39bca
3 changed files with 14 additions and 8 deletions

View File

@ -121,14 +121,14 @@ void MainWindow::setMenuActionState(DatabaseWidget::Mode mode)
m_ui->actionEntryNew->setEnabled(true);
}
if (dbWidget->entryView()->inSearch() ||
!dbWidget->entryView()->currentIndex().isValid()) {
!dbWidget->entryView()->isSingleEntrySelected()) {
m_ui->actionEntryClone->setEnabled(false);
}
else {
m_ui->actionEntryClone->setEnabled(true);
}
if (dbWidget->entryView()->currentIndex().isValid()) {
if (dbWidget->entryView()->isSingleEntrySelected()) {
m_ui->actionEntryEdit->setEnabled(true);
m_ui->actionEntryDelete->setEnabled(true);
}

View File

@ -39,6 +39,7 @@ EntryView::EntryView(QWidget* parent)
setAlternatingRowColors(true);
setDragEnabled(true);
setSortingEnabled(true);
setSelectionMode(QAbstractItemView::ExtendedSelection);
connect(this, SIGNAL(activated(QModelIndex)), SLOT(emitEntryActivated(QModelIndex)));
connect(selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), SIGNAL(entrySelectionChanged()));
@ -78,8 +79,13 @@ void EntryView::setModel(QAbstractItemModel* model)
Entry* EntryView::currentEntry()
{
// TODO: use selection instead of current?
return m_model->entryFromIndex(m_sortModel->mapToSource(currentIndex()));
QModelIndexList list = selectionModel()->selectedRows();
if (list.size() == 1) {
return m_model->entryFromIndex(m_sortModel->mapToSource(list.first()));
}
else {
return 0;
}
}
bool EntryView::isSingleEntrySelected()

View File

@ -42,15 +42,15 @@ public:
public Q_SLOTS:
void setGroup(Group* group);
Q_SIGNALS:
void entryActivated(Entry* entry);
void entrySelectionChanged();
private Q_SLOTS:
void emitEntryActivated(const QModelIndex& index);
void switchToSearch();
void switchToView();
Q_SIGNALS:
void entryActivated(Entry* entry);
void entrySelectionChanged();
private:
EntryModel* const m_model;
QSortFilterProxyModel* const m_sortModel;