20#include "getquotarootjob.h"
22#include <KDE/KLocalizedString>
25#include "quotajobbase_p.h"
32 class GetQuotaRootJobPrivate :
public QuotaJobBasePrivate
35 GetQuotaRootJobPrivate( Session *session,
const QString& name ) : QuotaJobBasePrivate( session, name ) { }
36 ~GetQuotaRootJobPrivate() { }
39 QList<QByteArray> rootList;
40 QMap< QByteArray, QMap<QByteArray, QPair<qint64, qint64> > > quotas;
46GetQuotaRootJob::GetQuotaRootJob( Session *session )
47 :
QuotaJobBase( *new GetQuotaRootJobPrivate( session, i18n(
"GetQuotaRoot" ) ) )
51GetQuotaRootJob::~GetQuotaRootJob()
55void GetQuotaRootJob::doStart()
57 Q_D( GetQuotaRootJob );
58 d->tags << d->sessionInternal()->sendCommand(
"GETQUOTAROOT",
'\"' + KIMAP::encodeImapFolderName( d->mailBox.toUtf8() ) +
'\"' );
61void GetQuotaRootJob::handleResponse(
const Message &response)
63 Q_D( GetQuotaRootJob );
64 if ( handleErrorReplies( response ) == NotHandled ) {
65 if ( response.content.size() >= 3 ) {
66 if ( response.content[1].toString() ==
"QUOTAROOT" ) {
70 if ( response.content.size() == 3 ) {
71 d->rootList.append(
"" );
74 while ( i < response.content.size() ) {
75 d->rootList.append( response.content[i].toString() );
79 }
else if ( response.content[1].toString() ==
"QUOTA" ) {
81 int quotaContentIndex = 3;
83 if ( response.content.size() == 3 ) {
84 quotaContentIndex = 2;
86 rootName = response.content[2].toString();
89 const QMap<QByteArray, QPair<qint64, qint64> >& quota = d->readQuota(response.content[quotaContentIndex]);
90 if ( d->quotas.contains( rootName ) ) {
91 d->quotas[ rootName ].unite( quota );
93 d->quotas[ rootName ] = quota;
102 Q_D( GetQuotaRootJob );
108 Q_D(
const GetQuotaRootJob );
114 Q_D(
const GetQuotaRootJob );
120 Q_D(
const GetQuotaRootJob );
121 QByteArray r = resource.toUpper();
123 if ( d->quotas.contains( root ) && d->quotas[root].contains( r ) ) {
124 return d->quotas[root][r].first;
131 Q_D(
const GetQuotaRootJob );
133 QByteArray r = resource.toUpper();
135 if ( d->quotas.contains( root ) && d->quotas[root].contains( r ) ) {
136 return d->quotas[root][r].second;
143 Q_D(
const GetQuotaRootJob );
145 QMap<QByteArray, qint64> result;
147 if ( d->quotas.contains( root ) ) {
148 const QMap< QByteArray, QPair<qint64, qint64> > quota = d->quotas[root];
149 QMapIterator<QByteArray, QPair<qint64, qint64> > it( quota );
150 while ( it.hasNext() ) {
152 result[it.key()] = it.value().first;
160 Q_D(
const GetQuotaRootJob );
162 QMap<QByteArray, qint64> result;
164 if ( d->quotas.contains( root ) ) {
165 const QMap< QByteArray, QPair<qint64, qint64> > quota = d->quotas[root];
166 QMapIterator<QByteArray, QPair<qint64, qint64> > it( quota );
167 while ( it.hasNext() ) {
169 result[it.key()] = it.value().second;
qint64 usage(const QByteArray &root, const QByteArray &resource) const
Get the current usage for a resource.
QString mailBox() const
The mailbox that the quota roots will be fetched for.
QList< QByteArray > roots() const
The quota roots for the mailbox.
qint64 limit(const QByteArray &root, const QByteArray &resource) const
Get the current limit for a resource.
void setMailBox(const QString &mailBox)
Set the mailbox to get the quota roots for.
QMap< QByteArray, qint64 > allLimits(const QByteArray &root) const
Get a map containing all resource limits for a quota root.
QMap< QByteArray, qint64 > allUsages(const QByteArray &root) const
Get a map containing all resource usage figures for a quota root.
Base class for jobs that operate on mailbox quotas.
This file is part of the IMAP support library and defines the RfcCodecs class.