20 #include "getquotarootjob.h"
22 #include <KDE/KLocale>
25 #include "quotajobbase_p.h"
26 #include "message_p.h"
27 #include "session_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;
44 using namespace KIMAP;
46 GetQuotaRootJob::GetQuotaRootJob( Session *session )
47 :
QuotaJobBase( *new GetQuotaRootJobPrivate(session, i18n(
"GetQuotaRoot")) )
51 GetQuotaRootJob::~GetQuotaRootJob()
55 void GetQuotaRootJob::doStart()
58 d->tags << d->sessionInternal()->sendCommand(
"GETQUOTAROOT",
'\"' + KIMAP::encodeImapFolderName( d->mailBox.toUtf8() ) +
'\"');
61 void GetQuotaRootJob::handleResponse(
const Message &response)
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())
76 d->rootList.append(response.content[i].toString());
81 if (response.content[1].toString() ==
"QUOTA" ) {
83 int quotaContentIndex = 3;
85 if (response.content.size() == 3 ) {
86 quotaContentIndex = 2;
88 rootName = response.content[2].toString();
91 const QMap<QByteArray, QPair<qint64, qint64> >& quota = d->readQuota(response.content[quotaContentIndex]);
92 if (d->quotas.contains(rootName)) {
93 d->quotas[ rootName ].unite(quota);
95 d->quotas[ rootName ] = quota;
128 QByteArray r = resource.toUpper();
130 if (d->quotas.contains(root) && d->quotas[root].contains(r)) {
131 return d->quotas[root][r].first;
141 QByteArray r = resource.toUpper();
143 if (d->quotas.contains(root) && d->quotas[root].contains(r)) {
144 return d->quotas[root][r].second;
154 QMap<QByteArray, qint64> result;
156 if (d->quotas.contains(root)) {
157 const QMap< QByteArray, QPair<qint64, qint64> > quota = d->quotas[root];
158 QMapIterator<QByteArray, QPair<qint64, qint64> > it( quota );
159 while ( it.hasNext() ) {
161 result[it.key()] = it.value().first;
172 QMap<QByteArray, qint64> result;
174 if (d->quotas.contains(root)) {
175 const QMap< QByteArray, QPair<qint64, qint64> > quota = d->quotas[root];
176 QMapIterator<QByteArray, QPair<qint64, qint64> > it( quota );
177 while ( it.hasNext() ) {
179 result[it.key()] = it.value().second;
186 #include "getquotarootjob.moc"