diff -r 4baee4f15982 -r 6385c4c93049 browserui/browser/BrowserAppSrc/BrowserAppViewBase.cpp --- a/browserui/browser/BrowserAppSrc/BrowserAppViewBase.cpp Thu Aug 19 09:57:56 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,321 +0,0 @@ -/* -* Copyright (c) 2002 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: -* Declaration of class CBrowserAppViewBase. -* -* -*/ - - -#include "BrowserAppViewBase.h" -#include "BrowserAppUi.h" -#include "ApiProvider.h" -#include -#include "CommonConstants.h" -#include -#include -#include -#include // check landscape/portrait modes -#include -#include -#include -#include "BrowserUtil.h" -#include -#include -#include -// ================= MEMBER FUNCTIONS ======================= - -// --------------------------------------------------------- -// TSKPair::TSKPair -// --------------------------------------------------------- -// -TSKPair::TSKPair(): - iCmdId(EWmlNoCmd),iQtnRsc(R_BROWSER_DYN_SK_NULL) -{ -} - -// --------------------------------------------------------- -// TSKPair::TSKPair -// --------------------------------------------------------- -// -TSKPair::TSKPair(TInt aId,TInt aRsc): - iCmdId(aId),iQtnRsc(aRsc) -{ -} - -// --------------------------------------------------------- -// TSKPair::IsNotDefault -// --------------------------------------------------------- -// -TBool TSKPair::IsAssigned() -{ - return ( (iCmdId != EWmlNoCmd) && (iQtnRsc != R_BROWSER_DYN_SK_NULL) ); -} - -// --------------------------------------------------------- -// TSKPair::operator== -// --------------------------------------------------------- -// -TBool TSKPair::operator==(TSKPair aSkPair) -{ - return( (iCmdId == aSkPair.id()) && (iQtnRsc == aSkPair.qtn()) ); -} - -// --------------------------------------------------------- -// TSKPair::operator= -// --------------------------------------------------------- -// -void TSKPair::operator=(TSKPair aSKPair) -{ - iCmdId = aSKPair.id(); - iQtnRsc = aSKPair.qtn(); -} - -// --------------------------------------------------------- -// TSKPair::set -// --------------------------------------------------------- -// -void TSKPair::setPair(TInt aId, TInt aRsc) -{ - iCmdId = aId; - iQtnRsc = aRsc; -} - - -// ================= MEMBER FUNCTIONS ======================= - -// --------------------------------------------------------- -// CBrowserViewBase::CBrowserViewBase -// --------------------------------------------------------- -// -CBrowserViewBase::CBrowserViewBase( MApiProvider& aApiProvider ): - iApiProvider( aApiProvider ), - iLastCommandSet( R_BROWSER_BUTTONS_CBA_NULL ) - { - } - -// --------------------------------------------------------- -// CBrowserViewBase::ApiProvider -// --------------------------------------------------------- -// -MApiProvider& CBrowserViewBase::ApiProvider() - { - return iApiProvider; - } - -// --------------------------------------------------------- -// CBrowserViewBase::UpdateCbaL -// --------------------------------------------------------- -// -void CBrowserViewBase::UpdateCbaL() -{ - if ( !iApiProvider.ExitInProgress() ) - { - TInt commandSet = CommandSetResourceIdL(); - TUid currViewId = Id(); - - // Ask BrowserAppUi which view we were in when we last updated the CBA - // this will help decide if we should do it again - TUid previousCBAUpdateViewId = iApiProvider.GetLastCBAUpdateView(); - - if ( commandSet ) - { - // Don't perform updates to the CBA when - // - // - We're still in the same view we were just in AND - // - We're not dynamically setting CBA (do more checking below) AND - // - The command set is the same as the one we just set last time - // this was called - // - We're currently in the content view (the update-cba is more complex here - // and we should just do it when asked by ContentView class) - // - // NOTE that we rely on CommandSetResource to set the commandSet to - // R_BROWSER_BUTTONS_CBA_DYNAMIC to signal a desire to update the keys - // dynamically. - if( currViewId == iPreviousViewID && - commandSet != R_BROWSER_BUTTONS_CBA_DYNAMIC && - currViewId == previousCBAUpdateViewId && - currViewId != KUidBrowserContentViewId) - { - return; - } - - // If command set is our special dynamic cba set, - // now ask derived class for the resources dynamically. - if(commandSet == R_BROWSER_BUTTONS_CBA_DYNAMIC) - { - TSKPair lsk,rsk,msk; - CommandSetResourceDynL(lsk,rsk,msk); - - // Similar exclusion as above: - // Don't update the LSK, RSK, MSK dynamic assignments if: - // - // - We're still in the same view we were just in - // - The lsk, rsk, msk are all the same settings we set last time - if(currViewId == previousCBAUpdateViewId && - lsk == iLastLSK && - rsk == iLastRSK && - msk == iLastMSK) - { - return; - } - - // Save the settings - iLastLSK = lsk; - iLastRSK = rsk; - iLastMSK = msk; - - // - // Update each softkey in turn - // - // If the CommandSetResourceDynL command assigned something to the key - // (in other words, it changed the key assignment from its default - it does have the option not to do so), - // - // Update each key now. - // - // Each derived-class view should update them as a general rule, even if it is to some default value - // - if( lsk.IsAssigned() ) - { - HBufC* txt = StringLoader::LoadLC( lsk.qtn() ); - Cba()->SetCommandL(CEikButtonGroupContainer::ELeftSoftkeyPosition, lsk.id(), *txt); - CleanupStack::PopAndDestroy(); // txt - } - if( rsk.IsAssigned() ) - { - HBufC* txt = StringLoader::LoadLC( rsk.qtn() ); - Cba()->SetCommandL(CEikButtonGroupContainer::ERightSoftkeyPosition, rsk.id(), *txt); - CleanupStack::PopAndDestroy(); // txt - } - if( msk.IsAssigned() ) - { - HBufC* txt = StringLoader::LoadLC( msk.qtn() ); - Cba()->SetCommandL(CEikButtonGroupContainer::EMiddleSoftkeyPosition, msk.id(), *txt); - CleanupStack::PopAndDestroy(); // txt - } - } - else // Else - the exisiting case: set the softkeys as a block by assigning a pre-defined resource id - { - // The usual case is to set the command set to - // whatever CommandSetResourceIdL has said - Cba()->SetCommandSetL( commandSet ); - } - - // Save the last command set and set view id - iLastCommandSet = commandSet; - iApiProvider.SetLastCBAUpdateView(currViewId); - - // DrawNow() doesn't refresh MSK properly - Cba()->DrawDeferred(); - } - } -} - - - - - - - - -// --------------------------------------------------------- -// CBrowserViewBase::MakeCbaVisible -// --------------------------------------------------------- -// -void CBrowserViewBase::MakeCbaVisible(TBool aVisible) - { - // don't turn off the cba in landscape mode since it will still be visible and - // calling MakeVisible(EFalse) will just make it not update correctly - - TBool vis = aVisible; - if (!vis) - { - CEikStatusPaneBase* statusPane = CEikStatusPaneBase::Current(); - TInt currentStatusPaneLayoutResId = 0; - if (statusPane) - { - currentStatusPaneLayoutResId = statusPane->CurrentLayoutResId(); - } - else - { - // If this CBA:s owner does not have statuspane, then we ask the layout from AknCapServer. - currentStatusPaneLayoutResId = AVKONENV->StatusPaneResIdForCurrentLayout(CAknSgcClient::CurrentStatuspaneResource()); - } - - TBool staconPane = ((currentStatusPaneLayoutResId == R_AVKON_STACON_PANE_LAYOUT_USUAL_SOFTKEYS_RIGHT) || - (currentStatusPaneLayoutResId == R_AVKON_STACON_PANE_LAYOUT_USUAL_SOFTKEYS_LEFT) || - (currentStatusPaneLayoutResId == R_AVKON_STACON_PANE_LAYOUT_EMPTY_SOFTKEYS_RIGHT) || - (currentStatusPaneLayoutResId == R_AVKON_STACON_PANE_LAYOUT_EMPTY_SOFTKEYS_LEFT) || - (currentStatusPaneLayoutResId == R_AVKON_STACON_PANE_LAYOUT_IDLE_SOFTKEYS_RIGHT) || - (currentStatusPaneLayoutResId == R_AVKON_STACON_PANE_LAYOUT_IDLE_SOFTKEYS_LEFT)); - vis = staconPane; - } - Cba()->MakeVisible( vis ); - } - -// --------------------------------------------------------- -// CBrowserViewBase::UpdateGotoPaneL -// --------------------------------------------------------- -// -void CBrowserViewBase::UpdateGotoPaneL() - { - } - -// --------------------------------------------------------- -// CBrowserViewBase::ClearCbaL -// --------------------------------------------------------- -// -void CBrowserViewBase::ClearCbaL() - { - TInt commandSet = R_AVKON_SOFTKEYS_EMPTY; - Cba()->SetCommandSetL( commandSet ); - Cba()->DrawNow(); - } - -// ----------------------------------------------------------------------------- -// CBrowserContentView::LaunchSearchApplicationL -// ----------------------------------------------------------------------------- -// -void CBrowserViewBase::LaunchSearchApplicationL( const TDesC& aSearchString ) - { - TInt id = iApiProvider.Preferences().GetIntValue( KBrowserSearchAppUid ); - TUid searchAppId( TUid::Uid( id ) ); - TApaTaskList taskList( CEikonEnv::Static()->WsSession() ); - TApaTask task = taskList.FindApp( searchAppId ); - HBufC8* searchParam8 = CnvUtfConverter::ConvertFromUnicodeToUtf8L( aSearchString ); - CleanupStack::PushL( searchParam8 ); - if ( task.Exists() ) - { - User::LeaveIfError( task.SendMessage( TUid::Uid( 0 ), *searchParam8 ) ); - } - else - { - RApaLsSession appArcSession; - TApaAppInfo appInfo; - User::LeaveIfError(appArcSession.Connect()); - CleanupClosePushL( appArcSession ); - TInt err = appArcSession.GetAppInfo( appInfo, searchAppId ); - if( err == KErrNone ) - { - CApaCommandLine* cmdLine = CApaCommandLine::NewLC(); - cmdLine->SetExecutableNameL( appInfo.iFullName ); - cmdLine->SetTailEndL( *searchParam8 ); - User::LeaveIfError( appArcSession.StartApp( *cmdLine )); - CleanupStack::PopAndDestroy( cmdLine ); - } - CleanupStack::PopAndDestroy( &appArcSession ); - } - CleanupStack::PopAndDestroy( searchParam8 ); - } -// End of File