kmail

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 KListView;
00045 namespace KIO { 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 public:
00064   ACLEntryDialog( IMAPUserIdFormat userIdFormat, const TQString& caption, TQWidget* parent, const char* name = 0 );
00065 
00066   void setValues( const TQString& userId, unsigned int permissions );
00067 
00068   TQString userId() const;
00069   TQStringList userIds() const;
00070   unsigned int permissions() const;
00071 
00072 private slots:
00073   void slotSelectAddresses();
00074   void slotChanged();
00075 
00076 private:
00077   TQVButtonGroup* mButtonGroup;
00078   KLineEdit* mUserIdLineEdit;
00079   IMAPUserIdFormat mUserIdFormat;
00080 };
00081 
00086 class FolderDiaACLTab : public FolderDiaTab
00087 {
00088   Q_OBJECT
00089 
00090 public:
00091   FolderDiaACLTab( KMFolderDialog* dlg, TQWidget* parent, const char* name = 0 );
00092 
00093   virtual void load();
00094   virtual bool save();
00095   virtual AcceptStatus accept();
00096 
00097   static bool supports( KMFolder* refFolder );
00098 
00099 private slots:
00100   // Network (KIO) slots
00101   void slotConnectionResult( int, const TQString& );
00102   void slotReceivedACL( KMFolder*, KIO::Job*, const KMail::ACLList& );
00103   void slotMultiSetACLResult(KIO::Job *);
00104   void slotACLChanged( const TQString&, int );
00105   void slotReceivedUserRights( KMFolder* folder );
00106   void slotDirectoryListingFinished(KMFolderImap*);
00107 
00108   // User (KListView) slots
00109   void slotEditACL(TQListViewItem*);
00110   void slotSelectionChanged(TQListViewItem*);
00111 
00112   // User (pushbuttons) slots
00113   void slotAddACL();
00114   void slotEditACL();
00115   void slotRemoveACL();
00116 
00117   void slotChanged( bool b );
00118 
00119 private:
00120   KURL imapURL() const;
00121   void initializeWithValuesFromFolder( KMFolder* folder );
00122   void startListing();
00123   void loadListView( const KMail::ACLList& aclList );
00124   void loadFinished( const KMail::ACLList& aclList );
00125   void addACLs( const TQStringList& userIds, unsigned int permissions );
00126 
00127 private:
00128   // The widget containing the ACL widgets (listview and buttons)
00129   TQHBox* mACLWidget;
00130   //class ListView;
00131   class ListViewItem;
00132   KListView* mListView;
00133   KPushButton* mAddACL;
00134   KPushButton* mEditACL;
00135   KPushButton* mRemoveACL;
00136 
00137   TQStringList mRemovedACLs;
00138   TQString mImapPath;
00139   ImapAccountBase* mImapAccount;
00140   int mUserRights;
00141   KMail::ACLJobs::ACLFetchState mUserRightsState;
00142   KMFolderType mFolderType;
00143   ACLList mInitialACLList;
00144   ACLList mACLList; // to be set
00145   IMAPUserIdFormat mUserIdFormat;
00146 
00147   TQLabel* mLabel;
00148   TQWidgetStack* mStack;
00149   KMFolderDialog* mDlg;
00150 
00151   bool mChanged;
00152   bool mAccepting; // i.e. close when done
00153   bool mSaving;
00154 };
00155 
00156 } // end of namespace KMail
00157 
00158 #endif /* FOLDERDIAACL_H */
00159