36 // ---------------------------------------------------------------------------- |
37 // ---------------------------------------------------------------------------- |
37 // CPcsAlgorithm1Utils::FormCompleteSearchResultsL() |
38 // CPcsAlgorithm1Utils::FormCompleteSearchResultsL() |
38 // Merges all the respective data store result sets to single set in sorted order. |
39 // Merges all the respective data store result sets to single set in sorted order. |
39 // ---------------------------------------------------------------------------- |
40 // ---------------------------------------------------------------------------- |
40 void CPcsAlgorithm1Utils::FormCompleteSearchResultsL(RPointerArray<CPSDATA_R_PTR_ARRAY>& aSearchResultsArr, |
41 void CPcsAlgorithm1Utils::FormCompleteSearchResultsL(RPointerArray<CPSDATA_R_PTR_ARRAY>& aSearchResultsArr, |
41 RPointerArray<CPsData>& SearchResults) |
42 RPointerArray<CPsData>& aSearchResults) |
42 { |
43 { |
43 TInt maxIndex = 0; |
44 TInt maxIndex = 0; |
44 TInt maxValue = aSearchResultsArr[maxIndex]->Count(); |
45 TInt maxValue = aSearchResultsArr[maxIndex]->Count(); |
45 TLinearOrder<CPsData> rule( CPcsAlgorithm1Utils::CompareDataBySortOrderL ); |
46 TLinearOrder<CPsData> rule( CPcsAlgorithm1Utils::CompareDataBySortOrderL ); |
46 |
47 |
55 } |
56 } |
56 |
57 |
57 // Assign the largets array to searchresults |
58 // Assign the largets array to searchresults |
58 for(TInt i = 0; i < aSearchResultsArr[maxIndex]->Count(); i++) |
59 for(TInt i = 0; i < aSearchResultsArr[maxIndex]->Count(); i++) |
59 { |
60 { |
60 SearchResults.Append((*(aSearchResultsArr[maxIndex]))[i]); |
61 aSearchResults.Append((*(aSearchResultsArr[maxIndex]))[i]); |
61 } |
62 } |
62 |
63 |
63 // Merge the remaining result arrays to the largest array in sequential order |
64 // Merge the remaining result arrays to the largest array in sequential order |
64 for(TInt i = 0; i < aSearchResultsArr.Count(); i++) |
65 for(TInt i = 0; i < aSearchResultsArr.Count(); i++) |
65 { |
66 { |
67 if(( i != maxIndex) && ((aSearchResultsArr[i])->Count() != 0)) |
68 if(( i != maxIndex) && ((aSearchResultsArr[i])->Count() != 0)) |
68 { |
69 { |
69 TInt numElements = (aSearchResultsArr[i])->Count(); |
70 TInt numElements = (aSearchResultsArr[i])->Count(); |
70 for( TInt j = 0; j < numElements; j++) |
71 for( TInt j = 0; j < numElements; j++) |
71 { |
72 { |
72 SearchResults.InsertInOrderAllowRepeatsL((*(aSearchResultsArr[i]))[j], rule); |
73 aSearchResults.InsertInOrderAllowRepeatsL((*(aSearchResultsArr[i]))[j], rule); |
73 } |
74 } |
74 } |
75 } |
75 } |
76 } |
76 } |
77 } |
77 |
78 |
78 // ---------------------------------------------------------------------------- |
79 // ---------------------------------------------------------------------------- |
79 // CPcsAlgorithm1Utils::CompareByLength() |
80 // CPcsAlgorithm1Utils::CompareByLength() |
80 // Compare by length. |
81 // Compare by length. |
81 // ---------------------------------------------------------------------------- |
82 // ---------------------------------------------------------------------------- |
82 TBool CPcsAlgorithm1Utils::CompareByLength ( const HBufC& aFirst, const HBufC& aSecond ) |
83 TInt CPcsAlgorithm1Utils::CompareByLength ( const HBufC& aFirst, const HBufC& aSecond ) |
83 { |
84 { |
84 return ( aFirst.Length() > aSecond.Length() ); |
85 return ( aFirst.Length() - aSecond.Length() ); |
85 } |
86 } |
86 |
87 |
87 // ---------------------------------------------------------------------------- |
88 // ---------------------------------------------------------------------------- |
88 // CPcsAlgorithm1Utils::CompareExact() |
89 // CPcsAlgorithm1Utils::CompareExact() |
89 // Compare strings exactly case sensitively. |
90 // Compare strings exactly case sensitively. |
95 |
96 |
96 // ---------------------------------------------------------------------------- |
97 // ---------------------------------------------------------------------------- |
97 // CPcsAlgorithm1Utils::CompareCollate() |
98 // CPcsAlgorithm1Utils::CompareCollate() |
98 // Compare strings with collate rules depending on locale. |
99 // Compare strings with collate rules depending on locale. |
99 // ---------------------------------------------------------------------------- |
100 // ---------------------------------------------------------------------------- |
100 TBool CPcsAlgorithm1Utils::CompareCollate ( const TDesC& aFirst, const TDesC& aSecond ) |
101 TInt CPcsAlgorithm1Utils::CompareCollate ( const TDesC& aFirst, const TDesC& aSecond ) |
101 { |
102 { |
102 return CPcsAlgorithm1Utils::MyCompareC(aFirst, aSecond); |
103 return CPcsAlgorithm1Utils::MyCompareC(aFirst, aSecond); |
103 } |
104 } |
104 |
105 |
105 // ---------------------------------------------------------------------------- |
106 // ---------------------------------------------------------------------------- |
271 { |
273 { |
272 aString.Replace( i, 1, KSpace ); |
274 aString.Replace( i, 1, KSpace ); |
273 } |
275 } |
274 } |
276 } |
275 |
277 |
276 aString.TrimAll(); |
278 aString.TrimAll(); |
277 } |
279 } |
278 |
280 |
279 // ---------------------------------------------------------------------------- |
281 // ---------------------------------------------------------------------------- |
280 // CPcsAlgorithm1Utils::IsGroupUri() |
282 // CPcsAlgorithm1Utils::IsGroupUri() |
281 // Check if the input URI is of contact search in a group template form |
283 // Check if the input URI is of contact search in a group template form |
282 // ---------------------------------------------------------------------------- |
284 // ---------------------------------------------------------------------------- |
283 TBool CPcsAlgorithm1Utils::IsGroupUri(TDesC& aURI) |
285 TBool CPcsAlgorithm1Utils::IsGroupUri(TDesC& aURI) |
284 { |
286 { |
285 TBuf<255> uri(aURI); |
287 TBuf<255> uri(aURI); |
286 uri.LowerCase(); |
288 uri.LowerCase(); |
287 |
289 |
288 TInt index = uri.FindF(KGroupIdUri); |
290 TInt index = uri.FindF(KGroupIdUri); |
289 |
291 |
290 if ( index == KErrNotFound ) |
292 if ( index == KErrNotFound ) |
291 { |
293 { |
292 return EFalse; |
294 return EFalse; |
293 } |
295 } |
294 |
296 |
295 return ETrue; |
297 return ETrue; |
296 } |
298 } |
297 |
299 |