File indexing completed on 2025-02-16 04:59:08
0001 /* Copyright (C) 2006 - 2014 Jan Kundrát <jkt@flaska.net> 0002 0003 This file is part of the Trojita Qt IMAP e-mail client, 0004 http://trojita.flaska.net/ 0005 0006 This program is free software; you can redistribute it and/or 0007 modify it under the terms of the GNU General Public License as 0008 published by the Free Software Foundation; either version 2 of 0009 the License or (at your option) version 3 or any later version 0010 accepted by the membership of KDE e.V. (or its successor approved 0011 by the membership of KDE e.V.), which shall act as a proxy 0012 defined in Section 14 of version 3 of the license. 0013 0014 This program is distributed in the hope that it will be useful, 0015 but WITHOUT ANY WARRANTY; without even the implied warranty of 0016 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0017 GNU General Public License for more details. 0018 0019 You should have received a copy of the GNU General Public License 0020 along with this program. If not, see <http://www.gnu.org/licenses/>. 0021 */ 0022 0023 #ifndef IMAP_MODEL_VISIBLETASKSMODEL_H 0024 #define IMAP_MODEL_VISIBLETASKSMODEL_H 0025 0026 #include <QSortFilterProxyModel> 0027 0028 class KDescendantsProxyModel; 0029 0030 namespace Imap 0031 { 0032 namespace Mailbox 0033 { 0034 0035 /** @short Proxy model showing a list of tasks that are active or pending 0036 0037 In contrast to the full tree model, this proxy will show only those ImapTasks that somehow correspond to an activity requested by 0038 user. This means that auxiliary tasks like GetAnyConnectionTask, KeepMailboxOpenTask etc are not shown. 0039 0040 The goal is to have a way of showing an activity indication whenever the IMAP connection is "doing something". 0041 */ 0042 class VisibleTasksModel : public QSortFilterProxyModel 0043 { 0044 Q_OBJECT 0045 Q_PROPERTY(bool hasVisibleTasks READ hasVisibleTasks NOTIFY hasVisibleTasksChanged) 0046 public: 0047 explicit VisibleTasksModel(QObject *parent, QAbstractItemModel *taskModel); 0048 bool hasVisibleTasks() const; 0049 virtual QHash<int, QByteArray> roleNames() const; 0050 0051 signals: 0052 void hasVisibleTasksChanged(); 0053 protected: 0054 bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const; 0055 private: 0056 KDescendantsProxyModel *m_flatteningModel; 0057 }; 0058 0059 } 0060 } 0061 0062 #endif // IMAP_MODEL_VISIBLETASKSMODEL_H