[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