predictivesearch/PcsAlgorithm/Algorithm1/src/CPcsAlgorithm1Utils.cpp
branchRCL_3
changeset 6 e8e3147d53eb
parent 3 04ab22b956c2
child 7 b3431bff8c19
equal deleted inserted replaced
5:81f8547efd4f 6:e8e3147d53eb
    19 // INCLUDES
    19 // INCLUDES
    20 #include "CPcsAlgorithm1Utils.h"
    20 #include "CPcsAlgorithm1Utils.h"
    21 #include "CPsData.h"
    21 #include "CPsData.h"
    22 #include "CPcsDefs.h"
    22 #include "CPcsDefs.h"
    23 #include "CPcsCache.h"
    23 #include "CPcsCache.h"
       
    24 #include "CPsQuery.h"
    24 #include "CPsQueryItem.h"
    25 #include "CPsQueryItem.h"
    25 
    26 
    26 #include <collate.h>
    27 #include <collate.h>
    27 
    28 
    28 // CONSTANTS
    29 // CONSTANTS
    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 // ----------------------------------------------------------------------------
   142     else
   143     else
   143         {
   144         {
   144         for ( TInt i = 0; i < aPsQuery.Count(); i++ )
   145         for ( TInt i = 0; i < aPsQuery.Count(); i++ )
   145             {
   146             {
   146             CPsQueryItem& currentItem = aPsQuery.GetItemAtL(i);
   147             CPsQueryItem& currentItem = aPsQuery.GetItemAtL(i);
   147             if ( (currentItem.Mode() == EItut) && (aLeft[i] != aRight[i]) )
   148             if ( (CPcsKeyMap::IsModePredictive(currentItem.Mode()))
       
   149                  && (aLeft[i] != aRight[i]) )
   148                 {
   150                 {
   149                 comparison = EFalse;
   151                 comparison = EFalse;
   150                 break;
   152                 break;
   151                 }
   153                 }
   152             }
   154             }
   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