browserutilities/browserdialogsprovider/Src/BrowserSelectElementItemDrawer.cpp
changeset 0 dd21522fd290
child 36 0ed94ceaa377
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browserutilities/browserdialogsprovider/Src/BrowserSelectElementItemDrawer.cpp	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,199 @@
+/*
+* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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: 
+*
+*
+*/
+
+
+// INCLUDE FILES
+#include "BrowserSelectElementItemDrawer.h"
+#include "BrowserSelectElementModel.h"
+#include "BrCtlDialogsProvider.h"
+
+#include <gulicon.h>
+#include <AknIconArray.h>
+#include <AknsUtils.h>
+
+#include <data_caging_path_literals.hrh>
+
+// CONSTANTS
+#include "BrowserDialogsProviderConstants.h"
+
+
+// ================= MEMBER FUNCTIONS =========================================
+
+// ----------------------------------------------------------------------------
+// CBrowserSelectElementItemDrawer::CBrowserSelectElementItemDrawer
+// ----------------------------------------------------------------------------
+//
+CBrowserSelectElementItemDrawer::CBrowserSelectElementItemDrawer(
+							MTextListBoxModel& aTextListBoxModel,
+							const CFont& aFont,
+							CFormattedCellListBoxData& aFormattedCellData,
+							TBrCtlSelectOptionType aBrCtlSelectOptionType,
+							const CArrayFix<TBrCtlSelectOptionData>& aOptions )
+				: 
+				CFormattedCellListBoxItemDrawer( &aTextListBoxModel,
+													&aFont,
+													&aFormattedCellData ),
+				iOptions( aOptions ),
+				iBrCtlSelectOptionType( aBrCtlSelectOptionType )
+	{
+	}
+
+// ---------------------------------------------------------
+// CBrowserSelectElementItemDrawer::LoadIconsL
+// ---------------------------------------------------------
+//
+void CBrowserSelectElementItemDrawer::LoadIconsL()
+	{
+	TInt selected;
+	TInt selectedm;
+	TInt deselected;
+	TInt deselectedm;
+	CGulIcon* newIcon;
+	CGulIcon* icon;
+	CFbsBitmap *newIconBmp;
+	CFbsBitmap *newIconMaskBmp;
+	TAknsItemID selectOn(KAknsIIDQgnPropCheckboxOn);
+	TAknsItemID selectOff(KAknsIIDQgnPropCheckboxOff);
+
+	// selected option
+	CArrayPtrFlat<CGulIcon>* icons =
+					new ( ELeave ) CAknIconArray( KGranularityMedium );
+	CleanupStack::PushL( icons );
+
+	if ( iBrCtlSelectOptionType != ESelectTypeMultiple )
+		{
+		selected = EMbmAvkonQgn_prop_radiobutt_on;
+		selectedm = EMbmAvkonQgn_prop_radiobutt_on_mask;
+		deselected = EMbmAvkonQgn_prop_radiobutt_off;
+		deselectedm = EMbmAvkonQgn_prop_radiobutt_off_mask;
+		selectOn = KAknsIIDQgnPropRadiobuttOn;
+		selectOff = KAknsIIDQgnPropRadiobuttOff;
+		}
+	else
+		{
+		selected = EMbmAvkonQgn_prop_checkbox_on;
+		selectedm = EMbmAvkonQgn_prop_checkbox_on_mask;
+		deselected = EMbmAvkonQgn_prop_checkbox_off;
+		deselectedm = EMbmAvkonQgn_prop_checkbox_off_mask;
+		}
+
+    TParse* fp = new(ELeave) TParse(); 
+
+    TInt err = fp->Set( AknIconUtils::AvkonIconFileName(), 
+                        &KDC_RESOURCE_FILES_DIR, 
+                        NULL ); 
+    if ( err != KErrNone)
+        {
+        User::Leave( err );
+        }   
+
+    TFileName fileName = fp->FullName();
+    delete fp;
+
+	AknsUtils::CreateIconL( AknsUtils::SkinInstance(),
+                                           selectOn,
+                                           newIconBmp,
+										   newIconMaskBmp,
+                                           fileName,
+                                           selected,
+										   selectedm);    
+	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
+    CleanupStack::PushL( newIcon );
+	icons->AppendL( newIcon );
+    CleanupStack::Pop( newIcon );
+
+	AknsUtils::CreateIconL( AknsUtils::SkinInstance(),
+                                           selectOff,
+                                           newIconBmp,
+										   newIconMaskBmp,
+                                           fileName,
+                                           deselected,
+										   deselectedm);    
+	newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
+    CleanupStack::PushL( newIcon );
+	icons->AppendL( newIcon );
+    CleanupStack::Pop( newIcon );
+
+	// optiongroup
+	CFbsBitmap* bitmap = new ( ELeave ) CFbsBitmap;
+	CleanupStack::PushL( bitmap );
+    CleanupStack::PushL( newIcon );
+	User::LeaveIfError( bitmap->Create(TSize(1,1),EColor64K));
+    CleanupStack::Pop( newIcon );
+
+    CFbsBitmap* mask = new ( ELeave ) CFbsBitmap;
+	CleanupStack::PushL( mask );
+	User::LeaveIfError( mask->Create(TSize(1,1),EGray2));
+	
+	icon = CGulIcon::NewL( bitmap, mask );
+	CleanupStack::PushL( icon );
+	icons->AppendL( icon );
+	
+    CleanupStack::Pop( icon );
+	
+	CleanupStack::Pop( mask );
+    CleanupStack::Pop( bitmap );
+
+	CleanupStack::Pop( icons );
+	ColumnData()->SetIconArray( icons );
+	}
+
+// ----------------------------------------------------------------------------
+// CBrowserSelectElementItemDrawer::DrawItem
+// ----------------------------------------------------------------------------
+//
+void CBrowserSelectElementItemDrawer::DrawItem( TInt aItemIndex,
+	                                            TPoint aItemRectPos,
+	                                            TBool aItemIsSelected,
+	                                            TBool aItemIsCurrent,
+	                                            TBool aViewIsEmphasized,
+	                                            TBool aViewIsDimmed ) const
+	{
+	TBool selected = aItemIsSelected;
+	TBool currentIsOptGr = EFalse; 
+
+	if( ((CBrowserSelectElementModel*)iModel)->Filter() )
+		{
+		if ((iOptions.At(((CBrowserSelectElementModel*)iModel)->Filter()
+		->FilteredItemIndex(aItemIndex)).IsOptGroup() ))
+			{ 
+			currentIsOptGr = ETrue;
+			selected = EFalse;
+			}
+		}
+
+	CFormattedCellListBoxItemDrawer::DrawItem(
+		aItemIndex,
+		aItemRectPos,
+		selected,
+		aItemIsCurrent,
+		aViewIsEmphasized,
+		aViewIsDimmed );
+
+	// this separator isn't specified in details
+	if ( aItemIndex && currentIsOptGr )
+		{
+		iGc->SetPenColor( AKN_LAF_COLOR( KBrCtlOptgroupSeparatorColor ) );
+		iGc->DrawLine( aItemRectPos + TSize( KBrCtlOptgroupSeparatorOffsetX1 ,
+											 KBrCtlOptgroupSeparatorOffsetY ),
+					   aItemRectPos + TSize( KBrCtlOptgroupSeparatorOffsetX2 ,
+											 KBrCtlOptgroupSeparatorOffsetY ) );
+		}
+	}
+
+// End of file