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
00060 s += it.key() + ' ' + QByteArray::number(it.value()) + ' ';
00061 }
00062 if (d->setList.isEmpty()) {
00063 s += ')';
00064 } else {
00065 s[s.length() - 1] = ')';
00066 }
00067
00068 kDebug() << "SETQUOTA " << '\"' + d->root + "\" " + s;
00069
00070 d->tags << d->sessionInternal()->sendCommand( "SETQUOTA", '\"' + d->root + "\" " + s);
00071 }
00072
00073 void SetQuotaJob::handleResponse(const Message &response)
00074 {
00075 Q_D(SetQuotaJob);
00076 if (handleErrorReplies(response) == NotHandled) {
00077 if ( response.content.size() >= 4
00078 && response.content[1].toString() == "QUOTA" ) {
00079 d->quota = d->readQuota(response.content[3]);
00080 }
00081 }
00082 }
00083
00084
00085 void SetQuotaJob::setQuota(const QByteArray &resource, qint64 limit)
00086 {
00087 Q_D(SetQuotaJob);
00088
00089 d->setList[resource.toUpper()] = limit;
00090 }
00091
00092 void SetQuotaJob::setRoot(const QByteArray& root)
00093 {
00094 Q_D(SetQuotaJob);
00095
00096 d->root = root;
00097 }
00098
00099 QByteArray SetQuotaJob::root() const
00100 {
00101 Q_D(const SetQuotaJob);
00102
00103 return d->root;
00104 }
00105
00106 #include "setquotajob.moc"