diff -r 000000000000 -r a4daefaec16c convergedconnectionhandler/cchclientapi/src/cchuinotehandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/convergedconnectionhandler/cchclientapi/src/cchuinotehandler.cpp Mon Jan 18 20:12:36 2010 +0200 @@ -0,0 +1,220 @@ +/* +* Copyright (c) 2008-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: Implementation of class CCCHUiNoteHandler. +* +*/ + + +#include +#include +#include +#include +#include + +#include "cchuilogger.h" +#include "cchuinotehandler.h" +#include "cchuiglobalqueryhandler.h" +#include "mcchuinoteresultobserver.h" + +// ======== MEMBER FUNCTIONS ======== + +CCCHUiNoteHandler::CCCHUiNoteHandler( + MCchUiNoteResultObserver& aObserver ) : + CActive ( EPriorityHigh ), + iObserver( aObserver ), + iCurrentNote( MCchUiObserver::ECchUiDialogTypeNotSet ) + { + } + +void CCCHUiNoteHandler::ConstructL() + { + CCHUIDEBUG( "CCCHUiNoteHandler::ConstructL - IN" ); + + CActiveScheduler::Add( this ); + iGlobalQueryHandler = CCchUiGlobalQueryHandler::NewL(); + + CCHUIDEBUG( "CCCHUiNoteHandler::ConstructL - OUT" ); + } + +CCCHUiNoteHandler* CCCHUiNoteHandler::NewL( + MCchUiNoteResultObserver& aObserver ) + { + CCCHUiNoteHandler* self = + new( ELeave ) CCCHUiNoteHandler( aObserver ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +CCCHUiNoteHandler::~CCCHUiNoteHandler() + { + CCHUIDEBUG( "CCCHUiNoteHandler::~CCCHUiNoteHandler - IN" ); + + Cancel(); + delete iGlobalQueryHandler; + iGlobalQueryHandler = NULL; + + CCHUIDEBUG( "CCCHUiNoteHandler::~CCCHUiNoteHandler - OUT" ); + } + +// --------------------------------------------------------------------------- +// Launch note. +// --------------------------------------------------------------------------- +// +void CCCHUiNoteHandler::LaunchNoteL( + MCchUiObserver::TCchUiDialogType aNote, + TUint aServiceId, + TUint aIapId, + RBuf& aUserName ) + { + CCHUIDEBUG( "CCCHUiNoteHandler::LaunchNoteL - IN"); + CCHUIDEBUG2( "LaunchNoteL - aNote: %d", aNote ); + CCHUIDEBUG2( "LaunchNoteL - aServiceId: %d", aServiceId ); + CCHUIDEBUG2( "LaunchNoteL - aIapId: %d", aIapId ); + CCHUIDEBUG2( "LaunchNoteL - aUserName: %S", &aUserName ); + CCHUIDEBUG2( "LaunchNoteL - IsActive: %d", IsActive() ); + + // If already showing note => leave with KErrAlreadyExists to signal + // client as API definition dictates. + __ASSERT_ALWAYS( !IsActive(), User::Leave( KErrAlreadyExists )); + switch ( aNote ) + { + case MCchUiObserver::ECchUiDialogTypeUsernamePasswordFailed: + case MCchUiObserver::ECchUiDialogTypeAuthenticationFailed: + case MCchUiObserver::ECchUiDialogTypeNoConnectionAvailable: + case MCchUiObserver::ECchUiDialogTypeNoConnectionDefined: + case MCchUiObserver::ECchUiDialogTypeConfirmChangeConnection: + case MCchUiObserver::ECchUiDialogTypeChangeConnection: + case MCchUiObserver::ECchUiDialogTypeDefectiveSettings: + case MCchUiObserver::ECchUiDialogTypeErrorInConnection: + { + iCurrentNote = aNote; + iGlobalQueryHandler->ShowMsgQueryL( + aNote, iStatus, aServiceId, aIapId, aUserName ); + SetActive(); + } + break; + + default: + { + CCHUIDEBUG( "LaunchNoteL - default switch case" ); + User::Leave( KErrNotSupported ); + } + break; + } + CCHUIDEBUG( "CCCHUiNoteHandler::LaunchNoteL - OUT" ); + } + +// --------------------------------------------------------------------------- +// Active dialog check. By dialog we mean dialog which needs user action. +// --------------------------------------------------------------------------- +// +TBool CCCHUiNoteHandler::ActiveDialogExists() + { + CCHUIDEBUG( "CCCHUiNoteHandler::ActiveDialogExists" ); + + switch ( iCurrentNote ) + { + case MCchUiObserver::ECchUiDialogTypeAuthenticationFailed: + case MCchUiObserver::ECchUiDialogTypeNoConnectionAvailable: + case MCchUiObserver::ECchUiDialogTypeNoConnectionDefined: + case MCchUiObserver::ECchUiDialogTypeConfirmChangeConnection: + case MCchUiObserver::ECchUiDialogTypeChangeConnection: + { + return ETrue; + } + case MCchUiObserver::ECchUiDialogTypeUsernamePasswordFailed: + case MCchUiObserver::ECchUiDialogTypeDefectiveSettings: + case MCchUiObserver::ECchUiDialogTypeErrorInConnection: + default: + { + return EFalse; + } + } + } + +// --------------------------------------------------------------------------- +// CancelOldNotes. +// --------------------------------------------------------------------------- +// +void CCCHUiNoteHandler::CancelOldNotes() + { + CCHUIDEBUG( "CCCHUiNoteHandler::CancelOldNotes - IN" ); + + if ( iGlobalQueryHandler && IsActive() ) + { + iGlobalQueryHandler->CancelMsgQuery(); + Cancel(); + } + + CCHUIDEBUG( "CCCHUiNoteHandler::CancelOldNotes - OUT" ); + } + +// --------------------------------------------------------------------------- +// Returns current note. +// --------------------------------------------------------------------------- +// +MCchUiObserver::TCchUiDialogType CCCHUiNoteHandler::CurrentNote() + { + return iCurrentNote; + } + +// --------------------------------------------------------------------------- +// From class CActive +// RunL. +// --------------------------------------------------------------------------- +// +void CCCHUiNoteHandler::RunL() + { + CCHUIDEBUG2( "CCCHUiNoteHandler::RunL, status: %d", iStatus.Int() ); + + TInt status = iStatus.Int(); + if ( iGlobalQueryHandler ) + { + iCurrentNote = MCchUiObserver::ECchUiDialogTypeNotSet; + + TRAP_IGNORE( iObserver.DialogCompletedL( status, + iGlobalQueryHandler->ResultParams() ) ); + } + } + +// --------------------------------------------------------------------------- +// From class CActive +// DoCancel. +// --------------------------------------------------------------------------- +// +void CCCHUiNoteHandler::DoCancel() + { + CCHUIDEBUG( "CCCHUiNoteHandler::DoCancel - IN" ); + + if ( iGlobalQueryHandler ) + { + CCHUIDEBUG( "DoCancel - cancel message query"); + iGlobalQueryHandler->CancelMsgQuery(); + } + + CCHUIDEBUG( "CCCHUiNoteHandler::DoCancel - OUT" ); + } + +// --------------------------------------------------------------------------- +// From class CActive. +// RunError. +// --------------------------------------------------------------------------- +// +TInt CCCHUiNoteHandler::RunError( TInt /*aError*/ ) + { + return KErrNone; + } +