00001
00002
00003
00004
00005
00006 #ifndef KMFILTERRULESEDIT_H
00007 #define KMFILTERRULESEDIT_H
00008
00009 #include "kwidgetlister.h"
00010
00011 #include <tqgroupbox.h>
00012 #include <tqstringlist.h>
00013
00014 class KMSearchRule;
00015 class KMSearchPattern;
00016
00017 template <typename T> class TQPtrList;
00018 class TQString;
00019 class TQComboBox;
00020 class TQLineEdit;
00021 class TQRadioButton;
00022 class TQWidgetStack;
00023 class TQLabel;
00024 class KMSearchPatternEdit;
00025
00040 class KMSearchRuleWidget : public TQWidget
00041 {
00042 Q_OBJECT
00043
00044 public:
00047 KMSearchRuleWidget( TQWidget* parent=0, KMSearchRule* aRule=0, const char* name=0, bool headersOnly = false, bool absoluteDates = false );
00048
00049 enum { Message, Body, AnyHeader, Recipients, Size, AgeInDays, Status,
00050 Subject, From, To, CC, ReplyTo, Organization };
00051
00055 void setHeadersOnly( bool headersOnly );
00061 void setRule( KMSearchRule* aRule );
00063 KMSearchRule* rule() const;
00066 void reset();
00067 static int ruleFieldToId( const TQString & i18nVal );
00068
00069 public slots:
00070 void slotFunctionChanged();
00071 void slotValueChanged();
00072
00073 signals:
00077 void fieldChanged( const TQString & );
00078
00081 void contentsChanged( const TQString & );
00082
00083 protected:
00086 static TQCString ruleFieldToEnglish(const TQString & i18nVal);
00089 int indexOfRuleField( const TQCString & aName ) const;
00090
00091 protected slots:
00092 void slotRuleFieldChanged( const TQString & );
00093
00094 private:
00095 void initWidget();
00096 void initFieldList( bool headersOnly, bool absoluteDates );
00097
00098 TQStringList mFilterFieldList;
00099 TQComboBox *mRuleField;
00100 TQWidgetStack *mFunctionStack;
00101 TQWidgetStack *mValueStack;
00102 bool mAbsoluteDates;
00103 };
00104
00105
00106 class KMSearchRuleWidgetLister : public KWidgetLister
00107 {
00108 Q_OBJECT
00109
00110
00111 friend class ::KMSearchPatternEdit;
00112
00113 public:
00114 KMSearchRuleWidgetLister( TQWidget *parent=0, const char* name=0, bool headersOnly = false, bool absoluteDates = false );
00115
00116 virtual ~KMSearchRuleWidgetLister();
00117
00118 void setRuleList( TQPtrList<KMSearchRule> * aList );
00119 void setHeadersOnly( bool headersOnly );
00120
00121 public slots:
00122 void reset();
00123
00124 protected:
00125 virtual void clearWidget( TQWidget *aWidget );
00126 virtual TQWidget* createWidget( TQWidget *parent );
00127
00128 private:
00129 void regenerateRuleListFromWidgets();
00130 TQPtrList<KMSearchRule> *mRuleList;
00131 bool mHeadersOnly;
00132 bool mAbsoluteDates;
00133 };
00134
00135
00168 class KMSearchPatternEdit : public TQGroupBox {
00169 Q_OBJECT
00170
00171 public:
00174 KMSearchPatternEdit(TQWidget *parent=0, const char *name=0, bool headersOnly = false, bool absoluteDates = false);
00177 KMSearchPatternEdit(const TQString & title, TQWidget *parent=0, const char *name=0, bool headersOnly = false, bool absoluteDates = false);
00178 ~KMSearchPatternEdit();
00179
00184 void setSearchPattern( KMSearchPattern* aPattern );
00188 void setHeadersOnly( bool headersOnly );
00189
00191 void updateSearchPattern() { mRuleLister->regenerateRuleListFromWidgets(); }
00192
00193 public slots:
00196 void reset();
00197
00198 signals:
00201 void maybeNameChanged();
00202
00203 private slots:
00204 void slotRadioClicked(int aIdx);
00205 void slotAutoNameHack();
00206
00207 private:
00208 void initLayout( bool headersOnly, bool absoluteDates );
00209
00210 KMSearchPattern *mPattern;
00211 TQRadioButton *mAllRBtn, *mAnyRBtn;
00212 KMSearchRuleWidgetLister *mRuleLister;
00213 };
00214
00215 #endif