diff -r f742655b05bf -r d38647835c2e commsconfig/cscsettingsui/src/cscsettingsuidialog.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/commsconfig/cscsettingsui/src/cscsettingsuidialog.cpp Wed Sep 01 12:29:57 2010 +0100 @@ -0,0 +1,309 @@ +/* +* Copyright (c) 2007-2007 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: Implements CSCSettingsUiDialog methods +* +*/ + + +#include +#include +#include +#include +#include + +#include "cscsettingsuilogger.h" +#include "cscsettingsuidialog.h" +#include "mcscsettingsuidialogobserver.h" + +const TInt KMsgQueryTextMaxLength = 512; +_LIT( KNextLine, "\n" ); +_LIT( KInvalidConnectionAddress, "::1" ); + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// --------------------------------------------------------------------------- +// +CCSCSettingsUiDialog::CCSCSettingsUiDialog( + MCSCSettingsUiDialogObserver& aObserver ) + : CActive ( EPriorityHigh ), + iObserver( aObserver ) + { + } + + +// --------------------------------------------------------------------------- +// --------------------------------------------------------------------------- +// +void CCSCSettingsUiDialog::ConstructL() + { + CSCSETUIDEBUG( "CCSCSettingsUiDialog::ConstructL - begin" ); + + CActiveScheduler::Add( this ); + + CSCSETUIDEBUG( "CCSCSettingsUiDialog::ConstructL - end" ); + } + + +// --------------------------------------------------------------------------- +// --------------------------------------------------------------------------- +// +CCSCSettingsUiDialog* CCSCSettingsUiDialog::NewL( + MCSCSettingsUiDialogObserver& aObserver ) + { + CCSCSettingsUiDialog* self = CCSCSettingsUiDialog::NewLC( aObserver ); + CleanupStack::Pop( self ); + return self; + } + + +// --------------------------------------------------------------------------- +// --------------------------------------------------------------------------- +// +CCSCSettingsUiDialog* CCSCSettingsUiDialog::NewLC( + MCSCSettingsUiDialogObserver& aObserver ) + { + CCSCSettingsUiDialog* self = + new ( ELeave ) CCSCSettingsUiDialog( aObserver ); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + + +// --------------------------------------------------------------------------- +// --------------------------------------------------------------------------- +// +CCSCSettingsUiDialog::~CCSCSettingsUiDialog() + { + Cancel(); + delete iMsgQuery; + } + +// ----------------------------------------------------------------------------- +// CCSCSettingsUiDialog::LaunchMessageQueryL +// Launches a service information message query. +// ----------------------------------------------------------------------------- +// +void CCSCSettingsUiDialog::LaunchMessageQueryL( + const TDesC& aUsername, + const TDesC& aDomain, + const TDesC& aAddress, + const TDesC& aSsid, + const TDesC& aMac, + TBool aDisabled ) + { + CSCSETUIDEBUG( "CCSCSettingsUiDialog::LaunchMessageQueryL" ); + + if ( !IsActive() ) + { + // Create data to be shown in service information message query. + HBufC* queryText = HBufC::NewLC( KMsgQueryTextMaxLength ); + CreateTextForMsgQueryL( + queryText, + aUsername, + aDomain, + aAddress, + aSsid, + aMac, + aDisabled ); + + // Create header text to be shown in information message query. + HBufC* headerText = StringLoader::LoadLC( + R_CSCSETTINGSUI_SERVICE_INFO_TEXT ); + + if ( iMsgQuery ) + { + delete iMsgQuery; + iMsgQuery = NULL; + } + + // Show message query with appropriate header and data. + iMsgQuery = CAknGlobalMsgQuery::NewL(); + iMsgQuery->ShowMsgQueryL( + iStatus, + *queryText, + R_AVKON_SOFTKEYS_OK_EMPTY, + *headerText, + KNullDesC ); + + SetActive(); + CleanupStack::PopAndDestroy( headerText ); + CleanupStack::PopAndDestroy( queryText ); + } + } + + +// ----------------------------------------------------------------------------- +// CCSCSettingsUiDialog::DestroyMessageQuery +// Destroys a service information message query. +// ----------------------------------------------------------------------------- +// +void CCSCSettingsUiDialog::DestroyMessageQuery() + { + Cancel(); + } + + +// --------------------------------------------------------------------------- +// From CActive +// CCSCSettingsUiDialog::RunL +// --------------------------------------------------------------------------- +// +void CCSCSettingsUiDialog::RunL() + { + } + + +// --------------------------------------------------------------------------- +// From CActive +// CCSCSettingsUiDialog::DoCancel +// --------------------------------------------------------------------------- +// +void CCSCSettingsUiDialog::DoCancel() + { + iMsgQuery->CancelMsgQuery(); + } + + +// ----------------------------------------------------------------------------- +// CCSCSettingsUiDialog::CreateTextForMsgQueryL +// Creates text for service information message query. +// ----------------------------------------------------------------------------- +// +void CCSCSettingsUiDialog::CreateTextForMsgQueryL( + HBufC* aText, + const TDesC& aUsername, + const TDesC& aDomain, + const TDesC& aAddress, + const TDesC& aSsid, + const TDesC& aMac, + TBool aDisabled ) const + { + CSCSETUIDEBUG( "CCSCSettingsUiDialog::CreateTextForMsgQueryL - begin" ); + + if ( aText == NULL ) + { + User::Leave( KErrBadHandle ); + } + + // Load resources to memory. + HBufC* unavailable = StringLoader::LoadLC( + R_CSCSETTINGSUI_SERV_INFO_VALUE_UNAVAILABLE ); + HBufC* unavailbleWhenOffile = StringLoader::LoadLC( + R_CSCSETTINGSUI_SERV_INFO_VALUE_UNAVAILABLE_WHEN_OFFLINE ); + + // Add username information to query text. + HBufC* resource = StringLoader::LoadLC( + R_CSCSETTINGSUI_SERVICE_INFO_USERNAME_TEXT ); + CreateItemToMsgQuery( aText, resource, unavailbleWhenOffile, aUsername ); + CleanupStack::PopAndDestroy( resource ); + + // Add domain information to query text. + resource = StringLoader::LoadLC( + R_CSCSETTINGSUI_SERVICE_INFO_DOMAIN_TEXT ); + + if ( aDisabled ) + { + CreateItemToMsgQuery( aText, resource, unavailable, KNullDesC ); + } + else + { + CreateItemToMsgQuery( aText, resource, unavailbleWhenOffile, aDomain ); + } + + CleanupStack::PopAndDestroy( resource ); + + // Add connection address information to query text. + resource = StringLoader::LoadLC( + R_CSCSETTINGSUI_SERVICE_INFO_ADDRESS_TEXT ); + if ( !aAddress.Compare( KInvalidConnectionAddress ) && !aDisabled ) + { + CreateItemToMsgQuery( + aText, resource, unavailable, KNullDesC ); + } + else if ( !aDisabled ) + { + CreateItemToMsgQuery( + aText, resource, unavailable, aAddress ); + } + else + { + CreateItemToMsgQuery( + aText, resource, unavailable, KNullDesC ); + } + + CleanupStack::PopAndDestroy( resource ); + + // Add WLAN SSID information to query text. + resource = StringLoader::LoadLC( + R_CSCSETTINGSUI_SERVICE_INFO_WLAN_SSID_TEXT ); + + if ( aDisabled ) + { + CreateItemToMsgQuery( aText, resource, unavailable, KNullDesC ); + } + else + { + CreateItemToMsgQuery( aText, resource, unavailable, aSsid ); + } + + CleanupStack::PopAndDestroy( resource ); + + // Add WLAN MAC address information to query text. + resource = StringLoader::LoadLC( + R_CSCSETTINGSUI_SERVICE_INFO_WLAN_MAC_TEXT ); + + CreateItemToMsgQuery( aText, resource, unavailable, aMac ); + + CleanupStack::PopAndDestroy( resource ); + + // PopAndDestroy resources. + CleanupStack::PopAndDestroy( unavailbleWhenOffile ); + CleanupStack::PopAndDestroy( unavailable ); + + CSCSETUIDEBUG( "CCSCSettingsUiDialog::CreateTextForMsgQueryL - end" ); + } + +// ----------------------------------------------------------------------------- +// CCSCSettingsUiDialog::CreateItemToMsgQuery +// Creates an item for service information message query. +// ----------------------------------------------------------------------------- +// +void CCSCSettingsUiDialog::CreateItemToMsgQuery( + HBufC* aText, + HBufC* aItem, + HBufC* aAdditionalValue, + const TDesC& aData ) const + { + if ( aText && aItem ) + { + aText->Des().Append( *aItem ); + aText->Des().Append( KNextLine ); + if ( aData.Length() ) + { + aText->Des().Append( aData ); + } + else if ( aAdditionalValue ) + { + aText->Des().Append( *aAdditionalValue ); + } + else + { + // nothing to do + } + + aText->Des().Append( KNextLine ); + } + }