ipsservices/ipssosplugin/inc/ipsplgsearch.inl
changeset 0 8466d47a6819
child 22 d620048b4810
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipsservices/ipssosplugin/inc/ipsplgsearch.inl	Thu Dec 17 08:39:21 2009 +0200
@@ -0,0 +1,215 @@
+/*
+* 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:  Inline finction definitions for class TSearchParams.
+*
+*/
+
+
+#include <StringLoader.h>
+
+const TInt KIpsPlgArrayGranularity = 3;
+// <cmail> mirrored
+//_LIT( KIpsPlgPattern, "*%0U*" );
+_LIT( KIpsPlgPattern, "*" );
+// </cmail> 
+
+
+// ---------------------------------------------------------------------------
+// CIpsPlgSearch::TSearchParams::TSearchParams()
+// ---------------------------------------------------------------------------
+//
+CIpsPlgSearch::TSearchParams::TSearchParams(
+    const RPointerArray<TDesC>& aSearchStrings,
+    const TFSMailMsgId& aMailbox,
+    const RArray<TFSMailMsgId> aFolderIds,
+    const TFSMailSortCriteria& aSortCriteria )
+    :
+    iSearchStrings( NULL ),
+    iMailbox( aMailbox ),
+    iSortCriteria( aSortCriteria )
+    {
+    TRAP_IGNORE( SetSearchStringsL( aSearchStrings ) );
+    TRAP_IGNORE( SetFolderIdsL( aFolderIds ) );
+    }
+
+// ---------------------------------------------------------------------------
+// CIpsPlgSearch::TSearchParams::~TSearchParams()
+// ---------------------------------------------------------------------------
+//
+CIpsPlgSearch::TSearchParams::~TSearchParams()
+    {
+    iFolderIds.Reset();
+    RemoveArray();
+    }
+
+// ---------------------------------------------------------------------------
+// CIpsPlgSearch::TSearchParams::operator=()
+// ---------------------------------------------------------------------------
+//
+CIpsPlgSearch::TSearchParams& CIpsPlgSearch::TSearchParams::operator=(
+    const TSearchParams& aParams )
+    {
+    // Make sure the lists are empty.
+    iFolderIds.Reset();
+    RemoveArray();
+
+    TRAP_IGNORE( SetSearchStringsL( *aParams.iSearchStrings ) );
+    iMailbox = aParams.iMailbox;
+    TRAP_IGNORE( SetFolderIdsL( aParams.iFolderIds ) );
+    iSortCriteria = aParams.iSortCriteria;
+
+    return *this;
+    }
+
+// ---------------------------------------------------------------------------
+// CIpsPlgSearch::TSearchParams::operator=()
+// ---------------------------------------------------------------------------
+//
+void CIpsPlgSearch::TSearchParams::operator+=(
+    const TSearchParams& aParams )
+    {
+    // Update folder list and sort criteria.
+    TRAP_IGNORE( AddFolderIdsL( aParams.iFolderIds ) );
+    iSortCriteria = aParams.iSortCriteria;
+    }
+
+// ---------------------------------------------------------------------------
+// CIpsPlgSearch::TSearchParams::RemoveArray()
+// ---------------------------------------------------------------------------
+//
+void CIpsPlgSearch::TSearchParams::RemoveArray()
+    {
+    if ( iSearchStrings )
+        {
+        iSearchStrings->Reset();
+        }
+
+    delete iSearchStrings;
+    iSearchStrings = NULL;
+    }
+
+// ---------------------------------------------------------------------------
+// CIpsPlgSearch::TSearchParams::SetSearchStringsL()
+// ---------------------------------------------------------------------------
+//
+void CIpsPlgSearch::TSearchParams::SetSearchStringsL(
+    const RPointerArray<TDesC>& aSearchStrings )
+    {
+    RemoveArray();
+
+    iSearchStrings =
+        new( ELeave ) CDesC16ArrayFlat( KIpsPlgArrayGranularity );
+
+    for ( TInt item = 0; item < aSearchStrings.Count(); item++ )
+        {
+        // <cmail> mirrored
+
+        // Add the wildcards here.
+        //TBuf<5> pattern( KIpsPlgPattern );
+        RBuf destroyThisHackStringNow;
+        destroyThisHackStringNow.CreateL(
+            aSearchStrings[item]->Length() + 2 );
+        CleanupClosePushL( destroyThisHackStringNow );
+
+        destroyThisHackStringNow.Insert(0, KIpsPlgPattern);
+        destroyThisHackStringNow.Append(*aSearchStrings[item]);
+        destroyThisHackStringNow.Append(KIpsPlgPattern);
+        /*
+        StringLoader::Format(
+            destroyThisHackStringNow, pattern, 0, *aSearchStrings[item] );
+        */
+
+        // </cmail> 
+
+        
+        iSearchStrings->AppendL( destroyThisHackStringNow ); //<cmail>
+
+        CleanupStack::PopAndDestroy( &destroyThisHackStringNow );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CIpsPlgSearch::TSearchParams::SetSearchStringsL()
+// ---------------------------------------------------------------------------
+//
+void CIpsPlgSearch::TSearchParams::SetSearchStringsL(
+    const CDesC16Array& aSearchStrings )
+    {
+    RemoveArray();
+
+    iSearchStrings =
+        new( ELeave ) CDesC16ArrayFlat( KIpsPlgArrayGranularity );
+
+    for ( TInt item = 0; item < aSearchStrings.Count(); item++ )
+        {
+        iSearchStrings->AppendL( aSearchStrings[item] ); //<cmail>
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CIpsPlgSearch::TSearchParams::SetFolderIdsL()
+// ---------------------------------------------------------------------------
+//
+void CIpsPlgSearch::TSearchParams::SetFolderIdsL(
+    const RArray<TFSMailMsgId>& aFolderIds )
+    {
+    for ( TInt item = 0; item < aFolderIds.Count(); item++ )
+        {
+        iFolderIds.AppendL( aFolderIds[item] );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CIpsPlgSearch::TSearchParams::FolderExists()
+// ---------------------------------------------------------------------------
+//
+TBool CIpsPlgSearch::TSearchParams::FolderExists( const TFSMailMsgId& aFolderId )
+    {
+    for ( TInt existing = 0; existing < iFolderIds.Count(); existing++ )
+        {
+        if ( aFolderId == iFolderIds[existing] )
+            {
+            return ETrue;
+            }
+        }
+
+    return EFalse;
+    }
+
+// ---------------------------------------------------------------------------
+// CIpsPlgSearch::TSearchParams::AddFolderIdsL()
+// ---------------------------------------------------------------------------
+//
+void CIpsPlgSearch::TSearchParams::AddFolderIdsL(
+    const RArray<TFSMailMsgId>& aFolderIds )
+    {
+    for ( TInt item = 0; item < aFolderIds.Count(); item++ )
+        {
+        if ( !FolderExists( aFolderIds[item] ) )
+            {
+            iFolderIds.AppendL( aFolderIds[item] );
+            }
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CIpsPlgSearch::TMsgContainer::SetFolderIdsL()
+// ---------------------------------------------------------------------------
+//
+TMsvId CIpsPlgSearch::TMsgContainer::Id() const
+    {
+    return iId;
+    }
+
+// End of File