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() {}
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