summaryrefslogtreecommitdiffstats
path: root/kmail/accountdialog.h
diff options
context:
space:
mode:
Diffstat (limited to 'kmail/accountdialog.h')
-rw-r--r--kmail/accountdialog.h340
1 files changed, 340 insertions, 0 deletions
diff --git a/kmail/accountdialog.h b/kmail/accountdialog.h
new file mode 100644
index 000000000..784cee00b
--- /dev/null
+++ b/kmail/accountdialog.h
@@ -0,0 +1,340 @@
+/* -*- c++ -*-
+ * accountdialog.h
+ *
+ * kmail: KDE mail client
+ * This file: Copyright (C) 2000 Espen Sand, [email protected]
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef _ACCOUNT_DIALOG_H_
+#define _ACCOUNT_DIALOG_H_
+
+#include <kdialogbase.h>
+#include <klistview.h>
+#include <klineedit.h>
+#include <qguardedptr.h>
+#include "imapaccountbase.h"
+
+class QRegExpValidator;
+class QCheckBox;
+class QComboBox;
+class QPushButton;
+class QLabel;
+class QLineEdit;
+class QRadioButton;
+class QToolButton;
+class KIntNumInput;
+class KMAccount;
+class KMFolder;
+class KMServerTest;
+class QButtonGroup;
+
+namespace KPIM {
+class IdentityCombo;
+}
+
+namespace KMail {
+
+class SieveConfigEditor;
+class FolderRequester;
+
+class AccountDialog : public KDialogBase
+{
+ Q_OBJECT
+
+ public:
+ AccountDialog( const QString & caption, KMAccount *account,
+ QWidget *parent=0, const char *name=0, bool modal=true );
+ virtual ~AccountDialog();
+ private:
+ struct LocalWidgets
+ {
+ QLabel *titleLabel;
+ QLineEdit *nameEdit;
+ QComboBox *locationEdit;
+ QRadioButton *lockMutt;
+ QRadioButton *lockMuttPriv;
+ QRadioButton *lockProcmail;
+ QComboBox *procmailLockFileName;
+ QRadioButton *lockFcntl;
+ QRadioButton *lockNone;
+ QLineEdit *precommand;
+#if 0
+ QCheckBox *resourceCheck;
+ QPushButton *resourceClearButton;
+ QPushButton *resourceClearPastButton;
+#endif
+ QCheckBox *includeInCheck;
+ QCheckBox *intervalCheck;
+ QLabel *intervalLabel;
+ KIntNumInput *intervalSpin;
+ QComboBox *folderCombo;
+ //QComboBox *identityCombo;
+ KPIM::IdentityCombo *identityCombo;
+ QLabel *identityLabel;
+ };
+
+ struct MaildirWidgets
+ {
+ QLabel *titleLabel;
+ QLineEdit *nameEdit;
+ QComboBox *locationEdit;
+ QLineEdit *precommand;
+#if 0
+ QCheckBox *resourceCheck;
+ QPushButton *resourceClearButton;
+ QPushButton *resourceClearPastButton;
+#endif
+ QCheckBox *includeInCheck;
+ QCheckBox *intervalCheck;
+ QLabel *intervalLabel;
+ KIntNumInput *intervalSpin;
+ QComboBox *folderCombo;
+ //QComboBox *identityCombo;
+ KPIM::IdentityCombo *identityCombo;
+ QLabel *identityLabel;
+ };
+
+ struct PopWidgets
+ {
+ QLabel *titleLabel;
+ QLineEdit *nameEdit;
+ QLineEdit *loginEdit;
+ QLineEdit *passwordEdit;
+ QLineEdit *hostEdit;
+ QLineEdit *portEdit;
+ QLineEdit *precommand;
+ QButtonGroup *encryptionGroup;
+ QRadioButton *encryptionNone;
+ QRadioButton *encryptionSSL;
+ QRadioButton *encryptionTLS;
+ QButtonGroup *authGroup;
+ QRadioButton *authUser;
+ QRadioButton *authPlain;
+ QRadioButton *authLogin;
+ QRadioButton *authCRAM_MD5;
+ QRadioButton *authDigestMd5;
+ QRadioButton *authNTLM;
+ QRadioButton *authGSSAPI;
+ QRadioButton *authAPOP;
+
+ QPushButton *checkCapabilities;
+ QCheckBox *usePipeliningCheck;
+ QCheckBox *storePasswordCheck;
+ QCheckBox *leaveOnServerCheck;
+ QCheckBox *leaveOnServerDaysCheck;
+ KIntNumInput *leaveOnServerDaysSpin;
+ QCheckBox *leaveOnServerCountCheck;
+ KIntNumInput *leaveOnServerCountSpin;
+ QCheckBox *leaveOnServerSizeCheck;
+ KIntNumInput *leaveOnServerSizeSpin;
+#if 0
+ QCheckBox *resourceCheck;
+ QPushButton *resourceClearButton;
+ QPushButton *resourceClearPastButton;
+#endif
+ QCheckBox *includeInCheck;
+ QCheckBox *intervalCheck;
+ QCheckBox *filterOnServerCheck;
+ QLabel *intervalLabel;
+ KIntNumInput *intervalSpin;
+ KIntNumInput *filterOnServerSizeSpin;
+ QComboBox *folderCombo;
+ //QComboBox *identityCombo;
+ KPIM::IdentityCombo *identityCombo;
+ QLabel *identityLabel;
+ };
+
+ struct ImapWidgets
+ {
+ QLabel *titleLabel;
+ QLineEdit *nameEdit;
+ QLineEdit *loginEdit;
+ QLineEdit *passwordEdit;
+ QLineEdit *hostEdit;
+ QLineEdit *portEdit;
+#if 0
+ QCheckBox *resourceCheck;
+ QPushButton *resourceClearButton;
+ QPushButton *resourceClearPastButton;
+#endif
+ QCheckBox *autoExpungeCheck; // only used by normal (online) IMAP
+ QCheckBox *hiddenFoldersCheck;
+ QCheckBox *subscribedFoldersCheck;
+ QCheckBox *locallySubscribedFoldersCheck;
+ QCheckBox *loadOnDemandCheck;
+ QCheckBox *storePasswordCheck;
+ QCheckBox *progressDialogCheck; // only used by Disconnected IMAP
+ QCheckBox *includeInCheck;
+ QCheckBox *intervalCheck;
+ QCheckBox *listOnlyOpenCheck;
+ QLabel *intervalLabel;
+ KIntNumInput *intervalSpin;
+ QButtonGroup *encryptionGroup;
+ QRadioButton *encryptionNone;
+ QRadioButton *encryptionSSL;
+ QRadioButton *encryptionTLS;
+ QButtonGroup *authGroup;
+ QRadioButton *authUser;
+ QRadioButton *authPlain;
+ QRadioButton *authLogin;
+ QRadioButton *authCramMd5;
+ QRadioButton *authDigestMd5;
+ QRadioButton *authGSSAPI;
+ QRadioButton *authNTLM;
+ QRadioButton *authAnonymous;
+ QPushButton *checkCapabilities;
+ FolderRequester *trashCombo;
+ KLineEdit *personalNS;
+ KLineEdit *otherUsersNS;
+ KLineEdit *sharedNS;
+ QToolButton *editPNS;
+ QToolButton *editONS;
+ QToolButton *editSNS;
+ ImapAccountBase::nsDelimMap nsMap;
+ KPIM::IdentityCombo *identityCombo;
+ QLabel *identityLabel;
+ };
+
+ private slots:
+ virtual void slotOk();
+ void slotLocationChooser();
+ void slotMaildirChooser();
+ void slotEnablePopInterval( bool state );
+ void slotEnableImapInterval( bool state );
+ void slotEnableLocalInterval( bool state );
+ void slotEnableMaildirInterval( bool state );
+ void slotFontChanged();
+ void slotLeaveOnServerClicked();
+ void slotEnableLeaveOnServerDays( bool state );
+ void slotEnableLeaveOnServerCount( bool state );
+ void slotEnableLeaveOnServerSize( bool state );
+ void slotFilterOnServerClicked();
+ void slotPipeliningClicked();
+ void slotPopEncryptionChanged(int);
+ void slotImapEncryptionChanged(int);
+ void slotCheckPopCapabilities();
+ void slotCheckImapCapabilities();
+ void slotPopCapabilities( const QStringList &, const QStringList & );
+ void slotImapCapabilities( const QStringList &, const QStringList & );
+ void slotReloadNamespaces();
+ void slotSetupNamespaces( const ImapAccountBase::nsDelimMap& map );
+ void slotEditPersonalNamespace();
+ void slotEditOtherUsersNamespace();
+ void slotEditSharedNamespace();
+ void slotConnectionResult( int errorCode, const QString& );
+ void slotLeaveOnServerDaysChanged( int value );
+ void slotLeaveOnServerCountChanged( int value );
+ void slotFilterOnServerSizeChanged( int value );
+#if 0
+ // Moc doesn't understand #if 0, so they are also commented out
+ // void slotClearResourceAllocations();
+ // void slotClearPastResourceAllocations();
+#endif
+
+ private:
+ void makeLocalAccountPage();
+ void makeMaildirAccountPage();
+ void makePopAccountPage();
+ void makeImapAccountPage( bool disconnected = false );
+ void setupSettings();
+ void saveSettings();
+ void checkHighest( QButtonGroup * );
+ static unsigned int popCapabilitiesFromStringList( const QStringList & );
+ static unsigned int imapCapabilitiesFromStringList( const QStringList & );
+ void enablePopFeatures( unsigned int );
+ void enableImapAuthMethods( unsigned int );
+ void initAccountForConnect();
+ const QString namespaceListToString( const QStringList& list );
+
+ private:
+ LocalWidgets mLocal;
+ MaildirWidgets mMaildir;
+ PopWidgets mPop;
+ ImapWidgets mImap;
+ KMAccount *mAccount;
+ QValueList<QGuardedPtr<KMFolder> > mFolderList;
+ QStringList mFolderNames;
+ KMServerTest *mServerTest;
+ enum EncryptionMethods {
+ NoEncryption = 0,
+ SSL = 1,
+ TLS = 2
+ };
+ enum Capabilities {
+ Plain = 1,
+ Login = 2,
+ CRAM_MD5 = 4,
+ Digest_MD5 = 8,
+ Anonymous = 16,
+ APOP = 32,
+ Pipelining = 64,
+ TOP = 128,
+ UIDL = 256,
+ STLS = 512, // TLS for POP
+ STARTTLS = 512, // TLS for IMAP
+ GSSAPI = 1024,
+ NTLM = 2048,
+ AllCapa = 0xffffffff
+ };
+ unsigned int mCurCapa;
+ unsigned int mCapaNormal;
+ unsigned int mCapaSSL;
+ unsigned int mCapaTLS;
+ KMail::SieveConfigEditor *mSieveConfigEditor;
+ QRegExpValidator *mValidator;
+};
+
+class NamespaceLineEdit: public KLineEdit
+{
+ Q_OBJECT
+
+ public:
+ NamespaceLineEdit( QWidget* parent );
+
+ const QString& lastText() { return mLastText; }
+
+ public slots:
+ virtual void setText ( const QString & );
+
+ private:
+ QString mLastText;
+};
+
+class NamespaceEditDialog: public KDialogBase
+{
+ Q_OBJECT
+
+ public:
+ NamespaceEditDialog( QWidget* parent, ImapAccountBase::imapNamespace type,
+ ImapAccountBase::nsDelimMap* map );
+
+ protected slots:
+ void slotOk();
+ void slotRemoveEntry( int );
+
+ private:
+ ImapAccountBase::imapNamespace mType;
+ ImapAccountBase::nsDelimMap* mNamespaceMap;
+ ImapAccountBase::namespaceDelim mDelimMap;
+ QMap<int, NamespaceLineEdit*> mLineEditMap;
+ QButtonGroup* mBg;
+};
+
+} // namespace KMail
+
+#endif