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.
130 lines
4.1 KiB
130 lines
4.1 KiB
/* |
|
|
|
Copyright (c) 2009-2019 Montel Laurent <montel@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 MAILCOMMON_FOLDERTREEVIEW_H |
|
#define MAILCOMMON_FOLDERTREEVIEW_H |
|
|
|
#include "mailcommon_export.h" |
|
#include "foldertreewidget.h" |
|
#include "mailcommon/mailutil.h" |
|
|
|
#include <EntityTreeView> |
|
#include <Collection> |
|
|
|
class QMouseEvent; |
|
|
|
namespace Akonadi { |
|
class CollectionStatisticsDelegate; |
|
} |
|
|
|
namespace MailCommon { |
|
/** |
|
* This is an enhanced EntityTreeView specially suited for the folders in KMail's |
|
* main folder widget. |
|
*/ |
|
class MAILCOMMON_EXPORT FolderTreeView : public Akonadi::EntityTreeView |
|
{ |
|
Q_OBJECT |
|
|
|
public: |
|
explicit FolderTreeView(QWidget *parent = nullptr, bool showUnreadCount = true); |
|
|
|
explicit FolderTreeView(KXMLGUIClient *xmlGuiClient, QWidget *parent = nullptr, bool showUnreadCount = true); |
|
|
|
~FolderTreeView() override; |
|
|
|
void selectNextUnreadFolder(bool confirm = false); |
|
void selectPrevUnreadFolder(bool confirm = false); |
|
|
|
void showStatisticAnimation(bool anim); |
|
|
|
void disableContextMenuAndExtraColumn(); |
|
|
|
void setTooltipsPolicy(FolderTreeWidget::ToolTipDisplayPolicy); |
|
|
|
void restoreHeaderState(const QByteArray &data); |
|
|
|
Q_REQUIRED_RESULT Akonadi::Collection currentFolder() const; |
|
|
|
void disableSaveConfig(); |
|
void readConfig(); |
|
|
|
void updatePalette(); |
|
|
|
void keyboardSearch(const QString &) override; |
|
protected: |
|
enum Move { |
|
Next = 0, |
|
Previous = 1 |
|
}; |
|
|
|
void init(bool showUnreadCount); |
|
void selectModelIndex(const QModelIndex &); |
|
void setCurrentModelIndex(const QModelIndex &); |
|
QModelIndex selectNextFolder(const QModelIndex ¤t); |
|
bool isUnreadFolder(const QModelIndex ¤t, QModelIndex &nextIndex, FolderTreeView::Move move, bool confirm); |
|
void writeConfig(); |
|
|
|
void setSortingPolicy(FolderTreeWidget::SortingPolicy policy, bool writeInConfig = false); |
|
|
|
void mousePressEvent(QMouseEvent *e) override; |
|
|
|
public Q_SLOTS: |
|
void slotFocusNextFolder(); |
|
void slotFocusPrevFolder(); |
|
void slotSelectFocusFolder(); |
|
void slotFocusFirstFolder(); |
|
void slotFocusLastFolder(); |
|
|
|
protected Q_SLOTS: |
|
void slotHeaderContextMenuRequested(const QPoint &); |
|
void slotHeaderContextMenuChangeIconSize(bool); |
|
void slotHeaderContextMenuChangeHeader(bool); |
|
void slotHeaderContextMenuChangeToolTipDisplayPolicy(bool); |
|
void slotHeaderContextMenuChangeSortingPolicy(bool); |
|
|
|
Q_SIGNALS: |
|
void changeTooltipsPolicy(FolderTreeWidget::ToolTipDisplayPolicy); |
|
void manualSortingChanged(bool actif); |
|
void newTabRequested(bool); |
|
|
|
private: |
|
enum SearchDirection { |
|
ForwardSearch, |
|
BackwardSearch |
|
}; |
|
|
|
QModelIndex indexAbove(const QModelIndex ¤t) const; |
|
QModelIndex indexBelow(const QModelIndex ¤t) const; |
|
QModelIndex lastChild(const QModelIndex ¤t) const; |
|
QModelIndex nextUnreadCollection(const QModelIndex ¤t, SearchDirection direction) const; |
|
|
|
bool ignoreUnreadFolder(const Akonadi::Collection &, bool) const; |
|
bool allowedToEnterFolder(const Akonadi::Collection &, bool) const; |
|
bool trySelectNextUnreadFolder(const QModelIndex &, SearchDirection, bool); |
|
|
|
FolderTreeWidget::ToolTipDisplayPolicy mToolTipDisplayPolicy; |
|
FolderTreeWidget::SortingPolicy mSortingPolicy; |
|
Akonadi::CollectionStatisticsDelegate *mCollectionStatisticsDelegate = nullptr; |
|
bool mbDisableContextMenuAndExtraColumn = false; |
|
bool mbDisableSaveConfig = false; |
|
}; |
|
} |
|
|
|
#endif
|
|
|