1 /* 2 SPDX-FileCopyrightText: 2009 Kevin Ottens <ervin@kde.org> 3 4 SPDX-License-Identifier: LGPL-2.0-or-later 5 */ 6 7 #include "capabilitiesjob.h" 8 9 #include <KLocalizedString> 10 11 #include "job_p.h" 12 #include "response_p.h" 13 #include "session_p.h" 14 15 namespace KIMAP 16 { 17 class CapabilitiesJobPrivate : public JobPrivate 18 { 19 public: CapabilitiesJobPrivate(Session * session,const QString & name)20 CapabilitiesJobPrivate(Session *session, const QString &name) 21 : JobPrivate(session, name) 22 { 23 } ~CapabilitiesJobPrivate()24 ~CapabilitiesJobPrivate() 25 { 26 } 27 28 QStringList capabilities; 29 }; 30 } 31 32 using namespace KIMAP; 33 CapabilitiesJob(Session * session)34CapabilitiesJob::CapabilitiesJob(Session *session) 35 : Job(*new CapabilitiesJobPrivate(session, i18n("Capabilities"))) 36 { 37 } 38 ~CapabilitiesJob()39CapabilitiesJob::~CapabilitiesJob() 40 { 41 } 42 capabilities() const43QStringList CapabilitiesJob::capabilities() const 44 { 45 Q_D(const CapabilitiesJob); 46 return d->capabilities; 47 } 48 doStart()49void CapabilitiesJob::doStart() 50 { 51 Q_D(CapabilitiesJob); 52 d->tags << d->sessionInternal()->sendCommand("CAPABILITY"); 53 } 54 handleResponse(const Response & response)55void CapabilitiesJob::handleResponse(const Response &response) 56 { 57 Q_D(CapabilitiesJob); 58 if (handleErrorReplies(response) == NotHandled) { 59 const int responseSize(response.content.size()); 60 if (responseSize >= 2 && response.content[1].toString() == "CAPABILITY") { 61 for (int i = 2; i < responseSize; ++i) { 62 d->capabilities << QLatin1String(response.content[i].toString().toUpper()); 63 } 64 Q_EMIT capabilitiesReceived(d->capabilities); 65 } 66 } 67 } 68