kmail
kmsearchpatternedit.h00001
00002
00003
00004
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
|