diff -r 4baee4f15982 -r 6385c4c93049 browserui/browser/BrowserAppSrc/BrowserContentView.cpp --- a/browserui/browser/BrowserAppSrc/BrowserContentView.cpp Thu Aug 19 09:57:56 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3467 +0,0 @@ -/* -* Copyright (c) 2002-2008 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: -* Browser content view -* -* -*/ - - -// INCLUDE FILES -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include // For Layout_Meta_Data landscape/portrait status - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include "CommsModel.h" -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - -#include "Browser.hrh" -#include "BrowserContentView.h" -#include "BrowserContentViewToolbar.h" -#include "BrowserContentViewContainer.h" -#include "BrowserContentViewZoomModeTimer.h" -#include "BrowserBookmarksView.h" -#include "CommonConstants.h" -#include "BrowserAppUi.h" -#include "BrowserGotoPane.h" -#include "Preferences.h" -#include "BrowserPreferences.h" -#include "Display.h" -#include -#include "BrowserBookmarksModel.h" -#include "BrowserDialogs.h" -#include "BrowserUtil.h" -#include "BrowserBmOTABinSender.h" -#include -#include "BrowserUiVariant.hrh" -#include "BrowserAdaptiveListPopup.h" -#include "BrowserApplication.h" -#include "logger.h" -#include -#include "BrowserWindowManager.h" -#include "BrowserWindow.h" -#include "BrowserPopupEngine.h" - -#include -#include -#include -#include -#ifdef RD_SCALABLE_UI_V2 -#include -#endif -#include - -#include "BrowserShortcutKeyMap.h" -_LIT( KSchemaIdentifier, "://" ); -const TInt KSchemaIdentifierLength = 3; - -// Time interval in milliseconds that status pane stays visible after download in fullscreen mode -const TInt KFullScreenStatusPaneTimeout( 3 * 1000000 ); // 3 seconds - -const TInt KAutoFullScreenTimeout( 5 * 1000000 ); // 5 seconds - -const TInt KAutoFullScreenIdleTimeout( 10 * 1000000 ); // 10 seconds -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CBrowserContentView::NewLC -// ----------------------------------------------------------------------------- -// -CBrowserContentView* CBrowserContentView::NewLC( MApiProvider& aApiProvider, - TRect& aRect ) - { - CBrowserContentView* view = - new (ELeave) CBrowserContentView( aApiProvider ); - CleanupStack::PushL(view); - view->ConstructL( aRect ); - - return view; - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::CBrowserContentView -// ----------------------------------------------------------------------------- -// -// Scroll indicators may become deprecated -CBrowserContentView::CBrowserContentView( MApiProvider& aApiProvider ) : - CBrowserViewBase( aApiProvider ), - iZoomMode(EFalse), - iContentFullScreenMode( EFalse ), - iIsPluginFullScreenMode( EFalse), - iWasContentFullScreenMode( EFalse ), - iTitle( NULL ) - { - iFindItemIsInProgress = EFalse; - iWasInFeedsView = EFalse; - iPenEnabled = AknLayoutUtils::PenEnabled(); - iFullScreenBeforeEditModeEntry = EFalse; - } - - -// ----------------------------------------------------------------------------- -// CBrowserContentView::Id -// ----------------------------------------------------------------------------- -// -TUid CBrowserContentView::Id() const - { - return KUidBrowserContentViewId; - } - - -// ----------------------------------------------------------------------------- -// CBrowserContentView::~CBrowserContentView -// ----------------------------------------------------------------------------- -// -CBrowserContentView::~CBrowserContentView() - { - delete iBrowserContentViewToolbar; - delete iNaviDecorator; - delete iBookmarksModel; - delete iContainer; - delete iEnteredKeyword; - delete iTextZoomLevelArray; - delete iFontSizeArray; - delete iZoomModeTimer; - iNaviPane = NULL; - if ( iToolBarInfoNote ) - { - iToolBarInfoNote->HideInfoPopupNote(); - } - delete iToolBarInfoNote; - delete iStylusPopupMenu; - delete iPeriodic; - delete iAutoFSPeriodic; - delete iIdlePeriodic; - delete iTitle; - } - - -// ----------------------------------------------------------------------------- -// CBrowserContentView::ConstructL -// ----------------------------------------------------------------------------- -// -void CBrowserContentView::ConstructL( TRect& aRect ) - { - - BaseConstructL( R_BROWSER_CONTENT_VIEW ); - - ConstructMenuAndCbaEarlyL(); - - iContainer = CBrowserContentViewContainer::NewL( this, ApiProvider() ); - - iEnteredKeyword = NULL; - - // get the StatusPane pointer - if ( !iNaviPane ) - { - CEikStatusPane *sp = ((CAknAppUi*)iEikonEnv->EikAppUi())->StatusPane(); - // Fetch pointer to the default navi pane control - iNaviPane = - (CAknNavigationControlContainer*)sp->ControlL( - TUid::Uid(EEikStatusPaneUidNavi) ); - } - - // Array for zoom levels (..., 70%, 80%, 90%, 100%,... ) - iTextZoomLevelArray = new( ELeave )CArrayFixFlat ( 1 ); - // Array for zoom font sizes ( 1, 2, ... ) - iFontSizeArray = new( ELeave )CArrayFixFlat ( 1 ); - - // Get the possibile zoom levels - GetTextZoomLevelsL(); - iZoomModeTimer = CBrowserContentViewZoomModeTimer::NewL( this ); - - iToolBarInfoNote = CAknInfoPopupNoteController::NewL(); - HBufC* str = StringLoader::LoadLC(R_BROWSER_TOOLTIP_TOOLBAR); - iToolBarInfoNote->SetTextL(*str); - CleanupStack::PopAndDestroy(); - iBrowserContentViewToolbar = CBrowserContentViewToolbar::NewL(this); - if (iPenEnabled) - { - Toolbar()->SetToolbarObserver(this); - Toolbar()->SetFocusing(EFalse); - ShowToolbarOnViewActivation(ETrue); - } - iShortcutKeyMap = NULL; - iHistoryAtBeginning = EFalse; - iHistoryAtEnd = EFalse; - iZoomSliderVisible = EFalse; - iPeriodic = CPeriodic::NewL(CActive::EPriorityIdle); - iAutoFSPeriodic = CPeriodic::NewL(CActive::EPriorityIdle); - iIdlePeriodic = CPeriodic::NewL(CActive::EPriorityIdle); - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::HandleCommandL -// ----------------------------------------------------------------------------- -// -void CBrowserContentView::HandleCommandL( TInt aCommand ) - { - // Disabling FullScreen for non-touch devices, before processing some dialog-based shortcut and toolbar actions - if ( !iPenEnabled && iContentFullScreenMode && ( ( aCommand == EWmlCmdFindKeyword ) || - ( aCommand == EWmlCmdHistory ) || - ( aCommand == EWmlCmdGoToAddress ) || - ( aCommand == EWmlCmdShowShortcutKeymap ) || - ( aCommand == EWmlCmdShowMiniature )|| - ( aCommand == EWmlCmdShowToolBar)) ) - { - iWasContentFullScreenMode = iContentFullScreenMode; - EnableFullScreenModeL( EFalse ); - } - - // resume js timers - ApiProvider().BrCtlInterface().HandleCommandL((TInt)TBrCtlDefs::ECommandIdBase + (TInt)TBrCtlDefs::ECommandResumeScriptTimers ); - -#ifdef RD_SCALABLE_UI_V2 - // Close the extended toolbar whenever any item on it is selected - if ( iPenEnabled && Toolbar()->ToolbarExtension()->IsShown() ) - { - Toolbar()->ToolbarExtension()->SetShown( EFalse ); - StartAutoFullScreenTimer(); - } -#endif - -#ifdef __RSS_FEEDS - // Handle the subscribe to submenu. - TInt cmd = aCommand - TBrCtlDefs::ECommandIdBase; - - if ((cmd >= TBrCtlDefs::ECommandIdSubscribeToBase) && - (cmd < TBrCtlDefs::ECommandIdPluginBase)) - { - HandleSubscribeToL(cmd); - return; - } -#endif // __RSS_FEEDS - - if ( ( aCommand != EWmlCmdZoomSliderShow ) && ZoomSliderVisible() ) - { - MakeZoomSliderVisibleL( EFalse ); - } - switch ( aCommand ) - { - case EWmlCmdSetAsHomePage: - { - HBufC* url = ApiProvider().BrCtlInterface().PageInfoLC(TBrCtlDefs::EPageInfoUrl); - if ( url && url->Length() && TBrowserDialogs::ConfirmQueryYesNoL(R_BROWSER_QUERY_SET_AS_HOME_PAGE)) - { - ApiProvider().Preferences().SetHomePageUrlL(url->Des()); - ApiProvider().Preferences().SetHomePageTypeL( EWmlSettingsHomePageAddress ); - } - CleanupStack::PopAndDestroy(); // url - break; - } - case EWmlCmdFavourites: - { - ApiProvider().SetViewToBeActivatedIfNeededL( - KUidBrowserBookmarksViewId ); - break; - } - - case EWmlCmdHistory: - { - ViewHistoryL(); - break; - } - - case EWmlCmdHistoryBack: - { - ApiProvider().BrCtlInterface().HandleCommandL( - (TInt)TBrCtlDefs::ECommandHistoryNavigateBack + - (TInt)TBrCtlDefs::ECommandIdBase ); - UpdateTitleL( iApiProvider ); - break; - } - case EWmlCmdHistoryForward: - { - ApiProvider().BrCtlInterface().HandleCommandL( - (TInt)TBrCtlDefs::ECommandHistoryNavigateForward + - (TInt)TBrCtlDefs::ECommandIdBase ); - UpdateTitleL( iApiProvider ); - break; - } - // Set search pane active and then launch editor. - case EIsCmdSearchWeb: - { -#ifdef BRDO_SINGLE_CLICK_ENABLED_FF - CEikButtonGroupContainer* cba = Cba()->Current(); - CEikCba* eikCba = static_cast( cba->ButtonGroup() ); - if( eikCba ) - { - eikCba->EnableItemSpecificSoftkey( EFalse ); - } -#endif - iContainer->GotoPane()->SetSearchPaneActiveL(); - LaunchGotoAddressEditorL(); - break; - } - case EWmlCmdGoToAddress: - case EWmlCmdGoToAddressAndSearch: - { -#ifdef BRDO_SINGLE_CLICK_ENABLED_FF - CEikButtonGroupContainer* cba = Cba()->Current(); - CEikCba* eikCba = static_cast( cba->ButtonGroup() ); - if( eikCba ) - { - eikCba->EnableItemSpecificSoftkey( EFalse ); - } -#endif - iContainer->GotoPane()->SetGotoPaneActiveL(); - LaunchGotoAddressEditorL(); - - // pause js timer to allow quicke vkb response - ApiProvider().BrCtlInterface().HandleCommandL((TInt)TBrCtlDefs::ECommandIdBase + (TInt)TBrCtlDefs::ECommandPauseScriptTimers ); - break; - } - - case EWmlCmdGotoPaneCancel: - { - CCoeEnv::Static()->AppUi()->RemoveFromStack( iContainer->GotoPane() ); - // Cancel editing and sets Goto Pane text back. - if (iContainer->GotoPane()->PopupList() != NULL) - { - iContainer->GotoPane()->PopupList()->SetDirectoryModeL( ETrue ); - iContainer->GotoPane()->PopupList()->HidePopupL(); - } - iContainer->ShutDownGotoURLEditorL(); - UpdateCbaL(); - if (iPenEnabled) - { - Toolbar()->SetDimmed(EFalse); - Toolbar()->DrawNow(); - iBrowserContentViewToolbar->UpdateButtonsStateL(); - } - if ( ApiProvider().Preferences().FullScreen() == EWmlSettingsFullScreenFullScreen ) - { - MakeCbaVisible( EFalse ); - } - if (iPenEnabled) - { - StartAutoFullScreenTimer(); - } - break; - } - - case EWmlCmdGotoPaneGoTo: - { - HBufC* input = iContainer->GotoPane()->GetTextL(); - CleanupStack::PushL( input ); - if( iContainer->GotoPane()->GotoPaneActive() ) - { - if ((input) && (input->CompareF(KWWWString)) && input->Length() ) - { - if (iPenEnabled) - { - Toolbar()->SetDimmed(EFalse); - Toolbar()->DrawNow(); - } - CCoeEnv::Static()->AppUi()->RemoveFromStack( iContainer->GotoPane() ); - // Cancel editing and sets Goto Pane text back. - if (iContainer->GotoPane()->PopupList() != NULL) - { - iContainer->GotoPane()->PopupList()->SetDirectoryModeL( ETrue ); - iContainer->GotoPane()->PopupList()->HidePopupL(); - } - GotoUrlInGotoPaneL(); - if ( ApiProvider().Preferences().FullScreen() == EWmlSettingsFullScreenFullScreen ) - { - MakeCbaVisible( EFalse ); - } - } - } - else - { - // Search Editor was active, So launch Search application with - // search parameters and cancel editing of search and goto. - if ( (input) && input->Length() ) - { - if (iPenEnabled) - { - Toolbar()->SetDimmed(EFalse); - Toolbar()->DrawNow(); - } - - CCoeEnv::Static()->AppUi()->RemoveFromStack( iContainer->GotoPane() ); - if ( iContainer->GotoPane() ) - { - iContainer->ShutDownGotoURLEditorL(); - LaunchSearchApplicationL( *input ); - } - UpdateCbaL(); - UpdateFullScreenL(); - } - } - CleanupStack::PopAndDestroy( input ); - if (iPenEnabled) - { - StartAutoFullScreenTimer(); - } - break; - } - - case EWmlCmdGotoPaneSelect: - { - // Cancel editing and sets Goto Pane text back. - if (iContainer->GotoPane()->PopupList() != NULL) - { - iContainer->GotoPane()->PopupList()->SetDirectoryModeL( ETrue ); - iContainer->GotoPane()->PopupList()->HidePopupL(); - } - // set LSK to GOTO now - UpdateCbaL(); - break; - } - - //adaptive popuplist - case EWmlCmdOpenFolder: - { - if (iContainer->GotoPane()->PopupList() != NULL) - { - iContainer->GotoPane()->PopupList()->SetDirectoryModeL( EFalse ); - } - break; - } - - case EAknSoftkeyCancel: - { - if ( isZoomMode() ) - { - SaveCurrentZoomLevel(EFalse); - //reset the zooming to the original settings - SetZoomModeL( EFalse ); - //Exit in zooming, enable the cursor - ApiProvider().BrCtlInterface().HandleCommandL( - (TInt)TBrCtlDefs::ECommandZoomSliderHide + - (TInt)TBrCtlDefs::ECommandIdBase ); - } - - if (iSynchRequestViewIsUp) - { - ApiProvider().BrCtlInterface().HandleCommandL( (TInt)TBrCtlDefs::ECommandCancelFetch + (TInt)TBrCtlDefs::ECommandIdBase ); - } - else - { - ApiProvider().BrCtlInterface().HandleCommandL( (TInt)TBrCtlDefs::ECommandCancel + (TInt)TBrCtlDefs::ECommandIdBase ); - } - break; - } - - case EWmlCmdSaveAsBookmark: - { - AddNewBookmarkL(EFalse); - break; - } - - // UI notifies the BrCtl which calls the DialogsProvider with a list of images - case EWmlCmdShowImages: - { - ApiProvider().BrCtlInterface().HandleCommandL( - (TInt)TBrCtlDefs::ECommandShowImages + - (TInt)TBrCtlDefs::ECommandIdBase ); - break; - } - - case EWmlCmdShowMiniature: - { - if (ApiProvider().Preferences().UiLocalFeatureSupported( KBrowserGraphicalPage ) && - !ApiProvider().WindowMgr().CurrentWindow()->HasWMLContent(ETrue)) - { - ApiProvider().BrCtlInterface().HandleCommandL( - (TInt)TBrCtlDefs::ECommandShowThumbnailView + (TInt)TBrCtlDefs::ECommandIdBase ); - } - break; - } - - // Download Manager UI Library shows a list of ongoing downloads - case EWmlCmdDownloads: - { - ApiProvider().BrCtlInterface().HandleCommandL( - (TInt)TBrCtlDefs::ECommandShowDownloads + - (TInt)TBrCtlDefs::ECommandIdBase ); - break; - } - - // Loads images on a page - case EWmlCmdLoadImages: - { - ApiProvider().BrCtlInterface().HandleCommandL( - (TInt)TBrCtlDefs::ECommandLoadImages + - (TInt)TBrCtlDefs::ECommandIdBase ); - ApiProvider().WindowMgr().CurrentWindow()->SetImagesLoaded(ETrue); - break; - } - - // UI notifies the BrCtl which calls the DialogsProvider to show the toolbar - case EWmlCmdShowToolBar: - { - if ( !PenEnabled() && iApiProvider.Preferences().ShowToolbarOnOff() && - !iApiProvider.WindowMgr().CurrentWindow()->WMLMode() ) - { - iToolBarInfoNote->ShowInfoPopupNote(); - ApiProvider().BrCtlInterface().HandleCommandL( - (TInt)TBrCtlDefs::ECommandShowToolBar + - (TInt)TBrCtlDefs::ECommandIdBase ); - } - - break; - } - //zoom in and set the cursor's position for non-touch - case EWmlCmdZoomIn: - { - if ( ApiProvider().ContentDisplayed() && !ApiProvider().WindowMgr().CurrentWindow()->WMLMode() ) - { - ApiProvider().BrCtlInterface().HandleCommandL( - (TInt)TBrCtlDefs::ECommandZoomIn + - (TInt)TBrCtlDefs::ECommandIdBase ); - ZoomImagesInL(); - } - break; - } - - //zoom out and set the cursor's position for non-touch - case EWmlCmdZoomOut: - { - if ( ApiProvider().ContentDisplayed() && !ApiProvider().WindowMgr().CurrentWindow()->WMLMode() ) - { - ApiProvider().BrCtlInterface().HandleCommandL( - (TInt)TBrCtlDefs::ECommandZoomOut + - (TInt)TBrCtlDefs::ECommandIdBase ); - ZoomImagesOutL(); - } - break; - } - - /* Zoom Mode currently disabled - case EWmlCmdZoomMode: - { - // Disable the cursor: by using the zoom slider show cmd (temp) - ApiProvider().BrCtlInterface().HandleCommandL( - (TInt)TBrCtlDefs::ECommandZoomSliderShow + - (TInt)TBrCtlDefs::ECommandIdBase ); - - // Disable any activated objects (i.e. plugins, input boxes) - ApiProvider().BrCtlInterface().HandleCommandL( - (TInt)TBrCtlDefs::ECommandCancel + - (TInt)TBrCtlDefs::ECommandIdBase ); - - // Display softkeys if in full screen mode. i.e. go to normal screen - if ( !iPenEnabled && iContentFullScreenMode ) - { - iWasContentFullScreenMode = iContentFullScreenMode; - EnableFullScreenModeL( EFalse ); - } - - // Enter zoom mode - ZoomModeImagesL(); - break; - } - */ - - case EWmlCmdZoomSliderShow: - { - // Toggle displaying the zoom slider, when the zoom button - // on toolbar is selected - MakeZoomSliderVisibleL( !iZoomSliderVisible ); - break; - } - case EWmlCmdZoomSliderHide: - { - // Currently not used - MakeZoomSliderVisibleL( EFalse ); - break; - } - - // Find keyword commands - case EWmlCmdFindKeyword: - { - LaunchFindKeywordEditorL(); - break; - } - - case EWmlCmdFindKeywordPaneFind : - { - break; - } - - case EWmlCmdFindKeywordPaneClose : - { - iContainer->FindKeywordPane()->ResetPrevText(); - CCoeEnv::Static()->AppUi()->RemoveFromStack( iContainer->FindKeywordPane() ); - // Cancel editing and sets Goto Pane text back. - iContainer->ShutDownFindKeywordEditorL(); - UpdateCbaL(); - if (iPenEnabled) - { - iBrowserContentViewToolbar->UpdateButtonsStateL(); - } - - ApiProvider().BrCtlInterface().HandleCommandL( - (TInt)TBrCtlDefs::ECommandClearFind + - (TInt)TBrCtlDefs::ECommandIdBase ); - - if ( ApiProvider().Preferences().FullScreen() == EWmlSettingsFullScreenFullScreen ) - { - MakeCbaVisible( EFalse ); - } - if (iPenEnabled) - { - StartAutoFullScreenTimer(); - } - break; - } - - case EWmlCmdFindNext : - { - // Find next keyword - FindKeywordL( NULL, ETrue ); - break; - } - case EWmlCmdFindPrevious : - { - // Find previous keyword - FindKeywordL( NULL, EFalse ); - break; - } - - case EAknSoftkeySelect: - { - if( iHistoryViewIsUp ) - { - if ( !iPenEnabled && iWasContentFullScreenMode && !iContentFullScreenMode ) - { - EnableFullScreenModeL( ETrue ); - iWasContentFullScreenMode = EFalse; - } - - ApiProvider().BrCtlInterface().HandleCommandL( - (TInt)TBrCtlDefs::ECommandOpen + (TInt)TBrCtlDefs::ECommandIdBase ); - } - - // Save zoom factor and quit the zoom mode - if ( isZoomMode() ) - { - SaveCurrentZoomLevel(ETrue); - // Disable the zoom mode - SetZoomModeL( EFalse ); - // Return to full screen, if we were in full screen before - if ( !iPenEnabled && iWasContentFullScreenMode && !iContentFullScreenMode ) - { - EnableFullScreenModeL( ETrue ); - iWasContentFullScreenMode = EFalse; - } - // Exiting zoom mode, enable the cursor - ApiProvider().BrCtlInterface().HandleCommandL( - (TInt)TBrCtlDefs::ECommandZoomSliderHide + - (TInt)TBrCtlDefs::ECommandIdBase ); - } - break; - } - case EAknSoftkeyOk: - { - if( iThumbnailViewIsUp ) - { - if ( !iPenEnabled && iWasContentFullScreenMode && !iContentFullScreenMode ) - { - EnableFullScreenModeL( ETrue ); - iWasContentFullScreenMode = EFalse; - } - - ApiProvider().BrCtlInterface().HandleCommandL( - (TInt)TBrCtlDefs::ECommandOpen + (TInt)TBrCtlDefs::ECommandIdBase ); - } - break; - } - - case EAknSoftkeyClose: - { - if( iWasInFeedsView) - { - // FeedsView library - - } - else - { - if ( isZoomMode() ) - { - SetZoomModeL( EFalse ); - } - AppUi()->HandleCommandL( EWmlCmdCloseWindow ); - } - break; - } - - case EWmlCmdSendAddressViaUnifiedMessage: - { - SendAddressL( ); - } - break; - - case EWmlCmdBack: - { - if( iWasInFeedsView) - { - // FeedsView library - - } - else if( iImageMapActive ) - { - ApiProvider().BrCtlInterface().HandleCommandL( - (TInt)TBrCtlDefs::ECommandBack + - (TInt)TBrCtlDefs::ECommandIdBase ); - } - else if( ApiProvider().BrCtlInterface().NavigationAvailable( - TBrCtlDefs::ENavigationBack ) ) - { - AppUi()->HandleCommandL( aCommand ); - } - else - { - AppUi()->HandleCommandL( EWmlCmdCloseWindow ); - } - break; - } - - case EWmlCmdOneStepBack: - { - if( ApiProvider().BrCtlInterface().NavigationAvailable(TBrCtlDefs::ENavigationBack ) ) - { - AppUi()->HandleCommandL( aCommand ); - } - break; - } - - case EAknCmdHelp: - { - if ( HELP ) - { - AppUi()->HandleCommandL( EAknCmdHelp ); - } - break; - } - - case EWmlCmdCancelFetch: - { - // give it to AppUi - AppUi()->HandleCommandL( aCommand ); - break; - } - - case EWmlCmdOpenLinkInNewWindow: - { - iApiProvider.BrCtlInterface().HandleCommandL( - (TInt)TBrCtlDefs::ECommandOpenNewWindow + (TInt)TBrCtlDefs::ECommandIdBase ); - break; - } - - case EWmlCmdOpenLink: - { - iApiProvider.BrCtlInterface().HandleCommandL( - (TInt)TBrCtlDefs::ECommandOpen + (TInt)TBrCtlDefs::ECommandIdBase ); - break; - } - - case EWmlCmdShowSubscribeList: - { - const RPointerArray& subscribeToList = iApiProvider.BrCtlInterface().SubscribeToMenuItemsL(); - TInt len(subscribeToList.Count()); - if (len > 0) - { - CArrayFixFlat* optList = new( ELeave ) CArrayFixFlat(10); - CleanupStack::PushL( optList ); - HBufC* title = StringLoader::LoadLC(R_BROWSER_SUBSCRIBE_LIST); - TInt i; - for(i = 0; i < len; i++) - { - if(subscribeToList[i]->Title().Length()) - { - TBrCtlSelectOptionData t(subscribeToList[i]->Title(), EFalse, EFalse, EFalse); - optList->AppendL(t); - } - else - { - TBrCtlSelectOptionData t(subscribeToList[i]->Url(), EFalse, EFalse, EFalse); - optList->AppendL(t); - } - } - TBool ret(ApiProvider().DialogsProvider().DialogSelectOptionL( *title, ESelectTypeNone, *optList)); - if( ret ) - { - TInt i; - for (i = 0; i < optList->Count(); i++) - { - if ((*optList)[i].IsSelected()) - { - HandleSubscribeToL(subscribeToList[i]->CommandID() - TBrCtlDefs::ECommandIdBase); - break; - } - } - } - optList->Reset(); - CleanupStack::PopAndDestroy( 2 ); // optList, title - } - break; - } - - case EWmlCmdHome: - if (ApiProvider().Preferences().HomePageType() == EWmlSettingsHomePageAddress ) - { - HBufC* url = HBufC::NewLC( KMaxHomePgUrlLength ); - TPtr ptr( url->Des() ); - User::LeaveIfError(ApiProvider().Preferences().HomePageUrlL( ptr )); - ApiProvider().FetchL( ptr ); - CleanupStack::PopAndDestroy(); // url - } - else - { - HBufC* url = ApiProvider().BrCtlInterface().PageInfoLC(TBrCtlDefs::EPageInfoUrl); - if ( url && url->Length() && TBrowserDialogs::ConfirmQueryYesNoL(R_BROWSER_QUERY_SET_AS_HOME_PAGE)) - { - ApiProvider().Preferences().SetHomePageUrlL(url->Des()); - ApiProvider().Preferences().SetHomePageTypeL( EWmlSettingsHomePageAddress ); - } - CleanupStack::PopAndDestroy(); // url - } - break; - - case EWmlCmdGo: - break; - - case EWmlCmdConfigureShortcutKeymap: - { - ApiProvider().SetViewToBeActivatedIfNeededL( KUidBrowserSettingsViewId, KUidSettingsGotoShortcutsGroup.iUid ); - break; - } - - case EWmlCmdShowShortcutKeymap: - { - ShowKeymap(); - break; - } - - case EWmlCmdHideShortcutKeymap: - { - HideKeymap(); - break; - } - - case EWmlCmdOpenFeedsFolder: - // Launch into feeds view, telling it that we came from content view - ApiProvider().FeedsClientUtilities().ShowFolderViewL(KUidBrowserContentViewId); - break; - - case EWmlCmdEnterFullScreenBrowsing: - { - if ( iPenEnabled ) - { - EnableFullScreenModeL( ETrue ); - } - else - { - if ( iContentFullScreenMode ) - { - EnableFullScreenModeL( EFalse ); - } - else - { - EnableFullScreenModeL( ETrue ); - } - } - break; - } - - case EWmlCmdExitFullScreenBrowsing: - EnableFullScreenModeL( EFalse ); - break; - - default: - { - // DO element and toolbar commands are passed to BrCtl via AppUi - AppUi()->HandleCommandL( aCommand ); - break; - } - } // end of switch (aCommand) - - // Enabling FullScreen for non-touch devices, after processing some dialog-based shortcut and toolbar actions - if ( !iPenEnabled && iWasContentFullScreenMode && !iContentFullScreenMode && - ( ( aCommand == EWmlCmdFindKeywordPaneClose ) || - ( aCommand == EWmlCmdHideShortcutKeymap ) || - ( aCommand == EWmlCmdGotoPaneGoTo ) || - ( aCommand == EWmlCmdGotoPaneCancel ) || - ( aCommand == EAknSoftkeyCancel ) ) ) - { - EnableFullScreenModeL( ETrue ); - iWasContentFullScreenMode = EFalse; - } - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::ViewHistoryL -// ----------------------------------------------------------------------------- -// -void CBrowserContentView::ViewHistoryL() - { - ApiProvider().BrCtlInterface().HandleCommandL( - (TInt)TBrCtlDefs::ECommandShowHistory + - (TInt)TBrCtlDefs::ECommandIdBase ); - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::DoActivateL -// ----------------------------------------------------------------------------- -// -void CBrowserContentView::DoActivateL( - const TVwsViewId& /*aPrevViewId*/, - TUid /*aCustomMessageId*/, - const TDesC8& /*aCustomMessage*/ ) - { -PERFLOG_LOCAL_INIT -PERFLOG_STOPWATCH_START - CBrowserAppUi* ui; - - ui = STATIC_CAST( CBrowserAppUi*, AppUi() ); - iPreviousViewID = ApiProvider().LastActiveViewId(); - if ( ui->LastActiveViewId() == KUidBrowserNullViewId ) - { - //No view has been yet set as startup view -> use bookmarks view - ui->SetLastActiveViewId ( KUidBrowserBookmarksViewId ); - ui->SetViewToBeActivatedIfNeededL( ui->LastActiveViewId() ); - ApiProvider().SetLastActiveViewId ( ui->LastActiveViewId() ); - } - else - { - HandleStatusPaneCallBack(); - ApiProvider().SetLastActiveViewId(Id()); - } - - iContainer->ActivateL(); - - AppUi()->AddToViewStackL( *this, iContainer ); - - //Reset the title before updating the title in case of view activation - delete iTitle; - iTitle = NULL; - - ApiProvider().Display().FSPaneOnL( ); - ApiProvider().Display().SetGPRSIndicatorOnL(); - - UpdateTitleL( ApiProvider() ); - - ApiProvider().BrCtlInterface().MakeVisible(ETrue); - ApiProvider().BrCtlInterface().HandleCommandL( (TInt)TBrCtlDefs::ECommandGainFocus + - (TInt)TBrCtlDefs::ECommandIdBase); - - if( ui->Connection().Connected() && - !ui->Preferences().HttpSecurityWarningsStatSupressed() ) - { - // Update security indicators - if ( ui->SomeItemsNotSecure() ) - { - ui->Display().UpdateSecureIndicatorL( EAknIndicatorStateOff ); - } - else - { - ui->Display().UpdateSecureIndicatorL( - ui->LoadObserver().LoadStatus( - CBrowserLoadObserver::ELoadStatusSecurePage ) ? - EAknIndicatorStateOn : EAknIndicatorStateOff ); - } - } - UpdateCbaL(); - if(KeymapIsUp()) - { - RedrawKeymap(); - } - - if (iPenEnabled) - { - StartAutoFullScreenTimer(); - } - iContainer->SetRect(ClientRect()); -PERFLOG_STOP_WRITE("ContentView::DoActivate") - } - - -// ----------------------------------------------------------------------------- -// CBrowserContentView::UpdateFullScreenL -// ----------------------------------------------------------------------------- -// -void CBrowserContentView::UpdateFullScreenL() - { - TVwsViewId activeViewId; - if ( AppUi()->GetActiveViewId( activeViewId ) == KErrNone ) - { - if ( activeViewId.iViewUid == KUidBrowserContentViewId ) - { - if ( iContentFullScreenMode ) - { - SetContentContainerRect(); - if (iPenEnabled) - { - Toolbar()->SetToolbarVisibility( EFalse, EFalse ); - Toolbar()->MakeVisible( EFalse ); - } - if(Cba()->IsVisible()) - { - Cba()->MakeVisible( EFalse ); - UpdateCbaL(); - } - if (!ApiProvider().Fetching()) - { - if(StatusPane()->IsVisible()) - { - StatusPane()->MakeVisible(EFalse); - } - } - else - { - if(!StatusPane()->IsVisible()) - { - ShowFsStatusPane(ETrue); - } - } - } - else - { - Cba()->MakeVisible( ETrue ); - StatusPane()->MakeVisible( ETrue ); - } - - ApiProvider().Display().FSPaneOnL( ); - ApiProvider().Display().SetGPRSIndicatorOnL(); - - //Reset the title before updating the title in case of view activation - delete iTitle; - iTitle = NULL; - UpdateTitleL(ApiProvider()); - ApiProvider().Display().RestoreTitleL(); - StatusPane()->ApplyCurrentSettingsL(); - } - } - } - -TRect CBrowserContentView::ResizeClientRect() - { - TRect clientRect = ClientRect(); - - if(iContentFullScreenMode && (Toolbar() && Toolbar()->IsVisible()) && Cba()->IsVisible()) - { - TRect screenRect; - AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EApplicationWindow, screenRect); - clientRect = screenRect; - } - - if (Layout_Meta_Data::IsLandscapeOrientation() && - (StatusPane() && StatusPane()->IsVisible()) && !Cba()->IsVisible() && IsForeground()) - { - TRect screenRect; - AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EScreen, screenRect); - clientRect.iBr.iY = screenRect.iBr.iY; - - } - - return clientRect; - } - -void CBrowserContentView::SetContentContainerRect() - { - TRect clientRect = ResizeClientRect(); - iContainer->SetRect(clientRect); - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::SetFullScreenOffL -// ----------------------------------------------------------------------------- -// -void CBrowserContentView::SetFullScreenOffL() - { - TVwsViewId activeViewId; - if ( AppUi()->GetActiveViewId( activeViewId ) == KErrNone ) - { - Cba()->MakeVisible( ETrue ); - UpdateCbaL(); - if ( Layout_Meta_Data::IsLandscapeOrientation() ) - StatusPane()->SwitchLayoutL(R_AVKON_STATUS_PANE_LAYOUT_USUAL); - StatusPane()->ApplyCurrentSettingsL(); - StatusPane()->MakeVisible( ETrue ); - iContainer->SetRect( ClientRect() ); - } - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::SetZoomLevelL -// ----------------------------------------------------------------------------- -// -void CBrowserContentView::SetZoomLevelL() - { - // Get the current index of the array. - iCurrentZoomLevel = ApiProvider().BrCtlInterface(). - BrowserSettingL(TBrCtlDefs::ESettingsCurrentZoomLevelIndex); - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::DoDeactivate -// ----------------------------------------------------------------------------- -// -void CBrowserContentView::DoDeactivate() - { - if ( !ApiProvider().ExitInProgress() ) - { - TBrCtlDefs::TBrCtlElementType focusedElementType = - ApiProvider().BrCtlInterface().FocusedElementType(); - if (focusedElementType == TBrCtlDefs::EElementActivatedInputBox) - { - ApiProvider().BrCtlInterface().HandleCommandL( (TInt)TBrCtlDefs::ECommandAccept + - (TInt)TBrCtlDefs::ECommandIdBase ); - } - TRAP_IGNORE( ApiProvider().Display().UpdateSecureIndicatorL( - EAknIndicatorStateOff )); - iContainer->SetFocus( EFalse ); - - EnableFullScreenModeL( EFalse); - - TRAP_IGNORE( ApiProvider().BrCtlInterface().HandleCommandL( - (TInt)TBrCtlDefs::ECommandLoseFocus + - (TInt)TBrCtlDefs::ECommandIdBase ) ); - ApiProvider().BrCtlInterface().MakeVisible(EFalse); - } - - AppUi()->RemoveFromViewStack( *this, iContainer ); - } - -// ---------------------------------------------------------------------------- -// CBrowserContentView::CommandSetResourceIdL -// ---------------------------------------------------------------------------- -// -TInt CBrowserContentView::CommandSetResourceIdL() - { - LOG_ENTERFN("ContentView::CommandSetResourceIdL"); - - // default case for normal screen - TInt result( R_BROWSER_DEFAULT_BUTTONS ); - - // default case for full screen - if ( iContentFullScreenMode ) - { - result = R_BROWSER_SOFTKEYS_EXIT_FULL_SCREEN; - } - if ( isZoomMode() ) - { - return R_BROWSER_DEFAULT_BUTTONS_AT_ZOOM_MODE_ON; - } - if( KeymapIsUp() ) - { - return R_BROWSER_SOFTKEYS_CONFIGURE_HIDE; - } - if( iHistoryViewIsUp ) - { - return R_BROWSER_SOFTKEYS_SELECT_CANCEL_SELECT; - } - if( iPluginPlayerIsUp ) - { - return R_BROWSER_SOFTKEYS_CANCEL; - } - if( iSmartTextViewIsUp ) - { - return R_INPUT_ELEMENT_BUTTONS; - } - if( iThumbnailViewIsUp ) - { - return R_BROWSER_DEFAULT_BUTTONS_AT_THUMBNAIL_VIEW_ON; - } - if( iImageMapActive ) - { - return R_BROWSER_DEFAULT_BUTTONS; - } - if( iSynchRequestViewIsUp ) - { - if ( !iContentFullScreenMode ) - { - result = R_BROWSER_SOFTKEYS_CANCEL; - } - return result; - } - - if( iContainer->GotoPane()->IsVisible() ) - // when goto pane is up there is no focusable element or active fetching - // process in place - { - if( iContainer->GotoPane()->SearchPaneActive() ) - { - result = R_BROWSER_BOOKMARKS_CBA_SEARCH_PANE_SEARCH_CANCEL; - } - else - { - //check wheter there is an active popuplist - if( (iContainer->GotoPane()->PopupList() != NULL) && - ( iContainer->GotoPane()->PopupList()->IsOpenDirToShow() )) - { - result = R_BROWSER_BOOKMARKS_CBA_GOTO_PANE_OPENDIR_CANCEL; - } - else if(iContainer->GotoPane()->PopupList() && - iContainer->GotoPane()->PopupList()->IsPoppedUp() && - !iPenEnabled) - { - // LSK Select is only for non-touch devices - result = R_BROWSER_BOOKMARKS_CBA_GOTO_PANE_SELECT_CANCEL; - } - else - { - result = R_BROWSER_BOOKMARKS_CBA_GOTO_PANE_GOTO_CANCEL; - } - } - } - else if ( iContainer->FindKeywordPane()->IsVisible() ) - { - result = R_BROWSER_CBA_FIND_KEYWORD_PANE_OPTION_CLOSE; - } - else if ( ApiProvider().Fetching() ) - { - if ( !iContentFullScreenMode ) - { - // Enable Options menu during download can be done here - // otherwise use defualt Full Screen buttons - result = R_BROWSER_OPTIONS_MENU_DURING_DOWNLOAD; - } - } - else - { - TBrCtlDefs::TBrCtlElementType elementtype = - ApiProvider().BrCtlInterface().FocusedElementType(); - if( elementtype == TBrCtlDefs::EElementActivatedObjectBox ) - { - if ( !iContentFullScreenMode ) - { - result = R_INPUT_ELEMENT_BUTTONS; - } - } - else if ( !ApiProvider().BrCtlInterface().NavigationAvailable( - TBrCtlDefs::ENavigationBack ) ) - // at the beginning of the history list - { - if ( !iContentFullScreenMode ) - { - // Options + Close - result = R_BROWSER_DEFAULT_BUTTONS_AT_BEGINNING_OF_HISTORY; - } - } - } -BROWSER_LOG( ( _L(" ContentView's buttons:%d"), result ) ); - return result; - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::ProcessCommandL -// ----------------------------------------------------------------------------- -// -void CBrowserContentView::ProcessCommandL(TInt aCommand) - { - CBrowserViewBase::ProcessCommandL( aCommand ); - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::DynInitMenuPaneL -// ----------------------------------------------------------------------------- -void CBrowserContentView::DynInitMenuPaneL( TInt aResourceId, - CEikMenuPane* aMenuPane ) - { - LOG_ENTERFN("CBrowserContentView::DynInitMenuPaneL"); - __ASSERT_DEBUG(aMenuPane, Util::Panic(Util::EUninitializedData)); - - // pasue js timers - ApiProvider().BrCtlInterface().HandleCommandL((TInt)TBrCtlDefs::ECommandIdBase + (TInt)TBrCtlDefs::ECommandPauseScriptTimers ); - - if ( aResourceId == R_MENU_PANE ) - { - // web feeds - #ifndef __RSS_FEEDS - aMenuPane->SetItemDimmed( EWmlCmdShowSubscribeList, ETrue ); - #else - const RPointerArray& items = ApiProvider().BrCtlInterface().SubscribeToMenuItemsL(); - if ( items.Count() == 0 ) - { - aMenuPane->SetItemDimmed( EWmlCmdShowSubscribeList, ETrue ); - } - #endif // __RSS_FEEDS - - // downloads - aMenuPane->SetItemDimmed( EWmlCmdDownloads, - !ApiProvider().BrCtlInterface().BrowserSettingL( TBrCtlDefs::ESettingsNumOfDownloads ) ); - - // If we have a touch device, check to see if the zoom slider is up, if so disable - if ( PenEnabled() && ZoomSliderVisible() ) - { - MakeZoomSliderVisibleL( EFalse ); - } - - // find - aMenuPane->SetItemDimmed( EWmlCmdFindNext, ETrue ); - aMenuPane->SetItemDimmed( EWmlCmdFindPrevious, ETrue ); - -/* - // help menu sub-menu - depending if Independent Application Update is available - if (BRDO_BROWSER_UPDATE_UI_FF) - { - aMenuPane->SetItemDimmed( EAknCmdHelp, ETrue ); - } - else - { - aMenuPane->SetItemDimmed( EWmlCmdHelpMenu, ETrue ); - } -*/ - if ( iContainer->FindKeywordPane()->IsVisible() ) - { - CEikMenuPaneItem::SData menuFindNext = - aMenuPane->ItemData( EWmlCmdFindNext ); - CEikMenuPaneItem::SData menuFindPrevious = - aMenuPane->ItemData( EWmlCmdFindPrevious ); - - // Delete all menu items - aMenuPane->DeleteBetweenMenuItems( 0, - aMenuPane->NumberOfItemsInPane() - 1 ); - - aMenuPane->AddMenuItemL( menuFindNext ); - aMenuPane->AddMenuItemL( menuFindPrevious ); - aMenuPane->SetItemDimmed( EWmlCmdFindNext, EFalse ); - aMenuPane->SetItemDimmed( EWmlCmdFindPrevious, EFalse ); - return; - } - - // wml option menu items - if ( ApiProvider().BrCtlInterface().WMLOptionMenuItemsL()->Count() < 1 ) - { - // there isn't DO element, or only the first one with PREV exist - aMenuPane->SetItemDimmed( EWmlCmdServiceOptions, ETrue ); - } - - // find window - if (ApiProvider().WindowMgr().CurrentWindow()->WMLMode()) - { - aMenuPane->SetItemDimmed(EWmlCmdFindKeyword, ETrue); - } - - // shortcut key map - if (PenEnabled() || ApiProvider().IsEmbeddedModeOn()) - { - aMenuPane->SetItemDimmed( EWmlCmdShowShortcutKeymap, ETrue); - } - - // BrCtl adds menu items to UI options menu list - ApiProvider().BrCtlInterface().AddOptionMenuItemsL( *aMenuPane, aResourceId ); - } - else if ( aResourceId == R_DO_ELEMENTS ) - { - RPointerArray* wmlElements; - wmlElements = ApiProvider().BrCtlInterface().WMLOptionMenuItemsL(); - - for ( TInt i=0; iCount(); i++ ) - { - TBrCtlWmlServiceOption* option = (*wmlElements)[i]; - if ( option != NULL) - { - CEikMenuPaneItem::SData item; - item.iText.Copy( option->Text() ); - item.iCommandId = option->ElemID(); - item.iFlags = 0; - item.iCascadeId = 0; - aMenuPane->InsertMenuItemL(item, 0); - } - } - } - else if ( aResourceId == R_GOTO_SUBMENU ) - { - // back to page - aMenuPane->SetItemDimmed( EWmlCmdBackToPage, ETrue ); - - // bookmarks/webfeeds - if( ApiProvider().IsEmbeddedModeOn() ) - { - aMenuPane->SetItemDimmed( EWmlCmdFavourites, ETrue ); - aMenuPane->SetItemDimmed( EWmlCmdOpenFeedsFolder, ETrue ); - } - - // home - aMenuPane->SetItemDimmed( EWmlCmdLaunchHomePage, ApiProvider().IsLaunchHomePageDimmedL() ); - //search - if ( ! ApiProvider().Preferences().SearchFeature() ) - { - aMenuPane->SetItemDimmed( EIsCmdSearchWeb, ETrue ); - } - } - else if ( aResourceId == R_PAGEACTIONS_SUBMENU ) - { - // bookmark - if ( ApiProvider().IsEmbeddedModeOn() && CBrowserAppUi::Static()->IsEmbeddedInOperatorMenu() ) - { - aMenuPane->SetItemDimmed( EWmlCmdSaveAsBookmark, ETrue ); - } - HBufC *pageUrl = ApiProvider().BrCtlInterface().PageInfoLC( TBrCtlDefs::EPageInfoUrl ); - if( ( pageUrl == NULL ) || ( pageUrl->Length() == 0 ) ) - { - aMenuPane->SetItemDimmed( EWmlCmdSaveAsBookmark, ETrue ); - } - CleanupStack::PopAndDestroy( pageUrl ); - - // send - aMenuPane->SetItemDimmed( EWmlCmdSendBookmarkViaUnifiedMessage, ETrue ); - - if (ApiProvider().IsEmbeddedModeOn()) - { - aMenuPane->SetItemDimmed( EWmlCmdSendAddressViaUnifiedMessage, ETrue ); - } - - // set as home page - //aMenuPane->SetItemDimmed( EWmlCmdSetAsHomePage, ETrue); - - - // pop-up blocking - if ( ApiProvider().IsEmbeddedModeOn() || ApiProvider().WindowMgr().CurrentWindow()->WMLMode()) - { - aMenuPane->SetItemDimmed( EWmlCmdBlockPopups, ETrue ); - aMenuPane->SetItemDimmed( EWmlCmdAllowPopups, ETrue ); - } - else - { - aMenuPane->SetItemDimmed( EWmlCmdBlockPopups, EFalse ); - aMenuPane->SetItemDimmed( EWmlCmdAllowPopups, EFalse ); - - if ( ApiProvider().Preferences().PopupBlocking()) - { - HBufC* url = ApiProvider().WindowMgr().CurrentWindow()->BrCtlInterface().PageInfoLC( TBrCtlDefs::EPageInfoUrl ); - TBool dimAllow = EFalse; - if( url ) - { - // 'Allow Popups' needed if the current URL is not on the whitelist - TRAPD( errWhite, dimAllow = ApiProvider().PopupEngine().IsUrlOnWhiteListL( *url );); - // Error handling - if ( !errWhite ) - { - aMenuPane->SetItemDimmed( EWmlCmdBlockPopups, !dimAllow ); - aMenuPane->SetItemDimmed( EWmlCmdAllowPopups, dimAllow ); - } - } - // else no url (strange case), so no popup specific menuitem - CleanupStack::PopAndDestroy( url ); - } - else - { - //not shown any popupblocks related menu items when it's setting noblock - aMenuPane->SetItemDimmed( EWmlCmdBlockPopups, ETrue ); - aMenuPane->SetItemDimmed( EWmlCmdAllowPopups, ETrue ); - } - } - } - else if ( aResourceId == R_VIEW_SUBMENU ) - { - // toolbar - if ( !PenEnabled() && iApiProvider.Preferences().ShowToolbarOnOff() ) - { - aMenuPane->SetItemDimmed( EWmlCmdShowToolBar, ApiProvider().WindowMgr().CurrentWindow()->WMLMode() ); - } - else - { - aMenuPane->SetItemDimmed( EWmlCmdShowToolBar, ETrue); - } - - // disable fullscreen mode for touch only -- which has auto fullscreen now - if (iPenEnabled) - { - aMenuPane->SetItemDimmed(EWmlCmdEnterFullScreenBrowsing, ETrue); - } - - // rotate - if (!ApiProvider().Preferences().RotateDisplay() ) - { - aMenuPane->SetItemDimmed( EWmlCmdRotateDisplay, ETrue ); - } - - // page overview - if ( !ApiProvider().Preferences().UiLocalFeatureSupported( KBrowserGraphicalPage ) || - ApiProvider().WindowMgr().CurrentWindow()->WMLMode() ) - { - aMenuPane->SetItemDimmed( EWmlCmdShowMiniature, ETrue); - } - - // show images - if( !ApiProvider().BrCtlInterface().ImageCountL() ) - { - aMenuPane->SetItemDimmed( EWmlCmdShowImages, ETrue ); - } - - // load images - if (( ApiProvider().Preferences().AutoLoadContent() == EWmlSettingsAutoloadImagesNoFlash) || - (ApiProvider().Preferences().AutoLoadContent() == EWmlSettingsAutoloadAll) || - ApiProvider().WindowMgr().CurrentWindow()->HasLoadedImages() ) - { - aMenuPane->SetItemDimmed( EWmlCmdLoadImages, ETrue ); - } - - // window - if ( !ApiProvider().Preferences().UiLocalFeatureSupported( KBrowserMultipleWindows ) || - ApiProvider().IsEmbeddedModeOn() || - ApiProvider().WindowMgr().WindowCount() < 2) - { - aMenuPane->SetItemDimmed( EWmlCmdSwitchWindow, ETrue ); - } - } - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::CheckForEmptyWindowsMenuL -// Checks for the existence of Windows Submenu Items return true if no submenu items exist -// ----------------------------------------------------------------------------- -// -TBool CBrowserContentView::CheckForEmptyWindowsMenuL(TWindowsMenuItemsDimCheck* aWindowMenuItems) - { - - __ASSERT_DEBUG( (aWindowMenuItems != NULL), Util::Panic( Util::EUninitializedData )); - - // 'OpenLinkInNewWindow is not available for 'non-anchor' elements or - // if current page has wml content. - //TBrCtlDefs::TBrCtlElementType elementtype = - // ApiProvider().BrCtlInterface().FocusedElementType(); - - // The commented part below enables the "Open link in new window" option. - // Currently the option is permanently dimmed - // UI change request AHUN-6U3NT4, S60 bug AHUN-6UYT6N - aWindowMenuItems->dimOpenInNewWin = ETrue; /*( (elementtype != TBrCtlDefs::EElementAnchor) || - (ApiProvider().WindowMgr().CurrentWindow()->HasWMLContent(EFalse)) ); */ - - - // Multiple Windows Supported - if ( ApiProvider().Preferences().UiLocalFeatureSupported( - KBrowserMultipleWindows ) ) - { - TInt winCount = ApiProvider().WindowMgr().WindowCount(); - - // 'Close Window' & Switch Window needed if are 2+ open windows - if ( winCount > 1 ) - { - aWindowMenuItems->dimCloseWin = EFalse; - // don't allow window switching if current window has wml. must close this window first - aWindowMenuItems->dimSwitchWin = ApiProvider().WindowMgr().CurrentWindow()->HasWMLContent(EFalse /*is any page wml?*/);//EFalse; - } - - // Pop-up blocking is enabled - if ( ApiProvider().Preferences().PopupBlocking() ) - { - //--------------------------------------------------------------------- - // Popup Blocking Menu items - HBufC* url = ApiProvider().WindowMgr().CurrentWindow()-> - BrCtlInterface().PageInfoLC( TBrCtlDefs::EPageInfoUrl ); - if( url ) - { - // 'Allow Popups' needed if the current URL is not on the whitelist - TRAPD( errWhite, - aWindowMenuItems->dimAllowPopups = ApiProvider().PopupEngine().IsUrlOnWhiteListL( *url ); - ); - // Error handling - if ( errWhite ) - { - // Better to have the menu item than not - aWindowMenuItems->dimAllowPopups = aWindowMenuItems->dimBlockPopups = EFalse; - } - else - { - aWindowMenuItems->dimBlockPopups = !aWindowMenuItems->dimAllowPopups; - } - } - // else no url (strange case), so no popup specific menuitem - - CleanupStack::PopAndDestroy( url ); - } - //========================================================================= - } - return (aWindowMenuItems->dimOpenInNewWin && - aWindowMenuItems->dimSwitchWin && - aWindowMenuItems->dimCloseWin && - aWindowMenuItems->dimAllowPopups && - aWindowMenuItems->dimBlockPopups); - } - - -// ----------------------------------------------------------------------------- -// CBrowserContentView::DimMultipleWindowsMenuItems -// Dims the items of the windows submenu according to aWindowMenuItems -// ----------------------------------------------------------------------------- -// -void CBrowserContentView::DimMultipleWindowsMenuItems( CEikMenuPane& aMenuPane, TWindowsMenuItemsDimCheck aWindowMenuItems ) - { - aMenuPane.SetItemDimmed( EWmlCmdOpenLinkInNewWindow, aWindowMenuItems.dimOpenInNewWin ); - aMenuPane.SetItemDimmed( EWmlCmdSwitchWindow, aWindowMenuItems.dimSwitchWin ); - aMenuPane.SetItemDimmed( EWmlCmdCloseWindow, aWindowMenuItems.dimCloseWin ); - aMenuPane.SetItemDimmed( EWmlCmdAllowPopups, aWindowMenuItems.dimAllowPopups ); - aMenuPane.SetItemDimmed( EWmlCmdBlockPopups, aWindowMenuItems.dimBlockPopups ); - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::OptionListInit -// Callback - we should initialize the list of DO elements -// ----------------------------------------------------------------------------- -// -void CBrowserContentView::OptionListInitL() - { - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::HandleGotoPaneEventL -// ----------------------------------------------------------------------------- -// -void CBrowserContentView::HandleGotoPaneEventL( - CBrowserGotoPane* /*aGotoPane*/, - MGotoPaneObserver::TEvent aEvent ) - { - switch ( aEvent ) - { - case MGotoPaneObserver::EEventEnterKeyPressed: - { - if( !MenuBar()->MenuPane()->IsVisible() ) - { - if (iContainer->GotoPane()->PopupList() != NULL) - { - if ( iContainer->GotoPane()->PopupList()->IsOpenDirToShow() ) - { - HandleCommandL( EWmlCmdOpenFolder ); - } - else - { - HandleCommandL( EWmlCmdGotoPaneGoTo ); - } - } - } - break; - } - - default: - { - break; - } - } - } - - -// ----------------------------------------------------------------------------- -// CBrowserContentView::OnScreenPosition -// ----------------------------------------------------------------------------- -// -TPoint CBrowserContentView::OnScreenPosition() - { - TRect rect = AppUi()->ApplicationRect(); - TPoint point (rect.iTl); - if (iPenEnabled) - { - if (AppUi()->TouchPane()) - { - TRect touchRect = AppUi()->TouchPane()->Rect(); - if (touchRect.iTl == rect.iTl) - { - if (touchRect.Width() > touchRect.Height()) // Horizontal, on top - { - point = TPoint(rect.iTl.iX, touchRect.iBr.iY); - } - else // Vertical, on the left - { - point = TPoint(touchRect.iBr.iX, rect.iTl.iY); - } - } - } - } - return point; - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::GotoUrlInGotoPaneL -// ----------------------------------------------------------------------------- -// -void CBrowserContentView::GotoUrlInGotoPaneL() - { - if ( iContainer->GotoPane() ) - { - HBufC* url = iContainer->GotoPane()->GetTextL(); // the url - if( url ) - { - iContainer->ShutDownGotoURLEditorL(); - - TFavouritesWapAp accessPoint; - // if current ap exists then use it. other ways use default ap. - if( ApiProvider().Connection().CurrentAPId() ) - { - TUint apId = ApiProvider().Connection().CurrentAPId(); - apId = Util::WapIdFromIapIdL( ApiProvider(), apId ); - accessPoint.SetApId( apId ); - } - else - { - accessPoint.SetApId( - ApiProvider().Preferences().DefaultAccessPoint() ); - } - UpdateCbaL(); - UpdateFullScreenL(); - - ApiProvider().FetchL( url->Des(), - KNullDesC, - KNullDesC, - accessPoint, - CBrowserLoadObserver::ELoadUrlTypeOther ); - - } - else // no URL entered - { - iContainer->ShutDownGotoURLEditorL(); - UpdateCbaL(); - UpdateFullScreenL(); - } - } - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::UpdateGotoPaneL -// ----------------------------------------------------------------------------- -// -void CBrowserContentView::UpdateGotoPaneL() - { - // Reset goto pane content - if( AUTOCOMP ) //ask the feature manager - { - //2.1 does not put http:// there - iContainer->GotoPane()->SetTextL( KNullDesC ); - } - else - { - //2.0 does need http:// - iContainer->GotoPane()->SetTextL( KHttpString ); - } - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::LaunchGotoAddressEditorL -// ----------------------------------------------------------------------------- -// -void CBrowserContentView::LaunchGotoAddressEditorL() - { - // Cancel editing and sets Goto Pane text back. - if (iContainer->GotoPane()->PopupList() != NULL) - { - iContainer->GotoPane()->PopupList()->SetDirectoryModeL( ETrue ); - iContainer->GotoPane()->PopupList()->HidePopupL(); - } - - if ( ApiProvider().Preferences().FullScreen() == EWmlSettingsFullScreenFullScreen ) - { - MakeCbaVisible( ETrue ); - } - - CCoeEnv::Static()->AppUi()->RemoveFromStack( iContainer->GotoPane() ); - CCoeEnv::Static()->AppUi()->AddToStackL( iContainer->GotoPane(), ECoeStackPriorityMenu ); - iContainer->GotoPane()->MakeVisible( ETrue ); - HBufC* url = ApiProvider().BrCtlInterface().PageInfoLC( - TBrCtlDefs::EPageInfoUrl ); - if ( url && url->Length() ) - { - iContainer->GotoPane()->SetTextL(*url); - iContainer->GotoPane()->SelectAllL(); - } - else - { - // nor url; use default name. - // set "http://www." per Browser UI spec - iContainer->GotoPane()->SetTextL(KWWWString ); - } - CleanupStack::PopAndDestroy(); // url - iContainer->GotoPane()->SetFocus( ETrue ); - UpdateCbaL(); - - if (iPenEnabled) - { - Toolbar()->SetDimmed(ETrue); - Toolbar()->DrawNow(); - } - - } - - -// ----------------------------------------------------------------------------- -// CBrowserContentView::LaunchFindKeywordEditorL -// ----------------------------------------------------------------------------- -// -void CBrowserContentView::LaunchFindKeywordEditorL() - { - // Cancel editing and sets Goto Pane text back. - if (iContainer->FindKeywordPane()->PopupList() != NULL) - { - iContainer->FindKeywordPane()->PopupList()->SetDirectoryModeL( ETrue ); - iContainer->FindKeywordPane()->PopupList()->HidePopupL(); - } - - if ( ApiProvider().Preferences().FullScreen() == EWmlSettingsFullScreenFullScreen ) - { - MakeCbaVisible( ETrue ); - } - - CCoeEnv::Static()->AppUi()->RemoveFromStack( iContainer->FindKeywordPane() ); - CCoeEnv::Static()->AppUi()->AddToStackL( iContainer->FindKeywordPane(), ECoeStackPriorityMenu ); - iContainer->FindKeywordPane()->MakeVisible( ETrue ); - iContainer->FindKeywordPane()->SetFocus( ETrue ); - UpdateCbaL(); - if (iPenEnabled) - { -#ifdef RD_SCALABLE_UI_V2 - Toolbar()->ToolbarExtension()->SetShown(EFalse); -#endif - iBrowserContentViewToolbar->UpdateButtonsStateL(); - } - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::UpdateTitleL -// ----------------------------------------------------------------------------- -// -void CBrowserContentView::UpdateTitleL( MApiProvider& aApiProvider ) - { - HBufC* title = aApiProvider.BrCtlInterface().PageInfoLC( - TBrCtlDefs::EPageInfoTitle ); - if ( title && title->Length() ) - { - if( !iTitle || (iTitle && (iTitle->Des().Compare( title->Des())!= 0))) - { - delete iTitle; - iTitle = title->Des().AllocL(); - aApiProvider.Display().SetTitleL( title->Des() ); - } - } - else - { - - TInt offset = 0; - HBufC* titleUrl = aApiProvider.BrCtlInterface().PageInfoLC( - TBrCtlDefs::EPageInfoUrl ); - if( titleUrl == NULL ) // is this really possible? - { - CleanupStack::PopAndDestroy( titleUrl ); - titleUrl = KNullDesC().AllocLC(); - } - offset = titleUrl->Find( KSchemaIdentifier ); - if(offset != KErrNotFound ) - { - titleUrl->Des().Delete(0,offset + KSchemaIdentifierLength); - } - aApiProvider.Display().SetTitleL( titleUrl->Des() ); - CleanupStack::PopAndDestroy( ); // titleUrl - } - - CleanupStack::PopAndDestroy(); // title - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::AddNewBookmarkL -// ----------------------------------------------------------------------------- -// -void CBrowserContentView::AddNewBookmarkL( TBool aAsLastVisited, HBufC* aUrl ) - { - TInt pop = 0; - HBufC* cardTitle = NULL; - TPtrC cardTitlePtr( KNullDesC ); - - // Make a bookmark model. - iBookmarksModel = CBrowserBookmarksModel::NewL(ApiProvider()); - - // Create a bookmark item. - CFavouritesItem* item = CFavouritesItem::NewLC(); - - HBufC* theUrl = NULL; - if (aUrl == NULL) - { - // Set URL. - theUrl = ApiProvider().BrCtlInterface().PageInfoLC( TBrCtlDefs::EPageInfoUrl ); - if( !theUrl || !theUrl->Length() ) - { - CleanupStack::PopAndDestroy( theUrl ); - theUrl = KNullDesC().AllocLC(); - } - pop++; - // Get the title - cardTitle = ApiProvider().BrCtlInterface().PageInfoLC(TBrCtlDefs::EPageInfoTitle ); - pop++; - } - else - { - theUrl = aUrl; - } - - if ( cardTitle ) - { - cardTitle->Des().Trim(); - cardTitlePtr.Set( cardTitle->Des() ); - } - - if ( cardTitlePtr.Length() ) - { - // Current card has non-empty title, use that as bookmark name. - item->SetNameL( cardTitlePtr.Left(KFavouritesMaxName) ); - } - else - { - // Get the URL - HBufC* url = theUrl->AllocLC(); - pop++; - - if ( url && url->Length() ) - { - TUriParser16 urlParser; - urlParser.Parse(*url); - url->Des().SetLength( 0 ); - url->Des().Append( urlParser.Extract( EUriHost) ); - url->Des().Append( urlParser.Extract( EUriPath ) ); - item->SetNameL( url->Left(KFavouritesMaxName) ); - } - else - { - // No title, nor url; use default name. - iBookmarksModel->SetNameToDefaultL( *item ); - } - } - - // set url, username, password - Util::RetreiveUsernameAndPasswordFromUrlL( *theUrl, *item ); - CleanupStack::PopAndDestroy(pop); // url, cardTitle, theUrl - - item->SetParentFolder( KFavouritesRootUid ); - - // Set WAP AP. - TFavouritesWapAp ap; // default AP - item->SetWapAp( ap ); - - if ( aAsLastVisited ) - { - iBookmarksModel->SetLastVisitedL( *item, EFalse, - CBrowserFavouritesModel::EAutoRename ); - } - - else - { - HBufC* prompt = StringLoader::LoadLC( R_WML_ENTER_BOOKMARK_NAME ); - TBuf retString; - retString.Copy( item->Name() ); - - TBool queryName = ETrue; - while( queryName ) - { - TInt result = TBrowserDialogs::DialogPromptReqL( - prompt->Des(), - &retString, - EFalse, - KFavouritesMaxBookmarkNameDefine ); - if( result ) - { - item->SetNameL(retString.Left(KFavouritesMaxName)); - TInt err = iBookmarksModel->AddL( - *item, - ETrue, - CBrowserFavouritesModel::EDontRename ); - if ( !err ) - { - TBrowserDialogs::InfoNoteL( - R_BROWSER_OK_NOTE, - iBookmarksModel->StringResourceId - ( *item, CBrowserFavouritesModel::ESaved ) ); - queryName = EFalse; - AddBMUidToLastPlaceToCurrentListL( item->Uid() ); - - // To retain FavIcon in iconDatabase, we need to reference icon bitmap reference at least once - HBufC* url = ApiProvider().BrCtlInterface().PageInfoLC(TBrCtlDefs::EPageInfoUrl); - CGulIcon *icon = ApiProvider().BrCtlInterface().GetBitmapData(*url, TBrCtlDefs::EBitmapFavicon); - CleanupStack::PopAndDestroy(); //url - delete icon; - } - else if( KErrAlreadyExists == err ) - { - TBrowserDialogs::InfoNoteL( - R_BROWSER_INFO_NOTE, R_WML_NAME_ALREADY_IN_USE ); - } - else - { - TBrowserDialogs::ErrorNoteL( - iBookmarksModel->StringResourceId( - *item, - CBrowserFavouritesModel::ENotSaved ) ); - - } - } - else - queryName = EFalse; - } - CleanupStack::PopAndDestroy(); // prompt - } - - CleanupStack::PopAndDestroy(); // item - - delete iBookmarksModel; - iBookmarksModel = NULL; - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::AddBMUidToLastPlaceToCurrentListL -// ----------------------------------------------------------------------------- -// -void CBrowserContentView::AddBMUidToLastPlaceToCurrentListL(const TInt aUid ) - { - CArrayFixFlat* orderArray = new (ELeave) CArrayFixFlat(KGranularityHigh); - CleanupStack::PushL( orderArray ); - - CBrowserBookmarksOrder* currentOrder = CBrowserBookmarksOrder::NewLC(); - if ( iBookmarksModel->Database().GetData( KFavouritesRootUid ,*currentOrder ) == KErrNone) - { - if ( currentOrder->GetBookMarksOrder().Count() > 0 ) - { - orderArray->AppendL( &( currentOrder->GetBookMarksOrder()[0] ), - currentOrder->GetBookMarksOrder().Count() ); - } - } - iBookmarksModel->AddUidToLastPlaceL(aUid, orderArray, currentOrder ); - currentOrder->SetBookMarksOrderL( *orderArray ); - iBookmarksModel->Database().SetData( KFavouritesRootUid ,*currentOrder ); - CleanupStack::PopAndDestroy( 2 );// currentOrder, orderArray - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::SendAddressL -// ----------------------------------------------------------------------------- -// -void CBrowserContentView::SendAddressL( ) - { - HBufC* url = ApiProvider().BrCtlInterface().PageInfoLC( TBrCtlDefs::EPageInfoUrl ); - if( url == NULL ) - { - CleanupStack::PopAndDestroy( url ); // remove previous - url = KNullDesC().AllocLC(); - } - -#ifndef _BOOKMARK_SENT_ASCII - if( url->Length() <= KMaxUrlLenghtInOTA ) -#endif // _BOOKMARK_SENT_ASCII - { - HBufC* title = ApiProvider().BrCtlInterface().PageInfoLC( TBrCtlDefs::EPageInfoTitle ); - if( title == NULL ) - { - CleanupStack::PopAndDestroy( title ); // remove previous - title = KNullDesC().AllocLC(); - } - - //CBrowserAppUi* ui = reinterpret_cast(AppUi()); - MBmOTABinSender& sender = ApiProvider().BmOTABinSenderL(); - - sender.ResetAndDestroy(); - sender.AppendL( url->Des(), title->Des() ); - sender.SendAddressL( ); - CleanupStack::PopAndDestroy( title ); // title - } -#ifndef _BOOKMARK_SENT_ASCII - else - { -#pragma message ( __FILE__ ": Length of bookmark addr cannot exceed 255bytes!") - _LIT( KErrMsg, "URL address of bookmark is too long. It cannot be sent."); - - TBrowserDialogs::ErrorNoteL( KErrMsg ); - } -#endif // _BOOKMARK_SENT_ASCII - CleanupStack::PopAndDestroy( url ); // url - } - - -// ----------------------------------------------------------------------------- -// CBrowserContentView::UpdateOptionMenuItemLabelL -// ----------------------------------------------------------------------------- -// -void CBrowserContentView::UpdateOptionMenuItemLabelL(CEikMenuPane* aMenuPane, const TInt aCommandId, const TInt aResourceId) - { - - __ASSERT_DEBUG( (aMenuPane != NULL), Util::Panic( Util::EUninitializedData )); - - HBufC* browserLabel = CCoeEnv::Static()->AllocReadResourceLC(aResourceId); - aMenuPane->SetItemTextL(aCommandId, *browserLabel); - CleanupStack::PopAndDestroy(); - } - - -// ----------------------------------------------------------------------------- -// CBrowserContentView::DoSearchL -// Do search for specified items in current page -// ----------------------------------------------------------------------------- -// -void CBrowserContentView::DoSearchL( - CFindItemEngine::TFindItemSearchCase aSearchCase ) - { - HBufC* findText = NULL; - findText = ApiProvider().BrCtlInterface().PageInfoLC( - TBrCtlDefs::EPageInfoContent ); - if( findText == NULL ) - { - CleanupStack::PopAndDestroy( findText ); - return; - } - - if( findText->Length() != 0 ) - { - - TPtr findTextDes = findText->Des(); - - for( int i = 0; i < findText->Length(); ++i ) - { - if( (*findText)[i] == TUint16( 0x0a ) ) - { - findTextDes[i] = TUint16( CEditableText::EParagraphDelimiter ); - } - - else if( (*findText)[i] == TUint16( CEditableText::ETabCharacter ) ) - { - findTextDes[i] = TUint16( CEditableText::ESpace ); - } - else if( (*findText)[i] == TUint16( CEditableText::ELineBreak ) ) - { - findTextDes[i] = TUint16( CEditableText::EParagraphDelimiter ); - } - } - } - - SetFullScreenOffL(); - CFindItemDialog* dialog = CFindItemDialog::NewL( *findText, aSearchCase ); - dialog->ExecuteLD(); - UpdateFullScreenL(); - UpdateTitleL( ApiProvider() ); - - CleanupStack::PopAndDestroy( findText ); - } - - -// ----------------------------------------------------------------------------- -// CBrowserContentView::SetLastVisitedBookmarkL -// ----------------------------------------------------------------------------- -// -void CBrowserContentView::SetLastVisitedBookmarkL() - { - AddNewBookmarkL( ETrue ); - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::UpdateNaviPaneL -// ----------------------------------------------------------------------------- -// -void CBrowserContentView::UpdateNaviPaneL( TDesC& aStatusMsg ) - { - //Set text that will be shown in navipane - iStatusMsg.Des().Copy(aStatusMsg.Left(KStatusMessageMaxLength));//Might be longer than iStatusMsg - SetNavipaneViewL(); - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::SetNavipaneViewL -// ----------------------------------------------------------------------------- -// -void CBrowserContentView::SetNavipaneViewL() - { - TVwsViewId activeViewId; - if ( AppUi()->GetActiveViewId( activeViewId ) == KErrNone ) - { - if ( (activeViewId.iViewUid == KUidBrowserContentViewId) ) - { - if (!iNaviDecorator) - { - delete iNaviDecorator; - iNaviDecorator = NULL; - - if( iNaviPane ) - { - if (iStatusMsg.Length()) - { - iNaviDecorator = iNaviPane->CreateNavigationLabelL( - iStatusMsg ); - } - else - { - iNaviDecorator = iNaviPane->CreateNavigationLabelL(_L("")); - } - iNaviPane->PushL( *iNaviDecorator ); - } - } - else - { - CAknNaviLabel* naviLabel = STATIC_CAST( CAknNaviLabel*, - iNaviDecorator->DecoratedControl()); - naviLabel->SetTextL(iStatusMsg); - // make sure at top and redraw - iNaviPane->PushL( *iNaviDecorator ); - } - - iNaviDecorator->MakeScrollButtonVisible(ETrue); - } - } - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::FindItemIsInProgress -// ----------------------------------------------------------------------------- -// -TBool CBrowserContentView::FindItemIsInProgress() - { - return iFindItemIsInProgress; - } - -// --------------------------------------------------------------------------- -// CBrowserContentView::HandleStatusPaneSizeChange -// --------------------------------------------------------------------------- -// -void CBrowserContentView::HandleStatusPaneSizeChange() - { - SetContentContainerRect(); - } - -// --------------------------------------------------------------------------- -// CBrowserContentView::StateChanged -// --------------------------------------------------------------------------- -// -void CBrowserContentView::StateChanged( - TBrCtlDefs::TBrCtlState aState, - TInt aValue ) - { -LOG_ENTERFN(" CBrowserContentView::StateChanged" ); -LOG_WRITE_FORMAT(" state: %d", aState ); -LOG_WRITE_FORMAT(" value: %d", aValue ); - switch(aState) - { - case TBrCtlDefs::EStateImageMapView: - { - iImageMapActive = (TBool) aValue; - TRAP_IGNORE( UpdateCbaL() ); - break; - } - case TBrCtlDefs::EStateHistoryView: - { - iHistoryViewIsUp = (TBool) aValue; - iHistoryAtBeginning = EFalse; - iHistoryAtEnd = EFalse; - if ( iPenEnabled ) - { - TRAP_IGNORE( iBrowserContentViewToolbar->UpdateButtonsStateL() ); - } - TRAP_IGNORE( UpdateCbaL() ); - TRAP_IGNORE( UpdateTitleL( ApiProvider() ) ); - if (iPenEnabled) - { - StartAutoFullScreenTimer(); - } - break; - } - case TBrCtlDefs::EStateThumbnailView: - { - iThumbnailViewIsUp = (TBool) aValue; - if ( iPenEnabled ) - { - TRAP_IGNORE( iBrowserContentViewToolbar->UpdateButtonsStateL() ); - } - TRAP_IGNORE( UpdateCbaL() ); - TRAP_IGNORE( UpdateTitleL( ApiProvider() ) ); - if (iPenEnabled) - { - StartAutoFullScreenTimer(); - } - break; - } - case TBrCtlDefs::EStatePluginPlayer: - { - iPluginPlayerIsUp = (TBool) aValue; - TRAP_IGNORE( UpdateCbaL() ); - TRAP_IGNORE( UpdateTitleL( ApiProvider() ) ); - break; - } - case TBrCtlDefs::EStateSmartTextView: - { - iSmartTextViewIsUp = (TBool) aValue; - TRAP_IGNORE( UpdateCbaL() ); - TRAP_IGNORE( UpdateTitleL( ApiProvider() ) ); - break; - } - case TBrCtlDefs::EStateToolBarMode: - { - if(!aValue) - { - TRAP_IGNORE( UpdateCbaL() ); - } - break; - } - case TBrCtlDefs::EStateScriptLog: - { - TRAP_IGNORE( ApiProvider().Preferences().SetScriptLogL( aValue ) ); - break; - } - case TBrCtlDefs::EStateZoomSliderMode: - { - if ( aValue ) - { - iZoomSliderVisible = ETrue; - } - else - { - iZoomSliderVisible = EFalse; - if (iPenEnabled) - { - StartAutoFullScreenTimer(); - } - } - // Inform Toolbar of this fact - if ( iPenEnabled ) - { - TRAP_IGNORE( iBrowserContentViewToolbar->UpdateButtonsStateL() ); - } - break; - } - case TBrCtlDefs::EStateFullscreenBrowsing: - { - if (!iPenEnabled && IsEditMode()) - { - if (!aValue) - { // exit fullscreen so remember what to go back to after edit mode is exited - iFullScreenBeforeEditModeEntry = iContentFullScreenMode; - TRAP_IGNORE( EnableFullScreenModeL( EFalse ) ); - } - else if (aValue && iFullScreenBeforeEditModeEntry) - { - TRAP_IGNORE( EnableFullScreenModeL( ETrue ) ); - } - } - else if (!aValue) - { - TRAP_IGNORE( EnableFullScreenModeL( EFalse ) ); - } - break; - } - case TBrCtlDefs::EStateHistoryBeginning: - { - if(aValue) - { - iHistoryAtBeginning = ETrue; - } - else - { - iHistoryAtBeginning = EFalse; - } - if (iPenEnabled) - { - TRAP_IGNORE( iBrowserContentViewToolbar->UpdateButtonsStateL() ); - } - TRAP_IGNORE( UpdateTitleL( ApiProvider() ) ); - break; - } - case TBrCtlDefs::EStateHistoryEnd: - { - if(aValue) - { - iHistoryAtEnd = ETrue; - } - else - { - iHistoryAtEnd = EFalse; - } - if (iPenEnabled) - { - TRAP_IGNORE( iBrowserContentViewToolbar->UpdateButtonsStateL() ); - } - TRAP_IGNORE( UpdateTitleL( ApiProvider() ) ); - break; - } - case TBrCtlDefs::EStateSynchRequestMode: - { - iSynchRequestViewIsUp = (TBool) aValue; - if (iPenEnabled) - { - TRAP_IGNORE( iBrowserContentViewToolbar->UpdateButtonsStateL() ); - } - TRAP_IGNORE( UpdateCbaL() ); - TRAP_IGNORE( UpdateTitleL( ApiProvider() ) ); - break; - } - case TBrCtlDefs::EStatePluginFullScreen: - HandlePluginFullScreen((TBool) aValue); - break; - default: - break; - } - - ApiProvider().WindowMgr().SetCurrentWindowViewState(aState, aValue); - if (iPenEnabled && ApiProvider().WindowMgr().CurrentWindow()->WMLMode()) - { - EnableFullScreenModeL( EFalse ); - } - - } - -// ------------------------------------------------------------------- -// CBrowserContentView::HandleCommandL -// --------------------------------------------------------------------------- -// -void CBrowserContentView::HandleCommandL( - TBrCtlDefs::TBrCtlClientCommands aCommand, - const CArrayFix& /*aAttributesNames*/, - const CArrayFix& aAttributeValues) - { - - // resume js timers - ApiProvider().BrCtlInterface().HandleCommandL((TInt)TBrCtlDefs::ECommandIdBase + (TInt)TBrCtlDefs::ECommandResumeScriptTimers ); - - switch(aCommand) - { - case TBrCtlDefs::EClientCommandLaunchFindKeyword: - { - // Find Keyword not initiated from options menu so don't set menupane to visible. - LaunchFindKeywordEditorL(); - MenuBar()->MenuPane()->MakeVisible(EFalse); - break; - } - case TBrCtlDefs::EClientCommandGotoWebAddress: - { - HandleCommandL(EWmlCmdGoToAddress); - break; - } - - case TBrCtlDefs::EClientCommandSaveAsBookmark: - { - HandleCommandL(EWmlCmdSaveAsBookmark); - break; - } - - case TBrCtlDefs::EClientCommandManageBookmarks: - { - HandleCommandL(EWmlCmdFavourites); - break; - } - - case TBrCtlDefs::EClientCommandZoomIn: - { - ZoomImagesInL(); - break; - } - - case TBrCtlDefs::EClientCommandZoomOut: - { - ZoomImagesOutL(); - break; - } - - case TBrCtlDefs::EClientCommandZoomMode: - { - ZoomModeImagesL(); - break; - } - - case TBrCtlDefs::EClientCommandGoToHompage: - { - HandleCommandL(EWmlCmdLaunchHomePage); - break; - } - case TBrCtlDefs::EClientCommandRotateScreen: - { - HandleCommandL(EWmlCmdRotateDisplay); - break; - } - case TBrCtlDefs::EClientCommandSavePage: - { - HandleCommandL(EWmlCmdSavePage); - break; - } - case TBrCtlDefs::EClientCommandSwitchWindow: - { - HandleCommandL(EWmlCmdSwitchWindow); - break; - } - case TBrCtlDefs::EClientCommandShowHelp: - { - HandleCommandL(EAknCmdHelp); - break; - } - - case TBrCtlDefs::EClientCommandToolbarConfigure: - { - // open settings view in toolbar group - AppUi()->HandleCommandL( EWmlCmdPreferencesToolbar ); - break; - } - - case TBrCtlDefs::EClientCommandToolbarShowKeymap: - { - ShowKeymap(); - break; - } - - case TBrCtlDefs::EClientCommandSubscribeToFeeds: - { -#ifdef __RSS_FEEDS - const TPtrC16 name(aAttributeValues.At(0)); - const TPtrC16 url(aAttributeValues.At(1)); - - ApiProvider().SetLastActiveViewId( KUidBrowserFeedsFolderViewId ); - ApiProvider().FeedsClientUtilities().SubscribeToL( name, url ); - // switch back to FeedsView, so change layout - SetFullScreenOffL(); -#endif - break; - } - - case TBrCtlDefs::EClientCommandShowContextMenu: - { - // Get ElementType - const TPtrC elTypePtr(aAttributeValues.At(0)); - TLex lex(elTypePtr); - TInt elType; - TInt resourceId = 0; - if (lex.Val(elType) == KErrNone) - { - switch (elType) - { - case TBrCtlDefs::EElementNone: - resourceId = R_BROWSER_EMPTY_SPACE_STYLUS_POPUP_MENU; - break; - case TBrCtlDefs::EElementAnchor: - case TBrCtlDefs::EElementTelAnchor: - case TBrCtlDefs::EElementMailtoAnchor: - resourceId = R_BROWSER_ANCHOR_STYLUS_POPUP_MENU; - break; - case TBrCtlDefs::EElementSmartLinkTel: - resourceId = R_BROWSER_PHONE_NUMBER_STYLUS_POPUP_MENU; - break; - case TBrCtlDefs::EElementSmartLinkEmail: - resourceId = R_BROWSER_EMAIL_ADDRESS_STYLUS_POPUP_MENU; - break; - case TBrCtlDefs::EElementImageBox: - resourceId = R_BROWSER_IMAGE_STYLUS_POPUP_MENU; - break; - case TBrCtlDefs::EElementBrokenImage: - if (ApiProvider().Preferences().AutoLoadContent() == EWmlSettingsAutoloadText) - { - if (ApiProvider().FlashPresent()) - { - resourceId = R_BROWSER_IMAGE_PLACEHOLDER_STYLUS_POPUP_MENU_WITH_FLASH; - } - else - { - resourceId = R_BROWSER_IMAGE_PLACEHOLDER_STYLUS_POPUP_MENU_NO_FLASH; - } - } - break; - case TBrCtlDefs::EElementAreaBox: - resourceId = R_BROWSER_IMAGEMAP_STYLUS_POPUP_MENU; - break; - default: - break; - } - if (resourceId != 0) - { - TPoint point; - // Get point X - const TPtrC xPtr(aAttributeValues.At(1)); - lex.Assign(xPtr); - lex.Val(point.iX); - // Get point Y - const TPtrC yPtr(aAttributeValues.At(2)); - lex.Assign(yPtr); - lex.Val(point.iY); - - delete iStylusPopupMenu; - iStylusPopupMenu = NULL; - iStylusPopupMenu = CAknStylusPopUpMenu::NewL( this, point); - TResourceReader rr; - CCoeEnv::Static()->CreateResourceReaderLC(rr, resourceId); - iStylusPopupMenu->ConstructFromResourceL( rr ); - CleanupStack::PopAndDestroy(); // resource reader - iStylusPopupMenu->SetPosition( point); - iStylusPopupMenu->ShowMenu(); - } - } - break; - } - - case TBrCtlDefs::EClientCommandToolbarSettings: - { - // Launch Settings View - HandleCommandL(EWmlCmdPreferences); - break; - } - - case TBrCtlDefs::EClientCommandFullScreen: - { - HandleCommandL(EWmlCmdEnterFullScreenBrowsing); - break; - } - - default: - break; - } - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::HandleSubscribeToL -// Handles a selection from the subscribe to sub-menu. -// ----------------------------------------------------------------------------- -// -void CBrowserContentView::HandleSubscribeToL( TInt aCommand ) - { -#ifndef __RSS_FEEDS - (void) aCommand; -#else // __RSS_FEEDS - TInt index; - - // Get the corresponding feed info. - const RPointerArray& items = ApiProvider(). - BrCtlInterface().SubscribeToMenuItemsL(); - - index = aCommand - TBrCtlDefs::ECommandIdSubscribeToBase; - if ((index >= 0) && (index < items.Count())) - { - const TPtrC16 name(items[index]->Title()); - const TPtrC16 url(items[index]->Url()); - - ApiProvider().SetLastActiveViewId( KUidBrowserFeedsFolderViewId ); - ApiProvider().FeedsClientUtilities().SubscribeToL( name, url ); - // switch back to FeedsView, so change layout - SetFullScreenOffL(); - } -#endif // __RSS_FEEDS - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::HandleSubscribeToUrlL -// Handles subscribing to a feed from a ur -// ----------------------------------------------------------------------------- -// -void CBrowserContentView::HandleSubscribeToWithUrlL( TPtrC aUrl ) - { -#ifndef __RSS_FEEDS - (void) aUrl; -#else // __RSS_FEEDS - - ApiProvider().SetLastActiveViewId( KUidBrowserFeedsFolderViewId ); - - //Get the 'Title' info by comparing aUrl with the url's populated in array 'items' - const RPointerArray& items = ApiProvider().BrCtlInterface().SubscribeToMenuItemsL(); - TInt index = 0; - TInt itemCount = items.Count(); - - while (itemCount != 0 && index < itemCount) - { - if (!(aUrl.Compare(items[index]->Url()))) - { - break; - } - else - { - index++; - } - } - - - if (itemCount == 0 || index >= itemCount ) - { - ApiProvider().FeedsClientUtilities().SubscribeToL( KNullDesC, aUrl ); - } - else - { - const TPtrC16 name(items[index]->Title()); - ApiProvider().FeedsClientUtilities().SubscribeToL(name , aUrl ); - } - -#endif // __RSS_FEEDS - } - -// --------------------------------------------------------------------------- -// CBrowserContentView::DynInitToolbarL -// --------------------------------------------------------------------------- -// -void CBrowserContentView::DynInitToolbarL( TInt /*aResourceId*/, CAknToolbar* /*aToolbar*/ ) - { - // If we have a touch device, check to see if the zoom slider is up, - // if displayed, close it, so the extended toolbar shows without the - // zoomslider displaying on top of it. - if ( PenEnabled() && ZoomSliderVisible() ) - { - MakeZoomSliderVisibleL( EFalse ); - } - - if ( iPenEnabled ) - { - iBrowserContentViewToolbar->UpdateButtonsStateL() ; - } - } - -// --------------------------------------------------------------------------- -// CBrowserContentView::WindowEventHandlerL -// --------------------------------------------------------------------------- -// -void CBrowserContentView::WindowEventHandlerL( TWindowEvent /*aEvent*/, TInt aWindowId ) - { - if ( aWindowId == ApiProvider().WindowMgr().CurrentWindow()->WindowId() ) - { - if ( iPenEnabled ) - { - iBrowserContentViewToolbar->UpdateButtonsStateL(); - } - } - } - -// --------------------------------------------------------------------------- -// CBrowserContentView::IsHistoryViewUp -// --------------------------------------------------------------------------- -// -TBool CBrowserContentView::IsHistoryViewUp() - { - return iHistoryViewIsUp; - } - -// --------------------------------------------------------------------------- -// CBrowserContentView::IsHistoryAtBeginning -// --------------------------------------------------------------------------- -// -TBool CBrowserContentView::IsHistoryAtBeginning() - { - return iHistoryAtBeginning; - } - -// --------------------------------------------------------------------------- -// CBrowserContentView::IsHistoryAtEnd -// --------------------------------------------------------------------------- -// -TBool CBrowserContentView::IsHistoryAtEnd() - { - return iHistoryAtEnd; - } - - -// --------------------------------------------------------------------------- -// CBrowserContentView::FindKeywordL -// --------------------------------------------------------------------------- -// -void CBrowserContentView::FindKeywordL( HBufC* aFindString, TBool aFindDirection ) - { - TInt findResponse = 0; - - if ( aFindString ) - { - // Find string - delete iEnteredKeyword; - iEnteredKeyword = NULL; - iEnteredKeyword = aFindString; - findResponse = ApiProvider().BrCtlInterface().FindKeyword( iEnteredKeyword->Des() ); - } - else - { - // Search next/previous - findResponse = ApiProvider().BrCtlInterface().FindKeywordAgain( aFindDirection ); - } - - HBufC* toolTipText = NULL; - - switch ( findResponse ) - { - case TBrCtlDefs::EFindNoMatches: - toolTipText = StringLoader::LoadLC( R_QTN_BROWSER_KEYWORD_FIND_NO_MATCHES ); - break; - case TBrCtlDefs::EFindWrapAround: - toolTipText = StringLoader::LoadLC( R_QTN_BROWSER_KEYWORD_FIND_WRAPAROUND ); - break; - case TBrCtlDefs::EFindAllMatches: - toolTipText = StringLoader::LoadLC( R_QTN_BROWSER_KEYWORD_FIND_ALL_CONTENT_SEARCHED ); - break; - } - - // Show the result of the search. - if ( toolTipText ) - { - ApiProvider().DialogsProvider().ShowTooltipL( *toolTipText ); - CleanupStack::PopAndDestroy( toolTipText ); - } - - } - -// --------------------------------------------------------------------------- -// CBrowserContentView::HandleClientRectChange -// --------------------------------------------------------------------------- -// -void CBrowserContentView::HandleClientRectChange() - { - if( iContainer ) - { - iContainer->HandleResourceChange(KEikDynamicLayoutVariantSwitch); - UpdateFullScreenL(); - if(KeymapIsUp()) - { - RedrawKeymap(); - } - } - } - -// --------------------------------------------------------------------------- -// CBrowserContentView::SetZoomModeL -// --------------------------------------------------------------------------- -// -void CBrowserContentView::SetZoomModeL( TBool aZoomMode ) - { - // if ( !ApiProvider().Fetching() ) - if (ApiProvider().ContentDisplayed()) - { - iZoomMode = aZoomMode; - TRAP_IGNORE( UpdateCbaL() ); - if ( aZoomMode ) - { - // Show the current zoom level in tooltip - SetZoomLevelTitleTextL( R_BROWSER_ZOOM_LEVEL); - //MakeZoomSliderVisibleL( ETrue ); - } - } - } - -// --------------------------------------------------------------------------- -// CBrowserContentView::MakeZoomSliderVisibleL -// Informs Browser Control if the Zoom Slider should be visible or not. -// --------------------------------------------------------------------------- -// -void CBrowserContentView::MakeZoomSliderVisibleL( TBool aVisible ) - { - if ( aVisible && !iZoomSliderVisible ) - { - // If the page is being fetched then don't show the zoom slider - if ( ApiProvider().ContentDisplayed()) - { - ApiProvider().BrCtlInterface().HandleCommandL( - (TInt)TBrCtlDefs::ECommandZoomSliderShow + - (TInt)TBrCtlDefs::ECommandIdBase ); - iZoomSliderVisible = ETrue; - } - } - // Set the zoom slider to invisible only if the toggle is false, - // and the zoom slider used to be visible - else if (!aVisible && iZoomSliderVisible ) - { - ApiProvider().BrCtlInterface().HandleCommandL( - (TInt)TBrCtlDefs::ECommandZoomSliderHide + - (TInt)TBrCtlDefs::ECommandIdBase ); - iZoomSliderVisible = EFalse; - } - - if ( iPenEnabled ) - { - iBrowserContentViewToolbar->UpdateButtonsStateL(); - } - } - -// --------------------------------------------------------------------------- -// CBrowserContentView::ZoomImagesInL -// --------------------------------------------------------------------------- -// -void CBrowserContentView::ZoomImagesInL( TInt aDuration ) - { - if ( ApiProvider().ContentDisplayed() && !ApiProvider().WindowMgr().CurrentWindow()->WMLMode() ) - { - iZoomLevelArray = ApiProvider().BrCtlInterface().ZoomLevels(); - - // Change zoom level - ZoomImagesL( 1, 0, iZoomLevelArray->Count()-2, aDuration ); - } - } - -// --------------------------------------------------------------------------- -// CBrowserContentView::ZoomImagesOutL -// --------------------------------------------------------------------------- -// -void CBrowserContentView::ZoomImagesOutL( TInt aDuration ) - { - if ( ApiProvider().ContentDisplayed() && !ApiProvider().WindowMgr().CurrentWindow()->WMLMode() ) - { - iZoomLevelArray = ApiProvider().BrCtlInterface().ZoomLevels(); - - // Change zoom level - ZoomImagesL( -1, 1, iZoomLevelArray->Count()-1, aDuration ); - } - } - -// --------------------------------------------------------------------------- -// CBrowserContentView::ZoomModeImagesL -// --------------------------------------------------------------------------- -// -void CBrowserContentView::ZoomModeImagesL() - { - if ( ApiProvider().ContentDisplayed() && !ApiProvider().WindowMgr().CurrentWindow()->WMLMode() ) - { - // Retrieve the current zooming index value - iCurrentZoomLevel = ApiProvider().BrCtlInterface().BrowserSettingL( - TBrCtlDefs::ESettingsCurrentZoomLevelIndex ); - iSavedZoomLevel = iCurrentZoomLevel; - - // Toggle current zoom mode. Zoom Mode allows the user to change - // the zoom level using the navikey or HW zoom key - SetZoomModeL( ETrue ); - } - } - -// --------------------------------------------------------------------------- -// CBrowserContentView::ZoomImagesL -// --------------------------------------------------------------------------- -// -void CBrowserContentView::ZoomImagesL( TInt aDirection, TUint aLow, - TUint aHigh, TInt aDuration ) - { - // Retrieve the current zooming index value, it takes effect right away - iCurrentZoomLevel = ApiProvider().BrCtlInterface().BrowserSettingL( - TBrCtlDefs::ESettingsCurrentZoomLevelIndex ); - TInt currentZoomIndex = FindCurrentZoomIndex(iCurrentZoomLevel); - - // Zoom can be increment, decrement or a direct change to a specific value. - if ( currentZoomIndex >= aLow && currentZoomIndex <= aHigh ) - { - // Set current zoom level. - currentZoomIndex += aDirection; - iCurrentZoomLevel = (*iZoomLevelArray)[currentZoomIndex]; - - // Set actual zoom level. - ApiProvider().BrCtlInterface().SetBrowserSettingL( - TBrCtlDefs::ESettingsCurrentZoomLevelIndex, iCurrentZoomLevel ); - - // Retrieve the current zooming index value, because each page has its - // minimum zoom level, if smaller than it, engine will ignore - // so we have to retrieve the correct zoom level - iCurrentZoomLevel = ApiProvider().BrCtlInterface().BrowserSettingL( - TBrCtlDefs::ESettingsCurrentZoomLevelIndex ); - } - - // Display the zoom indicator - if ( currentZoomIndex <= 0 ) - { - // Display minimum zoom indicator, it will dismiss after aDuration - SetZoomLevelTitleTextL( R_BROWSER_ZOOM_LEVEL_MIN, aDuration ); - } - else if ( currentZoomIndex >= iZoomLevelArray->Count()-1 ) - { - TInt arrayCount = iZoomLevelArray->Count()-1; - // Display maximum zoom indicator, it will dismiss after aDuration - SetZoomLevelTitleTextL( R_BROWSER_ZOOM_LEVEL_MAX, aDuration ); - } - else - { - // Display zoom percentage indicator, it will dismiss after aDuration - // We turned off displaying zoom indicator for each level - // SetZoomLevelTitleTextL( R_BROWSER_ZOOM_LEVEL, aDuration ); - } - } - -// --------------------------------------------------------------------------- -// SaveCurrentZoomLevel -// --------------------------------------------------------------------------- -void CBrowserContentView::SaveCurrentZoomLevel(TBool saveZoom) -{ - if (saveZoom) - { - //save the current zoom level by clicking softkey to confirm - ApiProvider().BrCtlInterface().SetBrowserSettingL( - TBrCtlDefs::ESettingsCurrentZoomLevelIndex, iCurrentZoomLevel ); - } - else - { - iCurrentZoomLevel = iSavedZoomLevel; - ApiProvider().BrCtlInterface().SetBrowserSettingL( - TBrCtlDefs::ESettingsCurrentZoomLevelIndex, iCurrentZoomLevel ); - } -} - -// --------------------------------------------------------------------------- -// FindCurrentZoomIndex -// --------------------------------------------------------------------------- -TInt CBrowserContentView::FindCurrentZoomIndex(TInt aCurrentZoomLevel) -{ - TInt index = -1; - for ( index = 0; indexCount()-1; index++) - { - if (aCurrentZoomLevel <=(*iZoomLevelArray)[index] ) - { - break; - } - } - return index; -} - -// --------------------------------------------------------------------------- -// CBrowserContentView::SetZoomLevelTitleTextL -// --------------------------------------------------------------------------- -// -void CBrowserContentView::SetZoomLevelTitleTextL( TInt aResourceId, TInt aDuration ) - { - HBufC* zoomLevelFormat = NULL; - - if ( aResourceId == R_BROWSER_ZOOM_LEVEL_MIN || - aResourceId == R_BROWSER_ZOOM_LEVEL_MAX ) - { - // Display the zoom max or min string - zoomLevelFormat = StringLoader::LoadLC( aResourceId ); - - // Show zoom indicator for aDuration seconds - ApiProvider().WindowMgr().CurrentWindow()->ChangeTitlePaneTextUntilL( zoomLevelFormat->Des(), aDuration ); - - CleanupStack::PopAndDestroy( ); // zoomLevelFormat - } - } - -// --------------------------------------------------------------------------- -// CBrowserContentView::GetTextZoomLevelsL -// --------------------------------------------------------------------------- -// -void CBrowserContentView::GetTextZoomLevelsL( ) - { - // Creating the text level - // Levels must be equal to TFontSize, with step percent 25% or 50% - // depending on chinese build. - // This is a temporary solution until make sure if engine - // provides text zoom levels. So it is currently hardcoded. - //------ - // China build has only three font sizes: - // 0, 2, 4 (all small, normal, all large) - TInt fontSize = 0; - if ( !AVKONAPAC ) - { - // font sizes 0,1,2,3,4 - for ( TInt level = 50; level <= 150; level = level + 25 ) - { - iTextZoomLevelArray->AppendL( level ); - iFontSizeArray->AppendL( fontSize ); - fontSize++; - } - } - else - { - // font sizes 0,2,4 - for ( TInt level = 50; level <= 150; level = level + 50 ) - { - iTextZoomLevelArray->AppendL( level ); - iFontSizeArray->AppendL( fontSize ); - fontSize = fontSize + 2; - } - } - - // Get initial text zoom level index, bt comparing - // the preferences value, with the one in iFontSizeArray, - // and get the index (i) - TBool found = EFalse; - for ( TInt i = 0; i < iFontSizeArray->Count(); i++ ) - { - if ( ApiProvider().Preferences().FontSize() == (*iFontSizeArray)[i] ) - { - iCurrentTextZoomLevelIndex = i; - found = ETrue; - } - } - // If the initial font size value is not found, then the cenrep - // default is not right, by default initial cenrep font size value - // should be 0,2,4. So general, and chinese values are the same. - // Because if for example default cenrep value of font size is 1, - // then that is not supported in chinese build. - // General font size values are: 0,1,2,3,4 - // Chinese font size values are: 0,2,4 - if ( !found ) - { - User::Leave( KErrGeneral ); - } - } - -// --------------------------------------------------------------------------- -// CBrowserContentView::KeymapIsUp -// --------------------------------------------------------------------------- -// -TBool CBrowserContentView::KeymapIsUp() - { - return (iShortcutKeyMap != NULL); - } - -// --------------------------------------------------------------------------- -// CBrowserContentView::isZoomMode -// --------------------------------------------------------------------------- -// -TBool CBrowserContentView::isZoomMode() - { - // Zoom Mode currently disabled - // return iZoomMode; - return EFalse; - } - -// --------------------------------------------------------------------------- -// CBrowserContentView::ShowKeymap -// --------------------------------------------------------------------------- -// -void CBrowserContentView::ShowKeymap() - { - iShortcutKeyMap = CBrowserShortcutKeyMap::NewL(iContainer, iApiProvider); - UpdateCbaL(); - } - -// --------------------------------------------------------------------------- -// CBrowserContentView::HideKeymap -// --------------------------------------------------------------------------- -// -void CBrowserContentView::HideKeymap() - { - delete(iShortcutKeyMap); - iShortcutKeyMap = NULL; - TRAP_IGNORE(UpdateCbaL()); - TRAP_IGNORE(UpdateFullScreenL()); - } - -// --------------------------------------------------------------------------- -// CBrowserContentView::RedrawKeymap -// --------------------------------------------------------------------------- -// -void CBrowserContentView::RedrawKeymap() - { - HideKeymap(); - ShowKeymap(); - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::EnableFullScreenModeL -// ----------------------------------------------------------------------------- -// -void CBrowserContentView::EnableFullScreenModeL( TBool aEnableFullScreen ) - { - if( iContentFullScreenMode == aEnableFullScreen ) - return; - - TInt command( KErrNotFound ); - if ( aEnableFullScreen ) - { - iContentFullScreenMode = ETrue; - UpdateFullScreenL(); - command = TBrCtlDefs::ECommandEnterFullscreenBrowsing; - } - else - { - if (iPenEnabled) - { - Toolbar()->SetToolbarVisibility( ETrue, EFalse ); - } - iContentFullScreenMode = EFalse; - SetFullScreenOffL(); - command = TBrCtlDefs::ECommandLeaveFullscreenBrowsing; - if (iPenEnabled) - { - StartAutoFullScreenIdleTimer(); - } - } - ApiProvider().BrCtlInterface().HandleCommandL( - command + (TInt)TBrCtlDefs::ECommandIdBase ); - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::HandlePluginFullScreen -// ----------------------------------------------------------------------------- -// -void CBrowserContentView::HandlePluginFullScreen(TBool aFullScreen) -{ - iIsPluginFullScreenMode = aFullScreen; - if (aFullScreen) { - if (AppUi()->Orientation() != CAknAppUiBase::EAppUiOrientationLandscape) { - iOrientation = AppUi()->Orientation(); - TRAP_IGNORE(AppUi()->SetOrientationL(CAknAppUiBase::EAppUiOrientationLandscape)); - } - if (iPenEnabled) { - Toolbar()->SetToolbarVisibility( EFalse, EFalse ); - } - iContentFullScreenMode = ETrue; - UpdateFullScreenL(); - } - else { - TInt command( KErrNotFound ); - command = TBrCtlDefs::ECommandLeaveFullscreenBrowsing; - ApiProvider().BrCtlInterface().HandleCommandL( - command + (TInt)TBrCtlDefs::ECommandIdBase ); - TRAP_IGNORE(AppUi()->SetOrientationL(iOrientation)); - if (iPenEnabled) { - Toolbar()->SetToolbarVisibility( ETrue, EFalse ); - } - iContentFullScreenMode = EFalse; - SetFullScreenOffL(); - if (iPenEnabled) - { - StartAutoFullScreenIdleTimer(); - } - } -} - -// ----------------------------------------------------------------------------- -// CBrowserContentView::ShowFsStatusPane -// ----------------------------------------------------------------------------- -// -void CBrowserContentView::ShowFsStatusPane(TBool aShow) - { - - if (aShow) - { -#ifdef RD_SCALABLE_UI_V2 - if ( Layout_Meta_Data::IsLandscapeOrientation() ) - StatusPane()->SwitchLayoutL(R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT_NO_SOFTKEYS); -#endif - StatusPane()->MakeVisible( ETrue ); - - SetContentContainerRect(); - - // Remove any timer that has already been set - if ( iPeriodic ) - { - iPeriodic->Cancel(); - } - } - else - { - // Kick off timer for 3 seconds before hiding status pane again - if ( iPeriodic ) - { - iPeriodic->Cancel(); - } - iPeriodic->Start(KFullScreenStatusPaneTimeout, 0,TCallBack(CallHideFsStatusPane,this)); - } - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::CallHideFsStatusPane -// ----------------------------------------------------------------------------- -TInt CBrowserContentView::CallHideFsStatusPane(TAny* aCBrowserContentView) - { - __ASSERT_DEBUG(aCBrowserContentView, Util::Panic( Util::EUninitializedData )); - TRAP_IGNORE( - ((CBrowserContentView*)aCBrowserContentView)->HideFsStatusPane(); - ); - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::HideFsStatusPane -// ----------------------------------------------------------------------------- -void CBrowserContentView::HideFsStatusPane() - { - iPeriodic->Cancel(); - if (iContentFullScreenMode && ApiProvider().LastActiveViewId() == KUidBrowserContentViewId ) - { - StatusPane()->MakeVisible( EFalse ); - - SetContentContainerRect(); - } - } -// ----------------------------------------------------------------------------- -// CBrowserContentView::StartAutoFullScreenTimer -// ----------------------------------------------------------------------------- -// -void CBrowserContentView::StartAutoFullScreenTimer() - { - SuspendAutoFullScreenIdleTimer(); - if ( iAutoFSPeriodic ) - { - iAutoFSPeriodic->Cancel(); - } - iAutoFSPeriodic->Start(KAutoFullScreenTimeout, 0,TCallBack(CallActivateAutoFullScreen,this)); - - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::StartAutoFullScreenIdleTimer -// ----------------------------------------------------------------------------- -// -void CBrowserContentView::StartAutoFullScreenIdleTimer() - { - if ( iIdlePeriodic ) - { - iIdlePeriodic->Cancel(); - } - iIdlePeriodic->Start(KAutoFullScreenIdleTimeout, 0,TCallBack(CallActivateAutoFullScreen,this)); - - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::SuspendAutoFullScreenTimer -// ----------------------------------------------------------------------------- -// -void CBrowserContentView::SuspendAutoFullScreenTimer() - { - if ( iAutoFSPeriodic ) - { - iAutoFSPeriodic->Cancel(); - } - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::SuspendAutoFullScreenIdleTimer -// ----------------------------------------------------------------------------- -// -void CBrowserContentView::SuspendAutoFullScreenIdleTimer() - { - if ( iIdlePeriodic ) - { - iIdlePeriodic->Cancel(); - } - } - - -// ----------------------------------------------------------------------------- -// CBrowserContentView::CallSwitchToAutoFullScreen -// ----------------------------------------------------------------------------- -// -TInt CBrowserContentView::CallActivateAutoFullScreen(TAny* aCBrowserContentView) - { - __ASSERT_DEBUG(aCBrowserContentView, Util::Panic( Util::EUninitializedData )); - TRAP_IGNORE( - ((CBrowserContentView*)aCBrowserContentView)->ActivateAutoFullScreenMode(); - ); - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::ActivateAutoFullScreen -// ----------------------------------------------------------------------------- -void CBrowserContentView::ActivateAutoFullScreenMode() - { - if ( iAutoFSPeriodic ) - { - iAutoFSPeriodic->Cancel(); - } - if ( iIdlePeriodic ) - { - iIdlePeriodic->Cancel(); - } - - if ( ApiProvider().LastActiveViewId() == KUidBrowserContentViewId ) - { - if( IsForeground() - && ApiProvider().LoadObserver().ContentDisplayed() - && !iZoomSliderVisible - && !iHistoryViewIsUp - && !iContainer->GotoPane()->IsVisible() - && !iContainer->FindKeywordPane()->IsVisible() -#ifdef RD_SCALABLE_UI_V2 - && !Toolbar()->ToolbarExtension()->IsShown() -#endif - && !iThumbnailViewIsUp - && !iOptionsMenuActive - && !ApiProvider().IsDisplayingMenuOrDialog() - && !ApiProvider().WindowMgr().CurrentWindow()->WMLMode() - && !iIsPluginFullScreenMode) - { - EnableFullScreenModeL( ETrue); - } - else - { - if (iIsPluginFullScreenMode || !IsForeground()) - { - //Hide the FullscreenExit Button - ApiProvider().BrCtlInterface().HandleCommandL( - TBrCtlDefs::ECommandLeaveFullscreenBrowsing - + (TInt)TBrCtlDefs::ECommandIdBase ); - } - StartAutoFullScreenTimer(); - } - } - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::SetEmphasis -// ----------------------------------------------------------------------------- - -void CBrowserContentView::SetEmphasis(CCoeControl* aMenuControl, TBool aEmphasis) - { - if (iPenEnabled) - { - if(aEmphasis) - { - iOptionsMenuActive = ETrue; - SuspendAutoFullScreenTimer(); - } - else - { - iOptionsMenuActive = EFalse; - StartAutoFullScreenTimer(); - } - } - CAknView::SetEmphasis(aMenuControl, aEmphasis); - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::IsEditMode -// ----------------------------------------------------------------------------- -TBool CBrowserContentView::IsEditMode() - { - TBrCtlDefs::TBrCtlElementType focusedElementType = - ApiProvider().BrCtlInterface().FocusedElementType(); - - TBool retVal = ((focusedElementType == TBrCtlDefs:: EElementActivatedInputBox) || - (focusedElementType == TBrCtlDefs:: EElementInputBox) || - (focusedElementType == TBrCtlDefs:: EElementTextAreaBox)); - return (retVal); - } - -void CBrowserContentView::HandleStatusPaneCallBack() - { - TVwsViewId activeViewId; - TBool resIdChanged(EFalse); - TInt resId = StatusPane()->CurrentLayoutResId(); - - if ( AppUi()->GetActiveViewId( activeViewId ) == KErrNone ) - { - if ( activeViewId.iViewUid == KUidBrowserContentViewId ) - { - if ( Layout_Meta_Data::IsLandscapeOrientation() ) - { - resIdChanged = resId != R_AVKON_STATUS_PANE_LAYOUT_USUAL; - StatusPane()->SwitchLayoutL(R_AVKON_STATUS_PANE_LAYOUT_USUAL); - } - else //Portrait - { - resIdChanged = resId != R_AVKON_STATUS_PANE_LAYOUT_SMALL; - StatusPane()->SwitchLayoutL(R_AVKON_STATUS_PANE_LAYOUT_SMALL); - } - } - } - if(resIdChanged) - SetContentContainerRect(); -} - -// End of File