summaryrefslogtreecommitdiff
path: root/src/controller.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/controller.cpp')
-rw-r--r--src/controller.cpp84
1 files changed, 84 insertions, 0 deletions
diff --git a/src/controller.cpp b/src/controller.cpp
new file mode 100644
index 0000000..02c8252
--- /dev/null
+++ b/src/controller.cpp
@@ -0,0 +1,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();
+ }
+}