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 };