--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/msgsrvnstore/server/src/msvsearchsortcacheentry.cpp Fri Jun 04 10:32:16 2010 +0100
@@ -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 <e32math.h>
+#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);
+ }
+