Only show expand all and collapse all options if there`s a need

This patch unclutter the menu by hidding collapse all
when all dives are collapsed, and expand all when all
dives are expanded.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Tomaz Canabrava 2015-05-10 17:08:24 -03:00 committed by Dirk Hohndel
parent 627de38c01
commit d6f45ec74d

View file

@ -797,8 +797,24 @@ void DiveListView::contextMenuEvent(QContextMenuEvent *event)
dive_trip_t *trip = (dive_trip_t *)contextMenuIndex.data(DiveTripModel::TRIP_ROLE).value<void *>();
QMenu popup(this);
if (currentLayout == DiveTripModel::TREE) {
popup.addAction(tr("Expand all"), this, SLOT(expandAll()));
popup.addAction(tr("Collapse all"), this, SLOT(collapseAll()));
// verify if there is a node that`s not expanded.
bool needs_expand = false;
bool needs_collapse = false;
for(int i = 0, end = model()->rowCount(); i < end; i++) {
QModelIndex idx = model()->index(i, 0);
if (idx.data(DiveTripModel::DIVE_ROLE).value<void *>())
continue;
if (!isExpanded(idx))
needs_expand = true;
else
needs_collapse = true;
}
if (needs_expand)
popup.addAction(tr("Expand all"), this, SLOT(expandAll()));
if (needs_collapse)
popup.addAction(tr("Collapse all"), this, SLOT(collapseAll()));
collapseAction = popup.addAction(tr("Collapse others"), this, SLOT(collapseAll()));
if (d) {
popup.addAction(tr("Remove dive(s) from trip"), this, SLOT(removeFromTrip()));