diff -r 05bc53fe583b -r 83ca720e2b9a connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/ConfirmationQuery.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/connectionutilities/ConnectionDialogs/ConnectionUiUtilities/NotifSrc/ConfirmationQuery.cpp Wed Sep 01 12:23:51 2010 +0100 @@ -0,0 +1,272 @@ +/* +* 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: Implementation of class CConfirmationQuery. +* +*/ + + +// INCLUDE FILES +#include "ConfirmationQuery.h" +#include "ConfirmationQueryNotif.h" +#include "ConnectionUiUtilitiesCommon.h" +#include "ConnectionDialogsLogger.h" +#include "ExpiryTimer.h" + +#include +#include +#include + + + +// CONSTANTS +#if defined(_DEBUG) +_LIT( KErrNullPointer, "NULL pointer" ); +#endif + + +// ================= MEMBER FUNCTIONS ======================= +// +// --------------------------------------------------------- +// CConfirmationQuery::CConfirmationQuery +// HOME NETWORK +// --------------------------------------------------------- +// +CConfirmationQuery::CConfirmationQuery( CConfirmationQueryNotif* aNotif ) +: CAknListQueryDialog( &iDummy ), + iNotif( aNotif ), + iButtonGroupPreviouslyChanged( EFalse ) + { + } + +// --------------------------------------------------------- +// CConfirmationQuery::~CConfirmationQuery +// --------------------------------------------------------- +// +CConfirmationQuery::~CConfirmationQuery() + { + STATIC_CAST( CEikServAppUi*, + CCoeEnv::Static()->AppUi() )->SuppressAppSwitching( EFalse ); + delete iExpiryTimer; + iChoiceIds.Close(); + } + +// --------------------------------------------------------- +// CConfirmationQuery::OkToExitL +// --------------------------------------------------------- +// +TBool CConfirmationQuery::OkToExitL( TInt aButtonId ) + { + CLOG_ENTERFN( "CConfirmationQuery::OkToExitL" ); + TBool result( EFalse ); + TInt status = KErrCancel; + if ( aButtonId == EAknSoftkeySelect || + aButtonId == EAknSoftkeyDone || aButtonId == EAknSoftkeyOk ) + { + iNotif->SetSelectedChoiceL( iChoiceIds[ListBox()->CurrentItemIndex()] ); + result = ETrue; + status = KErrNone; + } + else if ( aButtonId == EAknSoftkeyCancel ) + { + status = KErrCancel; + result = ETrue; + } + + if ( result ) + { + CLOG_WRITEF( _L( "aButtonId = %d" ), aButtonId ); + __ASSERT_DEBUG( iNotif, User::Panic( KErrNullPointer, KErrNone ) ); + iNotif->CompleteL( status ); + } + + CLOG_LEAVEFN( "CConfirmationQuery::OkToExitL" ); + + return result; + } + +// --------------------------------------------------------- +// CConfirmationQuery::PreLayoutDynInitL() +// --------------------------------------------------------- +// +void CConfirmationQuery::PreLayoutDynInitL() + { + CAknListQueryDialog::PreLayoutDynInitL(); + + STATIC_CAST( CEikServAppUi*, + CCoeEnv::Static()->AppUi() )->SuppressAppSwitching( ETrue ); + + iExpiryTimer = CExpiryTimer::NewL( *this ); + iExpiryTimer->Start(); + } + +// --------------------------------------------------------- +// CConfirmationQuery::TryExitL() +// --------------------------------------------------------- +// +void CConfirmationQuery::TryExitL( TInt aButtonId ) + { + CLOG_ENTERFN( "CConfirmationQuery::TryExitL" ); + CAknListQueryDialog::TryExitL( aButtonId ); + CLOG_LEAVEFN( "CConfirmationQuery::TryExitL" ); + } + +// --------------------------------------------------------- +// CConfirmationQuery::OfferKeyEventL +// --------------------------------------------------------- +// +TKeyResponse CConfirmationQuery::OfferKeyEventL( const TKeyEvent& aKeyEvent, + TEventCode aType) + { + if( aType == EEventKey && aKeyEvent.iCode == EKeyPhoneSend ) + { + // Let's not obscure the Dialer in the background + if ( iExpiryTimer ) + { + iExpiryTimer->Cancel(); + iExpiryTimer->StartShort(); + } + } + + return CAknListQueryDialog::OfferKeyEventL( aKeyEvent,aType ); + } + +// --------------------------------------------------------- +// CConfirmationQuery::SetChoices +// --------------------------------------------------------- +// +void CConfirmationQuery::SetChoices( RArray aChoices ) + { + iChoiceIds = aChoices; + } + +void CConfirmationQuery::HandleTimedOut() + { + TRAP_IGNORE( TryExitL(EAknSoftkeyCancel) ); + } + + +// ================= MEMBER FUNCTIONS ======================= +// +// --------------------------------------------------------- +// CConfirmationQueryVisitor::CConfirmationQueryVisitor +// VISITOR NETWORK +// --------------------------------------------------------- +// +CConfirmationQueryVisitor::CConfirmationQueryVisitor( + CConfirmationQueryNotif* aNotif ) + : + iNotif( aNotif ) + { + } + +// --------------------------------------------------------- +// CConfirmationQueryVisitor::~CConfirmationQueryVisitor +// --------------------------------------------------------- +// +CConfirmationQueryVisitor::~CConfirmationQueryVisitor() + { + STATIC_CAST( CEikServAppUi*, + CCoeEnv::Static()->AppUi() )->SuppressAppSwitching( EFalse ); + delete iExpiryTimer; + } + +// --------------------------------------------------------- +// CConfirmationQueryVisitor::OkToExitL +// --------------------------------------------------------- +// +TBool CConfirmationQueryVisitor::OkToExitL( TInt aButtonId ) + { + CLOG_ENTERFN( "CConfirmationQueryVisitor::OkToExitL" ); + TBool result( EFalse ); + TInt status = KErrCancel; + + if ( aButtonId == EAknSoftkeySelect || + aButtonId == EAknSoftkeyDone || aButtonId == EAknSoftkeyOk ) + { + iNotif->SetSelectedChoiceL( EMsgQueryThisTime ); + result = ETrue; + status = KErrNone; + } + else if ( aButtonId == EAknSoftkeyCancel ) + { + status = KErrCancel; + result = ETrue; + } + + if ( result ) + { + CLOG_WRITEF( _L( "aButtonId = %d" ), aButtonId ); + if ( iNotif ) + { + iNotif->CompleteL( status ); + } + } + + CLOG_LEAVEFN( "CConfirmationQueryVisitor::OkToExitL" ); + + return result; + } + +// --------------------------------------------------------- +// CConfirmationQueryVisitor::PreLayoutDynInitL() +// --------------------------------------------------------- +// +void CConfirmationQueryVisitor::PreLayoutDynInitL() + { + CAknMessageQueryDialog::PreLayoutDynInitL(); + + STATIC_CAST( CEikServAppUi*, + CCoeEnv::Static()->AppUi() )->SuppressAppSwitching( ETrue ); + + iExpiryTimer = CExpiryTimer::NewL( *this ); + iExpiryTimer->Start(); + } + +// --------------------------------------------------------- +// CConfirmationQueryVisitor::TryExitL() +// --------------------------------------------------------- +// +void CConfirmationQueryVisitor::TryExitL( TInt aButtonId ) + { + CLOG_ENTERFN( "CConfirmationQueryVisitor::TryExitL" ); + CAknMessageQueryDialog::TryExitL( aButtonId ); + CLOG_LEAVEFN( "CConfirmationQueryVisitor::TryExitL" ); + } + +// --------------------------------------------------------- +// CConfirmationQueryVisitor::OfferKeyEventL +// --------------------------------------------------------- +// +TKeyResponse CConfirmationQueryVisitor::OfferKeyEventL( const TKeyEvent& aKeyEvent, + TEventCode aType) + { + if( aType == EEventKey && aKeyEvent.iCode == EKeyPhoneSend ) + { + // Let's not obscure the Dialer in the background + if ( iExpiryTimer ) + { + iExpiryTimer->Cancel(); + iExpiryTimer->StartShort(); + } + } + + return CAknMessageQueryDialog::OfferKeyEventL( aKeyEvent,aType ); + } + +void CConfirmationQueryVisitor::HandleTimedOut() + { + TRAP_IGNORE( TryExitL(EAknSoftkeyCancel) ); + } + +// End of File