00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef QDBUSMODEL_H
00025 #define QDBUSMODEL_H
00026
00027 #include <QtCore/qabstractitemmodel.h>
00028 #include <QtDBus/QtDBus>
00029
00030 struct QDBusItem;
00031 class QDomDocument;
00032 class QDomElement;
00033
00034 class QDBusModel: public QAbstractItemModel
00035 {
00036 Q_OBJECT
00037
00038 public:
00039 enum Type { InterfaceItem, PathItem, MethodItem, SignalItem, PropertyItem };
00040
00041 QDBusModel(const QString &service, const QDBusConnection &connection);
00042 ~QDBusModel();
00043
00044 QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const;
00045 QModelIndex parent(const QModelIndex &child) const;
00046 int rowCount(const QModelIndex &parent = QModelIndex()) const;
00047 int columnCount(const QModelIndex &parent = QModelIndex()) const;
00048 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
00049 QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
00050
00051 Type itemType(const QModelIndex &index) const;
00052 QString dBusPath(const QModelIndex &index) const;
00053 QString dBusInterface(const QModelIndex &index) const;
00054 QString dBusMethodName(const QModelIndex &index) const;
00055
00056 void refresh(const QModelIndex &index = QModelIndex());
00057
00058 Q_SIGNALS:
00059 void busError(const QString &text);
00060
00061 private:
00062 QDomDocument introspect(const QString &path);
00063 void addMethods(QDBusItem *parent, const QDomElement &iface);
00064 void addPath(QDBusItem *parent);
00065
00066 QString service;
00067 QDBusConnection c;
00068 QDBusItem *root;
00069 };
00070
00071 #endif
00072