diff --git a/src/renku/app/main.cpp b/src/renku/app/main.cpp --- a/src/renku/app/main.cpp +++ b/src/renku/app/main.cpp @@ -75,11 +75,7 @@ window->addDockWidget(Qt::LeftDockWidgetArea, pagesDock); window->addDockWidget(Qt::LeftDockWidgetArea, sourcesDock); - auto actions = QHash(); - actions.unite(components->availableSourcesView()->globalActions()); - actions.unite(components->availablePagesView()->globalActions()); - actions.unite(components->pageView()->globalActions()); - + auto actions = components->globalActions(); auto ac = window->actionCollection(); ac->addAction(KStandardAction::Quit, window, SLOT(close())); for (auto it = actions.constBegin(); it != actions.constEnd(); ++it) { diff --git a/src/widgets/applicationcomponents.h b/src/widgets/applicationcomponents.h --- a/src/widgets/applicationcomponents.h +++ b/src/widgets/applicationcomponents.h @@ -25,6 +25,7 @@ #ifndef WIDGETS_APPLICATIONCOMPONENTS_H #define WIDGETS_APPLICATIONCOMPONENTS_H +#include #include #include "domain/artifact.h" @@ -47,6 +48,8 @@ public: explicit ApplicationComponents(QWidget *parent = Q_NULLPTR); + QHash globalActions() const; + QObjectPtr model() const; AvailableSourcesView *availableSourcesView() const; @@ -62,6 +65,7 @@ void onCurrentArtifactChanged(const Domain::Artifact::Ptr &artifact); private: + QHash m_actions; QObjectPtr m_model; QWidget *m_parent; diff --git a/src/widgets/applicationcomponents.cpp b/src/widgets/applicationcomponents.cpp --- a/src/widgets/applicationcomponents.cpp +++ b/src/widgets/applicationcomponents.cpp @@ -49,6 +49,17 @@ { } +QHash ApplicationComponents::globalActions() const +{ + auto actions = QHash(); + actions.unite(availableSourcesView()->globalActions()); + actions.unite(availablePagesView()->globalActions()); + actions.unite(pageView()->globalActions()); + actions.unite(m_actions); + + return actions; +} + QObjectPtr ApplicationComponents::model() const { return m_model; diff --git a/src/zanshin/app/main.cpp b/src/zanshin/app/main.cpp --- a/src/zanshin/app/main.cpp +++ b/src/zanshin/app/main.cpp @@ -92,11 +92,7 @@ window->addDockWidget(Qt::LeftDockWidgetArea, pagesDock); window->addDockWidget(Qt::LeftDockWidgetArea, sourcesDock); - auto actions = QHash(); - actions.unite(components->availableSourcesView()->globalActions()); - actions.unite(components->availablePagesView()->globalActions()); - actions.unite(components->pageView()->globalActions()); - + auto actions = components->globalActions(); auto ac = window->actionCollection(); ac->addAction(KStandardAction::Quit, window, SLOT(close())); for (auto it = actions.constBegin(); it != actions.constEnd(); ++it) { diff --git a/src/zanshin/kontact/part.cpp b/src/zanshin/kontact/part.cpp --- a/src/zanshin/kontact/part.cpp +++ b/src/zanshin/kontact/part.cpp @@ -68,11 +68,7 @@ splitter->addWidget(components->editorView()); setWidget(splitter); - auto actions = QHash(); - actions.unite(components->availableSourcesView()->globalActions()); - actions.unite(components->availablePagesView()->globalActions()); - actions.unite(components->pageView()->globalActions()); - + auto actions = components->globalActions(); auto ac = actionCollection(); for (auto it = actions.constBegin(); it != actions.constEnd(); ++it) { ac->addAction(it.key(), it.value()); diff --git a/tests/units/widgets/applicationcomponentstest.cpp b/tests/units/widgets/applicationcomponentstest.cpp --- a/tests/units/widgets/applicationcomponentstest.cpp +++ b/tests/units/widgets/applicationcomponentstest.cpp @@ -424,6 +424,32 @@ QCOMPARE(editorModel.property("artifact").value(), pageModel.itemAtRow(index.row())); } + + void shouldHaveDefaultActionsList() + { + // GIVEN + Widgets::ApplicationComponents components; + + // WHEN + auto actions = components.globalActions(); + + // THEN + + // availablePages view + auto available = components.availablePagesView(); + foreach (auto key, available->globalActions().keys()) + QCOMPARE(actions.value(key), available->globalActions().value(key)); + + // availableSources view + auto availableSources = components.availableSourcesView(); + foreach (auto key, availableSources->globalActions().keys()) + QCOMPARE(actions.value(key), availableSources->globalActions().value(key)); + + // page view + auto page = components.pageView(); + foreach (auto key, page->globalActions().keys()) + QCOMPARE(actions.value(key), page->globalActions().value(key)); + } }; QTEST_MAIN(ApplicationComponentsTest)