smf/smfservermodule/smfclient/client/smfactivityfetcher_p.cpp
author cgandhi <chandradeep.gandhi@sasken.com>
Wed, 23 Jun 2010 20:47:13 +0530
changeset 15 9b00ca3cc206
parent 14 a469c0e6e7fb
permissions -rw-r--r--
Adding missing settings.ui file

/**
 * 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
 *
 * Description:
 * 
 */
#include <QDebug>
#include "smfactivityfetcher_p.h"
#ifdef Q_OS_SYMBIAN
#include "smfclientsymbian.h"
#else
#include "SmfClientQt.h"
#endif
SmfActivityFetcherPrivate::SmfActivityFetcherPrivate(SmfActivityFetcher *activityFetcher)
:m_activityFetcher(activityFetcher)
	{
	//private impl for symbian
	#ifdef Q_OS_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::friendsActivities(const SmfContact & aFriend, int pageNum, int perPage)
	{
	  m_xtraInfoSerialized.clear();
	  m_baseProvider = m_activityFetcher->getProvider();
	  //serialize start
	  QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
	  //SmfProvider
	  write<<*(m_baseProvider);
	  m_pageInfoFlag = 0;
	  write<<m_pageInfoFlag;
	  write<<pageNum;
	  write<<perPage;
	  
	  QDataStream xtraInfoWrite(&m_xtraInfoSerialized,QIODevice::WriteOnly);

	  xtraInfoWrite<<aFriend;
	  m_xtraInfoFlag = m_xtraInfoSerialized.size();
	  write<<m_xtraInfoFlag;
	  //serialize end
	  QString intfName(activityFetcherInterface);
	  int max = MaxSmfActivityEntrySize*perPage;
	  //call private impl's send method
	  m_SmfClientPrivate->sendRequest(m_serializedDataToServer,intfName,SmfActivityFriendsActivities,max,m_xtraInfoSerialized);
	}

void SmfActivityFetcherPrivate::filtered(QList<SmfActivityObjectType> filters, int pageNum, int perPage)
	{
	  m_xtraInfoSerialized.clear();
	  m_baseProvider = m_activityFetcher->getProvider();
	  //serialize start
	  QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
	  //SmfProvider
	  write<<*(m_baseProvider);
	  m_pageInfoFlag = 0;
	  write<<m_pageInfoFlag;
	  write<<pageNum;
	  write<<perPage;
	  
	  QDataStream xtraInfoWrite(&m_xtraInfoSerialized,QIODevice::WriteOnly);

	  xtraInfoWrite<<filters;
	  m_xtraInfoFlag = m_xtraInfoSerialized.size();
	  write<<m_xtraInfoFlag;
	  //serialize end
	  QString intfName(activityFetcherInterface);
	  int max = MaxSmfActivityEntrySize*perPage;
	  //call private impl's send method
	  m_SmfClientPrivate->sendRequest(m_serializedDataToServer,intfName,SmfActivityFiltered,max,m_xtraInfoSerialized);
	}

void SmfActivityFetcherPrivate::selfActivities(int pageNum, int perPage)
	{
	  m_xtraInfoSerialized.clear();
	  m_baseProvider = m_activityFetcher->getProvider();
	  //serialize start
	  QDataStream write(&m_serializedDataToServer,QIODevice::WriteOnly);
	  //SmfProvider
	  write<<*(m_baseProvider);
	  m_pageInfoFlag = 0;
	  write<<m_pageInfoFlag;
	  write<<pageNum;
	  write<<perPage;

	  m_xtraInfoFlag = 0;
	  write<<m_xtraInfoFlag;
	  //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::resultsAvailable(QByteArray result,SmfRequestTypeID opcode, SmfError error)
	{
	qDebug()<<"SmfPostProviderPrivate::resultsAvailable";
	qDebug()<<"opcode=";
	qDebug()<<QString::number(opcode);
	QDataStream reader(&result,QIODevice::ReadOnly);
	//Now de-serialize it based on opcode
	switch(opcode)
		{
		case SmfActivityFriendsActivities:
		case SmfActivityFiltered:
		case SmfActivitySelfActivity:
			{
			if(m_entries)
				{
				delete m_entries;
				m_entries = NULL;
				}

			m_entries = new SmfActivityEntryList;
			reader>>*(m_entries);
			//not incorporating paging now
			SmfResultPage page;

			emit m_activityFetcher->resultsAvailable(m_entries,error,page);
			}
			break;
		default:
			Q_ASSERT_X(1,"SmfActivityFetcherPrivate::resultsAvailable","default case");
		}
	}