1 | /* |
2 | Copyright (c) 2006-2008 Tobias Koenig <tokoe@kde.org> |
3 | |
4 | This library is free software; you can redistribute it and/or modify it |
5 | under the terms of the GNU Library General Public License as published by |
6 | the Free Software Foundation; either version 2 of the License, or (at your |
7 | option) any later version. |
8 | |
9 | This library is distributed in the hope that it will be useful, but WITHOUT |
10 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
11 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public |
12 | License for more details. |
13 | |
14 | You should have received a copy of the GNU Library General Public License |
15 | along with this library; see the file COPYING.LIB. If not, write to the |
16 | Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA |
17 | 02110-1301, USA. |
18 | */ |
19 | |
20 | #ifndef AKONADI_AGENTINSTANCEMODEL_H |
21 | #define AKONADI_AGENTINSTANCEMODEL_H |
22 | |
23 | #include "akonadi_export.h" |
24 | |
25 | #include <QtCore/QAbstractItemModel> |
26 | |
27 | namespace Akonadi { |
28 | |
29 | /** |
30 | * @short Provides a data model for agent instances. |
31 | * |
32 | * This class provides the interface of a QAbstractItemModel to |
33 | * access all available agent instances: their name, identifier, |
34 | * supported mimetypes and capabilities. |
35 | * |
36 | * @code |
37 | * |
38 | * Akonadi::AgentInstanceModel *model = new Akonadi::AgentInstanceModel( this ); |
39 | * |
40 | * QListView *view = new QListView( this ); |
41 | * view->setModel( model ); |
42 | * |
43 | * @endcode |
44 | * |
45 | * To show only agent instances that match a given mime type or special |
46 | * capabilities, use the AgentFilterProxyModel on top of this model. |
47 | * |
48 | * @author Tobias Koenig <tokoe@kde.org> |
49 | */ |
50 | class AKONADI_EXPORT AgentInstanceModel : public QAbstractItemModel |
51 | { |
52 | Q_OBJECT |
53 | |
54 | public: |
55 | /** |
56 | * Describes the roles of this model. |
57 | */ |
58 | enum Roles { |
59 | TypeRole = Qt::UserRole + 1, ///< The agent type itself |
60 | TypeIdentifierRole, ///< The identifier of the agent type |
61 | DescriptionRole, ///< A description of the agent type |
62 | MimeTypesRole, ///< A list of supported mimetypes |
63 | CapabilitiesRole, ///< A list of supported capabilities |
64 | InstanceRole, ///< The agent instance itself |
65 | InstanceIdentifierRole, ///< The identifier of the agent instance |
66 | StatusRole, ///< The current status (numerical) of the instance |
67 | StatusMessageRole, ///< A textual presentation of the current status |
68 | ProgressRole, ///< The current progress (numerical in percent) of an operation |
69 | OnlineRole, ///< The current online/offline status |
70 | UserRole = Qt::UserRole + 42 ///< Role for user extensions |
71 | }; |
72 | |
73 | /** |
74 | * Creates a new agent instance model. |
75 | * |
76 | * @param parent The parent object. |
77 | */ |
78 | explicit AgentInstanceModel(QObject *parent = 0); |
79 | |
80 | /** |
81 | * Destroys the agent instance model. |
82 | */ |
83 | virtual ~AgentInstanceModel(); |
84 | |
85 | virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; |
86 | virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; |
87 | virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; |
88 | virtual QVariant (int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; |
89 | virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; |
90 | virtual QModelIndex parent(const QModelIndex &index) const; |
91 | virtual Qt::ItemFlags flags(const QModelIndex &index) const; |
92 | virtual bool setData(const QModelIndex &index, const QVariant &value, int role); |
93 | |
94 | private: |
95 | //@cond PRIVATE |
96 | class Private; |
97 | Private *const d; |
98 | |
99 | Q_PRIVATE_SLOT(d, void instanceAdded(const Akonadi::AgentInstance &)) |
100 | Q_PRIVATE_SLOT(d, void instanceRemoved(const Akonadi::AgentInstance &)) |
101 | Q_PRIVATE_SLOT(d, void instanceChanged(const Akonadi::AgentInstance &)) |
102 | //@endcond |
103 | }; |
104 | |
105 | } |
106 | |
107 | #endif |
108 | |