From 29aaea2d80a9eb1715b6cddfac2d2aacf76358bd Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Thu, 11 Feb 2016 23:55:16 +0100 Subject: launchpad ~mzanetti/rockwork/trunk r87 --- rockworkd/libpebble/blobdb.h | 108 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 rockworkd/libpebble/blobdb.h (limited to 'rockworkd/libpebble/blobdb.h') diff --git a/rockworkd/libpebble/blobdb.h b/rockworkd/libpebble/blobdb.h new file mode 100644 index 0000000..b1db403 --- /dev/null +++ b/rockworkd/libpebble/blobdb.h @@ -0,0 +1,108 @@ +#ifndef BLOBDB_H +#define BLOBDB_H + +#include "watchconnection.h" +#include "pebble.h" +#include "timelineitem.h" +#include "healthparams.h" +#include "appmetadata.h" + +#include +#include +#include + +QTORGANIZER_USE_NAMESPACE + + +class BlobDB : public QObject +{ + Q_OBJECT +public: + enum BlobDBId { + BlobDBIdTest = 0, + BlobDBIdPin = 1, + BlobDBIdApp = 2, + BlobDBIdReminder = 3, + BlobDBIdNotification = 4, + BlobDBIdAppSettings = 7 + + }; + enum Operation { + OperationInsert = 0x01, + OperationDelete = 0x04, + OperationClear = 0x05 + }; + + enum Status { + StatusSuccess = 0x00, + StatusError = 0x01 + }; + + + explicit BlobDB(Pebble *pebble, WatchConnection *connection); + + void insertNotification(const Notification ¬ification); + void insertTimelinePin(const QUuid &uuid, TimelineItem::Layout layout, const QDateTime &startTime, const QDateTime &endTime, const QString &title, const QString &desctiption, const QMap fields, bool recurring); + void removeTimelinePin(const QUuid &uuid); + void insertReminder(); + void clearTimeline(); + void syncCalendar(const QList &events); + + void clearApps(); + void insertAppMetaData(const AppInfo &info); + void removeApp(const AppInfo &info); + + void insert(BlobDBId database, const TimelineItem &item); + void remove(BlobDBId database, const QUuid &uuid); + void clear(BlobDBId database); + + void setHealthParams(const HealthParams &healthParams); + void setUnits(bool imperial); + +private slots: + void blobCommandReply(const QByteArray &data); + void actionInvoked(const QByteArray &data); + void sendActionReply(); + void sendNext(); + +signals: + void muteSource(const QString &sourceId); + void actionTriggered(const QString &actToken); + void appInserted(const QUuid &uuid); + +private: + quint16 generateToken(); + AppMetadata appInfoToMetadata(const AppInfo &info, HardwarePlatform hardwarePlatform); + +private: + + class BlobCommand: public PebblePacket + { + public: + BlobDB::Operation m_command; // quint8 + quint16 m_token; + BlobDB::BlobDBId m_database; + + QByteArray m_key; + QByteArray m_value; + + QByteArray serialize() const override; + }; + + Pebble *m_pebble; + WatchConnection *m_connection; + + QHash m_notificationSources; + + QList m_calendarEntries; + CalendarEvent findCalendarEvent(const QString &id); + + HealthParams m_healthParams; + + BlobCommand *m_currentCommand = nullptr; + QList m_commandQueue; + + QString m_blobDBStoragePath; +}; + +#endif // BLOBDB_H -- cgit v1.2.3