Basic communication between daemon and wizard

This commit is contained in:
Albert Vaca 2013-06-27 02:26:06 +02:00
parent 1f536de7e9
commit 1bdd3eb97b
4 changed files with 45 additions and 24 deletions

View file

@ -65,18 +65,19 @@ Daemon::Daemon(QObject *parent, const QList<QVariant>&)
announcers.insert(new AvahiAnnouncer());
announcers.insert(new FakeAnnouncer());
//Listen to incomming connections
Q_FOREACH (Announcer* a, announcers) {
QObject::connect(a,SIGNAL(deviceConnection(DeviceLink*)),
this,SLOT(deviceConnection(DeviceLink*)));
a->setDiscoverable(true);
}
//TODO: Read paired devices from config
//pairedDevices.push_back(new Device("MyAndroid","MyAndroid"));
QDBusConnection::sessionBus().registerService("org.kde.kdeconnect");
//Listen to incomming connections
Q_FOREACH (Announcer* a, announcers) {
QObject::connect(a,SIGNAL(deviceConnection(DeviceLink*)),
this,SLOT(deviceConnection(DeviceLink*)));
}
}
QString Daemon::listVisibleDevices()
@ -88,9 +89,9 @@ QString Daemon::listVisibleDevices()
ret << std::setw(20) << "Name";
ret << std::endl;
Q_FOREACH (Device* d, visibleDevices) {
ret << std::setw(20) << d->id().toStdString();
ret << std::setw(20) << d->name().toStdString();
Q_FOREACH (DeviceLink* d, visibleDevices) {
ret << std::setw(20) << d->device()->id().toStdString();
ret << std::setw(20) << d->device()->name().toStdString();
ret << std::endl;
}
@ -98,11 +99,23 @@ QString Daemon::listVisibleDevices()
}
void Daemon::startDiscovery(int timeOut)
{
//Listen to incomming connections
Q_FOREACH (Announcer* a, announcers) {
a->setDiscoverable(true);
}
}
bool Daemon::pairDevice(QString id)
{
//TODO
linkedDevices.append(new EchoDeviceLink(new Device(id,"fake-to-the-max")));
if (!visibleDevices.contains(id)) return false;
linkTo(visibleDevices[id]);
return true;
}
QString Daemon::listLinkedDevices()
@ -132,7 +145,7 @@ void Daemon::deviceConnection(DeviceLink* dl)
}
}
visibleDevices.append(dl->device());
visibleDevices[dl->device()->id()] = dl;
if (paired) {
qDebug() << "Known device connected" + dl->device()->name();
@ -140,8 +153,10 @@ void Daemon::deviceConnection(DeviceLink* dl)
}
else {
qDebug() << "Unknown device connected" + dl->device()->name();
//TODO: Not connect immediately
linkTo(dl);
emit deviceDiscovered(dl->device()->id(), dl->device()->name());
//linkTo(dl);
}
}

View file

@ -58,10 +58,15 @@ private Q_SLOTS:
public Q_SLOTS:
//After calling this, signal deviceDiscovered will be triggered for each device
Q_SCRIPTABLE void startDiscovery(int timeOut);
Q_SCRIPTABLE QString listVisibleDevices();
Q_SCRIPTABLE bool pairDevice(QString id);
/*
Q_SCRIPTABLE QString listPairedDevices(QString id);
@ -72,15 +77,15 @@ public Q_SLOTS:
Q_SIGNALS:
Q_SCRIPTABLE void deviceAdded(QString id, QString name);
Q_SCRIPTABLE void deviceRemoved(QString id);
Q_SCRIPTABLE void deviceDiscovered(QString id, QString name);
//Q_SCRIPTABLE void deviceLost(QString id);
private:
void linkTo(DeviceLink* dl);
//Non paired visible devices
QList<Device*> visibleDevices;
//(Non paired?) visible devices
QMap<QString, DeviceLink*> visibleDevices;
//All paired devices (should be stored and read from disk)
QVector<Device*> pairedDevices;

View file

@ -38,8 +38,8 @@ AddDeviceWizard::AddDeviceWizard(QWidget* parent)
connect(this,SIGNAL(currentIdChanged(int)),this,SLOT(pageChanged(int)));
connect(dbusInterface, SIGNAL(deviceAdded(QString, QString)), this, SLOT(deviceDiscovered(QString,QString)));
connect(dbusInterface, SIGNAL(deviceRemoved(QString)), this, SLOT(deviceLost(QString)));
connect(dbusInterface, SIGNAL(deviceDiscovered(QString, QString)), this, SLOT(deviceDiscovered(QString,QString)));
//connect(dbusInterface, SIGNAL(deviceLost(QString)), this, SLOT(deviceLost(QString)));
}
@ -48,6 +48,7 @@ void AddDeviceWizard::pageChanged(int id)
qDebug() << id;
//QWizardPage* p = page(id);
if (id == 1) {
dbusInterface->startDiscovery(10);
//Show "scanning"
}
}
@ -59,12 +60,12 @@ void AddDeviceWizard::deviceDiscovered(QString id, QString name)
discoveredDevicesList->appendRow(item);
}
/*
void AddDeviceWizard::deviceLost(QString id)
{
//discoveredDevicesList->removeRow();
}
*/
void AddDeviceWizard::discoveryFinished(bool success)
{

View file

@ -44,7 +44,7 @@ private Q_SLOTS:
void pageChanged(int id);
void deviceDiscovered(QString id, QString name);
void deviceLost(QString id);
//void deviceLost(QString id);
void discoveryFinished(bool success);
private: