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