diff -r 000000000000 -r 8466d47a6819 ipsservices/ipssosplugin/inc/ipsplgsearch.inl --- /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 + +const TInt KIpsPlgArrayGranularity = 3; +// mirrored +//_LIT( KIpsPlgPattern, "*%0U*" ); +_LIT( KIpsPlgPattern, "*" ); +// + + +// --------------------------------------------------------------------------- +// CIpsPlgSearch::TSearchParams::TSearchParams() +// --------------------------------------------------------------------------- +// +CIpsPlgSearch::TSearchParams::TSearchParams( + const RPointerArray& aSearchStrings, + const TFSMailMsgId& aMailbox, + const RArray 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& aSearchStrings ) + { + RemoveArray(); + + iSearchStrings = + new( ELeave ) CDesC16ArrayFlat( KIpsPlgArrayGranularity ); + + for ( TInt item = 0; item < aSearchStrings.Count(); item++ ) + { + // 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] ); + */ + + // + + + iSearchStrings->AppendL( destroyThisHackStringNow ); // + + 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] ); // + } + } + +// --------------------------------------------------------------------------- +// CIpsPlgSearch::TSearchParams::SetFolderIdsL() +// --------------------------------------------------------------------------- +// +void CIpsPlgSearch::TSearchParams::SetFolderIdsL( + const RArray& 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& 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