diff -r 4baee4f15982 -r 6385c4c93049 browserui/browser/BrowserAppSrc/BrowserWindowSelectionView.cpp --- a/browserui/browser/BrowserAppSrc/BrowserWindowSelectionView.cpp Thu Aug 19 09:57:56 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,370 +0,0 @@ -/* -* Copyright (c) 2005 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: -* Implementation of CBrowserWindowSelectionView. -* -* -*/ - - -// INCLUDE FILES -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "BrowserAppUi.h" -#include "CommonConstants.h" -#include "BrowserWindowSelectionView.h" -#include "BrowserWindowSelectionContainer.h" -#include "Preferences.h" -#include "Display.h" -#include "BrowserWindowManager.h" -#include "BrowserWindow.h" - -// ================= MEMBER FUNCTIONS ======================= - -// ---------------------------------------------------------------------------- -// CBrowserWindowSelectionView::NewLC -// ---------------------------------------------------------------------------- -// -CBrowserWindowSelectionView* CBrowserWindowSelectionView::NewLC( MApiProvider& aApiProvider ) - { - CBrowserWindowSelectionView* view = new (ELeave) CBrowserWindowSelectionView( aApiProvider ); - CleanupStack::PushL( view ); - view->ConstructL( ); - return view; - } - -// --------------------------------------------------------- -// CBrowserWindowSelectionView::CBrowserWindowSelectionView -// --------------------------------------------------------- -// -CBrowserWindowSelectionView::CBrowserWindowSelectionView( MApiProvider& aApiProvider ): -CBrowserViewBase( aApiProvider ) - { - } - -// --------------------------------------------------------- -// CBrowserWindowSelectionView::ConstructL(const TRect& aRect) -// EPOC two-phased constructor -// --------------------------------------------------------- -// -void CBrowserWindowSelectionView::ConstructL() - { - BaseConstructL( R_BROWSERWINDOWSELECTION_VIEW ); - iTitles = new (ELeave) CArrayFixFlat( 2 ); - iWindowIds = new (ELeave) CArrayFixFlat( 2 ); - } - -// --------------------------------------------------------- -// CBrowserWindowSelectionView::~CBrowserWindowSelectionView() -// destructor -// --------------------------------------------------------- -// -CBrowserWindowSelectionView::~CBrowserWindowSelectionView() - { - if ( iContainer ) - { - AppUi()->RemoveFromViewStack( *this, iContainer ); - } - - delete iContainer; - delete iWindowInfo; - delete iTitles; - delete iWindowIds; - } - -// --------------------------------------------------------- -// TUid CBrowserWindowSelectionView::Id() -// -// --------------------------------------------------------- -// -TUid CBrowserWindowSelectionView::Id() const - { - return KUidBrowserWindowSelectionViewId; - } - -// --------------------------------------------------------------------------- -// CBrowserWindowSelectionView::CommandSetResourceIdL -// --------------------------------------------------------------------------- -TInt CBrowserWindowSelectionView::CommandSetResourceIdL() - { - TInt commandSet = 0; // R_AVKON_SOFTKEYS_EMPTY; - return commandSet; - } - -// --------------------------------------------------------- -// CBrowserWindowSelectionView::HandleCommandL() -// --------------------------------------------------------- -// -void CBrowserWindowSelectionView::HandleCommandL(TInt aCommand) - { - switch ( aCommand ) - { - case EAknCmdOpen: - { - TInt windowId = GetWindowIdFromTabIndex( iContainer->GetTabGroup()->ActiveTabIndex() ); - ApiProvider().WindowMgr().SwitchWindowL( windowId ); - //If the user switches window we reset the CalledFromAnotherApp status - if(ApiProvider().CalledFromAnotherApp()) - { - ApiProvider().SetCalledFromAnotherApp(EFalse); - } - ApiProvider().SetViewToBeActivatedIfNeededL( GetPreviousViewID() ); - break; - } - case EWmlCmdCloseWindow: - { - TInt windowId = GetWindowIdFromTabIndex( iContainer->GetTabGroup()->ActiveTabIndex() ); - TInt newWindowId = ApiProvider().WindowMgr().DeleteWindowL( windowId, EFalse ); - - // Check if there is only one remaining window, - // after closing the window. - delete iWindowInfo; - iWindowInfo = NULL; - iWindowInfo = ApiProvider().WindowMgr().GetWindowInfoL( this ); - if ( iWindowInfo->Count() < 2 ) - { - ApiProvider().SetViewToBeActivatedIfNeededL( KUidBrowserContentViewId ); - ApiProvider().WindowMgr().SwitchWindowL( newWindowId ); - } - break; - } - case EWmlCmdCloseAllWindowButThis: - { - iWindowEventsDisabled = ETrue; - // Get current window id. - TInt windowId = GetWindowIdFromTabIndex( iContainer->GetTabGroup()->ActiveTabIndex() ); - // Get all windows id. - delete iWindowInfo; - iWindowInfo = NULL; - iWindowInfo = ApiProvider().WindowMgr().GetWindowInfoL( this ); - - // Delete all windows except this. - for ( TInt i = 0; i < iWindowInfo->Count(); i++ ) - { - if ( (*iWindowInfo)[i]->iWindowId != windowId ) - { - ApiProvider().WindowMgr().DeleteWindowL( (*iWindowInfo)[i]->iWindowId, ETrue ); - } - } - // Activate curent window. - ApiProvider().SetViewToBeActivatedIfNeededL( KUidBrowserContentViewId ); - ApiProvider().WindowMgr().SwitchWindowL( windowId ); - iWindowEventsDisabled = EFalse; - break; - } - case EWmlCmdWindowSelectionCancel: - { - ApiProvider().SetViewToBeActivatedIfNeededL( KUidBrowserContentViewId ); - break; - } - default: - { - break; - } - } - } - -// --------------------------------------------------------- -// CBrowserWindowSelectionView::HandleClientRectChange() -// --------------------------------------------------------- -// -void CBrowserWindowSelectionView::HandleClientRectChange() - { - if ( iContainer ) - { - iContainer->SetRect( ClientRect() ); - } - } - -// --------------------------------------------------------- -// CBrowserWindowSelectionView::DoActivateL(...) -// -// --------------------------------------------------------- -// -void CBrowserWindowSelectionView::DoActivateL( const TVwsViewId& aPrevViewId,TUid /*aCustomMessageId*/, - const TDesC8& /*aCustomMessage*/) - { - StatusPane()->SwitchLayoutL( R_AVKON_STATUS_PANE_LAYOUT_USUAL ); - StatusPane()->MakeVisible( ETrue ); - - iPreviousViewID = ApiProvider().LastActiveViewId( ); - ApiProvider().SetLastActiveViewId( Id() ); - iLastViewId = aPrevViewId; - if (!iContainer) - { - iContainer = new (ELeave) CBrowserWindowSelectionContainer( this ); - iContainer->SetMopParent(this); - iContainer->ConstructL( ClientRect() ); - AppUi()->AddToStackL( *this, iContainer ); - UpdateTabsL(); - } - ApiProvider().WindowMgr().AddObserverL( this ); - } - -// --------------------------------------------------------- -// CBrowserWindowSelectionView::DoDeactivate() -// --------------------------------------------------------- -// -void CBrowserWindowSelectionView::DoDeactivate() - { - if ( iContainer ) - { - AppUi()->RemoveFromViewStack( *this, iContainer ); - } - - delete iContainer; - iContainer = NULL; - ApiProvider().WindowMgr().RemoveObserver( this ); - } - -// --------------------------------------------------------- -// CBrowserWindowSelectionView::CreateWindowInfoLC() -// --------------------------------------------------------- -// -HBufC* CBrowserWindowSelectionView::CreateWindowInfoLC( const CBrowserWindow& aWindow ) - { - HBufC* buf = aWindow.BrCtlInterface().PageInfoLC( TBrCtlDefs::EPageInfoTitle ); - if( !buf || !buf->Length() ) - { - CleanupStack::PopAndDestroy( buf ); - buf = aWindow.BrCtlInterface().PageInfoLC( TBrCtlDefs::EPageInfoUrl ); - } - return buf; - } - -// --------------------------------------------------------- -// CBrowserWindowSelectionView::UpdateTabs() -// --------------------------------------------------------- -// -void CBrowserWindowSelectionView::UpdateTabsL() - { - delete iWindowInfo; - iWindowInfo = NULL; - iWindowInfo = ApiProvider().WindowMgr().GetWindowInfoL( this ); - - iTitles->Reset(); - iWindowIds->Reset(); - TInt activeTab = 0; - for ( TInt i = 0; i < iWindowInfo->Count(); i++ ) - { - iTitles->AppendL( CONST_CAST( HBufC*, (*iWindowInfo)[i]->iWindowText ) ); - iWindowIds->AppendL( (*iWindowInfo)[i]->iWindowId ); - if ( (*iWindowInfo)[i]->iCurrent ) - { - activeTab = i; - HBufC* title = CONST_CAST( HBufC*, (*iWindowInfo)[i]->iWindowText ); - if ( title ) - { - ApiProvider().Display().SetTitleL( title->Des() ); - } - } - } - iContainer->ChangeTabL( iTitles, activeTab ); - } - - -// --------------------------------------------------------- -// CBrowserWindowSelectionView::UpdateTabs() -// --------------------------------------------------------- -// -void CBrowserWindowSelectionView::UpdateTumbnailL() - { - TInt windowId = GetWindowIdFromTabIndex( iContainer->GetTabGroup()->ActiveTabIndex() ); - iContainer->GetWindowThumbnailL( windowId ); - iContainer->DrawNow(); - } - -// --------------------------------------------------------- -// CBrowserWindowSelectionView::UpdateTitleL() -// --------------------------------------------------------- -// -void CBrowserWindowSelectionView::UpdateTitleL( ) - { - HBufC* title = GetWindowTitleFromTabIndex( iContainer->GetTabGroup()->ActiveTabIndex() ); - ApiProvider().Display().SetTitleL( (*title).Des( ) ); - } - -// ----------------------------------------------------------------------------- -// CBrowserWindowSelectionView::GetWindowIdFromTabIndex -// ----------------------------------------------------------------------------- -// -TInt CBrowserWindowSelectionView::GetWindowIdFromTabIndex( TInt aActiveTabIndex ) - { - TInt windowId = 0; - for ( TInt i = 0; i < iWindowIds->Count(); i++ ) - { - if ( i == aActiveTabIndex ) - { - windowId = (*iWindowInfo)[i]->iWindowId; - } - } - return windowId; - } - -// ----------------------------------------------------------------------------- -// CBrowserWindowSelectionView::GetWindowIdFromTabIndex -// ----------------------------------------------------------------------------- -// -HBufC* CBrowserWindowSelectionView::GetWindowTitleFromTabIndex( TInt aActiveTabIndex ) - { - HBufC* windowText = NULL; - for ( TInt i = 0; i < iWindowInfo->Count(); i++ ) - { - if ( i == aActiveTabIndex ) - { - windowText = CONST_CAST( HBufC*, (*iWindowInfo)[i]->iWindowText ); - } - } - return windowText; - } - -// --------------------------------------------------------- -// CBrowserWindowSelectionView::WindowEventHandlerL -// --------------------------------------------------------- -// -void CBrowserWindowSelectionView::WindowEventHandlerL( TWindowEvent aEvent, TInt /*aWindowId*/ ) - { - if ( !iWindowEventsDisabled ) - { - if ( aEvent == EWindowClose || aEvent == EWindowOpen ) - { - delete iWindowInfo; - iWindowInfo = NULL; - iWindowInfo = ApiProvider().WindowMgr().GetWindowInfoL( this ); - // Update tabs when there are more than one windows open. - if ( iWindowInfo->Count() > 1 ) - { - UpdateTabsL(); - } - } - if ( aEvent == EWindowLoadStart ) - { - iEikonEnv->InfoMsg( _L("load start") ); - } - if ( aEvent == EWindowLoadStop ) - { - iEikonEnv->InfoMsg( _L("load stop") ); - } - } - } - -// End of File