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 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