smf/smfservermodule/smfclient/smfactivityfetcher_p.cpp
changeset 18 013a02bf2bb0
child 25 a180113055cb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/smfservermodule/smfclient/smfactivityfetcher_p.cpp	Thu Aug 05 16:48:48 2010 +0530
@@ -0,0 +1,193 @@
+/**
+ * Copyright (c) 2010 Sasken Communication Technologies Ltd.
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of the "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:
+ * Chandradeep Gandhi, Sasken Communication Technologies Ltd - Initial contribution
+ *
+ * Contributors:
+ * Manasij Roy, Nalina Hariharan
+ * 
+ * Description:
+ * Private Implementation of SmfActivityFetcher
+ * 
+ */
+
+#include <QDebug>
+
+#include "smfactivityfetcher.h"
+#include "smfactivityfetcher_p.h"
+#ifdef Q_OS_SYMBIAN
+	#include "smfclientsymbian.h"
+#else
+	#include "smfclientqt.h"
+#endif
+
+
+SmfActivityFetcherPrivate::SmfActivityFetcherPrivate(SmfActivityFetcher *activityFetcher)
+		:m_activityFetcher(activityFetcher)
+	{
+#ifdef Q_OS_SYMBIAN
+	//private impl for symbian
+	m_SmfClientPrivate = CSmfClientSymbian::NewL(this);
+#else
+	//TODO:- Qt private impl
+#endif
+	}
+
+SmfActivityFetcherPrivate::~SmfActivityFetcherPrivate()
+	{
+	if(m_SmfClientPrivate)
+		{
+		delete m_SmfClientPrivate;
+		m_SmfClientPrivate = NULL;
+		}
+	}
+
+void SmfActivityFetcherPrivate::selfActivities(int pageNum, int perPage)
+	{
+	SmfProvider* m_baseProvider = m_activityFetcher->getProvider();
+	//serialize start
+	m_serializedDataToServer.clear();
+	QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
+	//SmfProvider
+	write<<*m_baseProvider;
+	m_argFlag = 1;
+	write<<m_argFlag;
+	write<<pageNum;
+	write<<m_argFlag;
+	write<<perPage;
+	//serialize end
+	
+	QString intfName(activityFetcherInterface);
+	int max = MaxSmfActivityEntrySize*perPage;
+	
+	//call private impl's send method
+	m_SmfClientPrivate->sendRequest(m_serializedDataToServer, intfName,
+			SmfActivitySelfActivity, max);
+	}
+
+void SmfActivityFetcherPrivate::friendsActivities(const SmfContact & aFriend, int pageNum, int perPage)
+	{
+	SmfProvider* m_baseProvider = m_activityFetcher->getProvider();
+	//serialize start
+	m_serializedDataToServer.clear();
+	QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
+	//SmfProvider
+	write<<*m_baseProvider;
+	m_argFlag = 1;
+	write<<m_argFlag;
+	write<<aFriend;
+	write<<m_argFlag;
+	write<<pageNum;
+	write<<m_argFlag;
+	write<<perPage;
+	
+	QString intfName(activityFetcherInterface);
+	int max = MaxSmfActivityEntrySize*perPage;
+	
+	//call private impl's send method
+	m_SmfClientPrivate->sendRequest(m_serializedDataToServer, intfName,
+			SmfActivityFriendsActivities, max);
+	}
+
+void SmfActivityFetcherPrivate::filtered(QList<SmfActivityObjectType> filters, int pageNum, int perPage)
+	{
+	SmfProvider* m_baseProvider = m_activityFetcher->getProvider();
+	
+	//serialize start
+	m_serializedDataToServer.clear();
+	QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
+	//SmfProvider
+	write<<*m_baseProvider;
+	m_argFlag = 1;
+	write<<m_argFlag;
+	write<<filters;
+	write<<m_argFlag;
+	write<<pageNum;
+	write<<m_argFlag;
+	write<<perPage;
+	
+	QString intfName(activityFetcherInterface);
+	int max = MaxSmfActivityEntrySize*perPage;
+	
+	//call private impl's send method
+	m_SmfClientPrivate->sendRequest(m_serializedDataToServer, intfName,
+			SmfActivityFiltered, max);
+	}
+
+void SmfActivityFetcherPrivate::customRequest ( const int& operationId, QByteArray* customData )
+	{
+	SmfProvider* m_baseProvider = m_activityFetcher->getProvider();
+	
+	//serialize start
+	m_serializedDataToServer.clear();
+	QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
+	write<<*m_baseProvider;
+	m_argFlag = 1;
+	write<<operationId;
+	if(customData)
+		{
+		write<<m_argFlag;
+		write<<*customData;
+		}
+	else
+		{
+		m_argFlag = 0;
+		write<<m_argFlag;
+		}
+	
+	QString intfName(activityFetcherInterface);
+//ToDo:- How much size to allocate for custom data? keeping MaxSmfActivityEntrySize for now
+	int maxAllocation = MaxSmfActivityEntrySize;
+	
+	//call private impl's send method
+	m_SmfClientPrivate->sendRequest(m_serializedDataToServer, intfName,
+			SmfActivityCustomRequest, maxAllocation);
+	}
+
+void SmfActivityFetcherPrivate::resultsAvailable(QByteArray result,SmfRequestTypeID opcode, SmfError error)
+	{
+	qDebug()<<"SmfActivityFetcherPrivate::resultsAvailable";
+	qDebug()<<"opcode = "<<opcode;
+
+	QDataStream reader(&result,QIODevice::ReadOnly);
+	
+	//Now de-serialize it based on opcode
+	switch(opcode)
+		{
+		case SmfActivitySelfActivity:
+		case SmfActivityFriendsActivities:
+		case SmfActivityFiltered:
+			{
+			SmfActivityEntryList* m_entries = new SmfActivityEntryList;
+			reader>>*m_entries;
+			qDebug()<<"m_entries.count = "<<m_entries->count();
+			
+			//ToDo:- not incorporating paging now
+			SmfResultPage page;
+
+			emit m_activityFetcher->resultsAvailable(m_entries,error,page);
+			}
+			break;
+			
+   		case SmfActivityCustomRequest:
+   			{
+   			int operationId;
+   			QByteArray *data = new QByteArray;
+   			reader>>operationId;
+   			reader>>*data;
+   			
+   			qDebug()<<"operationId = "<<operationId;
+   			qDebug()<<"data size = "<<data->size();
+   			emit m_activityFetcher->customDataAvailable(operationId, data);
+   			}
+   			break;
+		default:
+			Q_ASSERT_X(1,"Activity Private Unknown opcode","default case");
+		}
+	}