File indexing completed on 2024-05-12 05:12:40
0001 /* 0002 Copyright (C) 2013 Jonathan Marten <jjm@keelhaul.me.uk> 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 along 0015 with this program; if not, write to the Free Software Foundation, Inc., 0016 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 0017 */ 0018 0019 #ifndef COPYCOMMAND_H 0020 #define COPYCOMMAND_H 0021 0022 #include "abstractcommand.h" 0023 0024 #include <Akonadi/Collection> 0025 0026 class KJob; 0027 0028 class CopyCommand : public AbstractCommand 0029 { 0030 Q_OBJECT 0031 0032 public: 0033 explicit CopyCommand(QObject *parent = nullptr); 0034 virtual ~CopyCommand() = default; 0035 0036 QString name() const override; 0037 0038 public Q_SLOTS: 0039 virtual void start() override; 0040 0041 protected: 0042 bool mMoving; 0043 0044 protected: 0045 virtual void setupCommandOptions(QCommandLineParser *parser) override; 0046 virtual int initCommand(QCommandLineParser *parser) override; 0047 0048 private: 0049 QString mDestinationArg; 0050 Akonadi::Collection mDestinationCollection; 0051 Akonadi::Collection mSourceCollection; 0052 Akonadi::Collection::List mSubCollections; 0053 0054 private: 0055 void doNextSubcollection(const QString &sourceArg); 0056 void fetchItems(const QString &sourceArg); 0057 0058 private Q_SLOTS: 0059 void onTargetFetched(KJob *job); 0060 void onSourceResolved(KJob *job); 0061 void onRecursiveCopyFinished(KJob *job); 0062 void onCollectionCopyFinished(KJob *job); 0063 void onItemCopyFinished(KJob *job); 0064 void onCollectionsFetched(KJob *job); 0065 void onItemsFetched(KJob *job); 0066 0067 void processNextSource(); 0068 void processNextSubcollection(const QString &sourceArg); 0069 0070 }; 0071 0072 #endif // COPYCOMMAND_H