diff --git a/src/PackageModel/PackageView.h b/src/PackageModel/PackageView.h --- a/src/PackageModel/PackageView.h +++ b/src/PackageModel/PackageView.h @@ -29,6 +29,8 @@ public: explicit PackageView(QWidget *parent = 0); + int selectionCount() const; + protected Q_SLOTS: void currentChanged(const QModelIndex ¤t, const QModelIndex &previous); void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected); diff --git a/src/PackageModel/PackageView.cpp b/src/PackageModel/PackageView.cpp --- a/src/PackageModel/PackageView.cpp +++ b/src/PackageModel/PackageView.cpp @@ -22,8 +22,6 @@ #include "PackageViewHeader.h" -#define NUM_COLUMNS 6 // If this is changed change PackageWidget.cpp value as well - PackageView::PackageView(QWidget *parent) : QTreeView(parent) { @@ -37,6 +35,11 @@ header()->setDefaultAlignment(Qt::AlignLeft); } +int PackageView::selectionCount() const +{ + return selectionModel()->selectedRows().count(); +} + void PackageView::currentChanged(const QModelIndex ¤t, const QModelIndex &previous) { if (previous.row() != -1 && current.isValid()) { @@ -49,14 +52,15 @@ { QTreeView::selectionChanged(selected, deselected); - if (!selectedIndexes().size()) { + const int count = selectionCount(); + if (count <= 0) { emit selectionEmpty(); return; } if (!selected.indexes().isEmpty()) { emit currentPackageChanged(selected.indexes().first()); - if(selectedIndexes().count()/NUM_COLUMNS > 1) { + if(count > 1) { emit selectionMulti(); } } diff --git a/src/PackageModel/PackageWidget.cpp b/src/PackageModel/PackageWidget.cpp --- a/src/PackageModel/PackageWidget.cpp +++ b/src/PackageModel/PackageWidget.cpp @@ -55,8 +55,6 @@ #include "PackageView.h" #include "PackageDelegate.h" -#define NUM_COLUMNS 6 // If this is changed change PackageView.cpp value as well - bool packageNameLessThan(QApt::Package *p1, QApt::Package *p2) { return p1->name() < p2->name(); @@ -110,7 +108,9 @@ m_packageView->setModel(m_proxyModel); m_packageView->setItemDelegate(delegate); m_packageView->header()->setSectionResizeMode(0, QHeaderView::Stretch); - for (int i = 3; i < NUM_COLUMNS; ++i) { + const int numColumns = m_packageView->header()->count(); + Q_ASSERT(numColumns >= 3); + for (int i = 3; i < numColumns; ++i) { m_packageView->header()->setSectionHidden(i, true); } topVBox->addWidget(m_packageView); @@ -311,15 +311,14 @@ menu.addSeparator(); menu.addAction(m_lockAction); - const QModelIndexList selected = m_packageView->selectionModel()->selectedIndexes(); + const int selected = m_packageView->selectionCount(); - if (!selected.size()) { + if (selected <= 0) { return; } - // Divide by the number of columns - if (selected.size()/NUM_COLUMNS == 1) { - int state = m_proxyModel->packageAt(selected.first())->state(); + if (selected == 1) { + int state = m_proxyModel->packageAt(m_packageView->currentIndex())->state(); bool upgradeable = (state & QApt::Package::Upgradeable); if (state & QApt::Package::Installed) {