uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestlist/src/bctestlistcolumnbasecase.cpp
changeset 0 2f259fa3e83a
child 23 3d340a0166ff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestlist/src/bctestlistcolumnbasecase.cpp	Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,436 @@
+/*
+* Copyright (c) 2006 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:  test case for list view and item drawer classes
+*
+*/
+
+
+#include <w32std.h>
+#include <eikenv.h>
+#include <aknlists.h>
+#include <barsread.h>
+#include <akndef.h>
+#include <aknsconstants.h>
+#include <eiktxlbm.h>
+#include <eikclbd.h>
+
+#include "bctestlistcolumnbasecase.h"
+#include "bctestlistcontainer.h"
+#include "bctestlist.hrh"
+#include <bctestlist.rsg>
+
+_LIT( KColumnBaseCreate, "Create CEikColumnListBox" );
+
+_LIT( KColumnListTest1, "CEikColumnListBox::EditItemL" );
+_LIT( KColumnListTest2, "CEikColumnListBox::GetColorUseListL" );
+_LIT( KColumnListTest3, "CEikColumnListBox::HandleResourceChange" );
+_LIT( KColumnListTest4, "CEikColumnListBox::FocusChanged" );
+_LIT( KColumnListTest5, "CAknColumnListBox::MakeViewClassInstanceL" );
+_LIT( KColumnListTest6, "CEikColumnListBox::MakeViewClassInstanceL" );
+
+_LIT( KColumnItemDrawerTest1, "CColumnListBoxItemDrawer::ClearAllPropertiesL" );
+_LIT( KColumnItemDrawerTest2, "CColumnListBoxItemDrawer::SetPropertiesL" );
+_LIT( KColumnItemDrawerTest3, "CColumnListBoxItemDrawer::ItemWidthInPixels" );
+_LIT( KColumnItemDrawerTest4, "CColumnListBoxItemDrawer::DrawItemMark" );
+
+_LIT( KColumnEditorTest1, "CEikColumnListBoxEditor::ConstructL" );
+_LIT( KColumnEditorTest2, "CEikColumnListBoxEditor::ItemText" );
+_LIT( KColumnEditorTest3, "CEikColumnListBoxEditor::UpdateModelL" );
+_LIT( KColumnEditorTest4, "CEikColumnListBoxEditor::Column" );
+_LIT( KColumnEditorTest5, "CEikColumnListBoxEditor::HandlePointerEventL" );
+
+_LIT( KColumnDataTest1, "CColumnListBoxData::SetSkinEnabledL" );
+_LIT( KColumnDataTest2, "CColumnListBoxData::SetSkinHighlightFrame" );
+_LIT( KColumnDataTest3, "CColumnListBoxData::EnableMarqueeL" );
+_LIT( KColumnDataTest4, "CColumnListBoxData::SetColumnHorizontalGapL" );
+_LIT( KColumnDataTest5, "CColumnListBoxData::ColumnHorizontalGap" );
+_LIT( KColumnDataTest6, "CColumnListBoxData::MakeColumnRect" );
+_LIT( KColumnDataTest7, "CColumnListBoxData::SetColumnFontForRowL" );
+_LIT( KColumnDataTest8, "CColumnListBoxData::SetMarqueeParams" );
+_LIT( KColumnDataTest9, "CColumnListBoxData::SetColumnUnderlined" );
+_LIT( KColumnDataTest10, "CColumnListBoxData::HighlightAnim" );
+_LIT( KColumnDataTest11, "CColumnListBoxData::SetHighlightAnimBackgroundDrawer" );
+_LIT( KColumnDataTest12, "CColumnListBoxData::AboutToDrawHighlightAnim" );
+_LIT( KColumnDataTest13, "CColumnListBoxData::ConstructLD" );
+_LIT( KColumnDataTest14, "CColumnListBoxData::DrawText" );
+_LIT( KColumnDataText, "Test text for DrawText" );
+_LIT( KClippedText, "Test text" );
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// Symbian 2nd static Constructor
+// ---------------------------------------------------------------------------
+//
+CBCTestListColumnBaseCase* CBCTestListColumnBaseCase::NewL( 
+    CBCTestListContainer* aContainer, CEikonEnv* aEikEnv )
+    {
+    CBCTestListColumnBaseCase* self = new( ELeave ) CBCTestListColumnBaseCase( 
+        aContainer, aEikEnv );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+    
+// ---------------------------------------------------------------------------
+// C++ default constructor
+// ---------------------------------------------------------------------------
+//
+CBCTestListColumnBaseCase::CBCTestListColumnBaseCase( CBCTestListContainer* aContainer,
+    CEikonEnv* aEikEnv )
+    : CBCTestListBaseCase( aContainer, aEikEnv )
+    {    
+    }
+    
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CBCTestListColumnBaseCase::~CBCTestListColumnBaseCase()
+    {      
+    delete iBCData;
+    }
+    
+// ---------------------------------------------------------------------------
+// Symbian 2nd Constructor
+// ---------------------------------------------------------------------------
+//
+void CBCTestListColumnBaseCase::ConstructL()
+    {    
+    BuildScriptL(); 
+    
+    iBCData = new( ELeave ) CBCTestColumnListBoxData();
+    }
+    
+// ---------------------------------------------------------------------------
+// CBCTestListColumnBaseCase::BuildScriptL
+// ---------------------------------------------------------------------------
+//
+void CBCTestListColumnBaseCase::BuildScriptL()
+    {    
+    for ( TInt i=0; i <= EBCTestCmdOutline47 - EBCTestCmdOutline45; i++ )
+        {
+        AddTestL( LeftCBA, REP( Down, 6 ), KeyOK, TEND );
+        AddTestL( REP( Down, i ), KeyOK, TEND );
+        }      
+    }
+    
+// ---------------------------------------------------------------------------
+// CBCTestListColumnBaseCase::RunL
+// ---------------------------------------------------------------------------
+//
+void CBCTestListColumnBaseCase::RunL( TInt aCmd )
+    {
+    if ( aCmd < EBCTestCmdOutline45 || aCmd > EBCTestCmdOutline47 )
+        {
+        return;
+        }
+    ReleaseCase();
+    PrepareCaseL( aCmd );
+    switch ( aCmd )
+        {
+        case EBCTestCmdOutline45:
+            TestColumnListL();
+            break;
+        case EBCTestCmdOutline46:
+            TestColumnItemDrawerAndEditorL();
+            break;
+        case EBCTestCmdOutline47:
+            TestColumnListDataL();
+            break;
+        default:
+            break;    
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CBCTestListColumnBaseCase::PrepareCaseL
+// ---------------------------------------------------------------------------
+//
+void CBCTestListColumnBaseCase::PrepareCaseL( TInt )
+    {
+    iListBox = new( ELeave ) CAknSingleStyleListBox();
+    AssertNotNullL( iListBox, KColumnBaseCreate );
+    TInt resourceId = R_BCTESTLIST_SINGLE_1_ADD_RM;
+    SetListBoxFromResourceL( iListBox, resourceId );    
+    
+    iContainer->SetControl( iListBox );
+    }
+
+// ---------------------------------------------------------------------------
+// CBCTestListColumnBaseCase::ReleaseCaseL
+// ---------------------------------------------------------------------------
+//   
+void CBCTestListColumnBaseCase::ReleaseCase()
+    {
+    iContainer->ResetControl();
+    iListBox = NULL;
+    }    
+
+// ---------------------------------------------------------------------------
+// CBCTestListColumnBaseCase::TestColumnListL
+// ---------------------------------------------------------------------------
+// 
+void CBCTestListColumnBaseCase::TestColumnListL()
+    {    
+    TInt maxLength = 3;
+    iListBox->EditItemL( 0, maxLength );
+    iListBox->StopEditingL( 0 );
+    AssertTrueL( ETrue, KColumnListTest1 );
+    
+    TInt granularity = 4;
+    CArrayFixFlat<TCoeColorUse>* colorUseList = new( ELeave ) 
+        CArrayFixFlat<TCoeColorUse>( granularity );
+    CleanupStack::PushL( colorUseList );
+    iListBox->GetColorUseListL( *colorUseList );
+    AssertTrueL( ( colorUseList->Count() > 0 ),  KColumnListTest2 );
+    colorUseList->Reset();
+    CleanupStack::PopAndDestroy( colorUseList );
+    
+    iListBox->HandleResourceChange( KAknsMessageSkinChange );    
+    iListBox->HandleResourceChange( KEikDynamicLayoutVariantSwitch );
+    AssertTrueL( ETrue, KColumnListTest3 );
+        
+    iListBox->FocusChanged( EDrawNow );
+    iListBox->FocusChanged( ENoDrawNow );
+    AssertTrueL( ETrue, KColumnListTest4 );    
+    
+    CListBoxView* view = iListBox->MakeViewClassInstanceL();
+    AssertNotNullL( view, KColumnListTest5 );
+    delete view;
+    
+    CEikColumnListBox* columnList = new( ELeave ) CEikColumnListBox();
+    CleanupStack::PushL( columnList );
+    TInt resourceId = R_BCTESTLIST_SINGLE_1_ADD_RM;
+    SetListBoxFromResourceL( columnList, resourceId );    
+    view = columnList->MakeViewClassInstanceL();
+    AssertNotNullL( view, KColumnListTest6 );    
+    delete view;
+    columnList->EditItemL( 0, 1 );
+    columnList->StopEditingL( EFalse );
+    CleanupStack::PopAndDestroy( columnList );
+    
+    CEikColumnListBox* listBox = new( ELeave ) CEikColumnListBox();
+    CleanupStack::PushL( listBox );
+    listBox->ConstructL( iContainer );
+    view = listBox->MakeViewClassInstanceL();
+    delete view;
+    CleanupStack::PopAndDestroy( listBox );
+    }
+    
+// ---------------------------------------------------------------------------
+// CBCTestListColumnBaseCase::TestColumnItemDrawerAndEditorL
+// ---------------------------------------------------------------------------
+// 
+void CBCTestListColumnBaseCase::TestColumnItemDrawerAndEditorL()
+    {
+    // for column item drawer    
+    CColumnListBoxItemDrawer* itemDrawer = iListBox->ItemDrawer();
+    
+    itemDrawer->ClearAllPropertiesL();
+    AssertTrueL( ETrue, KColumnItemDrawerTest1 );    
+    
+    TListItemProperties itemProp;
+    itemProp.SetBold( ETrue );
+    itemProp.SetItalics( ETrue );
+    itemProp.SetUnderlined( ETrue );
+    itemProp.SetDimmed( ETrue );
+    itemProp.SetColor( KRgbGray );
+    itemProp.SetSeparatorAfter( ETrue ); 
+    itemDrawer->SetPropertiesL( 0, itemProp );
+    AssertTrueL( ETrue, KColumnItemDrawerTest2 );    
+    
+    TInt width = itemDrawer->ItemWidthInPixels( 0 );
+    AssertTrueL( ETrue, KColumnItemDrawerTest3 );    
+    
+    TPoint pt( 0, 0 );
+    itemDrawer->DrawItemMark( ETrue, EFalse, pt );
+    AssertTrueL( ETrue, KColumnItemDrawerTest4 );
+    
+    // for column list editor
+    CBCTestColumnListBoxEditor* editor = new( ELeave ) 
+        CBCTestColumnListBoxEditor( iListBox->Model() );
+    CleanupStack::PushL( editor );
+    
+    editor->ConstructL( 0 );
+    AssertTrueL( ETrue, KColumnEditorTest1 );
+    
+    TPtrC text = editor->ItemText();
+    AssertTrueL( ETrue, KColumnEditorTest2 );
+        
+    TBool update = editor->UpdateModelL();
+    AssertTrueL( ETrue, KColumnEditorTest3 );
+        
+    TInt column = editor->Column();
+    AssertTrueL( ETrue, KColumnEditorTest4 );
+    
+    TPointerEvent event;
+    event.iType = TPointerEvent::EButton1Down;
+    event.iModifiers = 0;
+    TPoint eventPos(0, 30);
+    event.iPosition = eventPos;
+    event.iParentPosition = eventPos;
+    editor->HandlePointerEventL( event );
+    AssertTrueL( ETrue, KColumnEditorTest5 );    
+    
+    CleanupStack::PopAndDestroy( editor ); 
+    }
+    
+// ---------------------------------------------------------------------------
+// CBCTestListColumnBaseCase::TestColumnListDataL
+// ---------------------------------------------------------------------------
+// 
+void CBCTestListColumnBaseCase::TestColumnListDataL()
+    {
+    CColumnListBoxData* data = iListBox->ItemDrawer()->ColumnData();
+    data->SetSkinEnabledL( ETrue );
+    AssertTrueL( ETrue, KColumnDataTest1 );
+    
+    TAknsItemID id;
+    id.Set( KAknsIIDDefault );
+    data->SetSkinHighlightFrame( &id, &id );
+    AssertTrueL( ETrue, KColumnDataTest2 );
+        
+    data->EnableMarqueeL( ETrue );
+    AssertTrueL( ETrue, KColumnDataTest3 );
+#ifdef __S60_32__     
+    iListBox->SetCurrentItemIndex( 0 );//item 1
+    
+    TUint32 tInt = data->CurrentItemTextWasClipped();
+    _LIT( KColumnDataTest35, "Test CurrentItemTextWasClipped() at long item" ); 
+    AssertTrueL( ETrue, KColumnDataTest35 );
+    iListBox->SetCurrentItemIndex( 1 );//item 2
+    tInt = data->CurrentItemTextWasClipped();
+    _LIT( KColumnDataTest36, "Test CurrentItemTextWasClipped() at short item" ); 
+    AssertTrueL( ETrue, KColumnDataTest36 );    
+    iListBox->DrawNow();
+#endif //__S60_32__
+    TInt setGap = 5;
+    data->SetColumnHorizontalGapL( 0, setGap );
+    AssertTrueL( ETrue, KColumnDataTest4 );
+
+    TInt gap = data->ColumnHorizontalGap( 0 );
+    AssertIntL( setGap, gap, KColumnDataTest5 );
+    
+    TRect rect = iContainer->Rect();
+    rect.iBr.iX /= 2;
+    TBool setRect = data->MakeColumnRect( 0, rect );
+    AssertTrueL( setRect, KColumnDataTest6 );
+    
+    data->SetColumnFontForRowL( 0, 0, iEikEnv->NormalFont() );
+    AssertTrueL( setRect, KColumnDataTest7 );
+    
+    data->SetMarqueeParams( 1, 6, 1000000 );
+    data->SetMarqueeParams( 2, 8, 1000000, 100000 );
+    AssertTrueL( setRect, KColumnDataTest8 );
+    
+    TBitFlags32 flags;
+    data->SetColumnUnderlined( flags );
+    AssertTrueL( setRect, KColumnDataTest9 );
+    
+    data->HighlightAnim();
+    AssertTrueL( setRect, KColumnDataTest10 );
+    
+    data->SetHighlightAnimBackgroundDrawer( &iDrawer );
+    AssertTrueL( setRect, KColumnDataTest11 );
+    
+    data->AboutToDrawHighlightAnim();
+    AssertTrueL( setRect, KColumnDataTest12 );
+        
+    iBCData->TestConstructLD( id );
+    AssertTrueL( setRect, KColumnDataTest13 );
+        
+    iContainer->ActivateGc();
+    CWindowGc& gc = iContainer->SystemGc();
+    gc.UseFont( iEikEnv->NormalFont() );
+    
+    rect = iContainer->Rect();
+    rect.iBr.iX = rect.iTl.iX + 
+        iListBox->ItemDrawer()->ItemCellSize().iWidth;
+    rect.iBr.iY = rect.iTl.iY + 
+        iListBox->ItemDrawer()->ItemCellSize().iHeight;        
+    iBCData->SetControl( iListBox );
+    iBCData->TestDrawText( gc, rect,  KColumnDataText, KClippedText, 
+        0, CGraphicsContext::ELeft, *iEikEnv->NormalFont(), ETrue, EFalse ); 
+    AssertTrueL( ETrue, KColumnDataTest14 );
+    
+    iContainer->DeactivateGc();
+    }
+    
+// ======== MEMBER FUNCTIONS ========
+// CBCTestColumnListBoxData
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CBCTestColumnListBoxData::CBCTestColumnListBoxData()
+    {    
+    }
+    
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CBCTestColumnListBoxData::~CBCTestColumnListBoxData()
+    {    
+    }
+    
+// ---------------------------------------------------------------------------
+// CBCTestColumnListBoxData::ConstructLD
+// ---------------------------------------------------------------------------
+//
+void CBCTestColumnListBoxData::TestConstructLD( 
+    const TAknsItemID& aAnimationIID )
+    {
+    CColumnListBoxData::ConstructLD( aAnimationIID );
+    }
+    
+// ---------------------------------------------------------------------------
+// CBCTestColumnListBoxData::TestDrawText
+// ---------------------------------------------------------------------------
+//
+void CBCTestColumnListBoxData::TestDrawText( 
+    CWindowGc& aGc, const TRect& aTextRect, 
+    const TDesC& aText, const TDesC& aClippedText, const TInt aBaselineOffset,
+	const CGraphicsContext::TTextAlign aAlign, const CFont& aFont,
+	const TBool aHighlight, const TBool aIsTextClipped )
+    {
+    DrawText( aGc, aTextRect, aText, aClippedText, 
+            aBaselineOffset, aAlign, aFont, aHighlight, aIsTextClipped );    
+    }
+    
+// ======== MEMBER FUNCTIONS ========
+// TBCTestListBoxAnimBgDrawer
+
+// ---------------------------------------------------------------------------
+// TBCTestListBoxAnimBgDrawer::DrawHighlightAnimBackground
+// ---------------------------------------------------------------------------
+//
+TBool TBCTestListBoxAnimBgDrawer::
+    DrawHighlightAnimBackground( CFbsBitGc& ) const
+    {
+    return ETrue;
+    }
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CBCTestListBoxAnimBgDrawer::DrawHighlightAnimBackground
+// ---------------------------------------------------------------------------
+//
+CBCTestColumnListBoxEditor::CBCTestColumnListBoxEditor( 
+    MListBoxModel* aModel ): CEikColumnListBoxEditor( aModel )
+    {    
+    }