# HG changeset patch # User Kiiskinen Klaus (Nokia-D-MSW/Tampere) # Date 1241759923 -10800 # Node ID 57d5b8e231c49090d5154331983a049872e68107 # Parent 84ad3b177aa324e6ceacf0ee7cfc4bc36de801aa Revision: 200915 Kit: 200918 diff -r 84ad3b177aa3 -r 57d5b8e231c4 brdo.layers.sysdef.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/brdo.layers.sysdef.xml Fri May 08 08:18:43 2009 +0300 @@ -0,0 +1,23 @@ + + ]> + + + + + + + + + + + + + + + + + + + + diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserplugins/group/bld.inf --- a/browserplugins/group/bld.inf Mon Mar 30 12:49:49 2009 +0300 +++ b/browserplugins/group/bld.inf Fri May 08 08:18:43 2009 +0300 @@ -1,46 +1,20 @@ /* -* ============================================================================== -* Name : bld.inf -* Part of : Toplevel BrowserPlugins -* Interface : -* Description : Highlevel bld.inf -* Version : 1 -* -* Copyright (c) 2006, Nokia Corporation -* All rights reserved. -* -* Redistribution and use in source and binary forms, with or without -* modification, are permitted provided that the following conditions -* are met: +* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* * Redistributions of source code must retain the above copyright -* notice, this list of conditions and the following disclaimer. -* * Redistributions in binary form must reproduce the above copyright -* notice, this list of conditions and the following disclaimer in -* the documentation and/or other materials provided with the -* distribution. -* * Neither the name of the Nokia Corporation nor the names of its -* contributors may be used to endorse or promote products derived -* from this software without specific prior written permission. +* Initial Contributors: +* Nokia Corporation - initial contribution. * -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE -* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH -* DAMAGE. +* Contributors: * +* Description: Project build file for BrowserPlugins * -* ============================================================================== */ - #ifdef __WEB_WIDGETS #include "../browsersysteminfoplugin/group/bld.inf" #include "../browsergpsplugin/group/bld.inf" diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/BrowserAppInc/BrowserAppUi.h --- a/browserui/browser/BrowserAppInc/BrowserAppUi.h Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/BrowserAppInc/BrowserAppUi.h Fri May 08 08:18:43 2009 +0300 @@ -105,6 +105,14 @@ public: /** + * Handling the system Event. + * @since Series 60 1.2 + * @param aEvent The System event passed. + */ + + void HandleSystemEventL(const TWsEvent& aEvent); + + /** * Get the active view. * @since Series 60 1.2 * @return The current view. @@ -768,6 +776,13 @@ * @param none */ void ShowNameAndVersionL(); + + /** + * There's a homepage to be launched so start in content view + * [Convenience function that gets used in 2 places] + * @param none + */ + void StartFetchHomePageL(); protected: @@ -947,6 +962,7 @@ TBool iPgNotFound; TBool iSuppressAlwaysAsk; TBool iFlashPresent; + TBool iSpecialSchemeinAddress; RFavouritesSession iFavouritesSess; diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/BrowserAppInc/BrowserAppViewBase.h --- a/browserui/browser/BrowserAppInc/BrowserAppViewBase.h Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/BrowserAppInc/BrowserAppViewBase.h Fri May 08 08:18:43 2009 +0300 @@ -184,6 +184,7 @@ */ virtual TUid Id() const = 0; + virtual void LaunchSearchApplicationL( const TDesC& aSearchString ); //private: protected: diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/BrowserAppInc/BrowserGotoPane.h --- a/browserui/browser/BrowserAppInc/BrowserGotoPane.h Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/BrowserAppInc/BrowserGotoPane.h Fri May 08 08:18:43 2009 +0300 @@ -20,8 +20,13 @@ #define WML_GOTO_PANE_BASE_H // DEFINES -#define GOTOPANE_POPUPLIST_DISABLE 0 -#define GOTOPANE_POPUPLIST_ENABLE 1 +#ifndef GOTOPANE_POPUPLIST_DISABLE +#define GOTOPANE_POPUPLIST_DISABLE EFalse +#endif + +#ifndef GOTOPANE_POPUPLIST_ENABLE +#define GOTOPANE_POPUPLIST_ENABLE ETrue +#endif // INCLUDE FILES #include @@ -206,6 +211,28 @@ */ void EnableKeyEventHandlerL( TBool aEnable ); + /** + * Activate GoTo Pane. + */ + void SetGotoPaneActiveL(); + + /** + * Activate Search Pane. + */ + void SetSearchPaneActiveL(); + + /** + * Check if we are in Goto Mode + * @return ETrue if we are in Goto Mode; EFalse otherwise. + */ + inline TBool GotoPaneActive() const { return iGotoPaneActive; } + + /** + * Check if we are in Search Mode + * @return ETrue if we are in Search Mode; EFalse otherwise. + */ + inline TBool SearchPaneActive() const { return iSearchPaneActive; } + public: // from MCoeControlObserver /** @@ -235,6 +262,13 @@ * */ void HandlePointerEventL(const TPointerEvent& /*aPointerEvent*/); + + /** + * HandleResourceChange + * From CCoeControl + */ + void HandleResourceChange(TInt aType); + public: // from CCoeControl @@ -262,7 +296,13 @@ public: // Text manipulation /** - * Lengt of the text in the editor. + * Length of the Search text in the editor. + * @return The text length + */ + TInt SearchTextLength() const; + + /** + * Length of the text in the editor. * @since Series60 1.2 * @return The text length */ @@ -284,6 +324,18 @@ virtual void SetTextL( const TDesC& aTxt ); /** + * Set Editor Font Posture to Italic. + */ + void SetTextModeItalicL( ); + + /** + * Set Search text. + * @param aTxt Text to set + * appended if needed. + */ + void SetSearchTextL( const TDesC& aTxt ); + + /** * Selects all text in the editor. * See CEikEdwin's SelectAllL(); * @since Series60 1.2 @@ -323,11 +375,6 @@ * Gives back a pointer to adaptivepopuplist */ CBrowserAdaptiveListPopup* PopupList(); - - /** - * Handles resource change - */ - void HandleResourceChange( TInt aType ); /** * Handles the completion of a FEP transaction @@ -352,6 +399,11 @@ */ void ConstructL( const CCoeControl* aParent, TInt aIconBitmapId, TInt aIconMaskId, TBool aPopupListStatus ); + /** + * Constructs Search Pane. + */ + void ConstructSearchPaneL(); + protected: // from CCoeControl /** @@ -396,6 +448,12 @@ // Input frame. Owned. CAknInputFrame* iInputFrame; + // Search Editor. Owned. + CEikEdwin* iSearchEditor; + + // Search Input frame. Owned. + CAknInputFrame* iSearchInputFrame; + // Observer (may be NULL). Not owned. MGotoPaneObserver* iGPObserver; @@ -404,6 +462,19 @@ /// adaptive popuplist CBrowserAdaptiveListPopup* iBAdaptiveListPopup; + + // Represents Active Editors + TBool iGotoPaneActive; + TBool iSearchPaneActive; + + // Default text in Search Editor.Owned. + HBufC* iDefaultSearchText; + + // Search Input Frame Icon Id, used for tracking the Search Icon Changes. + TInt iSearchIconId; + + // Stores the Search Icon File Path. + TFileName iSearchIconFilePath; }; #endif diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/BrowserAppInc/BrowserPreferences.h --- a/browserui/browser/BrowserAppInc/BrowserPreferences.h Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/BrowserAppInc/BrowserPreferences.h Fri May 08 08:18:43 2009 +0300 @@ -135,6 +135,22 @@ */ const TPreferencesValues& AllPreferencesL(); + /** + * To access an int value key in ini file + * @param aKey the ini file key to read + * @return the value of the given key + * @since Series60 2.0 + */ + TInt GetIntValue( TUint32 aKey) const; + + /** + * To access an string value key in ini file + * @param aKey the ini file key to read + * @return the value of the given key + * @since Series60 2.0 + */ + TInt GetStringValueL ( TUint32 aKey, TInt aMaxBufSize, TDes& aBuf ) const; + private: // New functions /** @@ -146,14 +162,6 @@ private: //Utility functions for accessing shared data /** - * To access an int value key in ini file - * @param aKey the ini file key to read - * @return the value of the given key - * @since Series60 2.0 - */ - TInt GetIntValue( TUint32 aKey) const; - - /** * To set an int value key in ini file * @param aKey the ini file key to write * @param aValue new value for the key @@ -169,15 +177,7 @@ * @since Series60 2.0 */ HBufC* GetStringValueL ( TUint32 aKey ) const; - - /** - * To access an string value key in ini file - * @param aKey the ini file key to read - * @return the value of the given key - * @since Series60 2.0 - */ - TInt GetStringValueL ( TUint32 aKey, TInt aMaxBufSize, TDes& aBuf ) const; - + /** * To set an int value key in ini file * @param aKey the ini file key to write @@ -960,7 +960,16 @@ */ inline TInt MaxRecentUrls() const; - + /** + * To get Search Feature Flag. + */ + inline TInt SearchFeature() const; + + /** + * To get Service Feature Flag. + */ + inline TInt ServiceFeature() const; + private: /** diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/BrowserAppInc/BrowserPreferences.inl --- a/browserui/browser/BrowserAppInc/BrowserPreferences.inl Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/BrowserAppInc/BrowserPreferences.inl Fri May 08 08:18:43 2009 +0300 @@ -653,6 +653,24 @@ return iAllPreferences.iMaxRecentUrlsToShow; } +// ---------------------------------------------------------------------------- +// CBrowserPreferences::SearchFeature +// ---------------------------------------------------------------------------- +// +TInt CBrowserPreferences::SearchFeature() const + { + return iAllPreferences.iSearch; + } + +// ---------------------------------------------------------------------------- +// CBrowserPreferences::ServiceFeature +// ---------------------------------------------------------------------------- +// +TInt CBrowserPreferences::ServiceFeature() const + { + return iAllPreferences.iService; + } + #endif // End of File diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/BrowserAppInc/Preferences.h --- a/browserui/browser/BrowserAppInc/Preferences.h Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/BrowserAppInc/Preferences.h Fri May 08 08:18:43 2009 +0300 @@ -134,6 +134,8 @@ TUint32 iZoomLevelMax; TUint32 iZoomLevelDefault; TInt iMaxRecentUrlsToShow; + TBool iSearch; // Search Feature + TBool iService; // Service Feature }; /** @@ -804,6 +806,31 @@ * Maximum Recent URLs to show */ virtual TInt MaxRecentUrls() const = 0; + + /** + * Search Feature Enabled or Disabled. + */ + virtual inline TBool SearchFeature() const = 0; + + /** + * Service Feature Enabled or Disabled. + */ + virtual inline TBool ServiceFeature() const = 0; + + /** + * To access an int value key in ini file + * @param aKey the ini file key to read + * @return the value of the given key + */ + virtual TInt GetIntValue( TUint32 aKey) const = 0; + + /** + * To access an string value key in ini file + * @param aKey the ini file key to read + * @return the value of the given key + */ + virtual TInt GetStringValueL ( TUint32 aKey, TInt aMaxBufSize, TDes& aBuf ) const = 0; + public: // observer support diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/BrowserAppSrc/BrowserAppUi.cpp --- a/browserui/browser/BrowserAppSrc/BrowserAppUi.cpp Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/BrowserAppSrc/BrowserAppUi.cpp Fri May 08 08:18:43 2009 +0300 @@ -19,6 +19,7 @@ // INCLUDES +#include #include #include #include @@ -39,8 +40,12 @@ #include #include #include + +#ifdef BRDO_APP_GALLERY_SUPPORTED_FF #include #include +#endif + #include #include @@ -1268,10 +1273,50 @@ err = KErrNone; BROWSER_LOG( ( _L( "Load the URL" ) ) ); - LoadObserver().DoStartLoad( aUrlType ); + + if ( iPreferences->SearchFeature() || iPreferences->ServiceFeature()) + { + iSpecialSchemeinAddress = EFalse; + + HBufC* searchScheme = HBufC::NewLC( KMaxHomePgUrlLength ); // cleanupstack + TPtr searchSchemePtr( searchScheme->Des() ); + ++toPop; + + HBufC* serviceScheme = HBufC::NewLC( KMaxHomePgUrlLength ); // cleanupstack + TPtr serviceSchemePtr( serviceScheme->Des() ); + ++toPop; + + iPreferences->GetStringValueL( KBrowserSearchProviderUrl, KMaxHomePgUrlLength, searchSchemePtr ); + iPreferences->GetStringValueL( KBrowserServiceUrl, KMaxHomePgUrlLength, serviceSchemePtr ); + + TInt err = uriParser.Parse(searchSchemePtr); + if (!err) + searchSchemePtr = uriParser.Extract( EUriScheme ); + + err = uriParser.Parse(serviceSchemePtr); + if (!err) + serviceSchemePtr = uriParser.Extract( EUriScheme ); + + if( scheme.Length() != 0 ) + { + if( !scheme.Compare(serviceSchemePtr) || !scheme.Compare(searchSchemePtr) ) + { + iSpecialSchemeinAddress = ETrue; + TRAP( err, BrCtlInterface().LoadUrlL( resultUrlBuf->Des(), IAPid ) ); + } + else + { + LoadObserver().DoStartLoad( aUrlType ); + TRAP( err, BrCtlInterface().LoadUrlL( resultUrlBuf->Des(), IAPid ) ); + } + } + } + else + { + LoadObserver().DoStartLoad( aUrlType ); + TRAP( err, BrCtlInterface().LoadUrlL( resultUrlBuf->Des(), IAPid ) ); + } - TRAP( err, BrCtlInterface().LoadUrlL( resultUrlBuf->Des(), IAPid ) ); - CleanupStack::PopAndDestroy(toPop); //resultUrlBuf and url if needed BROWSER_LOG( ( _L( "No AP 4 %d" ), err ) ); if ( err != KErrNone ) @@ -1778,29 +1823,53 @@ if ( LastActiveViewId() == KUidBrowserNullViewId ) { + TBool specialSchemeInHomePageAddress = EFalse; + if (NoHomePageToBeLaunchedL()) { // No homepage to be launched so start browser in bookmarks view SetLastActiveViewId(KUidBrowserBookmarksViewId); } - else + else if ( iPreferences->SearchFeature() || iPreferences->ServiceFeature()) { - // There's a homepage to be launched so start in content view - SetLastActiveViewId(KUidBrowserContentViewId); - - //wait for contentview to initialize itself - WaitCVInit(); - - TInt error( KErrNone ); - TRAP( error, FetchHomePageL() ); - if( error != KErrNone ) - { - CloseContentViewL(); - } - } - ActivateLocalViewL( LastActiveViewId() ); - } - + + HBufC* buf = HBufC::NewLC( KMaxHomePgUrlLength ); // cleanupstack + TPtr ptr( buf->Des() ); + TInt pgFound( KErrNotFound ); + pgFound = Preferences().HomePageUrlL( ptr ); + + HBufC* searchScheme = HBufC::NewLC( KMaxHomePgUrlLength ); // cleanupstack + TPtr searchSchemePtr( searchScheme->Des() ); + + HBufC* serviceScheme = HBufC::NewLC( KMaxHomePgUrlLength ); // cleanupstack + TPtr serviceSchemePtr( serviceScheme->Des() ); + + iPreferences->GetStringValueL( KBrowserSearchProviderUrl, KMaxHomePgUrlLength, searchSchemePtr ); + iPreferences->GetStringValueL( KBrowserServiceUrl, KMaxHomePgUrlLength, serviceSchemePtr ); + + + if( !ptr.Compare(serviceSchemePtr) || !ptr.Compare(searchSchemePtr) ) + { + specialSchemeInHomePageAddress = ETrue; + SetLastActiveViewId(KUidBrowserBookmarksViewId); + TRAPD( err, FetchL( ptr, CBrowserLoadObserver::ELoadUrlTypeOther ) ); + } + else + { + StartFetchHomePageL(); + } + CleanupStack::PopAndDestroy( 3,buf ); + } + else + { + StartFetchHomePageL(); + } + + if( !specialSchemeInHomePageAddress ) + { + ActivateLocalViewL( LastActiveViewId() ); + } + } } else if ( aCommand == EApaCommandViewActivate ) // Get when activated from soft notification (Downloads List). @@ -2155,6 +2224,8 @@ } case KFolderId: { + SetCalledFromAnotherApp( EFalse ); + iIsForeground = IsForeground(); CloseContentViewL(); SetLastActiveViewId( KUidBrowserBookmarksViewId ); break; @@ -2179,7 +2250,10 @@ // Sender Uid was not readable User::Leave( err ); } - SetViewToBeActivatedIfNeededL( LastActiveViewId() ); + if( !iSpecialSchemeinAddress ) + { + SetViewToBeActivatedIfNeededL( LastActiveViewId() ); + } break; } @@ -3801,6 +3875,9 @@ TFileName fName; User::LeaveIfError(docHandler->GetPath(fName)); + + #ifdef BRDO_APP_GALLERY_SUPPORTED_FF + CMGXFileManager* mgFileManager = MGXFileManagerFactory::NewFileManagerL(CEikonEnv::Static()->FsSession()); CleanupStack::PushL(mgFileManager); if( fName.Length() > 0 ) @@ -3811,7 +3888,11 @@ { TRAP_IGNORE( mgFileManager->UpdateL() ); } - CleanupStack::PopAndDestroy(2); // imageCarrier, mgFileManager + CleanupStack::PopAndDestroy(1); // mgFileManager + + #endif + + CleanupStack::PopAndDestroy(1); // imageCarrier } // --------------------------------------------------------- @@ -3957,17 +4038,7 @@ { case EEventPointerExit: { - CCoeControl* ctrl = &(BrCtlInterface()); - CCoeControl* parent = ctrl->Parent(); - - if (aDestination == parent) - { - TPointerEvent event; - event.iType = TPointerEvent::EButton1Up; - event.iModifiers = 0; - event.iPosition = TPoint(0, 0); - parent->HandlePointerEventL(event); - } + break; } @@ -3995,4 +4066,49 @@ } CAknViewAppUi::HandleWsEventL(aEvent, aDestination); } + +// --------------------------------------------------------- +// CBrowserAppUi::HandleSystemEventL +// --------------------------------------------------------- + +void CBrowserAppUi::HandleSystemEventL(const TWsEvent& aEvent) + { + + /** + * We need a special handling for System events to handle the situation + * like when the shut down is done while download is going on. + */ + + switch (*(TApaSystemEvent*)(aEvent.EventData())) + { + case EApaSystemEventShutdown: + // do things here + ExitBrowser ( IsAppShutterActive() ); + break; + default: + break; + } + // call base class implementation + CAknAppUi::HandleSystemEventL(aEvent); + } + +// --------------------------------------------------------- +// CBrowserAppUi::StartFetchHomePageL +// --------------------------------------------------------- +void CBrowserAppUi::StartFetchHomePageL(void) + { + + // There's a homepage to be launched so start in content view + SetLastActiveViewId(KUidBrowserContentViewId); + //wait for contentview to initialize itself + WaitCVInit(); + + TInt error( KErrNone ); + TRAP( error, FetchHomePageL() ); + if( error != KErrNone ) + { + CloseContentViewL(); + } + } + // End of File diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/BrowserAppSrc/BrowserAppViewBase.cpp --- a/browserui/browser/BrowserAppSrc/BrowserAppViewBase.cpp Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/BrowserAppSrc/BrowserAppViewBase.cpp Fri May 08 08:18:43 2009 +0300 @@ -30,8 +30,8 @@ #include #include #include - - +#include "BrowserUtil.h" +#include // ================= MEMBER FUNCTIONS ======================= // --------------------------------------------------------- @@ -280,4 +280,40 @@ 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 = HBufC8::NewLC( aSearchString.Length() + 1); + searchParam8->Des().Append( aSearchString ); + 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 diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/BrowserAppSrc/BrowserBmOTABinSender.cpp --- a/browserui/browser/BrowserAppSrc/BrowserBmOTABinSender.cpp Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/BrowserAppSrc/BrowserBmOTABinSender.cpp Fri May 08 08:18:43 2009 +0300 @@ -292,39 +292,11 @@ body->Des().Append( lend ); #endif // _BOOKMARK_SENT_ASCII - if ( capa.iFlags & TSendingCapabilities::ESupportsAttachments ) - { - // connect to file session - RFs fsSession; - User::LeaveIfError( fsSession.Connect() ); - CleanupClosePushL( fsSession ); - CFileMan* fman = CFileMan::NewL( fsSession ); - CleanupStack::PushL( fman ); - // try to avoid inserting any 'leave' code - // between WriteMessageBodyIntoFile() - // and CreateAndSendMessageL, or - // you have to take care of deleting - // temporary file - error = WriteMessageBodyIntoFileL( fsSession, *body ); - - if( error == KErrNone ) - { - // send attachment - // this function has to be trapped - // because I have to be sure that the - // temproray file is removed! - msgData->AppendAttachmentL( KAttachmentFilename ); - TRAP( error, iSendUi->CreateAndSendMessageL( service, - msgData ) ); - } - // delete temporary file - fman->Delete( KAttachmentFilename ); - // close file session - fsSession.Close(); + // The issue is because of the deletion of the temp file . + // As we are sending address only , we can just create a buffer & send it in message + // body. - CleanupStack::PopAndDestroy( 2 ); // fsSession, fman - } - else if ( capa.iFlags & TSendingCapabilities::ESupportsBodyText ) + if ( capa.iFlags & (TSendingCapabilities::ESupportsBodyText || TSendingCapabilities::ESupportsAttachments)) { CRichText* text = CRichText::NewL(CEikonEnv::Static()->SystemParaFormatLayerL(), diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/BrowserAppSrc/BrowserContentView.cpp --- a/browserui/browser/BrowserAppSrc/BrowserContentView.cpp Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/BrowserAppSrc/BrowserContentView.cpp Fri May 08 08:18:43 2009 +0300 @@ -305,9 +305,17 @@ UpdateTitleL( iApiProvider ); break; } - + // Set search pane active and then launch editor. + case EIsCmdSearchWeb: + { + iContainer->GotoPane()->SetSearchPaneActiveL(); + LaunchGotoAddressEditorL(); + break; + } case EWmlCmdGoToAddress: + case EWmlCmdGoToAddressAndSearch: { + iContainer->GotoPane()->SetGotoPaneActiveL(); LaunchGotoAddressEditorL(); break; } @@ -343,7 +351,10 @@ case EWmlCmdGotoPaneGoTo: { HBufC* input = iContainer->GotoPane()->GetTextL(); - if ((input) && (input->CompareF(KWWWString))) + CleanupStack::PushL( input ); + if( iContainer->GotoPane()->GotoPaneActive() ) + { + if ((input) && (input->CompareF(KWWWString)) && input->Length() ) { if (iPenEnabled) { @@ -363,7 +374,31 @@ MakeCbaVisible( EFalse ); } } - if (iPenEnabled) + } + 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(); } @@ -1146,22 +1181,29 @@ // when goto pane is up there is no focusable element or active fetching // process in place { - //check wheter there is an active popuplist - if( (iContainer->GotoPane()->PopupList() != NULL) && - ( iContainer->GotoPane()->PopupList()->IsOpenDirToShow() )) + if( iContainer->GotoPane()->SearchPaneActive() ) { - 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; + result = R_BROWSER_BOOKMARKS_CBA_SEARCH_PANE_SEARCH_CANCEL; } else { - result = R_BROWSER_BOOKMARKS_CBA_GOTO_PANE_GOTO_CANCEL; + //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() ) @@ -1333,6 +1375,11 @@ // home aMenuPane->SetItemDimmed( EWmlCmdLaunchHomePage, ApiProvider().IsLaunchHomePageDimmedL() ); + //search + if ( ! ApiProvider().Preferences().SearchFeature() ) + { + aMenuPane->SetItemDimmed( EIsCmdSearchWeb, ETrue ); + } } else if ( aResourceId == R_PAGEACTIONS_SUBMENU ) { diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/BrowserAppSrc/BrowserContentViewContainer.cpp --- a/browserui/browser/BrowserAppSrc/BrowserContentViewContainer.cpp Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/BrowserAppSrc/BrowserContentViewContainer.cpp Fri May 08 08:18:43 2009 +0300 @@ -638,6 +638,14 @@ } SetRect(iView->ClientRect()); + + if( iApiProvider.Preferences().SearchFeature() ) + { + iGotoPane->SetTextModeItalicL(); + // To Avoid Flickring, only when layout changed. + iGotoPane->DrawNow(); + } + DrawDeferred(); // For Touch only-If find pane open, force toolbar to show since avkon disables diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/BrowserAppSrc/BrowserContentViewToolbar.cpp --- a/browserui/browser/BrowserAppSrc/BrowserContentViewToolbar.cpp Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/BrowserAppSrc/BrowserContentViewToolbar.cpp Fri May 08 08:18:43 2009 +0300 @@ -67,6 +67,16 @@ iBrowserContentView->Toolbar()->ToolbarExtension()->HideItemL( EWmlCmdFavourites, (embeddedMode || embeddedOperatorMenu) ); iBrowserContentView->Toolbar()->ToolbarExtension()->HideItemL( EWmlCmdSaveAsBookmark, embeddedOperatorMenu ); iBrowserContentView->Toolbar()->ToolbarExtension()->HideItemL( EWmlCmdLaunchHomePage, (embeddedMode || embeddedOperatorMenu) ); + + if ( iBrowserContentView->ApiProvider().Preferences().SearchFeature() ) + { + iBrowserContentView->Toolbar()->HideItem( EWmlCmdGoToAddress, ETrue, EFalse ); + } + else + { + iBrowserContentView->Toolbar()->HideItem( EWmlCmdGoToAddressAndSearch, ETrue, EFalse ); + } + #endif } @@ -104,6 +114,7 @@ TBool contentDisplayed = iBrowserContentView->ApiProvider().ContentDisplayed(); TBool wmlMode = iBrowserContentView->ApiProvider().WindowMgr().CurrentWindow()->WMLMode(); TBool DimHomePage = iBrowserContentView->ApiProvider().IsLaunchHomePageDimmedL(); + TBool searchMode = iBrowserContentView->ApiProvider().Preferences().SearchFeature(); // Extended Toolbar @@ -111,11 +122,24 @@ (pageOverview), ETrue ); iBrowserContentView->Toolbar()->HideItem( EWmlCmdToolbarExtensionContentView, (historyView || findKeywordPane), ETrue ); + + // Goto Url & search + if ( searchMode ) + { + iBrowserContentView->Toolbar()->SetItemDimmed( EWmlCmdGoToAddressAndSearch, + (pageOverview), ETrue ); + iBrowserContentView->Toolbar()->HideItem( EWmlCmdGoToAddressAndSearch, + (historyView || findKeywordPane), ETrue ); + } // Goto Url - iBrowserContentView->Toolbar()->SetItemDimmed( EWmlCmdGoToAddress, - (pageOverview), ETrue ); - iBrowserContentView->Toolbar()->HideItem( EWmlCmdGoToAddress, - (historyView || findKeywordPane), ETrue ); + else + { + iBrowserContentView->Toolbar()->SetItemDimmed( EWmlCmdGoToAddress, + (pageOverview), ETrue ); + iBrowserContentView->Toolbar()->HideItem( EWmlCmdGoToAddress, + (historyView || findKeywordPane), ETrue ); + } + // Zoom Slider button iBrowserContentView->Toolbar()->SetItemDimmed( EWmlCmdZoomSliderShow, diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/BrowserAppSrc/BrowserGotoPane.cpp --- a/browserui/browser/BrowserAppSrc/BrowserGotoPane.cpp Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/BrowserAppSrc/BrowserGotoPane.cpp Fri May 08 08:18:43 2009 +0300 @@ -11,7 +11,7 @@ * * Contributors: * -* Description: +* Description: * * * @@ -35,10 +35,14 @@ #include #include #include +#include -#include +#include +#include #include +#include #include +#include #include "CommonConstants.h" #include "BrowserGotoPane.h" @@ -51,6 +55,8 @@ #include "eikon.hrh" +#include + // --------------------------------------------------------------------------- // CBrowserGotoPane::NewL @@ -80,7 +86,11 @@ void CBrowserGotoPane::MakeVisibleL( TBool aVisible ) { if ( aVisible ) - { + { + if ( iSearchEditor ) + { + ConstructSearchPaneL(); + } HandleFindSizeChanged(); if ( AUTOCOMP ) //ask the feature manager { @@ -91,9 +101,18 @@ { //2.0 does put the http:// there SetTextL( KHttpString ); + } } - } - if (AknLayoutUtils::PenEnabled()) + else + { + // Clear the search text if goto is cancelled ( hidden ). + if ( iSearchEditor ) + { + SetSearchTextL( KNullDesC ); + } + } + + if (AknLayoutUtils::PenEnabled() && ( !iSearchEditor ) ) { SetPointerCapture(aVisible); if (aVisible) @@ -106,6 +125,16 @@ iGotoKeyHandled->Reset(); iGotoKeyHandled->EnableL( aVisible ); + + + if ( iSearchEditor ) + { + SetTextModeItalicL(); + } + // To avoid Flickring Effect when SearchInputFrame is + // re-created with new search provider icon. + DrawNow( ); + } // --------------------------------------------------------------------------- @@ -127,11 +156,15 @@ { iAvkonAppUi->RemoveFromStack( iGotoKeyHandled ); } + delete iSearchEditor; + delete iSearchInputFrame; + delete iGotoKeyHandled; delete iEditor; delete iInputFrame; delete iPrevKeyword; delete iBAdaptiveListPopup; + delete iDefaultSearchText; iContentView = NULL; CCoeEnv::Static()->RemoveFepObserver(static_cast(*this)); } @@ -143,8 +176,11 @@ CBrowserGotoPane::CBrowserGotoPane( CBrowserContentView* aContentView, TBool aFindKeywordMode ) : iContentView( aContentView), iFindKeywordMode( aFindKeywordMode ), - iHandleFEPFind( ETrue ) - ,iBAdaptiveListPopup( NULL ) + iHandleFEPFind( ETrue ), + iBAdaptiveListPopup( NULL ), + iGotoPaneActive( ETrue ), + iSearchPaneActive( EFalse), + iSearchIconId( 0 ) { } @@ -197,18 +233,18 @@ } TInt editorFlags = ((iFindKeywordMode) ? EAknEditorFlagDefault : EAknEditorFlagLatinInputModesOnly) |EAknEditorFlagUseSCTNumericCharmap; #ifdef RD_INTELLIGENT_TEXT_INPUT - TInt physicalKeyboards = 0; + TInt physicalKeyboards = 0; CRepository* aknFepRepository = CRepository::NewL( KCRUidAknFep ); - User::LeaveIfNull( aknFepRepository ); + User::LeaveIfNull( aknFepRepository ); aknFepRepository->Get( KAknFepPhysicalKeyboards, physicalKeyboards ); - delete aknFepRepository; - - if ( physicalKeyboards && EPtiKeyboardQwerty3x11 ) { + delete aknFepRepository; + + if ( physicalKeyboards && EPtiKeyboardQwerty3x11 ) { editorFlags = (editorFlags | EAknEditorFlagNoT9); - } -#endif - iEditor->SetAknEditorFlags( editorFlags ); + } +#endif + iEditor->SetAknEditorFlags( editorFlags ); iEditor->SetAknEditorPermittedCaseModes ( EAknEditorUpperCase | EAknEditorLowerCase ); @@ -220,11 +256,18 @@ iEditor->SetEdwinObserver( iGotoKeyHandled ); iEditor->SetSkinBackgroundControlContextL(NULL); - //adaptive popuplist + TBool searchFeature = iContentView->ApiProvider().Preferences().SearchFeature(); + if ( searchFeature && !iFindKeywordMode ) + { + iDefaultSearchText = StringLoader::LoadL( R_IS_WEB_SEARCH ); + ConstructSearchPaneL(); + } + + //adaptive popuplist if ( aPopupListStatus && AUTOCOMP ) { iBAdaptiveListPopup = - new (ELeave) CBrowserAdaptiveListPopup( iEditor, this, EGotoPane ); + new (ELeave) CBrowserAdaptiveListPopup( iEditor, this, EGotoPane, searchFeature ); iBAdaptiveListPopup->ConstructL(); iEditor->SetObserver( iBAdaptiveListPopup ); if (iContentView) @@ -257,18 +300,32 @@ // void CBrowserGotoPane::HandleFindSizeChanged() { - if ( !AknLayoutUtils::PenEnabled() ) { - TRect parentrect = iAvkonAppUi->ApplicationRect(); + if ( iSearchEditor && !iFindKeywordMode) + { + TRect clientRect = CBrowserAppUi::Static()->ClientRect(); + TAknWindowLineLayout findWindow = AknLayout::popup_find_window(); + + TRect findWindowRect = AknLayoutUtils::RectFromCoords( clientRect,findWindow.il, findWindow.it, + findWindow.ir, findWindow.ib, findWindow.iW, findWindow.iH); - TAknLayoutRect lrect; - lrect.LayoutRect( parentrect, + // Now Increase the height of rect to make room for two editors (Goto + search)// + findWindowRect.iTl.iY -= ( findWindow.iH ); + SetRect( findWindowRect ); + } + else + { + TRect parentrect = iAvkonAppUi->ApplicationRect(); + + TAknLayoutRect lrect; + lrect.LayoutRect( parentrect, AknLayout::main_pane( CBrowserAppUi::Static()->ApplicationRect(), 0, 1, 1 ) ); - AknLayoutUtils::LayoutControl ( this, + AknLayoutUtils::LayoutControl ( this, lrect.Rect(), AknLayout::popup_find_window() ); + } } else { @@ -350,17 +407,16 @@ TKeyResponse CBrowserGotoPane::OfferKeyEventL ( const TKeyEvent& aKeyEvent, TEventCode aType ) { - TKeyResponse resp; + TKeyResponse resp = EKeyWasNotConsumed; - if ( AknLayoutUtils::PenEnabled() && - PopupList() && - PopupList()->DrawableWindow()->OrdinalPosition() > 0) + if ( AknLayoutUtils::PenEnabled() + && PopupList() + && PopupList()->DrawableWindow()->OrdinalPosition() > 0 ) { PopupList()->SetOrdinalPosition(0); } - // Escape key event handling - if ( aType == EEventKey && aKeyEvent.iCode == EKeyEscape ) + if ( aType == EEventKey && aKeyEvent.iCode == EKeyEscape ) // Escape key event handling { CCoeEnv::Static()->AppUi()->RemoveFromStack( this ); if ( PopupList() ) @@ -368,12 +424,9 @@ PopupList()->SetDirectoryModeL( ETrue ); PopupList()->HidePopupL(); } - - // Hide Goto pane - MakeVisible( EFalse ); + MakeVisible( EFalse ); // Hide Goto pane SetFocus( EFalse ); - // should set the focus of container to ETrue...how? - resp = EKeyWasConsumed; + resp = EKeyWasConsumed; // should set the focus of container to ETrue...how? } if ( iFindKeywordMode ) @@ -384,43 +437,56 @@ } else { - // Handle up and down arow keys to search for - // next and previous keywords. - if ( aType == EEventKey ) - { + if ( aType == EEventKey ) // Handle up and down arow keys to search for + { // next and previous keywords. + if ( aKeyEvent.iCode == EKeyLeftUpArrow // Northwest || aKeyEvent.iCode == EStdKeyDevice10 // : Extra KeyEvent supports diagonal event simulator wedge || aKeyEvent.iCode == EKeyUpArrow // North || aKeyEvent.iCode == EKeyRightUpArrow // Northeast || aKeyEvent.iCode == EStdKeyDevice11 ) // : Extra KeyEvent supports diagonal event simulator wedge - { - // Find previous keyword - iContentView->FindKeywordL( NULL, EFalse ); - iHandleFEPFind = EFalse; - return EKeyWasConsumed; + { // Any of those? If so, then... + iContentView->FindKeywordL( NULL, EFalse ); // Find previous keyword + iHandleFEPFind = EFalse; // : + return EKeyWasConsumed; // And that consumes the key } + if ( aKeyEvent.iCode == EKeyLeftDownArrow // Southwest || aKeyEvent.iCode == EStdKeyDevice13 // : Extra KeyEvent supports diagonal event simulator wedge || aKeyEvent.iCode == EKeyDownArrow // South || aKeyEvent.iCode == EKeyRightDownArrow // Southeast || aKeyEvent.iCode == EStdKeyDevice12 ) // : Extra KeyEvent supports diagonal event simulator wedge - { - // Find next keyword - iContentView->FindKeywordL( NULL, ETrue ); - iHandleFEPFind = EFalse; - return EKeyWasConsumed; + { // Any of those? If so, then... + iContentView->FindKeywordL( NULL, ETrue ); // Find next keyword + iHandleFEPFind = EFalse; // : + return EKeyWasConsumed; // And that consumes the key } - if ( aKeyEvent.iCode == EKeyDevice3 ) - { - // ignore select key - return EKeyWasConsumed; + + if ( aKeyEvent.iCode == EKeyDevice3 ) // Select key? + { // If so, then... + return EKeyWasConsumed; // Ignore select key } + } - return iEditor->OfferKeyEventL( aKeyEvent, aType ); + return iEditor->OfferKeyEventL( aKeyEvent, aType ); // Otherwise, just pass the key on to the editor } } - else + + else // *NOT* iFindKeywordMode { + + if ( aKeyEvent.iCode == EKeyRightUpArrow // Northeast + || aKeyEvent.iCode == EStdKeyDevice11 // : Extra KeyEvent supports diagonal event simulator wedge + || aKeyEvent.iCode == EKeyRightDownArrow // Southeast + || aKeyEvent.iCode == EStdKeyDevice12 // : Extra KeyEvent supports diagonal event simulator wedge + || aKeyEvent.iCode == EKeyLeftDownArrow // Southwest + || aKeyEvent.iCode == EStdKeyDevice13 // : Extra KeyEvent supports diagonal event simulator wedge + || aKeyEvent.iCode == EKeyLeftUpArrow // Northwest + || aKeyEvent.iCode == EStdKeyDevice10 ) // : Extra KeyEvent supports diagonal event simulator wedge + { // Any of those? If so, then... + return EKeyWasConsumed; // Ignore diagonal navigation events here + } + if ( (aKeyEvent.iCode == EKeyOK ) && iGPObserver && IsFocused() ) { if ( CBrowserAppUi::Static()->ContentView()->MenuBar()->MenuPane()->IsVisible() ) @@ -429,28 +495,63 @@ } else { - // If there is an observer and we have the focus, enter key is - // consumed and observer is notified. iGPObserver->HandleGotoPaneEventL ( this, MGotoPaneObserver::EEventEnterKeyPressed ); - return EKeyWasConsumed; - } + return EKeyWasConsumed; // If there is an observer and we have the focus, + } // enter key is consumed and observer is notified. } - // For touch UI, handle enter key from VKB as a "GOTO" + else if (AknLayoutUtils::PenEnabled() && aKeyEvent.iCode == EKeyEnter) - { + { // For touch UI, handle enter key from VKB as a "GOTO" CBrowserAppUi::Static()->ActiveView()->HandleCommandL(EWmlCmdGotoPaneGoTo); return EKeyWasConsumed; } - resp = iEditor->OfferKeyEventL( aKeyEvent, aType ); + if ( iSearchEditor && iSearchPaneActive ) + { + resp = iSearchEditor->OfferKeyEventL( aKeyEvent, aType ); + } + else + { + resp = iEditor->OfferKeyEventL( aKeyEvent, aType ); + } if ((iBAdaptiveListPopup ) && (resp != EKeyWasConsumed)) + { + resp = iBAdaptiveListPopup->OfferKeyEventL( aKeyEvent, aType ); + } + + + if ( iSearchEditor ) { - resp = iBAdaptiveListPopup->OfferKeyEventL( aKeyEvent, aType ); + if ( ( iGotoPaneActive || iSearchPaneActive) + && (resp != EKeyWasConsumed) ) + { + + if ( aKeyEvent.iCode == EKeyUpArrow ) + { + resp = EKeyWasConsumed; + if ( iSearchPaneActive ) + { + SetGotoPaneActiveL(); + iEditor->RemoveFlagFromUserFlags( CEikEdwin::EAvkonDisableVKB ); + } + } + if ( aKeyEvent.iCode == EKeyDownArrow ) + { + resp = EKeyWasConsumed; + if ( iGotoPaneActive ) + { + SetSearchPaneActiveL(); + iSearchEditor->RemoveFlagFromUserFlags( CEikEdwin::EAvkonDisableVKB ); + } + } + } } - return resp; } + + return resp; + } // ---------------------------------------------------------------------------- @@ -468,7 +569,38 @@ if (Rect().Contains(aPointerEvent.iPosition)) { iGotoKeyHandled->EnableL(ETrue); - iEditor->HandlePointerEventL(aPointerEvent); + // If search feature exists, check and route to appropriate editor // + if ( iSearchEditor ) + { + if ( iSearchInputFrame->Rect().Contains(aPointerEvent.iPosition)) + { + if ( iSearchPaneActive ) + { + iSearchEditor->HandlePointerEventL(aPointerEvent); + } + else + { + SetSearchPaneActiveL(); + } + iSearchEditor->RemoveFlagFromUserFlags( CEikEdwin::EAvkonDisableVKB); + } + else + { + if ( iGotoPaneActive ) + { + iEditor->HandlePointerEventL(aPointerEvent); + } + else + { + SetGotoPaneActiveL(); + } + iEditor->RemoveFlagFromUserFlags( CEikEdwin::EAvkonDisableVKB); + } + } + else + { + iEditor->HandlePointerEventL(aPointerEvent); + } iGotoKeyHandled->SetFirstKeyEvent(EFalse); } else @@ -484,6 +616,10 @@ // TInt CBrowserGotoPane::CountComponentControls() const { + if ( iSearchEditor && !iFindKeywordMode ) + { + return 4; // iEditor, input frame, SearchEditor and Searchinput frame. + } return 2; // iEditor and input frame } @@ -503,6 +639,15 @@ { return iEditor; } + case 2: + { + return iSearchInputFrame; + } + case 3: + { + return iSearchEditor; + } + default: return NULL; } @@ -514,7 +659,25 @@ // void CBrowserGotoPane::SizeChanged() { - iInputFrame->SetRect( Rect() ); + if (iSearchEditor && !iFindKeywordMode ) + { + // We need height and width of FindWindow + TAknWindowLineLayout findWindow = AknLayout::popup_find_window(); + TRect findWindowRect = AknLayoutUtils::RectFromCoords( Rect(), findWindow.il, + findWindow.it, findWindow.ir, findWindow.ib, findWindow.iW, findWindow.iH); + + TSize gotoSize( findWindowRect.Size() ); + TRect gotoRect( TPoint( 0,0 ), gotoSize ); + iInputFrame->SetRect( gotoRect ); + + // Now set SearchPane right below GoTo pane // + TRect searchRect( TPoint( 0, gotoRect.iBr.iY ), gotoSize ); + iSearchInputFrame->SetRect( searchRect ); + } + else + { + iInputFrame->SetRect( Rect() ); + } } // ---------------------------------------------------------------------------- @@ -526,7 +689,30 @@ // this is a workaround TRAP_IGNORE( iGotoKeyHandled->EnableL( IsFocused() ) ); CCoeControl::FocusChanged( aDrawNow ); - iEditor->SetFocus( IsFocused() ); + if ( iGotoPaneActive ) + { + iEditor->SetFocus( IsFocused() ); + } + else if ( iSearchEditor && !iFindKeywordMode && iSearchPaneActive ) + { + iSearchEditor->SetFocus( IsFocused() ); + } + } + + + +// ---------------------------------------------------------------------------- +// CBrowserGotoPane::TextLength +// ---------------------------------------------------------------------------- +// +TInt CBrowserGotoPane::SearchTextLength() const + { + TInt len = 0; + if ( iSearchEditor ) + { + len = iSearchEditor->TextLength(); + } + return len; } // ---------------------------------------------------------------------------- @@ -546,20 +732,59 @@ { HBufC *retVal = NULL; - if ( TextLength() || iFindKeywordMode) + if ( TextLength() + || SearchTextLength() + || iFindKeywordMode) { - retVal = HBufC::NewL( TextLength() + 1 ); + if ( iSearchEditor && iSearchPaneActive ) + { + retVal = HBufC::NewL( SearchTextLength() + 1 ); + } + else + { + retVal = HBufC::NewL( TextLength() + 1 ); + } TPtr ptr = retVal->Des(); - iEditor->GetText( ptr ); + if ( iSearchEditor && iSearchPaneActive ) + { + iSearchEditor->GetText( ptr ); + } + else + { + iEditor->GetText( ptr ); + } ptr.ZeroTerminate(); - if (!iFindKeywordMode) - Util::EncodeSpaces(retVal); - + if ( !iFindKeywordMode && !iSearchPaneActive ) + { + Util::EncodeSpaces(retVal); + } } return retVal; } + +// ---------------------------------------------------------------------------- +// CBrowserGotoPane::SetSearchTextL +// ---------------------------------------------------------------------------- +// +void CBrowserGotoPane::SetSearchTextL( const TDesC& aTxt ) + { + // for search pane, no default text + if ( aTxt == KHttpString || aTxt == KWWWString) + { + iSearchEditor->SetTextL( &KNullDesC ); + } + else + { + iSearchEditor->SetTextL( &aTxt ); + } + TInt curPos = SearchTextLength(); + // Cursor to end, no selection. + iSearchEditor->SetSelectionL( curPos, curPos ); + iSearchEditor->DrawNow(); + } + // ---------------------------------------------------------------------------- // CBrowserGotoPane::SetTextL // ---------------------------------------------------------------------------- @@ -579,7 +804,14 @@ // void CBrowserGotoPane::SelectAllL() { - iEditor->SelectAllL(); + if ( iSearchEditor && iSearchPaneActive ) + { + iSearchEditor->SelectAllL(); + } + else + { + iEditor->SelectAllL(); + } } // ---------------------------------------------------------------------------- @@ -799,16 +1031,28 @@ // ---------------------------------------------------------------------------- void CBrowserGotoPane::ActivateVKB() { - if (iEditor && iEditor->TextView()) + if ( ( iEditor && iEditor->TextView() ) + || ( iSearchEditor && iSearchEditor->TextView()) ) { // make sure observer is set iCoeEnv->SyncNotifyFocusObserversOfChangeInFocus(); - // simulate pointer event to force VKB + // simulate pointer event to force VKB - // first get point at cursor location - TInt pos = iEditor->CursorPos(); - CTextView* textView = iEditor->TextView(); + // first get point at cursor location + TInt pos = 0; + CTextView* textView = NULL; + if ( iSearchEditor && iSearchPaneActive ) + { + pos = iSearchEditor->CursorPos(); + textView = iSearchEditor->TextView(); + } + else + { + pos = iEditor->CursorPos(); + textView = iEditor->TextView(); + } + TPoint curPos; textView->DocPosToXyPosL(pos, curPos); @@ -816,22 +1060,267 @@ pe.iPosition = curPos; pe.iType = TPointerEvent::EButton1Down; + TInt err(KErrNone); - TRAP(err, iEditor->HandlePointerEventL(pe)); + if ( iSearchEditor && iSearchPaneActive ) + { + TRAP(err, iSearchEditor->HandlePointerEventL(pe)); + } + else + { + TRAP(err, iEditor->HandlePointerEventL(pe)); + } + if (err != KErrNone) { return; } - // VKB will only activate is nothing selected - iEditor->SetSelectionL(pos,pos); + pe.iType = TPointerEvent::EButton1Up; - pe.iType = TPointerEvent::EButton1Up; - if (KErrNone == err) - { - TRAP_IGNORE(iEditor->HandlePointerEventL(pe)); - } + // VKB will only activate is nothing selected + if ( iSearchEditor && iSearchPaneActive ) + { + iSearchEditor->SetSelectionL(pos,pos); + TRAP_IGNORE(iSearchEditor->HandlePointerEventL(pe)); + } + else + { + iEditor->SetSelectionL(pos,pos); + TRAP_IGNORE(iEditor->HandlePointerEventL(pe)); + } } } +// ---------------------------------------------------------------------------- +// CBrowserGotoPane::ConstructSearchPaneL +// ---------------------------------------------------------------------------- +void CBrowserGotoPane::ConstructSearchPaneL() + { + + TFileName iconFile; + TInt iconId = iContentView->ApiProvider().Preferences().GetIntValue( KBrowserSearchIconId ); + iContentView->ApiProvider().Preferences().GetStringValueL( KBrowserSearchIconPath, KMaxFileName, iconFile ); + + // If Icon File Path Changed or Icon Id Changed, Refresh the Icon for Search Pane. + // Comparing Icon File path as well, because it may be possible that two different + // Icon files have same icon id. + if ( iconId != iSearchIconId + || iSearchIconFilePath.Compare( iconFile ) != 0 ) + { + + TInt iconMaskId = iContentView->ApiProvider().Preferences().GetIntValue( KBrowserSearchIconMaskId ); + // Save IconId + iSearchIconId = iconId; + // Save Icon File + iSearchIconFilePath = iconFile; + + // No Icon file or IconId or IconMaskId set , then it means no search provider is still + // selected and set by search application, in that case we use the default icon for Search. + if ( ! iconFile.Length() + || iconId == -1 + || iconMaskId == -1 ) + { + iconId = EMbmAvkonQgn_indi_find_glass; + iconMaskId = EMbmAvkonQgn_indi_find_glass_mask; + iconFile = KAvkonBitmapFile; + } + + + if ( iSearchEditor ) + { + delete iSearchEditor; + iSearchEditor = NULL; + } + + if ( iSearchInputFrame ) + { + delete iSearchInputFrame; + iSearchInputFrame = NULL; + } + + + // iSearchEditor != NULL, implies presence of Search Feature, which can be + // used to validate search feature exsistence, avoiding unecessary feature + // check calls and need of separate variable. + iSearchEditor = new (ELeave) CEikGlobalTextEditor; + iSearchInputFrame = CAknInputFrame::NewL( + iSearchEditor, + EFalse, + iconFile, + iconId, + iconMaskId, + CAknInputFrame::EPopupLayout ); + + iSearchInputFrame->SetContainerWindowL( *this); + AknEditUtils::ConstructEditingL ( iSearchEditor, + KFavouritesMaxUrlGotoPaneDefine, + 1, + EAknEditorCharactersLowerCase, + EAknEditorAlignRight, + EFalse, + ETrue, + EFalse ); + + iSearchEditor->SetContainerWindowL( *this ); + iSearchEditor->SetObserver( this ); + iSearchEditor->SetBorder( TGulBorder::ENone ); + iSearchEditor->SetAknEditorCase( EAknEditorLowerCase ); + iSearchEditor->SetAknEditorInputMode( EAknEditorTextInputMode ); + + if (AVKONAPAC) + { + // Disallow chinese input. + iSearchEditor->SetAknEditorAllowedInputModes( EAknEditorTextInputMode | + EAknEditorNumericInputMode ); + } + + //Search should use EAknEditorFlagDefault as search allows all types of input + iSearchEditor->SetAknEditorFlags + ( EAknEditorFlagDefault | EAknEditorFlagUseSCTNumericCharmap ); + + iSearchEditor->SetAknEditorPermittedCaseModes ( EAknEditorUpperCase | + EAknEditorLowerCase ); + + iSearchEditor->SetEdwinObserver( iGotoKeyHandled ); + iSearchEditor->SetSkinBackgroundControlContextL(NULL); + iSearchEditor->MakeVisible( ETrue ); + iSearchInputFrame->MakeVisible( ETrue ); + // Set the default text if not active// + if ( ! iSearchPaneActive ) + { + SetSearchTextL( *iDefaultSearchText ); + } + iSearchInputFrame->ActivateL(); + } + + } + +// ---------------------------------------------------------------------------- +// CBrowserGotoPane::SetGotoPaneActive +// ---------------------------------------------------------------------------- +void CBrowserGotoPane::SetGotoPaneActiveL() + { + + iGotoPaneActive = ETrue; + iSearchPaneActive = EFalse; + + if ( iSearchEditor ) + { + iEditor->AddFlagToUserFlags( CEikEdwin::EAvkonDisableVKB ); + // if searchpane is empty add default text + if ( !SearchTextLength() ) + { + SetSearchTextL( *iDefaultSearchText ); + } + + // if gotopane is empty add default text + if ( !TextLength() ) + { + SetTextL( KWWWString ); + } + + iSearchEditor->SetFocus( EFalse); + } + + iEditor->SetFocus( ETrue ); + CBrowserAppUi::Static()->UpdateCbaL(); + SetTextModeItalicL(); + iEditor->SetCursorPosL(iEditor->TextLength(), EFalse); + DrawDeferred(); + } + +// ---------------------------------------------------------------------------- +// CBrowserGotoPane::SetSearchPaneActive +// ---------------------------------------------------------------------------- +void CBrowserGotoPane::SetSearchPaneActiveL() + { + + if ( iSearchEditor ) + { + iSearchEditor->AddFlagToUserFlags( CEikEdwin::EAvkonDisableVKB ); + // if gotopane is empty add default text + if ( !TextLength() ) + { + SetTextL( KWWWString ); + } + + // if searchpane has default text remove it + HBufC* text = iSearchEditor->GetTextInHBufL(); + if ( text ) + { + CleanupStack::PushL( text ); + if ( !text->Compare( iDefaultSearchText->Des() ) ) + { + SetSearchTextL( KNullDesC ); + } + + CleanupStack::PopAndDestroy( text ); + } + + iSearchPaneActive = ETrue; + iGotoPaneActive = EFalse; + iEditor->SetFocus( EFalse ); + if ( iBAdaptiveListPopup ) + iBAdaptiveListPopup->HidePopupL(); + iSearchEditor->SetFocus( ETrue ); + iSearchEditor->SetCursorPosL(iSearchEditor->TextLength(), EFalse); + CBrowserAppUi::Static()->UpdateCbaL(); + + SetTextModeItalicL(); + DrawDeferred(); + } + } + + +// ---------------------------------------------------------------------------- +// CBrowserBookmarksGotoPane::SetTextModeItalic +// ---------------------------------------------------------------------------- +void CBrowserGotoPane::SetTextModeItalicL() + { + + // Editor Control is laid in a scalable way, so we need to get the correct font + // specification for setting CharFormatLayer, We could have used GetNearestFontInTwips, + // as done above in SetTextL() but it does not provide correct fonts for editor. + // We do not need to set the FontPosture back to EPostureUpright ( Normal ), as it + // is automatically handled by AknLayoutUtils::LayoutEdwinScalable called by + // iInputFrame->SetRect(), which overwrites all the properties for Editor. + if ( iSearchEditor ) + { + TAknTextComponentLayout editorLayout; + TBool apac( AknLayoutUtils::Variant() == EApacVariant && ( CAknInputFrame::EShowIndicators ) ); + editorLayout = AknLayoutScalable_Avkon::input_popup_find_pane_t1( apac ? 2 : 0 ); + TAknTextLineLayout lineLayout = editorLayout.LayoutLine(); + TInt fontid = lineLayout.FontId(); + const CAknLayoutFont *font = AknLayoutUtils::LayoutFontFromId( fontid ); + + TCharFormat charFormat; + TCharFormatMask charFormatMask; + charFormat.iFontSpec = font->FontSpecInTwips(); + charFormat.iFontSpec.iFontStyle.SetPosture( EPostureItalic ); + charFormatMask.SetAttrib(EAttFontTypeface); + charFormatMask.SetAttrib(EAttFontHeight); + charFormatMask.SetAttrib(EAttFontStrokeWeight); + charFormatMask.SetAttrib(EAttFontPosture); + + // Owner ship of charFormatLayer is taken by Editor + CCharFormatLayer* charFormatLayerItalics = NULL; + CCharFormatLayer* charFormatLayerUpright = NULL; + charFormatLayerItalics = CCharFormatLayer::NewL(charFormat,charFormatMask); + charFormat.iFontSpec.iFontStyle.SetPosture( EPostureUpright ); + charFormatLayerUpright = CCharFormatLayer::NewL(charFormat,charFormatMask); + if ( iSearchPaneActive ) + { + iSearchEditor->SetCharFormatLayer(charFormatLayerUpright); + iEditor->SetCharFormatLayer(charFormatLayerItalics); + } + else + { + iSearchEditor->SetCharFormatLayer(charFormatLayerItalics); + iEditor->SetCharFormatLayer(charFormatLayerUpright); + } + } + } + + // END OF FILE diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/BrowserAppSrc/BrowserLoadObserver.cpp --- a/browserui/browser/BrowserAppSrc/BrowserLoadObserver.cpp Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/BrowserAppSrc/BrowserLoadObserver.cpp Fri May 08 08:18:43 2009 +0300 @@ -258,9 +258,7 @@ !iApiProvider->ExitInProgress() ) { // Go back to bookmarks and close the content view - iApiProvider->SetViewToReturnOnClose( - KUidBrowserBookmarksViewId ); - iApiProvider->CloseContentViewL(); + iApiProvider->ExitBrowser( ETrue ); } // No content to be shown, go back to where we came from else if ( !iRestoreContentFlag ) diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/BrowserAppSrc/BrowserPreferences.cpp --- a/browserui/browser/BrowserAppSrc/BrowserPreferences.cpp Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/BrowserAppSrc/BrowserPreferences.cpp Fri May 08 08:18:43 2009 +0300 @@ -225,6 +225,8 @@ iAllPreferences.iShortCutFuncZoomIn = NULL; iAllPreferences.iShortCutFuncZoomOut = NULL; iAllPreferences.iShortCutFuncZoomMode = NULL; + iAllPreferences.iSearch = EFalse; + iAllPreferences.iService = EFalse; } // ---------------------------------------------------------------------------- @@ -716,6 +718,8 @@ iAllPreferences.iMaxRecentUrlsToShow = GetIntValue( KBrowserNGMaxRecentUrls ); + iAllPreferences.iSearch = GetIntValue( KBrowserSearch ); + iAllPreferences.iService = GetIntValue( KBrowserServices ); } diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/BrowserAppSrc/BrowserWindow.cpp --- a/browserui/browser/BrowserAppSrc/BrowserWindow.cpp Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/BrowserAppSrc/BrowserWindow.cpp Fri May 08 08:18:43 2009 +0300 @@ -949,6 +949,8 @@ if( aDraw ) { iBrCtlInterface->DrawNow(); + CBrowserContentView* cv = iWindowManager->ContentView(); + cv->UpdateFullScreenL(); TRAP_IGNORE(Display().StopProgressAnimationL());//also updates title } WindowMgr().NotifyObserversL( EWindowActivate, WindowId() ); diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/FavouritesInc/BrowserAdaptiveListPopup.h --- a/browserui/browser/FavouritesInc/BrowserAdaptiveListPopup.h Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/FavouritesInc/BrowserAdaptiveListPopup.h Fri May 08 08:18:43 2009 +0300 @@ -77,7 +77,10 @@ /** *C++ Constructor */ - CBrowserAdaptiveListPopup( CEikEdwin* aGotoPaneEdit, CCoeControl* aParent, TParentType aParentType); + CBrowserAdaptiveListPopup( CEikEdwin* aGotoPaneEdit, + CCoeControl* aParent, + TParentType aParentType, + TBool aSearchFeature = EFalse ); /** * default constructor. @@ -175,6 +178,8 @@ HBufC* iUrlSuffixBuf; TBool iTouchSupported; TInt iMaxRecentUrlsToShow; + // shows whether search feature is enabled or not. + TBool iSearchFeature; }; #endif // BROWSERADAPTIVELISTPOPUP_H diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/FavouritesInc/BrowserBookmarksContainer.h --- a/browserui/browser/FavouritesInc/BrowserBookmarksContainer.h Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/FavouritesInc/BrowserBookmarksContainer.h Fri May 08 08:18:43 2009 +0300 @@ -63,11 +63,19 @@ void SetGotoActiveL(); /** - * Deactivate Goto Mode + * Activate Search Pane + */ + void SetSearchActiveL(); + /** + * Deactivate Goto Pane */ void SetGotoInactiveL(); + /** + * Deactivate Search Pane + */ + void SetSearchInactiveL(); public: // access to components /** @@ -75,13 +83,24 @@ * @return The Goto Pane. */ inline CBrowserBookmarksGotoPane* GotoPane() const; - - + + /** + * Get the Search Pane. + * @return The Search Pane. + */ + inline CBrowserBookmarksGotoPane* SearchPane() const; + /** * Check if we are in Goto Mode * @return ETrue if we are in Goto Mode; EFalse otherwise. */ inline TBool GotoPaneActive() const; + + /** + * Check if we are in Search Mode + * @return ETrue if we are in Search Mode; EFalse otherwise. + */ + inline TBool SearchPaneActive() const; public: // from CBrowserFavouritesContainer @@ -123,6 +142,11 @@ TBool IsEditing(); /** + * Check if some editing is in progress for Search Pane. + */ + TBool IsEditingSearch(); + + /** * Get tab index belonging to this view. * @return The tab index. */ @@ -154,6 +178,12 @@ */ void HandlePointerEventL(const TPointerEvent& /*aPointerEvent*/); + /** + * HandleResourceChange + * From CCoeControl + */ + void HandleResourceChange(TInt aType); + protected: // Construct / destruct /** @@ -172,6 +202,12 @@ const TRect& aRect, CBrowserFavouritesView& aView ); + /** + * Called by ConstructComponentControlsL. + * Leaves on failure. + */ + virtual void ConstructSearchPaneL(); + protected: // from CBrowserFavouritesContainer /** @@ -196,15 +232,42 @@ * Goto Pane. */ CBrowserBookmarksGotoPane* iGotoPane; - - + + /** + * Owned. + * Search Pane. + */ + CBrowserBookmarksGotoPane* iSearchPane; + /** * ETrue if Goto pane is active, EFalse by default */ TBool iGotoPaneActive; + + /** + * ETrue if Search pane is active, EFalse by default + */ + TBool iSearchPaneActive; TBool iSelectionKeyDownPressed; TBool iSelectionKeyLongPress; + + /** + * Default text in search editor + */ + HBufC* iDefaultSearchText; + + /** + * Saves Search Provider Icon Id, + * used for tracking changes to Icon. + */ + TInt iSearchIconId; + + /** + * Saves Search Icon File Path + * used for tracking changes to Icon. + */ + TFileName iSearchIconFilePath; }; #include "BrowserBookmarksContainer.inl" diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/FavouritesInc/BrowserBookmarksContainer.inl --- a/browserui/browser/FavouritesInc/BrowserBookmarksContainer.inl Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/FavouritesInc/BrowserBookmarksContainer.inl Fri May 08 08:18:43 2009 +0300 @@ -42,6 +42,23 @@ return iGotoPaneActive; } +// --------------------------------------------------------- +// CBrowserBookmarksContainer::SearchPane +// --------------------------------------------------------- +// +CBrowserBookmarksGotoPane* CBrowserBookmarksContainer::SearchPane() const + { + return iSearchPane; + } + +// --------------------------------------------------------- +// CBrowserBookmarksContainer::SearchPaneActive +// --------------------------------------------------------- +// +TBool CBrowserBookmarksContainer::SearchPaneActive() const + { + return iSearchPaneActive; + } #endif diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/FavouritesInc/BrowserBookmarksGotoPane.h --- a/browserui/browser/FavouritesInc/BrowserBookmarksGotoPane.h Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/FavouritesInc/BrowserBookmarksGotoPane.h Fri May 08 08:18:43 2009 +0300 @@ -34,6 +34,17 @@ class CAknsFrameBackgroundControlContext; class CBrowserFavouritesView; + +// DEFINES +#ifndef GOTOPANE_POPUPLIST_DISABLE +#define GOTOPANE_POPUPLIST_DISABLE EFalse +#endif + +#ifndef GOTOPANE_POPUPLIST_ENABLE +#define GOTOPANE_POPUPLIST_ENABLE ETrue +#endif + + // class CBrowserAdaptiveListPopup; // CLASS DECLARATION @@ -77,14 +88,28 @@ /** * Two-phased constructor. Leaves on failure. + * @param aView Pointer to Favourites View * @param aParent Parent control. - * @param aIcon Icon to display. If NULL, a default is used. - * @param aTextLimit Maximum length of text. - * @return The constructed Goto Pane control. + * @param aBitmapfile Icon File Path + * @param aIconBitmapId Icon to display. + * @param aIconMaskId Icon Mask + * @param aPopupListStatus True if the pane uses popuplist, + * otherwise false. + * @param aSearchPaneMode Set true if the pane is a Search pane. + * @return The constructed Goto Pane control */ static CBrowserBookmarksGotoPane* NewL - ( const CCoeControl& aParent, CBrowserFavouritesView* aView ); + ( + const CCoeControl& aParent, + CBrowserFavouritesView* aView, + const TDesC& aBitmapfile, + TInt aIconBitmapId , + TInt aIconMaskId , + TBool aPopupListStatus = GOTOPANE_POPUPLIST_ENABLE, + TBool aSearchPaneMode = EFalse + ); + /** * Destructor. */ @@ -127,6 +152,11 @@ void SetTextL( const TDesC& aText, TBool aClipToFit = ETrue, TBool aCancelEditing = ETrue ); /** + * Set Editor Font Posture to Italic. + */ + void SetTextModeItalicL( ); + + /** * Get text; ownership passed. The returned buffer is zero-terminated. * @since 1.2 * @return Text in a buffer or NULL. Owner is the caller. @@ -217,20 +247,26 @@ * */ void HandlePointerEventL(const TPointerEvent& /*aPointerEvent*/); + + /** + * Sets/Unsets Virtual Keyboard Flag. + * @param aVKBFlag - ETrue sets the flag, Unsets the flag if EFalse. + */ + void SetVKBFlag( TBool aVKBFlag ); protected: // Construct / destruct /** * Constructor. */ - CBrowserBookmarksGotoPane(CBrowserFavouritesView* aView); + CBrowserBookmarksGotoPane(CBrowserFavouritesView* aView, TBool aSearchPaneMode ); /** * Second-phase constructor. Leaves on failure. * @param aParent Parent control. */ - void ConstructL - ( const CCoeControl& aParent ); + void ConstructL( const CCoeControl& aParent, const TDesC& aBitmapfile, TInt aIconBitmapId, + TInt aIconMaskId, TBool aPopupListStatus ); protected: // from CCoeControl @@ -247,7 +283,10 @@ */ inline void SetEditingL( TBool aEditing ); - void ActivateVKB(); + /** + * Activates Virtual Keyboard. + */ + void ActivateVkbL(); private: // data CBrowserFavouritesView* iView; //Not owned. @@ -268,6 +307,10 @@ CBrowserAdaptiveListPopup* iBAdaptiveListPopup; CAknsListBoxBackgroundControlContext* iSkinContext; CAknsFrameBackgroundControlContext* iInputContext; + // If the control is in Search Pane Mode. + TBool iSearchPaneMode; + // Default text in search editor. Owned + HBufC* iDefaultSearchText; }; #include "BrowserBookmarksGotoPane.inl" diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/FavouritesSrc/BrowserAdaptiveListPopup.cpp --- a/browserui/browser/FavouritesSrc/BrowserAdaptiveListPopup.cpp Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/FavouritesSrc/BrowserAdaptiveListPopup.cpp Fri May 08 08:18:43 2009 +0300 @@ -206,8 +206,10 @@ // CBrowserAdaptiveListPopup::CBrowserAdaptiveListPopup() // --------------------------------------------------------- // -CBrowserAdaptiveListPopup::CBrowserAdaptiveListPopup( CEikEdwin* aGotoPaneEdit, CCoeControl* aParent, TParentType aParentType): - iEditor( aGotoPaneEdit ), iParent( aParent ), iParentType( aParentType ) +CBrowserAdaptiveListPopup::CBrowserAdaptiveListPopup( CEikEdwin* aGotoPaneEdit, + CCoeControl* aParent, TParentType aParentType, TBool aSearchFeature): + iEditor( aGotoPaneEdit ), iParent( aParent ), + iParentType( aParentType ), iSearchFeature( aSearchFeature ) { iTouchSupported = AknLayoutUtils::PenEnabled(); } @@ -767,6 +769,14 @@ } else { + if( iSearchFeature ) + { + if( iList->CurrentItemIndex() == 0 ) + { + resp = EKeyWasConsumed; + return resp; + } + } resp=iList->OfferKeyEventL( aKeyEvent, aType ); } if ( currIndex > -1 ) @@ -839,6 +849,17 @@ || aKeyEvent.iCode == EStdKeyDevice12 ) // : Extra KeyEvent supports diagonal event simulator wedge { resp = EKeyWasConsumed; + if( iSearchFeature ) + { + if ( iPrevItem <= 0 ) + { + if(! iList->HighLightEnabled() ) + { + resp = EKeyWasNotConsumed; + return resp; + } + } + } //it was the last item if ( iPrevItem == 0 ) { @@ -1139,7 +1160,7 @@ CleanupStack::PopAndDestroy(fp); MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance(); - AknsUtils::CreateIconL( skinInstance, + AknsUtils::CreateIconLC( skinInstance, KAknsIIDQgnPropWmlFolderAdap, newIconBmp, newIconMaskBmp, @@ -1147,10 +1168,11 @@ EMbmBrowserQgn_prop_wml_folder_adap, EMbmBrowserQgn_prop_wml_folder_adap_mask); newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp); + CleanupStack::Pop(2); CleanupStack::PushL(newIcon); icons->AppendL( newIcon ); CleanupStack::Pop(newIcon); - AknsUtils::CreateIconL( skinInstance, + AknsUtils::CreateIconLC( skinInstance, KAknsIIDQgnPropWmlBmAdap, newIconBmp, newIconMaskBmp, @@ -1158,6 +1180,7 @@ EMbmBrowserQgn_prop_wml_bm_adap, EMbmBrowserQgn_prop_wml_bm_adap_mask); newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp); + CleanupStack::Pop(2); CleanupStack::PushL(newIcon); icons->AppendL( newIcon ); CleanupStack::Pop(newIcon); diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/FavouritesSrc/BrowserBookmarksContainer.cpp --- a/browserui/browser/FavouritesSrc/BrowserBookmarksContainer.cpp Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/FavouritesSrc/BrowserBookmarksContainer.cpp Fri May 08 08:18:43 2009 +0300 @@ -22,9 +22,11 @@ #include #include +#include #include #include #include +#include "BrowserBookmarksView.h" #include "CommonConstants.h" #include "BrowserFavouritesView.h" @@ -41,6 +43,8 @@ #endif // __SERIES60_HELP #include "Logger.h" #include "e32event.h" +#include "BrowserUiSDKCRKeys.h" +#include // CONSTANTS @@ -72,6 +76,8 @@ CBrowserBookmarksContainer::~CBrowserBookmarksContainer() { delete iGotoPane; + delete iSearchPane; + delete iDefaultSearchText; } // --------------------------------------------------------- @@ -85,15 +91,93 @@ iGotoPaneActive = ETrue; Listbox()->UpdateFilterL(); - + if( iSearchPane ) + { + iGotoPane->SetVKBFlag( EFalse ); + // Check for Search Configuration Changes // + if( View().ApiProvider().Preferences().GetIntValue( KBrowserSearchIconId ) + != iSearchIconId ) + { + ConstructSearchPaneL(); + } + + iSearchPane->SetFocus( EFalse ); + // only one editor can be active at a time // + iSearchPaneActive = EFalse; + // we still need to display search, when showing for first time // + iSearchPane->MakeVisible(ETrue); + iSearchPane->CancelEditingL(); + } + // redraw SizeChanged(); - iGotoPane->BeginEditingL(); - + // It is important to set the Text and Italic property after SizeChanged, because + // iInputFrame->SetRect() event on GoTo/Search Pane calls the scalable version + // ( AknLayoutUtils::LayoutEdwinScalable ) which overwrites all the properties for + // Char and Para Formats. + if( iSearchPane ) + { + iSearchPane->SetTextModeItalicL(); + HBufC* text = iSearchPane->GetTextL(); + CleanupStack::PushL( text ); + if ( !text->Length() ) + { + iSearchPane->SetTextL( *iDefaultSearchText ); + } + CleanupStack::PopAndDestroy( text ); + } + + iGotoPane->BeginEditingL(); DrawDeferred(); } } + +// --------------------------------------------------------- +// CBrowserBookmarksContainer::SetSearchActiveL +// --------------------------------------------------------- +// +void CBrowserBookmarksContainer::SetSearchActiveL() + { + if( ! iSearchPaneActive ) + { + // Check for Search Configuration Changes // + if( View().ApiProvider().Preferences().GetIntValue( KBrowserSearchIconId ) + != iSearchIconId ) + { + ConstructSearchPaneL(); + } + + iSearchPane->SetVKBFlag( EFalse ); + iSearchPane->SetFocus( ETrue ); + iSearchPaneActive = ETrue; + + Listbox()->UpdateFilterL(); + // only one editor can be active at a time + iGotoPaneActive = EFalse; + iGotoPane->MakeVisible(ETrue); + iGotoPane->SetFocus( EFalse ); + iGotoPane->CancelEditingL(); + + // redraw + SizeChanged(); + + // Not Focused, so set the current Text Mode to italics. + iGotoPane->SetTextModeItalicL(); + // if gotopane is empty add default text + HBufC* text = iGotoPane->GetTextL(); + CleanupStack::PushL( text ); + if ( !text->Length() ) + { + iGotoPane->SetTextL( KWWWString ); + } + CleanupStack::PopAndDestroy( text ); + + iSearchPane->BeginEditingL(); + DrawDeferred(); + } + + } // --------------------------------------------------------- @@ -103,8 +187,18 @@ void CBrowserBookmarksContainer::SetGotoInactiveL() { - if(iGotoPaneActive) + if( iGotoPaneActive || iSearchPaneActive ) { + + if( iSearchPane ) + { + /* In Search Feature we have to move between the editors preserving the + * text added, clear the text when cancel is pressed. + */ + iGotoPane->SetTextL( KNullDesC , ETrue ); + SetSearchInactiveL(); + } + // Deactivate GoTo Pane iGotoPaneActive = EFalse; // Deactivate GoTo Pane @@ -119,13 +213,21 @@ } } +void CBrowserBookmarksContainer::SetSearchInactiveL() + { + iSearchPaneActive = EFalse; + iSearchPane->SetTextL( KNullDesC , ETrue); + iSearchPane->MakeVisible( EFalse ); + iSearchPane->CancelEditingL(); + } + // --------------------------------------------------------- // CBrowserBookmarksContainer::CountComponentControls // --------------------------------------------------------- // TInt CBrowserBookmarksContainer::CountComponentControls() const { - return (Listbox() ? 1 : 0) + (iGotoPane ? 1 : 0); + return (Listbox() ? 1 : 0) + (iGotoPane ? 1 : 0) + (iSearchPane? 1 : 0) ; } // --------------------------------------------------------- @@ -146,7 +248,10 @@ { return iGotoPane; } - + case 2: + { + return iSearchPane; + } default: { return NULL; @@ -164,16 +269,53 @@ TInt unfilteredNumberOfItems = Listbox()->UnfilteredNumberOfItems(); // if goto pane is active - if( iGotoPaneActive ) + if( iGotoPaneActive || iSearchPaneActive ) { - // Enable / disable line in Goto Pane (hide if listbox is empty). + if( iSearchPane ) + { + TAknWindowLineLayout findPane = AknLayout::find_pane(); + + // Enable / disable line in Goto Pane (hide if listbox is empty). iGotoPane->SetLineState( unfilteredNumberOfItems > 0 ); + TAknWindowLineLayout listLayout = AknLayout::list_gen_pane( 1 ); + + TRect listBoxRect = AknLayoutUtils::RectFromCoords( rect,listLayout.il, + listLayout.it, listLayout.ir, listLayout.ib, listLayout.iW, listLayout.iH); + + /* Now we need to make room for both Goto and Search Pane. + * No layout specification was suitable for this case, so + * substracting the height of pane. + */ + listBoxRect.iBr.iY -= findPane.iH; + // In Goto Mode, the listbox is laid out leaving space for Goto Pane. - AknLayoutUtils::LayoutControl( Listbox(), rect, AknLayout::list_gen_pane( 1 )); + Listbox()->SetRect( listBoxRect ); + + + // Now Lay out Search Pane as if it was the old Find Pane. + AknLayoutUtils::LayoutControl( iSearchPane, rect, findPane ); - // Lay out Goto Pane as if it was the old Find Pane. - AknLayoutUtils::LayoutControl( iGotoPane, rect, AknLayout::find_pane() ); + TRect gotoRect = AknLayoutUtils::RectFromCoords( rect,findPane.il, findPane.it, + findPane.ir, findPane.ib, findPane.iW, findPane.iH); + + // Calculate the new position for GoToPane. + gotoRect.iTl.iY -= ( findPane.iH ); + gotoRect.iBr.iY -= ( findPane.iH ); + iGotoPane->SetRect( gotoRect ); + + } + else + { + // Enable / disable line in Goto Pane (hide if listbox is empty). + iGotoPane->SetLineState( unfilteredNumberOfItems > 0 ); + + // In Goto Mode, the listbox is laid out leaving space for Goto Pane. + AknLayoutUtils::LayoutControl( Listbox(), rect, AknLayout::list_gen_pane( 1 )); + + // Lay out Goto Pane as if it was the old Find Pane. + AknLayoutUtils::LayoutControl( iGotoPane, rect, AknLayout::find_pane() ); + } } else { @@ -257,11 +399,11 @@ } // If the Goto Pane exists and we're not fetching, then decide // if we should pass keystroke to it - if(iGotoPane) + if(iGotoPane && !CBrowserAppUi::Static()->Fetching()) { // If the key so far hadn't been consumed or if the pane is already active, // pass the keystroke on - if( (result == EKeyWasNotConsumed) || (iGotoPaneActive) ) + if( (result == EKeyWasNotConsumed) || iGotoPaneActive || iSearchPaneActive ) { // Goto pane has highest priority; if it's active, arrow keys go there. // If fetching is in progress, no key events are offered, to prevent it @@ -269,7 +411,7 @@ // Enter Key now handled through HandleCommand in BrowserBookmarksView like MSK // This change affects the enter key on the QWERTY keyboard when we run emulator - if(EStdKeyEnter == aKeyEvent.iScanCode && EEventKeyUp == aType && AknLayoutUtils::MSKEnabled() && iGotoPaneActive ) + if(EStdKeyEnter == aKeyEvent.iScanCode && EEventKeyUp == aType && AknLayoutUtils::MSKEnabled() && (iGotoPaneActive || iSearchPaneActive )) { CEikButtonGroupContainer* myCba = CEikButtonGroupContainer::Current(); if(myCba != NULL) @@ -280,13 +422,51 @@ } } else - { - result = iGotoPane->OfferKeyEventL( keyEvent, aType ); + { + if( iSearchPane ) + { + // Process separately for Search Feature // + if( iGotoPaneActive ) + { + result = iGotoPane->OfferKeyEventL( keyEvent, aType ); + } + else + { + result = iSearchPane->OfferKeyEventL( keyEvent, aType ); + } + } + else + result = iGotoPane->OfferKeyEventL( keyEvent, aType ); } - + + if( iSearchPane ) + { + if( ( iGotoPaneActive || iSearchPaneActive) && result == EKeyWasNotConsumed ) + { + + if( aKeyEvent.iCode == EKeyUpArrow ) + { + result = EKeyWasConsumed; + if( iSearchPaneActive ) + { + SetGotoActiveL(); + iGotoPane->SetVKBFlag( ETrue ); + } + } + if( aKeyEvent.iCode == EKeyDownArrow ) + { + result = EKeyWasConsumed; + if( iGotoPaneActive ) + { + SetSearchActiveL(); + iSearchPane->SetVKBFlag( ETrue ); + } + } + } + } + // if key is consumed, goto pane was not active, make it active now. - if(result == EKeyWasConsumed && - !iGotoPaneActive) + if(result == EKeyWasConsumed && (!iGotoPaneActive && !iSearchPaneActive)) { SetGotoActiveL(); } @@ -373,6 +553,20 @@ } // --------------------------------------------------------- +// CBrowserBookmarksContainer::IsEditingSearch +// --------------------------------------------------------- +// +TBool CBrowserBookmarksContainer::IsEditingSearch() + { + TBool editing = EFalse; + if( iSearchPane ) + { + editing = iSearchPane->IsEditing(); + } + return editing; + } + +// --------------------------------------------------------- // CBrowserBookmarksContainer::TabIndex // --------------------------------------------------------- // @@ -404,7 +598,7 @@ // --------------------------------------------------------- // CBrowserBookmarksContainer::CBrowserBookmarksContainer() -: iGotoPaneActive( EFalse ) +: iGotoPaneActive( EFalse ),iSearchPaneActive(EFalse) { } @@ -423,8 +617,17 @@ // Construct Goto Pane. //pass view to bookmarks goto pane - iGotoPane = CBrowserBookmarksGotoPane::NewL( *this, &aView ); + iGotoPane = CBrowserBookmarksGotoPane::NewL( *this, &aView, KAvkonBitmapFile, + EMbmAvkonQgn_indi_find_goto, + EMbmAvkonQgn_indi_find_goto_mask); iGotoPane->SetFocus( EFalse ); + + if( View().ApiProvider().Preferences().SearchFeature() ) + { + ConstructSearchPaneL(); + iSearchPane->SetFocus( EFalse ); + iDefaultSearchText = StringLoader::LoadL( R_IS_WEB_SEARCH ); + } } // --------------------------------------------------------- @@ -459,6 +662,10 @@ { iGotoPane->SetFocus( IsFocused(), aDrawNow ); } + else if( IsEditingSearch() ) + { + iSearchPane->SetFocus( IsFocused(), aDrawNow ); + } else if ( Listbox() && Listbox()->IsVisible() ) { Listbox()->SetFocus( IsFocused(), aDrawNow ); @@ -478,10 +685,48 @@ // // otherwise, if it falls within the listbox's rect // - if (iGotoPaneActive && iGotoPane) - { - iGotoPane->HandlePointerEventL(aPointerEvent); - } + + // Now we have two different panes so we have to check explicitly before passing controls + // to any panes. + if( iGotoPane && ( iGotoPaneActive || iSearchPaneActive) ) + { + if( iSearchPane )//implies presence of search feature. + { + if( iGotoPane->Rect().Contains( aPointerEvent.iPosition) ) + { + if( iGotoPaneActive ) + { + iGotoPane->HandlePointerEventL(aPointerEvent); + } + else + { + SetGotoActiveL(); + } + iGotoPane->SetVKBFlag( ETrue ); + } + else if( iSearchPane->Rect().Contains( aPointerEvent.iPosition) ) + { + if( iSearchPaneActive ) + { + iSearchPane->HandlePointerEventL(aPointerEvent); + } + else + { + SetSearchActiveL(); + } + iSearchPane->SetVKBFlag( ETrue ); + } + else + { + CBrowserAppUi::Static()->ActiveView()->HandleCommandL(EWmlCmdGotoPaneCancel); + SetGotoInactiveL(); + } + } + else + { + iGotoPane->HandlePointerEventL(aPointerEvent); + } + } else { // normally, pass all pointer events down to the listbox @@ -490,4 +735,92 @@ } } +// ---------------------------------------------------------------------------- +// CBrowserBookmarksContainer::ConstructSearchPaneL +// ---------------------------------------------------------------------------- +// + +void CBrowserBookmarksContainer::ConstructSearchPaneL() + { + TFileName iconFile; + MPreferences& preferences = View().ApiProvider().Preferences(); + + TInt iconId = preferences.GetIntValue( KBrowserSearchIconId ); + // Get the Search Icon File Path. + preferences.GetStringValueL( KBrowserSearchIconPath, KMaxFileName, iconFile ); + + // If Icon File Path Changed or Icon Id Changed, Refresh the Icon for Search Pane. + // Comparing Icon File path as well, because it may be possible that two different + // Icon files have same icon id. + if( iconId != iSearchIconId + || iSearchIconFilePath.Compare( iconFile ) != 0 ) + { + + TInt iconMaskId = preferences.GetIntValue( KBrowserSearchIconMaskId ); + + // Save IconId + iSearchIconId = iconId; + // Save Icon File + iSearchIconFilePath = iconFile; + + + // No Icon file or IconId or IconMaskId set , then it means no search provider is still + // selected and set by search application, in that case we use the default icon for Search. + if( ! iconFile.Length() + || iconId == -1 + || iconMaskId == -1 ) + { + iconId = EMbmAvkonQgn_indi_find_glass; + iconMaskId = EMbmAvkonQgn_indi_find_glass_mask; + iconFile = KAvkonBitmapFile; + } + + if( iSearchPane ) + { + delete iSearchPane; + iSearchPane = NULL; + } + + + // iSearchPane != NULL, implies presence of search feature, hence it can be + // used to validate search feature avoiding repetative calls to utils and + // avoiding need of separate variable. + iSearchPane = CBrowserBookmarksGotoPane::NewL( *this, + &(View()), + iconFile, + iconId, + iconMaskId, + GOTOPANE_POPUPLIST_DISABLE, + ETrue + ); + + CBrowserBookmarksView* bookmarkView = REINTERPRET_CAST( CBrowserBookmarksView* , &( View() )); + // Set Pane observer + iSearchPane->SetGPObserver( bookmarkView ); + } + } + +// ---------------------------------------------------------------------------- +// CBrowserBookmarksContainer::HandleResourceChange +// ---------------------------------------------------------------------------- +// +void CBrowserBookmarksContainer::HandleResourceChange(TInt aType) + { + CBrowserFavouritesContainer::HandleResourceChange( aType); + if( aType == KEikDynamicLayoutVariantSwitch) + { + // If search feature exsist + if( iSearchPane ) + { + if( iSearchPaneActive ) + { + iGotoPane->SetTextModeItalicL( ); + } + else + { + iSearchPane->SetTextModeItalicL( ); + } + } + } + } // End of File diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/FavouritesSrc/BrowserBookmarksGotoPane.cpp --- a/browserui/browser/FavouritesSrc/BrowserBookmarksGotoPane.cpp Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/FavouritesSrc/BrowserBookmarksGotoPane.cpp Fri May 08 08:18:43 2009 +0300 @@ -11,9 +11,9 @@ * * Contributors: * -* Description: +* Description: * Implementation of CBrowserBookmarksGotoPane. -* +* * */ @@ -30,13 +30,13 @@ #include #include -#include + #include #include #include #include -#include +#include #include #include @@ -54,9 +54,15 @@ #include #include +#include +#include +#include + +#include #include using namespace SkinLayout; +// CONSTANTS const TInt EUseSkinContext = 0x01; const TInt EParentAbsolute = 0x02; const TInt KRightSpace = 10; //space in pixels left at the end of text editor. @@ -71,12 +77,20 @@ // --------------------------------------------------------- // CBrowserBookmarksGotoPane* CBrowserBookmarksGotoPane::NewL -( const CCoeControl& aParent, CBrowserFavouritesView* aView ) - { + ( + const CCoeControl& aParent, + CBrowserFavouritesView* aContentView, + const TDesC& aBitmapfile, + TInt aIconBitmapId, + TInt aIconMaskId, + TBool aPopupListStatus, + TBool aSearchPaneMode + ) + { CBrowserBookmarksGotoPane* gotoPane = - new(ELeave) CBrowserBookmarksGotoPane(aView); + new(ELeave) CBrowserBookmarksGotoPane(aContentView, aSearchPaneMode); CleanupStack::PushL( gotoPane ); - gotoPane->ConstructL( aParent ); + gotoPane->ConstructL( aParent, aBitmapfile, aIconBitmapId, aIconMaskId, aPopupListStatus ); CleanupStack::Pop(); // gotoPane return gotoPane; } @@ -86,12 +100,13 @@ // --------------------------------------------------------- // CBrowserBookmarksGotoPane::~CBrowserBookmarksGotoPane() - { + { delete iEditor; delete iInputFrame; delete iSkinContext; delete iInputContext; delete iBAdaptiveListPopup; + delete iDefaultSearchText; } // --------------------------------------------------------- @@ -102,17 +117,56 @@ { if ( !iFrozen ) { - // set the default string, make visible, start editing - SetTextL( KWWWString ); - MakeVisible( ETrue ); - SetEditingL( ETrue ); - if (AknLayoutUtils::PenEnabled()) + // If its a GoTo Pane Mode. + if( !iSearchPaneMode ) + { + if( iView->ApiProvider().Preferences().SearchFeature() ) + { + // If there is no text, then we need to place back + // the default text, else preserve the previously + // typed text. + HBufC* text = iEditor->GetTextInHBufL(); + if( !text ) + { + SetTextL( KWWWString ); + } + else + { + delete text; + } + } + else + SetTextL( KWWWString ); + } + else { - ActivateVKB(); + if( iView->ApiProvider().Preferences().SearchFeature() ) + { + //Clear searchpane on focus if default text is there + HBufC* text = iEditor->GetTextInHBufL(); + if ( text ) + { + CleanupStack::PushL( text ); + if ( !text->Compare( iDefaultSearchText->Des() ) ) + { + iEditor->SetTextL( &KNullDesC ); + } + CleanupStack::PopAndDestroy( text ); + } + } + } + + MakeVisible( ETrue ); + SetEditingL( ETrue ); + iEditor->SetCursorPosL( iEditor->TextLength(), EFalse ); + if (AknLayoutUtils::PenEnabled() + && ( !iView->ApiProvider().Preferences().SearchFeature()) ) + { + ActivateVkbL(); } } } - + // --------------------------------------------------------- // CBrowserBookmarksGotoPane::CancelEditingL() // --------------------------------------------------------- @@ -121,16 +175,21 @@ { if ( !iFrozen ) { + // Clear selection when focus moved, only + // affects when both the editors are visible. + // no need for condition. + TInt pos = iEditor->CursorPos(); + iEditor->SetSelectionL(pos,pos); SetEditingL( EFalse ); - // Cancel Adaptive List popup if its active - if( NULL != iBAdaptiveListPopup) - { - iBAdaptiveListPopup->SetDirectoryModeL( ETrue ); - iBAdaptiveListPopup->HidePopupL(); - } + // Cancel Adaptive List popup if its active + if ( NULL != iBAdaptiveListPopup) + { + iBAdaptiveListPopup->SetDirectoryModeL( ETrue ); + iBAdaptiveListPopup->HidePopupL(); + } } - + } // --------------------------------------------------------- @@ -140,9 +199,9 @@ void CBrowserBookmarksGotoPane::SetTextL ( const TDesC& aText, TBool aClipToFit /*=ETrue*/, TBool aCancelEditing ) { - + CFbsFont * font = NULL; - + if ( !iFrozen ) { if ( aClipToFit && aText.Length() ) @@ -156,14 +215,14 @@ { //The Textview does not use the iConEnv->NormalFont() for drawing so we can not use it for measurement. //Textview uses the default char format font for drawing. See bug: EHCN-6U59SN - TBuf typeface; - CEikonEnv::Static()->ReadResource(typeface,R_EIK_DEFAULT_CHAR_FORMAT_TYPEFACE); - TResourceReader reader; - CEikonEnv::Static()->CreateResourceReaderLC(reader,R_EIK_DEFAULT_CHAR_FORMAT_HEIGHT); + TBuf typeface; + CEikonEnv::Static()->ReadResource(typeface,R_EIK_DEFAULT_CHAR_FORMAT_TYPEFACE); + TResourceReader reader; + CEikonEnv::Static()->CreateResourceReaderLC(reader,R_EIK_DEFAULT_CHAR_FORMAT_HEIGHT); TInt height = reader.ReadInt16(); - CleanupStack::PopAndDestroy(); // reader - - TFontSpec fontSpec(typeface, height); + CleanupStack::PopAndDestroy(); // reader + + TFontSpec fontSpec(typeface, height); CEikonEnv::Static()->ScreenDevice()->GetNearestFontInTwips((CFont*&)font, fontSpec); AknTextUtils::ClipToFit @@ -178,41 +237,48 @@ } else { - if ( aText.Length() ) - { - iEditor->SetTextL( &aText ); - } - else - { - TBufC<16> buf(KAddressText); - HBufC* tmpBuf = NULL; - tmpBuf = buf.AllocLC(); - iEditor->SetTextL( tmpBuf ); - CleanupStack::PopAndDestroy(); // tmpBuf - } + if( iSearchPaneMode ) + { + iEditor->SetTextL( &aText ); + } + else + { + if ( aText.Length() ) + { + iEditor->SetTextL( &aText ); + } + else + { + TBufC<16> buf(KAddressText); + HBufC* tmpBuf = NULL; + tmpBuf = buf.AllocLC(); + iEditor->SetTextL( tmpBuf ); + CleanupStack::PopAndDestroy(); // tmpBuf + } + } } - + iEditor->SetCursorPosL( iEditor->TextLength(), EFalse ); if ( !iEverFocused ) - { - iEditor->SetFocus( ETrue ); - } + { + iEditor->SetFocus( ETrue ); + } - if ( !iEverFocused ) - { - iEditor->SetFocus( IsFocused() ); - iEverFocused = ETrue; - } - SetEditingL( !aCancelEditing ); - DrawDeferred(); + if ( !iEverFocused ) + { + iEditor->SetFocus( IsFocused() ); + iEverFocused = ETrue; + } + SetEditingL( !aCancelEditing ); + DrawDeferred(); } - + // release font if it was used - if(font != NULL) - { - CEikonEnv::Static()->ScreenDevice()->ReleaseFont(font); - } - + if (font != NULL) + { + CEikonEnv::Static()->ScreenDevice()->ReleaseFont(font); + } + } // --------------------------------------------------------- @@ -225,8 +291,10 @@ TPtr ptr = text->Des(); iEditor->GetText( ptr ); ptr.ZeroTerminate(); - - Util::EncodeSpaces(text); + if( !iSearchPaneMode ) + { + Util::EncodeSpaces(text); + } return text; } @@ -238,8 +306,8 @@ void CBrowserBookmarksGotoPane::SetGPObserver ( MBookmarksGotoPaneObserver* aObserver ) { - __ASSERT_DEBUG( !iGPObserver, \ - Util::Panic( Util::EGotoPaneObserverAlreadySet ) ); + /*__ASSERT_DEBUG( !iGPObserver, \ + Util::Panic( Util::EGotoPaneObserverAlreadySet ) );*/ iGPObserver = aObserver; } @@ -256,59 +324,102 @@ // CBrowserBookmarksGotoPane::OfferKeyEventL // --------------------------------------------------------- // +// Note: +// +// Below, there are several keys in the ISO-Latin-1 range that we +// exclude from use in a URL: +// +// - EStdKeyDevice10 0xC9 E-accent acute Northwest +// - EStdKeyDevice11 0xCA E-accent circumflex Northeast +// - EStdKeyDevice12 0xCB E-umlaut Southeast +// - EStdKeyDevice13 0xCC I-accent grave Southwest +// +// While these ought to be vaguely acceptable in certain parts of a URL, +// they are also used by some navigation drivers as our "diagonal event" +// codes so turn up as the user navigates the cursor. Because of this, +// today, we prevent them from being inserted as characters. There's +// a second set of code ranges (in the 0x8XXX range) that's also defined +// for these events; if the driver writers ever manage to get all of +// the navigation drivers using this "out-of-band" range, we can +// eliminate filtering the ISO-Latin-1 range of characters that we +// do here. +// +// + TKeyResponse CBrowserBookmarksGotoPane::OfferKeyEventL ( const TKeyEvent& aKeyEvent, TEventCode aType ) { TKeyResponse response = EKeyWasNotConsumed; - TChar iInputChar = TChar( aKeyEvent.iScanCode ); + TChar iInputChar = TChar( aKeyEvent.iScanCode ); if ( iBAdaptiveListPopup ) - { - response = iBAdaptiveListPopup->OfferKeyEventL( aKeyEvent, aType ); + { + response = iBAdaptiveListPopup->OfferKeyEventL( aKeyEvent, aType ); } if ( iEditing && response != EKeyWasConsumed) { - // Editing; most keys simply forwarded to the editor. - switch ( aKeyEvent.iCode ) + + switch ( aKeyEvent.iCode ) // Already editing; most keys simply forwarded to the editor. { - case EKeyOK: + + case EKeyOK: { - // MSK is now handled through HandleCommand in BrowserBookmarksView - response = EKeyWasConsumed; - break; + response = EKeyWasConsumed; // MSK is now handled through HandleCommand in BrowserBookmarksView + break; } - case EKeyEnter: - // Handle EnterKey as "GOTO" for Touch, VKB's enter key - if( AknLayoutUtils::PenEnabled() ) - { - CBrowserAppUi::Static()->ActiveView()->HandleCommandL(EWmlCmdGotoPaneGoTo); - break; - } - // FALL through to default in case Pen is not enabled. + + case EKeyRightUpArrow: // Northeast + case EStdKeyDevice11: // : Extra KeyEvent supports diagonal event simulator wedge + case EKeyRightDownArrow: // Southeast + case EStdKeyDevice12: // : Extra KeyEvent supports diagonal event simulator wedge + case EKeyLeftDownArrow: // Southwest + case EStdKeyDevice13: // : Extra KeyEvent supports diagonal event simulator wedge + case EKeyLeftUpArrow: // Northwest + case EStdKeyDevice10: // : Extra KeyEvent supports diagonal event simulator wedge + { // Here, "eat" all of the diagonals so they have no effect... + response = EKeyWasConsumed; + break; + } + + case EKeyEnter: // Handle EnterKey as "GOTO" for Touch, VKB's enter key + if ( AknLayoutUtils::PenEnabled() ) + { + CBrowserAppUi::Static()->ActiveView()->HandleCommandL(EWmlCmdGotoPaneGoTo); + // In case of search feature, we need to pass EKeyWasConsumed for EKeyEnter + if ( iView->ApiProvider().Preferences().SearchFeature() ) + { + response = EKeyWasConsumed; + } + break; + } // Else *FALL THROUGH* to default in case Pen is not enabled. default: { response = iEditor->OfferKeyEventL(aKeyEvent, aType ); break; } } - + + // In the absence of search feature // Force key event to be consumed if you're editing // regardless of what's happened to it. // // This forces user to press cancel to continue other tasks - response = EKeyWasConsumed; + if ( !iView->ApiProvider().Preferences().SearchFeature() ) + { + response = EKeyWasConsumed; + } } - else if ( response != EKeyWasConsumed ) + else if ( response != EKeyWasConsumed ) // Key consumed yet? If not, process onwards... { - + if ( (aKeyEvent.iScanCode == EStdKeyHash) || ( aKeyEvent.iModifiers & ( EModifierShift | EModifierLeftShift | EModifierRightShift | EModifierCtrl | EModifierLeftCtrl | EModifierRightCtrl ) ) ) { - + // Hash key press will be used for Mark/UnMark functionality // Let Platform Listbox handle this. response = EKeyWasNotConsumed; @@ -316,42 +427,47 @@ // // Not currently editing the GoTo pane. - // Catch alpha and numeric to pop - // up goto pane + // Catch alpha and numeric to pop up the GoTo pane // // Only popup the GoTo Pane with a KeyDown event. - // Otherwise, if browser is pushed to the backround (but still active) - // in favor of the App Shell, A long "0" press will reactivate the browser and - // leave a KeyUp to (wrongly) pop the pane up + // Otherwise, if browser is pushed to the backround (but still active) + // in favor of the App Shell, A long "0" press will reactivate the browser and + // leave a KeyUp to (wrongly) pop the pane up // // Note that we exclude Unicode 0xC4 and 0xC5 which - // are defined by EStdkeyYes and EStdkeyNo. These + // are defined as EStdkeyYes and EStdkeyNo. These // map to the Send and End keys respectively. Normally, - // 0xC4 and 0xC5 can be considered alpha digits, but we exclude them so that - // they will not pop the goto pane + // 0xC4 and 0xC5 can be considered alpha digits, but we + // exclude them so that they will not pop the GoTo pane + // + // We do the same thing for all of the diagonal motion events + // so they have no effect either. + // + // Otherwise, key event is generated again (to channel through FEP) // - // key event is generated again (to channel through FEP) - // - else if ( !iFrozen && - aType == EEventKeyDown && - iInputChar.IsAlphaDigit() && - iInputChar != EStdKeyYes && - iInputChar != EStdKeyNo) - { - // These keys activate the Goto Pane. - response = EKeyWasConsumed; - + else if ( !iFrozen + && aType == EEventKeyDown + && iInputChar.IsAlphaDigit() + && iInputChar != EStdKeyYes + && iInputChar != EStdKeyNo + && iInputChar != EKeyRightUpArrow // Northeast + && iInputChar != EStdKeyDevice11 // : Extra KeyEvent supports diagonal event simulator wedge + && iInputChar != EKeyRightDownArrow // Southeast + && iInputChar != EStdKeyDevice12 // : Extra KeyEvent supports diagonal event simulator wedge + && iInputChar != EKeyLeftDownArrow // Southwest + && iInputChar != EStdKeyDevice13 // : Extra KeyEvent supports diagonal event simulator wedge + && iInputChar != EKeyLeftUpArrow // Northwest + && iInputChar != EStdKeyDevice10 ) // : Extra KeyEvent supports diagonal event simulator wedge + { // Most other alphanumeric keys activate the Goto Pane... + response = EKeyWasConsumed; // We'll consume the key event so it ends here BeginEditingL(); - iEditor->SetCursorPosL( iEditor->TextLength(), EFalse ); iCoeEnv->SyncNotifyFocusObserversOfChangeInFocus(); iCoeEnv->SimulateKeyEventL( aKeyEvent, aType ); - } else - { - // Other keys do not activate the Goto Pane. - response = EKeyWasNotConsumed; + { // Other keys do not activate the Goto Pane. + response = EKeyWasNotConsumed; // Let someone else take the key event } } return response; @@ -405,8 +521,12 @@ // CBrowserBookmarksGotoPane::CBrowserBookmarksGotoPane // --------------------------------------------------------- // -CBrowserBookmarksGotoPane::CBrowserBookmarksGotoPane(CBrowserFavouritesView* aView) -: iView(aView), iEditing( EFalse ), iFrozen( EFalse ) +CBrowserBookmarksGotoPane::CBrowserBookmarksGotoPane(CBrowserFavouritesView* aView, TBool aSearchPaneMode) +: iView( aView ), + iEditing( EFalse ), + iFrozen( EFalse ), + iBAdaptiveListPopup( NULL ), + iSearchPaneMode( aSearchPaneMode ) { } @@ -414,20 +534,19 @@ // CBrowserBookmarksGotoPane::ConstructL // --------------------------------------------------------- // -void CBrowserBookmarksGotoPane::ConstructL -( const CCoeControl& aParent ) - { +void CBrowserBookmarksGotoPane::ConstructL ( const CCoeControl& aParent, const TDesC& aBitmapfile, + TInt aIconBitmapId, TInt aIconMaskId, TBool aPopupListStatus ) + + { SetContainerWindowL( aParent ); // This is now non-window owning control SetMopParent(const_cast(&aParent)); iEditor = new (ELeave) CEikEdwin; - iInputFrame = CAknInputFrame::NewL( iEditor, EFalse, KAvkonBitmapFile, - EMbmAvkonQgn_indi_find_goto, - EMbmAvkonQgn_indi_find_goto_mask, - 0 ); + iInputFrame = CAknInputFrame::NewL( iEditor, EFalse, aBitmapfile, + aIconBitmapId, aIconMaskId, 0 ); iInputFrame->SetContainerWindowL( *this ); iEditor->SetContainerWindowL( *this ); AknEditUtils::ConstructEditingL(iEditor, KFavouritesMaxUrlGotoPaneDefine, 1, EAknEditorCharactersLowerCase, EAknEditorAlignRight, EFalse, ETrue, EFalse); - iEditor->AddFlagToUserFlags( CEikEdwin::EAlwaysShowSelection ); + iEditor->AddFlagToUserFlags( CEikEdwin::EAlwaysShowSelection ); iEditor->SetBorder( TGulBorder::ENone ); iEditor->SetAknEditorCase( EAknEditorLowerCase ); iEditor->SetAknEditorInputMode( EAknEditorTextInputMode ); @@ -438,44 +557,51 @@ iEditor->SetAknEditorAllowedInputModes( EAknEditorTextInputMode | EAknEditorNumericInputMode ); } - TInt editorFlags( EAknEditorFlagLatinInputModesOnly | EAknEditorFlagUseSCTNumericCharmap ); + // In Search Mode we allow all types of inputs + TInt editorFlags( (iSearchPaneMode ? EAknEditorFlagDefault : EAknEditorFlagLatinInputModesOnly) | EAknEditorFlagUseSCTNumericCharmap ); #ifdef RD_INTELLIGENT_TEXT_INPUT - TInt physicalKeyboards = 0; + TInt physicalKeyboards = 0; CRepository* aknFepRepository = CRepository::NewL( KCRUidAknFep ); - User::LeaveIfNull( aknFepRepository ); + User::LeaveIfNull( aknFepRepository ); aknFepRepository->Get( KAknFepPhysicalKeyboards, physicalKeyboards ); - delete aknFepRepository; - - if ( physicalKeyboards && EPtiKeyboardQwerty3x11 ) { + delete aknFepRepository; + + if ( physicalKeyboards && EPtiKeyboardQwerty3x11 ) { editorFlags = (editorFlags | EAknEditorFlagNoT9); - } -#endif - iEditor->SetAknEditorFlags( editorFlags ); + } +#endif + iEditor->SetAknEditorFlags( editorFlags ); iEditor->SetAknEditorPermittedCaseModes( EAknEditorUpperCase | EAknEditorLowerCase ); - iEditor->CreateTextViewL(); - SetupSkinContextL(); - iEditing = EFalse; + iEditor->CreateTextViewL(); + SetupSkinContextL(); + iEditing = EFalse; + TBool searchFeature = iView->ApiProvider().Preferences().SearchFeature(); + if ( searchFeature ) + { + iDefaultSearchText = StringLoader::LoadL( R_IS_WEB_SEARCH ); + } + //adaptive popuplist iBAdaptiveListPopup = NULL; - if( AUTOCOMP ) //ask the feature manager + if( aPopupListStatus && AUTOCOMP ) //ask the feature manager { iBAdaptiveListPopup= new (ELeave) CBrowserAdaptiveListPopup( - iEditor, this, EBookmarksGotoPane); + iEditor, this, EBookmarksGotoPane, searchFeature); iBAdaptiveListPopup->ConstructL(); iEditor->SetObserver( iBAdaptiveListPopup ); if (iView) - { - iBAdaptiveListPopup->SetUrlSuffixList(iView->ApiProvider().Preferences().URLSuffixList()); - iBAdaptiveListPopup->SetMaxRecentUrls(iView->ApiProvider().Preferences().MaxRecentUrls()); - } + { + iBAdaptiveListPopup->SetUrlSuffixList(iView->ApiProvider().Preferences().URLSuffixList()); + iBAdaptiveListPopup->SetMaxRecentUrls(iView->ApiProvider().Preferences().MaxRecentUrls()); + } } ActivateL(); - MakeVisible( EFalse ); + MakeVisible( EFalse ); } // --------------------------------------------------------- @@ -486,12 +612,12 @@ { TAknLayoutRect layoutRectTemp; TAknWindowLineLayout windowLayoutTmp, windowLayoutTmp2; - + windowLayoutTmp = AknLayout::Find_pane_elements_Line_4(); windowLayoutTmp2 = windowLayoutTmp; layoutRectTemp.LayoutRect( Rect(), windowLayoutTmp2 ); - iEditor->SetRect( layoutRectTemp.Rect() ); - iInputFrame->SetRect( Rect() ); + iEditor->SetRect( layoutRectTemp.Rect() ); + iInputFrame->SetRect( Rect() ); TRAP_IGNORE(SetupSkinContextL()); } @@ -521,25 +647,23 @@ // --------------------------------------------------------- // CBrowserAdaptiveListPopup* CBrowserBookmarksGotoPane::PopupList() - { - return iBAdaptiveListPopup; - } + { + return iBAdaptiveListPopup; + } // --------------------------------------------------------- // CBrowserBookmarksGotoPane::HandleResourceChange // --------------------------------------------------------- // -void CBrowserBookmarksGotoPane::HandleResourceChange( - TInt aType - ) - { - CCoeControl::HandleResourceChange( aType ); +void CBrowserBookmarksGotoPane::HandleResourceChange( TInt aType ) + { + CCoeControl::HandleResourceChange( aType ); - if( iBAdaptiveListPopup ) - { + if ( iBAdaptiveListPopup ) + { iBAdaptiveListPopup->HandleResourceChange( aType ); } - } + } // --------------------------------------------------------- // CBrowserBookmarksGotoPane::MopSupplyObject @@ -589,10 +713,10 @@ void CBrowserBookmarksGotoPane::SetupSkinContextL() { TAknsItemID tileIID = KAknsIIDQsnBgColumnA; - + TAknWindowLineLayout tile = Column_background_and_list_slice_skin_placing_Line_2(); - + TAknLayoutRect mainPane; mainPane.LayoutRect( iAvkonAppUi->ApplicationRect(), @@ -602,13 +726,13 @@ listRect.LayoutRect( mainPane.Rect(), AknLayout::list_gen_pane(0) ); TAknLayoutRect tileRect; - tileRect.LayoutRect(mainPane.Rect(), tile); + tileRect.LayoutRect(mainPane.Rect(), tile); if ( !iSkinContext ) { iSkinContext = CAknsListBoxBackgroundControlContext::NewL( - KAknsIIDQsnBgAreaMainListGene, - listRect.Rect(), + KAknsIIDQsnBgAreaMainListGene, + listRect.Rect(), EUseSkinContext & EParentAbsolute, tileIID, tileRect.Rect() ); @@ -629,37 +753,89 @@ iEditor->SetSkinBackgroundControlContextL(iInputContext); } - + // ---------------------------------------------------------------------------- -// CBrowserBookmarksGotoPane::ActivateVKB +// CBrowserBookmarksGotoPane::ActivateVkbL // ---------------------------------------------------------------------------- -void CBrowserBookmarksGotoPane::ActivateVKB() +void CBrowserBookmarksGotoPane::ActivateVkbL() { if (iEditor && iEditor->TextView()) { // make sure observer is set iCoeEnv->SyncNotifyFocusObserversOfChangeInFocus(); - - // simulate pointer event to force VKB - - // first get point at cursor location + + // simulate pointer event to force VKB + + // first get point at cursor location TInt pos = iEditor->CursorPos(); - CTextView* textView = iEditor->TextView(); - TPoint curPos; - textView->DocPosToXyPosL(pos, curPos); - - TPointerEvent pe; - pe.iPosition = curPos; - - pe.iType = TPointerEvent::EButton1Down; - iEditor->HandlePointerEventL(pe); - - // VKB will only activate is nothing selected - iEditor->SetSelectionL(pos,pos); - - pe.iType = TPointerEvent::EButton1Up; - iEditor->HandlePointerEventL(pe); + CTextView* textView = iEditor->TextView(); + TPoint curPos; + textView->DocPosToXyPosL(pos, curPos); + + TPointerEvent pe; + pe.iPosition = curPos; + + pe.iType = TPointerEvent::EButton1Down; + iEditor->HandlePointerEventL(pe); + + // VKB will only activate if nothing selected + iEditor->SetSelectionL(pos, pos); + + pe.iType = TPointerEvent::EButton1Up; + iEditor->HandlePointerEventL(pe); + iEditor->SetCursorPosL( iEditor->TextLength(), EFalse ); + } } + +// ---------------------------------------------------------------------------- +// CBrowserBookmarksGotoPane::SetTextModeItalic +// ---------------------------------------------------------------------------- +void CBrowserBookmarksGotoPane::SetTextModeItalicL( ) + { + + // Editor Control is laid in a scalable way, so we need to get the correct font + // specification for setting CharFormatLayer, We could have used GetNearestFontInTwips, + // as done above in SetTextL() but it does not provide correct fonts for editor. + // We do not need to set the FontPosture back to EPostureUpright ( Normal ), as it + // is automatically handled by AknLayoutUtils::LayoutEdwinScalable called by + // iInputFrame->SetRect(), which overwrites all the properties for Editor. + + TAknTextComponentLayout editorLayout; + TBool apac( AknLayoutUtils::Variant() == EApacVariant && ( CAknInputFrame::EShowIndicators ) ); + editorLayout = AknLayoutScalable_Avkon::input_find_pane_t1( apac ? 1: 0 ); + TAknTextLineLayout lineLayout = editorLayout.LayoutLine(); + TInt fontid = lineLayout.FontId(); + const CAknLayoutFont *font = AknLayoutUtils::LayoutFontFromId( fontid ); + + TCharFormat charFormat; + TCharFormatMask charFormatMask; + charFormat.iFontSpec = font->FontSpecInTwips(); + charFormat.iFontSpec.iFontStyle.SetPosture( EPostureItalic ); + charFormatMask.SetAttrib(EAttFontTypeface); + charFormatMask.SetAttrib(EAttFontHeight); + charFormatMask.SetAttrib(EAttFontStrokeWeight); + charFormatMask.SetAttrib(EAttFontPosture); + + // Owner ship of charFormatLayer is taken by Editor + CCharFormatLayer* charFormatLayer = NULL; + charFormatLayer = CCharFormatLayer::NewL(charFormat,charFormatMask); + iEditor->SetCharFormatLayer(charFormatLayer); + } + +// ---------------------------------------------------------------------------- +// CBrowserBookmarksGotoPane::SetVKBFlag +// ---------------------------------------------------------------------------- +void CBrowserBookmarksGotoPane::SetVKBFlag( TBool aVKBFlag ) + { + if( aVKBFlag ) + { + iEditor->RemoveFlagFromUserFlags( CEikEdwin::EAvkonDisableVKB ); + } + else + { + iEditor->AddFlagToUserFlags( CEikEdwin::EAvkonDisableVKB ); + } + } // End of File diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/FavouritesSrc/BrowserBookmarksListboxIconHandler.cpp --- a/browserui/browser/FavouritesSrc/BrowserBookmarksListboxIconHandler.cpp Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/FavouritesSrc/BrowserBookmarksListboxIconHandler.cpp Fri May 08 08:18:43 2009 +0300 @@ -58,7 +58,8 @@ EIconIndexAdaptiveFolder = 9, ///< Adaptive Bookmarks domain folder icon index EIconIndexAdaptiveBookmark = 10, ///< Adaptive Bookmarks bookmark icon index EIconIndexDefaultBookmark = 11, ///< Adaptive Bookmarks bookmark icon index - EIconIndexRSSFolder = 12 ///< RSS Folder icon index + EIconIndexRSSFolder = 12, ///< RSS Folder icon index + EIconIndexService = 13 ///< service icon }; // ================= MEMBER FUNCTIONS ======================= @@ -82,7 +83,12 @@ { return EIconIndexLastVisitedPage; } - + //service icon + if( aItem.ContextId() == KFavouritesServiceContextId ) + { + return EIconIndexService; + } + //seamless links folders have a different icon if( CBrowserFavouritesView::IsSeamlessFolder( aItem.ContextId() ) ) { @@ -193,7 +199,7 @@ MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance(); //EMbmAvkonQgn_indi_marked_add - AknsUtils::CreateIconL( skinInstance, + AknsUtils::CreateIconLC( skinInstance, KAknsIIDQgnIndiMarkedAdd, newIconBmp, newIconMaskBmp, @@ -201,11 +207,12 @@ EMbmAvkonQgn_indi_marked_add, EMbmAvkonQgn_indi_marked_add_mask); newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp); + CleanupStack::Pop(2); CleanupStack::PushL(newIcon); icons->AppendL( newIcon ); CleanupStack::Pop(newIcon); //EMbmAvkonQgn_prop_folder_small - AknsUtils::CreateIconL( skinInstance, + AknsUtils::CreateIconLC( skinInstance, KAknsIIDQgnPropFolderSmall, newIconBmp, newIconMaskBmp, @@ -213,12 +220,13 @@ EMbmAvkonQgn_prop_folder_small, EMbmAvkonQgn_prop_folder_small_mask); newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp); + CleanupStack::Pop(2); CleanupStack::PushL(newIcon); icons->AppendL( newIcon ); CleanupStack::Pop(newIcon); //"z:\\system\\apps\\browser\\Browser.mbm"; //EMbmBrowserQgn_prop_wml_home - AknsUtils::CreateIconL( skinInstance, + AknsUtils::CreateIconLC( skinInstance, KAknsIIDQgnPropWmlHome, newIconBmp, newIconMaskBmp, @@ -226,11 +234,12 @@ EMbmBrowserQgn_prop_wml_home, EMbmBrowserQgn_prop_wml_home_mask); newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp); + CleanupStack::Pop(2); CleanupStack::PushL(newIcon); icons->AppendL( newIcon ); CleanupStack::Pop(newIcon); //EMbmBrowserQgn_prop_wml_bm_last - AknsUtils::CreateIconL( skinInstance, + AknsUtils::CreateIconLC( skinInstance, KAknsIIDQgnPropWmlBmLast, newIconBmp, newIconMaskBmp, @@ -238,11 +247,12 @@ EMbmBrowserQgn_prop_wml_bm_last, EMbmBrowserQgn_prop_wml_bm_last_mask); newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp); + CleanupStack::Pop(2); CleanupStack::PushL(newIcon); icons->AppendL( newIcon ); CleanupStack::Pop(newIcon); //EMbmBrowserQgn_prop_wml_bm - AknsUtils::CreateIconL( skinInstance, + AknsUtils::CreateIconLC( skinInstance, KAknsIIDQgnPropWmlBm, newIconBmp, newIconMaskBmp, @@ -250,11 +260,12 @@ EMbmBrowserQgn_prop_wml_bm, EMbmBrowserQgn_prop_wml_bm_mask); newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp); + CleanupStack::Pop(2); CleanupStack::PushL(newIcon); icons->AppendL( newIcon ); CleanupStack::Pop(newIcon); //EMbmBrowserQgn_indi_wml_csd_add - AknsUtils::CreateIconL( skinInstance, + AknsUtils::CreateIconLC( skinInstance, KAknsIIDQgnIndiWmlCsdAdd, newIconBmp, newIconMaskBmp, @@ -262,11 +273,12 @@ EMbmBrowserQgn_indi_wml_csd_add, EMbmBrowserQgn_indi_wml_csd_add_mask); newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp); + CleanupStack::Pop(2); CleanupStack::PushL(newIcon); icons->AppendL( newIcon ); CleanupStack::Pop(newIcon); //EMbmBrowserQgn_indi_wml_hscsd_add - AknsUtils::CreateIconL( skinInstance, + AknsUtils::CreateIconLC( skinInstance, KAknsIIDQgnIndiWmlHscsdAdd, newIconBmp, newIconMaskBmp, @@ -274,11 +286,12 @@ EMbmBrowserQgn_indi_wml_hscsd_add, EMbmBrowserQgn_indi_wml_hscsd_add_mask); newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp); + CleanupStack::Pop(2); CleanupStack::PushL(newIcon); icons->AppendL( newIcon ); CleanupStack::Pop(newIcon); //EMbmBrowserQgn_indi_wml_gprs_add - AknsUtils::CreateIconL( skinInstance, + AknsUtils::CreateIconLC( skinInstance, KAknsIIDQgnIndiWmlGprsAdd, newIconBmp, newIconMaskBmp, @@ -286,11 +299,12 @@ EMbmBrowserQgn_indi_wml_gprs_add, EMbmBrowserQgn_indi_wml_gprs_add_mask); newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp); + CleanupStack::Pop(2); CleanupStack::PushL(newIcon); icons->AppendL( newIcon ); CleanupStack::Pop(newIcon); //EMbmBrowserQgn_prop_wml_folder_link_seamless - AknsUtils::CreateIconL( skinInstance, + AknsUtils::CreateIconLC( skinInstance, KAknsIIDQgnPropWmlFolderLinkSeamless, newIconBmp, newIconMaskBmp, @@ -298,11 +312,12 @@ EMbmBrowserQgn_prop_wml_folder_link_seamless, EMbmBrowserQgn_prop_wml_folder_link_seamless_mask); newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp); + CleanupStack::Pop(2); CleanupStack::PushL(newIcon); icons->AppendL( newIcon ); CleanupStack::Pop(newIcon); //EMbmBrowserQgn_prop_wml_folder_adap - AknsUtils::CreateIconL( skinInstance, + AknsUtils::CreateIconLC( skinInstance, KAknsIIDQgnPropWmlFolderAdap, newIconBmp, newIconMaskBmp, @@ -310,12 +325,13 @@ EMbmBrowserQgn_prop_wml_folder_adap, EMbmBrowserQgn_prop_wml_folder_adap_mask); newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp); + CleanupStack::Pop(2); CleanupStack::PushL(newIcon); icons->AppendL( newIcon ); CleanupStack::Pop(newIcon); //EMbmBrowserQgn_prop_wml_bm_adap - AknsUtils::CreateIconL( skinInstance, + AknsUtils::CreateIconLC( skinInstance, KAknsIIDQgnPropWmlBmAdap, newIconBmp, newIconMaskBmp, @@ -323,13 +339,14 @@ EMbmBrowserQgn_prop_wml_bm_adap, EMbmBrowserQgn_prop_wml_bm_adap_mask); newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp); + CleanupStack::Pop(2); CleanupStack::PushL(newIcon); icons->AppendL( newIcon ); CleanupStack::Pop(newIcon); //EMbmBrowserQgn_prop_psln_active - AknsUtils::CreateIconL( skinInstance, + AknsUtils::CreateIconLC( skinInstance, KAknsIIDQgnPropPslnActive, newIconBmp, newIconMaskBmp, @@ -337,13 +354,14 @@ EMbmBrowserQgn_prop_psln_active, EMbmBrowserQgn_prop_psln_active_mask); newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp); + CleanupStack::Pop(2); // newIconBmp, newIconMaskBmp (see CreateIconLC) CleanupStack::PushL(newIcon); icons->AppendL( newIcon ); CleanupStack::Pop(newIcon); //EMbmBrowserQgn_prop_folder_rss - AknsUtils::CreateIconL( skinInstance, + AknsUtils::CreateIconLC( skinInstance, KAknsIIDQgnPropFolderRss, newIconBmp, newIconMaskBmp, @@ -351,11 +369,26 @@ EMbmBrowserQgn_prop_folder_rss, EMbmBrowserQgn_prop_folder_rss_mask); newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp); + CleanupStack::Pop(2); // newIconBmp, newIconMaskBmp (see CreateIconLC) CleanupStack::PushL(newIcon); icons->AppendL( newIcon ); CleanupStack::Pop(newIcon); + //Browser service + AknsUtils::CreateIconLC( skinInstance, + KAknsIIDQgnPropBrowserInfoSmall, + newIconBmp, + newIconMaskBmp, + iconFileBrowser, + EMbmBrowserQgn_prop_browser_info_small, + EMbmBrowserQgn_prop_browser_info_small_mask ); + newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp ); + CleanupStack::Pop(2); + CleanupStack::PushL(newIcon); + icons->AppendL( newIcon ); + CleanupStack::Pop(newIcon); + CleanupStack::Pop(); // POP Icon return icons; } diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/FavouritesSrc/BrowserBookmarksView.cpp --- a/browserui/browser/FavouritesSrc/BrowserBookmarksView.cpp Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/FavouritesSrc/BrowserBookmarksView.cpp Fri May 08 08:18:43 2009 +0300 @@ -119,6 +119,8 @@ if ( container ) { container->GotoPane()->SetGPObserver( NULL ); + if( ApiProvider().Preferences().SearchFeature() ) + container->SearchPane()->SetGPObserver( NULL ); } delete iDomainFolderName; delete iItemsToMove; @@ -248,7 +250,9 @@ { ProcessCommandL(EWmlCmdMoveCancel); } - else if ( TheContainer() && TheContainer()->GotoPane()->IsEditing() ) + else if( TheContainer() + && ( TheContainer()->GotoPane()->IsEditing() + || TheContainer()->SearchPane()->IsEditing())) { ProcessCommandL(EWmlCmdGotoPaneCancel); } @@ -314,19 +318,43 @@ // CBA commands. case EWmlCmdGotoPaneGoTo: { - if (TheContainer()->GotoPane()->Editor()->TextLength()!= 0) + if( TheContainer()->GotoPaneActive() ) { - // Cancel editing and sets Goto Pane text back. - if (TheContainer()->GotoPane()->PopupList() != NULL) + if (TheContainer()->GotoPane()->Editor()->TextLength()!= 0) + { + // Cancel editing and sets Goto Pane text back. + if (TheContainer()->GotoPane()->PopupList() != NULL) + { + TheContainer()->GotoPane()->PopupList()->SetDirectoryModeL( ETrue ); + TheContainer()->GotoPane()->PopupList()->HidePopupL(); + } + GotoUrlInGotoPaneL(); + } + } + else // it was from searchpane + { + if (TheContainer()->SearchPane()->Editor()->TextLength()!= 0) { - TheContainer()->GotoPane()->PopupList()->SetDirectoryModeL( ETrue ); - TheContainer()->GotoPane()->PopupList()->HidePopupL(); + // Launch Search application with search parameters + // and cancel editing of search and goto. + // Dim Toolbar buttons + DimToolbarButtons(EFalse); + HBufC* searchString = TheContainer()->SearchPane()->GetTextL(); + CleanupStack::PushL( searchString ); + if( searchString ) + { + UpdateCbaL(); + // Set GoTo/Search Inactive + TheContainer()->SetGotoInactiveL(); + LaunchSearchApplicationL( *searchString ); + } + CleanupStack::PopAndDestroy( searchString ); } - GotoUrlInGotoPaneL(); + // set LSK to GOTO now + UpdateCbaL(); } break; } - case EWmlCmdGotoPaneSelect: { if (TheContainer()->GotoPane()->Editor()->TextLength()!= 0) @@ -461,6 +489,7 @@ break; } + case EWmlCmdGoToAddressAndSearch: case EWmlCmdGoToAddress: // MSK for Recent Url page case EWmlCmdSwitchToGotoActive: { @@ -469,6 +498,12 @@ break; } + case EIsCmdSearchWeb: + { + DimToolbarButtons(ETrue); + TheContainer()->SetSearchActiveL(); + break; + } case EWmlCmdEditBookmark: { @@ -813,6 +848,12 @@ void CBrowserBookmarksView::SetLSKDynL(TSKPair& aLsk, CBrowserBookmarksGotoPane* aGotoPane) { + CBrowserBookmarksContainer* theContainer = TheContainer(); + CBrowserBookmarksGotoPane* searchPane = NULL; + if( theContainer ) + { + searchPane = theContainer->SearchPane(); + } // Default lsk is option aLsk.setPair(EAknSoftkeyOptions, R_BROWSER_BOOKMARKS_DYN_SK_TEXT_SOFTKEY_OPTION); @@ -843,7 +884,11 @@ // LSK Select is only for non-touch devices aLsk.setPair(EWmlCmdGotoPaneSelect, R_BROWSER_BOOKMARKS_DYN_SK_TEXT_SOFTKEY_SELECT); } - } + } + else if( searchPane && searchPane->IsEditing() ) + { + aLsk.setPair(EWmlCmdGotoPaneGoTo, R_BROWSER_BOOKMARKS_DYN_SK_QTN_IS_SOFTK_SEARCH); + } } // ---------------------------------------------------------------------------- @@ -854,11 +899,17 @@ void CBrowserBookmarksView::SetRSKDynL(TSKPair& aRsk, CBrowserBookmarksGotoPane* aGotoPane) { + CBrowserBookmarksContainer* theContainer = TheContainer(); + CBrowserBookmarksGotoPane* searchPane = NULL; + if( theContainer ) + { + searchPane = theContainer->SearchPane(); + } if ( iManualItemMovingGoingOn ) { aRsk.setPair(EBrowserBookmarksCmdCancel, R_BROWSER_BOOKMARKS_DYN_SK_TEXT_SOFTKEY_CANCEL); } - else if ( aGotoPane && aGotoPane->IsEditing() ) + else if( (aGotoPane && aGotoPane->IsEditing()) || (searchPane && searchPane->IsEditing()) ) { // default for goto is cancel aRsk.setPair(EBrowserBookmarksCmdCancel, R_BROWSER_BOOKMARKS_DYN_SK_TEXT_SOFTKEY_CANCEL); @@ -921,10 +972,21 @@ aMsk.setPair(EBrowserBookmarksCmdOpen, R_BROWSER_BOOKMARKS_DYN_SK_TEXT_SOFTKEY_OPEN); } + CBrowserBookmarksContainer* theContainer = TheContainer(); + CBrowserBookmarksGotoPane* searchPane = NULL; + if( theContainer ) + { + searchPane = theContainer->SearchPane(); + } // // UNDER these special conditions, the msk is set differently: // if ( aGotoPane && aGotoPane->IsEditing() ) + { + // follow whatever the lsk is set to + aMsk = aLsk; + } + else if( searchPane && searchPane->IsEditing() ) { // follow whatever the lsk is set to aMsk = aLsk; @@ -974,7 +1036,8 @@ ) { #ifdef _DEBUG - __ASSERT_DEBUG( aGotoPane == TheContainer()->GotoPane(), \ + __ASSERT_DEBUG( aGotoPane == TheContainer()->GotoPane() || + aGotoPane == TheContainer()->SearchPane(), \ Util::Panic( Util::EFavouritesInternal ) ); #endif @@ -1072,7 +1135,14 @@ { Toolbar()->SetToolbarObserver(this); } - + if ( ApiProvider().Preferences().SearchFeature() ) + { + Toolbar()->HideItem( EWmlCmdGoToAddress, ETrue, ETrue ); + } + else + { + Toolbar()->HideItem( EWmlCmdGoToAddressAndSearch, ETrue, EFalse ); + } } // ---------------------------------------------------------------------------- @@ -1208,7 +1278,11 @@ // home aMenuPane->SetItemDimmed( EWmlCmdLaunchHomePage, ETrue ); - + //search + if ( ! ApiProvider().Preferences().SearchFeature() ) + { + aMenuPane->SetItemDimmed( EIsCmdSearchWeb, ETrue ); + } break; } case R_BMACTIONS_SUBMENU: @@ -1472,6 +1546,8 @@ CBrowserBookmarksContainer* container = CBrowserBookmarksContainer::NewL( ClientRect(), *this ); container->GotoPane()->SetGPObserver( this ); + if( ApiProvider().Preferences().SearchFeature() ) + container->SearchPane()->SetGPObserver( this ); return container; } diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/FavouritesSrc/BrowserFavouritesFolderListboxIconHandler.cpp --- a/browserui/browser/FavouritesSrc/BrowserFavouritesFolderListboxIconHandler.cpp Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/FavouritesSrc/BrowserFavouritesFolderListboxIconHandler.cpp Fri May 08 08:18:43 2009 +0300 @@ -151,7 +151,7 @@ MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance(); - AknsUtils::CreateIconL( skinInstance, + AknsUtils::CreateIconLC( skinInstance, KAknsIIDQgnIndiMarkedAdd, newIconBmp, newIconMaskBmp, @@ -159,11 +159,12 @@ EMbmAvkonQgn_indi_marked_add, EMbmAvkonQgn_indi_marked_add_mask); newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp); + CleanupStack::Pop(2); // newIconBmp, newIconMaskBmp (see CreateIconLC) CleanupStack::PushL(newIcon); icons->AppendL( newIcon ); CleanupStack::Pop(newIcon); //EMbmAvkonQgn_prop_folder_small; maskId = EMbmAvkonQgn_prop_folder_small_mask; }, - AknsUtils::CreateIconL( skinInstance, + AknsUtils::CreateIconLC( skinInstance, KAknsIIDQgnPropFolderSmall, newIconBmp, newIconMaskBmp, @@ -171,11 +172,12 @@ EMbmAvkonQgn_prop_folder_small, EMbmAvkonQgn_prop_folder_small_mask); newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp); + CleanupStack::Pop(2); // newIconBmp, newIconMaskBmp (see CreateIconLC) CleanupStack::PushL(newIcon); icons->AppendL( newIcon ); CleanupStack::Pop(newIcon); //EMbmAvkonQgn_indi_level_back; maskId = EMbmAvkonQgn_indi_level_back_mask; } - AknsUtils::CreateIconL( skinInstance, + AknsUtils::CreateIconLC( skinInstance, KAknsIIDQgnIndiLevelBack, newIconBmp, newIconMaskBmp, @@ -183,12 +185,13 @@ EMbmAvkonQgn_indi_level_back, EMbmAvkonQgn_indi_level_back_mask); newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp); + CleanupStack::Pop(2); // newIconBmp, newIconMaskBmp (see CreateIconLC) CleanupStack::PushL(newIcon); icons->AppendL( newIcon ); CleanupStack::Pop(newIcon); //"z:\\system\\apps\\browser\\Browser.mbm"; //EMbmBrowserQgn_prop_wml_home; maskId = EMbmBrowserQgn_prop_wml_home_mask; }, - AknsUtils::CreateIconL( skinInstance, + AknsUtils::CreateIconLC( skinInstance, KAknsIIDQgnPropWmlHome, newIconBmp, newIconMaskBmp, @@ -196,11 +199,12 @@ EMbmBrowserQgn_prop_wml_home, EMbmBrowserQgn_prop_wml_home_mask); newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp); + CleanupStack::Pop(2); // newIconBmp, newIconMaskBmp (see CreateIconLC) CleanupStack::PushL(newIcon); icons->AppendL( newIcon ); CleanupStack::Pop(newIcon); //EMbmBrowserQgn_prop_wml_bm_last; maskId = EMbmBrowserQgn_prop_wml_bm_last_mask; }, - AknsUtils::CreateIconL( skinInstance, + AknsUtils::CreateIconLC( skinInstance, KAknsIIDQgnPropWmlBmLast, newIconBmp, newIconMaskBmp, @@ -208,11 +212,12 @@ EMbmBrowserQgn_prop_wml_bm_last, EMbmBrowserQgn_prop_wml_bm_last_mask); newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp); + CleanupStack::Pop(2); // newIconBmp, newIconMaskBmp (see CreateIconLC) CleanupStack::PushL(newIcon); icons->AppendL( newIcon ); CleanupStack::Pop(newIcon); //EMbmBrowserQgn_prop_wml_bm; maskId = EMbmBrowserQgn_prop_wml_bm_mask; }, - AknsUtils::CreateIconL( skinInstance, + AknsUtils::CreateIconLC( skinInstance, KAknsIIDQgnPropWmlBm, newIconBmp, newIconMaskBmp, @@ -220,11 +225,12 @@ EMbmBrowserQgn_prop_wml_bm, EMbmBrowserQgn_prop_wml_bm_mask); newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp); + CleanupStack::Pop(2); // newIconBmp, newIconMaskBmp (see CreateIconLC) CleanupStack::PushL(newIcon); icons->AppendL( newIcon ); CleanupStack::Pop(newIcon); //EMbmBrowserQgn_indi_wml_csd_add; maskId = EMbmBrowserQgn_indi_wml_csd_add_mask; }, - AknsUtils::CreateIconL( skinInstance, + AknsUtils::CreateIconLC( skinInstance, KAknsIIDQgnIndiWmlCsdAdd, newIconBmp, newIconMaskBmp, @@ -232,11 +238,12 @@ EMbmBrowserQgn_indi_wml_csd_add, EMbmBrowserQgn_indi_wml_csd_add_mask); newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp); + CleanupStack::Pop(2); // newIconBmp, newIconMaskBmp (see CreateIconLC) CleanupStack::PushL(newIcon); icons->AppendL( newIcon ); CleanupStack::Pop(newIcon); //EMbmBrowserQgn_indi_wml_hscsd_add; maskId = EMbmBrowserQgn_indi_wml_hscsd_add_mask; }, - AknsUtils::CreateIconL( skinInstance, + AknsUtils::CreateIconLC( skinInstance, KAknsIIDQgnIndiWmlHscsdAdd, newIconBmp, newIconMaskBmp, @@ -244,11 +251,12 @@ EMbmBrowserQgn_indi_wml_hscsd_add, EMbmBrowserQgn_indi_wml_hscsd_add_mask); newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp); + CleanupStack::Pop(2); // newIconBmp, newIconMaskBmp (see CreateIconLC) CleanupStack::PushL(newIcon); icons->AppendL( newIcon ); CleanupStack::Pop(newIcon); //EMbmBrowserQgn_indi_wml_gprs_add; maskId = EMbmBrowserQgn_indi_wml_gprs_add_mask; }, - AknsUtils::CreateIconL( skinInstance, + AknsUtils::CreateIconLC( skinInstance, KAknsIIDQgnIndiWmlGprsAdd, newIconBmp, newIconMaskBmp, @@ -256,11 +264,12 @@ EMbmBrowserQgn_indi_wml_gprs_add, EMbmBrowserQgn_indi_wml_gprs_add_mask); newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp); + CleanupStack::Pop(2); // newIconBmp, newIconMaskBmp (see CreateIconLC) CleanupStack::PushL(newIcon); icons->AppendL( newIcon ); CleanupStack::Pop(newIcon); //EMbmBrowserQgn_prop_wml_folder_link_seamless; maskId = EMbmBrowserQgn_prop_wml_folder_link_seamless_mask; } - AknsUtils::CreateIconL( skinInstance, + AknsUtils::CreateIconLC( skinInstance, KAknsIIDQgnPropWmlFolderLinkSeamless, newIconBmp, newIconMaskBmp, @@ -268,6 +277,7 @@ EMbmBrowserQgn_prop_wml_folder_link_seamless, EMbmBrowserQgn_prop_wml_folder_link_seamless_mask); newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp); + CleanupStack::Pop(2); // newIconBmp, newIconMaskBmp (see CreateIconLC) CleanupStack::PushL(newIcon); icons->AppendL( newIcon ); CleanupStack::Pop(newIcon); diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/FavouritesSrc/BrowserFavouritesListbox.cpp --- a/browserui/browser/FavouritesSrc/BrowserFavouritesListbox.cpp Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/FavouritesSrc/BrowserFavouritesListbox.cpp Fri May 08 08:18:43 2009 +0300 @@ -661,7 +661,8 @@ // TInt CBrowserFavouritesListbox::ListboxFlags() { - return EAknListBoxMarkableList; + return AknLayoutUtils::PenEnabled() ? + EAknListBoxStylusMarkableList : EAknListBoxMarkableList; } // --------------------------------------------------------- diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/FavouritesSrc/BrowserFavouritesListboxItemDrawer.cpp --- a/browserui/browser/FavouritesSrc/BrowserFavouritesListboxItemDrawer.cpp Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/FavouritesSrc/BrowserFavouritesListboxItemDrawer.cpp Fri May 08 08:18:43 2009 +0300 @@ -55,12 +55,24 @@ } TListItemProperties properties = CColumnListBoxItemDrawer::Properties( aItemIndex ); - if ( STATIC_CAST( CBrowserFavouritesListboxModel*, iModel ) -> - Items()->At( aItemIndex )->IsFolder() ) - { - // If this is a folder, set "hidden selection" true. - properties.SetHiddenSelection( ETrue ); - } + + // SEARCH CUSTOM: Updated below for Italics in bookmarks view + // Selection of Folders is allowed, so no need to set it as Hidden. + // if ( STATIC_CAST( CBrowserFavouritesListboxModel*, iModel ) -> + // Items()->At( aItemIndex )->IsFolder() ) + // { + // // If this is a folder, set "hidden selection" true. + // properties.SetHiddenSelection( ETrue ); + // } + + + //Better solution would be adding italics properties to CFavouritesItem, but it requires changes in FavouritesEngine API + CFavouritesItem* fi = STATIC_CAST( CBrowserFavouritesListboxModel*, iModel ) -> + Items()->At( aItemIndex ); + if ( fi->ContextId() == KFavouritesServiceContextId ) + { + properties.SetItalics(ETrue); + } return properties; } diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/FavouritesSrc/BrowserFavouritesView.cpp --- a/browserui/browser/FavouritesSrc/BrowserFavouritesView.cpp Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/FavouritesSrc/BrowserFavouritesView.cpp Fri May 08 08:18:43 2009 +0300 @@ -310,6 +310,11 @@ resId = R_BROWSERBM_FOLDER_DOWNLOAD_MUSIC; break; } + case KFavouritesServiceContextId: + { + resId = R_IS_RECOMMENDATIONS; + break; + } default: { break; // not a seamless link folder. @@ -1168,15 +1173,30 @@ TInt contextId; TInt resId = 0; HBufC* name; - for (int i=0; iCount(); i++) + + TBool browserService = ApiProvider().Preferences().ServiceFeature(); + TBool firstBoot = ApiProvider().Preferences().GetIntValue( KBrowserFirstBoot ); + TInt serviceUid = KErrNotFound; + + for(int i=0; iCount(); i++) { - if (!items->At(i)->IsHidden()) + if (!items->At(i)->IsHidden()) { contextId = items->At(i)->ContextId(); - resId = CBrowserFavouritesView::GetSeamlessFolderResourceID( - contextId ); - - if (resId) + + if ( firstBoot && browserService ) + { + //This is the first boot and we need to move Service top of the bookmarks. + //Here we save uid for Service item. + if ( contextId == KFavouritesServiceContextId ) + { + serviceUid = items->IndexToUid( i ); + } + } + + resId = CBrowserFavouritesView::GetSeamlessFolderResourceID( + contextId ); + if(resId) { name = iCoeEnv->AllocReadResourceLC( resId ); items->At(i)->SetNameL(name->Des()); @@ -1189,6 +1209,47 @@ i--; } } + + if ( firstBoot && browserService && serviceUid != KErrNotFound ) + { + //get current order array + CBrowserBookmarksOrder* currentOrder = CBrowserBookmarksOrder::NewLC(); + CArrayFixFlat* orderArray = new (ELeave) CArrayFixFlat( KGranularityHigh ); + CleanupStack::PushL( orderArray ); + + iModel->Database().GetData( KFavouritesRootUid, *currentOrder ); + orderArray->AppendL( &( currentOrder->GetBookMarksOrder()[0] ), currentOrder->GetBookMarksOrder().Count()); + + //First sort UI. Move Service + CFavouritesItem* serviceCopy = CFavouritesItem::NewLC(); + const CFavouritesItem* serviceItem = items->ItemByUid( serviceUid ); + if ( serviceItem ) + { + *serviceCopy = *serviceItem; + items->Delete( serviceUid ); + items->InsertL( 0, serviceCopy ); //ownership transfered + CleanupStack::Pop( serviceCopy ); + } + else + { + User::Leave( KErrNotFound ); + } + + //Next change order in db. Move Service + orderArray->InsertL( 0, orderArray->At( serviceUid ) ); + orderArray->Delete( serviceUid+1 ); + + //save changes to db + currentOrder->SetBookMarksOrderL( *orderArray ); + iModel->Database().SetData( KFavouritesRootUid, *currentOrder ); + + CleanupStack::PopAndDestroy( 2 ); //orderArray, currentOrder + //service moved to top of the bookmark list. We can set firstboot value to false + // so now we can set firstboot value to false. + CRepository* repository = CRepository::NewLC( KCRUidBrowser ); + User::LeaveIfError( repository->Set(KBrowserFirstBoot, EFalse) ); + CleanupStack::PopAndDestroy( repository ); + } CleanupStack::Pop(); // items: passing ownership to listbox. iContainer->Listbox()->SetDataL diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/FeedsSrc/FeedsClientUtilities.cpp --- a/browserui/browser/FeedsSrc/FeedsClientUtilities.cpp Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/FeedsSrc/FeedsClientUtilities.cpp Fri May 08 08:18:43 2009 +0300 @@ -116,6 +116,8 @@ TPtr ptr( iMimeTypes->Des() ); ptr.Append( KSupportedMimeTypes() ); ptr.ZeroTerminate(); + + iWaitDialog = CFeedsWaitDialog::NewL(*this); } // ----------------------------------------------------------------------------- @@ -622,11 +624,9 @@ iCanceledRequest = CTransaction::ENone; return; } - // Close the wait dialog. - if (iWaitDialog) - { - iWaitDialog->Close(); - } + + iWaitDialog->Close(); + iIsWaitDialogDisplayed = EFalse; // Show the view if everything went ok. @@ -1517,11 +1517,7 @@ iAppUI.AddViewL( iFolderView ); // transfer ownership to CAknViewAppUi } - // Create the WaitDialog - if (iWaitDialog == NULL) - { - iWaitDialog = CFeedsWaitDialog::NewL(*this); - } + // Connect to the server. ConnectToServerL(aGetRootFolder); diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/FeedsSrc/FeedsEditFeedDialog.cpp --- a/browserui/browser/FeedsSrc/FeedsEditFeedDialog.cpp Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/FeedsSrc/FeedsEditFeedDialog.cpp Fri May 08 08:18:43 2009 +0300 @@ -166,7 +166,6 @@ // void CFeedsEditFeedDialog::HandleFreqCmdL() { - TBuf<32> title(_L("Auto update")); TInt currentlySelected = KAutoUpdatingOff; // options array @@ -219,7 +218,10 @@ break; } - currentlySelected = ShowRadioButtonSettingPageL(title,values,currentlySelected); + HBufC* title; + title=iCoeEnv->AllocReadResourceLC(R_FEEDS_AUTOUPDATING_FEED); + currentlySelected = ShowRadioButtonSettingPageL(*title,values,currentlySelected); + CleanupStack::PopAndDestroy(); // title if(!iActionCancelled) { @@ -428,8 +430,7 @@ HBufC* note = StringLoader::LoadLC( R_FEEDS_DATAQUERY_AUTOUPDATEWARN ); if(iPreviousFreq == 0) { - // ShowInfoDialogwithOkSoftKeyL( note->Des() ); - ShowInfoDialogwithOkSoftKeyL( _L("Enabling automatic updating may increase your monthly phone bill") ); + ShowInfoDialogwithOkSoftKeyL(note->Des()); } CleanupStack::PopAndDestroy(); // note iPreviousFreq = iFreq; diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/FeedsSrc/FeedsFolderView.cpp --- a/browserui/browser/FeedsSrc/FeedsFolderView.cpp Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/FeedsSrc/FeedsFolderView.cpp Fri May 08 08:18:43 2009 +0300 @@ -292,6 +292,7 @@ iApiProvider.SetLastActiveViewId(Id()); iContainer->UpdateTitleL(); + iContainer->UpdateNavigationPaneL(); iContainer->UpdateListBoxL(iInitialItem); iContainer->UpdateCbaL(); diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/Group/BrowserNG.mmp --- a/browserui/browser/Group/BrowserNG.mmp Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/Group/BrowserNG.mmp Fri May 08 08:18:43 2009 +0300 @@ -65,6 +65,17 @@ LIBRARY cmmanager.lib LIBRARY browserengine.lib LIBRARY edbms.lib + +#ifdef BRDO_APP_GALLERY_SUPPORTED_FF LIBRARY MGXMediaFileAPI.lib +#endif LIBRARY oommonitor.lib +#ifdef RD_UI_TRANSITION_EFFECTS_LIST +LIBRARY aknlistloadertfx.lib +#endif //RD_UI_TRANSITION_EFFECTS_LIST +LIBRARY aknpictograph.lib +#ifdef RD_TACTILE_FEEDBACK +LIBRARY touchfeedback.lib +#endif // RD_TACTILE_FEEDBACK +LIBRARY AknLayout2Scalable.lib diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/Group/browsericons.txt --- a/browserui/browser/Group/browsericons.txt Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/Group/browsericons.txt Fri May 08 08:18:43 2009 +0300 @@ -95,4 +95,6 @@ -c8,8 qgn_prop_folder_rss_error -c8,8 qgn_prop_file_rss_error -c8,8 qgn_indi_browser_tb_send_url +-c8,8 qgn_indi_browser_tb_goto_and_search.svg +-c8,8 qgn_prop_browser_info_small.svg diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/SettingsInc/SettingsContainer.h --- a/browserui/browser/SettingsInc/SettingsContainer.h Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/SettingsInc/SettingsContainer.h Fri May 08 08:18:43 2009 +0300 @@ -151,6 +151,12 @@ * */ void HandleListBoxEventL(CEikListBox* aListBox,TListBoxEvent aEventType); + + /** + * HandleGainingForegroundL + * Handles Foreground Event. + */ + void HandleGainingForegroundL(); /** * New functions @@ -258,6 +264,9 @@ void AppendDownloadsOpenL( CDesCArray*& aItemArray, TBuf& aItemText ); + + void AppendSearchProviderL( CDesCArray*& aItemArray, + TBuf& aItemText ); //--------------------------------------------------------------------- // Page Settings void AppendAutoLoadContentL( CDesCArray*& aItemArray, @@ -378,6 +387,11 @@ * Query user to select fromm user defined AP */ void SelectUserDefinedAPL( TUint32& id ); + + /** + * Launch Search Application Settings View. + */ + void RunSearchSettingsL(); #ifdef __SERIES60_HELP /** diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/SettingsInc/SettingsView.h --- a/browserui/browser/SettingsInc/SettingsView.h Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/SettingsInc/SettingsView.h Fri May 08 08:18:43 2009 +0300 @@ -122,6 +122,11 @@ * @see CAknView */ void HandleClientRectChange(); + + /** + * @see CAknView + */ + void HandleForegroundEventL (TBool aForeground); private: // MEikMenuObserver diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/SettingsSrc/SettingsContainer.cpp --- a/browserui/browser/SettingsSrc/SettingsContainer.cpp Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/SettingsSrc/SettingsContainer.cpp Fri May 08 08:18:43 2009 +0300 @@ -81,6 +81,7 @@ _LIT( KSettingsCategoryListBoxItemNoIcon, " " ); const TInt KDoesntExist = -1; const TInt KGranularity = 1; +const TInt KMaxTitleLength = 512; _LIT( KWmlSettingsListBoxItemPrefix, " \t" ); @@ -418,6 +419,11 @@ { AppendDownloadsOpenL( itemArray, itemText ); } + + if( ApiProvider().Preferences().SearchFeature() ) + { + AppendSearchProviderL( itemArray, itemText ); + } RestoreListBoxIndexL(); iSettingListBox->DrawNow(); @@ -686,7 +692,7 @@ { CreateItemFromTwoStringsL( R_WMLBROWSER_SETTINGS_DEFAULT_AP, - R_WML_SETTINGS_ACCESS_POINT_ALWAYS_ASK, + R_WML_SETTINGS_ACCESS_POINT_ASK_WHEN_NEEDED, aItemText ); break; @@ -722,7 +728,7 @@ } } - HBufC* name = iCoeEnv->AllocReadResourceLC( R_WML_SETTINGS_ACCESS_POINT_ALWAYS_ASK ); + HBufC* name = iCoeEnv->AllocReadResourceLC( R_WML_SETTINGS_ACCESS_POINT_ASK_WHEN_NEEDED ); aItemText.Append( *name ); CleanupStack::PopAndDestroy(); // name @@ -754,7 +760,7 @@ } else { - HBufC* name = iCoeEnv->AllocReadResourceLC( R_WML_SETTINGS_ACCESS_POINT_ALWAYS_ASK ); + HBufC* name = iCoeEnv->AllocReadResourceLC( R_WML_SETTINGS_ACCESS_POINT_ASK_WHEN_NEEDED ); aItemText.Append( *name ); CleanupStack::PopAndDestroy(); // name @@ -1088,6 +1094,40 @@ } + +// ----------------------------------------------------------------------------- +// CSettingsContainer::AppendSearchProviderL +// ----------------------------------------------------------------------------- +void CSettingsContainer::AppendSearchProviderL( + CDesCArray*& aItemArray, + TBuf& aItemText) + { + aItemText.Zero(); + aItemText.Append( KWmlSettingsListBoxItemPrefix ); + HBufC* settingTitle = iCoeEnv->AllocReadResourceLC( R_BROWSERS_SETT_WEB_SEARCH_PROVIDER ); + aItemText.Append( *settingTitle ); + CleanupStack::PopAndDestroy(); // settingTitle + aItemText.Append( KWmlSettingsListBoxItemPostfix ); + + HBufC* searchProvider = HBufC::NewLC( KMaxTitleLength ); + TPtr searchProviderPtr = searchProvider->Des(); + + ApiProvider().Preferences().GetStringValueL( KBrowserSearchProviderTitle, + KMaxTitleLength , searchProviderPtr); + + if(searchProvider->Compare(KNullDesC()) == 0) + { + CleanupStack::PopAndDestroy(searchProvider); + searchProvider = iCoeEnv->AllocReadResourceLC( R_IS_LABEL_NOT_SELECTED ); + } + + aItemText.Append( *searchProvider ); + CleanupStack::PopAndDestroy( searchProvider ); + + aItemArray->AppendL( aItemText ); + iSettingIndex->AppendL( EWmlSettingsSearchProvider ); + } + // ----------------------------------------------------------------------------- // CSettingsContainer::AppendAutoLoadContentL // ----------------------------------------------------------------------------- @@ -2515,6 +2555,12 @@ DisplayGeneralSettingsL(); break; } + + case EWmlSettingsSearchProvider: + { + RunSearchSettingsL(); + break; + } @@ -3252,6 +3298,7 @@ case EWmlSettingsShortCutKey0Cmd: case EWmlSettingsShortCutKeyStarCmd: case EWmlSettingsShortCutKeyHashCmd: + case EWmlSettingsSearchProvider: { ChangeItemL( ETrue ); ret = EKeyWasConsumed; @@ -3281,6 +3328,11 @@ return ret; } + +// ----------------------------------------------------------------------------- +// CSettingsContainer::HandleListBoxEventL +// ----------------------------------------------------------------------------- +// void CSettingsContainer::HandleListBoxEventL(CEikListBox* aListBox,TListBoxEvent aEventType) { if (iPenEnabled) @@ -3311,6 +3363,22 @@ // ----------------------------------------------------------------------------- +// CSettingsContainer::HandleGainingForegroundL +// ----------------------------------------------------------------------------- +// +void CSettingsContainer::HandleGainingForegroundL() + { + switch(iCurrentSettingCategory) + { + case EGeneral: + DisplayGeneralSettingsL(); + break; + default: // do nothing + break; + } + } + +// ----------------------------------------------------------------------------- // CSettingsContainer::CreateItemFromTwoStringsL // ----------------------------------------------------------------------------- // @@ -3644,4 +3712,19 @@ } } +// ----------------------------------------------------------------------------- +// CSettingsContainer::RunSearchSettingsL +// ----------------------------------------------------------------------------- +// +void CSettingsContainer::RunSearchSettingsL() + { + // Get Search application UID from CenRep + TInt id = ApiProvider().Preferences().GetIntValue( KBrowserSearchAppUid ); + TUid searchAppId( TUid::Uid( id ) ); + id = ApiProvider().Preferences().GetIntValue( KBrowserSearchProviderSettingViewId ); + TUid settingViewId( TUid::Uid( id ) ); + TVwsViewId viewToOpen(searchAppId, settingViewId); + CBrowserAppUi::Static()->ActivateViewL(viewToOpen); + } + // End of File diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/SettingsSrc/SettingsView.cpp --- a/browserui/browser/SettingsSrc/SettingsView.cpp Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/SettingsSrc/SettingsView.cpp Fri May 08 08:18:43 2009 +0300 @@ -268,6 +268,18 @@ } } +// --------------------------------------------------------- +// CBrowserSettingsView::HandleForegroundEventL +// --------------------------------------------------------- +// +void CBrowserSettingsView::HandleForegroundEventL (TBool aForeground) + { + if(aForeground) + { + iContainer->HandleGainingForegroundL(); + } + } + // --------------------------------------------------------------------------- // CBrowserSettingsView::DynInitMenuPaneL // --------------------------------------------------------------------------- diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/SrcData/Browser.hrh --- a/browserui/browser/SrcData/Browser.hrh Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/SrcData/Browser.hrh Fri May 08 08:18:43 2009 +0300 @@ -87,6 +87,8 @@ EWmlCmdServiceOptions, EWmlCmdFavourites, EWmlCmdGoToAddress, + EWmlCmdGoToAddressAndSearch, + EIsCmdSearchWeb, // launch search pane EWmlCmdSaveAsBookmark, EWmlCmdReload, EWmlCmdBack, @@ -470,6 +472,8 @@ EWmlSettingsPopupBlocking, // Download Open Support EWmlSettingsDownloadsOpen, + // Search provider support + EWmlSettingsSearchProvider, // toolbar buttons EWmlSettingsToolbarOnOff, diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/SrcData/Browser.rss --- a/browserui/browser/SrcData/Browser.rss Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/SrcData/Browser.rss Fri May 08 08:18:43 2009 +0300 @@ -485,6 +485,7 @@ items = { MENU_ITEM { command = EWmlCmdGoToAddress; txt = qtn_browser_list_new_web_page; }, + MENU_ITEM { command = EIsCmdSearchWeb; txt = qtn_is_list_search; }, MENU_ITEM { command = EWmlCmdBackToPage; txt = qtn_wml_list_ret_page; }, MENU_ITEM { command = EWmlCmdFavourites; txt = qtn_wml_faves; }, MENU_ITEM { command = EWmlCmdOpenFeedsFolder; txt = qtn_browser_list_web_feeds;}, @@ -915,4 +916,20 @@ //RESOURCE TBUF r_update_tim { buf = "update infonote!"; } //RESOURCE TBUF r_about_tim { buf = "version infonote!"; } +//============================================================================= +// +// Service +// +//============================================================================= +RESOURCE TBUF r_is_recommendations { buf = qtn_is_recommendations; } +RESOURCE TBUF r_is_recommendations_title { buf = qtn_is_recommendations_title; } +//============================================================================= +// +// Search +// +//============================================================================= +RESOURCE TBUF r_browsers_sett_web_search_provider { buf = qtn_browsers_sett_web_search_provider; } +RESOURCE TBUF r_is_web_search { buf = qtn_is_web_search; } +RESOURCE TBUF r_is_label_not_selected { buf = qtn_is_label_not_selected; } + diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/SrcData/BrowserBookmarks.rssi --- a/browserui/browser/SrcData/BrowserBookmarks.rssi Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/SrcData/BrowserBookmarks.rssi Fri May 08 08:18:43 2009 +0300 @@ -227,6 +227,17 @@ CBA_BUTTON { id = EWmlCmdGotoPaneGoTo; txt = qtn_wml_softk_go; } }; } +// No need for separate search command, active search editor is checked. +RESOURCE CBA r_browser_bookmarks_cba_search_pane_search_cancel + { + flags = EAknCBAFlagRespondWhenInvisible; + buttons = + { + CBA_BUTTON { id = EWmlCmdGotoPaneGoTo; txt = qtn_is_softkey_search; }, + CBA_BUTTON { id = EWmlCmdGotoPaneCancel; txt = text_softkey_cancel; }, + CBA_BUTTON { id = EWmlCmdGotoPaneGoTo; txt = qtn_is_softkey_search; } + }; + } //adaptive popuplist needs it RESOURCE CBA r_browser_bookmarks_cba_goto_pane_opendir_cancel // TEMP @@ -516,6 +527,9 @@ RESOURCE TBUF r_browser_bookmarks_dyn_sk_qtn_wml_softk_go { buf = qtn_wml_softk_go; } +RESOURCE TBUF r_browser_bookmarks_dyn_sk_qtn_is_softk_search + { buf = qtn_is_softkey_search; } + RESOURCE TBUF r_browser_bookmarks_dyn_sk_text_softkey_back { buf = text_softkey_back; } diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/SrcData/BrowserSettings.rssi --- a/browserui/browser/SrcData/BrowserSettings.rssi Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/SrcData/BrowserSettings.rssi Fri May 08 08:18:43 2009 +0300 @@ -794,7 +794,7 @@ // RESOURCE TBUF r_wml_settings_access_point_user_defined { buf = qtn_wml_settings_access_point_user_defined; } -RESOURCE TBUF r_wml_settings_access_point_always_ask { buf = qtn_wml_settings_access_point_always_ask; } +RESOURCE TBUF r_wml_settings_access_point_ask_when_needed { buf = qtn_wml_settings_access_point_ask_when_needed; } #endif diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/SrcData/BrowserToolbar.hrh --- a/browserui/browser/SrcData/BrowserToolbar.hrh Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/SrcData/BrowserToolbar.hrh Fri May 08 08:18:43 2009 +0300 @@ -357,4 +357,10 @@ //skin KAknsIIDQgnIndiBrowserTbSwitchWin } +RESOURCE AVKON_BUTTON_STATE_EXTENSION r_browser_ext_qgn_indi_browser_tb_goto_and_search + { + bmbSkinIdMajor = EAknsMajorGeneric; + bmbSkinIdMinor = EAknsMinorGenericQgnIndiBrowserTbGotoAndSearch; + //skin KAknsIIDQgnIndiBrowserTbGotoAndSearch + } #endif // BROWSERTOOLBAR_HRH diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/SrcData/bookmark_toolbar.rssi --- a/browserui/browser/SrcData/bookmark_toolbar.rssi Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/SrcData/bookmark_toolbar.rssi Fri May 08 08:18:43 2009 +0300 @@ -83,6 +83,27 @@ }; }, + TBAR_CTRL //Search Goto + { + type = EAknCtButton; + id = EWmlCmdGoToAddressAndSearch; + control = AVKON_BUTTON + { + flags = 0; + states = + { + AVKON_BUTTON_STATE + { + txt = ""; //Icon should always be visible instead of this + helptxt = qtn_is_tooltip_goto_search; + bmpfile = "\\Resource\\apps\\browser.mif"; + bmpid = EMbmBrowserQgn_indi_browser_tb_goto_and_search; + bmpmask = EMbmBrowserQgn_indi_browser_tb_goto_and_search_mask; + extension = r_browser_ext_qgn_indi_browser_tb_goto_and_search; + } + }; + }; + }, TBAR_CTRL { type = EAknCtButton; diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/SrcData/browser_toolbar.rssi --- a/browserui/browser/SrcData/browser_toolbar.rssi Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/SrcData/browser_toolbar.rssi Fri May 08 08:18:43 2009 +0300 @@ -337,6 +337,27 @@ TBAR_CTRL { type = EAknCtButton; + id = EWmlCmdGoToAddressAndSearch; + control = AVKON_BUTTON + { + flags = 0; + states = + { + AVKON_BUTTON_STATE + { + txt = ""; //Icon should always be visible instead of this + helptxt = qtn_is_tooltip_goto_search; + bmpfile = "\\Resource\\apps\\browser.mif"; + bmpid = EMbmBrowserQgn_indi_browser_tb_goto_and_search; + bmpmask = EMbmBrowserQgn_indi_browser_tb_goto_and_search_mask; + extension = r_browser_ext_qgn_indi_browser_tb_goto_and_search; + } + }; + }; + }, + TBAR_CTRL + { + type = EAknCtButton; id = EWmlCmdHistoryBack; control = AVKON_BUTTON diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/conf/browserbookmarks.confml Binary file browserui/browser/conf/browserbookmarks.confml has changed diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/conf/browserui.confml Binary file browserui/browser/conf/browserui.confml has changed diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/conf/browserui_10008D39.crml Binary file browserui/browser/conf/browserui_10008D39.crml has changed diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/browser/loc/WmlBrowser.loc --- a/browserui/browser/loc/WmlBrowser.loc Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/browser/loc/WmlBrowser.loc Fri May 08 08:18:43 2009 +0300 @@ -1510,6 +1510,10 @@ //l:list_set_graphic_pane_t1 #define qtn_wml_settings_access_point_always_ask "Always ask" +//d:Browser settings selectable item texts +//l:list_set_graphic_pane_t1 +#define qtn_wml_settings_access_point_ask_when_needed "Ask when needed" + //d:Browser gotopane default text //l:query_popup_data_pane_t1/opt4 #define qtn_browser_goto_text_enter_address "Enter address" diff -r 84ad3b177aa3 -r 57d5b8e231c4 browserui/group/bld.inf --- a/browserui/group/bld.inf Mon Mar 30 12:49:49 2009 +0300 +++ b/browserui/group/bld.inf Fri May 08 08:18:43 2009 +0300 @@ -1,49 +1,21 @@ /* -* ============================================================================== -* Name : bld.inf -* Part of : Toplevel -* Interface : -* Description : Highlevel bld.inf -* Version : 0.1 -* Author : brmorris +* Copyright (c) 2006-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". * -* Copyright (c) 2006-2008, Nokia Corporation -* All rights reserved. -* -* Redistribution and use in source and binary forms, with or without -* modification, are permitted provided that the following conditions -* are met: -* -* * Redistributions of source code must retain the above copyright -* notice, this list of conditions and the following disclaimer. -* * Redistributions in binary form must reproduce the above copyright -* notice, this list of conditions and the following disclaimer in -* the documentation and/or other materials provided with the -* distribution. -* * Neither the name of the Nokia Corporation nor the names of its -* contributors may be used to endorse or promote products derived -* from this software without specific prior written permission. -* -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE -* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH -* DAMAGE. -* +* Initial Contributors: +* Nokia Corporation - initial contribution. * -* ============================================================================== +* Contributors: +* +* Description: Project build file for Browser UI +* */ - - /* * Order is important */ diff -r 84ad3b177aa3 -r 57d5b8e231c4 group/bld.inf --- a/group/bld.inf Mon Mar 30 12:49:49 2009 +0300 +++ b/group/bld.inf Fri May 08 08:18:43 2009 +0300 @@ -1,49 +1,20 @@ /* -* ============================================================================== -* Name : bld.inf -* Part of : Toplevel -* Interface : -* Description : Highlevel bld.inf -* Version : 0.1 -* Author : brmorris +* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". * -* Copyright (c) 2006, Nokia Corporation -* All rights reserved. -* -* Redistribution and use in source and binary forms, with or without -* modification, are permitted provided that the following conditions -* are met: -* -* * Redistributions of source code must retain the above copyright -* notice, this list of conditions and the following disclaimer. -* * Redistributions in binary form must reproduce the above copyright -* notice, this list of conditions and the following disclaimer in -* the documentation and/or other materials provided with the -* distribution. -* * Neither the name of the Nokia Corporation nor the names of its -* contributors may be used to endorse or promote products derived -* from this software without specific prior written permission. -* -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE -* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH -* DAMAGE. -* +* Initial Contributors: +* Nokia Corporation - initial contribution. * -* ============================================================================== +* Contributors: +* +* Description: Project build file for webuis +* */ - - - /* * Order is important */