diff --git a/src/widgets/pageview.cpp b/src/widgets/pageview.cpp --- a/src/widgets/pageview.cpp +++ b/src/widgets/pageview.cpp @@ -199,6 +199,14 @@ filterViewAction->setCheckable(true); connect(filterViewAction, &QAction::triggered, this, &PageView::onFilterToggled); + auto futureViewAction = new QAction(this); + futureViewAction->setObjectName(QStringLiteral("futureViewAction")); + futureViewAction->setText(i18n("Show future items")); + futureViewAction->setIcon(QIcon::fromTheme(QStringLiteral("view-calendar-whatsnext"))); + futureViewAction->setShortcut(Qt::CTRL | Qt::SHIFT | Qt::Key_F); + futureViewAction->setCheckable(true); + connect(futureViewAction, &QAction::triggered, m_filterWidget, &FilterWidget::setShowFutureTasks); + m_runTaskAction = new QAction(this); m_runTaskAction->setObjectName(QStringLiteral("runTaskAction")); m_runTaskAction->setShortcut(Qt::CTRL | Qt::Key_Space); @@ -211,6 +219,7 @@ m_actions.insert(QStringLiteral("page_view_remove"), removeItemAction); m_actions.insert(QStringLiteral("page_view_promote"), promoteItemAction); m_actions.insert(QStringLiteral("page_view_filter"), filterViewAction); + m_actions.insert(QStringLiteral("page_view_future"), futureViewAction); m_actions.insert(QStringLiteral("page_run_task"), m_runTaskAction); } diff --git a/src/zanshin/app/zanshinui.rc b/src/zanshin/app/zanshinui.rc --- a/src/zanshin/app/zanshinui.rc +++ b/src/zanshin/app/zanshinui.rc @@ -14,6 +14,7 @@ &Go + @@ -37,6 +38,7 @@ + diff --git a/tests/units/widgets/pageviewtest.cpp b/tests/units/widgets/pageviewtest.cpp --- a/tests/units/widgets/pageviewtest.cpp +++ b/tests/units/widgets/pageviewtest.cpp @@ -180,6 +180,10 @@ QVERIFY(filterAction); QVERIFY(filterAction->isCheckable()); QVERIFY(!filterAction->isChecked()); + auto futureAction = page.findChild(QStringLiteral("futureViewAction")); + QVERIFY(futureAction); + QVERIFY(futureAction->isCheckable()); + QVERIFY(!futureAction->isChecked()); auto runTaskAction = page.findChild(QStringLiteral("runTaskAction")); QVERIFY(runTaskAction); QVERIFY(!runTaskAction->isEnabled()); @@ -189,6 +193,7 @@ QCOMPARE(actions.value(QStringLiteral("page_view_remove")), removeAction); QCOMPARE(actions.value(QStringLiteral("page_view_promote")), promoteAction); QCOMPARE(actions.value(QStringLiteral("page_view_filter")), filterAction); + QCOMPARE(actions.value(QStringLiteral("page_view_future")), futureAction); QCOMPARE(actions.value(QStringLiteral("page_run_task")), runTaskAction); } @@ -342,6 +347,31 @@ QVERIFY(filterEdit->text().isEmpty()); } + void shouldManageFutureTasksVisibilityThroughAction() + { + // GIVEN + Widgets::PageView page; + auto filter = page.findChild(QStringLiteral("filterWidget")); + auto filterProxy = filter->proxyModel(); + QVERIFY(filterProxy); + + QVERIFY(!filterProxy->showFutureTasks()); + + auto futureAction = page.findChild(QStringLiteral("futureViewAction")); + + // WHEN + futureAction->trigger(); + + // THEN + QVERIFY(filterProxy->showFutureTasks()); + + // WHEN + futureAction->trigger(); + + // THEN + QVERIFY(!filterProxy->showFutureTasks()); + } + void shouldCreateTasksWithNoParentWhenHittingReturnWithoutSelectedIndex() { // GIVEN