File indexing completed on 2024-06-16 04:52:27

0001 /*
0002     Copyright (c) 2010 Tobias Koenig <tokoe@kde.org>
0003 
0004     This program is free software; you can redistribute it and/or modify
0005     it under the terms of the GNU General Public License as published by
0006     the Free Software Foundation; either version 2 of the License, or
0007     (at your option) any later version.
0008 
0009     This program is distributed in the hope that it will be useful,
0010     but WITHOUT ANY WARRANTY; without even the implied warranty of
0011     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0012     GNU General Public License for more details.
0013 
0014     You should have received a copy of the GNU General Public License
0015     along with this program; if not, write to the Free Software
0016     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
0017 */
0018 
0019 #ifndef KDAV2_DAVCOLLECTIONSMULTIFETCHJOB_H
0020 #define KDAV2_DAVCOLLECTIONSMULTIFETCHJOB_H
0021 
0022 #include "kpimkdav2_export.h"
0023 
0024 #include "davcollection.h"
0025 #include "davurl.h"
0026 
0027 #include <KCoreAddons/KJob>
0028 
0029 namespace KDAV2
0030 {
0031 
0032 /**
0033  * @short A job that fetches all DAV collection.
0034  *
0035  * This job is used to fetch all DAV collection that are available
0036  * under a certain list of DAV urls.
0037  *
0038  * @note This class just combines multiple calls of DavCollectionsFetchJob
0039  *       into one job.
0040  */
0041 class KPIMKDAV2_EXPORT DavCollectionsMultiFetchJob : public KJob
0042 {
0043     Q_OBJECT
0044 
0045 public:
0046     /**
0047      * Creates a new dav collections multi fetch job.
0048      *
0049      * @param urls The list of DAV urls whose sub collections shall be fetched.
0050      * @param parent The parent object.
0051      */
0052     explicit DavCollectionsMultiFetchJob(const DavUrl::List &urls, QObject *parent = nullptr);
0053 
0054     /**
0055      * Starts the job.
0056      */
0057     void start() Q_DECL_OVERRIDE;
0058 
0059     /**
0060      * Returns the list of fetched DAV collections.
0061      */
0062     DavCollection::List collections() const;
0063 
0064 Q_SIGNALS:
0065     /**
0066      * This signal is emitted every time a new collection has been discovered.
0067      *
0068      * @param collectionUrl The URL of the discovered collection
0069      * @param configuredUrl The URL given to the job
0070      */
0071     void collectionDiscovered(int protocol, const QString &collectionUrl, const QString &configuredUrl);
0072 
0073 private Q_SLOTS:
0074     void davJobFinished(KJob *);
0075 
0076 private:
0077     DavUrl::List mUrls;
0078     DavCollection::List mCollections;
0079     uint mSubJobCount;
0080 };
0081 
0082 }
0083 
0084 #endif