File indexing completed on 2024-06-02 05:32:57

0001 /*
0002  * SPDX-FileCopyrightText: 2014 Kevin Ottens <ervin@kde.org>
0003  * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0004  */
0005 
0006 
0007 #ifndef DOMAIN_DATASOURCEQUERIES_H
0008 #define DOMAIN_DATASOURCEQUERIES_H
0009 
0010 #include <QObject>
0011 
0012 #include "datasource.h"
0013 #include "project.h"
0014 #include "queryresult.h"
0015 
0016 namespace Domain {
0017 
0018 class DataSourceQueries;
0019 
0020 class DataSourceQueriesNotifier : public QObject
0021 {
0022     Q_OBJECT
0023 signals:
0024     void defaultSourceChanged();
0025 
0026 private:
0027     friend class DataSourceQueries;
0028 };
0029 
0030 class DataSourceQueries
0031 {
0032 public:
0033     typedef QSharedPointer<DataSourceQueries> Ptr;
0034 
0035     DataSourceQueries();
0036     virtual ~DataSourceQueries();
0037 
0038     DataSourceQueriesNotifier *notifier() const;
0039 
0040     virtual bool isDefaultSource(DataSource::Ptr source) const = 0;
0041     void setDefaultSource(DataSource::Ptr source);
0042 
0043 // HACK: Ugly right? Find me another way to mock changeDefaultSource then...
0044 #ifdef ZANSHIN_I_SWEAR_I_AM_IN_A_PRESENTATION_TEST
0045 public:
0046 #else
0047 private:
0048 #endif
0049     virtual void changeDefaultSource(DataSource::Ptr source) = 0;
0050 
0051 public:
0052     virtual QueryResult<DataSource::Ptr>::Ptr findTopLevel() const = 0;
0053     virtual QueryResult<DataSource::Ptr>::Ptr findChildren(DataSource::Ptr source) const = 0;
0054     virtual QueryResult<DataSource::Ptr>::Ptr findAllSelected() const = 0;
0055     virtual QueryResult<Project::Ptr>::Ptr findProjects(DataSource::Ptr source) const = 0;
0056 };
0057 
0058 }
0059 
0060 #endif // DOMAIN_DATASOURCEQUERIES_H