File indexing completed on 2024-12-01 12:29:47
0001 /* 0002 * BluezQt - Asynchronous BlueZ wrapper library 0003 * 0004 * SPDX-FileCopyrightText: 2014-2015 David Rosca <nowrep@gmail.com> 0005 * 0006 * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0007 */ 0008 0009 #ifndef BLUEZQT_DEVICESMODEL_H 0010 #define BLUEZQT_DEVICESMODEL_H 0011 0012 #include <QAbstractListModel> 0013 0014 #include "bluezqt_export.h" 0015 #include "types.h" 0016 0017 namespace BluezQt 0018 { 0019 class Manager; 0020 class Device; 0021 0022 /** 0023 * @class BluezQt::DevicesModel devicesmodel.h <BluezQt/DevicesModel> 0024 * 0025 * Model of all devices. 0026 * 0027 * This class represents a model of all devices. 0028 * 0029 * Example use in QML code: 0030 * @code 0031 * import org.kde.bluezqt 1.0 as BluezQt 0032 * 0033 * ListView { 0034 * model: BluezQt.DevicesModel { } 0035 * delegate: Text { 0036 * text: "%1 (%2)".arg(Name).arg(Address) 0037 * } 0038 * } 0039 * @endcode 0040 */ 0041 class BLUEZQT_EXPORT DevicesModel : public QAbstractListModel 0042 { 0043 Q_OBJECT 0044 0045 public: 0046 /** 0047 * Device data roles. 0048 */ 0049 enum DeviceRoles { 0050 /** UBI of the device (QString) */ 0051 UbiRole = Qt::UserRole + 100, 0052 /** Address of the device (QString) */ 0053 AddressRole = Qt::UserRole + 101, 0054 /** Name of the device (QString) */ 0055 NameRole = Qt::UserRole + 102, 0056 /** Friendly name of the device (QString) */ 0057 FriendlyNameRole = Qt::UserRole + 103, 0058 /** Remote name of the device (QString) */ 0059 RemoteNameRole = Qt::UserRole + 104, 0060 /** Class of the device (quint32) */ 0061 ClassRole = Qt::UserRole + 105, 0062 /** Type of the device (Device::Type) */ 0063 TypeRole = Qt::UserRole + 106, 0064 /** Appearance of the device (quint16) */ 0065 AppearanceRole = Qt::UserRole + 107, 0066 /** Icon name of the device (QString) */ 0067 IconRole = Qt::UserRole + 108, 0068 /** Indicates whether the device is paired (bool) */ 0069 PairedRole = Qt::UserRole + 109, 0070 /** Indicates whether the device is trusted (bool) */ 0071 TrustedRole = Qt::UserRole + 110, 0072 /** Indicates whether the device is blocked (bool) */ 0073 BlockedRole = Qt::UserRole + 111, 0074 /** Indicates whether the device has legacy pairing (bool) */ 0075 LegacyPairingRole = Qt::UserRole + 112, 0076 /** Received Signal Strength Indicator of the device (qint16) */ 0077 RssiRole = Qt::UserRole + 113, 0078 /** Indicates whether the device is connected (bool) */ 0079 ConnectedRole = Qt::UserRole + 114, 0080 /** UUIDs of supported services by the device (QStringList) */ 0081 UuidsRole = Qt::UserRole + 115, 0082 /** Modalias of the device (QString) */ 0083 ModaliasRole = Qt::UserRole + 116, 0084 /** Name of the associated adapter (QString) */ 0085 AdapterNameRole = Qt::UserRole + 117, 0086 /** Address of the associated adapter (QString) */ 0087 AdapterAddressRole = Qt::UserRole + 118, 0088 /** Indicates whether the associated adapter is powered (bool) */ 0089 AdapterPoweredRole = Qt::UserRole + 119, 0090 /** Indicates whether the associated adapter is discoverable (bool) */ 0091 AdapterDiscoverableRole = Qt::UserRole + 120, 0092 /** Indicates whether the associated adapter is pairable (bool) */ 0093 AdapterPairableRole = Qt::UserRole + 121, 0094 /** Indicates whether the associated adapter is discovering (bool) */ 0095 AdapterDiscoveringRole = Qt::UserRole + 122, 0096 /** UUIDs of supported services by the associated adapter (QStringList) */ 0097 AdapterUuidsRole = Qt::UserRole + 123, 0098 /** Last role used by DevicesModel */ 0099 LastRole = Qt::UserRole + 124, 0100 }; 0101 0102 /** 0103 * Creates a new DevicesModel object. 0104 * 0105 * @param manager manager to be used 0106 * @param parent 0107 */ 0108 explicit DevicesModel(Manager *manager, QObject *parent = nullptr); 0109 0110 /** 0111 * Destroys a DevicesModel object. 0112 */ 0113 ~DevicesModel() override; 0114 0115 /** 0116 * Reimplemented from QAbstractListModel::roleNames() 0117 */ 0118 QHash<int, QByteArray> roleNames() const override; 0119 0120 /** 0121 * Reimplemented from QAbstractListModel::rowCount() 0122 */ 0123 int rowCount(const QModelIndex &parent = QModelIndex()) const override; 0124 0125 /** 0126 * Reimplemented from QAbstractListModel::data() 0127 */ 0128 QVariant data(const QModelIndex &index, int role) const override; 0129 0130 /** 0131 * Reimplemented from QAbstractListModel::index() 0132 */ 0133 QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override; 0134 0135 /** 0136 * Returns a device for specified index. 0137 * 0138 * @param index index in model 0139 * @return device object 0140 */ 0141 DevicePtr device(const QModelIndex &index) const; 0142 0143 private: 0144 class DevicesModelPrivate *const d; 0145 0146 friend class DevicesModelPrivate; 0147 }; 0148 0149 } // namespace BluezQt 0150 0151 #endif // BLUEZQT_DEVICESMODEL_H