Updated the docs
[shepherd:shepherd-plugins.git] / shepherd / triggers / position / position.h
1 #ifndef SHEPHERD_POSITION_H
2 #define SHEPHERD_POSITION_H
3
4 #include <QObject>
5 #include <QGeoPositionInfo>
6 #include <QGeoPositionInfoSource>
7 #include <QGeoAreaMonitor>
8 #include "interfaces.h"
9
10 QTM_USE_NAMESPACE
11
12 /**
13  * \brief A geographical position Trigger.
14  *
15  * A plugin for triggering on the position of the device
16  * There is two ways to find out the current position, either via forcing the
17  * device to only use the cellular towers for location or to use a
18  * QGeoAreaMonitor
19  */
20 class Position : public QObject, public InfoInterface, 
21                  public TriggerInterface 
22 {
23     Q_OBJECT
24     Q_INTERFACES(InfoInterface)
25     // Q_INTERFACES(InputInterface)
26     Q_INTERFACES(TriggerInterface)
27
28     public:
29         Position();
30         ~Position();
31         QString name();
32         QString description();
33         QPixmap* pixmap();
34         bool configure();
35         bool configure(QString cfg);
36         const QVariantMap& config();
37         void setConfig(const QVariantMap&);
38         bool eval();
39         
40     signals:
41         void stateChanged(bool b);
42         void turnedTrue();
43         void turnedFalse();
44     public slots:
45         void aboutPlugin();
46
47     private:
48         void useSelfMonitor();
49         void useAreaMonitor();
50         bool lastState;
51         QPixmap * pix;
52         QVariantMap * configMap;
53         QGeoAreaMonitor * monitor;
54         QGeoPositionInfoSource * source;
55         QGeoCoordinate configPosition;
56
57     private slots:
58         void positionUpdated(const QGeoPositionInfo &);
59         void areaEntered(const QGeoPositionInfo &);
60         void areaExited(const QGeoPositionInfo &);
61         
62 };
63
64 #endif