20#include "namespacejob.h"
23#include <KDE/KLocalizedString>
30#include "imapstreamparser.h"
34 class NamespaceJobPrivate :
public JobPrivate
37 NamespaceJobPrivate( Session *session,
const QString& name ) : JobPrivate( session, name ) { }
38 ~NamespaceJobPrivate() { }
40 QList<MailBoxDescriptor> processNamespaceList(
const QList<QByteArray> &namespaceList )
42 QList<MailBoxDescriptor> result;
44 foreach (
const QByteArray &namespaceItem, namespaceList ) {
46 parser.setData( namespaceItem );
49 QList<QByteArray> parts = parser.readParenthesizedList();
50 if ( parts.size() < 2 ) {
53 MailBoxDescriptor descriptor;
55 descriptor.separator = QLatin1Char( parts[1][0] );
58 }
catch ( KIMAP::ImapParserException e ) {
59 qWarning() <<
"The stream parser raised an exception during namespace list parsing:" << e.what();
60 qWarning() <<
"namespacelist:" << namespaceList;
68 QList<MailBoxDescriptor> personalNamespaces;
69 QList<MailBoxDescriptor> userNamespaces;
70 QList<MailBoxDescriptor> sharedNamespaces;
76NamespaceJob::NamespaceJob( Session *session )
77 : Job( *new NamespaceJobPrivate( session, i18n(
"Namespace" ) ) )
81NamespaceJob::~NamespaceJob()
85QList<MailBoxDescriptor> NamespaceJob::personalNamespaces()
const
87 Q_D(
const NamespaceJob );
88 return d->personalNamespaces;
91QList<MailBoxDescriptor> NamespaceJob::userNamespaces()
const
93 Q_D(
const NamespaceJob );
94 return d->userNamespaces;
97QList<MailBoxDescriptor> NamespaceJob::sharedNamespaces()
const
99 Q_D(
const NamespaceJob );
100 return d->sharedNamespaces;
103bool NamespaceJob::containsEmptyNamespace()
const
105 Q_D(
const NamespaceJob );
106 QList<MailBoxDescriptor> completeList = d->personalNamespaces
108 + d->sharedNamespaces;
110 foreach (
const MailBoxDescriptor &descriptor, completeList ) {
111 if ( descriptor.name.isEmpty() ) {
119void NamespaceJob::doStart()
122 d->tags << d->sessionInternal()->sendCommand(
"NAMESPACE" );
125void NamespaceJob::handleResponse(
const Message &response )
128 if ( handleErrorReplies( response ) == NotHandled ) {
129 if ( response.content.size() >= 5 &&
130 response.content[1].toString() ==
"NAMESPACE" ) {
132 d->personalNamespaces = d->processNamespaceList( response.content[2].toList() );
135 d->userNamespaces = d->processNamespaceList( response.content[3].toList() );
138 d->sharedNamespaces = d->processNamespaceList( response.content[4].toList() );
Parser for IMAP messages that operates on a local socket stream.
This file is part of the IMAP support library and defines the RfcCodecs class.
QByteArray decodeImapFolderName(const QByteArray &inSrc)
Converts an UTF-7 encoded IMAP mailbox to a QByteArray.