phonebookui/Phonebook2/ccapplication/ccacommlauncherplugin/src/ccappcommlaunchercustomlistbox.cpp
branchRCL_3
changeset 63 f4a778e096c2
child 64 c1e8ba0c2b16
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook2/ccapplication/ccacommlauncherplugin/src/ccappcommlaunchercustomlistbox.cpp	Wed Sep 01 12:29:52 2010 +0100
@@ -0,0 +1,161 @@
+/*
+* Copyright (c) 2009 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: 
+*
+*/
+/*
+ * ccappcommlaunchercustomlistbox.cpp
+ *
+ *  Created on: 2009-10-30
+ *      Author: dev
+ */
+
+// System includes
+#include <barsread.h>
+#include <aknlayoutscalable_apps.cdl.h>
+
+
+#include "ccappcommlaunchercustomlistbox.h"
+#include "ccappcommlaunchercustomlistboxitemdrawer.h"
+#include "ccappcommlaunchercustomlistboxdata.h"
+
+// --------------------------------------------------------------------------
+// CCCAppCommLauncherCustomListBox::CCCAppCommLauncherCustomListBox
+// --------------------------------------------------------------------------
+//
+inline CCCAppCommLauncherCustomListBox::CCCAppCommLauncherCustomListBox
+            () 
+    {
+    }
+
+// --------------------------------------------------------------------------
+// CCCAppCommLauncherCustomListBox::~CCCAppCommLauncherCustomListBox
+// --------------------------------------------------------------------------
+//
+CCCAppCommLauncherCustomListBox::~CCCAppCommLauncherCustomListBox()
+    {
+    
+    }
+
+// --------------------------------------------------------------------------
+// CCCAppCommLauncherCustomListBox::NewL
+// --------------------------------------------------------------------------
+//
+CCCAppCommLauncherCustomListBox* CCCAppCommLauncherCustomListBox::NewL()
+    {
+    CCCAppCommLauncherCustomListBox* self =
+        new ( ELeave ) CCCAppCommLauncherCustomListBox();
+    
+    return self;
+    }
+
+// --------------------------------------------------------------------------
+// CCCAppCommLauncherCustomListBox::CreateItemDrawerL
+// --------------------------------------------------------------------------
+//
+void CCCAppCommLauncherCustomListBox::CreateItemDrawerL()
+    {    
+    CCCAppCommLauncherCustomListBoxData* columnData = CCCAppCommLauncherCustomListBoxData::NewL();
+
+    CleanupStack::PushL( columnData );  
+    
+    iItemDrawer = new (ELeave) CCCAppCommLauncherCustomListBoxItemDrawer(
+            static_cast<MTextListBoxModel*>(Model()), iCoeEnv->NormalFont(), 
+            columnData);
+    CleanupStack::Pop( columnData );
+    
+    //Ownership has been transferred to iItemDrawer
+    iColumnData = columnData;
+    }
+// --------------------------------------------------------------------------
+// CCCAppCommLauncherCustomListBox::SizeChanged
+// --------------------------------------------------------------------------
+//
+void CCCAppCommLauncherCustomListBox::SizeChanged()
+	{
+	CAknDoubleLargeStyleListBox::SizeChanged();
+	TRAP_IGNORE( SizeChangedL() );
+	}
+
+// --------------------------------------------------------------------------
+// CCCAppCommLauncherCustomListBox::SizeChangedL
+// --------------------------------------------------------------------------
+//
+void CCCAppCommLauncherCustomListBox::SizeChangedL()
+	{
+	// Text format: "0\tCommunicationName\tContent\t1\t2"
+	// Icons: 
+	//  0: Communication method icon
+	//  1: Presence icon
+	//  2: Multi indication icon 
+	//
+	// Layout: list_double_large_graphic_phob2_cc_pane
+	// ------------------------------------------------
+	// |       |                                      |
+	// |       | Communication method name      [1]   |
+	// |  [0]  |                                      |
+	// |       | Content                        [2]   |
+	// |       |                                      |
+	// ------------------------------------------------
+	//
+	
+	// Calculate listbox rect
+    TAknWindowComponentLayout listPaneLayout( TAknWindowComponentLayout::Compose(
+        AknLayoutScalable_Apps::phob2_cc_listscroll_pane( 0 ),
+        TAknWindowComponentLayout::Compose( 
+            AknLayoutScalable_Apps::phob2_cc_list_pane( 0 ), 
+            AknLayoutScalable_Apps::list_double_large_graphic_phob2_cc_pane( 0 ) ) ) );    
+  
+    TAknLayoutRect listPaneLayoutRect;
+    listPaneLayoutRect.LayoutRect( TRect( Size() ), listPaneLayout.LayoutLine() );
+    TRect listPaneRowRect( listPaneLayoutRect.Rect() );
+    
+    // Set listbox item height
+    SetItemHeightL( listPaneRowRect.Height() );
+    iItemDrawer->SetItemCellSize( listPaneRowRect.Size() );
+    
+
+	// Reset sub cell array	
+	iColumnData->ResetSLSubCellArray();
+			  
+	// Comm method icon	
+	TAknWindowLineLayout gl( AknLayoutScalable_Apps::list_double_large_graphic_phob2_cc_pane_g1( 0 ) );
+	iColumnData->SetGraphicSubCellL( 0, gl );
+	
+	// Line 1 text
+	TAknTextComponentLayout textLayout = AknLayoutScalable_Apps::list_double_large_graphic_phob2_cc_pane_t1( 0 );
+	iColumnData->SetTextSubCellL( 1, textLayout );
+	
+	// Line 2 text
+	TAknTextComponentLayout textLayout2 = AknLayoutScalable_Apps::list_double_large_graphic_phob2_cc_pane_t2( 0 );
+	iColumnData->SetTextSubCellL( 2, textLayout2 );
+	
+	// Presence icon
+	TAknWindowLineLayout g2( AknLayoutScalable_Apps::list_double_large_graphic_phob2_cc_pane_g2( 0 ) );
+	iColumnData->SetGraphicSubCellL( 3, g2 );
+	
+	// Multi indication icon
+	TAknWindowLineLayout g3( AknLayoutScalable_Apps::list_double_large_graphic_phob2_cc_pane_g3( 0 ) );
+	iColumnData->SetGraphicSubCellL( 4, g3 );
+	
+	// Conditional subcells must be added in priority order!
+	// Line 1 text variation for 1 post icon
+	TAknTextComponentLayout textLayout3 = AknLayoutScalable_Apps::list_double_large_graphic_phob2_cc_pane_t1( 2 );
+	iColumnData->SetConditionalSubCellL( 3, textLayout3, 1 );
+	
+	// Line 2 text variation for 2 post icon
+	TAknTextComponentLayout textLayout4 = AknLayoutScalable_Apps::list_double_large_graphic_phob2_cc_pane_t2( 2 );
+	iColumnData->SetConditionalSubCellL( 4, textLayout4, 2 );
+	
+	}