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