Clementine-audio-player-Mac.../src/devices/devicemanager.cpp

74 lines
2.2 KiB
C++

/* This file is part of Clementine.
Clementine is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Clementine is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Clementine. If not, see <http://www.gnu.org/licenses/>.
*/
#include "connecteddevice.h"
#include "devicemanager.h"
#include "devicekitlister.h"
DeviceManager::DeviceManager(TaskManager* task_manager, QObject *parent)
: QObject(parent),
task_manager_(task_manager)
{
AddLister(new DeviceKitLister);
}
DeviceManager::~DeviceManager() {
qDeleteAll(listers_);
}
void DeviceManager::AddLister(DeviceLister *lister) {
listers_ << lister;
connect(lister, SIGNAL(DeviceAdded(QString)), SLOT(DeviceAdded(QString)));
connect(lister, SIGNAL(DeviceRemoved(QString)), SLOT(DeviceRemoved(QString)));
connect(lister, SIGNAL(DeviceChanged(QString)), SLOT(DeviceChanged(QString)));
lister->Start();
}
void DeviceManager::DeviceAdded(const QString &id) {
DeviceLister* lister = qobject_cast<DeviceLister*>(sender());
qDebug() << "Device added:" << id;
for (int i=0 ; i<DeviceKitLister::LastField ; ++i) {
qDebug() << i << lister->DeviceInfo(id, i);
}
ConnectedDevice* device = lister->Connect(id, this);
devices_ << device;
}
void DeviceManager::DeviceRemoved(const QString &id) {
DeviceLister* lister = qobject_cast<DeviceLister*>(sender());
qDebug() << "Device removed:" << id;
foreach (ConnectedDevice* device, devices_) {
if (device->lister() == lister && device->unique_id() == id) {
delete device;
devices_.removeAll(device);
break;
}
}
}
void DeviceManager::DeviceChanged(const QString &id) {
DeviceLister* lister = qobject_cast<DeviceLister*>(sender());
qDebug() << "Device changed:" << id;
for (int i=0 ; i<DeviceKitLister::LastField ; ++i) {
qDebug() << i << lister->DeviceInfo(id, i);
}
}