[telepathy-qt4/master] Channel: Added method to map a GroupMembersChangedDetails change-reason to a Telepathy error.
Andre Moreira Magalhaes (andrunko)
andre.magalhaes at collabora.co.uk
Fri Jul 24 10:55:30 PDT 2009
---
TelepathyQt4/channel.cpp | 38 ++++++++++++++++++++++++++++++++++++++
1 files changed, 38 insertions(+), 0 deletions(-)
diff --git a/TelepathyQt4/channel.cpp b/TelepathyQt4/channel.cpp
index 93cbc88..dd45042 100644
--- a/TelepathyQt4/channel.cpp
+++ b/TelepathyQt4/channel.cpp
@@ -95,6 +95,9 @@ struct Channel::Private
bool fakeGroupInterfaceIfNeeded();
void setReady();
+ QString groupMemberChangeDetailsTelepathyError(
+ const GroupMemberChangeDetails &details);
+
struct GroupMembersChangedInfo;
// Public object
@@ -934,6 +937,41 @@ void Channel::Private::setReady()
readinessHelper->setIntrospectCompleted(FeatureCore, true);
}
+QString Channel::Private::groupMemberChangeDetailsTelepathyError(
+ const GroupMemberChangeDetails &details)
+{
+ QString error;
+ uint reason = details.reason();
+ switch (reason) {
+ case ChannelGroupChangeReasonOffline:
+ error = TELEPATHY_ERROR_OFFLINE;
+ break;
+ case ChannelGroupChangeReasonKicked:
+ error = TELEPATHY_ERROR_CHANNEL_KICKED;
+ break;
+ case ChannelGroupChangeReasonBanned:
+ error = TELEPATHY_ERROR_CHANNEL_BANNED;
+ break;
+ case ChannelGroupChangeReasonBusy:
+ error = TELEPATHY_ERROR_BUSY;
+ break;
+ case ChannelGroupChangeReasonNoAnswer:
+ error = TELEPATHY_ERROR_NO_ANSWER;
+ break;
+ case ChannelGroupChangeReasonPermissionDenied:
+ error = TELEPATHY_ERROR_PERMISSION_DENIED;
+ break;
+ default:
+ // let's use the actor handle and selfHandle here instead of the
+ // contacts, as the contacts may not be ready.
+ error = ((qdbus_cast<uint>(details.allDetails().value("actor")) == groupSelfHandle) ?
+ TELEPATHY_ERROR_CANCELLED : TELEPATHY_ERROR_TERMINATED);
+ break;
+ }
+
+ return error;
+}
+
/**
* \class Channel
* \ingroup clientchannel
--
1.5.6.5
More information about the telepathy-commits
mailing list