kmail Library API Documentation

kmsearchpatternedit.h

00001 // kmfilterrulesedit.h
00002 // Author: Marc Mutz <Marc@Mutz.com>
00003 // This code is under GPL
00004 
00005 #ifndef KMFILTERRULESEDIT_H
00006 #define KMFILTERRULESEDIT_H
00007 
00008 #include "kwidgetlister.h"
00009 
00010 #include <qhbox.h>
00011 #include <qgroupbox.h>
00012 #include <qstringlist.h>
00013 
00014 class KMSearchRule;
00015 class KMSearchPattern;
00016 
00017 class QPushButton;
00018 class QDialog;
00019 template <typename T> class QPtrList;
00020 class QString;
00021 class QComboBox;
00022 class QLineEdit;
00023 class QRadioButton;
00024 class QPushButton;
00025 class QWidgetStack;
00026 
00041 class KMSearchRuleWidget: public QHBox
00042 {
00043   Q_OBJECT
00044 public:
00047   KMSearchRuleWidget( QWidget* parent=0, KMSearchRule* aRule=0, const char* name=0, bool headersOnly = false, bool absoluteDates = false );
00048 
00054   void setRule( KMSearchRule* aRule );
00056   KMSearchRule* rule() const;
00059   void reset();
00060 
00061 signals:
00065   void fieldChanged( const QString & );
00066 
00069   void contentsChanged( const QString & );
00070 
00071 protected:
00074   static QCString ruleFieldToEnglish(const QString & i18nVal);
00077   static QCString statusToEnglish(const QString & i18nVal);
00080   int indexOfRuleField(const QString & aName) const;
00081   int indexOfStatus(const QString & aStatus) const;
00082 
00083 protected slots:
00084   void editRegExp();
00085   void functionChanged( int which );
00086   void slotRuleChanged( int which );
00087 
00088 private:
00089   void initWidget();
00090   void initLists(bool headersOnly, bool absoluteDates);
00091 
00092   QComboBox* mRuleField;
00093   QComboBox* mRuleFunc;
00094   QWidgetStack* mValueWidgetStack;
00095   QLineEdit* mRuleValue; // used for all but status searches
00096   QComboBox* mStati;     // special case of a status search
00097   QPushButton* mRuleEditBut;
00098   QDialog* mRegExpEditDialog;
00099   QStringList mFilterFieldList, mFilterFuncList, mStatiList;
00100 };
00101 
00102 
00103 class KMSearchRuleWidgetLister : public KWidgetLister
00104 {
00105   Q_OBJECT
00106 
00107   friend class KMSearchPatternEdit;
00108 
00109 public:
00110   KMSearchRuleWidgetLister( QWidget *parent=0, const char* name=0, bool headersOnly = false, bool absoluteDates = false );
00111 
00112   virtual ~KMSearchRuleWidgetLister();
00113 
00114   void setRuleList( QPtrList<KMSearchRule> * aList );
00115 
00116 public slots:
00117   void reset();
00118 
00119 protected:
00120   virtual void clearWidget( QWidget *aWidget );
00121   virtual QWidget* createWidget( QWidget *parent );
00122 
00123 private:
00124   void regenerateRuleListFromWidgets();
00125   QPtrList<KMSearchRule> *mRuleList;
00126   bool mHeadersOnly;
00127   bool mAbsoluteDates;
00128 };
00129 
00130 
00163 class KMSearchPatternEdit : public QGroupBox  {
00164   Q_OBJECT
00165 public:
00168   KMSearchPatternEdit(QWidget *parent=0, const char *name=0, bool headersOnly = false, bool absoluteDates = false);
00171   KMSearchPatternEdit(const QString & title, QWidget *parent=0, const char *name=0, bool headersOnly = false, bool absoluteDates = false);
00172   ~KMSearchPatternEdit();
00173 
00178   void setSearchPattern( KMSearchPattern* aPattern );
00179 
00181   void updateSearchPattern() { mRuleLister->regenerateRuleListFromWidgets(); }
00182 
00183 public slots:
00186   void reset();
00187 
00188 signals:
00191   void maybeNameChanged();
00192 
00193 private slots:
00194   void slotRadioClicked(int aIdx);
00195   void slotAutoNameHack();
00196 
00197 private:
00198   void initLayout( bool headersOnly, bool absoluteDates );
00199 
00200   KMSearchPattern *mPattern;
00201   QRadioButton    *mAllRBtn, *mAnyRBtn;
00202   KMSearchRuleWidgetLister *mRuleLister;
00203 };
00204 
00205 #endif
KDE Logo
This file is part of the documentation for kmail Library Version 3.2.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Sat May 1 11:37:34 2004 by doxygen 1.2.15 written by Dimitri van Heesch, © 1997-2003