00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "setquotajob.h"
00021
00022 #include <KDE/KLocale>
00023 #include <KDE/KDebug>
00024
00025 #include "quotajobbase_p.h"
00026 #include "message_p.h"
00027 #include "session_p.h"
00028
00029 namespace KIMAP
00030 {
00031 class SetQuotaJobPrivate : public QuotaJobBasePrivate
00032 {
00033 public:
00034 SetQuotaJobPrivate( Session *session, const QString& name ) : QuotaJobBasePrivate(session, name) { }
00035 ~SetQuotaJobPrivate() { }
00036
00037 QMap<QByteArray, qint64> setList;
00038 QByteArray root;
00039 };
00040 }
00041
00042 using namespace KIMAP;
00043
00044 SetQuotaJob::SetQuotaJob( Session *session )
00045 : QuotaJobBase( *new SetQuotaJobPrivate(session, i18n("SetQuota")) )
00046 {
00047 }
00048
00049 SetQuotaJob::~SetQuotaJob()
00050 {
00051 }
00052
00053 void SetQuotaJob::doStart()
00054 {
00055 Q_D(SetQuotaJob);
00056 QByteArray s;
00057 s += '(';
00058 for (QMap<QByteArray, qint64>::ConstIterator it = d->setList.constBegin(); it != d->setList.constEnd(); ++it ) {
00059 s += it.key() + ' ' + QByteArray::number(it.value()) + ' ';
00060 }
00061 if (d->setList.isEmpty()) {
00062 s += ')';
00063 } else {
00064 s[s.length() - 1] = ')';
00065 }
00066
00067 kDebug() << "SETQUOTA " << '\"' + d->root + "\" " + s;
00068
00069 d->tags << d->sessionInternal()->sendCommand( "SETQUOTA", '\"' + d->root + "\" " + s);
00070 }
00071
00072 void SetQuotaJob::handleResponse(const Message &response)
00073 {
00074 Q_D(SetQuotaJob);
00075 if (handleErrorReplies(response) == NotHandled) {
00076 if ( response.content.size() >= 4
00077 && response.content[1].toString() == "QUOTA" ) {
00078 d->quota = d->readQuota(response.content[3]);
00079 }
00080 }
00081 }
00082
00083
00084 void SetQuotaJob::setQuota(const QByteArray &resource, qint64 limit)
00085 {
00086 Q_D(SetQuotaJob);
00087
00088 d->setList[resource.toUpper()] = limit;
00089 }
00090
00091 void SetQuotaJob::setRoot(const QByteArray& root)
00092 {
00093 Q_D(SetQuotaJob);
00094
00095 d->root = root;
00096 }
00097
00098 QByteArray SetQuotaJob::root() const
00099 {
00100 Q_D(const SetQuotaJob);
00101
00102 return d->root;
00103 }
00104
00105 #include "setquotajob.moc"