diff -r 6ca72c0fe49a -r a941bc465d9f wvuing/IMPSConnectionUI/UISrc/CCnUiGlobalNotificationUiFacade.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wvuing/IMPSConnectionUI/UISrc/CCnUiGlobalNotificationUiFacade.cpp Wed Sep 01 12:31:13 2010 +0100 @@ -0,0 +1,246 @@ +/* +* Copyright (c) 2004 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: Global notification UI implementation. +* +*/ + +// INCLUDE FILES +#include "CCnUiGlobalNotificationUiFacade.h" +#include "CnUiResourceFileName.h" +#include "CCnUiGlobalNoteContainer.h" +#include "CCnUiClientGroupUiNotifyMediator.h" + +#include +#include +#include + +// ================= GLOBAL FUNCTIONS ==================== +// ----------------------------------------------------------------------------- +// CreateGlobalNotificationUiFacadeL() +// ----------------------------------------------------------------------------- +// +GLREF_C MCnUiGlobalNotificationUiFacade* CreateGlobalNotificationUiFacadeL() + { + return CCnUiGlobalNotificationUiFacade::NewL(); + } + + +// ================= MEMBER FUNCTIONS ======================= +CCnUiGlobalNotificationUiFacade* CCnUiGlobalNotificationUiFacade::NewL() + { + CCnUiGlobalNotificationUiFacade* self = new ( ELeave ) CCnUiGlobalNotificationUiFacade(); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + + + +// C++ default constructor can NOT contain any code, that +// might leave. +// +CCnUiGlobalNotificationUiFacade::CCnUiGlobalNotificationUiFacade() + { + } + + +// Destructor +CCnUiGlobalNotificationUiFacade::~CCnUiGlobalNotificationUiFacade() + { + iResFile.Close(); + iFs.Close(); + } + + +// Symbian OS default constructor can leave. +void CCnUiGlobalNotificationUiFacade::ConstructL() + { + User::LeaveIfError( iFs.Connect() ); + + TFileName resourceFileName; + CnUiResourceFileName::NearestForCurrentLanguage( iFs, resourceFileName ); + iResFile.OpenL( iFs, resourceFileName ); + iResFile.ConfirmSignatureL(); + } + + + +// ----------------------------------------------------------------------------- +// CCnUiGlobalNotificationUiFacade::ShowLoginUserDataErrorL() +// ----------------------------------------------------------------------------- +// +void CCnUiGlobalNotificationUiFacade::ShowLoginUserDataErrorL( const TDesC& aServerName ) + { + //AA Error - dynamic global note, information note icon + HBufC* promptText = ReadResourceWithDynTextLC( R_QTN_CHAT_INCOR_USERNAMES_NOCON, aServerName ); + + CCnUiGlobalNoteContainer* gnc = CCnUiGlobalNoteContainer::NewLC(); + gnc->ShowWaitingNoteL( *promptText ); + CleanupStack::PopAndDestroy( 2 ); //globalNote, promptText + } + + + +// ----------------------------------------------------------------------------- +// CCnUiGlobalNotificationUiFacade::ShowLoginDetailedErrorL() +// ----------------------------------------------------------------------------- +// +void CCnUiGlobalNotificationUiFacade::ShowLoginDetailedErrorL( const TDesC& aServerName, + const TDesC& aDetErrDescription ) + { + //AA Error - dynamic global note, information note icon + detailed note if needed + HBufC* promptText = ReadResourceWithDynTextLC( R_QTN_CHAT_AUTOM_CON_FAILED, aServerName ); + CCnUiGlobalNoteContainer* gnc = CCnUiGlobalNoteContainer::NewLC(); + + if ( aDetErrDescription.Length() > 0 ) + { + gnc->ShowWaitigDetailedNoteL( *promptText, aDetErrDescription ); + } + else + { + //detailed description is empty, default to system error + //compare to CCnUiUiFacade and login / logout errors + HBufC* defaultDetErrDesc = ReadResourceLC( R_QTN_CHAT_ERROR_GEN_ERROR ); + gnc->ShowWaitigDetailedNoteL( *promptText, *defaultDetErrDesc ); + CleanupStack::PopAndDestroy( defaultDetErrDesc ); //defaultDetErrDesc + } + + CleanupStack::PopAndDestroy( 2 ); //gnc, promptText + } + + +// ----------------------------------------------------------------------------- +// CCnUiGlobalNotificationUiFacade::ShowLoginDetailedErrorL() +// ----------------------------------------------------------------------------- +// +void CCnUiGlobalNotificationUiFacade::ShowLoginDetailedErrorL( const TDesC& aServerName, + TInt aNoteTextResourceId ) + { + //AA Error - dynamic global note, information note icon + detailed note if needed + HBufC* promptText = ReadResourceWithDynTextLC( R_QTN_CHAT_AUTOM_CON_FAILED, aServerName ); + CCnUiGlobalNoteContainer* gnc = CCnUiGlobalNoteContainer::NewLC(); + + if ( aNoteTextResourceId != KErrNone ) + { + HBufC* errorText = ReadResourceLC( aNoteTextResourceId ); + gnc->ShowWaitigDetailedNoteL( *promptText, *errorText ); + CleanupStack::PopAndDestroy( errorText ); + } + else + { + //detailed description is empty, default to system error + //compare to CCnUiUiFacade and login / logout errors + HBufC* defaultDetErrDesc = ReadResourceLC( R_QTN_CHAT_ERROR_GEN_ERROR ); + gnc->ShowWaitigDetailedNoteL( *promptText, *defaultDetErrDesc ); + CleanupStack::PopAndDestroy( defaultDetErrDesc ); //defaultDetErrDesc + } + + CleanupStack::PopAndDestroy( 2 ); //gnc, promptText + } + +// ----------------------------------------------------------------------------- +// CCnUiGlobalNotificationUiFacade::CGQActiveConnectionSuppressForScheduledConnectionL() +// ----------------------------------------------------------------------------- +// +TBool CCnUiGlobalNotificationUiFacade::CGQActiveConnectionScheduledCloseL( + const TArray& aClientsToShow ) + { + __ASSERT_ALWAYS( aClientsToShow.Count(), User::Leave( KErrArgument ) ); + + CCnUiClientGroupUiNotifyMediator* cgNM = CCnUiClientGroupUiNotifyMediator::NewLC(); + TBool ret = cgNM->CGQActiveConnectionScheduledCloseL( aClientsToShow ); + CleanupStack::PopAndDestroy( cgNM ); //gnc + return ret; + } + + +// ----------------------------------------------------------------------------- +// CCnUiGlobalNotificationUiFacade::CGQActiveConnectionSuppressForScheduledConnectionL() +// ----------------------------------------------------------------------------- +// +TBool CCnUiGlobalNotificationUiFacade::CGQActiveConnectionSuppressForScheduledConnectionL( + const TDesC& aServerName, + const TArray& aClientsToShow ) + + { + __ASSERT_ALWAYS( aClientsToShow.Count(), User::Leave( KErrArgument ) ); + + CCnUiClientGroupUiNotifyMediator* cgNM = CCnUiClientGroupUiNotifyMediator::NewLC(); + TBool ret = cgNM->CGQActiveConnectionSuppressForScheduledConnectionL( + aServerName, aClientsToShow ); + CleanupStack::PopAndDestroy( cgNM ); //gnc + return ret; + } + + + +// ----------------------------------------------------------------------------- +// CCnUiGlobalNotificationUiFacade::ReadResourceLC() +// ----------------------------------------------------------------------------- +// +HBufC* CCnUiGlobalNotificationUiFacade::ReadResourceLC( TInt aNoteTextResourceId ) + { + //Own resource reader for AA plug-in environment (no CONE facilities available) + + //resource texts are hold in TBUFs + //TBUF == "A utility struct that holds one non-zero-terminated string." + //==> no lead bytes in resource string + + TInt plainResourceId = 0x00000fff & aNoteTextResourceId; // Remove offset from id + HBufC8* rawDataBuf = iResFile.AllocReadLC( plainResourceId ); + + //raw data buffer is actually unicode text ==> treat it so + TPtrC16 rawData( ( TUint16* ) rawDataBuf->Ptr(), + rawDataBuf->Length() / 2 ); + + HBufC16* resourceData = rawData.AllocL(); + CleanupStack::PopAndDestroy( rawDataBuf ); //rawDataBuf + + CleanupStack::PushL( resourceData ); + + return resourceData; + } + + +// ----------------------------------------------------------------------------- +// CCnUiGlobalNotificationUiFacade::ReadResourceWithDynTextLC() +// ----------------------------------------------------------------------------- +// +HBufC* CCnUiGlobalNotificationUiFacade::ReadResourceWithDynTextLC( TInt aNoteTextResourceId, + const TDesC& aInsertText ) + { + //Own dynamic string loader for AA plug-in environment (no CONE facilities available) + + HBufC* resStringBuf = ReadResourceLC( aNoteTextResourceId ); + + TInt reqDynLen = resStringBuf->Length() + aInsertText.Length(); + HBufC* dynStringBuf = HBufC::NewL( reqDynLen ); + TPtr dynString = dynStringBuf->Des(); + StringLoader::Format( dynString, + *resStringBuf, + -1, //No index code in source string + aInsertText ); + + CleanupStack::PopAndDestroy( resStringBuf ); //resStringBuf + CleanupStack::PushL( dynStringBuf ); + return dynStringBuf; + } + + + +// End of File + + +