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.
191 lines
5.3 KiB
191 lines
5.3 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 KMAIL_SEARCHWINDOW_H |
|
#define KMAIL_SEARCHWINDOW_H |
|
|
|
#include "mailcommon/search/searchpattern.h" |
|
#include "ui_searchwindow.h" |
|
|
|
#include <AkonadiCore/collection.h> |
|
#include <AkonadiCore/item.h> |
|
#include <QDialog> |
|
#include <kxmlguiclient.h> |
|
#include <KGuiItem> |
|
#include <QtCore/QTimer> |
|
|
|
class QCloseEvent; |
|
class QKeyEvent; |
|
class KActionMenu; |
|
class KJob; |
|
class KMMainWidget; |
|
class KMSearchMessageModel; |
|
|
|
namespace PimCommon |
|
{ |
|
class SelectMultiCollectionDialog; |
|
} |
|
|
|
namespace Akonadi |
|
{ |
|
class StandardMailActionManager; |
|
} |
|
|
|
namespace KMime |
|
{ |
|
class Message; |
|
} |
|
|
|
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 SearchPatternWarning; |
|
class SearchWindow: public QDialog, public KXMLGUIClient |
|
{ |
|
Q_OBJECT |
|
|
|
public: |
|
/** |
|
* Creates a new search window. |
|
* |
|
* @param parent The parent widget. |
|
* @param collection The folder which will be pre-selected as the base folder |
|
* of search operations. |
|
*/ |
|
explicit SearchWindow(KMMainWidget *parent, const Akonadi::Collection &collection = Akonadi::Collection()); |
|
|
|
/** |
|
* Destroys the search window. |
|
*/ |
|
~SearchWindow(); |
|
|
|
/** |
|
* Changes the base folder for search operations to a different folder. |
|
* |
|
* @param folder The folder to use as the new base for searches. |
|
*/ |
|
void activateFolder(const Akonadi::Collection &folder); |
|
|
|
/** |
|
* Provides access to the list of currently selected message in the listview. |
|
* |
|
* @return The list of currently selected search result messages. |
|
*/ |
|
Akonadi::Item::List selectedMessages() const; |
|
|
|
/** |
|
* Provides access to the currently selected message. |
|
* |
|
* @return the currently selected message. |
|
*/ |
|
Akonadi::Item selectedMessage() const; |
|
|
|
/** |
|
* Loads a search pattern into the search window, appending its rules to the current one. |
|
*/ |
|
void addRulesToSearchPattern(const MailCommon::SearchPattern &pattern); |
|
|
|
protected: |
|
/** Reimplemented to react to Escape. */ |
|
void keyPressEvent(QKeyEvent *) Q_DECL_OVERRIDE; |
|
|
|
/** Reimplemented to stop searching when the window is closed */ |
|
void closeEvent(QCloseEvent *) Q_DECL_OVERRIDE; |
|
|
|
void createSearchModel(); |
|
|
|
private Q_SLOTS: |
|
void updateCollectionStatistic(Akonadi::Collection::Id, const Akonadi::CollectionStatistics &); |
|
|
|
void slotClose(); |
|
void slotSearch(); |
|
void slotStop(); |
|
void scheduleRename(const QString &); |
|
void renameSearchFolder(); |
|
void openSearchFolder(); |
|
void slotViewSelectedMsg(); |
|
void slotViewMsg(const Akonadi::Item &); |
|
void slotCurrentChanged(const Akonadi::Item &); |
|
void updateContextMenuActions(); |
|
void slotFolderActivated(); |
|
void slotClearSelection(); |
|
void slotReplyToMsg(); |
|
void slotReplyAllToMsg(); |
|
void slotReplyListToMsg(); |
|
void slotForwardMsg(); |
|
void slotForwardAttachedMsg(); |
|
void slotSaveMsg(); |
|
void slotSaveAttachments(); |
|
void slotPrintMsg(); |
|
|
|
/** GUI cleanup after search */ |
|
void searchDone(KJob *); |
|
void enableGUI(); |
|
|
|
void setEnabledSearchButton(bool); |
|
void slotSearchFolderRenameDone(KJob *); |
|
|
|
void slotContextMenuRequested(const QPoint &); |
|
void slotSelectMultipleFolders(); |
|
|
|
void slotSearchCollectionsFetched(KJob *job); |
|
|
|
void slotJumpToFolder(); |
|
private: |
|
void doSearch(); |
|
QPointer<PimCommon::SelectMultiCollectionDialog> mSelectMultiCollectionDialog; |
|
QList<Akonadi::Collection> mCollectionId; |
|
Akonadi::SearchQuery mQuery; |
|
bool mCloseRequested; |
|
int mSortColumn; |
|
Qt::SortOrder mSortOrder; |
|
Akonadi::Collection mFolder; |
|
KJob *mSearchJob; |
|
|
|
KMSearchMessageModel *mResultModel; |
|
Ui_SearchWindow mUi; |
|
KGuiItem mStartSearchGuiItem; |
|
KGuiItem mStopSearchGuiItem; |
|
QPushButton *mSearchButton; |
|
|
|
QAction *mReplyAction, *mReplyAllAction, *mReplyListAction, *mSaveAsAction, |
|
*mForwardInlineAction, *mForwardAttachedAction, *mPrintAction, *mClearAction, |
|
*mSaveAtchAction, *mJumpToFolderAction; |
|
KActionMenu *mForwardActionMenu; |
|
QTimer mRenameTimer; |
|
QByteArray mHeaderState; |
|
// not owned by us |
|
KMMainWidget *mKMMainWidget; |
|
MailCommon::SearchPattern mSearchPattern; |
|
SearchPatternWarning *mSearchPatternWidget; |
|
|
|
Akonadi::StandardMailActionManager *mAkonadiStandardAction; |
|
}; |
|
|
|
} |
|
|
|
#endif
|
|
|