kmail
quotajobs.h00001
00032 #ifndef QUOTAJOBS_H
00033 #define QUOTAJOBS_H
00034
00035 #include <qvariant.h>
00036
00037 #include <kio/job.h>
00038 #include <klocale.h>
00039 #include <qvaluevector.h>
00040
00041 #include <math.h>
00042
00043 #include "globalsettings.h"
00044
00045 namespace KMail {
00046
00047
00048
00049 class QuotaInfo {
00050 public :
00051 QuotaInfo() {}
00052 QuotaInfo( const QString& _name, const QString& _root, const QVariant& _current, const QVariant& _max )
00053 : mName( _name ), mRoot( _root ), mCurrent( _current ),mMax( _max ) {}
00054 bool isValid() const { return !mName.isEmpty(); }
00055 bool isEmpty() const { return mName.isEmpty() || ( mRoot.isEmpty() && !mCurrent.isValid() && !mMax.isValid() ); }
00056
00057 QString name() const { return mName; }
00058 void setName( const QString& n ) { mName = n; }
00059 QString root() const { return mRoot; }
00060 void setRoot( const QString& r ) { mRoot = r; }
00061 QVariant max() const { return mMax; }
00062 void setMax( const QVariant& m ) { mMax = m; }
00063 QVariant current() const { return mCurrent; }
00064 void setCurrent( const QVariant& c ) { mCurrent = c; }
00065
00066 QString toString() const {
00067 if ( isValid() && !isEmpty() ) {
00068 readConfig();
00069 int factor = static_cast<int> ( pow( 1000, mFactor ) );
00070 return i18n("%1 of %2 %3 used").arg( mCurrent.toInt() / factor )
00071 .arg( mMax.toInt() / factor ).arg( mUnits );
00072 }
00073 return QString();
00074 }
00075
00076 private:
00077 void readConfig() const {
00078 if( GlobalSettings::self()->quotaUnit() == GlobalSettings::EnumQuotaUnit::KB )
00079 {
00080 mUnits = i18n("KB");
00081 mFactor = 0;
00082 }
00083 else if( GlobalSettings::self()->quotaUnit() == GlobalSettings::EnumQuotaUnit::MB )
00084 {
00085 mUnits = i18n("MB");
00086 mFactor = 1;
00087 }
00088 else if( GlobalSettings::self()->quotaUnit() == GlobalSettings::EnumQuotaUnit::GB )
00089 {
00090 mUnits = i18n("GB");
00091 mFactor = 2;
00092 }
00093 }
00094
00095 QString mName;
00096 QString mRoot;
00097 QVariant mCurrent;
00098 QVariant mMax;
00099 mutable QString mUnits;
00100 mutable int mFactor;
00101 };
00102
00103 typedef QValueVector<QuotaInfo> QuotaInfoList;
00104
00112 namespace QuotaJobs {
00113
00114 class GetQuotarootJob;
00120 GetQuotarootJob* getQuotaroot( KIO::Slave* slave, const KURL& url );
00121
00122 class GetStorageQuotaJob;
00128 GetStorageQuotaJob* getStorageQuota( KIO::Slave* slave, const KURL& url );
00129
00131 class GetQuotarootJob : public KIO::SimpleJob
00132 {
00133 Q_OBJECT
00134 public:
00135 GetQuotarootJob( const KURL& url, const QByteArray &packedArgs, bool showProgressInfo );
00136
00137 signals:
00142 void quotaRootResult( const QStringList& roots );
00143
00150 void quotaInfoReceived( const QuotaInfoList& info );
00151
00152 protected slots:
00153 void slotInfoMessage( KIO::Job*, const QString& );
00154 };
00155
00157 class GetStorageQuotaJob : public KIO::Job
00158 {
00159 Q_OBJECT
00160 public:
00161 GetStorageQuotaJob( KIO::Slave* slave, const KURL& url );
00162
00164 QuotaInfo storageQuotaInfo() const;
00165
00166 signals:
00172 void storageQuotaResult( const QuotaInfo& info );
00173
00174
00175 protected slots:
00176 void slotQuotarootResult( const QStringList& roots );
00177 void slotQuotaInfoReceived( const QuotaInfoList& roots );
00178 private:
00179 QuotaInfo mStorageQuotaInfo;
00180 };
00181
00182 }
00183
00184 }
00185
00186
00187 #endif
00188
|