kmail

kmsearchpatternedit.h

00001 // -*- mode: C++; c-file-style: "gnu" -*-
00002 // kmfilterrulesedit.h
00003 // Author: Marc Mutz <Marc@Mutz.com>
00004 // This code is under GPL
00005 
00006 #ifndef KMFILTERRULESEDIT_H
00007 #define KMFILTERRULESEDIT_H
00008 
00009 #include "kwidgetlister.h"
00010 
00011 #include <qgroupbox.h>
00012 #include <qstringlist.h>
00013 
00014 class KMSearchRule;
00015 class KMSearchPattern;
00016 
00017 template <typename T> class QPtrList;
00018 class QString;
00019 class QComboBox;
00020 class QLineEdit;
00021 class QRadioButton;
00022 class QWidgetStack;
00023 class QLabel;
00024 class KMSearchPatternEdit;
00025 
00040 class KMSearchRuleWidget : public QWidget
00041 {
00042   Q_OBJECT
00043 public:
00046   KMSearchRuleWidget( QWidget* parent=0, KMSearchRule* aRule=0, const char* name=0, bool headersOnly = false, bool absoluteDates = false );
00047 
00048   enum { Message, Body, AnyHeader, Recipients, Size, AgeInDays, Status,
00049          Subject, From, To, CC, ReplyTo, Organization };
00050 
00054   void setHeadersOnly( bool headersOnly );
00060   void setRule( KMSearchRule* aRule );
00062   KMSearchRule* rule() const;
00065   void reset();
00066   static int ruleFieldToId( const QString & i18nVal );
00067 
00068 public slots:
00069   void slotFunctionChanged();
00070   void slotValueChanged();
00071 
00072 signals:
00076   void fieldChanged( const QString & );
00077 
00080   void contentsChanged( const QString & );
00081 
00082 protected:
00085   static QCString ruleFieldToEnglish(const QString & i18nVal);
00088   int indexOfRuleField( const QCString & aName ) const;
00089 
00090 protected slots:
00091   void slotRuleFieldChanged( const QString & );
00092 
00093 private:
00094   void initWidget();
00095   void initFieldList( bool headersOnly, bool absoluteDates );
00096 
00097   QStringList mFilterFieldList;
00098   QComboBox *mRuleField;
00099   QWidgetStack *mFunctionStack;
00100   QWidgetStack *mValueStack;
00101   bool mAbsoluteDates;
00102 };
00103 
00104 
00105 class KMSearchRuleWidgetLister : public KWidgetLister
00106 {
00107   Q_OBJECT
00108 
00109   friend class ::KMSearchPatternEdit;
00110 
00111 public:
00112   KMSearchRuleWidgetLister( QWidget *parent=0, const char* name=0, bool headersOnly = false, bool absoluteDates = false );
00113 
00114   virtual ~KMSearchRuleWidgetLister();
00115 
00116   void setRuleList( QPtrList<KMSearchRule> * aList );
00117   void setHeadersOnly( bool headersOnly );
00118 
00119 public slots:
00120   void reset();
00121 
00122 protected:
00123   virtual void clearWidget( QWidget *aWidget );
00124   virtual QWidget* createWidget( QWidget *parent );
00125 
00126 private:
00127   void regenerateRuleListFromWidgets();
00128   QPtrList<KMSearchRule> *mRuleList;
00129   bool mHeadersOnly;
00130   bool mAbsoluteDates;
00131 };
00132 
00133 
00166 class KMSearchPatternEdit : public QGroupBox  {
00167   Q_OBJECT
00168 public:
00171   KMSearchPatternEdit(QWidget *parent=0, const char *name=0, bool headersOnly = false, bool absoluteDates = false);
00174   KMSearchPatternEdit(const QString & title, QWidget *parent=0, const char *name=0, bool headersOnly = false, bool absoluteDates = false);
00175   ~KMSearchPatternEdit();
00176 
00181   void setSearchPattern( KMSearchPattern* aPattern );
00185   void setHeadersOnly( bool headersOnly );
00186 
00188   void updateSearchPattern() { mRuleLister->regenerateRuleListFromWidgets(); }
00189 
00190 public slots:
00193   void reset();
00194 
00195 signals:
00198   void maybeNameChanged();
00199 
00200 private slots:
00201   void slotRadioClicked(int aIdx);
00202   void slotAutoNameHack();
00203 
00204 private:
00205   void initLayout( bool headersOnly, bool absoluteDates );
00206 
00207   KMSearchPattern *mPattern;
00208   QRadioButton    *mAllRBtn, *mAnyRBtn;
00209   KMSearchRuleWidgetLister *mRuleLister;
00210 };
00211 
00212 #endif
KDE Home | KDE Accessibility Home | Description of Access Keys