--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/browserui/browser/BrowserAppSrc/BrowserDisplay.cpp Wed Sep 01 12:31:04 2010 +0100
@@ -0,0 +1,879 @@
+/*
+* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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:
+* Access to display components
+*
+*
+*/
+
+
+// INCLUDE FILES
+// System includes
+#include <aknappui.h>
+#include <aknnavi.h>
+#include <aknnavide.h>
+#include <akntabgrp.h>
+#include <akntitle.h>
+#include <eikenv.h>
+#include <eikspane.h>
+#include <ApEngineConsts.h>
+#include <avkon.hrh>
+#include <bldvariant.hrh>
+#include <FeatMgr.h>
+#include <akneditstateindicator.h>
+#include <aknindicatorcontainer.h>
+#include <AknStatuspaneUtils.h>
+#include <browser_platform_variant.hrh>
+
+#include <wlaninternalpskeys.h> // For WLAN state checking
+
+#include <LayoutMetaData.cdl.h> // For Layout_Meta_Data landscape/portrait status
+
+// User includes
+#include "ApiProvider.h"
+#include "BrowserProgressIndicator.h"
+#include "BrowserDisplay.h"
+#include "BrowserUtil.h"
+#include "Preferences.h"
+#include "CommonConstants.h"
+#include "BrowserWindow.h"
+#include "BrowserWindowManager.h"
+#include "Logger.h"
+
+#include "WlanObserver.h"
+
+#include <BrowserNG.rsg>
+
+// TYPES
+
+struct TIndicatorContainer {
+ TInt locName; // indicator's local name
+ TInt aknName; // indicator's avkon name
+ TInt indState; // indicator's value
+};
+
+// cosmetic macros
+#define _AKN_IND( a ) EAknNaviPaneEditorIndicator ## a
+#define _LOC_IND( a ) ELocalIndicator ## a
+#define _IND_STATE( a ) KLocalIndicators[ _LOC_IND( a ) ].indState
+#define _SET_INDIC( a ) SetIndicatorState( \
+ TUid::Uid( _AKN_IND( a ) ), _IND_STATE( a ) )
+#define _SET_INDIC2( a, b ) SetIndicatorState( \
+ TUid::Uid( _AKN_IND( a ) ), _IND_STATE( a ), b )
+
+// indicators used in this module
+enum {
+ _LOC_IND( SecuredConnection ),
+ _LOC_IND( MessageInfo ),
+ _LOC_IND( ProgressBar ),
+ // _LOC_IND( WaitBar ), //
+ // _LOC_IND( T9 ), //
+ // _LOC_IND( UpperCase ), //
+ // _LOC_IND( LowerCase ), //
+ // _LOC_IND( AudioAttached ), //
+ // _LOC_IND( Objects ), //
+ // _LOC_IND( WmlWaitGlobe ),
+ _LOC_IND( Gprs ),
+ _LOC_IND( WlanAvailable ),
+ _LOC_IND( WlanActive ),
+ _LOC_IND( WlanActiveSecure ),
+ _LOC_IND( FileSize ),
+ // _LOC_IND( MessageLength ), //
+ _LOC_IND( WmlWindows ),
+ _LOC_IND( WmlWindowsText ),
+ _LOC_IND( LastItem )
+};
+
+// CONSTANTS
+_LIT( KBrowserSpaceChar, " " );
+
+// order of the indicators in this structure MUST match the enum definition above!
+LOCAL_D TIndicatorContainer KLocalIndicators[] =
+{
+ { _LOC_IND( SecuredConnection ), _AKN_IND( SecuredConnection ), EAknIndicatorStateOff },
+ { _LOC_IND( MessageInfo ), _AKN_IND( MessageInfo ), EAknIndicatorStateOff },
+ { _LOC_IND( ProgressBar ), _AKN_IND( ProgressBar ), EAknIndicatorStateOff },
+ // { _LOC_IND( WaitBar ), _AKN_IND( WaitBar ), EAknIndicatorStateOff },
+ // { _LOC_IND( T9 ), _AKN_IND( T9 ), EAknIndicatorStateOff },
+ // { _LOC_IND( UpperCase ), _AKN_IND( UpperCase ), EAknIndicatorStateOff },
+ // { _LOC_IND( LowerCase ), _AKN_IND( LowerCase ), EAknIndicatorStateOff },
+ // { _LOC_IND( AudioAttached ), _AKN_IND( AudioAttached ), EAknIndicatorStateOff },
+ // { _LOC_IND( Objects ), _AKN_IND( Objects ), EAknIndicatorStateOff },
+ // { _LOC_IND( WmlWaitGlobe ), _AKN_IND( WmlWaitGlobe ), EAknIndicatorStateOff },
+ { _LOC_IND( Gprs ), _AKN_IND( Gprs ), EAknIndicatorStateOn },
+ { _LOC_IND( WlanAvailable ), _AKN_IND( WlanAvailable ), EAknIndicatorStateOff },
+ { _LOC_IND( WlanActive ), _AKN_IND( WlanActive ), EAknIndicatorStateOff },
+ { _LOC_IND( WlanActiveSecure ), _AKN_IND( WlanActiveSecure ), EAknIndicatorStateOff },
+ { _LOC_IND( FileSize ), _AKN_IND( FileSize ), EAknIndicatorStateOff },
+ // { _LOC_IND( MessageLength ), _AKN_IND( MessageLength ), EAknIndicatorStateOff },
+ { _LOC_IND( WmlWindows ), _AKN_IND( WmlWindows ), EAknIndicatorStateOff },
+ { _LOC_IND( WmlWindowsText ), _AKN_IND( WmlWindowsText ), EAknIndicatorStateOff },
+ { _LOC_IND( LastItem ), 0, 0 }
+};
+
+// ================= MEMBER FUNCTIONS =======================
+
+// C++ default constructor can NOT contain any code, that
+// might leave.
+//
+CBrowserDisplay::CBrowserDisplay( MApiProvider& aApiProvider, CBrowserWindow& aWindow )
+: iApiProvider( aApiProvider ), iWindow( &aWindow )
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// CBrowserDisplay::ConstructL()
+// ---------------------------------------------------------------------------
+//
+void CBrowserDisplay::ConstructL()
+ {
+PERFLOG_LOCAL_INIT
+PERFLOG_STOPWATCH_START
+ iProgressIndicator = CBrowserProgressIndicator::NewL( iApiProvider );
+ iEditorIndicatorContainer = NULL;
+ iTitle = NULL;
+PERFLOG_STOP_WRITE("BrProgressIndicator")
+ InitIndicatorsL(); //for full screen
+
+#ifdef _DEBUG
+ // check the indicator array's integrity
+ TInt i = 0;
+ while( KLocalIndicators[i].locName != _LOC_IND( LastItem ) )
+ {
+ __ASSERT_DEBUG( KLocalIndicators[i].locName == i,
+ Util::Panic( Util::EUnExpected ) );
+ ++i;
+ }
+#endif // _DEBUG
+ }
+
+// ---------------------------------------------------------------------------
+// CBrowserDisplay::NewL()
+// ---------------------------------------------------------------------------
+//
+CBrowserDisplay* CBrowserDisplay::NewL( MApiProvider& aApiProvider, CBrowserWindow& aWindow )
+ {
+ CBrowserDisplay* self = new (ELeave) CBrowserDisplay( aApiProvider, aWindow );
+
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop(); // self
+
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// CBrowserDisplay::~CBrowserDisplay()
+// ---------------------------------------------------------------------------
+//
+CBrowserDisplay::~CBrowserDisplay()
+ {
+ delete iProgressIndicator;
+ delete iEditorIndicatorContainer;
+ delete iTitle;
+ delete iWlanObserver;
+ }
+
+// ---------------------------------------------------------------------------
+// CBrowserDisplay::StatusPane()
+// ---------------------------------------------------------------------------
+//
+CEikStatusPane* CBrowserDisplay::StatusPane() const
+ {
+ return STATIC_CAST( CAknAppUi*, CEikonEnv::Static()->EikAppUi() )->
+ StatusPane();
+ }
+
+// ---------------------------------------------------------------------------
+// CBrowserDisplay::NaviPaneL()
+// ---------------------------------------------------------------------------
+//
+CAknNavigationControlContainer* CBrowserDisplay::NaviPaneL() const
+ {
+ CEikStatusPane* sp = StatusPane();
+ User::LeaveIfNull( sp );
+ return STATIC_CAST( CAknNavigationControlContainer*,
+ sp->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) ) );
+ }
+
+// ---------------------------------------------------------
+// CBrowserDisplay::SetTitleL()
+// ---------------------------------------------------------
+//
+void CBrowserDisplay::SetTitleL( const TDesC& aTitle )
+ {
+PERFLOG_LOCAL_INIT
+PERFLOG_STOPWATCH_START
+ HBufC* temp = aTitle.AllocL();
+ delete iTitle;
+ iTitle = temp;
+ CAknIndicatorContainer* indicContainerEditing = SelectIndicContainerEditing();
+ // Checking to see if we are in contentview so that title is updated for other views like
+ // Bookmarks and Settings. In landscape mode title could be updated all the time regardless of progress bar.
+ if ( !Layout_Meta_Data::IsLandscapeOrientation() &&
+ (indicContainerEditing) && (ApiProvider().LastActiveViewId() == KUidBrowserContentViewId ))
+ {
+ //Under full screen mode, the progress bar is at the bottom and the title should be updated
+ //all the time.
+ if (indicContainerEditing->IndicatorState(
+ TUid::Uid(EAknNaviPaneEditorIndicatorProgressBar) ) != EAknIndicatorStateOn)
+ {
+ RestoreTitleL();
+ }
+ }
+ else
+ {
+ RestoreTitleL();
+ }
+PERFLOG_STOP_WRITE("BrDsply:SetTitle")
+ }
+
+// ---------------------------------------------------------
+// CBrowserDisplay::ClearMessageInfo()
+// ---------------------------------------------------------
+//
+void CBrowserDisplay::ClearMessageInfo()
+ {
+
+ if( iEditorIndicatorContainer != NULL )
+ {
+ CAknIndicatorContainer* indicContainerEditing = SelectIndicContainerEditing();
+ CAknIndicatorContainer* indicContainerOwn = SelectIndicContainerOwn();
+
+ _IND_STATE( MessageInfo ) = EAknIndicatorStateOff;
+ indicContainerEditing->_SET_INDIC( MessageInfo );
+ indicContainerOwn->_SET_INDIC( MessageInfo );
+ }
+ }
+// ---------------------------------------------------------
+// CBrowserDisplay::RestoreTitleL()
+// ---------------------------------------------------------
+//
+void CBrowserDisplay::RestoreTitleL()
+ {
+PERFLOG_LOCAL_INIT
+PERFLOG_STOPWATCH_START
+ if ( (iTitle !=NULL) )
+ {
+
+ if(( iApiProvider.LastActiveViewId() == KUidBrowserContentViewId )
+ && ( iEditorIndicatorContainer != NULL )
+ && (!(AknStatuspaneUtils::StaconPaneActive())) )
+ {
+ CAknIndicatorContainer* indicContainerEditing = SelectIndicContainerEditing();
+ CAknIndicatorContainer* indicContainerOwn = SelectIndicContainerOwn();
+
+ if ( Layout_Meta_Data::IsLandscapeOrientation() )
+ {
+ // Lanscape mode - Title in title pane not navipane/messageinfo
+ ClearMessageInfo();
+ }
+ else
+ { // Portrait mode - Title in navipane/messageinfo
+ _IND_STATE( MessageInfo ) = EAknIndicatorStateOn;
+ indicContainerEditing->_SET_INDIC( MessageInfo );
+ indicContainerOwn->_SET_INDIC( MessageInfo );
+ indicContainerEditing->SetIndicatorValueL(
+ TUid::Uid( _AKN_IND( MessageInfo ) ), *iTitle);
+ indicContainerOwn->SetIndicatorValueL(
+ TUid::Uid( _AKN_IND( MessageInfo ) ), *iTitle);
+ }
+
+ CEikStatusPane* sp = STATIC_CAST( CAknAppUi*,
+ CEikonEnv::Static()->EikAppUi() )->StatusPane();
+ CAknTitlePane* title = STATIC_CAST( CAknTitlePane*,
+ sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
+ title->SetTextL( *iTitle );
+ }
+ else
+ {
+ if( ( iEditorIndicatorContainer != NULL )
+ && ( AknStatuspaneUtils::StaconPaneActive() ) )
+ {
+ CAknIndicatorContainer* indicContainerEditing = SelectIndicContainerEditing();
+ CAknIndicatorContainer* indicContainerOwn = SelectIndicContainerOwn();
+ //turn off other indicator, because both are visible in landscape mode
+ _IND_STATE( MessageInfo ) = EAknIndicatorStateOff;
+ indicContainerEditing->_SET_INDIC2( MessageInfo, ETrue );
+ indicContainerOwn->_SET_INDIC2( MessageInfo, ETrue );
+ }
+
+ // Set title to be page title
+ CEikStatusPane* sp = STATIC_CAST( CAknAppUi*,
+ CEikonEnv::Static()->EikAppUi() )->StatusPane();
+ CAknTitlePane* title = STATIC_CAST( CAknTitlePane*,
+ sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
+ title->SetTextL( *iTitle );
+ }
+
+#ifndef __WINSCW__
+ // Wireless Lan Indicator
+ TInt wlanStateValue;
+ StartWlanObserverL(); // if needed
+ if ( iWlanObserver && iWlanObserver->GetCurrentState(wlanStateValue) )
+ {
+ UpdateWlanIndicator(wlanStateValue);
+ }
+#endif // __WINSCW__
+
+ // Multiple Windows Indicator
+ TInt winCount = iApiProvider.WindowMgr().WindowCount();
+ TBool showMWIndic = (( winCount > 1 ) &&
+ (ApiProvider().LastActiveViewId() == KUidBrowserContentViewId )) ?
+ ETrue : EFalse;
+ UpdateMultipleWindowsIndicatorL( showMWIndic, winCount );
+ }
+PERFLOG_STOP_WRITE("BrDsply:RestoreTitle")
+ }
+
+// ---------------------------------------------------------
+// CBrowserDisplay::SetTitleL()
+// ---------------------------------------------------------
+//
+void CBrowserDisplay::SetTitleL( TInt aResourceId )
+ {
+ HBufC* title = CEikonEnv::Static()->AllocReadResourceLC( aResourceId );
+ SetTitleL( *title );
+ CleanupStack::PopAndDestroy(); // title
+ }
+
+// ---------------------------------------------------------
+// CBrowserDisplay::StartProgressAnimationL()
+// ---------------------------------------------------------
+//
+void CBrowserDisplay::StartProgressAnimationL()
+ {
+PERFLOG_LOCAL_INIT
+PERFLOG_STOPWATCH_START
+LOG_ENTERFN( "Display::StartProgressAnimationL" );
+BROWSER_LOG( ( _L("myWindow: %d, active: %d"),
+ iWindow->WindowId(), iWindow->IsWindowActive() ) );
+ if ( iApiProvider.IsProgressShown() )
+ {
+ // ProgressIndicator doesn't have pointer to its Window or parent Display
+ // so check validity here
+ if( iWindow->IsWindowActive() )
+ {
+ iProgressIndicator->StartL();
+ }
+ // start globe animation
+ iApiProvider.StartProgressAnimationL();
+ }
+PERFLOG_STOP_WRITE("BrDsply: StartPrgAnim")
+ }
+
+// ---------------------------------------------------------
+// CBrowserDisplay::StopProgressAnimationL()
+// ---------------------------------------------------------
+//
+void CBrowserDisplay::StopProgressAnimationL()
+ {
+PERFLOG_LOCAL_INIT
+PERFLOG_STOPWATCH_START
+LOG_ENTERFN( "Display::StopProgressAnimationL" );
+BROWSER_LOG( ( _L("myWindow: %d"), iWindow->WindowId() ) );
+ if ( iApiProvider.IsProgressShown() )
+ {
+ // always stop spinning globe in FavouritesView
+ // most of the cases View::DoDeactivateL() does it
+ // other: e.g. Cancel load in BookmarksView
+ iApiProvider.StopProgressAnimationL();
+
+ if ( !ApiProvider().Fetching() )
+ {
+ if ( iEditorIndicatorContainer != NULL )
+ {
+ CAknIndicatorContainer* indicContainerEditing = SelectIndicContainerEditing();
+ CAknIndicatorContainer* indicContainerOwn = SelectIndicContainerOwn();
+
+ _IND_STATE( FileSize ) = EAknIndicatorStateOff;
+ indicContainerEditing->_SET_INDIC( FileSize );
+ indicContainerOwn->_SET_INDIC( FileSize );
+
+ indicContainerOwn->SetIndicatorValueL(
+ TUid::Uid( _AKN_IND( FileSize ) ), KNullDesC() );
+
+ _IND_STATE( ProgressBar ) = EAknIndicatorStateOff;
+ indicContainerEditing->_SET_INDIC( ProgressBar );
+ indicContainerOwn->_SET_INDIC( ProgressBar );
+
+ if( iTitle )
+ {
+ RestoreTitleL();
+ }
+ iApiProvider.SetProgressShown( EFalse );
+ }
+ iProgressIndicator->StopL();
+ }
+ }
+ PERFLOG_STOP_WRITE("BrDsply: StopPrgAnim")
+ }
+
+// ---------------------------------------------------------
+// CBrowserDisplay::SelectIndicContainerEditing()
+// ---------------------------------------------------------
+//
+CAknIndicatorContainer* CBrowserDisplay::SelectIndicContainerEditing()
+ {
+ CAknIndicatorContainer* indicContainer1 = CAknEnv::Static()->
+ EditingStateIndicator()->IndicatorContainer();
+ return indicContainer1;
+ }
+
+// ---------------------------------------------------------
+// CBrowserDisplay::SelectIndicContainerOwn()
+// ---------------------------------------------------------
+//
+CAknIndicatorContainer* CBrowserDisplay::SelectIndicContainerOwn()
+ {
+ CAknIndicatorContainer* indicContainer2 = STATIC_CAST(
+ CAknIndicatorContainer*, iEditorIndicatorContainer->DecoratedControl() );
+ return indicContainer2;
+ }
+
+// ---------------------------------------------------------
+// CBrowserDisplay::InitIndicatorsL()
+// ---------------------------------------------------------
+//
+void CBrowserDisplay::InitIndicatorsL()
+ {
+ PERFLOG_LOCAL_INIT
+ PERFLOG_STOPWATCH_START
+
+ if (iEditorIndicatorContainer)
+ {
+ return;
+ }
+
+ if ((iEditorIndicatorContainer == NULL))
+ {
+ PERFLOG_LOCAL_INIT
+ PERFLOG_STOPWATCH_START
+ iEditorIndicatorContainer = NaviPaneL()->CreateEditorIndicatorContainerL();
+ PERFLOG_STOP_WRITE(" -> BrDsply: EditorContainer")
+ }
+
+ PERFLOG_STOPWATCH_START
+ CAknIndicatorContainer* indicContainer = SelectIndicContainerOwn();
+
+ _IND_STATE( SecuredConnection ) = EAknIndicatorStateOff;
+ _IND_STATE( MessageInfo ) = EAknIndicatorStateOff;
+ _IND_STATE( ProgressBar ) = EAknIndicatorStateOff;
+ // _IND_STATE( WaitBar ) = EAknIndicatorStateOff;
+ // _IND_STATE( T9 ) = EAknIndicatorStateOff;
+ // _IND_STATE( UpperCase ) = EAknIndicatorStateOff;
+ // _IND_STATE( LowerCase ) = EAknIndicatorStateOff;
+ // _IND_STATE( AudioAttached ) = EAknIndicatorStateOff;
+ // _IND_STATE( Objects ) = EAknIndicatorStateOff;
+ // _IND_STATE( WmlWaitGlobe ) = EAknIndicatorStateOff;
+ _IND_STATE( Gprs ) = EAknIndicatorStateOn;
+
+ _IND_STATE( WlanAvailable ) = EAknIndicatorStateOff;
+ _IND_STATE( WlanActive ) = EAknIndicatorStateOff;
+ _IND_STATE( WlanActiveSecure ) = EAknIndicatorStateOff;
+
+ _IND_STATE( FileSize ) = EAknIndicatorStateOff;
+ // _IND_STATE( MessageLength ) = EAknIndicatorStateOff;
+ _IND_STATE( WmlWindows ) = EAknIndicatorStateOff;
+ _IND_STATE( WmlWindowsText ) = EAknIndicatorStateOff;
+
+ indicContainer->_SET_INDIC( SecuredConnection );
+ indicContainer->_SET_INDIC( MessageInfo );
+ indicContainer->_SET_INDIC( ProgressBar );
+ // indicContainer->_SET_INDIC( WaitBar );
+ // indicContainer->_SET_INDIC( T9 );
+ // indicContainer->_SET_INDIC( UpperCase );
+ // indicContainer->_SET_INDIC( LowerCase );
+ // indicContainer->_SET_INDIC( AudioAttached );
+ // indicContainer->_SET_INDIC( Objects );
+ // indicContainer->_SET_INDIC( WmlWaitGlobe );
+ indicContainer->_SET_INDIC( Gprs );
+
+ indicContainer->_SET_INDIC( WlanAvailable );
+ indicContainer->_SET_INDIC( WlanActive );
+ indicContainer->_SET_INDIC( WlanActiveSecure );
+
+ indicContainer->_SET_INDIC( FileSize );
+ // indicContainer->_SET_INDIC( MessageLength );
+ indicContainer->_SET_INDIC( WmlWindows );
+ indicContainer->_SET_INDIC( WmlWindowsText );
+ PERFLOG_STOP_WRITE( "Display:InitIndicators")
+ }
+
+// ---------------------------------------------------------
+// CBrowserDisplay::UpdateSecureIndicatorL()
+// ---------------------------------------------------------
+//
+void CBrowserDisplay::UpdateSecureIndicatorL( const TInt aState )
+ {
+PERFLOG_LOCAL_INIT
+PERFLOG_STOPWATCH_START
+ if( !iApiProvider.ExitInProgress() )
+ {
+ SetFullScreenSecureIndicatorL(aState);
+ NaviPaneL()->DrawDeferred();
+ }
+PERFLOG_STOP_WRITE( "Display:UpdateSecureIndicator")
+ }
+
+// ---------------------------------------------------------
+// CBrowserDisplay::UpdateFSDownloadInitialIndicator()
+// ---------------------------------------------------------
+//
+void CBrowserDisplay::UpdateFSDownloadInitialIndicator( const TBool aState )
+ {
+PERFLOG_LOCAL_INIT
+PERFLOG_STOPWATCH_START
+ if( !iEditorIndicatorContainer )
+ {
+ InitIndicatorsL();
+ }
+
+ if ( iApiProvider.IsProgressShown() && ( iEditorIndicatorContainer != NULL ) )
+ {
+ CAknIndicatorContainer* indicContainerEditing = SelectIndicContainerEditing();
+ CAknIndicatorContainer* indicContainerOwn = SelectIndicContainerOwn();
+ if (aState)
+ {
+ ClearMessageInfo();
+
+ _IND_STATE( FileSize ) = EAknIndicatorStateOff;
+ indicContainerEditing->_SET_INDIC( FileSize );
+ indicContainerOwn->_SET_INDIC( FileSize );
+ }
+ }
+PERFLOG_STOP_WRITE("BrDsply: GlobeAnimation init")
+ }
+
+// ---------------------------------------------------------
+// CBrowserDisplay::SetGPRSIndicatorOnL()
+// ---------------------------------------------------------
+//
+void CBrowserDisplay::SetGPRSIndicatorOnL()
+ {
+PERFLOG_LOCAL_INIT
+PERFLOG_STOPWATCH_START
+ if ( iEditorIndicatorContainer != NULL )
+ {
+ // Set GPRS indicator on, it will update itself
+ CAknIndicatorContainer* indicContainerEditing = SelectIndicContainerEditing();
+ CAknIndicatorContainer* indicContainerOwn = SelectIndicContainerOwn();
+ _IND_STATE( Gprs ) = EAknIndicatorStateOn;
+ indicContainerEditing->_SET_INDIC( Gprs );
+ indicContainerOwn->_SET_INDIC( Gprs );
+ }
+PERFLOG_STOP_WRITE("BrDsply: Gprsidic on")
+ }
+
+// ---------------------------------------------------------
+// CBrowserDisplay::UpdateWlanIndicator()
+// ---------------------------------------------------------
+//
+void CBrowserDisplay::UpdateWlanIndicator( const TInt aWlanValue )
+ {
+PERFLOG_LOCAL_INIT
+PERFLOG_STOPWATCH_START
+
+ if ( iEditorIndicatorContainer != NULL )
+ {
+ CAknIndicatorContainer* indicContainerEditing = SelectIndicContainerEditing();
+ CAknIndicatorContainer* indicContainerOwn = SelectIndicContainerOwn();
+
+ _IND_STATE( WlanAvailable ) = EAknIndicatorStateOff;
+ indicContainerEditing->_SET_INDIC( WlanAvailable );
+ indicContainerOwn->_SET_INDIC( WlanAvailable );
+
+ _IND_STATE( WlanActive ) = EAknIndicatorStateOff;
+ indicContainerEditing->_SET_INDIC( WlanActive );
+ indicContainerOwn->_SET_INDIC( WlanActive );
+
+ _IND_STATE( WlanActiveSecure ) = EAknIndicatorStateOff;
+ indicContainerEditing->_SET_INDIC( WlanActiveSecure );
+ indicContainerOwn->_SET_INDIC( WlanActiveSecure );
+
+ switch (aWlanValue)
+ {
+ case EPSWlanIndicatorNone:
+ {
+ // do nothing.
+ break;
+ }
+
+ case EPSWlanIndicatorAvailable:
+ {
+ _IND_STATE( WlanAvailable ) = EAknIndicatorStateOn;
+ indicContainerEditing->_SET_INDIC( WlanAvailable );
+ indicContainerOwn->_SET_INDIC( WlanAvailable );
+ break;
+ }
+
+ case EPSWlanIndicatorActive:
+ {
+ _IND_STATE( WlanActive ) = EAknIndicatorStateOn;
+ indicContainerEditing->_SET_INDIC( WlanActive );
+ indicContainerOwn->_SET_INDIC( WlanActive );
+ break;
+ }
+
+ case EPSWlanIndicatorActiveSecure:
+ {
+
+ _IND_STATE( WlanActiveSecure ) = EAknIndicatorStateOn;
+ indicContainerEditing->_SET_INDIC( WlanActiveSecure );
+ indicContainerOwn->_SET_INDIC( WlanActiveSecure );
+ break;
+ }
+
+ default:
+ {
+ // do nothing.
+ break;
+ }
+ }
+ }
+PERFLOG_STOP_WRITE("BrDsply: UpdateWlanIndicator")
+ }
+
+// ---------------------------------------------------------
+// CBrowserDisplay::StartWlanObserverL()
+// ---------------------------------------------------------
+//
+void CBrowserDisplay::StartWlanObserverL()
+ {
+PERFLOG_LOCAL_INIT
+PERFLOG_STOPWATCH_START
+
+ if (iWlanObserver == NULL)
+ {
+ iWlanObserver = new ( ELeave ) CWlanObserver( iApiProvider );
+ }
+
+PERFLOG_STOP_WRITE("BrDsply: Wlan Observer Started")
+ }
+
+// ---------------------------------------------------------
+// CBrowserDisplay::SetFullScreenSecureIndicatorL()
+// ---------------------------------------------------------
+//
+void CBrowserDisplay::SetFullScreenSecureIndicatorL(const TBool aState)
+ {
+PERFLOG_LOCAL_INIT
+PERFLOG_STOPWATCH_START
+ _IND_STATE( SecuredConnection ) = aState;
+ if ( iEditorIndicatorContainer != NULL && iWindow->IsWindowActive() )
+ {
+ CAknIndicatorContainer* indicContainerEditing = SelectIndicContainerEditing();
+ CAknIndicatorContainer* indicContainerOwn = SelectIndicContainerOwn();
+ _IND_STATE( SecuredConnection ) = aState ?
+ EAknIndicatorStateOn : EAknIndicatorStateOff;
+ indicContainerEditing->_SET_INDIC( SecuredConnection );
+ indicContainerOwn->_SET_INDIC( SecuredConnection );
+ }
+PERFLOG_STOP_WRITE("BrDsply: Secure indic upd")
+ }
+
+// ---------------------------------------------------------
+// CBrowserDisplay::AddTransActIdL()
+// ---------------------------------------------------------
+//
+void CBrowserDisplay::AddTransActIdL( TUint16 aId ) const
+ {
+ iProgressIndicator->AddTransActIdL( aId );
+ }
+
+// ---------------------------------------------------------
+// CBrowserDisplay::AddProgressDataL()
+// ---------------------------------------------------------
+//
+void CBrowserDisplay::AddProgressDataL(
+ TUint16 aId, TUint32 aRecvdData, TUint32 aMaxData ) const
+ {
+ iProgressIndicator->AddProgressDataL( aId, aRecvdData, aMaxData );
+ }
+
+// ---------------------------------------------------------
+// CBrowserDisplay::TransActIdComplete()
+// ---------------------------------------------------------
+//
+void CBrowserDisplay::TransActIdComplete( TUint16 aId ) const
+ {
+ TRAP_IGNORE( iProgressIndicator->TransActIdCompleteL( aId ) );
+ }
+
+// ---------------------------------------------------------
+// CBrowserDisplay::StartFSWaitIndicator()
+// ---------------------------------------------------------
+//
+void CBrowserDisplay::StartFSWaitIndicator()
+ {
+ if( iEditorIndicatorContainer != NULL &&
+ iWindow->IsWindowActive() )
+ {
+ CAknIndicatorContainer* indicContainerEditing = SelectIndicContainerEditing();
+ CAknIndicatorContainer* indicContainerOwn = SelectIndicContainerOwn();
+ }
+ }
+
+// ---------------------------------------------------------
+// CBrowserDisplay::UpdateFSProgressIndicator()
+// ---------------------------------------------------------
+//
+void CBrowserDisplay::UpdateFSProgressIndicator( const TInt aMaxData,
+ const TInt aReceivedData )
+ {
+PERFLOG_LOCAL_INIT
+PERFLOG_STOPWATCH_START
+LOG_ENTERFN("UpdateFSProgressIndicator");
+BROWSER_LOG( ( _L( "maxData: %d, recData: %d" ), aMaxData, aReceivedData ) );
+ if ( iApiProvider.IsProgressShown() &&
+ ( iEditorIndicatorContainer != NULL ) &&
+ iWindow->IsWindowActive() )
+ {
+ CAknIndicatorContainer* indicContainerEditing = SelectIndicContainerEditing();
+ CAknIndicatorContainer* indicContainerOwn = SelectIndicContainerOwn();
+
+ if( indicContainerEditing->IndicatorState(
+ TUid::Uid( EAknNaviPaneEditorIndicatorProgressBar ) )
+ != EAknIndicatorStateOn ||
+ indicContainerOwn->IndicatorState(
+ TUid::Uid( EAknNaviPaneEditorIndicatorProgressBar ) )
+ != EAknIndicatorStateOn
+ )
+ {
+ _IND_STATE( ProgressBar ) = EAknIndicatorStateOn;
+ indicContainerEditing->_SET_INDIC2( ProgressBar, ETrue );
+ indicContainerOwn->_SET_INDIC2( ProgressBar, ETrue );
+ }
+
+ indicContainerEditing->SetIndicatorValue(
+ TUid::Uid( EAknNaviPaneEditorIndicatorProgressBar ),
+ aReceivedData, aMaxData );
+ indicContainerOwn->SetIndicatorValue(
+ TUid::Uid( EAknNaviPaneEditorIndicatorProgressBar ),
+ aReceivedData, aMaxData );
+ }
+PERFLOG_STOP_WRITE("BrDsply: Prg indic upd")
+ }
+
+// ---------------------------------------------------------
+// CBrowserDisplay::UpdateFSProgressDataL()
+// ---------------------------------------------------------
+//
+void CBrowserDisplay::UpdateFSProgressDataL( const TDesC16& aReceivedDataText )
+ {
+ PERFLOG_LOCAL_INIT
+ PERFLOG_STOPWATCH_START
+ if ( iApiProvider.IsProgressShown() &&( iEditorIndicatorContainer != NULL ) )
+ {
+ CAknIndicatorContainer* indicContainerEditing =
+ SelectIndicContainerEditing();
+ CAknIndicatorContainer* indicContainerOwn = SelectIndicContainerOwn();
+
+ if( indicContainerEditing->IndicatorState(
+ TUid::Uid( EAknNaviPaneEditorIndicatorMessageInfo ) )
+ != EAknIndicatorStateOff )
+ {
+ ClearMessageInfo();
+ }
+
+ if( indicContainerEditing->IndicatorState(
+ TUid::Uid( EAknNaviPaneEditorIndicatorFileSize ) )
+ != EAknIndicatorStateOn ||
+ indicContainerOwn->IndicatorState(
+ TUid::Uid( EAknNaviPaneEditorIndicatorFileSize ) )
+ != EAknIndicatorStateOn )
+ {
+ _IND_STATE( FileSize ) = EAknIndicatorStateOn;
+ indicContainerEditing->_SET_INDIC( FileSize );
+ indicContainerOwn->_SET_INDIC( FileSize );
+ }
+
+ indicContainerEditing->SetIndicatorValueL(
+ TUid::Uid( _AKN_IND( FileSize ) ), aReceivedDataText );
+ indicContainerOwn->SetIndicatorValueL(
+ TUid::Uid( _AKN_IND( FileSize ) ), aReceivedDataText );
+
+ NaviPaneL()->PushL( *iEditorIndicatorContainer );
+ }
+ PERFLOG_STOP_WRITE("BrDsply: Prg data upd")
+ }
+
+
+// ---------------------------------------------------------
+// CBrowserDisplay::FSPaneOnL()
+// ---------------------------------------------------------
+//
+void CBrowserDisplay::FSPaneOnL()
+ {
+ InitIndicatorsL();
+ NaviPaneL()->PushL(*iEditorIndicatorContainer);
+ }
+
+// ---------------------------------------------------------
+// CBrowserDisplay::NotifyProgress()
+// ---------------------------------------------------------
+//
+void CBrowserDisplay::NotifyProgress()
+ {
+ if ( iProgressIndicator != NULL && iWindow->IsWindowActive() )
+ {
+ iProgressIndicator->NotifyProgress();
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CBrowserDisplay::UpdateMultipleWindowsIndicatorL()
+// ----------------------------------------------------------------------------
+//
+void CBrowserDisplay::UpdateMultipleWindowsIndicatorL(
+ TBool aState, TInt aWinCount )
+ {
+ LOG_ENTERFN("CBrowserDisplay::UpdateMultipleWindowsIndicatorL");
+
+ if ( iEditorIndicatorContainer != NULL )
+ {
+ CAknIndicatorContainer* indicContainerEditing =
+ SelectIndicContainerEditing();
+ CAknIndicatorContainer* indicContainerOwn = SelectIndicContainerOwn();
+
+ // Show or hide MW Icon
+ _IND_STATE( WmlWindows ) = aState ?
+ EAknIndicatorStateOn : EAknIndicatorStateOff;
+ indicContainerEditing->_SET_INDIC( WmlWindows );
+ indicContainerOwn->_SET_INDIC( WmlWindows );
+
+ // Show or hide text indicator
+ _IND_STATE( WmlWindowsText ) = aState ?
+ EAknIndicatorStateOn : EAknIndicatorStateOff;
+ indicContainerEditing->_SET_INDIC( WmlWindowsText );
+ indicContainerOwn->_SET_INDIC( WmlWindowsText );
+
+ if ( aState )
+ {
+ // MW Indicator is made of an indicator icon and a number (num wins)
+
+ // Display Number of windows open in text indicator
+ HBufC* numWins = HBufC::NewLC( 3 );
+ numWins->Des().AppendNum( aWinCount );
+ numWins->Des().Append( KBrowserSpaceChar );
+ indicContainerEditing->SetIndicatorValueL(
+ TUid::Uid( _AKN_IND( WmlWindowsText ) ), *numWins );
+ indicContainerOwn->SetIndicatorValueL(
+ TUid::Uid( _AKN_IND( WmlWindowsText ) ), *numWins );
+ CleanupStack::PopAndDestroy( numWins );
+ }
+ }
+ }
+
+// End of File