Overte C++ Documentation
Plugin.h
1 //
2 // Created by Bradley Austin Davis on 2015/08/08
3 // Copyright 2015 High Fidelity, Inc.
4 //
5 // Distributed under the Apache License, Version 2.0.
6 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
7 //
8 #pragma once
9 
10 #include <assert.h>
11 
12 #include <QString>
13 #include <QObject>
14 
15 #include "Forward.h"
16 
17 class Plugin : public QObject {
18  Q_OBJECT
19 public:
21  virtual const QString getName() const = 0;
22 
23  typedef enum { STANDARD, ADVANCED, DEVELOPER } grouping;
24 
26  virtual grouping getGrouping() const { return STANDARD; }
27 
29  virtual const QString getID() const { assert(false); return UNKNOWN_PLUGIN_ID; }
30 
31  virtual bool isSupported() const;
32 
33  void setContainer(PluginContainer* container);
34 
36  virtual void init();
37 
39  virtual void deinit();
40 
43  virtual bool activate() {
44  _active = true;
45  return _active;
46  }
47 
49  virtual void deactivate() {
50  _active = false;
51  }
52 
53  virtual bool isActive() {
54  return _active;
55  }
56  virtual bool startStandBySession() {
57  _sessionStatus = true;
58  return _sessionStatus;
59  }
60 
61  virtual void endSession() {
62  _sessionStatus = false;
63  }
64 
65  virtual bool isSessionActive() {
66  return _sessionStatus;
67  }
68 
74  virtual void idle();
75 
76  virtual void saveSettings() const {}
77  virtual void loadSettings() {}
78  virtual bool isRunning() const { return _active; }
79 
80 signals:
81  void deviceStatusChanged(const QString& deviceName, bool isRunning) const;
82 
83  // These signals should be emitted when a device is first known to be available. In some cases this will
84  // be in `init()`, in other cases, like Neuron, this isn't known until activation.
85  // SDL2 isn't a device itself, but can have 0+ subdevices. subdeviceConnected is used in this case.
86  void deviceConnected(QString pluginName) const;
87  void subdeviceConnected(QString pluginName, QString subdeviceName) const;
88 
89 protected:
90  bool _active { false };
91  bool _enabled { false };
92  bool _sessionStatus { false };
93  PluginContainer* _container { nullptr };
94  static const char* UNKNOWN_PLUGIN_ID;
95 
96 };