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.
198 lines
5.5 KiB
198 lines
5.5 KiB
/* |
|
* kmail: KDE mail client |
|
* Copyright (c) 1996-1998 Stefan Taferner <taferner@kde.org> |
|
* Copyright (c) 2001 Aaron J. Seigo <aseigo@kde.org> |
|
* |
|
* This program is free software; you can redistribute it and/or modify |
|
* it under the terms of the GNU General Public License as published by |
|
* the Free Software Foundation; either version 2 of the License, or |
|
* (at your option) any later version. |
|
* |
|
* This program is distributed in the hope that it will be useful, |
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
* GNU General Public License for more details. |
|
* |
|
* You should have received a copy of the GNU General Public License |
|
* along with this program; if not, write to the Free Software |
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
* |
|
*/ |
|
#ifndef searchwindow_h |
|
#define searchwindow_h |
|
|
|
#include <QList> |
|
#include <QPointer> |
|
#include <QTreeWidget> |
|
|
|
#include <KDialog> |
|
#include <KXMLGUIClient> |
|
|
|
class QCheckBox; |
|
class QCloseEvent; |
|
class QKeyEvent; |
|
class QLabel; |
|
class QLineEdit; |
|
class QRadioButton; |
|
class KActionMenu; |
|
class KMFolder; |
|
class KMFolderSearch; |
|
class KMMainWidget; |
|
class KMMessage; |
|
class KMMsgBase; |
|
class KMSearchPattern; |
|
class KMSearchPatternEdit; |
|
class KStatusBar; |
|
|
|
namespace KMail { |
|
class FolderRequester; |
|
class MatchListView; |
|
} |
|
|
|
namespace KMail { |
|
|
|
/** |
|
* The SearchWindow class provides a dialog for triggering a search on |
|
* folders and storing that search as a search folder. It shows the search |
|
* results in a listview and allows triggering of operations such as printing |
|
* or moving on them. |
|
*/ |
|
class SearchWindow: public KDialog, virtual public KXMLGUIClient |
|
{ |
|
Q_OBJECT |
|
|
|
public: |
|
/** |
|
* Creates a new search window. |
|
* @param parent The parent widget. |
|
* @param name The (widget) name of the dialog. |
|
* @param curFolder The folder which will be pre-selected as the base folder |
|
* of search operations. |
|
* @param modal Whether the dialog is to be shown modal. |
|
*/ |
|
explicit SearchWindow( KMMainWidget* parent, KMFolder *curFolder=0 ); |
|
virtual ~SearchWindow(); |
|
|
|
/** |
|
* Changes the base folder for search operations to a different folder. |
|
* @param curFolder The folder to use as the new base for searches. |
|
*/ |
|
void activateFolder( KMFolder* curFolder ); |
|
|
|
/** |
|
* Provides access to the list of currently selected message in the listview. |
|
* @return The list of currently selected search result messages. |
|
*/ |
|
QList<KMMsgBase*> selectedMessages(); |
|
|
|
/** |
|
* Provides access to the currently selected message. |
|
* @return the currently selected message. |
|
*/ |
|
KMMessage* message(); |
|
|
|
void setSearchPattern( const KMSearchPattern &pattern ); |
|
|
|
protected slots: |
|
/** Update status line widget. */ |
|
virtual void updStatus(void); |
|
|
|
virtual void slotClose(); |
|
virtual void slotSearch(); |
|
virtual void slotStop(); |
|
void updateCreateButton( const QString &); |
|
void renameSearchFolder(); |
|
void openSearchFolder(); |
|
void folderInvalidated(KMFolder *); |
|
virtual bool slotShowMsg(QTreeWidgetItem *,int); |
|
virtual void updateContextMenuActions(); |
|
virtual void slotContextMenuRequested( QTreeWidgetItem* ); |
|
virtual void copySelectedToFolder( QAction* ); |
|
virtual void moveSelectedToFolder( QAction* ); |
|
virtual void slotFolderActivated(); |
|
void slotClearSelection(); |
|
void slotReplyToMsg(); |
|
void slotReplyAllToMsg(); |
|
void slotReplyListToMsg(); |
|
void slotForwardMsg(); |
|
void slotForwardAttachedMsg(); |
|
void slotSaveMsg(); |
|
void slotSaveAttachments(); |
|
void slotPrintMsg(); |
|
void slotCopyMsgs(); |
|
void slotCutMsgs(); |
|
|
|
/** GUI cleanup after search */ |
|
virtual void searchDone(); |
|
virtual void slotAddMsg(int idx); |
|
virtual void slotRemoveMsg(KMFolder *, quint32 serNum); |
|
void enableGUI(); |
|
|
|
void setEnabledSearchButton(bool); |
|
|
|
protected: |
|
|
|
/** Reimplemented to react to Escape. */ |
|
virtual void keyPressEvent(QKeyEvent*); |
|
|
|
/** Reimplemented to stop searching when the window is closed */ |
|
virtual void closeEvent(QCloseEvent*); |
|
|
|
protected: |
|
bool mStopped; |
|
bool mCloseRequested; |
|
int mFetchingInProgress; |
|
int mSortColumn; |
|
Qt::SortOrder mSortOrder; |
|
QPointer<KMFolderSearch> mFolder; |
|
QTimer *mTimer; |
|
|
|
// GC'd by Qt |
|
QRadioButton *mChkbxAllFolders; |
|
QRadioButton *mChkbxSpecificFolders; |
|
KMail::FolderRequester *mCbxFolders; |
|
QCheckBox *mChkSubFolders; |
|
MatchListView* mLbxMatches; |
|
QLabel *mSearchFolderLbl; |
|
QLineEdit *mSearchFolderEdt; |
|
KPushButton *mSearchFolderBtn; |
|
KPushButton *mSearchFolderOpenBtn; |
|
KStatusBar* mStatusBar; |
|
QWidget* mLastFocus; // to remember the position of the focus |
|
QMap<QAction*,KMFolder*> mMenuToFolder; |
|
QAction *mReplyAction, *mReplyAllAction, *mReplyListAction, *mSaveAsAction, |
|
*mForwardAction, *mForwardAttachedAction, *mPrintAction, *mClearAction, |
|
*mSaveAtchAction, *mCopyAction, *mCutAction; |
|
KActionMenu *mForwardActionMenu; |
|
QList<QPointer<KMFolder> > mFolders; |
|
|
|
// not owned by us |
|
KMMainWidget* mKMMainWidget; |
|
KMSearchPatternEdit *mPatternEdit; |
|
KMSearchPattern *mSearchPattern; |
|
|
|
static const int MSGID_COLUMN; |
|
}; |
|
|
|
// QTreeWidget sub-class for dnd support |
|
// Internal, only used by SearchWindow. |
|
class MatchListView : public QTreeWidget |
|
{ |
|
Q_OBJECT |
|
|
|
public: |
|
MatchListView( QWidget *parent, SearchWindow* sw ); |
|
|
|
protected: |
|
|
|
virtual void contextMenuEvent( QContextMenuEvent* event ); |
|
virtual void startDrag( Qt::DropActions supportedActions ); |
|
|
|
private: |
|
SearchWindow* mSearchWindow; |
|
signals: |
|
void contextMenuRequested( QTreeWidgetItem* item ); |
|
}; |
|
|
|
} // namespace KMail |
|
#endif /*searchwindow_h*/
|
|
|