beerservice.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #ifndef BEERSERVICE_H
  2. #define BEERSERVICE_H
  3. #include <QObject>
  4. #include <QtWebSockets/QWebSocket>
  5. class SettingsService;
  6. class BeerService : public QObject
  7. {
  8. Q_OBJECT
  9. Q_PROPERTY(bool connected READ connected NOTIFY connectedChanged)
  10. public:
  11. static BeerService *instance()
  12. {
  13. static BeerService i;
  14. return &i;
  15. }
  16. enum Action
  17. {
  18. ActionUndefined = 0,
  19. ActionGet,
  20. ActionAdd,
  21. ActionDelete,
  22. ActionModify
  23. };
  24. void sendCommand(const QString &entity, Action action, const QVariantMap &data = QVariantMap());
  25. void connectListener(QObject *listener);
  26. void removeListener(QObject *listener);
  27. signals:
  28. void connectedChanged();
  29. private:
  30. BeerService();
  31. ~BeerService();
  32. SettingsService *settings() const;
  33. QString stashFileName() const;
  34. void saveStash() const;
  35. void restoreStash();
  36. void reconnect();
  37. void sendCommand(const QVariantMap &command);
  38. bool connected() const;
  39. QMultiMap<QString, QObject *> m_listeners;
  40. QWebSocket m_socket;
  41. QVariantList m_commandStash;
  42. QMap<Action, QString> m_actions;
  43. };
  44. #endif // BEERSERVICE_H