commsconfig/cscsettingsui/src/cscsettingsuidialog.cpp
changeset 0 a4daefaec16c
--- /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 );        
+        }
+    }