/* KNode, the KDE newsreader Copyright (c) 1999-2006 the KNode authors. See file AUTHORS for details 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. 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, US */ #ifndef KNCONFIGWIDGETS_H #define KNCONFIGWIDGETS_H #include "knnntpaccount.h" #include "knode_export.h" #include #include #include "ui_nntpaccountdialog_base.h" #include "ui_nntpaccountlistwidget_base.h" #include "ui_postnewstechnicalwidget_base.h" #include "ui_readnewsgeneralwidget_base.h" class KComboBox; namespace Sonnet{ class ConfigWidget; } namespace KPIM { class KScoringEditorWidget; } namespace Kpgp { class Config; } class KNArticleFilter; class KNDisplayedHeader; class KNFilterManager; namespace KNode { class Cleanup; class DisplayedHeaders; class GroupCleanupWidget; class IdentityWidget; } namespace KNode { /** News server account list widget. */ class KNODE_EXPORT NntpAccountListWidget : public KCModule, private Ui::NntpAccountListWidgetBase { Q_OBJECT public: /** Create a new NNTP account list widget. */ explicit NntpAccountListWidget( const KComponentData &inst, QWidget *parent = 0 ); /** Reimplemented from KCModule. */ virtual void load(); protected: /** Account list widget item. */ class AccountListItem : public QListWidgetItem { public: /** Creates a new account list item. * @param a The account. */ explicit AccountListItem( KNNntpAccount::Ptr a ) : mAccount( a ) {} /** Returns the account assiciated with this item. */ KNNntpAccount::Ptr account() const { return mAccount; } private: KNNntpAccount::Ptr mAccount; }; public slots: /** Add an list view item for the given account. * @param a The new account. */ void slotAddItem( KNNntpAccount::Ptr a ); /** Remove the list view item of the given account. * @param a The account. */ void slotRemoveItem( KNNntpAccount::Ptr a ); /** Update the item of the given account. * @param a The account. */ void slotUpdateItem( KNNntpAccount::Ptr a ); protected slots: /** Item selection has changed. */ void slotSelectionChanged(); /** Add account button has been clicked. */ void slotAddBtnClicked(); /** Delete account button has been clicked. */ void slotDelBtnClicked(); /** Edit account button has been clicked. */ void slotEditBtnClicked(); /** Subscribe button has been clicked. */ void slotSubBtnClicked(); }; /** News server configuration dialog. */ class KNODE_EXPORT NntpAccountConfDialog : public KPageDialog, private Ui::NntpAccountDialogBase { Q_OBJECT public: explicit NntpAccountConfDialog( KNNntpAccount *a, QWidget *parent = 0 ); ~NntpAccountConfDialog(); protected slots: void slotServerTextEdited(); void slotEditingFinished(); virtual void slotButtonClicked( int button ); private slots: void slotPasswordChanged(); /** Changes the port to follow change of the encryption selection. */ void encryptionChanged( bool checked ); private: KNNntpAccount *mAccount; IdentityWidget* mIdentityWidget; GroupCleanupWidget *mCleanupWidget; bool mUseServerForName; }; /** Appearance configuration widget. */ class KNODE_EXPORT AppearanceWidget : public KCModule { Q_OBJECT public: /** Create a new appearance configuration widget. * @param inst The KComponentData. * @param parent The parent widget. */ explicit AppearanceWidget( const KComponentData &inst, QWidget *parent = 0 ); /** Reimplemented from KCModule. */ virtual void load(); /** Reimplemented from KCModule. */ virtual void save(); /** Reimplemented from KCModule. */ virtual void defaults(); //=================================================================================== /** Color list view item. */ class KNODE_EXPORT ColorListItem : public QListWidgetItem { public: /** Create a new color list view item. * @param text The item text. * @param color The item color. * @param parent The list widget this item is shown in. */ explicit ColorListItem( const QString &text, const QColor &color = Qt::black, QListWidget *parent = 0 ); /** Returns the current color. */ const QColor& color() { return mColor; } /** Sets the current color. */ void setColor( const QColor &color ); private: /// The current color. QColor mColor; }; //=================================================================================== /** Font list view item. */ class KNODE_EXPORT FontListItem : public QListWidgetItem { public: /** Create a new font list view item. * @param text The item text. * @param font The selected font for this item. * @param parent The list widget this item is shown in. */ FontListItem( const QString &text, const QFont &font, QListWidget *parent = 0 ); /** Returns the current font. */ const QFont& font() { return mFont; } /** Sets the current font. * @param font The new font. */ void setFont( const QFont &font ); private: /// The current font. QFont mFont; /// The item text. QString mText; }; //=================================================================================== protected: /// The color selection list. QListWidget *mColorList; /// The font selection list. QListWidget *mFontList; QCheckBox *c_olorCB, *f_ontCB; QPushButton *c_olChngBtn, *f_ntChngBtn; protected slots: //colors void slotColCheckBoxToggled(bool b); /** Show color selection dialog for the given item. * @param item The color list item that has been activated. */ void slotColItemActivated( QListWidgetItem *item ); void slotColChangeBtnClicked(); void slotColSelectionChanged(); //fonts void slotFontCheckBoxToggled(bool b); /** Show font selection dialog for the given item. * @param item The font list item that has been activated. */ void slotFontItemActivated( QListWidgetItem *item ); void slotFontChangeBtnClicked(); void slotFontSelectionChanged(); }; /** General read news configuration page. * @todo Use KConfigXT also for handling the date format button group. */ class KNODE_EXPORT ReadNewsGeneralWidget : public KCModule, KNode::Ui::ReadNewsGeneralWidgetBase { public: /** Create a new general configuration page. * @param parent The QWidget parent. */ explicit ReadNewsGeneralWidget( const KComponentData &inst, QWidget *parent = 0 ); /** Reimplemented from KCModule. */ virtual void load(); /** Reimplemented from KCModule. */ virtual void save(); }; /** Read news navigation configuration page. */ class KNODE_EXPORT ReadNewsNavigationWidget : public KCModule { public: /** Create a new navigation configuration page. * @param parent The QWidget parent. */ explicit ReadNewsNavigationWidget( const KComponentData &inst, QWidget *parent = 0 ); }; /** Article viewer configuration page. */ class KNODE_EXPORT ReadNewsViewerWidget : public KCModule { public: /** Create a new article viewer configuration page. * @param parent The QWidget parent. */ explicit ReadNewsViewerWidget( const KComponentData &inst, QWidget *parent = 0 ); }; /** Configuration widget for headers displayed in the article viewer. */ class KNODE_EXPORT DisplayedHeadersWidget : public KCModule { Q_OBJECT public: DisplayedHeadersWidget( DisplayedHeaders *d, const KComponentData &inst, QWidget *parent = 0 ); /** Reimplemented from KCModule. */ virtual void load(); /** Reimplemented from KCModule. */ virtual void save(); protected: /** Header list view item. */ class HdrItem : public QListWidgetItem { public: /** Creates a new header list view item. * @param text The text to display. * @param header The associated header. */ HdrItem( const QString &text, KNDisplayedHeader *header ) : QListWidgetItem( text ), mHdr( header ) {} /** Returns the associated header. */ KNDisplayedHeader *header() const { return mHdr; } private: KNDisplayedHeader *mHdr; }; HdrItem* generateItem(KNDisplayedHeader *); QListWidget *mHeaderList; QPushButton *a_ddBtn, *d_elBtn, *e_ditBtn, *u_pBtn, *d_ownBtn; bool s_ave; DisplayedHeaders *d_ata; protected slots: void slotSelectionChanged(); void slotAddBtnClicked(); void slotDelBtnClicked(); void slotEditBtnClicked(); void slotUpBtnClicked(); void slotDownBtnClicked(); }; /** Configuration dialog for a single header displayed in the article viewer. */ class KNODE_EXPORT DisplayedHeaderConfDialog : public KDialog { Q_OBJECT public: explicit DisplayedHeaderConfDialog( KNDisplayedHeader *h, QWidget *parent = 0 ); ~DisplayedHeaderConfDialog(); protected: KNDisplayedHeader *h_dr; KComboBox *h_drC; KLineEdit *n_ameE; QCheckBox *n_ameCB[4], *v_alueCB[4]; protected slots: void slotOk(); void slotActivated(int); void slotNameChanged(const QString&); }; /** Scoring configuration widget. */ class KNODE_EXPORT ScoringWidget : public KCModule { public: /** Create a new scoring configuration widget. * @param parent The QWidget parent. */ explicit ScoringWidget( const KComponentData &inst, QWidget *parent = 0 ); private: KPIM::KScoringEditorWidget *mKsc; KIntSpinBox *mIgnored, *mWatched; }; /** Configuration widget for filters. */ class KNODE_EXPORT FilterListWidget : public KCModule { Q_OBJECT public: explicit FilterListWidget( const KComponentData &inst, QWidget *parent = 0 ); ~FilterListWidget(); void load(); void save(); void addItem(KNArticleFilter *f); void removeItem(KNArticleFilter *f); void updateItem(KNArticleFilter *f); void addMenuItem(KNArticleFilter *f); void removeMenuItem(KNArticleFilter *f); QList menuOrder(); protected: /** Filter list view item. */ class FilterListItem : public QListWidgetItem { public: /** Create new filter list item. * @param filter The associated filter object. * @param text The text to display in the item. * */ FilterListItem( KNArticleFilter *filter, const QString &text ) : QListWidgetItem( text ), mFilter( filter ) {} /** Returns the associated filter. */ KNArticleFilter* filter() const { return mFilter; } private: KNArticleFilter *mFilter; }; /** Returns the index of the list view item associated with the given filter. * @param l The list widget to search in. * @param f The filter to search. */ int findItem( QListWidget *l, KNArticleFilter *f ); QListWidget *mFilterList; QListWidget *mMenuList; QPushButton *a_ddBtn, *d_elBtn, *e_ditBtn, *c_opyBtn, *u_pBtn, *d_ownBtn, *s_epAddBtn, *s_epRemBtn; QPixmap a_ctive, d_isabled; KNFilterManager *f_ilManager; protected slots: void slotAddBtnClicked(); void slotDelBtnClicked(); void slotEditBtnClicked(); void slotCopyBtnClicked(); void slotUpBtnClicked(); void slotDownBtnClicked(); void slotSepAddBtnClicked(); void slotSepRemBtnClicked(); void slotSelectionChangedFilter(); void slotSelectionChangedMenu(); }; /** Configuration widget for technical posting settings. */ class KNODE_EXPORT PostNewsTechnicalWidget : public KCModule, KNode::Ui::PostNewsTechnicalWidgetBase { Q_OBJECT public: /** Create a new configuration widget for technical posting settings. */ explicit PostNewsTechnicalWidget( const KComponentData &inst, QWidget *parent = 0 ); /** Reimplemented from KCModule. */ virtual void load(); /** Reimplemented from KCModule. */ virtual void save(); private slots: void slotSelectionChanged(); void slotAddBtnClicked(); void slotDelBtnClicked(); void slotEditBtnClicked(); }; /** Dialog to edit additional headers. */ class KNODE_EXPORT XHeaderConfDialog : public KDialog { public: /** Create a new dialog to edit an additional header. * @param h The header to edit. * @param parent The parent widget. */ explicit XHeaderConfDialog( const QString &h = QString(), QWidget *parent = 0 ); /** Destructor. */ ~XHeaderConfDialog(); /** Returns the entered/modified header. */ QString result() const; private: KLineEdit *mNameEdit, *mValueEdit; }; /** Composer configuration widget. */ class KNODE_EXPORT PostNewsComposerWidget : public KCModule { public: /** Create a new composer configuration widget. * @param parent The parent widget. */ explicit PostNewsComposerWidget( const KComponentData &inst, QWidget *parent = 0 ); }; /** Spell-checking configuration widget. */ class KNODE_EXPORT PostNewsSpellingWidget : public KCModule { public: explicit PostNewsSpellingWidget( const KComponentData &inst, QWidget *parent = 0 ); ~PostNewsSpellingWidget(); void save(); protected: Sonnet::ConfigWidget *c_conf; }; /** Privacy configuration widget. */ class KNODE_EXPORT PrivacyWidget : public KCModule { Q_OBJECT public: explicit PrivacyWidget( const KComponentData &inst, QWidget *parent = 0 ); ~PrivacyWidget(); void save(); protected: Kpgp::Config *c_onf; }; //BEGIN: Cleanup configuration ----------------------------------------------- /** Configuration widget for group expireration */ class KNODE_EXPORT GroupCleanupWidget : public QWidget { Q_OBJECT public: explicit GroupCleanupWidget( Cleanup *data, QWidget *parent = 0 ); void load(); void save(); signals: void changed(); private: QCheckBox *mDefault, *mExpEnabled, *mExpUnavailable, *mPreserveThreads; KIntSpinBox *mExpDays, *mExpReadDays, *mExpUnreadDays; QGroupBox *mExpGroup; Cleanup *mData; private slots: void slotDefaultToggled( bool state ); }; /** Global cleanup configuration widget */ class KNODE_EXPORT CleanupWidget : public KCModule { Q_OBJECT public: explicit CleanupWidget( const KComponentData &inst, QWidget *parent = 0 ); ~CleanupWidget(); void load(); void save(); protected: QCheckBox *f_olderCB; KIntSpinBox *f_olderDays; QLabel *f_olderDaysL; Cleanup *d_ata; protected slots: void slotFolderCBtoggled(bool b); private: GroupCleanupWidget *mGroupCleanup; }; //END: Cleanup configuration ------------------------------------------------- } //KNode #endif //KNCONFIGWIDGETS_H