[SCM] ktp-kded-integration-module packaging branch, master, updated. debian/15.12.1-2-382-gbd961c2

Maximiliano Curia maxy at moszumanska.debian.org
Sat May 28 00:13:11 UTC 2016


Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-kded-module.git;a=commitdiff;h=6960593

The following commit has been merged in the master branch:
commit 696059361c55f5281587fd23771d6bc976eb7216
Author: Dario Freddi <dario.freddi at collabora.com>
Date:   Fri Nov 25 01:48:59 2011 +0100

    Fix contact accept request
---
 contact-request-handler.cpp | 46 ++++++++++++++++++++++++++++++++++++---------
 contact-request-handler.h   |  1 +
 2 files changed, 38 insertions(+), 9 deletions(-)

diff --git a/contact-request-handler.cpp b/contact-request-handler.cpp
index 8a197f7..577e9f6 100644
--- a/contact-request-handler.cpp
+++ b/contact-request-handler.cpp
@@ -33,6 +33,8 @@
 #include <KMenu>
 #include <KAction>
 
+Q_DECLARE_METATYPE(Tp::ContactPtr)
+
 bool kde_tp_filter_contacts_by_publication_status(const Tp::ContactPtr &contact)
 {
     return contact->publishState() == Tp::Contact::PresenceStateAsk;
@@ -191,16 +193,42 @@ void ContactRequestHandler::onContactRequestApproved()
     if (!contactId.isEmpty()) {
         Tp::ContactPtr contact = m_pendingContacts.value(contactId);
         if (!contact.isNull()) {
-            //Tp::PendingOperation *op = contact->manager()->authorizePresencePublication(QList< Tp::ContactPtr >() << contact);
-            //TODO: connect and let user know the result, find and remove the menu from statusnotifier
-            //      don't forget to update the tooltip with -1
-            //delete m_notifierMenu->findChild<KMenu*>(contactId);
-            //if (contact->manager()->canRequestPresenceSubscription() && contact->subscriptionState() == Tp::Contact::PresenceStateNo) {
-            //    contact->manager()->requestPresenceSubscription(QList< Tp::ContactPtr >() << contact);
-            //}
-            m_pendingContacts.remove(contactId);
-            updateMenus();
+            Tp::PendingOperation *op = contact->manager()->authorizePresencePublication(QList< Tp::ContactPtr >() << contact);
+            op->setProperty("__contact", QVariant::fromValue(contact));
+
+            connect (op, SIGNAL(finished(Tp::PendingOperation*)),
+                     this, SLOT(onAuthorizePresencePublicationFinished(Tp::PendingOperation*)));
+        }
+    }
+}
+
+void ContactRequestHandler::onAuthorizePresencePublicationFinished(Tp::PendingOperation *op)
+{
+    Tp::ContactPtr contact = op->property("__contact").value< Tp::ContactPtr >();
+
+    if (op->isError()) {
+        // ARGH
+        m_notifierItem.data()->showMessage(i18n("Error accepting contact request"),
+                                           i18n("There was an error while accepting the request: %1",
+                                                op->errorMessage()), QLatin1String("dialog-error"));
+
+        // Re-enable the action
+        m_menuItems.value(contact->id())->setEnabled(true);
+    } else {
+        // Yeah
+        m_notifierItem.data()->showMessage(i18n("Contact request accepted"),
+                                           i18n("%1 will now be able to see your presence",
+                                                contact->alias()), QLatin1String("dialog-ok-apply"));
+
+        // If needed, reiterate the request on the other end
+        if (contact->manager()->canRequestPresenceSubscription() &&
+            contact->subscriptionState() == Tp::Contact::PresenceStateNo) {
+            contact->manager()->requestPresenceSubscription(QList< Tp::ContactPtr >() << contact);
         }
+
+        // Update the menu
+        m_pendingContacts.remove(contact->id());
+        updateMenus();
     }
 }
 
diff --git a/contact-request-handler.h b/contact-request-handler.h
index 08eba19..27f9a95 100644
--- a/contact-request-handler.h
+++ b/contact-request-handler.h
@@ -51,6 +51,7 @@ public Q_SLOTS:
 
     void onContactRequestApproved();
     void onContactRequestDenied();
+    void onAuthorizePresencePublicationFinished(Tp::PendingOperation*);
 
 private:
     KStatusNotifierItem *notifierItem();

-- 
ktp-kded-integration-module packaging



More information about the pkg-kde-commits mailing list