File indexing completed on 2024-05-12 05:12:46

0001 /*
0002  This file is part of Akonadi.
0003 
0004  SPDX-FileCopyrightText: 2009 Till Adam <adam@kde.org>
0005 
0006  SPDX-License-Identifier: GPL-2.0-or-later
0007  */
0008 
0009 #pragma once
0010 
0011 #include "libakonadiconsole_export.h"
0012 #include <QAbstractItemModel>
0013 
0014 #include <memory>
0015 
0016 class JobTracker;
0017 class JobTrackerModelPrivate;
0018 
0019 class LIBAKONADICONSOLE_EXPORT JobTrackerModel : public QAbstractItemModel
0020 {
0021     Q_OBJECT
0022 public:
0023     explicit JobTrackerModel(const char *name, QObject *parent = nullptr);
0024     ~JobTrackerModel() override;
0025 
0026     JobTracker &jobTracker(); // for the unittest
0027 
0028     enum Roles { FailedIdRole = Qt::UserRole + 1 };
0029 
0030     enum Column {
0031         ColumnJobId,
0032         ColumnCreated,
0033         ColumnWaitTime,
0034         ColumnJobDuration,
0035         ColumnJobType,
0036         ColumnState,
0037         ColumnInfo,
0038 
0039         NumColumns // always last
0040     };
0041 
0042     /* QAIM API */
0043     QModelIndex index(int, int, const QModelIndex &parent = QModelIndex()) const override;
0044     QModelIndex parent(const QModelIndex &) const override;
0045     int rowCount(const QModelIndex &parent = QModelIndex()) const override;
0046     int columnCount(const QModelIndex &parent = QModelIndex()) const override;
0047     QVariant data(const QModelIndex &, int role = Qt::DisplayRole) const override;
0048     QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
0049     bool isEnabled() const;
0050 
0051 public Q_SLOTS:
0052     void resetTracker();
0053     void setEnabled(bool);
0054 
0055 private Q_SLOTS:
0056     void jobAboutToBeAdded(int pos, int parentId);
0057     void jobAdded();
0058     void jobsUpdated(const QList<QPair<int, int>> &);
0059 
0060 private:
0061     std::unique_ptr<JobTrackerModelPrivate> const d;
0062 };