summaryrefslogtreecommitdiff
path: root/src/controller.cpp
blob: 02c8252cfab50f6c40c1a3d3d59d33f657d15e98 (plain)
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <QtCore/QDebug>
#include <QtCore/QDateTime>

#include "controller.h"

static const QLatin1String setting_address("address");
static const QLatin1String setting_num_pages("num-pages");
static const QLatin1String setting_page("page%1");
static const QLatin1String setting_page_widget("widget%1");

Controller::Controller(const QString &settingsPrefix, QQuickView *view, QObject *parent) :
	QObject(parent),
	_settings(new MDConfGroup(this)),
	_metawatch(0),
	_reconnect(new ReconnectTimer(this)),
	_view(new WidgetView(settingsPrefix, view, this)),
	_batteryCharge(0), _batteryCharging(false)
{
	_settings->setPath(settingsPrefix);
	_metawatch = new MetaWatch(_settings->value(setting_address).toString(), this);

	connect(_settings, &MDConfGroup::valueChanged, this, &Controller::handleSettingChanged);
	connect(_metawatch, &MetaWatch::connected, _reconnect, &ReconnectTimer::stop);
	connect(_metawatch, &MetaWatch::connected,  this, &Controller::handleMetaWatchConnected);
	connect(_metawatch, &MetaWatch::disconnected, _reconnect, &ReconnectTimer::start);
	connect(_metawatch, &MetaWatch::batteryStatus, this, &Controller::handleMetaWatchBatteryStatus);
	connect(_reconnect, &ReconnectTimer::tick, _metawatch, &MetaWatch::connectDevice);
	_reconnect->start();

	reloadPages();
}

int Controller::batteryCharge() const
{
	return _batteryCharge;
}

bool Controller::batteryCharging() const
{
	return _batteryCharging;
}

void Controller::reloadPages()
{

}

void Controller::switchToPage(int page)
{

}

void Controller::handleSettingChanged(const QString &key)
{
	qDebug() << "Setting" << key << "changed";
	if (key == setting_num_pages) {
		_settings->value(setting_num_pages, 0);
		switchToPage(0);
	}
}

void Controller::handleMetaWatchConnected()
{
	qDebug() << "MetaWatch connected, synchronizing date time";

	_metawatch->updateDeviceType();
	_metawatch->updateBatteryStatus();
	_metawatch->setDateTime(QDateTime::currentDateTime());
	_metawatch->updateLcdDisplay();

	_metawatch->updateWidgetList(_view->widgets());
}

void Controller::handleMetaWatchBatteryStatus(bool charging, int charge)
{
	if (_batteryCharging != charging) {
		_batteryCharging = charging;
		emit batteryChargingChanged();
	}
	if (_batteryCharge != charge) {
		_batteryCharge = charge;
		emit batteryChargeChanged();
	}
}