diff -r 7b872347d83b -r 6d0b9f605b61 convergedconnectionhandler/cchserver/src/cchnotehandler.cpp --- a/convergedconnectionhandler/cchserver/src/cchnotehandler.cpp Tue Feb 02 00:05:57 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,370 +0,0 @@ -/* -* Copyright (c) 2008-2008 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: CCh note handler. -* -*/ - -// INCLUDE FILES -#include "cchnotehandler.h" -#include "cchprivatecrkeys.h" -#include "cchserverbase.h" -#include "cchfeaturemanager.h" -#include -#include -#include -#include -#include "cchsecondarydisplayapi.h" -#include -#include -#include -#include "cchlogger.h" - -_LIT( KCchResourceDir, "\\resource\\apps\\" ); -_LIT( KCchResourceFileName, "cch.r??" ); - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CCchNoteHandler::CCchNoteHandler -// C++ default constructor can NOT contain any code, that -// might leave. -// ----------------------------------------------------------------------------- -// -CCchNoteHandler::CCchNoteHandler( CCCHServerBase& aServer ) - : CActive ( EPriorityHigh ), - iServer( aServer ), - iCoverDisplaySupported( aServer.FeatureManager().CoverDisplaySupported() ) - { - } - -// ----------------------------------------------------------------------------- -// CCchNoteHandler::NewL -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -CCchNoteHandler* CCchNoteHandler::NewL( CCCHServerBase& aServer ) - { - CCchNoteHandler* self = - new (ELeave) CCchNoteHandler( aServer ); - - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - - return self; - } - -// ---------------------------------------------------------------------------- -// CCchNoteHandler::ConstructL() -// ---------------------------------------------------------------------------- - -void CCchNoteHandler::ConstructL() - { - iGlobalMsgQuery = CAknGlobalMsgQuery::NewL(); - iCchCenRep = CRepository::NewL( KCRUidCch ); - User::LeaveIfError( iFsSession.Connect() ); - iResourceFile = ScanFileL( TFileName( KCchResourceFileName ), - TFileName( KCchResourceDir ) ); - User::LeaveIfNull( iResourceFile ); - CActiveScheduler::Add( this ); - } - -// ---------------------------------------------------------------------------- -// CCchNoteHandler::~CCchNoteHandler() -// Destructor -// ---------------------------------------------------------------------------- - -CCchNoteHandler::~CCchNoteHandler() - { - Cancel(); - iMsgQueryInfoArray.Close(); - iFsSession.Close(); - delete iResourceFile; - delete iCchCenRep; - delete iGlobalMsgQuery; - } - -// ----------------------------------------------------------------------------- -// CCchNoteHandler::RunL -// From CActive, handles note/query dismissal. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CCchNoteHandler::RunL() - { - TInt status = iStatus.Int(); - CCHLOGSTRING2( "CCchNoteHandler::RunL iResourceId: %d", iResourceId ); - - // update central repository - switch ( iResourceId ) - { - case R_QTN_FIRST_EMERGENCY_WARNING_NOTE: - { - if ( status == EAknSoftkeyYes || status == EAknSoftkeyOk ) - { - iCchCenRep->Set( - KCCHVoIPEmergencyWarningShown, - ECCHVoIPEmergencyWarningAlreadyShown ); - } - if( iDie ) - { - - delete this; - return; - } - else - { - // now we are show this emergency note -> we can show - // another if needed - iServer.SetVoIPEmergencyNoteShown( EFalse ); - } - break; - } - case R_QTN_VOIP_DO_NOT_SHOW_WARNING: - { - if ( status == EAknSoftkeyYes || status == EAknSoftkeyOk ) - { - iCchCenRep->Set( - KCCHVoIPShowEmergencyWarningOnOff, - ECCHVoIPEmergencyWarningOnOffDoNotShowWarning ); - - } - if( iDie ) - { - - delete this; - return; - } - else - { - // now we are show this emergency note -> we can show - // another if needed - iServer.SetVoIPEmergencyNoteShown( EFalse ); - } - break; - } - case R_QTN_SERVTAB_ALLOW_GPRS_WHEN_ROAMING_QUERY: - { - if ( status == EAknSoftkeyYes || status == EAknSoftkeyOk ) - { - // Set gprs roaming cost warning note as shown to cenrep - iCchCenRep->Set( - KCCHGprsRoamingCostWarningShown, - ECCHGprsRoamingCostWarningAlreadyShown ); - } - } - default: - break; - } - - // delete self - if( iResourceId != R_QTN_VOIP_EM_CALL_ERROR_NOTE_NO_CS && iDie ) - { - delete this; - return; - } - - // peek one message from query array - if( iMsgQueryInfoArray.Count() > 0 ) - { - TGlobalMsgQueryInfo msgQueryInfo = iMsgQueryInfoArray[0]; - DoLaunchGlobalNoteL( msgQueryInfo.iResourceId, - msgQueryInfo.iSoftkeyId, - msgQueryInfo.iSecondaryDisplayIndex ); - - iMsgQueryInfoArray.Remove( 0 ); - } - } - -// ----------------------------------------------------------------------------- -// CCchNoteHandler::CanBeDestroyed -// ----------------------------------------------------------------------------- -// -TBool CCchNoteHandler::CanBeDestroyed() - { - if( IsActive() ) - { - iDie = ETrue; - return EFalse; - } - else - { - return ETrue; - } - } - -// ----------------------------------------------------------------------------- -// CCchNoteHandler::DoCancel -// From CActive, cancels current operation. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CCchNoteHandler::DoCancel() - { - iGlobalMsgQuery->CancelMsgQuery(); - } - -// ----------------------------------------------------------------------------- -// CCchNoteHandler::RunError -// From CActive, handles exceptions in RunL. -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CCchNoteHandler::RunError( TInt /*aError*/ ) - { - return KErrNone; - } - - -// ----------------------------------------------------------------------------- -// CCchNoteHandler::LaunchGlobalNoteL -// -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CCchNoteHandler::LaunchGlobalNoteL( const TInt aResourceId, - const TInt aSoftKeyConfig, - const TInt aSecondaryDisplayIndex ) - { - // Check there is global message query is shown at the moment - if ( IsActive() ) - { - // add the message query info to array - TGlobalMsgQueryInfo msgQueryInfo; - msgQueryInfo.iResourceId = aResourceId; - msgQueryInfo.iSoftkeyId = aSoftKeyConfig; - msgQueryInfo.iSecondaryDisplayIndex = aSecondaryDisplayIndex; - - iMsgQueryInfoArray.AppendL( msgQueryInfo ); - } - else - { - DoLaunchGlobalNoteL( aResourceId, aSoftKeyConfig, aSecondaryDisplayIndex ); - } - - if( aResourceId == R_QTN_VOIP_EM_CALL_ERROR_NOTE_NO_CS ) - { - TGlobalMsgQueryInfo msgQueryInfo; - msgQueryInfo.iResourceId = R_QTN_VOIP_DO_NOT_SHOW_WARNING; - msgQueryInfo.iSoftkeyId = R_AVKON_SOFTKEYS_OK_CANCEL; - msgQueryInfo.iSecondaryDisplayIndex = - SecondaryDisplay::ECmdShowDoNotShowVoipEmergencyCallWarningQuery; - - iMsgQueryInfoArray.AppendL( msgQueryInfo ); - } - - } - -// ----------------------------------------------------------------------------- -// CCchNoteHandler::DoLaunchGlobalNoteL -// -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CCchNoteHandler::DoLaunchGlobalNoteL( const TInt aResourceId, - const TInt aSoftKeyConfig, - const TInt aSecondaryDisplayIndex ) - { - iResourceId = aResourceId; - HBufC* textBuffer = LoadResourceL( aResourceId ); - CleanupStack::PushL( textBuffer ); - - // Set secondary display data if necessary - if ( iCoverDisplaySupported ) - { - CAknSDData* sd = CAknSDData::NewL( - SecondaryDisplay::KCatCch, - aSecondaryDisplayIndex, - KNullDesC8); - - iGlobalMsgQuery->SetSecondaryDisplayData(sd); - } - - iGlobalMsgQuery->ShowMsgQueryL( - iStatus, - textBuffer->Des(), - aSoftKeyConfig, - KNullDesC, - KNullDesC ); - - CleanupStack::PopAndDestroy( textBuffer ); - SetActive(); - } - -// ----------------------------------------------------------------------------- -// CCchNoteHandler::LoadResourceL -// Loads the localized text resource from resource file -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -HBufC* CCchNoteHandler::LoadResourceL( TInt aResourceID ) - { - RResourceFile resourceFile; - CleanupClosePushL( resourceFile ); - resourceFile.OpenL( iFsSession, *iResourceFile ); - resourceFile.ConfirmSignatureL( 0 ); - HBufC8* readBuffer=resourceFile.AllocReadLC( - aResourceID ); - const TPtrC16 ptrReadBuffer( - (TText16*) readBuffer->Ptr(),(readBuffer->Length()+1) >> 1 ); - HBufC* textBuffer=HBufC16::NewL( ptrReadBuffer.Length() ); - *textBuffer=ptrReadBuffer; - CleanupStack::PopAndDestroy( readBuffer ); - CleanupStack::PopAndDestroy( &resourceFile ); - return textBuffer; - } - -// ----------------------------------------------------------------------------- -// CCchNoteHandler::ScanFileC -// Finds out the correct path for a file -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -HBufC* CCchNoteHandler::ScanFileL( const TDesC& aFileName, - const TDesC& aFilePath ) - { - CCHLOGSTRING( "CCchNoteHandler::ScanFileL: IN" ); - TFindFile search( iFsSession); - CDir* dirlist; - HBufC* fullName = NULL; - TFileName filename(aFileName); - TInt err = search.FindWildByDir( filename, aFilePath, dirlist ); - if (err == KErrNone) - { - CCHLOGSTRING( "CCchNoteHandler::ScanFileL: dir found" ); - if ( dirlist && 0 < dirlist->Count() ) - { - TParse fullentry; - fullentry.Set( (*dirlist)[0].iName, &search.File(), NULL ); - TFileName nearestFile( fullentry.FullName() ); - BaflUtils::NearestLanguageFile( iFsSession, nearestFile ); - - fullName = HBufC::NewL( nearestFile.Length() ); - fullName->Des().Copy( nearestFile ); - } - delete dirlist; - } - CCHLOGSTRING2( "CCchNoteHandler::ScanFileL: OUT value=%s",fullName ); - return fullName; - } - -// ----------------------------------------------------------------------------- -// CCchNoteHandler::CchCenRep -// ----------------------------------------------------------------------------- -// -CRepository* CCchNoteHandler::CchCenRep() - { - return iCchCenRep; - } -// End of File