File indexing completed on 2024-05-12 05:12:42
0001 /* 0002 Copyright (C) 2014 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 TAGSCOMMAND_H 0020 #define TAGSCOMMAND_H 0021 0022 #include "abstractcommand.h" 0023 0024 #include <akonadi/tag.h> 0025 0026 class KJob; 0027 0028 class TagsCommand : public AbstractCommand 0029 { 0030 Q_OBJECT 0031 0032 public: 0033 explicit TagsCommand(QObject *parent = nullptr); 0034 virtual ~TagsCommand() = default; 0035 0036 QString name() const override; 0037 0038 public Q_SLOTS: 0039 void start() override; 0040 0041 protected: 0042 void setupCommandOptions(QCommandLineParser *parser) override; 0043 int initCommand(QCommandLineParser *parser) override; 0044 0045 private: 0046 enum Mode { 0047 ModeList, 0048 ModeAdd, 0049 ModeDelete 0050 }; 0051 0052 bool mBriefOutput; 0053 bool mUrlsOutput; 0054 TagsCommand::Mode mOperationMode; 0055 int mAddForceId; 0056 Akonadi::Tag::List mFetchedTags; 0057 0058 private: 0059 void listTags(); 0060 0061 private Q_SLOTS: 0062 void onTagsFetched(KJob *job); 0063 void addNextTag(); 0064 void onTagAdded(KJob *job); 0065 void deleteNextTag(); 0066 void onTagDeleted(KJob *job); 0067 }; 0068 0069 #endif // TAGSCOMMAND_H