From cba26597f1c09764d37be0d13863ec5d5c340da0 Mon Sep 17 00:00:00 2001
From: "Javier S. Pedro" <maemo@javispedro.com>
Date: Sat, 24 Sep 2011 00:31:46 +0200
Subject: new partially working incoming call plugin

---
 ckitcallnotification/ckitcallnotification.pro | 37 +++++++++++++++++++++++++
 ckitcallnotification/ckitcallplugin.cpp       | 29 +++++++++++++++++++
 ckitcallnotification/ckitcallplugin.h         | 24 ++++++++++++++++
 ckitcallnotification/ckitcallprovider.cpp     | 40 +++++++++++++++++++++++++++
 ckitcallnotification/ckitcallprovider.h       | 34 +++++++++++++++++++++++
 5 files changed, 164 insertions(+)
 create mode 100644 ckitcallnotification/ckitcallnotification.pro
 create mode 100644 ckitcallnotification/ckitcallplugin.cpp
 create mode 100644 ckitcallnotification/ckitcallplugin.h
 create mode 100644 ckitcallnotification/ckitcallprovider.cpp
 create mode 100644 ckitcallnotification/ckitcallprovider.h

(limited to 'ckitcallnotification')

diff --git a/ckitcallnotification/ckitcallnotification.pro b/ckitcallnotification/ckitcallnotification.pro
new file mode 100644
index 0000000..17bdf8b
--- /dev/null
+++ b/ckitcallnotification/ckitcallnotification.pro
@@ -0,0 +1,37 @@
+#-------------------------------------------------
+#
+# Project created by QtCreator 2011-09-24T00:00:03
+#
+#-------------------------------------------------
+
+TARGET = ckitcallnotification
+TEMPLATE = lib
+# CONFIG   += plugin # Stupid Qt creator doesn't want to deploy plugins
+QT       += dbus
+
+SOURCES += ckitcallplugin.cpp \
+	ckitcallprovider.cpp
+
+HEADERS += ckitcallplugin.h \
+	ckitcallprovider.h
+
+CONFIG += link_pkgconfig
+PKGCONFIG += contextsubscriber-1.0
+
+unix: LIBS += -L$$OUT_PWD/../libsowatch/ -lsowatch
+
+INCLUDEPATH += $$PWD/../libsowatch
+DEPENDPATH += $$PWD/../libsowatch
+
+unix:!symbian {
+	maemo5 {
+		target.path = /opt/sowatch/notifications
+	} else {
+		target.path = /usr/lib/sowatch/notifications
+	}
+	INSTALLS += target
+}
+
+
+
+
diff --git a/ckitcallnotification/ckitcallplugin.cpp b/ckitcallnotification/ckitcallplugin.cpp
new file mode 100644
index 0000000..aea82c2
--- /dev/null
+++ b/ckitcallnotification/ckitcallplugin.cpp
@@ -0,0 +1,29 @@
+#include "ckitcallprovider.h"
+#include "ckitcallplugin.h"
+
+using namespace sowatch;
+
+CKitCallPlugin::CKitCallPlugin(QObject *parent) :
+    QObject(parent)
+{
+}
+
+CKitCallPlugin::~CKitCallPlugin()
+{
+}
+
+QStringList CKitCallPlugin::providers()
+{
+	QStringList providers;
+	providers << "ckitcall";
+	return providers;
+}
+
+NotificationProvider* CKitCallPlugin::getProvider(const QString& driver, QSettings& settings, QObject *parent)
+{
+	Q_UNUSED(driver);
+	Q_UNUSED(settings);
+	return new CKitCallProvider(parent);
+}
+
+Q_EXPORT_PLUGIN2(ckitcallnotification, CKitCallPlugin)
diff --git a/ckitcallnotification/ckitcallplugin.h b/ckitcallnotification/ckitcallplugin.h
new file mode 100644
index 0000000..a9d432d
--- /dev/null
+++ b/ckitcallnotification/ckitcallplugin.h
@@ -0,0 +1,24 @@
+#ifndef CKITCALLPLUGIN_H
+#define CKITCALLPLUGIN_H
+
+#include <sowatch.h>
+
+namespace sowatch
+{
+
+class CKitCallPlugin : public QObject, public NotificationPluginInterface
+{
+	Q_OBJECT
+	Q_INTERFACES(sowatch::NotificationPluginInterface)
+
+public:
+	CKitCallPlugin(QObject *parent = 0);
+	~CKitCallPlugin();
+
+	QStringList providers();
+	NotificationProvider* getProvider(const QString& driver, QSettings& settings, QObject *parent = 0);
+};
+
+}
+
+#endif // CKITCALLPLUGIN_H
diff --git a/ckitcallnotification/ckitcallprovider.cpp b/ckitcallnotification/ckitcallprovider.cpp
new file mode 100644
index 0000000..85f85b2
--- /dev/null
+++ b/ckitcallnotification/ckitcallprovider.cpp
@@ -0,0 +1,40 @@
+#include <QtCore/QtDebug>
+#include <contextsubscriber/contextproperty.h>
+#include "ckitcallprovider.h"
+
+using namespace sowatch;
+
+CKitCallProvider::CKitCallProvider(QObject *parent) :
+	NotificationProvider(parent),
+	_inCall(false),
+	_activeCall(new ContextProperty("/com/nokia/CallUi/ActiveCall"))
+{
+	connect(_activeCall, SIGNAL(valueChanged()), SLOT(activeCallChanged()));
+	qDebug() << _activeCall->value();
+}
+
+CKitCallProvider::~CKitCallProvider()
+{
+
+}
+
+int CKitCallProvider::getCount(Notification::Type type)
+{
+	Q_UNUSED(type);
+	return 0;
+}
+
+void CKitCallProvider::activeCallChanged()
+{
+	QVariantMap info = _activeCall->value().toMap();
+	int state = info["state"].toInt();
+	if (state == 0) {
+		// Incoming call, or update to a incoming call
+		_inCall = true;
+		emit incomingCall(info["displayName"].toString());
+	} else if (_inCall) {
+		// Call is no longer incoming
+		_inCall = false;
+		emit endIncomingCall();
+	}
+}
diff --git a/ckitcallnotification/ckitcallprovider.h b/ckitcallnotification/ckitcallprovider.h
new file mode 100644
index 0000000..49d83a3
--- /dev/null
+++ b/ckitcallnotification/ckitcallprovider.h
@@ -0,0 +1,34 @@
+#ifndef CKITCALLPROVIDER_H
+#define CKITCALLPROVIDER_H
+
+#include <sowatch.h>
+
+class ContextProperty;
+
+namespace sowatch
+{
+
+class CKitCallProvider : public NotificationProvider
+{
+    Q_OBJECT
+public:
+    explicit CKitCallProvider(QObject *parent = 0);
+	~CKitCallProvider();
+
+	int getCount(Notification::Type type);
+
+signals:
+	void incomingCall(const QString &displayName);
+	void endIncomingCall();
+
+protected:
+	bool _inCall;
+	ContextProperty *_activeCall;
+
+protected slots:
+	void activeCallChanged();
+};
+
+}
+
+#endif // CKITCALLPROVIDER_H
-- 
cgit v1.2.3