diff options
Diffstat (limited to 'src/controller.cpp')
-rw-r--r-- | src/controller.cpp | 84 |
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(); + } +} |