summaryrefslogtreecommitdiff
path: root/rockworkd/platformintegration/sailfish/sailfishplatform.h
blob: e18b986a00ab544a8911d919f27dc5764b73147a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#ifndef SAILFISHPLATFORM_H
#define SAILFISHPLATFORM_H

#include "libpebble/platforminterface.h"
#include "libpebble/enums.h"

#include <QDBusInterface>
#include <TelepathyQt/AbstractClientObserver>

class QDBusPendingCallWatcher;
class TelepathyMonitor;
class OrganizerAdapter;
class SyncMonitorClient;

class SailfishPlatform : public PlatformInterface, public QDBusContext
{
    Q_OBJECT
    Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Notifications")
    Q_PROPERTY(QDBusInterface* interface READ interface)


public:
    SailfishPlatform(QObject *parent = 0);
    QDBusInterface* interface() const;

    void sendMusicControlCommand(MusicControlButton controlButton) override;
    MusicMetaData musicMetaData() const override;
    void hangupCall(uint cookie) override;
    QHash<QString, QString> getCategoryParams(QString category);

    QList<CalendarEvent> organizerItems() const override;

    void actionTriggered(const QString &actToken) override;

public slots:
    uint Notify(const QString &app_name, uint replaces_id, const QString &app_icon, const QString &summary, const QString &body, const QStringList &actions, const QVariantHash &hints, int expire_timeout);


private slots:
    void fetchMusicMetadata();
    void fetchMusicMetadataFinished(QDBusPendingCallWatcher *watcher);
    void mediaPropertiesChanged(const QString &interface, const QVariantMap &changedProps, const QStringList &invalidatedProps);

private:
    QDBusInterface *m_iface;

    QString m_mprisService;
    MusicMetaData m_musicMetaData;
    QDBusConnection *_pulseBus;
    uint _maxVolume;

    TelepathyMonitor *m_telepathyMonitor;
    OrganizerAdapter *m_organizerAdapter;
    SyncMonitorClient *m_syncMonitorClient;
    QTimer m_syncTimer;
};

#endif // SAILFISHPLATFORM_H