I have made the following changes intended for :
  nemo:devel:mw / commhistory-daemon

Please review and accept or decline.
BOSS has already run some checks on this request.
See the "Messages from BOSS" section below.

https://build.merproject.org//request/show/73

Thank You,
John Brooks

[This message was auto-generated]

---

Request # 73:

Messages from BOSS:

State: review at 2013-03-20T21:27:45 by cibot

Reviews:
       accepted by cibot : Prechecks succeeded.
       new for nemo:devel:mw : Please replace this text with a review and 
approve/reject the review (not the SR). BOSS will take care of the rest

Changes:
  submit: home:jbrooks:branches:nemo:devel:mw / commhistory-daemon -> 
nemo:devel:mw / commhistory-daemon
  
changes files:
--------------
--- commhistory-daemon.changes
+++ commhistory-daemon.changes
@@ -0,0 +1,3 @@
+* Wed Mar 20 2013 John Brooks <[email protected]> - 0.4.6
+- Provide service to set account presence information (from Matt Vogt)
+

old:
----
  commhistory-daemon-0.4.5.tar.bz2

new:
----
  commhistory-daemon-0.4.6.tar.bz2

spec files:
-----------
--- commhistory-daemon.spec
+++ commhistory-daemon.spec
@@ -1,6 +1,6 @@
 Name:       commhistory-daemon
 Summary:    Communications event history database daemon
-Version:    0.4.5
+Version:    0.4.6
 Release:    2
 Group:      Communications/Telephony and IM
 License:    LGPL
@@ -49,6 +49,7 @@
 %{_bindir}/commhistoryd
 %{_datadir}/dbus-1/services/com.nokia.CommHistory.service
 
