diff -r c18f9fa7f42e -r 640d30f4fb64 phonebookengines/cntsortplugin/src/ccntsortplugin.cpp --- a/phonebookengines/cntsortplugin/src/ccntsortplugin.cpp Fri Oct 08 11:42:51 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,200 +0,0 @@ -/* -* Copyright (c) 2002 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: -* Contact model ECOM sort plugin. -* -*/ - - -// INCLUDE FILES -#include "ccntsortplugin.h" - -#include -#include - -#include "csortkeyarray.h" - -namespace { - -#ifdef _DEBUG -enum TPanicType - { - EPanicPreCond_CompareViewContactsL = 1, - EPanicSortUtilFactoryReturnedNULL, - EPanicInvalidViewParameters, - EPanicDefaultCompareFunctionNULL, - EPanicDefaultIsSortableFunctionNULL - }; - -void Panic(TPanicType aPanicType) - { - _LIT(KPanicTxt, "CCntSortPlugin"); - User::Panic(KPanicTxt, aPanicType); - } -#endif -} // namespace - -// ========================== MEMBER FUNCTIONS =============================== - -// --------------------------------------------------------------------------- -// CCntSortPlugin::NewL -// --------------------------------------------------------------------------- -// -CCntSortPlugin* CCntSortPlugin::NewL(TAny* aParams) - { - CCntSortPlugin* self = new(ELeave) CCntSortPlugin; - CleanupStack::PushL( self ); - self->ConstructL(static_cast(aParams)); - CleanupStack::Pop(); - return self; - } - -// --------------------------------------------------------------------------- -// CCntSortPlugin::ConstructL -// --------------------------------------------------------------------------- -// -void CCntSortPlugin::ConstructL(TSortPluginParams* aParams) - { - // Validate parameters - if (!aParams || - (aParams->iParametersRevision != KCntSortPluginViewParamsRev1Uid)) - User::Leave(KErrArgument); - - TSortPluginViewParamsRev1* viewParams = - static_cast(aParams->iViewSortParams); - - __ASSERT_DEBUG(viewParams, - Panic(EPanicInvalidViewParameters)); - __ASSERT_DEBUG(viewParams->iCompareViewContactsL, - Panic(EPanicDefaultCompareFunctionNULL)); - __ASSERT_DEBUG(viewParams->iIsSortable, - Panic(EPanicDefaultIsSortableFunctionNULL)); - - iIsSortable = viewParams->iIsSortable; - - iSortUtil = CSortUtil::NewL(); - // Sort Util factory has to return valid pointer - // Factory should default to european sorting if nothing else is - // applicable - __ASSERT_DEBUG(iSortUtil, Panic(EPanicSortUtilFactoryReturnedNULL)); - - iLeftSortKeyArray = CSortKeyArray::NewL(); - iRightSortKeyArray = CSortKeyArray::NewL(); - } - -// --------------------------------------------------------------------------- -// CCntSortPlugin::CCntSortPlugin -// --------------------------------------------------------------------------- -// -CCntSortPlugin::CCntSortPlugin() - { - } - -// --------------------------------------------------------------------------- -// CCntSortPlugin::~CCntSortPlugin -// --------------------------------------------------------------------------- -// -CCntSortPlugin::~CCntSortPlugin() - { - delete iSortUtil; - iSortOrder.Close(); - delete iLeftSortKeyArray; - delete iRightSortKeyArray; - } - -void CCntSortPlugin::SetSortOrderL - (const RContactViewSortOrder& aViewSortOrder) - { - iSortOrder.Close(); - iSortOrder.CopyL(aViewSortOrder); - } - -TInt CCntSortPlugin::SortStart(TSortStartTypes aSortStartType, TInt aCount) - { - TRAPD(ret, DoSortStartL(aSortStartType, aCount)); - return ret; - } - -void CCntSortPlugin::DoSortStartL - (TSortStartTypes /* aSortStartType */, TInt /* aCount */) - { - iLeftSortKeyArray->Reset(); - iRightSortKeyArray->Reset(); - - const TInt count = iSortOrder.Count(); - for (TInt i = 0; i < count; ++i) - { - TFieldType fieldType = iSortOrder[i]; - if (fieldType == KUidContactFieldGivenNamePronunciation || - fieldType == KUidContactFieldFamilyNamePronunciation || - fieldType == KUidContactFieldCompanyNamePronunciation) - { - iLeftSortKeyArray->AppendL - (TSortKey(KNullDesC, ESortKeyPronounciation)); - iRightSortKeyArray->AppendL - (TSortKey(KNullDesC, ESortKeyPronounciation)); - } - else - { - iLeftSortKeyArray->AppendL(TSortKey(KNullDesC, ESortKeyBasic)); - iRightSortKeyArray->AppendL(TSortKey(KNullDesC, ESortKeyBasic)); - } - } - } - -void CCntSortPlugin::SortCompleted() - { - iLeftSortKeyArray->Reset(); - iRightSortKeyArray->Reset(); - } - -TInt CCntSortPlugin::SortCompareViewContactsL - (const CViewContact& aLhs, const CViewContact& aRhs) - { - __ASSERT_DEBUG(aLhs.FieldCount() == iSortOrder.Count(), - Panic(EPanicPreCond_CompareViewContactsL)); - __ASSERT_DEBUG(aRhs.FieldCount() == iSortOrder.Count(), - Panic(EPanicPreCond_CompareViewContactsL)); - __ASSERT_DEBUG(iLeftSortKeyArray && - iLeftSortKeyArray->SortKeyCount() == iSortOrder.Count(), - Panic(EPanicPreCond_CompareViewContactsL)); - __ASSERT_DEBUG(iRightSortKeyArray && - iRightSortKeyArray->SortKeyCount() == iSortOrder.Count(), - Panic(EPanicPreCond_CompareViewContactsL)); - - // Change the text in the sortkeys to correspond fields in the contacts - const TInt count = iSortOrder.Count(); - for (TInt i = 0; i < count; ++i) - { - iLeftSortKeyArray->SetText(aLhs.Field(i), i); - iRightSortKeyArray->SetText(aRhs.Field(i), i); - } - - return iSortUtil->Interface()->CompareItems - (*iLeftSortKeyArray, *iRightSortKeyArray); - } - -TInt CCntSortPlugin::ApiCompareViewContactsL - (const CViewContact& aLhs, const CViewContact& aRhs) - { - return SortCompareViewContactsL(aLhs, aRhs); - } - -TBool CCntSortPlugin::ViewContactIsSortable - (const CViewContact& aViewContact) - { - return iIsSortable(aViewContact); - } - -// End of File