diff -r 000000000000 -r 8e480a14352b messagingfw/msgsrvnstore/server/src/msvsearchsortcacheentry.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingfw/msgsrvnstore/server/src/msvsearchsortcacheentry.cpp Mon Jan 18 20:36:02 2010 +0200 @@ -0,0 +1,126 @@ +// 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 "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 "msvsearchsortcacheentry.h" +#include "msvsearchsortcachemanager.h" + +/****************************** + * CreateQueryEntryL() + * @param const TMsvSearchSortQuery& : a Client request Query , const TBool :Mark the Query + * @return :CMsvSearchSortCacheEntry* : a handle to a new search sort cache entry. + ******************************/ + CMsvSearchSortCacheEntry* CMsvSearchSortCacheEntry::CreateQueryEntryL(const CMsvSearchSortQuery* aQuery, const TBool aMarkQuery,TInt aiteratorCount) + { + CMsvSearchSortCacheEntry* self = new(ELeave) CMsvSearchSortCacheEntry(aQuery,aMarkQuery,aiteratorCount); + CleanupStack::PushL(self); + self->ConstructQueryNodeL(aQuery); + CleanupStack::Pop(self); + return self; + } + +/******************************** + * Default Constructor :CMsvSearchSortCacheEntry() + * @param None. + * @return None. + ********************************/ +/*CMsvSearchSortCacheEntry::CMsvSearchSortCacheEntry() + { + }*/ + +/******************************** + * Default Constructor :CMsvSearchSortCacheEntry() + * @param None. + * @return None. + ********************************/ +CMsvSearchSortCacheEntry::CMsvSearchSortCacheEntry(const CMsvSearchSortQuery* aQuery,const TBool aMarkQuery, TInt aiteratorCount) + { + iQueryLevel = aQuery->iQueryCount; + iSubFolderOption = aQuery->iSubFolderSearch; + iteratorCount = aiteratorCount; + iSortOnHeader = EFalse; + iParentId = aQuery->iParentId; + iResultType = aQuery->iSearchSortResultType; //Setting the Result Type + iMarkQuery = aMarkQuery; //Mark the Query. + iQueryID = 0; + iQueryOptions = 0; + iMsgQuery.Reset(); + } + +/******************************* + * Destructor : ~CMsvCacheEntry() + * @param None. + * @return None. + * ******************************/ +CMsvSearchSortCacheEntry::~CMsvSearchSortCacheEntry() + { + iMsgQuery.Close(); + } + +/******************************* + * ConstructQueryNodeL() : Create a Search Sort Cache Entry. + * @param const TMsvSearchSortQuery& : a Client request Query , const TBool :Mark the Query + * @return None + ********************************/ +void CMsvSearchSortCacheEntry::ConstructQueryNodeL(const CMsvSearchSortQuery* aQuery) + { + iMsgQuery.Reset(); + if(!aQuery->iIsSearchQuery) + { + DoSortQuery();//Set Search or Sort Query . + iMsgExplicitSortPart = aQuery->iSortOnMessagePart; + } + if(aQuery->iCaseSensitive) + { + DoCaseSensetive();//Case Sensitive bit is set. + } + if(aQuery->iWholeWord) + { + DoWholeWord();//Whole Word bit is set. + } + if(aQuery->iWildCardCharacter) + { + DoWildCharacter();//set Wild Character option. + } + if(aQuery->iIsSearchQuery) + { + //SearchQuery And Explicit Sort is required. + //Explicit sort leds thier will be no default sort based on date and time. + if(aQuery->iExplicitSort) + { + DoExplicitSortReq(); // Set the flag for Explicit sorting . + iMsgExplicitSortPart = aQuery->iSortOnMessagePart; + } + else + { + iMsgExplicitSortPart = aQuery->iSortOnMessagePart; + } + } + if(aQuery->iSortOrder == EMsvSortAscending) + { + DoAscendingSort();//Ascending or Descending Sort option bit is set. + } + //Query data Appening to a RArray. + for (TInt qCount = 0; qCount < aQuery->iQueryCount; qCount++) + { + iQueryData.iMessagePart = aQuery->iQueryTable[qCount].iMessagePart; + iQueryData.iRelationOp = aQuery->iQueryTable[qCount].iRelationOp; + iQueryData.iQueryString.Copy(aQuery->iQueryTable[qCount].iQueryString); + iMsgQuery.Append(iQueryData); + } + + CMSvSearchSortCacheManager::Instance()->GenerateQueryId(*this); + } +