21 #include "qekigadialer.h"
23 #include "../dbusconnectionpool.h"
25 #include <KLocalizedString>
27 #include <QDBusConnectionInterface>
29 #include <QtCore/QProcess>
30 #include <QtDBus/QDBusConnection>
31 #include <QtDBus/QDBusConnectionInterface>
32 #include <QtDBus/QDBusInterface>
33 #include <QtDBus/QDBusReply>
38 static bool isEkigaServiceRegistered()
40 const QLatin1String service(
"org.ekiga.Ekiga" );
42 QDBusConnectionInterface *
interface = QDBusConnection::systemBus().interface();
43 if ( interface->isServiceRegistered( service ) ) {
47 interface = Akonadi::DBusConnectionPool::threadConnection().interface();
48 if ( interface->isServiceRegistered( service ) ) {
54 static QDBusInterface* searchEkigaDBusInterface()
56 const QLatin1String service(
"org.ekiga.Ekiga" );
57 const QLatin1String path(
"/org/ekiga/Ekiga" );
59 QDBusInterface *
interface = new QDBusInterface( service, path, QString(), QDBusConnection::systemBus() );
60 if ( !interface->isValid() ) {
62 interface = new QDBusInterface( service, path, QString(), Akonadi::DBusConnectionPool::threadConnection() );
68 QEkigaDialer::QEkigaDialer( const QString &applicationName )
69 : QDialer( applicationName ), mInterface( 0 )
73 QEkigaDialer::~QEkigaDialer()
78 bool QEkigaDialer::initializeEkiga()
81 if ( !isEkigaServiceRegistered() ) {
84 if ( !QProcess::startDetached( QLatin1String(
"ekiga" ), QStringList() ) ) {
85 mErrorMessage = i18n(
"Unable to start ekiga process, check that ekiga executable is in your PATH variable." );
90 for (
int i = 0; i < runs; ++i ) {
91 if ( !isEkigaServiceRegistered() ) {
100 mInterface = searchEkigaDBusInterface();
102 if ( !mInterface->isValid() ) {
106 mErrorMessage = i18n(
"Ekiga Public API (D-Bus) seems to be disabled." );
113 bool QEkigaDialer::dialNumber(
const QString &number)
115 if ( !initializeEkiga() ) {
118 QDBusReply<void> reply = mInterface->call( QLatin1String(
"Call" ), number );
122 bool QEkigaDialer::sendSms(
const QString &,
const QString &)
124 mErrorMessage = i18n(
"Sending an SMS is currently not supported on Ekiga" );