uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestlist/src/bctestlistselectioncase.cpp
changeset 0 2f259fa3e83a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestlist/src/bctestlistselectioncase.cpp	Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,357 @@
+/*
+* 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 selection list dialog classes
+*
+*/
+
+
+#include <w32std.h>
+#include <eikenv.h>
+
+#include "bctestlistselectioncase.h"
+#include "bctestlistcontainer.h"
+#include "bctestlist.hrh"
+#include <bctestlist.rsg>
+#include <bctestlist.mbg>
+
+_LIT( KSelectNewL, "CAknSelectionListDialog::NewL" );
+_LIT( KSelSetFind, "CAknMarkableListDialog::SetupFind" );
+_LIT( KSelSetIconArray, "CAknSelectionListDialog::SetIconArrayL" );
+_LIT( KSelHandleListEvent, "CAknSelectionListDialog::HandleListBoxEventL" );
+_LIT( KSelSelListProcCmd, "CAknSelectionListDialog::SelectionListProcessCommandL" );
+_LIT( KSelProcCmd, "CAknSelectionListDialog::ProcessCommandL" );
+_LIT( KSelCustomCtrl, "CAknSelectionListDialog::CreateCustomControlL" );
+_LIT( KSelDraw, "CAknSelectionListDialog::Draw" );
+
+_LIT( KMarkedNewL, "CAknMarkableListDialog::NewL" );
+_LIT( KSelHandlePointer, "CAknMarkableListDialog::HandlePointerEventL" );
+_LIT( KSelPreLayout, "CAknMarkableListDialog::PreLayoutDynInitL" );
+_LIT( KMarSelListProcCmd, "CAknMarkableListDialog::SelectionListProcessCommandL" );
+_LIT( KMarPreProcCmd, "CAknMarkableListDialog::ProcessCommandL" );
+_LIT( KSelDynMenPane, "CAknMarkableListDialog::DynInitMenuPaneL" );
+_LIT( KMarHandleListEvent, "CAknMarkableListDialog::HandleListBoxEventL" );
+_LIT( KMarOfferKey, "CAknMarkableListDialog::OfferKeyEventL" );
+_LIT( KMarPostLayout, "CAknMarkableListDialog::PostLayoutDynInitL" );
+_LIT( KMarOK, "CAknMarkableListDialog::OkToExitL" );
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// Symbian 2nd static Constructor
+// ---------------------------------------------------------------------------
+//
+CBCTestListSelectionCase* CBCTestListSelectionCase::NewL( 
+    CBCTestListContainer* aContainer, CEikonEnv* aEikEnv )
+    {
+    CBCTestListSelectionCase* self = new( ELeave ) CBCTestListSelectionCase( 
+        aContainer, aEikEnv );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+    
+// ---------------------------------------------------------------------------
+// C++ default constructor
+// ---------------------------------------------------------------------------
+//
+CBCTestListSelectionCase::CBCTestListSelectionCase( CBCTestListContainer* aContainer,
+    CEikonEnv* aEikEnv )
+    : CBCTestListBaseCase( aContainer, aEikEnv )
+    {    
+    }
+    
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CBCTestListSelectionCase::~CBCTestListSelectionCase()
+    {  
+    }
+    
+// ---------------------------------------------------------------------------
+// Symbian 2nd Constructor
+// ---------------------------------------------------------------------------
+//
+void CBCTestListSelectionCase::ConstructL()
+    {    
+    BuildScriptL();    
+    }
+    
+// ---------------------------------------------------------------------------
+// CBCTestListSelectionCase::BuildScriptL
+// ---------------------------------------------------------------------------
+//
+void CBCTestListSelectionCase::BuildScriptL()
+    {    
+    for ( TInt i=0; i <= EBCTestCmdOutline57 - EBCTestCmdOutline56; i++ )
+        {
+        AddTestL( LeftCBA, REP( Down, 9 ), KeyOK, TEND );
+        AddTestL( REP( Down, i ), KeyOK, TEND );
+        }      
+    }
+    
+// ---------------------------------------------------------------------------
+// CBCTestListSelectionCase::RunL
+// ---------------------------------------------------------------------------
+//
+void CBCTestListSelectionCase::RunL( TInt aCmd )
+    {
+    if ( aCmd < EBCTestCmdOutline56 || aCmd > EBCTestCmdOutline57 )
+        {
+        return;
+        }
+    ReleaseCase();
+    switch ( aCmd )  
+        {
+        case EBCTestCmdOutline56:
+            TestMarkableListDialogL();       
+            break;
+        case EBCTestCmdOutline57:
+            TestSelectionListDialogL();
+            break;
+        default:
+            break;
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CBCTestListSelectionCase::ReleaseCaseL
+// ---------------------------------------------------------------------------
+//   
+void CBCTestListSelectionCase::ReleaseCase()
+    {
+    iContainer->ResetControl();    
+    }
+
+// ---------------------------------------------------------------------------
+// Test CAknSelectionListDialog
+// ---------------------------------------------------------------------------
+//
+
+void CBCTestListSelectionCase::TestSelectionListDialogL()
+    {
+    TInt value( -1 );    
+    CArrayFix<TInt>* markedItems = new( ELeave ) CArrayFixFlat<TInt>( 2 );
+    CleanupStack::PushL( markedItems );
+    CDesCArray* textArray = NULL;   
+    textArray = iEikEnv->ReadDesCArrayResourceL( R_BCTESTLIST_ITEM_SINGLE1 );
+    CleanupStack::PushL( textArray );
+    
+    // test CAknSelectionListDialog::NewL
+    CAknSelectionListDialog* selDlg = CAknSelectionListDialog::NewL(
+        value, textArray, R_AVKON_DIALOG_EMPTY_MENUBAR, NULL );
+    CleanupStack::PushL( selDlg );    
+    AssertNotNullL( selDlg, KSelectNewL );    
+    CleanupStack::PopAndDestroy( selDlg );    
+    
+    // test API of CAknSelectionListDialog
+    CBCSelectionListDialog* dlg = CBCSelectionListDialog::NewL( value, 
+        textArray );    
+    dlg->PrepareLC( R_BCTESTLIST_SINGLE_SELECTION_LIST_DIALOG );
+    
+    dlg->SetupFind( CAknSelectionListDialog::EFixedFind );    
+    AssertTrueL( ETrue, KSelSetFind );
+    
+    CArrayPtr<CGulIcon>* icons = new( ELeave ) CArrayPtrFlat<CGulIcon>(
+            KBCTestListGraphicGulIconIndex );
+    CleanupStack::PushL( icons );    
+    GraphicIconL( icons );
+    dlg->SetIconArrayL( icons );
+    CArrayPtr<CGulIcon>* getIcons = dlg->IconArray();    
+    AssertTrueL( ( getIcons == icons ), KSelSetIconArray );
+    CleanupStack::Pop( icons );
+    
+    dlg->SetSizeAndPosition( iContainer->Rect().Size() );
+    
+    dlg->HandleListBoxEventL( 
+        dlg->ListBox(), 
+        MEikListBoxObserver::EEventEnterKeyPressed );    
+    AssertTrueL( ETrue, KSelHandleListEvent );
+    
+    dlg->SelectionListProcessCommandL( EAknMarkAll );    
+    AssertTrueL( ETrue, KSelSelListProcCmd );
+    
+    dlg->ProcessCommandL( EAknUnmarkAll );    
+    AssertTrueL( ETrue, KSelProcCmd );
+    
+    SEikControlInfo info = dlg->CreateCustomControlL( 
+        EAknCtSingleNumberListBox );
+    AssertTrueL( ETrue, KSelCustomCtrl );
+    delete info.iControl;
+    
+    TRect rect = iContainer->Rect();
+    dlg->Draw( rect );
+    AssertTrueL( ETrue, KSelDraw );
+    
+    CleanupStack::PopAndDestroy(); // for PrepareLC 
+    CleanupStack::PopAndDestroy( textArray );
+    CleanupStack::PopAndDestroy( markedItems );
+    }
+
+// ---------------------------------------------------------------------------
+// Test CAknMarkableListDialog
+// ---------------------------------------------------------------------------
+//
+void CBCTestListSelectionCase::TestMarkableListDialogL()
+    {
+    TInt value( -1 );    
+    CArrayFix<TInt>* markedItems = new( ELeave ) CArrayFixFlat<TInt>( 2 );
+    CleanupStack::PushL( markedItems );
+    CDesCArray* textArray = NULL;
+   
+    textArray = iEikEnv->ReadDesCArrayResourceL( R_BCTESTLIST_ITEM_SINGLE1 );
+    CleanupStack::PushL( textArray );
+    
+    // test CAknMarkableListDialog::NewL
+    CAknMarkableListDialog* markedDlg = CAknMarkableListDialog::NewL( 
+        value, markedItems, textArray, 
+        R_AVKON_DIALOG_EMPTY_MENUBAR, R_AVKON_DIALOG_EMPTY_MENUBAR, NULL );
+    CleanupStack::PushL( markedDlg );    
+    AssertNotNullL( markedDlg, KMarkedNewL );
+    CleanupStack::PopAndDestroy( markedDlg );    
+    
+    // test API of CAknMarkableListDialog
+    CBCMarkableListDialog* dlg = CBCMarkableListDialog::NewL(
+        value, markedItems, textArray ); 
+    CleanupStack::PushL( dlg );   
+    dlg->PrepareLC( R_BCTESTLIST_MARKABLE_DIALOG );
+    
+    dlg->PreLayoutDynInitL();    
+    AssertTrueL( ETrue, KSelPreLayout );
+    
+    dlg->PostLayoutDynInitL();    
+    AssertTrueL( ETrue, KMarPostLayout );
+    
+    TPointerEvent event;
+    event.iType = TPointerEvent::EButton1Down;
+    event.iModifiers = 0;
+    TPoint eventPos(0, 30);
+    event.iPosition = eventPos;
+    event.iParentPosition = eventPos;
+    dlg->HandlePointerEventL( event );    
+    AssertTrueL( ETrue, KSelHandlePointer );
+            
+    dlg->SelectionListProcessCommandL( EAknMarkAll );    
+    AssertTrueL( ETrue, KMarSelListProcCmd );
+    
+    dlg->ProcessCommandL( EAknUnmarkAll );    
+    AssertTrueL( ETrue, KMarPreProcCmd );
+    
+    CEikMenuPane* menuPane = new( ELeave ) CEikMenuPane( dlg );
+    CleanupStack::PushL( menuPane );    
+    dlg->DynInitMenuPaneL( R_BCTESTLIST_COLUMN_MENU, menuPane );    
+    AssertTrueL( ETrue, KSelDynMenPane );
+    CleanupStack::PopAndDestroy( menuPane );
+    
+    dlg->HandleListBoxEventL( dlg->ListBox(), 
+        MEikListBoxObserver::EEventItemClicked );    
+    AssertTrueL( ETrue, KMarHandleListEvent );
+    
+    TKeyEvent keyEvent;
+    keyEvent.iCode = EKeyLeftArrow;    
+    dlg->OfferKeyEventL( keyEvent, EEventKey );
+    keyEvent.iCode = 'M';
+    dlg->OfferKeyEventL( keyEvent, EEventKey );
+    AssertTrueL( ETrue, KMarOfferKey );
+    
+    dlg->OkToExitL( EAknSoftkeyOk );    
+    AssertTrueL( ETrue, KMarOK );    
+    
+    CleanupStack::PopAndDestroy(); //prepareLC
+    CleanupStack::Pop( dlg );
+    CleanupStack::PopAndDestroy( textArray );    
+    CleanupStack::PopAndDestroy( markedItems );
+    }
+
+// ---------------------------------------------------------------------------
+// GraphicIconL
+// ---------------------------------------------------------------------------
+//
+void CBCTestListSelectionCase::GraphicIconL( CArrayPtr<CGulIcon>* aIcons )
+    {
+    if ( aIcons )
+        {
+        CreateIconAndAddToArrayL(
+            aIcons, KBCTestListMifFileName,
+            EMbmBctestlistQgn_indi_marked_add,
+            EMbmBctestlistQgn_indi_marked_add_mask );
+        CreateIconAndAddToArrayL(
+            aIcons, KBCTestListMbmFileName,
+            EMbmBctestlistGolgo2,
+            EMbmBctestlistGolgo2_mask );            
+        }
+    }
+ 
+// ======== MEMBER FUNCTIONS ========
+// CBCMarkableListDialog
+
+// ---------------------------------------------------------------------------
+// Symbian 2nd constructor
+// ---------------------------------------------------------------------------
+//
+CBCMarkableListDialog* CBCMarkableListDialog::NewL( TInt &aValue, 
+    CArrayFix<TInt> *aSelectedItems, MDesCArray *aArray )
+    {
+    CBCMarkableListDialog* self = new( ELeave ) CBCMarkableListDialog(
+        aValue, aSelectedItems, aArray, 
+        R_AVKON_DIALOG_EMPTY_MENUBAR, R_AVKON_DIALOG_EMPTY_MENUBAR, NULL );
+    CleanupStack::PushL( self );
+    self->ConstructL( R_AVKON_DIALOG_EMPTY_MENUBAR );
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// C++ constructor
+// ---------------------------------------------------------------------------
+//
+CBCMarkableListDialog::CBCMarkableListDialog( 
+    TInt &aValue, CArrayFix<TInt> *aSelectedItems, 
+    MDesCArray *aArray, TInt aMenuBarResourceId, 
+    TInt aOkMenuBarResourceId, MEikCommandObserver *aObserver ):
+    CAknMarkableListDialog( aValue, aSelectedItems, aArray, aMenuBarResourceId,
+        aOkMenuBarResourceId, aObserver )
+    {    
+    }
+    
+// ======== MEMBER FUNCTIONS ========
+// CBCSelectionListDialog
+
+// ---------------------------------------------------------------------------
+// Symbian 2nd constructor
+// ---------------------------------------------------------------------------
+//
+CBCSelectionListDialog* CBCSelectionListDialog::NewL( TInt &aValue, 
+    MDesCArray *aArray )
+    {
+    CBCSelectionListDialog* self = new( ELeave ) CBCSelectionListDialog(
+        aValue, aArray, NULL );
+    CleanupStack::PushL( self );
+    self->ConstructL( R_AVKON_DIALOG_EMPTY_MENUBAR );
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// C++ constructor
+// ---------------------------------------------------------------------------
+//
+CBCSelectionListDialog::CBCSelectionListDialog( 
+    TInt &aValue, MDesCArray *aArray,    
+    MEikCommandObserver *aObserver ):
+    CAknSelectionListDialog( aValue, aArray, aObserver )
+    {    
+    }