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 <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