diff -r 000000000000 -r 2f259fa3e83a uifw/AvKon/tsrc/bc/S60_SDKMCL/bctestsingleclick/src/bctestsingleclickcase.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uifw/AvKon/tsrc/bc/S60_SDKMCL/bctestsingleclick/src/bctestsingleclickcase.cpp Tue Feb 02 01:00:49 2010 +0200 @@ -0,0 +1,278 @@ +/* +* 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: Test case class of bctestsingleclick. +* +*/ + +#include +#include +#include +#ifdef RD_TOUCH2 +#include +#include +#else +#include +#endif // RD_TOUCH2 +#include +#include +#include +#include +#include +#ifdef RD_TOUCH2 +#include +#endif // RD_TOUCH2 + +#include "bctestsingleclickcase.h" +#include "bctestsingleclickcontainer.h" +#include "bctestsingleclick.hrh" + + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// Symbian 2nd static Constructor +// --------------------------------------------------------------------------- +// +CBCTESTSingleClickCase* CBCTESTSingleClickCase::NewL( + CBCTESTSingleClickContainer* aContainer ) + { + CBCTESTSingleClickCase* self = + new( ELeave ) CBCTESTSingleClickCase( aContainer ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------------------------- +// C++ default constructor +// --------------------------------------------------------------------------- +// +CBCTESTSingleClickCase::CBCTESTSingleClickCase( CBCTESTSingleClickContainer* + aContainer ) + : iContainer( aContainer ) + { + } + +// --------------------------------------------------------------------------- +// Destructor +// --------------------------------------------------------------------------- +// +CBCTESTSingleClickCase::~CBCTESTSingleClickCase() + { + } + +// --------------------------------------------------------------------------- +// Symbian 2nd Constructor +// --------------------------------------------------------------------------- +// +void CBCTESTSingleClickCase::ConstructL() + { + BuildScriptL(); + } + +// --------------------------------------------------------------------------- +// CBCTESTSingleClickCase::BuildScriptL +// --------------------------------------------------------------------------- +// +void CBCTESTSingleClickCase::BuildScriptL() + { + // Add script as your need. + // Use 30 to wait all discreet popups showing + AddTestL( DELAY(1), LeftCBA, KeyOK, DELAY(1), TEND ); + } + +// --------------------------------------------------------------------------- +// CBCTESTSingleClickCase::RunL +// --------------------------------------------------------------------------- +// +void CBCTESTSingleClickCase::RunL( TInt aCmd ) + { + // Call release before prepare to let container has time to draw the + // control created in PrepareCaseL. + ReleaseCaseL(); + PrepareCaseL( aCmd ); + switch ( aCmd ) + { + case EBCTestCmdOutline1: + TestSingleClickL(); + TestListBoxL(); + break; + default: + break; + } + } + +// --------------------------------------------------------------------------- +// CBCTESTSingleClickCase::PrepareCaseL +// --------------------------------------------------------------------------- +// +void CBCTESTSingleClickCase::PrepareCaseL( TInt aCmd ) + { + switch ( aCmd ) + { + case EBCTestCmdOutline1: + // Here is a simple demo. You should create your control + // instead of this. + iControl = new( ELeave ) CCoeControl(); + iControl->SetContainerWindowL( *iContainer ); + iControl->MakeVisible( ETrue ); + break; + default: + break; + } + // Pass the owner of iControl to iContainer. + iContainer->SetControlL( iControl ); + } + +// --------------------------------------------------------------------------- +// CBCTESTSingleClickCase::ReleaseCaseL +// --------------------------------------------------------------------------- +// +void CBCTESTSingleClickCase::ReleaseCaseL() + { + // let container delete the component control. + iContainer->ResetControl(); + iControl = NULL; + } + +TUint CBCTESTSingleClickCase::CollectionState() const + { + return 1; + } + +void CBCTESTSingleClickCase::ItemActionMenuClosed() + { + + } + +TInt CBCTESTSingleClickCase::CollectionExtension( + TUint /*aExtensionId*/, TAny*& /*a0*/, TAny* /*a1*/ ) + { + return 1; + } + +// --------------------------------------------------------------------------- +// CBCTESTSingleClickCase::TestSingleClickL +// --------------------------------------------------------------------------- +// +void CBCTESTSingleClickCase::TestSingleClickL() + { + _LIT( KSetConstructingMenuBarOwnerL, + "AknItemActionMenuRegister::SetConstructingMenuBarOwnerL" ); + _LIT( KIsSingleClickCompatible, + "CAknAppUiBase::IsSingleClickCompatible()" ); + _LIT( KRegisterCollectionL, "CAknItemActionMenu::RegisterCollectionL" ); + _LIT( KInitMenuL, "CAknItemActionMenu::InitMenuL" ); + _LIT( KShowMenuL, "CAknItemActionMenu::ShowMenuL" ); + _LIT( KRemoveCollection, "CAknItemActionMenu::RemoveCollection" ); + _LIT( KItemSpecificCommandsEnabled, + "CEikMenuBar::ItemSpecificCommandsEnabled()" ); + _LIT( KSetItemSpecific, "CEikMenuPane::SetItemSpecific()" ); +#ifdef RD_TOUCH2 + _LIT( KSetOverridingMenuBarOwnerL, + "AknItemActionMenuRegister::SetOverridingMenuBarOwnerL" ); + _LIT( KCollectionChanged, "CAknItemActionMenu::CollectionChanged" ); +#endif // RD_TOUCH2 + + //AknItemActionMenuRegister::SetConstructingMenuBarOwnerL is invoked in + //CAknView::BaseConstructL(). + AssertTrueL( ETrue, KSetConstructingMenuBarOwnerL ); + +#ifdef RD_TOUCH2 + CCoeControl* dummy = new ( ELeave ) CCoeControl; + CleanupStack::PushL( dummy ); + AknItemActionMenuRegister::SetOverridingMenuBarOwnerL( dummy ); + AknItemActionMenuRegister::SetOverridingMenuBarOwnerL( NULL ); + AssertTrueL( ETrue, KSetOverridingMenuBarOwnerL ); + CleanupStack::PopAndDestroy(); +#endif // RD_TOUCH2 + + TBool isSingleClick = iAvkonAppUiBase->IsSingleClickCompatible(); + AssertTrueL( isSingleClick, KIsSingleClickCompatible ); + + CAknItemActionMenu* aknItemActionMenu = + CAknItemActionMenu::RegisterCollectionL( *this ); + AssertTrueL( ETrue, KRegisterCollectionL ); + if ( aknItemActionMenu ) + { + aknItemActionMenu->InitMenuL(); + AssertTrueL( ETrue, KInitMenuL ); + + TPoint p( 10, 10 ); + aknItemActionMenu->ShowMenuL( p ); + AssertTrueL( ETrue, KShowMenuL ); + +#ifdef RD_TOUCH2 + aknItemActionMenu->CollectionChanged( *this ); + AssertTrueL( ETrue, KCollectionChanged ); +#endif // RD_TOUCH2 + + aknItemActionMenu->RemoveCollection( *this ); + AssertTrueL( ETrue, KRemoveCollection ); + } + +#ifdef RD_TOUCH2 + TVwsViewId uid; + + iAvkonViewAppUi->GetActiveViewId( uid ); + CEikMenuBar* menuBar = iAvkonViewAppUi->View( uid.iViewUid )->MenuBar(); +#else + CEikMenuBar* menuBar = CEikonEnv::Static()->AppUiFactory()->MenuBar(); +#endif // RD_TOUCH2 + CEikMenuPane* menuPane = NULL; + if ( menuBar ) + { + menuBar->ItemSpecificCommandsEnabled(); + AssertTrueL( ETrue, KItemSpecificCommandsEnabled ); + menuPane = menuBar->MenuPane(); + } + + if ( menuPane ) + { + menuPane->AddMenuItemsL( R_BCTESTSINGLECLICK_ADD_MENU ); + menuPane->SetItemSpecific( EBCTestCmdOutline2, ETrue ); + AssertTrueL( ETrue, KSetItemSpecific ); + } + } + +// --------------------------------------------------------------------------- +// CBCTESTSingleClickCase::TestSingleClickL +// --------------------------------------------------------------------------- +// +void CBCTESTSingleClickCase::TestListBoxL() + { + _LIT( KDisableSingleClick, "CEikListBox::DisableSingleClick() invoked" ); + + CEikFormattedCellListBox* listbox = new CEikFormattedCellListBox(); + CleanupStack::PushL( listbox ); + + listbox->ConstructL( iContainer, EAknListBoxSelectionList ); + CDesCArrayFlat* text = new (ELeave) CDesCArrayFlat(1); + CleanupStack::PushL( text ); + + text->AppendL( _L( "\tTextItem1\t" ) ); + text->AppendL( _L( "\tTextItem2\t" ) ); + text->AppendL( _L( "\tTextItem3\t" ) ); + + listbox->Model()->SetItemTextArray( text ); + listbox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray ); + + listbox->DisableSingleClick( ETrue ); + AssertTrueL( ETrue, KDisableSingleClick ); + + CleanupStack::PopAndDestroy( text ); + CleanupStack::PopAndDestroy( listbox ); + } +