predictivesearch/PcsAlgorithm/Algorithm1/src/CPcsAdaptiveGridItem.cpp
branchRCL_3
changeset 39 a6539d1e8e43
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/predictivesearch/PcsAlgorithm/Algorithm1/src/CPcsAdaptiveGridItem.cpp	Wed Jun 09 09:26:27 2010 +0300
@@ -0,0 +1,167 @@
+/*
+* Copyright (c) 2010 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:  Utility class to hold a single item for Adaptive Grid.
+*               Used to provide quickly to client applications (Phonebook)
+*               The Adaptive Grid for the full list of contacts, which is
+*               the one that is displayed when the Find Box is empty.
+*/
+
+
+// INCLUDE FILES
+#include "CPcsDebug.h"
+#include "CPcsAlgorithm1Utils.h"
+#include "CPcsAdaptiveGridItem.h"
+
+
+// ============================== MEMBER FUNCTIONS ============================
+
+// ----------------------------------------------------------------------------
+// CPcsAdaptiveGridItem::NewL
+// Two Phase Construction
+// ----------------------------------------------------------------------------
+CPcsAdaptiveGridItem* CPcsAdaptiveGridItem::NewL( const TChar& aChar )
+{
+	return new ( ELeave ) CPcsAdaptiveGridItem( aChar );
+} 
+
+// ----------------------------------------------------------------------------
+// CPcsAdaptiveGridItem::CPcsAdaptiveGridItem
+// Constructor
+// ----------------------------------------------------------------------------
+CPcsAdaptiveGridItem::CPcsAdaptiveGridItem( const TChar& aChar ):
+        iCharacter(User::UpperCase( aChar ))
+{
+    // Set zeroes in the reference counters array
+    for ( TInt i=0; i < CPcsAdaptiveGridItem::ENumberCounters; i++ )
+        {
+        iCountersArr[i] = 0;
+        }
+}
+
+// ----------------------------------------------------------------------------
+// CPcsAdaptiveGridItem::~CPcsAdaptiveGridItem
+// Destructor
+// ----------------------------------------------------------------------------
+CPcsAdaptiveGridItem::~CPcsAdaptiveGridItem( )
+{
+    iCountersArr.Reset();
+}
+
+// ----------------------------------------------------------------------------
+// CPcsAlgorithm1Utils::CompareByCharacter()
+// TLinearOrder rule for comparison of data objects
+// ----------------------------------------------------------------------------
+TInt CPcsAdaptiveGridItem::CompareByCharacter( const CPcsAdaptiveGridItem& aObject1, 
+                                               const CPcsAdaptiveGridItem& aObject2 )
+{
+    return CPcsAlgorithm1Utils::CompareByCharacter(
+            aObject1.Character(), aObject2.Character() );
+}
+
+// ----------------------------------------------------------------------------
+// CPcsAdaptiveGridItem::Character
+// Return character of the Adaptive Grid Item 
+// ----------------------------------------------------------------------------
+TChar CPcsAdaptiveGridItem::Character( ) const
+{
+    return iCharacter;
+}
+
+// ----------------------------------------------------------------------------
+// CPcsAdaptiveGridItem::GetRefCounter
+// Return the reference counter for one selector 
+// ----------------------------------------------------------------------------
+TUint CPcsAdaptiveGridItem::GetRefCounter( const TUint aSelector )
+{
+    if ( aSelector < CPcsAdaptiveGridItem::ENumberCounters )
+        {
+        return iCountersArr[aSelector];
+        }
+    else
+        {
+        return 0;
+        }
+}
+
+// ----------------------------------------------------------------------------
+// CPcsAdaptiveGridItem::IncrementRefCounter
+// Increment the reference counter for one selector 
+// ----------------------------------------------------------------------------
+void CPcsAdaptiveGridItem::IncrementRefCounter( const TUint aSelector )
+{
+    if ( aSelector < CPcsAdaptiveGridItem::ENumberCounters )
+        {
+        iCountersArr[aSelector]++;
+        }
+}
+
+// ----------------------------------------------------------------------------
+// CPcsAdaptiveGridItem::DecrementRefCounter
+// Decrement the reference counter for one selector 
+// ----------------------------------------------------------------------------
+void CPcsAdaptiveGridItem::DecrementRefCounter( const TUint aSelector )
+{
+    if ( aSelector < CPcsAdaptiveGridItem::ENumberCounters )
+        {
+        if ( iCountersArr[aSelector] > 0 )
+            {
+            iCountersArr[aSelector]--;
+            }
+        else
+            {
+             PRINT2 ( _L("CPcsAdaptiveGridItem::DecrementRefCounter: ERROR Decrement ref counter 0, Character=%c, Selector=%d"),
+                      (TUint) Character(), aSelector );
+            }
+        }
+}
+
+// ----------------------------------------------------------------------------
+// CPcsAdaptiveGridItem::AreRefCountersZero
+// Check if reference counters for all selectors are 0 
+// ----------------------------------------------------------------------------
+TBool CPcsAdaptiveGridItem::AreRefCountersZero( )
+{
+    TBool retValue = ETrue;
+
+    for ( TInt i=0; i < CPcsAdaptiveGridItem::ENumberCounters; i++ )
+        {
+        if ( iCountersArr[i] > 0 )
+            {
+            retValue = EFalse;
+            break;
+            }
+        }
+
+    return retValue;
+}
+
+// ----------------------------------------------------------------------------
+// CPcsAdaptiveGridItem::IsRefCounterNonZero
+// Check if reference counters for all selectors are 0 
+// ----------------------------------------------------------------------------
+TBool CPcsAdaptiveGridItem::IsRefCounterNonZero( const TBool aCompanyName )
+{
+    TBool retValue = EFalse;
+
+    if ( iCountersArr[CPcsAdaptiveGridItem::EFirstNameLastName] > 0 || 
+         iCountersArr[CPcsAdaptiveGridItem::EUnnamedCompanyName] > 0 ||
+         ( aCompanyName && iCountersArr[CPcsAdaptiveGridItem::ECompanyName] > 0 ) )
+        {
+        retValue = ETrue;
+        }
+
+    return retValue;
+}
+
+// End of file