diff --git a/src/akonadi/akonadiconfigdialog.h b/src/akonadi/akonadiconfigdialog.h --- a/src/akonadi/akonadiconfigdialog.h +++ b/src/akonadi/akonadiconfigdialog.h @@ -26,24 +26,30 @@ #include +#include "akonadistorageinterface.h" + namespace Akonadi { +class AgentFilterProxyModel; class AgentInstanceWidget; class ConfigDialog : public QDialog { Q_OBJECT public: - explicit ConfigDialog(QWidget *parent = 0); + explicit ConfigDialog(StorageInterface::FetchContentTypes types, QWidget *parent = 0); private slots: void onAddTriggered(); void onRemoveTriggered(); void onConfigureTriggered(); private: + void applyContentTypes(AgentFilterProxyModel *model); + Akonadi::AgentInstanceWidget *m_agentInstanceWidget; + const StorageInterface::FetchContentTypes m_types; }; } diff --git a/src/akonadi/akonadiconfigdialog.cpp b/src/akonadi/akonadiconfigdialog.cpp --- a/src/akonadi/akonadiconfigdialog.cpp +++ b/src/akonadi/akonadiconfigdialog.cpp @@ -24,6 +24,7 @@ #include "akonadiconfigdialog.h" #include +#include #include #include #include @@ -40,19 +41,23 @@ #include #include +#include +#include + using namespace Akonadi; -ConfigDialog::ConfigDialog(QWidget *parent) - : QDialog(parent) +ConfigDialog::ConfigDialog(StorageInterface::FetchContentTypes types, QWidget *parent) + : QDialog(parent), + m_agentInstanceWidget(new Akonadi::AgentInstanceWidget(this)), + m_types(types) { setWindowTitle(i18n("Configure")); auto description = new QLabel(this); description->setWordWrap(true); description->setText(i18n("Please select or create a resource which will be used by the application to store and query its TODOs.")); - m_agentInstanceWidget = new Akonadi::AgentInstanceWidget(this); - m_agentInstanceWidget->agentFilterProxyModel()->addMimeTypeFilter(QStringLiteral("application/x-vnd.akonadi.calendar.todo")); + applyContentTypes(m_agentInstanceWidget->agentFilterProxyModel()); auto toolBar = new QToolBar(this); toolBar->setIconSize(QSize(16, 16)); @@ -101,7 +106,7 @@ void ConfigDialog::onAddTriggered() { auto dlg = QPointer(new AgentTypeDialog(this)); - dlg->agentFilterProxyModel()->addMimeTypeFilter(QStringLiteral("application/x-vnd.akonadi.calendar.todo")); + applyContentTypes(dlg->agentFilterProxyModel()); if (dlg->exec()) { if (!dlg) return; @@ -141,3 +146,11 @@ agent.configure(this); } +void ConfigDialog::applyContentTypes(AgentFilterProxyModel *model) +{ + if (m_types & StorageInterface::Notes) + model->addMimeTypeFilter(NoteUtils::noteMimeType()); + if (m_types & StorageInterface::Tasks) + model->addMimeTypeFilter(KCalCore::Todo::todoMimeType()); +} + diff --git a/src/akonadi/akonadidatasourcerepository.h b/src/akonadi/akonadidatasourcerepository.h --- a/src/akonadi/akonadidatasourcerepository.h +++ b/src/akonadi/akonadidatasourcerepository.h @@ -40,15 +40,17 @@ public: typedef QSharedPointer Ptr; - DataSourceRepository(const StorageInterface::Ptr &storage, + DataSourceRepository(StorageInterface::FetchContentTypes contentTypes, + const StorageInterface::Ptr &storage, const SerializerInterface::Ptr &serializer); KJob *update(Domain::DataSource::Ptr source) Q_DECL_OVERRIDE; void showConfigDialog() Q_DECL_OVERRIDE; void windowNeedsDataBackend(QWidget *window) Q_DECL_OVERRIDE; private: + StorageInterface::FetchContentTypes m_contentTypes; StorageInterface::Ptr m_storage; SerializerInterface::Ptr m_serializer; }; diff --git a/src/akonadi/akonadidatasourcerepository.cpp b/src/akonadi/akonadidatasourcerepository.cpp --- a/src/akonadi/akonadidatasourcerepository.cpp +++ b/src/akonadi/akonadidatasourcerepository.cpp @@ -32,9 +32,11 @@ using namespace Akonadi; -DataSourceRepository::DataSourceRepository(const StorageInterface::Ptr &storage, +DataSourceRepository::DataSourceRepository(StorageInterface::FetchContentTypes contentTypes, + const StorageInterface::Ptr &storage, const SerializerInterface::Ptr &serializer) - : m_storage(storage), + : m_contentTypes(contentTypes), + m_storage(storage), m_serializer(serializer) { } @@ -48,7 +50,7 @@ void DataSourceRepository::showConfigDialog() { - ConfigDialog dialog(qApp->activeWindow()); + ConfigDialog dialog(m_contentTypes, qApp->activeWindow()); dialog.exec(); } diff --git a/src/renku/app/dependencies.cpp b/src/renku/app/dependencies.cpp --- a/src/renku/app/dependencies.cpp +++ b/src/renku/app/dependencies.cpp @@ -64,9 +64,11 @@ deps->create()); }); - deps.add(); + deps.add([] (Utils::DependencyManager *deps) { + return new Akonadi::DataSourceRepository(Akonadi::StorageInterface::Notes, + deps->create(), + deps->create()); + }); deps.addcreate()); }); - deps.add(); + deps.add([] (Utils::DependencyManager *deps) { + return new Akonadi::DataSourceRepository(Akonadi::StorageInterface::Tasks, + deps->create(), + deps->create()); + }); deps.add repository(new Akonadi::DataSourceRepository(storageMock.getInstance(), + QScopedPointer repository(new Akonadi::DataSourceRepository(Akonadi::StorageInterface::Tasks, + storageMock.getInstance(), serializerMock.getInstance())); repository->update(source)->exec();