kmail Library API Documentation

acljobs.h

00001 
00032 #ifndef KMACLJOBS_H
00033 #define KMACLJOBS_H
00034 
00035 #include <kio/job.h>
00036 #include <qvaluevector.h>
00037 
00038 namespace KMail {
00039 
00041   struct ACLListEntry {
00042     ACLListEntry() {} // for QValueVector
00043     ACLListEntry( const QString& u, const QString& irl, int p )
00044       : userId( u ), internalRightsList( irl ), permissions( p ), changed( false ) {}
00045     QString userId;
00046     QString internalRightsList; 
00047     int permissions; 
00048     bool changed; 
00049   };
00050 
00051   typedef QValueVector<ACLListEntry> ACLList;
00052 
00060 namespace ACLJobs {
00061 
00064   enum ACLPermissions {
00065     List = 1,
00066     Read = 2,
00067     WriteFlags = 4,
00068     Insert = 8,
00069     Create = 16,
00070     Delete = 32,
00071     Administer = 64,
00072     Post = 128,
00073     // alias for "all read/write permissions except admin"
00074     AllWrite = List | Read | WriteFlags | Insert | Post | Create | Delete,
00075     // alias for "all permissions"
00076     All = List | Read | WriteFlags | Insert | Post | Create | Delete | Administer
00077   };
00079   KIO::SimpleJob* setACL( KIO::Slave* slave, const KURL& url, const QString& user, unsigned int permissions );
00080 
00081   class DeleteACLJob;
00083   DeleteACLJob* deleteACL( KIO::Slave* slave, const KURL& url, const QString& user );
00084 
00085   class GetACLJob;
00087   GetACLJob* getACL( KIO::Slave* slave, const KURL& url );
00088 
00089   class GetUserRightsJob;
00091   GetUserRightsJob* getUserRights( KIO::Slave* slave, const KURL& url );
00092 
00093   class MultiSetACLJob;
00095   MultiSetACLJob* multiSetACL( KIO::Slave* slave, const KURL& url, const ACLList& acl );
00096 
00098   class GetACLJob : public KIO::SimpleJob
00099   {
00100     Q_OBJECT
00101   public:
00102     GetACLJob( const KURL& url, const QByteArray &packedArgs,
00103                bool showProgressInfo );
00104 
00105     const ACLList& entries() const { return m_entries; }
00106 
00107   protected slots:
00108     void slotInfoMessage( KIO::Job*, const QString& );
00109   private:
00110     ACLList m_entries;
00111   };
00112 
00114   class GetUserRightsJob : public KIO::SimpleJob
00115   {
00116     Q_OBJECT
00117   public:
00118     GetUserRightsJob( const KURL& url, const QByteArray &packedArgs,
00119                       bool showProgressInfo );
00120     unsigned int permissions() const { return m_permissions; }
00121 
00122   protected slots:
00123     void slotInfoMessage( KIO::Job*, const QString& );
00124   private:
00125     unsigned int m_permissions;
00126   };
00127 
00130   class DeleteACLJob : public KIO::SimpleJob
00131   {
00132     Q_OBJECT
00133   public:
00134     DeleteACLJob( const KURL& url, const QString& userId,
00135                   const QByteArray &packedArgs,
00136                   bool showProgressInfo );
00137 
00138     QString userId() const { return mUserId; }
00139 
00140   private:
00141     QString mUserId;
00142   };
00143 
00145   class MultiSetACLJob : public KIO::Job {
00146     Q_OBJECT
00147 
00148   public:
00149     MultiSetACLJob( KIO::Slave* slave, const KURL& url, const ACLList& acl, bool showProgressInfo );
00150 
00151   signals:
00152     // Emitted when a given user's permissions were successfully changed.
00153     // This allows the caller to keep track of what exactly was done (and handle errors better)
00154     void aclChanged( const QString& userId, int permissions );
00155 
00156   protected slots:
00157     virtual void slotStart();
00158     virtual void slotResult( KIO::Job *job );
00159 
00160   private:
00161     KIO::Slave* mSlave;
00162     const KURL mUrl;
00163     const ACLList mACLList;
00164     ACLList::const_iterator mACLListIterator;
00165   };
00166 
00167 
00168 #ifndef NDEBUG
00169   QString permissionsToString( unsigned int permissions );
00170 #endif
00171 }
00172 
00173 } // namespace
00174 
00175 #endif /* KMACLJOBS_H */
KDE Logo
This file is part of the documentation for kmail Library Version 3.3.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Jan 31 15:54:40 2007 by doxygen 1.4.2 written by Dimitri van Heesch, © 1997-2003