00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
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() {}
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
00065 enum ACLPermissions {
00066 List = 1,
00067 Read = 2,
00068 WriteFlags = 4,
00069 Insert = 8,
00070 Create = 16,
00071 Delete = 32,
00072 Administer = 64,
00073 Post = 128,
00074
00075 AllWrite = List | Read | WriteFlags | Insert | Post | Create | Delete,
00076
00077 All = List | Read | WriteFlags | Insert | Post | Create | Delete | Administer
00078 };
00080 KIO::SimpleJob* setACL( KIO::Slave* slave, const KURL& url, const QString& user, unsigned int permissions );
00081
00082 class DeleteACLJob;
00084 DeleteACLJob* deleteACL( KIO::Slave* slave, const KURL& url, const QString& user );
00085
00086 class GetACLJob;
00088 GetACLJob* getACL( KIO::Slave* slave, const KURL& url );
00089
00090 class GetUserRightsJob;
00092 GetUserRightsJob* getUserRights( KIO::Slave* slave, const KURL& url );
00093
00094 class MultiSetACLJob;
00096 MultiSetACLJob* multiSetACL( KIO::Slave* slave, const KURL& url, const ACLList& acl );
00097
00099 class GetACLJob : public KIO::SimpleJob
00100 {
00101 Q_OBJECT
00102 public:
00103 GetACLJob( const KURL& url, const QByteArray &packedArgs,
00104 bool showProgressInfo );
00105
00106 const ACLList& entries() const { return m_entries; }
00107
00108 protected slots:
00109 void slotInfoMessage( KIO::Job*, const QString& );
00110 private:
00111 ACLList m_entries;
00112 };
00113
00115 class GetUserRightsJob : public KIO::SimpleJob
00116 {
00117 Q_OBJECT
00118 public:
00119 GetUserRightsJob( const KURL& url, const QByteArray &packedArgs,
00120 bool showProgressInfo );
00121 unsigned int permissions() const { return m_permissions; }
00122
00123 protected slots:
00124 void slotInfoMessage( KIO::Job*, const QString& );
00125 private:
00126 unsigned int m_permissions;
00127 };
00128
00131 class DeleteACLJob : public KIO::SimpleJob
00132 {
00133 Q_OBJECT
00134 public:
00135 DeleteACLJob( const KURL& url, const QString& userId,
00136 const QByteArray &packedArgs,
00137 bool showProgressInfo );
00138
00139 QString userId() const { return mUserId; }
00140
00141 private:
00142 QString mUserId;
00143 };
00144
00146 class MultiSetACLJob : public KIO::Job {
00147 Q_OBJECT
00148
00149 public:
00150 MultiSetACLJob( KIO::Slave* slave, const KURL& url, const ACLList& acl, bool showProgressInfo );
00151
00152 signals:
00153
00154
00155 void aclChanged( const QString& userId, int permissions );
00156
00157 protected slots:
00158 virtual void slotStart();
00159 virtual void slotResult( KIO::Job *job );
00160
00161 private:
00162 KIO::Slave* mSlave;
00163 const KURL mUrl;
00164 const ACLList mACLList;
00165 ACLList::const_iterator mACLListIterator;
00166 };
00167
00168
00169 #ifndef NDEBUG
00170 QString permissionsToString( unsigned int permissions );
00171 #endif
00172 }
00173
00174 }
00175
00176 #endif