Fix confusing checkbox text due to class reuse
[kdepim.git] / kmail / configuredialog_p.h
blob658882836910b1aa458f42999a60bca1f3ec8871
1 // -*- c++ -*-
2 // configuredialog_p.h: classes internal to ConfigureDialog
3 // see configuredialog.h for details.
5 #ifndef _CONFIGURE_DIALOG_PRIVATE_H_
6 #define _CONFIGURE_DIALOG_PRIVATE_H_
8 #include <config-enterprise.h>
10 #include "kmail_export.h"
11 #include "configmodule.h"
13 #include <QString>
14 #include <QStringList>
15 #include <QLabel>
16 #include <QList>
17 #include <QShowEvent>
18 #include <QHash>
19 #include <QSharedPointer>
21 #include <klineedit.h>
22 #include <kcombobox.h>
23 #include <kdialog.h>
24 #include <kcmodule.h>
25 #include <klocale.h>
27 #include <akonadi/agentinstance.h>
29 #include "ui_composercryptoconfiguration.h"
30 #include "ui_warningconfiguration.h"
31 #include "ui_smimeconfiguration.h"
32 #include "ui_customtemplates_base.h"
33 #include "ui_miscpagemaintab.h"
34 #include "ui_securitypagegeneraltab.h"
35 #include "ui_accountspagereceivingtab.h"
37 class QPushButton;
38 class QLabel;
39 class QCheckBox;
40 class QFont;
41 class QRegExpValidator;
42 class QPoint;
43 class QGroupBox;
44 class QSpinBox;
45 class QListWidget;
47 class KLineEdit;
48 class KButtonGroup;
49 class KUrlRequester;
50 class KFontChooser;
51 class KTabWidget;
52 class ListView;
53 class ConfigureDialog;
54 class KIntSpinBox;
55 class SimpleStringListEditor;
56 class KConfig;
57 class SMimeConfiguration;
58 class TemplatesConfiguration;
59 class CustomTemplates;
60 class KColorCombo;
61 class KFontRequester;
62 class KIconButton;
63 class KKeySequenceWidget;
64 class KComboBox;
65 class ColorListBox;
67 namespace MessageList {
68 namespace Utils {
69 class AggregationComboBox;
70 class ThemeComboBox;
74 namespace MessageViewer {
75 class ConfigureWidget;
76 class InvitationSettings;
79 namespace KMail {
80 class Tag;
81 typedef QSharedPointer<Tag> TagPtr;
84 namespace MailCommon {
85 class FolderRequester;
88 namespace Kleo {
89 class CryptoConfig;
92 class WarningConfiguration : public QWidget, public Ui::WarningConfiguration
94 public:
95 WarningConfiguration( QWidget *parent ) : QWidget( parent ) {
96 setupUi( this );
100 class SMimeConfiguration : public QWidget, public Ui::SMimeConfiguration
102 public:
103 SMimeConfiguration( QWidget *parent ) : QWidget( parent ) {
104 setupUi( this );
109 class ComposerCryptoConfiguration : public QWidget, public Ui::ComposerCryptoConfiguration
111 public:
112 ComposerCryptoConfiguration( QWidget *parent ) : QWidget( parent ) {
113 setupUi( this );
118 // Individual tab of a ConfigModuleWithTabs
119 class ConfigModuleTab : public QWidget {
120 Q_OBJECT
121 public:
122 ConfigModuleTab( QWidget *parent=0 )
123 : QWidget( parent ),
124 mEmitChanges( true )
126 ~ConfigModuleTab() {}
127 virtual void save() = 0;
128 void defaults();
129 signals:
130 // forwarded to the ConfigModule
131 void changed(bool);
132 public slots:
133 void slotEmitChanged();
134 void load();
135 protected:
136 bool mEmitChanges;
137 private:
138 // reimplement this for loading values of settings which are available
139 // via GlobalSettings
140 virtual void doLoadFromGlobalSettings() {}
141 // reimplement this for loading values of settings which are not available
142 // via GlobalSettings
143 virtual void doLoadOther() {}
144 // reimplement this for loading default values of settings which are
145 // not available via GlobalSettings (KConfigXT).
146 virtual void doResetToDefaultsOther() {}
151 * ConfigModuleWithTabs represents a kcm with several tabs.
152 * It simply forwards load and save operations to all tabs.
154 class KMAIL_EXPORT ConfigModuleWithTabs : public ConfigModule {
155 Q_OBJECT
156 public:
157 explicit ConfigModuleWithTabs( const KComponentData &instance, QWidget *parent=0 );
158 ~ConfigModuleWithTabs() {}
160 // don't reimplement any of those methods
161 virtual void load();
162 virtual void save();
163 virtual void defaults();
165 protected:
166 void addTab( ConfigModuleTab* tab, const QString & title );
168 private:
169 KTabWidget *mTabWidget;
176 // AccountsPage
180 // subclasses: one class per tab:
181 class AccountsPageSendingTab : public ConfigModuleTab {
182 Q_OBJECT
183 public:
184 AccountsPageSendingTab( QWidget * parent=0 );
185 virtual ~AccountsPageSendingTab();
186 QString helpAnchor() const;
187 void save();
189 private:
190 virtual void doLoadFromGlobalSettings();
191 virtual void doLoadOther();
192 //FIXME virtual void doResetToDefaultsOther();
194 private:
195 QCheckBox *mConfirmSendCheck;
196 KComboBox *mSendOnCheckCombo;
197 KComboBox *mSendMethodCombo;
198 KLineEdit *mDefaultDomainEdit;
202 class AccountsPageReceivingTab : public ConfigModuleTab {
203 Q_OBJECT
204 public:
205 AccountsPageReceivingTab( QWidget * parent=0 );
206 ~AccountsPageReceivingTab();
207 QString helpAnchor() const;
208 void save();
210 signals:
211 void accountListChanged( const QStringList & );
213 private slots:
214 void slotAccountSelected(const Akonadi::AgentInstance&);
215 void slotAddAccount();
216 void slotModifySelectedAccount();
217 void slotRemoveSelectedAccount();
218 void slotEditNotifications();
219 void slotShowMailCheckMenu( const QString &, const QPoint & );
220 void slotIncludeInCheckChanged( bool checked );
221 void slotOfflineOnShutdownChanged( bool checked );
222 void slotCheckOnStatupChanged( bool checked );
224 private:
225 virtual void doLoadFromGlobalSettings();
226 virtual void doLoadOther();
228 struct RetrievalOptions {
229 RetrievalOptions( bool manualCheck, bool offline, bool checkOnStartup )
230 : IncludeInManualChecks( manualCheck )
231 , OfflineOnShutdown( offline )
232 ,CheckOnStartup( checkOnStartup ) {}
233 bool IncludeInManualChecks;
234 bool OfflineOnShutdown;
235 bool CheckOnStartup;
238 QHash<QString, QSharedPointer<RetrievalOptions> > mRetrievalHash;
239 //FIXME virtual void doResetToDefaultsOther();
241 private:
242 Ui_AccountsPageReceivingTab mAccountsReceiving;
245 class KMAIL_EXPORT AccountsPage : public ConfigModuleWithTabs {
246 Q_OBJECT
247 public:
248 explicit AccountsPage( const KComponentData &instance, QWidget *parent=0 );
249 QString helpAnchor() const;
252 // hrmpf. moc doesn't like nested classes with slots/signals...:
253 typedef AccountsPageSendingTab SendingTab;
254 typedef AccountsPageReceivingTab ReceivingTab;
256 signals:
257 void accountListChanged( const QStringList & );
259 private:
260 SendingTab *mSendingTab;
261 ReceivingTab *mReceivingTab;
267 // AppearancePage
271 class AppearancePageFontsTab : public ConfigModuleTab {
272 Q_OBJECT
273 public:
274 AppearancePageFontsTab( QWidget * parent=0 );
275 QString helpAnchor() const;
276 void save();
278 private slots:
279 void slotFontSelectorChanged( int );
281 private:
282 //virtual void doLoadFromGlobalSettings();
283 virtual void doLoadOther();
284 void updateFontSelector();
285 virtual void doResetToDefaultsOther();
287 private:
288 QCheckBox *mCustomFontCheck;
289 KComboBox *mFontLocationCombo;
290 KFontChooser *mFontChooser;
292 int mActiveFontIndex;
293 QFont mFont[13];
296 class AppearancePageColorsTab : public ConfigModuleTab {
297 Q_OBJECT
298 public:
299 AppearancePageColorsTab( QWidget * parent=0 );
300 QString helpAnchor() const;
301 void save();
303 private:
304 //virtual void doLoadFromGlobalSettings();
305 virtual void doLoadOther();
306 virtual void doResetToDefaultsOther();
307 void loadColor( bool loadFromConfig );
309 private:
310 QCheckBox *mCustomColorCheck;
311 ColorListBox *mColorList;
312 QCheckBox *mRecycleColorCheck;
313 QSpinBox *mCloseToQuotaThreshold;
316 class AppearancePageLayoutTab : public ConfigModuleTab {
317 Q_OBJECT
318 public:
319 AppearancePageLayoutTab( QWidget * parent=0 );
320 QString helpAnchor() const;
322 void save();
324 private:
325 //virtual void doLoadFromGlobalSettings();
326 virtual void doLoadOther();
327 //FIXME virtual void doResetToDefaultsOther();
329 private: // data
330 QButtonGroup *mFolderListGroup;
331 QGroupBox *mFolderListGroupBox;
332 QButtonGroup *mReaderWindowModeGroup;
333 QGroupBox *mReaderWindowModeGroupBox;
334 QCheckBox *mFavoriteFolderViewCB;
335 QCheckBox *mFolderQuickSearchCB;
336 QButtonGroup *mFolderToolTipsGroup;
337 QGroupBox *mFolderToolTipsGroupBox;
340 class AppearancePageHeadersTab : public ConfigModuleTab {
341 Q_OBJECT
342 public:
343 AppearancePageHeadersTab( QWidget * parent=0 );
345 QString helpAnchor() const;
347 void save();
349 private: // methods
350 virtual void doLoadFromGlobalSettings();
351 virtual void doLoadOther();
352 // virtual void doResetToDefaultsOther();
353 void setDateDisplay( int id, const QString & format );
355 private: // data
356 QCheckBox *mDisplayMessageToolTips;
357 QCheckBox *mHideTabBarWithSingleTab;
358 MessageList::Utils::AggregationComboBox *mAggregationComboBox;
359 MessageList::Utils::ThemeComboBox *mThemeComboBox;
360 KButtonGroup *mDateDisplay;
361 KLineEdit *mCustomDateFormatEdit;
362 QString mCustomDateWhatsThis;
364 private slots:
365 void slotLinkClicked( const QString & link );
366 void slotSelectDefaultAggregation();
367 void slotSelectDefaultTheme();
370 class AppearancePageReaderTab : public ConfigModuleTab {
371 Q_OBJECT
372 public:
373 AppearancePageReaderTab( QWidget * parent=0 );
375 QString helpAnchor() const;
377 void save();
379 private:
380 virtual void doLoadOther();
381 //FIXME virtual void doResetToDefaultsOther();
383 private: // data
384 QCheckBox *mCloseAfterReplyOrForwardCheck;
385 MessageViewer::ConfigureWidget *mViewerSettings;
389 class AppearancePageSystemTrayTab : public ConfigModuleTab {
390 Q_OBJECT
391 public:
392 AppearancePageSystemTrayTab( QWidget * parent=0 );
394 QString helpAnchor() const;
396 void save();
398 private:
399 virtual void doLoadFromGlobalSettings();
401 private: // data
402 QCheckBox *mSystemTrayCheck;
403 KButtonGroup *mSystemTrayGroup;
406 /**Configuration tab in the appearance page for modifying the available set of
407 +message tags*/
408 class AppearancePageMessageTagTab : public ConfigModuleTab {
409 Q_OBJECT
410 public:
411 AppearancePageMessageTagTab( QWidget * parent=0);
412 ~AppearancePageMessageTagTab();
414 QString helpAnchor() const;
416 void save();
418 public slots:
419 /**Enables/disables Add button according to whether @p aText is empty.
420 Connected to signal of the line edit widget for adding tags
421 @param aText String to change add button according to
423 void slotAddLineTextChanged( const QString &aText );
424 /**Creates a generic tag with the visible name from the line edit widget for
425 adding tags. Adds it to the end of the list and selects. Empties the line
426 edit widget*/
427 void slotAddNewTag();
428 /**Removes the currently selected text in the list box.*/
429 void slotRemoveTag();
430 /**Increases the currently selected tag's priority and handles related visual
431 changes*/
432 void slotMoveTagUp();
433 /**Decreases the currently selected tag's priority and handles related visual
434 changes*/
435 void slotMoveTagDown();
437 private slots:
438 /*Handles necessary processing when the selection in the edit box changes.
439 Records the unselected tag's information, and applies visual changes
440 necessary depending on the description of the new tag. Private since doesn't
441 change the selection of the edit box itself*/
442 void slotSelectionChanged();
443 /*This slot is necessary so that apply button is not activated when we are
444 only applying visual changes after selecting a new tag in the list box*/
445 void slotEmitChangeCheck();
446 /*Transfers the tag settings from the widgets to the internal data structures.
447 Private since passing a wrong parameter modifies another tag's data*/
448 void slotRecordTagSettings( int aIndex );
449 /*Transfers the tag settings from the internal data structures to the widgets.
450 Private since passing a wrong parameter visualizes another tag's data*/
451 void slotUpdateTagSettingWidgets( int aIndex );
452 /*Transfers changes in the tag name edit box to the list box for tags. Private
453 since calling externally decouples the name in the list box from name edit box*/
454 void slotNameLineTextChanged( const QString & );
455 void slotIconNameChanged( const QString &iconName );
457 private:
458 virtual void doLoadFromGlobalSettings();
459 void swapTagsInListBox( const int first, const int second );
461 private: // data
463 KLineEdit *mTagNameLineEdit, *mTagAddLineEdit;
464 QPushButton *mTagAddButton, *mTagRemoveButton,
465 *mTagUpButton, *mTagDownButton;
467 QListWidget *mTagListBox;
469 QCheckBox *mTextColorCheck, *mBackgroundColorCheck,
470 *mTextFontCheck, *mInToolbarCheck;
472 QGroupBox *mTagsGroupBox, *mTagSettingGroupBox;
474 KColorCombo *mTextColorCombo, *mBackgroundColorCombo;
476 KFontRequester *mFontRequester;
478 KIconButton *mIconButton;
480 KKeySequenceWidget *mKeySequenceWidget;
482 // Maps Nepomuk::Tag resource URIs to Tags
483 QHash<QString,KMail::TagPtr> mMsgTagDict;
485 // List of all Tags currently in the list
486 QList<KMail::TagPtr> mMsgTagList;
488 // So we can compare to mMsgTagList and see if the user changed tags
489 QList<KMail::TagPtr> mOriginalMsgTagList;
491 /*Used to safely call slotRecordTagSettings when the selection in
492 list box changes*/
493 int mPreviousTag;
495 class KMAIL_EXPORT AppearancePage : public ConfigModuleWithTabs {
496 Q_OBJECT
497 public:
498 explicit AppearancePage( const KComponentData &instance, QWidget *parent=0 );
500 QString helpAnchor() const;
502 // hrmpf. moc doesn't like nested classes with slots/signals...:
503 typedef AppearancePageFontsTab FontsTab;
504 typedef AppearancePageColorsTab ColorsTab;
505 typedef AppearancePageLayoutTab LayoutTab;
506 typedef AppearancePageHeadersTab HeadersTab;
507 typedef AppearancePageReaderTab ReaderTab;
508 typedef AppearancePageSystemTrayTab SystemTrayTab;
509 typedef AppearancePageMessageTagTab MessageTagTab;
511 private:
512 FontsTab *mFontsTab;
513 ColorsTab *mColorsTab;
514 LayoutTab *mLayoutTab;
515 HeadersTab *mHeadersTab;
516 ReaderTab *mReaderTab;
517 SystemTrayTab *mSystemTrayTab;
518 MessageTagTab *mMessageTagTab;
523 // Composer Page
527 class ComposerPageGeneralTab : public ConfigModuleTab {
528 Q_OBJECT
529 public:
530 ComposerPageGeneralTab( QWidget * parent=0 );
531 QString helpAnchor() const;
533 void save();
534 protected slots:
535 void slotConfigureRecentAddresses();
536 void slotConfigureCompletionOrder();
538 private:
539 virtual void doLoadFromGlobalSettings();
541 private:
542 QCheckBox *mAutoAppSignFileCheck;
543 QCheckBox *mTopQuoteCheck;
544 QCheckBox *mDashDashCheck;
545 QCheckBox *mSmartQuoteCheck;
546 QCheckBox *mStripSignatureCheck;
547 QCheckBox *mQuoteSelectionOnlyCheck;
548 QCheckBox *mAutoRequestMDNCheck;
549 QCheckBox *mShowRecentAddressesInComposer;
550 QCheckBox *mWordWrapCheck;
551 KIntSpinBox *mWrapColumnSpin;
552 KIntSpinBox *mAutoSave;
553 QCheckBox *mExternalEditorCheck;
554 KUrlRequester *mEditorRequester;
555 #ifdef KDEPIM_ENTERPRISE_BUILD
556 KComboBox *mForwardTypeCombo;
557 QCheckBox *mRecipientCheck;
558 KIntSpinBox *mRecipientSpin;
559 #endif
562 class ComposerPageTemplatesTab : public ConfigModuleTab {
563 Q_OBJECT
564 public:
565 ComposerPageTemplatesTab( QWidget * parent = 0 );
566 QString helpAnchor() const;
568 void save();
570 private slots:
572 private:
573 virtual void doLoadFromGlobalSettings();
574 virtual void doResetToDefaultsOther();
575 private:
576 TemplatesConfiguration* mWidget;
579 class ComposerPageCustomTemplatesTab : public ConfigModuleTab {
580 Q_OBJECT
581 public:
582 ComposerPageCustomTemplatesTab( QWidget * parent = 0 );
583 QString helpAnchor() const;
585 void save();
587 private slots:
589 private:
590 virtual void doLoadFromGlobalSettings();
592 private:
593 CustomTemplates* mWidget;
596 class ComposerPageSubjectTab : public ConfigModuleTab {
597 Q_OBJECT
598 public:
599 ComposerPageSubjectTab( QWidget * parent = 0 );
600 QString helpAnchor() const;
602 void save();
604 private:
605 virtual void doLoadFromGlobalSettings();
606 virtual void doResetToDefaultsOther();
608 private:
609 SimpleStringListEditor *mReplyListEditor;
610 QCheckBox *mReplaceReplyPrefixCheck;
611 SimpleStringListEditor *mForwardListEditor;
612 QCheckBox *mReplaceForwardPrefixCheck;
615 class ComposerPageCharsetTab : public ConfigModuleTab {
616 Q_OBJECT
617 public:
618 ComposerPageCharsetTab( QWidget * parent=0 );
619 QString helpAnchor() const;
621 void save();
623 private slots:
624 void slotVerifyCharset(QString&);
626 private:
627 //virtual void doLoadFromGlobalSettings();
628 virtual void doLoadOther();
629 virtual void doResetToDefaultsOther();
631 private:
632 SimpleStringListEditor *mCharsetListEditor;
633 QCheckBox *mKeepReplyCharsetCheck;
636 class ComposerPageHeadersTab : public ConfigModuleTab {
637 Q_OBJECT
638 public:
639 ComposerPageHeadersTab( QWidget * parent=0 );
640 QString helpAnchor() const;
642 void save();
644 private slots:
645 void slotMimeHeaderSelectionChanged();
646 void slotMimeHeaderNameChanged( const QString & );
647 void slotMimeHeaderValueChanged( const QString & );
648 void slotNewMimeHeader();
649 void slotRemoveMimeHeader();
651 private:
652 //virtual void doLoadFromGlobalSettings();
653 virtual void doLoadOther();
654 virtual void doResetToDefaultsOther();
656 private:
657 QCheckBox *mCreateOwnMessageIdCheck;
658 KLineEdit *mMessageIdSuffixEdit;
659 QRegExpValidator *mMessageIdSuffixValidator;
660 ListView *mTagList;
661 QPushButton *mRemoveHeaderButton;
662 KLineEdit *mTagNameEdit;
663 KLineEdit *mTagValueEdit;
664 QLabel *mTagNameLabel;
665 QLabel *mTagValueLabel;
668 class ComposerPageAttachmentsTab : public ConfigModuleTab {
669 Q_OBJECT
670 public:
671 ComposerPageAttachmentsTab( QWidget * parent=0 );
672 QString helpAnchor() const;
674 void save();
676 private slots:
677 void slotOutlookCompatibleClicked();
679 private:
680 virtual void doLoadFromGlobalSettings();
681 //FIXME virtual void doResetToDefaultsOther();
683 private:
684 QCheckBox *mOutlookCompatibleCheck;
685 QCheckBox *mMissingAttachmentDetectionCheck;
686 SimpleStringListEditor *mAttachWordsListEditor;
689 class KMAIL_EXPORT ComposerPage : public ConfigModuleWithTabs {
690 Q_OBJECT
691 public:
692 explicit ComposerPage( const KComponentData &instance, QWidget *parent=0 );
694 QString helpAnchor() const;
696 // hrmpf. moc doesn't like nested classes with slots/signals...:
697 typedef ComposerPageGeneralTab GeneralTab;
698 typedef ComposerPageTemplatesTab TemplatesTab;
699 typedef ComposerPageCustomTemplatesTab CustomTemplatesTab;
700 typedef ComposerPageSubjectTab SubjectTab;
701 typedef ComposerPageCharsetTab CharsetTab;
702 typedef ComposerPageHeadersTab HeadersTab;
703 typedef ComposerPageAttachmentsTab AttachmentsTab;
705 private:
706 GeneralTab *mGeneralTab;
707 TemplatesTab *mTemplatesTab;
708 CustomTemplatesTab *mCustomTemplatesTab;
709 SubjectTab *mSubjectTab;
710 CharsetTab *mCharsetTab;
711 HeadersTab *mHeadersTab;
712 AttachmentsTab *mAttachmentsTab;
717 // SecurityPage
721 class SecurityPageGeneralTab : public ConfigModuleTab {
722 Q_OBJECT
723 public:
724 SecurityPageGeneralTab( QWidget * parent=0 );
725 QString helpAnchor() const;
727 void save();
729 private:
730 //virtual void doLoadFromGlobalSettings();
731 virtual void doLoadOther();
732 //FIXME virtual void doResetToDefaultsOther();
734 private:
735 QButtonGroup *mMDNGroup;
736 QButtonGroup *mOrigQuoteGroup;
737 Ui_SecurityPageGeneralTab mSGTab;
739 private slots:
740 void slotLinkClicked( const QString & link );
744 class SecurityPageComposerCryptoTab : public ConfigModuleTab {
745 Q_OBJECT
746 public:
747 SecurityPageComposerCryptoTab( QWidget * parent=0 );
749 QString helpAnchor() const;
751 void save();
753 private:
754 virtual void doLoadFromGlobalSettings();
755 virtual void doLoadOther();
756 //FIXME virtual void doResetToDefaultsOther();
758 private:
759 ComposerCryptoConfiguration* mWidget;
762 class SecurityPageWarningTab : public ConfigModuleTab {
763 Q_OBJECT
764 public:
765 SecurityPageWarningTab( QWidget * parent=0 );
767 QString helpAnchor() const;
769 void save();
771 private Q_SLOTS:
772 void slotReenableAllWarningsClicked();
773 void slotConfigureGnupg();
774 void slotConfigureChiasmus();
776 private:
777 virtual void doLoadFromGlobalSettings();
778 virtual void doLoadOther();
779 //FIXME virtual void doResetToDefaultsOther();
781 private:
782 WarningConfiguration* mWidget;
785 class SecurityPageSMimeTab : public ConfigModuleTab {
786 Q_OBJECT
787 public:
788 SecurityPageSMimeTab( QWidget * parent=0 );
789 ~SecurityPageSMimeTab();
791 QString helpAnchor() const;
793 void save();
795 private slots:
796 void slotUpdateHTTPActions();
798 private:
799 //virtual void doLoadFromGlobalSettings();
800 virtual void doLoadOther();
801 //FIXME virtual void doResetToDefaultsOther();
803 private:
804 SMimeConfiguration* mWidget;
805 Kleo::CryptoConfig* mConfig;
808 class KMAIL_EXPORT SecurityPage : public ConfigModuleWithTabs {
809 Q_OBJECT
810 public:
811 explicit SecurityPage( const KComponentData &instance, QWidget *parent=0 );
813 QString helpAnchor() const;
815 typedef SecurityPageGeneralTab GeneralTab;
816 typedef SecurityPageComposerCryptoTab ComposerCryptoTab;
817 typedef SecurityPageWarningTab WarningTab;
818 typedef SecurityPageSMimeTab SMimeTab;
820 private:
821 GeneralTab *mGeneralTab;
822 ComposerCryptoTab *mComposerCryptoTab;
823 WarningTab *mWarningTab;
824 SMimeTab *mSMimeTab;
830 // MiscPage
834 class MiscPageFolderTab : public ConfigModuleTab {
835 Q_OBJECT
836 public:
837 MiscPageFolderTab( QWidget * parent=0 );
839 void save();
840 QString helpAnchor() const;
842 private:
843 virtual void doLoadFromGlobalSettings();
844 virtual void doLoadOther();
845 //FIXME virtual void doResetToDefaultsOther();
847 private:
848 Ui_MiscMainTab mMMTab;
849 MailCommon::FolderRequester *mOnStartupOpenFolder;
852 class MiscPageInviteTab : public ConfigModuleTab {
853 Q_OBJECT
854 public:
855 MiscPageInviteTab( QWidget * parent=0 );
856 void save();
857 virtual void doResetToDefaultsOther();
859 private:
860 virtual void doLoadFromGlobalSettings();
862 private:
863 MessageViewer::InvitationSettings *mInvitationUi;
866 class KMAIL_EXPORT MiscPage : public ConfigModuleWithTabs {
867 Q_OBJECT
868 public:
869 explicit MiscPage( const KComponentData &instance, QWidget *parent=0 );
870 QString helpAnchor() const;
872 typedef MiscPageFolderTab FolderTab;
873 typedef MiscPageInviteTab InviteTab;
875 private:
876 FolderTab * mFolderTab;
877 InviteTab * mInviteTab;
880 #endif // _CONFIGURE_DIALOG_PRIVATE_H_