%{_datadir}/dbus-1/services/org.freedesktop.Telepathy.Client.CommHistory.service
+%{_datadir}/dbus-1/services/org.nemomobile.AccountPresence.service
 %{_datadir}/translations/commhistoryd.qm
 %{_datadir}/doc/commhistory-daemon-l10n-engineering-english/commhistoryd.ts
 %{_datadir}/lipstick/notificationcategories/*

other changes:
--------------

++++++ commhistory-daemon-0.4.5.tar.bz2 -> commhistory-daemon-0.4.6.tar.bz2
--- .gitignore
+++ .gitignore
@@ -0,0 +1,27 @@
+*.o
+*~
+moc_*
+commhistoryd
+tests/commhistorytest
+Makefile
+*.pro.user*
+.cproject
+.project
+*.pyc
+build-stamp
+builddir/
+configure-stamp
+debian/commhistory-daemon-dbg/
+debian/commhistory-daemon-l10n-engineering-english/
+debian/commhistory-daemon-tests.substvars
+debian/commhistory-daemon-tests/
+debian/commhistory-daemon.substvars
+debian/commhistory-daemon/
+debian/files
+debian/tmp/
+src/TpExtensions/.gen/
+tests/bin/
+translations/telephony/telephony.qm
+translations/messaging/messaging.qm
+translations/commhistoryd.qm
+translations/commhistoryd.ts
--- data/data.pro
+++ data/data.pro
@@ -32,6 +32,7 @@
 
 service.path = $${INSTALL_PREFIX}/share/dbus-1/services
 service.files = org.freedesktop.Telepathy.Client.CommHistory.service \
+    org.nemomobile.AccountPresence.service \
     com.nokia.CommHistory.service
 
 INSTALLS += client service
--- data/org.nemomobile.AccountPresence.service
+++ data/org.nemomobile.AccountPresence.service
@@ -0,0 +1,3 @@
+[D-BUS Service]
+Name=org.nemomobile.AccountPresence
+Exec=/usr/bin/commhistoryd
--- src/AccountPresenceIf.xml
+++ src/AccountPresenceIf.xml
@@ -0,0 +1,21 @@
+<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" 
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd";>
+<node>
+  <interface name="org.nemomobile.AccountPresenceIf">
+    <method name="setGlobalPresence">
+      <arg name="state" type="i" direction="in"/>
+    </method>
+    <method name="setGlobalPresenceWithMessage">
+      <arg name="state" type="i" direction="in"/>
+      <arg name="message" type="s" direction="in"/>
+    </method>
+    <method name="setAccountPresence">
+      <arg name="accountUri" type="s" direction="in"/>
+      <arg name="state" type="i" direction="in"/>
+    </method>
+    <method name="setAccountPresenceWithMessage">
+      <arg name="accountUri" type="s" direction="in"/>
+      <arg name="state" type="i" direction="in"/>
+      <arg name="message" type="s" direction="in"/>
+    </method>
+  </interface>
+</node>
--- src/accountpresenceifadaptor.cpp
+++ src/accountpresenceifadaptor.cpp
@@ -0,0 +1,59 @@
+/*
+ * This file was generated by qdbusxml2cpp version 0.7
+ * Command line was: qdbusxml2cpp -c AccountPresenceIfAdaptor -a 
accountpresenceifadaptor AccountPresenceIf.xml
+ *
+ * qdbusxml2cpp is Copyright (C) 2012 Nokia Corporation and/or its 
subsidiary(-ies).
+ *
+ * This is an auto-generated file.
+ * Do not edit! All changes made to it will be lost.
+ */
+
+#include "accountpresenceifadaptor.h"
+#include <QtCore/QMetaObject>
+#include <QtCore/QByteArray>
+#include <QtCore/QList>
+#include <QtCore/QMap>
+#include <QtCore/QString>
+#include <QtCore/QStringList>
+#include <QtCore/QVariant>
+
+/*
+ * Implementation of adaptor class AccountPresenceIfAdaptor
+ */
+
+AccountPresenceIfAdaptor::AccountPresenceIfAdaptor(QObject *parent)
+    : QDBusAbstractAdaptor(parent)
+{
+    // constructor
+    setAutoRelaySignals(true);
+}
+
+AccountPresenceIfAdaptor::~AccountPresenceIfAdaptor()
+{
+    // destructor
+}
+
+void AccountPresenceIfAdaptor::setAccountPresence(const QString &accountUri, 
int state)
+{
+    // handle method call org.nemomobile.AccountPresenceIf.setAccountPresence
+    QMetaObject::invokeMethod(parent(), "setAccountPresence", Q_ARG(QString, 
accountUri), Q_ARG(int, state));
+}
+
+void AccountPresenceIfAdaptor::setAccountPresenceWithMessage(const QString 
&accountUri, int state, const QString &message)
+{
+    // handle method call 
org.nemomobile.AccountPresenceIf.setAccountPresenceWithMessage
+    QMetaObject::invokeMethod(parent(), "setAccountPresenceWithMessage", 
Q_ARG(QString, accountUri), Q_ARG(int, state), Q_ARG(QString, message));
+}
+
+void AccountPresenceIfAdaptor::setGlobalPresence(int state)
+{
+    // handle method call org.nemomobile.AccountPresenceIf.setGlobalPresence
+    QMetaObject::invokeMethod(parent(), "setGlobalPresence", Q_ARG(int, 
state));
+}
+
+void AccountPresenceIfAdaptor::setGlobalPresenceWithMessage(int state, const 
QString &message)
+{
+    // handle method call 
org.nemomobile.AccountPresenceIf.setGlobalPresenceWithMessage
+    QMetaObject::invokeMethod(parent(), "setGlobalPresenceWithMessage", 
Q_ARG(int, state), Q_ARG(QString, message));
+}
+
--- src/accountpresenceifadaptor.h
+++ src/accountpresenceifadaptor.h
@@ -0,0 +1,64 @@
+/*
+ * This file was generated by qdbusxml2cpp version 0.7
+ * Command line was: qdbusxml2cpp -c AccountPresenceIfAdaptor -a 
accountpresenceifadaptor AccountPresenceIf.xml
+ *
+ * qdbusxml2cpp is Copyright (C) 2012 Nokia Corporation and/or its 
subsidiary(-ies).
+ *
+ * This is an auto-generated file.
+ * This file may have been hand-edited. Look for HAND-EDIT comments
+ * before re-generating it.
+ */
+
+#ifndef ACCOUNTPRESENCEIFADAPTOR_H_1362717597
+#define ACCOUNTPRESENCEIFADAPTOR_H_1362717597
+
+#include <QtCore/QObject>
+#include <QtDBus/QtDBus>
+class QByteArray;
+template<class T> class QList;
+template<class Key, class Value> class QMap;
+class QString;
+class QStringList;
+class QVariant;
+
+/*
+ * Adaptor class for interface org.nemomobile.AccountPresenceIf
+ */
+class AccountPresenceIfAdaptor: public QDBusAbstractAdaptor
+{
+    Q_OBJECT
+    Q_CLASSINFO("D-Bus Interface", "org.nemomobile.AccountPresenceIf")
+    Q_CLASSINFO("D-Bus Introspection", ""
+"  <interface name=\"org.nemomobile.AccountPresenceIf\">\n"
+"    <method name=\"setGlobalPresence\">\n"
+"      <arg direction=\"in\" type=\"i\" name=\"state\"/>\n"
+"    </method>\n"
+"    <method name=\"setGlobalPresenceWithMessage\">\n"
+"      <arg direction=\"in\" type=\"i\" name=\"state\"/>\n"
+"      <arg direction=\"in\" type=\"s\" name=\"message\"/>\n"
+"    </method>\n"
+"    <method name=\"setAccountPresence\">\n"
+"      <arg direction=\"in\" type=\"s\" name=\"accountUri\"/>\n"
+"      <arg direction=\"in\" type=\"i\" name=\"state\"/>\n"
+"    </method>\n"
+"    <method name=\"setAccountPresenceWithMessage\">\n"
+"      <arg direction=\"in\" type=\"s\" name=\"accountUri\"/>\n"
+"      <arg direction=\"in\" type=\"i\" name=\"state\"/>\n"
+"      <arg direction=\"in\" type=\"s\" name=\"message\"/>\n"
+"    </method>\n"
+"  </interface>\n"
+        "")
+public:
+    AccountPresenceIfAdaptor(QObject *parent);
+    virtual ~AccountPresenceIfAdaptor();
+
+public: // PROPERTIES
+public Q_SLOTS: // METHODS
+    void setAccountPresence(const QString &accountUri, int state);
+    void setAccountPresenceWithMessage(const QString &accountUri, int state, 
const QString &message);
+    void setGlobalPresence(int state);
+    void setGlobalPresenceWithMessage(int state, const QString &message);
+Q_SIGNALS: // SIGNALS
+};
+
+#endif
--- src/accountpresenceservice.cpp
+++ src/accountpresenceservice.cpp
@@ -0,0 +1,250 @@
+/*
+ * Copyright (C) 2013 Jolla Mobile <[email protected]>
+ *
+ * You may use this file under the terms of the BSD license as follows:
+ *
+ * "Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *   * Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ *   * Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in
+ *     the documentation and/or other materials provided with the
+ *     distribution.
+ *   * Neither the name of Nemo Mobile nor the names of its contributors
+ *     may be used to endorse or promote products derived from this
+ *     software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+ */
+
+#include "accountpresenceservice.h"
+#include "constants.h"
+
+#include <TelepathyQt/Account>
+#include <TelepathyQt/AccountSet>
+#include <TelepathyQt/PendingOperation>
+#include <TelepathyQt/PendingReady>
+
+#include <QtDBus>
+
+AccountPresenceService::AccountPresenceService(Tp::AccountManagerPtr manager, 
QObject* parent)
+    : QObject(parent),
+      m_IsRegistered(false),
+      m_accountManager(manager),
+      m_globalUpdatePresent(false)
+{
+    if (!m_accountManager) {
+        qCritical() << "ERROR: Cannot provide service without Account 
Manager!";
+        return;
+    }
+
+    if (!QDBusConnection::sessionBus().isConnected()) {
+        qCritical() << "ERROR: No DBus session bus found!";
+        return;
+    }
+
+    if 
(!QDBusConnection::sessionBus().registerObject(ACCOUNT_PRESENCE_OBJECT_PATH, 
this)) {
+        qWarning() << "Object registration failed!";
+    } else {
+        
if(!QDBusConnection::sessionBus().registerService(ACCOUNT_PRESENCE_SERVICE_NAME))
 {
+            qWarning() << "Unable to register account presence service!"
+                       << QDBusConnection::sessionBus().lastError();
+        } else {
+            m_IsRegistered = true;
+        }
+    }
+
+    if (!m_accountManager->isReady()) {
+        // Wait for the account manager to become ready
+        qDebug() << "Waiting for account manager to become ready";
+        Tp::PendingReady *pr = 
m_accountManager->becomeReady(Tp::AccountManager::FeatureCore);
+        Q_ASSERT(pr);
+        connect(pr, SIGNAL(finished(Tp::PendingOperation *)),
+                this, SLOT(accountManagerReady(Tp::PendingOperation *)));
+    }
+}
+
+AccountPresenceService::~AccountPresenceService()
+{
+    
QDBusConnection::sessionBus().unregisterObject(ACCOUNT_PRESENCE_OBJECT_PATH);
+    
QDBusConnection::sessionBus().unregisterService(ACCOUNT_PRESENCE_SERVICE_NAME);
+}
+
+namespace {
+
+Tp::Presence presenceValue(int state, const QString &message)
+{
+    switch (state) {
+        // Values from QtMobility QContactPresence, as exported via 
SeasidePerson
+        case 1: return Tp::Presence::available(message);
+        case 2: return Tp::Presence::hidden(message);
+        case 3: return Tp::Presence::busy(message);
+        case 4: return Tp::Presence::away(message);
+        case 5: return Tp::Presence::xa(message);
+        case 6: return Tp::Presence::offline(message);
+        default: break;
+    }
+
+    return Tp::Presence();
+}
+
+}
+
+void AccountPresenceService::setGlobalPresence(int state)
+{
+    setGlobalPresenceWithMessage(state, QString());
+}
+
+void AccountPresenceService::setGlobalPresenceWithMessage(int state, const 
QString &message)
+{
+    if (m_accountManager->isReady()) {
+        globalPresenceUpdate(state, message);
+    } else {
+        // Defer this update - any previous deferred updates are superseded
+        m_globalUpdate = qMakePair(state, message);
+        m_globalUpdatePresent = true;
+        m_accountUpdate.clear();
+    }
+}
+
+void AccountPresenceService::setAccountPresence(const QString &accountUri, int 
state)
+{
+    setAccountPresenceWithMessage(accountUri, state, QString());
+}
+
+void AccountPresenceService::setAccountPresenceWithMessage(const QString 
&accountUri, int state, const QString &message)
+{
+    if (m_accountManager->isReady()) {
+        accountPresenceUpdate(accountUri, state, message);
+    } else {
+        // Defer this update - any previous deferred updates for this account 
are superseded
+        m_accountUpdate.insert(accountUri, qMakePair(state, message));
+    }
+}
+
+void AccountPresenceService::accountManagerReady(Tp::PendingOperation *)
+{
+    if (m_accountManager->isReady()) {
+        qDebug() << "Account manager is now ready";
+
+        // Process any updates that were previously deferred
+        if (m_globalUpdatePresent) {
+            m_globalUpdatePresent = false;
+            globalPresenceUpdate(m_globalUpdate.first, m_globalUpdate.second);
+        }
+
+        QMap<QString, UpdateDetails>::const_iterator it = 
m_accountUpdate.constBegin(), end = m_accountUpdate.constEnd();
+        for ( ; it != end; ++it) {
+            const UpdateDetails &details(it.value());
+            accountPresenceUpdate(it.key(), details.first, details.second);
+        }
+        m_accountUpdate.clear();
+    } else {
+        qCritical() << "ERROR: Cannot provide service without Account Manager 
readiness!";
+    }
+}
+
+bool AccountPresenceService::isRegistered()
+{
+    return m_IsRegistered;
+}
+
+void AccountPresenceService::pendingOperationCompleted(Tp::PendingOperation 
*po)
+{
+    QMap<Tp::PendingOperation*, QString>::iterator it = m_operations.find(po);
+    if (it != m_operations.end()) {
+        operationCompleted(po, it.value());
+        m_operations.erase(it);
+    }
+}
+
+void AccountPresenceService::globalPresenceUpdate(int state, const QString 
&message)
+{
+    Tp::Presence presence = presenceValue(state, message);
+    if (presence.isValid()) {
+        // Set all enabled accounts to have the same presence information
+        foreach (Tp::AccountPtr account, 
m_accountManager->enabledAccounts()->accounts()) {
+            if (!presenceUpdate(account, presence)) {
+                qWarning() << "Unable to set global presence for account:" << 
account->displayName();
+            }
+        }
+    } else {
+        qWarning() << "Unable to set global presence to invalid state:" << 
state;
+    }
+}
+
+void AccountPresenceService::accountPresenceUpdate(const QString &accountUri, 
int state, const QString &message)
+{
+    Tp::AccountPtr account = m_accountManager->accountForPath(accountUri);
+    if (account && account->isValidAccount()) {
+        Tp::Presence presence = presenceValue(state, message);
+        if (presence.isValid()) {
+            if (!presenceUpdate(account, presence)) {
+                qWarning() << "Unable to set presence for account:" << 
account->displayName();
+            }
+        } else {
+            qWarning() << "Unable to set account presence to invalid state:" 
<< state << "for account:" << account->displayName();
+        }
+    } else {
+        qWarning() << "Unable to identify account to set presence:" << 
accountUri;
+    }
+}
+
+bool AccountPresenceService::presenceUpdate(Tp::AccountPtr account, const 
Tp::Presence &presence)
+{
+    if (account->isOnline()) {
+        // Ignore any error from setting the automatic presence
+        presenceUpdate(account, presence, false);
+        return presenceUpdate(account, presence, true);
+    } else {
+        // Ignore any error from setting the current presence
+        presenceUpdate(account, presence, true);
+        return presenceUpdate(account, presence, false);
+    }
+}
+
+bool AccountPresenceService::presenceUpdate(Tp::AccountPtr account, const 
Tp::Presence &presence, bool current)
+{
+    Tp::PendingOperation *po = 0;
+
+    if (current) {
+        po = account->setRequestedPresence(presence);
+    } else {
+        po = account->setAutomaticPresence(presence);
+    }
+
+    if (!po)
+        return false;
+
+    QString description(QString("set presence for account: 
%1").arg(account->displayName()));
+
+    if (po->isFinished()) {
+        operationCompleted(po, description);
+    } else {
+        m_operations.insert(po, description);
+        connect(po, SIGNAL(finished(Tp::PendingOperation*)),
+                this, SLOT(pendingOperationCompleted(Tp::PendingOperation*)));
+    }
+
+    return !po->isError();
+}
+
+void AccountPresenceService::operationCompleted(Tp::PendingOperation *po, 
const QString &description)
+{
+    if (po->isError()) {
+        qWarning() << "Unable to" << description << "error:" << QString("'%1' 
[%2]").arg(po->errorMessage(), po->errorName());
+    }
+}
+
--- src/accountpresenceservice.h
+++ src/accountpresenceservice.h
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2013 Jolla Mobile <[email protected]>
+ *
+ * You may use this file under the terms of the BSD license as follows:
+ *
+ * "Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *   * Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ *   * Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in
+ *     the documentation and/or other materials provided with the
+ *     distribution.
+ *   * Neither the name of Nemo Mobile nor the names of its contributors
+ *     may be used to endorse or promote products derived from this
+ *     software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+ */
+
+#ifndef ACCOUNTPRESENCESERVICE_H
+#define ACCOUNTPRESENCESERVICE_H
+
+#include <TelepathyQt/AccountManager>
+
+#include <QObject>
+#include <QMap>
+#include <QPair>
+
+namespace Tp { class PendingOperation; }
+
+class AccountPresenceService : public QObject
+{
+    Q_OBJECT
+
+public:
+    AccountPresenceService(Tp::AccountManagerPtr manager, QObject* parent = 0);
+    ~AccountPresenceService();
+
+public Q_SLOTS:
+    void setGlobalPresence(int state);
+    void setGlobalPresenceWithMessage(int state, const QString &message);
+    void setAccountPresence(const QString &accountUri, int state);
+    void setAccountPresenceWithMessage(const QString &accountUri, int state, 
const QString &message);
+
+    void accountManagerReady(Tp::PendingOperation *po);
+    bool isRegistered();
+
+    void pendingOperationCompleted(Tp::PendingOperation *po);
+
+private:
+    void globalPresenceUpdate(int state, const QString &message);
+    void accountPresenceUpdate(const QString &accountUri, int state, const 
QString &message);
+
+    bool presenceUpdate(Tp::AccountPtr account, const Tp::Presence &presence);
+    bool presenceUpdate(Tp::AccountPtr account, const Tp::Presence &presence, 
bool current);
+
+    void operationCompleted(Tp::PendingOperation *po, const QString 
&description);
+
+    bool m_IsRegistered;
+    Tp::AccountManagerPtr m_accountManager;
+    QMap<Tp::PendingOperation*, QString> m_operations;
+
+    typedef QPair<int, QString> UpdateDetails;
+
+    UpdateDetails m_globalUpdate;
+    bool m_globalUpdatePresent;
+
+    QMap<QString, UpdateDetails> m_accountUpdate;
+};
+
+#endif // ACCOUNTPRESENCESERVICE_H
--- src/constants.h
+++ src/constants.h
@@ -39,6 +39,10 @@
 #define COMM_HISTORY_OBJECT_PATH     QLatin1String("/com/nokia/CommHistory")
 #define COMM_HISTORY_INTERFACE       QLatin1String("com.nokia.CommHistoryIf")
 
+#define ACCOUNT_PRESENCE_SERVICE_NAME    
QLatin1String("org.nemomobile.AccountPresence")
+#define ACCOUNT_PRESENCE_OBJECT_PATH     
QLatin1String("/org/nemomobile/AccountPresence")
+#define ACCOUNT_PRESENCE_INTERFACE       
QLatin1String("org.nemomobile.AccountPresenceIf")
+
 #define MESSAGING_SERVICE_NAME    QLatin1String("org.nemomobile.qmlmessages")
 #define MESSAGING_INTERFACE       QLatin1String("org.nemomobile.qmlmessages")
 #define SHOW_INBOX_METHOD         QLatin1String("showGroupsWindow")
--- src/main.cpp
+++ src/main.cpp
@@ -32,6 +32,8 @@
 #include "notificationmanager.h"
 #include "commhistoryservice.h"
 #include "commhistoryifadaptor.h"
+#include "accountpresenceservice.h"
+#include "accountpresenceifadaptor.h"
 #include "messagereviver.h"
 #include "contactauthorizationlistener.h"
 #include "connectionutils.h"
@@ -144,17 +146,25 @@
 
     qDebug() << "Translation catalogs loaded";
 
-    CommHistoryService *service = new CommHistoryService(&app);
-    if (!service->isRegistered()) {
-        qCritical() << "Service registration failed (already running or DBus 
not found), exiting";
+    CommHistoryService *chService = new CommHistoryService(&app);
+    if (!chService->isRegistered()) {
+        qCritical() << "CommHistoryService registration failed (already 
running or DBus not found), exiting";
         _exit(1);
     }
-    new CommHistoryIfAdaptor(service);
-    qDebug() << "Service created";
+    new CommHistoryIfAdaptor(chService);
+    qDebug() << "CommHistoryService created";
 
     ConnectionUtils *utils = new ConnectionUtils(&app);
 
-    new ContactAuthorizationListener(utils, service);
+    new ContactAuthorizationListener(utils, chService);
+
+    AccountPresenceService *apService = new 
AccountPresenceService(utils->accountManager(), &app);
+    if (!apService->isRegistered()) {
+        qCritical() << "AccountPresenceService registration failed (already 
running or DBus not found), exiting";
+        _exit(1);
+    }
+    new AccountPresenceIfAdaptor(apService);
+    qDebug() << "AccountPresenceService created";
 
     // ids.dat might not always be restored from backup as commhistoryd
     // runs in the background and can overwrite it; force it to be
--- src/src.pro
+++ src/src.pro
@@ -73,6 +73,8 @@
            accountoperationsobserver.h \
            accountspecificcallmodel_p.h \
            accountspecificcallmodel.h \
+           accountpresenceifadaptor.h \
+           accountpresenceservice.h \
            olddatadeleter.h \
            voicemailhandler.h
 
@@ -95,6 +97,8 @@
            mwilistener.cpp \
            accountoperationsobserver.cpp \
            accountspecificcallmodel.cpp \
+           accountpresenceifadaptor.cpp \
+           accountpresenceservice.cpp \
            olddatadeleter.cpp \
            voicemailhandler.cpp
 



Reply via email to