-
Notifications
You must be signed in to change notification settings - Fork 2
/
adapter.cpp
50 lines (41 loc) · 1.47 KB
/
adapter.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <QDBusPendingCallWatcher>
#include <QDBusError>
#include "adapter.h"
#include "constants.h"
#include "ui_adapter.h"
Adapter::Adapter(QString path, QWidget *parent) :
QFrame(parent),
adapterInterface(BLUEZ_SERVICE, path, SYS_BUS, this),
ui(new Ui::Adapter)
{
ui->setupUi(this);
connect(ui->poweredCheckBox, SIGNAL(clicked(bool)), SLOT(poweredClicked(bool)));
connect(new OrgFreedesktopDBusPropertiesInterface(BLUEZ_SERVICE, path, SYS_BUS, this),
SIGNAL(PropertiesChanged(QString,QVariantMap,QStringList)),
SLOT(onPropertiesChanged(QString,QVariantMap,QStringList)));
poweredClicked(true);
adapterInterface.StartDiscovery();
ui->nameLabel->setText(adapterInterface.alias());
ui->poweredCheckBox->setChecked(adapterInterface.powered());
}
Adapter::~Adapter()
{
delete ui;
}
void Adapter::onPropertiesChanged(const QString &interface, const QVariantMap &changed_properties, const QStringList &invalidated_properties)
{
qDebug() << "Changed properties:" << changed_properties;
if (changed_properties.contains("Powered")) {
bool powerIsOn = changed_properties["Powered"].toBool();
emit powered(powerIsOn);
ui->poweredCheckBox->setChecked(powerIsOn);
if (powerIsOn) {
adapterInterface.StartDiscovery();
}
}
}
void Adapter::poweredClicked(bool checked)
{
adapterInterface.setPowered(checked);
ui->poweredCheckBox->setCheckState(Qt::PartiallyChecked);
}