--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/commsconfig/cscsettingsui/src/cscsettingsuidialog.cpp Mon Jan 18 20:12:36 2010 +0200
@@ -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 <avkon.rsg>
+#include <stringloader.h>
+#include <aknglobalnote.h>
+#include <cscsettingsui.rsg>
+#include <aknglobalmsgquery.h>
+
+#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 );
+ }
+ }