folderdiaacltab.h
00001 // -*- mode: C++; c-file-style: "gnu" -*- 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 // Network (TDEIO) slots 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 // User (TDEListView) slots 00111 void slotEditACL(TQListViewItem*); 00112 void slotSelectionChanged(TQListViewItem*); 00113 00114 // User (pushbuttons) slots 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 // The widget containing the ACL widgets (listview and buttons) 00131 TQHBox* mACLWidget; 00132 //class ListView; 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; // to be set 00147 IMAPUserIdFormat mUserIdFormat; 00148 00149 TQLabel* mLabel; 00150 TQWidgetStack* mStack; 00151 KMFolderDialog* mDlg; 00152 00153 bool mChanged; 00154 bool mAccepting; // i.e. close when done 00155 bool mSaving; 00156 }; 00157 00158 } // end of namespace KMail 00159 00160 #endif /* FOLDERDIAACL_H */ 00161