File indexing completed on 2024-05-12 05:17:13

0001 /*
0002     SPDX-FileCopyrightText: 2020 Daniel Vrátil <dvratil@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "enablejob.h"
0008 
0009 #include <KLocalizedString>
0010 
0011 #include "job_p.h"
0012 #include "kimap_debug.h"
0013 #include "response_p.h"
0014 #include "session_p.h"
0015 
0016 namespace KIMAP
0017 {
0018 class EnableJobPrivate : public JobPrivate
0019 {
0020 public:
0021     using JobPrivate::JobPrivate;
0022 
0023     QStringList reqCapabilities;
0024     QStringList enabledCapabilities;
0025 };
0026 }
0027 
0028 using namespace KIMAP;
0029 
0030 EnableJob::EnableJob(Session *session)
0031     : Job(*new EnableJobPrivate(session, i18n("Enable")))
0032 {
0033 }
0034 
0035 EnableJob::~EnableJob() = default;
0036 
0037 void EnableJob::setCapabilities(const QStringList &capabilities)
0038 {
0039     Q_D(EnableJob);
0040     d->reqCapabilities = capabilities;
0041 }
0042 
0043 QStringList EnableJob::enabledCapabilities() const
0044 {
0045     Q_D(const EnableJob);
0046     return d->enabledCapabilities;
0047 }
0048 
0049 void EnableJob::doStart()
0050 {
0051     Q_D(EnableJob);
0052     d->tags << d->sessionInternal()->sendCommand("ENABLE", d->reqCapabilities.join(QLatin1Char{' '}).toLatin1());
0053 }
0054 
0055 void EnableJob::handleResponse(const Response &response)
0056 {
0057     Q_D(EnableJob);
0058 
0059     if (handleErrorReplies(response) == NotHandled) {
0060         if (response.content.size() >= 2) {
0061             for (int i = 2; i < response.content.size(); ++i) {
0062                 d->enabledCapabilities.push_back(QString::fromLatin1(response.content[i].toString()));
0063             }
0064         } else {
0065             qCDebug(KIMAP_LOG) << response.toString();
0066         }
0067     }
0068 }
0069 
0070 #include "moc_enablejob.cpp"