kmail

quotajobs.h

00001 
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 // One quota entry consisting of a name, the quota root,
00048 // the current value and the maximal value
00049 class QuotaInfo {
00050   public :
00051   QuotaInfo() {} // for QValueVector
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;  // e.g. STORAGE
00096   QString mRoot; 
00097   QVariant mCurrent;
00098   QVariant mMax;
00099   mutable QString mUnits; //used by readConfig (const) privately and is modified
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 } // QuotaJobs namespace
00183 
00184 } // KMail namespace
00185 
00186 
00187 #endif /* QUOTAJOBS_H */
00188 
KDE Home | KDE Accessibility Home | Description of Access Keys