00001
00032 #ifndef FOLDERDIAACL_H
00033 #define FOLDERDIAACL_H
00034
00035 #include "kmfolderdia.h"
00036 #include "acljobs.h"
00037 #include "kmfoldertype.h"
00038
00039 class KMFolderImap;
00040 class KPushButton;
00041 class TQWidgetStack;
00042 class TQHBox;
00043 class TQVButtonGroup;
00044 class TDEListView;
00045 namespace TDEIO { class Job; }
00046
00047 namespace KMail {
00048
00049 enum IMAPUserIdFormat { FullEmail, UserName };
00050
00051 struct ACLListEntry;
00052 typedef TQValueVector<KMail::ACLListEntry> ACLList;
00053
00054 class ImapAccountBase;
00055
00060 class ACLEntryDialog :public KDialogBase {
00061 Q_OBJECT
00062
00063
00064 public:
00065 ACLEntryDialog( IMAPUserIdFormat userIdFormat, const TQString& caption, TQWidget* parent, const char* name = 0 );
00066
00067 void setValues( const TQString& userId, unsigned int permissions );
00068
00069 TQString userId() const;
00070 TQStringList userIds() const;
00071 unsigned int permissions() const;
00072
00073 private slots:
00074 void slotSelectAddresses();
00075 void slotChanged();
00076
00077 private:
00078 TQVButtonGroup* mButtonGroup;
00079 KLineEdit* mUserIdLineEdit;
00080 IMAPUserIdFormat mUserIdFormat;
00081 };
00082
00087 class FolderDiaACLTab : public FolderDiaTab
00088 {
00089 Q_OBJECT
00090
00091
00092 public:
00093 FolderDiaACLTab( KMFolderDialog* dlg, TQWidget* parent, const char* name = 0 );
00094
00095 virtual void load();
00096 virtual bool save();
00097 virtual AccepStatus accept();
00098
00099 static bool supports( KMFolder* refFolder );
00100
00101 private slots:
00102
00103 void slotConnectionResult( int, const TQString& );
00104 void slotReceivedACL( KMFolder*, TDEIO::Job*, const KMail::ACLList& );
00105 void slotMultiSetACLResult(TDEIO::Job *);
00106 void slotACLChanged( const TQString&, int );
00107 void slotReceivedUserRights( KMFolder* folder );
00108 void slotDirectoryListingFinished(KMFolderImap*);
00109
00110
00111 void slotEditACL(TQListViewItem*);
00112 void slotSelectionChanged(TQListViewItem*);
00113
00114
00115 void slotAddACL();
00116 void slotEditACL();
00117 void slotRemoveACL();
00118
00119 void slotChanged( bool b );
00120
00121 private:
00122 KURL imapURL() const;
00123 void initializeWithValuesFromFolder( KMFolder* folder );
00124 void startListing();
00125 void loadListView( const KMail::ACLList& aclList );
00126 void loadFinished( const KMail::ACLList& aclList );
00127 void addACLs( const TQStringList& userIds, unsigned int permissions );
00128
00129 private:
00130
00131 TQHBox* mACLWidget;
00132
00133 class ListViewItem;
00134 TDEListView* mListView;
00135 KPushButton* mAddACL;
00136 KPushButton* mEditACL;
00137 KPushButton* mRemoveACL;
00138
00139 TQStringList mRemovedACLs;
00140 TQString mImapPath;
00141 ImapAccountBase* mImapAccount;
00142 int mUserRights;
00143 KMail::ACLJobs::ACLFetchState mUserRightsState;
00144 KMFolderType mFolderType;
00145 ACLList mInitialACLList;
00146 ACLList mACLList;
00147 IMAPUserIdFormat mUserIdFormat;
00148
00149 TQLabel* mLabel;
00150 TQWidgetStack* mStack;
00151 KMFolderDialog* mDlg;
00152
00153 bool mChanged;
00154 bool mAccepting;
00155 bool mSaving;
00156 };
00157
00158 }
00159
00160 #endif
00161