From 5b41b26a349967acf2197f9f9228526193fd826e Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Fri, 27 Nov 2015 17:30:04 +0100 Subject: Introduced a QueryRunner object The QueryRunner object lives for the duration of the query (so just for the initial query for non-live queries, and for the lifetime of the result model for live queries). It's supposed to handle all the threading internally and decouple the lifetime of the facade. --- examples/dummyresource/CMakeLists.txt | 2 +- examples/dummyresource/resourcefacade.cpp | 84 ------------------------------- examples/dummyresource/resourcefacade.h | 49 ------------------ 3 files changed, 1 insertion(+), 134 deletions(-) delete mode 100644 examples/dummyresource/resourcefacade.cpp delete mode 100644 examples/dummyresource/resourcefacade.h (limited to 'examples') diff --git a/examples/dummyresource/CMakeLists.txt b/examples/dummyresource/CMakeLists.txt index e4b51dd..1e80f81 100644 --- a/examples/dummyresource/CMakeLists.txt +++ b/examples/dummyresource/CMakeLists.txt @@ -4,7 +4,7 @@ add_definitions(-DQT_PLUGIN) include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}) -add_library(${PROJECT_NAME} SHARED facade.cpp resourcefactory.cpp domainadaptor.cpp resourcefacade.cpp dummystore.cpp) +add_library(${PROJECT_NAME} SHARED facade.cpp resourcefactory.cpp domainadaptor.cpp dummystore.cpp) generate_flatbuffers(${PROJECT_NAME} dummycalendar) qt5_use_modules(${PROJECT_NAME} Core Network) target_link_libraries(${PROJECT_NAME} akonadi2common) diff --git a/examples/dummyresource/resourcefacade.cpp b/examples/dummyresource/resourcefacade.cpp deleted file mode 100644 index af0ebe6..0000000 --- a/examples/dummyresource/resourcefacade.cpp +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright (C) 2014 Christian Mollekopf - * - * 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) any later version. - * - * 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 "resourcefacade.h" - -#include -#include - -DummyResourceConfigFacade::DummyResourceConfigFacade() - : Akonadi2::StoreFacade() -{ - -} - -DummyResourceConfigFacade::~DummyResourceConfigFacade() -{ - -} - -QSharedPointer DummyResourceConfigFacade::getSettings() -{ - //FIXME deal with resource instances - const QString instanceIdentifier = "dummyresource.instance1"; - //FIXME Use config location - return QSharedPointer::create(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + "/akonadi2/" + "org.kde." + instanceIdentifier + "/settings.ini", QSettings::IniFormat); -} - -KAsync::Job DummyResourceConfigFacade::create(const Akonadi2::ApplicationDomain::AkonadiResource &domainObject) -{ - //TODO create resource instance - //This can be generalized in a base implementation - return KAsync::null(); -} - -KAsync::Job DummyResourceConfigFacade::modify(const Akonadi2::ApplicationDomain::AkonadiResource &domainObject) -{ - //modify configuration - //This part is likely resource specific, but could be partially generalized - return KAsync::start([domainObject, this]() { - auto settings = getSettings(); - //TODO Write properties to file - }); -} - -KAsync::Job DummyResourceConfigFacade::remove(const Akonadi2::ApplicationDomain::AkonadiResource &domainObject) -{ - //TODO remove resource instance - //This can be generalized in a base implementation - return KAsync::null(); -} - -KAsync::Job DummyResourceConfigFacade::load(const Akonadi2::Query &query, Akonadi2::ResultProviderInterface &resultProvider) -{ - //Read configuration and list all available instances. - //This includes runtime information about runing instances etc. - //Part of this is generic, and part is accessing the resource specific configuration. - //FIXME this currently does not support live queries (because we're not inheriting from GenericFacade) - //FIXME only read what was requested in the query? - return KAsync::start([&resultProvider, this]() { - auto settings = getSettings(); - auto memoryAdaptor = QSharedPointer::create(); - //TODO copy settings to adaptor - // - //TODO use correct instance identifier - //TODO key == instance identifier ? - resultProvider.add(QSharedPointer::create("org.kde.dummy.instance1", "org.kde.dummy.config", 0, memoryAdaptor)); - }); -} diff --git a/examples/dummyresource/resourcefacade.h b/examples/dummyresource/resourcefacade.h deleted file mode 100644 index 82e54fd..0000000 --- a/examples/dummyresource/resourcefacade.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (C) 2014 Christian Mollekopf - * - * 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) any later version. - * - * 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. - */ - -#pragma once - -#include -#include -#include -#include - -namespace Akonadi2 { - class Query; -} - -class QSettings; - -class DummyResourceConfigFacade : public Akonadi2::StoreFacade -{ -public: - DummyResourceConfigFacade(); - ~DummyResourceConfigFacade(); - //Create an instance - KAsync::Job create(const Akonadi2::ApplicationDomain::AkonadiResource &domainObject) Q_DECL_OVERRIDE; - //Modify configuration - KAsync::Job modify(const Akonadi2::ApplicationDomain::AkonadiResource &domainObject) Q_DECL_OVERRIDE; - //Remove instance - KAsync::Job remove(const Akonadi2::ApplicationDomain::AkonadiResource &domainObject) Q_DECL_OVERRIDE; - //Read configuration and available instances - KAsync::Job load(const Akonadi2::Query &query, Akonadi2::ResultProviderInterface &resultProvider) Q_DECL_OVERRIDE; - -private: - QSharedPointer getSettings(); -}; -- cgit v1.2.3