diff -r 1a2a00e78665 -r f62f87b200ec contentstorage/caclient/s60/src/caclientproxy.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contentstorage/caclient/s60/src/caclientproxy.cpp Fri Mar 19 09:35:23 2010 +0200 @@ -0,0 +1,380 @@ +/* + * Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of "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: + * + */ + +#include +#include +#include +#include // charconv.lib +#include + +#include "caclientproxy.h" +#include "cainnerentry.h" +#include "cainnerquery.h" +#include "caobjectadapter.h" +#include "caentriesarray.h" +#include "caidsarray.h" +#include "cahandlerengine.h" +#include "caarraycleanup.inl" + +#include "caentry.h" +#include "caquery.h" +#include "cadefs.h" + + +//---------------------------------------------------------------------------- +// +//---------------------------------------------------------------------------- +CaClientProxy::CaClientProxy(): + mHandler(NULL) +{ +} + +//---------------------------------------------------------------------------- +// +//---------------------------------------------------------------------------- +CaClientProxy::~CaClientProxy() +{ + mSession.Close(); + delete mHandler; +} + +//---------------------------------------------------------------------------- +// +//---------------------------------------------------------------------------- +ErrorCode CaClientProxy::connect() +{ + int error = mSession.StartServer(); + if (!error) { + error = mSession.Connect(); + } + if (error) { + mSession.Close(); + qWarning("CaClientProxy::connect: error (%d)", error); + } + return CaObjectAdapter::convertErrorCode(error); +} + +//---------------------------------------------------------------------------- +// +//---------------------------------------------------------------------------- +ErrorCode CaClientProxy::addData(const CaEntry &entryToAdd, + CaEntry &targetEntry) +{ + TRAPD(error, addDataL(entryToAdd, targetEntry)); + + USE_QDEBUG_IF(error) << "CaClientProxy::addData - Error (" + << error << ")"; + + return CaObjectAdapter::convertErrorCode(error); +} + +//---------------------------------------------------------------------------- +// +//---------------------------------------------------------------------------- +ErrorCode CaClientProxy::removeData(const QList &entryIdList) +{ + TRAPD(error, removeDataL(entryIdList)); + + USE_QDEBUG_IF(error) << "CaClientProxy::removeData - Error (" + << error << ")"; + + return CaObjectAdapter::convertErrorCode(error); +} + +//---------------------------------------------------------------------------- +// +//---------------------------------------------------------------------------- +ErrorCode CaClientProxy::insertEntriesIntoGroup(int groupId, + const QList &entryIdList, int beforeEntryId) +{ + TRAPD(error, + insertEntriesIntoGroupL(groupId, entryIdList, beforeEntryId)); + + USE_QDEBUG_IF(error)<< "CaClientProxy::insertEntriesIntoGroup - Error (" + << error << ")"; + + return CaObjectAdapter::convertErrorCode(error); +} + +//---------------------------------------------------------------------------- +// +//---------------------------------------------------------------------------- +ErrorCode CaClientProxy::removeEntriesFromGroup(int groupId, + const QList &entryIdList) +{ + TRAPD(error, removeEntriesFromGroupL(groupId, entryIdList)); + + USE_QDEBUG_IF(error)<< "CaClientProxy::removeEntriesFromGroup - Error (" + << error << ")"; + + return CaObjectAdapter::convertErrorCode(error); +} + +//---------------------------------------------------------------------------- +// +//---------------------------------------------------------------------------- +ErrorCode CaClientProxy::getData(const QList &entryIdList, + QList &sourceList) +{ + TRAPD(error, getDataL(entryIdList, sourceList)); + + USE_QDEBUG_IF(error) << "CaClientProxy::getData - Error (" + << error << ")"; + + return CaObjectAdapter::convertErrorCode(error); +} + +//---------------------------------------------------------------------------- +// +//---------------------------------------------------------------------------- +ErrorCode CaClientProxy::getData(const CaQuery &query, + QList &sourceList) +{ + TRAPD(error, getDataL(query, sourceList)); + + USE_QDEBUG_IF(error) << "CaClientProxy::getData - Error (" + << error << ")"; + + return CaObjectAdapter::convertErrorCode(error); +} + +//---------------------------------------------------------------------------- +// +//---------------------------------------------------------------------------- +ErrorCode CaClientProxy::getEntryIds(const CaQuery &query, + QList &sourceIdList) +{ + TRAPD(error, getEntryIdsL(query, sourceIdList)); + + USE_QDEBUG_IF(error) << "CaClientProxy::getEntryIds - Error (" + << error << ")"; + + return CaObjectAdapter::convertErrorCode(error); +} + +//---------------------------------------------------------------------------- +// +//---------------------------------------------------------------------------- +ErrorCode CaClientProxy::executeCommand(const CaEntry &entry, + const QString &command) +{ + TRAPD(error, executeCommandL(entry, command)); + + USE_QDEBUG_IF(error) << "CaClientProxy::executeCommand - Error (" + << error << ")"; + + return CaObjectAdapter::convertErrorCode(error); +} + +//---------------------------------------------------------------------------- +// +//---------------------------------------------------------------------------- +ErrorCode CaClientProxy::touch(const CaEntry &aEntry) +{ + TRAPD(error, touchL(aEntry)); + + USE_QDEBUG_IF(error) << "CaClientProxy::touch - Error (" + << error << ")"; + + return CaObjectAdapter::convertErrorCode(error); +} + +//---------------------------------------------------------------------------- +// +//---------------------------------------------------------------------------- +ErrorCode CaClientProxy::customSort(const QList &entryIdList, + int groupId) +{ + TRAPD(error, customSortL(entryIdList, groupId)); + + USE_QDEBUG_IF(error)<< "CaClientProxy::customSort - Error (" + << error << ")"; + + return CaObjectAdapter::convertErrorCode(error); +} + +//---------------------------------------------------------------------------- +// +//---------------------------------------------------------------------------- +void CaClientProxy::addDataL(const CaEntry &entryToAdd, + CaEntry &targetEntry) +{ + CCaInnerEntry *newEntryToAdd = CCaInnerEntry::NewLC(); + + CaObjectAdapter::convertL(entryToAdd, *newEntryToAdd); + mSession.AddL(*newEntryToAdd); + CaObjectAdapter::convert(*newEntryToAdd, targetEntry); + + CleanupStack::PopAndDestroy(newEntryToAdd); +} + +//---------------------------------------------------------------------------- +// +//---------------------------------------------------------------------------- +void CaClientProxy::removeDataL(const QList &entryIdList) +{ + RCaIdsArray array; + CleanupClosePushL(array); + CaObjectAdapter::convertL(entryIdList, array); + mSession.RemoveL(array); + CleanupStack::PopAndDestroy(&array); +} + +void CaClientProxy::insertEntriesIntoGroupL(int groupId, + const QList &entryIdList, int beforeEntryId) +{ + RCaIdsArray array; + CleanupClosePushL(array); + CaObjectAdapter::convertL(entryIdList, array); + TCaOperationParams::OperationType operationType; + switch (beforeEntryId) { + case AfterTheLastEntry: + operationType = TCaOperationParams::EAppend; + break; + case BeforeTheFirstEntry: + operationType = TCaOperationParams::EPrepend; + break; + default: + if (beforeEntryId < 1) { + qWarning("CaClientProxy::insertEntriesIntoGroupL" + "- wrong beforeEntryId: (%d)", beforeEntryId); + } + operationType = TCaOperationParams::EInsert; + break; + } + TCaOperationParams params = { operationType, groupId, beforeEntryId }; + mSession.OrganizeL(array, params); + CleanupStack::PopAndDestroy(&array); +} + +//---------------------------------------------------------------------------- +// +//---------------------------------------------------------------------------- +void CaClientProxy::removeEntriesFromGroupL(int groupId, + const QList &entryIdList) +{ + RCaIdsArray array; + CleanupClosePushL(array); + CaObjectAdapter::convertL(entryIdList, array); + TCaOperationParams params = { TCaOperationParams::ERemove, + groupId, 0 /*not used*/ + }; + mSession.OrganizeL(array, params); + CleanupStack::PopAndDestroy(&array); +} + +//---------------------------------------------------------------------------- +// +//---------------------------------------------------------------------------- +void CaClientProxy::getDataL(const QList &entryIdList, + QList &sourceList) +{ + CCaInnerQuery *query = CCaInnerQuery::NewLC(); + RArray array; + CleanupClosePushL(array); + CaObjectAdapter::convertL(entryIdList, array); + query->SetIdsL(array); + RCaEntriesArray results; + CleanupResetAndDestroyPushL(results); + mSession.GetListL(*query, results); + CaObjectAdapter::convertL(results, sourceList); + CleanupStack::PopAndDestroy(&results); + CleanupStack::PopAndDestroy(&array); + CleanupStack::PopAndDestroy(query); +} + +//---------------------------------------------------------------------------- +// +//---------------------------------------------------------------------------- +void CaClientProxy::getDataL(const CaQuery &query, + QList &sourceList) +{ + CCaInnerQuery *innerQuery = CCaInnerQuery::NewLC(); + CaObjectAdapter::convertL(query, *innerQuery); + RCaEntriesArray results; + CleanupResetAndDestroyPushL(results); + mSession.GetListL(*innerQuery, results); + CaObjectAdapter::convertL(results, sourceList); + CleanupStack::PopAndDestroy(&results); + CleanupStack::PopAndDestroy(innerQuery); +} + +//---------------------------------------------------------------------------- +// +//---------------------------------------------------------------------------- +void CaClientProxy::getEntryIdsL(const CaQuery &query, + QList &sourceIdList) +{ + CCaInnerQuery *innerQuery = CCaInnerQuery::NewLC(); + CaObjectAdapter::convertL(query, *innerQuery); + RCaIdsArray results; + CleanupClosePushL(results); + mSession.GetEntryIdsL(*innerQuery, results); + CaObjectAdapter::convertL(results, sourceIdList); + CleanupStack::PopAndDestroy(&results); + CleanupStack::PopAndDestroy(innerQuery); +} + +//---------------------------------------------------------------------------- +// +//---------------------------------------------------------------------------- +void CaClientProxy::executeCommandL(const CaEntry &entry, + const QString &command) +{ + CCaInnerEntry *innerEntry = CCaInnerEntry::NewLC(); + CaObjectAdapter::convertL(entry, *innerEntry); + + TPtrC16 commandPtr16( + reinterpret_cast(command.utf16())); + HBufC8 *convertedCommand = CnvUtfConverter::ConvertFromUnicodeToUtf7L( + commandPtr16, false); + CleanupStack::PushL(convertedCommand); + if (!mHandler) { + mHandler = CCaHandlerEngine::NewL(); + } + mHandler->HandleCommandL(*innerEntry, convertedCommand->Des()); + CleanupStack::PopAndDestroy(convertedCommand); + CleanupStack::PopAndDestroy(innerEntry); +} + +//---------------------------------------------------------------------------- +// +//---------------------------------------------------------------------------- +void CaClientProxy::touchL(const CaEntry &entry) +{ + CCaInnerEntry *innerEntry = CCaInnerEntry::NewLC(); + + CaObjectAdapter::convertL(entry, *innerEntry); + + mSession.TouchL(*innerEntry); + + CleanupStack::PopAndDestroy(innerEntry); +} + +//---------------------------------------------------------------------------- +// +//---------------------------------------------------------------------------- +void CaClientProxy::customSortL(const QList &entryIdList, int groupId) +{ + RCaIdsArray array; + CleanupClosePushL(array); + CaObjectAdapter::convertL(entryIdList, array); + + mSession.CustomSortL(array, groupId); + CleanupStack::PopAndDestroy(&array); +} +