hotspotfw/hsbrowser/src/hsbrowsermodel.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 17 Dec 2009 09:20:28 +0200
changeset 0 56b72877c1cb
permissions -rw-r--r--
Revision: 200949 Kit: 200951

/*
* Copyright (c) 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 the model for application.
*
*/



// INCLUDE FILES
#include <es_enum.h>
#include <coemain.h>

#include "hotspotclientserver.h"
#include "hsbrowsermodel.h"
#include "am_debug.h"

// ================= MEMBER FUNCTIONS =======================

// ----------------------------------------------------
// CHsBrowserModel::NewL
// ----------------------------------------------------
//
CHsBrowserModel* CHsBrowserModel::NewL()
	{
	DEBUG( "CHsBrowserModel::NewL()" );
    CHsBrowserModel* self = new(ELeave) CHsBrowserModel();
    CleanupStack::PushL(self);
    self->ConstructL();
    CleanupStack::Pop( self );
    return self;
	}

// ----------------------------------------------------
// CHsBrowserModel::~CHsBrowserModel
// ----------------------------------------------------
//
CHsBrowserModel::~CHsBrowserModel()
	{
	DEBUG( "CHsBrowserModel::~CHsBrowserModel()" );
	if ( iUrl )
		{
		delete iUrl;
		}
    if ( iState != EHsBrowserUiClosed )
        {
        iHsServer.SetUiState( iIapId, EHsBrowserUiClosed );
        }

	iHsServer.Close();
    // Removed iConnection and iSocketServ Close() calls.
    // It seems like Browser Control is freeing them as it's using them also.

	if ( iStaticTitle )
		{
		delete iStaticTitle;
		}
    if ( iPageTitle )
    	{
    	delete iPageTitle;
    	}
    DEBUG( "CHsBrowserModel::~CHsBrowserModel() DONE" );
	}

// ----------------------------------------------------
// CHsBrowserModel::SetState
// ----------------------------------------------------
//
void CHsBrowserModel::SetState( TUint state, TBool sendToHss )
	{
	DEBUG( "CHsBrowserModel::SetState()" );
    iState = state;
    if ( sendToHss )
    	{
    	iHsServer.SetUiState( iIapId, iState );
    	}
	}

// ----------------------------------------------------
// CHsBrowserModel::Attach
// ----------------------------------------------------
//
TInt CHsBrowserModel::Attach()
	{
	DEBUG( "CHsBrowserModel::Attach() 1" );
    TInt err = KErrNone;
    TConnectionInfoBuf currentConnInfo;
	// Open channel to Socket Server
    err = iSocketServ.Connect();
    if ( err != KErrNone)
    	{
    	return err;
    	}
    // Open connection
    err = iConnection.Open( iSocketServ );
    if ( err != KErrNone)
    	{
    	return err;
    	} 
    currentConnInfo().iIapId = iIapId;
    currentConnInfo().iNetId = iNetId;
    
	err = iConnection.Attach( currentConnInfo,
							  RConnection::EAttachTypeMonitor );
	
	if (err != KErrNone)
	    {
	    iConnection.Close(); // Just to be sure...
	    }
	
	return err;
	}

// ----------------------------------------------------
// CHsBrowserModel::CHsBrowserModel
// ----------------------------------------------------
//
CHsBrowserModel::CHsBrowserModel() :
    iIapId( 1 ), 
    iNetId( 0 ),
    iUrl( NULL ),
    iState( 0 ),
    iForeground( ETrue ),
    iLoginCompleteNoteShown( EFalse ),
    iStaticTitle( NULL ),
    iPageTitle( NULL)
    {
    DEBUG( "CHsBrowserModel::CHsBrowserModel()" );
    }

// ----------------------------------------------------
// CHsBrowserModel::ConstructL
// ----------------------------------------------------
//
void CHsBrowserModel::ConstructL()
    {
    DEBUG( "CHsBrowserModel::ConstructL()" );
    User::LeaveIfError( iHsServer.Connect() );
    iPosition = CCoeEnv::Static()->RootWin().OrdinalPosition();
    iPriority = CCoeEnv::Static()->RootWin().OrdinalPriority();
    }

// end of file