libtelepathy/tsrc/src/telepathygabblepresencetest.cpp
changeset 0 d0f3a028347a
--- /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