1 // Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
16 #if !defined(__MSVARRAY_H__)
17 #define __MSVARRAY_H__
19 #if !defined(__MSVSTD_H__)
23 //*************************
24 // class TKeyArrayFixPtr
25 //*************************
27 class TKeyArrayFixPtr : public TKeyArrayFix
29 // Generic Key class for sorting arrays of pointers in flat arrays.
37 inline TKeyArrayFixPtr(TInt anOffset,TKeyCmpText aType);
38 inline TKeyArrayFixPtr(TInt anOffset,TKeyCmpText aType,TInt aLength);
39 inline TKeyArrayFixPtr(TInt anOffset,TKeyCmpNumeric aType);
40 // At returns dereferenced pointer to objects (but not index)
41 IMPORT_C TAny* At(TInt anIndex) const;
45 //**********************************
47 //**********************************
49 // The array of TMsvEntry pointers
52 class CMsvEntryArray : public CArrayPtrFlat<const TMsvEntry>
59 IMPORT_C static CMsvEntryArray* NewL(const CArrayFix<TUid>& iMtmList);
60 IMPORT_C static CMsvEntryArray* NewLC(const CArrayFix<TUid>& iMtmList);
61 IMPORT_C void SortL(TMsvSelectionOrdering aOrdering);
62 IMPORT_C ~CMsvEntryArray();
66 EGroupByStandardFolders,
73 TInt NumberOfArraysToSplitIntoL(TGroupCriterion aGroupCriterion);
74 TBool OkToGroup(TGroupCriterion aGroupCriterion,TMsvSelectionOrdering aOrdering) const;
75 TInt ArrayId(const TMsvEntry* aEntry,TGroupCriterion aGroupCriterion) const;
76 void GroupL(TGroupCriterion aGroupCriterion,TMsvSelectionOrdering aOrdering,TBool aDoSort);
77 void ReverseOrder(TMsvSorting aSortType);
79 CMsvEntryArray(const CArrayFix<TUid>& iMtmList);
80 TKeyArrayFixPtr MessageSortKey(TMsvSorting aSortType) const;
82 TInt FindSubjectStart(const TDesC& aSubject, const TDesC& aSubjectSkipString) const;
83 void SubjectBasedSortL(TBool aReverse, const TDesC& aSubjectSkipString);
84 void DetailBasedSortL();
87 const CArrayFix<TUid>& iOrigMtmList;
88 CArrayFix<TUid>* iActualMtmList;
93 inline TKeyArrayFixPtr::TKeyArrayFixPtr(TInt anOffset,TKeyCmpText aType)
94 : TKeyArrayFix(anOffset,aType)
97 inline TKeyArrayFixPtr::TKeyArrayFixPtr(TInt anOffset,TKeyCmpText aType,TInt aLength)
98 : TKeyArrayFix(anOffset,aType,aLength)
101 inline TKeyArrayFixPtr::TKeyArrayFixPtr(TInt anOffset,TKeyCmpNumeric aType)
102 : TKeyArrayFix(anOffset,aType)