File indexing completed on 2024-05-12 05:12:46
0001 /* 0002 * SPDX-FileCopyrightText: 2013 Daniel Vrátil <dvratil@redhat.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 * 0006 */ 0007 0008 #pragma once 0009 0010 #include "libakonadiconsole_export.h" 0011 #include <Akonadi/NotificationSubscriber> 0012 #include <QAbstractItemModel> 0013 0014 namespace Akonadi 0015 { 0016 class Monitor; 0017 } 0018 0019 class LIBAKONADICONSOLE_EXPORT MonitorsModel : public QAbstractItemModel 0020 { 0021 Q_OBJECT 0022 0023 public: 0024 enum Roles { SubscriberRole = Qt::UserRole }; 0025 0026 explicit MonitorsModel(QObject *parent = nullptr); 0027 ~MonitorsModel() override; 0028 0029 void setEnabled(bool enabled); 0030 0031 QVariant data(const QModelIndex &index, int role) const override; 0032 QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; 0033 int columnCount(const QModelIndex &parent) const override; 0034 int rowCount(const QModelIndex &parent) const override; 0035 QModelIndex parent(const QModelIndex &child) const override; 0036 QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override; 0037 0038 private Q_SLOTS: 0039 void init(); 0040 0041 void slotSubscriberAdded(const Akonadi::NotificationSubscriber &subscriber); 0042 void slotSubscriberChanged(const Akonadi::NotificationSubscriber &subscriber); 0043 void slotSubscriberRemoved(const Akonadi::NotificationSubscriber &subscriber); 0044 0045 QModelIndex indexForSession(const QByteArray &sesion); 0046 0047 private: 0048 QList<QByteArray> mSessions; 0049 QHash<QByteArray /* session */, QList<Akonadi::NotificationSubscriber>> mData; 0050 Akonadi::Monitor *mMonitor; 0051 };