diff -r 73a1feb507fb -r bc78a40cd63c mmsharing/mmshui/src/musuiinvitationquery.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmsharing/mmshui/src/musuiinvitationquery.cpp Wed Sep 01 12:31:01 2010 +0100 @@ -0,0 +1,193 @@ +/* +* Copyright (c) 2005 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: The MUS application's UI class. +* +*/ + + +#include "musuiinvitationquery.h" +#include "musuiinvitationqueryobserver.h" +#include "musuidefinitions.h" +#include "musuiactivetimer.h" +#include "muslogger.h" +#include "musunittesting.h" + +#include +#include +#include +#include + + +// ----------------------------------------------------------------------------- +// Two phase constructor +// ----------------------------------------------------------------------------- +// +CMusUiInvitationQuery* CMusUiInvitationQuery::NewL( + MMusUiInvitationQueryObserver& aView ) + { + CMusUiInvitationQuery* self + = new( ELeave ) CMusUiInvitationQuery( aView ); + + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + + return self; + } + + +// ----------------------------------------------------------------------------- +// Destructor +// ----------------------------------------------------------------------------- +// +CMusUiInvitationQuery::~CMusUiInvitationQuery() + { + MUS_LOG( "mus: [MUSUI ] -> CMusUiInvitationQuery::~CMusUiInvitationQuery" ); + + delete iGlobalQuery; + delete iPrompt; + + delete iActiveTimer; + + MUS_LOG( "mus: [MUSUI ] <- CMusUiInvitationQuery::~CMusUiInvitationQuery" ); + } + + +// ----------------------------------------------------------------------------- +// Constructor +// ----------------------------------------------------------------------------- +// +CMusUiInvitationQuery::CMusUiInvitationQuery( MMusUiInvitationQueryObserver& aView ) + : CActive( EPriorityNormal ), iObserver( aView ) + { + CActiveScheduler::Add( this ); + } + + +// ----------------------------------------------------------------------------- +// Second phase constructor +// ----------------------------------------------------------------------------- +// +void CMusUiInvitationQuery::ConstructL() + { + MUS_LOG( "mus: [MUSUI ] -> CMusUiInvitationQuery::ConstructL" ); + + iGlobalQuery = CAknGlobalConfirmationQuery::NewL(); + iPrompt = NULL; + + iActiveTimer = CMusUiActiveTimer::NewL( this ); + + MUS_LOG( "mus: [MUSUI ] <- CMusUiInvitationQuery::ConstructL" ); + } + + +// ----------------------------------------------------------------------------- +// Shows the confirmation query dialog +// ----------------------------------------------------------------------------- +// +void CMusUiInvitationQuery::ShowL( const TDesC& aContact ) + { + MUS_LOG( "mus: [MUSUI ] -> CMusUiInvitationQuery::ShowL" ); + if ( iPrompt ) + { + delete iPrompt; + iPrompt = NULL; + } + + iPrompt = StringLoader::LoadL( + R_MUS_RECEIVE_VIEW_NOTE_INCOMING_VIDEO_REQUEST, + aContact ); + if ( iActiveTimer->IsActive() ) + { + // If Timer is active already , dont know what to do + // It might mean a invitation ongoing. + } + else + { + iActiveTimer->After( KMusInviteExpireTimeout * KMusOneSecond ); + iGlobalQuery->ShowConfirmationQueryL( + iStatus, + *iPrompt, + R_AVKON_SOFTKEYS_YES_NO ); + SetActive(); + } + + MUS_LOG( "mus: [MUSUI ] <- CMusUiInvitationQuery::ShowL" ); + } + + +// ----------------------------------------------------------------------------- +// Timer Expiry event. +// ----------------------------------------------------------------------------- +// +void CMusUiInvitationQuery::TimerComplete( CMusUiActiveTimer* /*aTimer*/ ) + { + Cancel(); + TRAP_IGNORE( iObserver.InvitationRejectedL() ); + } + + +// ----------------------------------------------------------------------------- +// CActive RunL implementation. +// ----------------------------------------------------------------------------- +// +void CMusUiInvitationQuery::RunL() + { + MUS_LOG1( "mus: [MUSUI ] -> CMusUiInvitationQuery::RunL [%d]", iStatus.Int() ); + iActiveTimer->Cancel(); + if ( iStatus == EAknSoftkeyYes ) + { + MUS_LOG( "mus: [MUSUI ] CMusUiInvitationQuery::RunL: if" ); + iObserver.InvitationAcceptedL(); + } + else // EAknSoftkeyNo + { + MUS_LOG( "mus: [MUSUI ] CMusUiInvitationQuery::RunL: else" ); + iObserver.InvitationRejectedL(); + } + Cancel(); + MUS_LOG( "mus: [MUSUI ] <- CMusUiInvitationQuery::RunL" ); + } + + +// ----------------------------------------------------------------------------- +// Cancel() will call this +// ----------------------------------------------------------------------------- +// +void CMusUiInvitationQuery::DoCancel() + { + MUS_LOG( "mus: [MUSUI ] -> CMusUiInvitationQuery::DoCancel" ); + iGlobalQuery->CancelConfirmationQuery(); + MUS_LOG( "mus: [MUSUI ] <- CMusUiInvitationQuery::DoCancel" ); + } + + +// ----------------------------------------------------------------------------- +// If RunL() leaves should be handled here. +// ----------------------------------------------------------------------------- +// +TInt CMusUiInvitationQuery::RunError( TInt aError ) + { + MUS_LOG1( "mus: [MUSUI ] -> CMusUiInvitationQuery::RunError [%d]", aError ); + + // Handle the error fully here. No cleanup needed in this case. + // default active scheduler will panic by calling Error() if + // it not handled here. so return KErrNone. + aError = KErrNone; + + return aError; + } + + +// end of file