File indexing completed on 2025-01-19 12:42:13
0001 /* 0002 * BluezQt - Asynchronous Bluez wrapper library 0003 * 0004 * SPDX-FileCopyrightText: 2014 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 #include "declarativedevicesmodel.h" 0010 #include "declarativeadapter.h" 0011 #include "declarativebattery.h" 0012 #include "declarativedevice.h" 0013 #include "declarativemediaplayer.h" 0014 0015 DeclarativeDevicesModel::DeclarativeDevicesModel(QObject *parent) 0016 : QSortFilterProxyModel(parent) 0017 , m_manager(nullptr) 0018 , m_model(nullptr) 0019 { 0020 } 0021 0022 DeclarativeManager *DeclarativeDevicesModel::manager() const 0023 { 0024 return m_manager; 0025 } 0026 0027 void DeclarativeDevicesModel::setManager(DeclarativeManager *manager) 0028 { 0029 m_manager = manager; 0030 m_model = new BluezQt::DevicesModel(m_manager, this); 0031 setSourceModel(m_model); 0032 } 0033 0034 QHash<int, QByteArray> DeclarativeDevicesModel::roleNames() const 0035 { 0036 QHash<int, QByteArray> roles = QSortFilterProxyModel::roleNames(); 0037 0038 roles[DeviceRole] = QByteArrayLiteral("Device"); 0039 roles[AdapterRole] = QByteArrayLiteral("Adapter"); 0040 roles[MediaPlayerRole] = QByteArrayLiteral("MediaPlayer"); 0041 roles[BatteryRole] = QByteArrayLiteral("Battery"); 0042 0043 return roles; 0044 } 0045 0046 QVariant DeclarativeDevicesModel::data(const QModelIndex &index, int role) const 0047 { 0048 if (!m_model) { 0049 return QSortFilterProxyModel::data(index, role); 0050 } 0051 0052 BluezQt::DevicePtr dev = m_model->device(mapToSource(index)); 0053 if (!dev) { 0054 return QSortFilterProxyModel::data(index, role); 0055 } 0056 0057 switch (role) { 0058 case DeviceRole: 0059 return QVariant::fromValue(m_manager->declarativeDeviceFromPtr(dev)); 0060 case AdapterRole: 0061 return QVariant::fromValue(m_manager->declarativeAdapterFromPtr(dev->adapter())); 0062 case MediaPlayerRole: 0063 if (DeclarativeDevice *device = m_manager->declarativeDeviceFromPtr(dev)) { 0064 return QVariant::fromValue(device->mediaPlayer()); 0065 } 0066 break; 0067 case BatteryRole: 0068 if (DeclarativeDevice *device = m_manager->declarativeDeviceFromPtr(dev)) { 0069 return QVariant::fromValue(device->battery()); 0070 } 0071 break; 0072 } 0073 0074 return QSortFilterProxyModel::data(index, role); 0075 } 0076 0077 #include "moc_declarativedevicesmodel.cpp"