You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

129 lines
3.3 KiB

/* kmfldsearch
* (c) 1999 Stefan Taferner
* This code is under GPL
*/
#ifndef kmfldsearch_h
#define kmfldsearch_h
#include <qdialog.h>
#include <qguardedptr.h>
class QLineEdit;
class QPushButton;
class QComboBox;
class QGridLayout;
class KMFldSearchRule;
class QListView;
class KMFolder;
class KMMessage;
class QLabel;
class KMMainWin;
class KMFolderMgr;
class QListViewItem;
class KMFolderTreeItem;
#define KMFldSearchInherited QDialog
class KMFldSearch: public QDialog
{
Q_OBJECT
public:
KMFldSearch(KMMainWin* parent, const char* name=NULL,
KMFolder *curFolder=NULL, bool modal=FALSE, WFlags f=0);
virtual ~KMFldSearch();
protected slots:
virtual void slotClose();
virtual void slotSearch();
virtual void slotStop();
virtual void slotShowMsg(QListViewItem *);
virtual void slotFolderActivated(int nr);
virtual void slotFolderComplete(KMFolderTreeItem *fti, bool success);
protected:
void enableGUI();
/** Create combo-box with list of folders */
virtual QComboBox* createFolderCombo(KMFolder *curFolder);
/** Test if message matches. */
virtual bool searchInMessage(KMMessage*, const QCString&);
/** Search for matches in given folder. Adds matches to listbox mLbxMatches. */
virtual void searchInFolder(QGuardedPtr<KMFolder>, int);
/** Search for matches in all folders. Calls searchInFolder() for every
folder. */
virtual void searchInAllFolders(void);
/** Update status line widget. */
virtual void updStatus(void);
/** GUI cleanup after search */
virtual void searchDone();
/** Reimplemented to react to Escape. */
virtual void keyPressEvent(QKeyEvent*);
/** Reimplemented to stop searching when the window is closed */
virtual void closeEvent(QCloseEvent*);
protected:
QGridLayout* mGrid;
QComboBox *mCbxFolders;
QPushButton *mBtnSearch, *mBtnStop, *mBtnClose;
KMFldSearchRule **mRules;
QListView* mLbxMatches;
QLabel* mLblStatus;
int mNumRules, mNumMatches;
int mCount;
QString mSearchFolder;
bool mSearching, mStopped, mCloseRequested;
KMMainWin* mMainWin;
QWidget* mLastFocus;
QStringList mFolderNames;
QValueList<QGuardedPtr<KMFolder> > mFolders;
};
//-----------------------------------------------------------------------------
class KMFldSearchRule
{
public:
KMFldSearchRule(QWidget* parent, QGridLayout* grid, int gridRow, int gridCol);
virtual ~KMFldSearchRule();
/** Test if message matches rules. */
virtual bool matches(const KMMessage*, const QCString&) const;
/** Prepare for search run. */
virtual void prepare(void);
/** Enable or disable all the push buttons */
virtual void setEnabled(bool);
/** The header field to search in (or whole message) */
virtual bool isHeaderField() const;
/** Update the functions according to the searching capabilites in the
* selected folder */
virtual void updateFunctions(QComboBox *cbx,
const QValueList<QGuardedPtr<KMFolder> > &folders);
/* Fill in the header fiels where to search */
virtual void insertFieldItems(bool all);
enum Func { Contains=0, NotContains, Equal, NotEqual,
MatchesRegExp, NotMatchesRegExp };
protected:
QComboBox *mCbxField, *mCbxFunc;
QLineEdit *mEdtValue;
QString mField, mValue;
QCString mHeaderField;
int mFieldLength;
bool mNonLatin;
int mFieldIdx, mFunc, mRow;
};
#endif /*kmfldsearch_h*/