diff --git a/src/integration/dependencies.cpp b/src/integration/dependencies.cpp index 8c2ec5b2..cae3925b 100644 --- a/src/integration/dependencies.cpp +++ b/src/integration/dependencies.cpp @@ -1,126 +1,138 @@ /* This file is part of Zanshin Copyright 2014 Kevin Ottens This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License or (at your option) version 3 or any later version accepted by the membership of KDE e.V. (or its successor approved by the membership of KDE e.V.), which shall act as a proxy defined in Section 14 of version 3 of the license. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include "dependencies.h" #include "akonadi/akonadicontextqueries.h" #include "akonadi/akonadicontextrepository.h" #include "akonadi/akonadidatasourcequeries.h" #include "akonadi/akonadidatasourcerepository.h" #include "akonadi/akonadiprojectqueries.h" #include "akonadi/akonadiprojectrepository.h" #include "akonadi/akonaditaskqueries.h" #include "akonadi/akonaditaskrepository.h" #include "akonadi/akonadicache.h" #include "akonadi/akonadicachingstorage.h" #include "akonadi/akonadimonitorimpl.h" #include "akonadi/akonadiserializer.h" #include "akonadi/akonadistorage.h" #include "presentation/availablepagesmodel.h" #include "presentation/availablesourcesmodel.h" #include "presentation/editormodel.h" #include "presentation/runningtaskmodel.h" #include "utils/dependencymanager.h" void Integration::initializeGlobalAppDependencies() { auto &deps = Utils::DependencyManager::globalInstance(); + initializeDefaultAkonadiDependencies(deps); + initializeDefaultDomainDependencies(deps); + initializeDefaultPresentationDependencies(deps); +} +void Integration::initializeDefaultAkonadiDependencies(Utils::DependencyManager &deps) +{ deps.add(); deps.add(); deps.add(); deps.add([] (Utils::DependencyManager *deps) { return new Akonadi::CachingStorage(deps->create(), Akonadi::StorageInterface::Ptr(new Akonadi::Storage)); }); +} +void Integration::initializeDefaultDomainDependencies(Utils::DependencyManager &deps) +{ deps.add(); deps.add(); deps.add(); deps.add(); deps.add(); deps.add(); deps.add(); deps.add(); +} +void Integration::initializeDefaultPresentationDependencies(Utils::DependencyManager &deps) +{ deps.add([] (Utils::DependencyManager *deps) { auto model = new Presentation::EditorModel; auto repository = deps->create(); model->setSaveFunction([repository] (const Domain::Task::Ptr &task) { Q_ASSERT(task); return repository->update(task); }); return model; }); deps.add(); deps.add(); deps.add(); } diff --git a/src/integration/dependencies.h b/src/integration/dependencies.h index 79c49b88..ce6d6f02 100644 --- a/src/integration/dependencies.h +++ b/src/integration/dependencies.h @@ -1,33 +1,42 @@ /* This file is part of Zanshin Copyright 2014 Kevin Ottens This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License or (at your option) version 3 or any later version accepted by the membership of KDE e.V. (or its successor approved by the membership of KDE e.V.), which shall act as a proxy defined in Section 14 of version 3 of the license. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef INTEGRATION_DEPENDENCIES_H #define INTEGRATION_DEPENDENCIES_H +namespace Utils +{ + class DependencyManager; +} + namespace Integration { void initializeGlobalAppDependencies(); + + void initializeDefaultAkonadiDependencies(Utils::DependencyManager &deps); + void initializeDefaultDomainDependencies(Utils::DependencyManager &deps); + void initializeDefaultPresentationDependencies(Utils::DependencyManager &deps); } #endif