diff --git a/src/widgets/pageview.cpp b/src/widgets/pageview.cpp --- a/src/widgets/pageview.cpp +++ b/src/widgets/pageview.cpp @@ -34,8 +34,11 @@ #include #include +#include +#include #include #include +#include #include "filterwidget.h" #include "itemdelegate.h" @@ -207,6 +210,15 @@ futureViewAction->setCheckable(true); connect(futureViewAction, &QAction::triggered, m_filterWidget, &FilterWidget::setShowFutureTasks); + auto configGroup = KConfigGroup(KSharedConfig::openConfig(), "General"); + if (configGroup.readEntry("ShowFuture", true)) + futureViewAction->trigger(); + + connect(futureViewAction, &QAction::triggered, + futureViewAction, [configGroup] (bool checked) mutable { + configGroup.writeEntry("ShowFuture", checked); + }); + m_runTaskAction = new QAction(this); m_runTaskAction->setObjectName(QStringLiteral("runTaskAction")); m_runTaskAction->setShortcut(Qt::CTRL | Qt::Key_Space); 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 @@ -34,8 +34,11 @@ #include #include +#include +#include #include #include +#include #include "domain/task.h" @@ -130,6 +133,12 @@ class PageViewTest : public QObject { Q_OBJECT +private: + KConfigGroup configGroup() + { + return KConfigGroup(KSharedConfig::openConfig(), "General"); + } + private slots: void shouldHaveDefaultState() { @@ -183,7 +192,7 @@ auto futureAction = page.findChild(QStringLiteral("futureViewAction")); QVERIFY(futureAction); QVERIFY(futureAction->isCheckable()); - QVERIFY(!futureAction->isChecked()); + QVERIFY(futureAction->isChecked()); auto runTaskAction = page.findChild(QStringLiteral("runTaskAction")); QVERIFY(runTaskAction); QVERIFY(!runTaskAction->isEnabled()); @@ -355,21 +364,84 @@ auto filterProxy = filter->proxyModel(); QVERIFY(filterProxy); - QVERIFY(!filterProxy->showFutureTasks()); + QVERIFY(filterProxy->showFutureTasks()); auto futureAction = page.findChild(QStringLiteral("futureViewAction")); // WHEN futureAction->trigger(); + // THEN + QVERIFY(!filterProxy->showFutureTasks()); + + // WHEN + futureAction->trigger(); + // THEN QVERIFY(filterProxy->showFutureTasks()); + } + + void shouldStoreFutureTasksVisibilityDefaultState() + { + // GIVEN + configGroup().deleteEntry("ShowFuture"); + + { + Widgets::PageView page; + auto futureAction = page.findChild(QStringLiteral("futureViewAction")); + + // THEN + QVERIFY(futureAction->isChecked()); + } + + // WHEN + configGroup().writeEntry("ShowFuture", false); + + { + Widgets::PageView page; + auto futureAction = page.findChild(QStringLiteral("futureViewAction")); + + // THEN + QVERIFY(!futureAction->isChecked()); + } // WHEN + configGroup().writeEntry("ShowFuture", true); + + { + Widgets::PageView page; + auto futureAction = page.findChild(QStringLiteral("futureViewAction")); + + // THEN + QVERIFY(futureAction->isChecked()); + } + + // WHEN + configGroup().deleteEntry("ShowFuture"); + + { + Widgets::PageView page; + auto futureAction = page.findChild(QStringLiteral("futureViewAction")); + + // THEN + QVERIFY(futureAction->isChecked()); + } + + // WHEN + Widgets::PageView page; + auto futureAction = page.findChild(QStringLiteral("futureViewAction")); futureAction->trigger(); // THEN - QVERIFY(!filterProxy->showFutureTasks()); + QVERIFY(configGroup().hasKey("ShowFuture")); + QVERIFY(!configGroup().readEntry("ShowFuture", true)); + + // WHEN + futureAction->trigger(); + + // THEN + QVERIFY(configGroup().hasKey("ShowFuture")); + QVERIFY(configGroup().readEntry("ShowFuture", false)); } void shouldCreateTasksWithNoParentWhenHittingReturnWithoutSelectedIndex()