--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/libtelepathy/tsrc/src/telepathygabblepresencetest.cpp Tue Feb 02 01:10:06 2010 +0200
@@ -0,0 +1,262 @@
+/*
+* Copyright (c) 2008 - 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Used for Presence Test Cases
+*
+*/
+
+
+
+
+// INCLUDE FILES
+#include "telepathygabblepresencetest.h"
+#include "telepathygabbletestdata.h"
+
+//-----------------------------------------------------------------------------
+// function_name : CTestData
+// description : Constructor
+// Returns : None
+//-----------------------------------------------------------------------------
+
+CTelepathyGabblePresenceTest::CTelepathyGabblePresenceTest()
+ {
+ }
+
+//-----------------------------------------------------------------------------
+// function_name : ConstructL
+// description : Constructor
+// Returns : None
+//-----------------------------------------------------------------------------
+
+void CTelepathyGabblePresenceTest::ConstructL()
+ {
+
+ }
+
+//-----------------------------------------------------------------------------
+// function_name : NewL
+// description : Constructor
+// Returns : None
+//-----------------------------------------------------------------------------
+CTelepathyGabblePresenceTest* CTelepathyGabblePresenceTest::NewL()
+ {
+
+ CTelepathyGabblePresenceTest* self = new(ELeave) CTelepathyGabblePresenceTest;
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop();
+ return self;
+ }
+
+//-----------------------------------------------------------------------------
+// function_name : ~CTelepathyGabblePresenceTest
+// description : destructor
+// Returns : None
+//-----------------------------------------------------------------------------
+CTelepathyGabblePresenceTest::~CTelepathyGabblePresenceTest()
+{
+
+}
+
+
+//-----------------------------------------------------------------------------
+// function_name : ~CTestData
+// description : destructor
+// Returns : None
+//-----------------------------------------------------------------------------
+TelepathyPresenceState CTelepathyGabblePresenceTest::telepathy_presence_state_from_str (const gchar *str)
+{
+ char temp[25];
+ strcpy(temp,str);
+ //roster_log_handler("telepathy_telepathy_presence_state_from_str");
+ //roster_log_handler(temp);
+
+ if (strcmp (str, "available") == 0) {
+ return TELEPATHY_PRESENCE_STATE_AVAILABLE;
+ } else if ((strcmp (str, "dnd") == 0) || (strcmp (str, "busy") == 0)) {
+ return TELEPATHY_PRESENCE_STATE_BUSY;
+ } else if ((strcmp (str, "away") == 0) || (strcmp (str, "brb") == 0)) {
+ return TELEPATHY_PRESENCE_STATE_AWAY;
+ } else if (strcmp (str, "xa") == 0) {
+ return TELEPATHY_PRESENCE_STATE_EXT_AWAY;
+ } else if (strcmp (str, "hidden") == 0) {
+ return TELEPATHY_PRESENCE_STATE_HIDDEN;
+ } else if (strcmp (str, "offline") == 0) {
+ return TELEPATHY_PRESENCE_STATE_UNAVAILABLE;
+ }
+
+ return TELEPATHY_PRESENCE_STATE_AVAILABLE;
+}
+
+//-----------------------------------------------------------------------------
+// function_name : ~CTestData
+// description : destructor
+// Returns : None
+//-----------------------------------------------------------------------------
+//vinod: gossip_telepathy_contacts_send_presence
+void
+CTelepathyGabblePresenceTest::telepathy_contacts_send_presence (DBusGProxy *pres_iface,
+ TelepathyPresence *presence/*CTestData *aTestData*/)
+{
+ GHashTable *status_ids;
+ GHashTable *status_options;
+ const gchar *status_id;
+ const gchar *message;
+ TelepathyPresenceState presence_state;
+ GError *error = NULL;
+ GValue value_message = {0, };
+
+ //iTpConn = aTestData->GetTpConn();
+
+ //g_return_if_fail (contacts != NULL);
+ //g_return_if_fail (GOSSIP_IS_PRESENCE (presence));
+
+ if (!pres_iface) {
+ return;
+ }
+
+ status_ids = g_hash_table_new_full (g_str_hash,
+ g_str_equal,
+ g_free,
+ (GDestroyNotify) g_hash_table_destroy);
+ status_options = g_hash_table_new_full (g_str_hash,
+ g_str_equal,
+ NULL,
+ (GDestroyNotify) g_value_unset);
+
+ presence_state = telepathy_presence_get_state (presence);
+ status_id = telepathy_presence_state_to_str (presence_state);
+ message = telepathy_presence_get_status (presence);
+
+ if (message) {
+ g_value_init (&value_message, G_TYPE_STRING);
+ g_value_set_string (&value_message, message);
+ g_hash_table_insert (status_options, (gpointer)"message", &value_message);
+ }
+
+ g_hash_table_insert (status_ids,
+ g_strdup (status_id),
+ status_options);
+
+ //Sync way: gossip_debug (DEBUG_DOMAIN, "sending presence...");
+ if (! (DBUS_G_PROXY(pres_iface),
+ status_ids,
+ &error)) {
+ //gossip_debug ("Could not set presence: %s", error->message);
+ //roster_log_handler("Could not set presence\n");
+ g_clear_error (&error);
+ }
+ //Async way
+/*tp_conn_iface_presence_set_status_async(DBUS_G_PROXY(pres_iface),
+ status_ids,
+ ,
+ NULL );
+*/
+ g_hash_table_destroy (status_ids);
+}
+
+//-----------------------------------------------------------------------------
+// function_name : telepathy_presences_foreach
+// description : destructor
+// Returns : None
+//-----------------------------------------------------------------------------
+void
+CTelepathyGabblePresenceTest::telepathy_presences_foreach (gpointer *key,
+ gpointer *value,
+ TelepathyPresence **presence)
+{
+ TelepathyPresenceState state;
+ const gchar *message;
+ char temp[100];
+
+ *presence = telepathy_presence_new();
+
+ //roster_log_handler("telepathy_presences_foreach");
+// roster_log_handler(key);
+
+ state = telepathy_presence_state_from_str((const gchar *)key);
+
+ telepathy_presence_set_state(*presence, state);
+
+ message = g_value_get_string((GValue *)
+ g_hash_table_lookup((GHashTable *)
+ value, "message"));
+ strcpy(temp,message);
+ //roster_log_handler(temp);
+
+}
+
+//-----------------------------------------------------------------------------
+// function_name : telepathy_presence_handle_foreach
+// description : destructor
+// Returns : None
+//-----------------------------------------------------------------------------
+void
+CTelepathyGabblePresenceTest::telepathy_presence_handle_foreach (gpointer *key,
+ gpointer *value)
+{
+ gint handle_id;
+ GHashTable *presences_hash;
+ GValue *gvalue;
+ gboolean new_item;
+ GObject *contact;
+ GObject *presence;
+ gchar **handle_name;
+ GArray *handles;
+
+ CTestData* atestData;
+
+ handle_id = GPOINTER_TO_INT(key);
+
+ handles = g_array_new (FALSE, FALSE, sizeof (gint));
+ g_array_append_val (handles, handle_id);
+ tp_conn_inspect_handles(DBUS_G_PROXY(atestData->GetTpConn()),
+ TP_CONN_HANDLE_TYPE_CONTACT, handles,
+ &handle_name, NULL);
+
+ gvalue = g_value_array_get_nth((GValueArray *) value, 1);
+
+ presences_hash = (GHashTable *) g_value_get_boxed(gvalue);
+
+ g_hash_table_foreach(presences_hash,
+ (GHFunc) telepathy_presences_foreach, &presence);
+}
+
+//-----------------------------------------------------------------------------
+// function_name : ~CTestData
+// description : destructor
+// Returns : None
+//-----------------------------------------------------------------------------
+void CTelepathyGabblePresenceTest::telepathy_presence_handler(DBusGProxy *proxy,
+ GHashTable *handle_hash)
+{
+ //GObject *presence;
+ TelepathyPresence *presence;
+ TelepathyPresenceState state;
+ GSList *data = NULL;
+ //vinod: setting the new presence status
+ presence = telepathy_presence_new();
+ //here am hard coding the value, this can be taken from ximpfw
+ state = telepathy_presence_state_from_str("dnd");
+ telepathy_presence_set_state(presence, state);
+ //vinod
+ //roster_log_handler("telepathy_presence_handler callback\n");
+ g_hash_table_foreach(handle_hash, (GHFunc) telepathy_presence_handle_foreach, data);
+
+
+ //vinod: call telepathy_set_presence method here
+ telepathy_contacts_send_presence(proxy, presence);
+
+}
+
+// End of File