--- /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 @@
+<?xml version="1.0"?>
+<!DOCTYPE SystemDefinition SYSTEM "sysdef_1_4_0.dtd"
+ [ <!ENTITY layer_real_source_path "sf/app/webuis" > ]>
+
+<SystemDefinition name="webuis" schema="1.4.0">
+ <systemModel>
+ <layer name="app_layer">
+ <module name="browserui">
+ <unit unitID="browser" name="browser" bldFile="&layer_real_source_path;/browserui/browser/group" mrp=""/>
+ <unit unitID="operatormenu" name="operatormenu" bldFile="&layer_real_source_path;/browserui/operatormenu/group" mrp=""/>
+ <unit unitID="videoservices" name="videoservices" bldFile="&layer_real_source_path;/browserui/videoservices/group" mrp=""/>
+ </module>
+ <module name="browserplugins">
+ <unit unitID="browsersysteminfoplugin" name="browsersysteminfoplugin" bldFile="&layer_real_source_path;/browserplugins/browsersysteminfoplugin/group" mrp=""/>
+ <unit unitID="browsergpsplugin" name="browsergpsplugin" bldFile="&layer_real_source_path;/browserplugins/browsergpsplugin/group" mrp=""/>
+ <unit unitID="browseraudiovideoplugin" name="browseraudiovideoplugin" bldFile="&layer_real_source_path;/browserplugins/browseraudiovideoplugin/group" mrp=""/>
+ </module>
+ <module name="pushmtm">
+ <unit unitID="pushmtm" name="pushmtm" bldFile="&layer_real_source_path;/pushmtm/group" mrp=""/>
+ </module>
+ </layer>
+ </systemModel>
+</SystemDefinition>
--- 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"
--- 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;
--- 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:
--- 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 <coecntrl.h>
@@ -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
--- 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:
/**
--- 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
--- 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
--- 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 <platform/mw/Browser_platform_variant.hrh>
#include <BrowserNG.rsg>
#include <uri16.h>
#include <uri8.h>
@@ -39,8 +40,12 @@
#include <AiwGenericParam.h>
#include <AknDef.h>
#include <DocumentHandler.h>
+
+#ifdef BRDO_APP_GALLERY_SUPPORTED_FF
#include <MGXFileManagerFactory.h>
#include <CMGXFileManager.h>
+#endif
+
#include <BrowserPluginInterface.h>
#include <oommonitorplugin.h>
@@ -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
--- 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 <aknenv.h>
#include <AknSgcc.h>
#include <StringLoader.h>
-
-
+#include "BrowserUtil.h"
+#include <BrowserUiSDKCRKeys.h>
// ================= 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
--- 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<RFs>( 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(),
--- 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 )
{
--- 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
--- 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,
--- 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 <Featmgr.h>
#include <fepbase.h>
#include <aknutils.h>
+#include <BrowserUiSDKCRKeys.h>
-#include <centralrepository.h>
+#include <centralrepository.h>
+#include <AknLayout2ScalableDef.h>
#include <AknFepInternalCRKeys.h>
+#include <aknlayoutfont.h>
#include <PtiDefs.h>
+#include <aknlayoutscalable_avkon.cdl.h>
#include "CommonConstants.h"
#include "BrowserGotoPane.h"
@@ -51,6 +55,8 @@
#include "eikon.hrh"
+#include <StringLoader.h>
+
// ---------------------------------------------------------------------------
// 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<MCoeFepObserver &>(*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
--- 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 )
--- 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 );
}
--- 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() );
--- 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
--- 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"
--- 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
--- 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"
--- 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);
--- 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 <AknViewAppUi.h>
#include <aknsfld.h>
+#include <avkon.mbg>
#include <BrowserNG.rsg>
#include <FavouritesItem.h>
#include <FeatMgr.h>
+#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 <StringLoader.h>
// 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
--- 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 <AknsFrameBackgroundControlContext.h>
#include <BrowserNG.rsg>
-#include <Avkon.mbg>
+
#include <AknsUtils.h>
#include <AppApacLayout.cdl.h>
#include <AppLayout.cdl.h>
#include <AknLayout.cdl.h>
-#include <centralrepository.h>
+#include <centralrepository.h>
#include <AknFepInternalCRKeys.h>
#include <PtiDefs.h>
@@ -54,9 +54,15 @@
#include <eikpriv.rsg>
#include <BARSREAD.H>
+#include <AknLayout2ScalableDef.h>
+#include <aknlayoutfont.h>
+#include <aknlayoutscalable_avkon.cdl.h>
+
+#include <StringLoader.h>
#include <skinlayout.cdl.h>
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<KMaxTypefaceNameLength> typeface;
- CEikonEnv::Static()->ReadResource(typeface,R_EIK_DEFAULT_CHAR_FORMAT_TYPEFACE);
- TResourceReader reader;
- CEikonEnv::Static()->CreateResourceReaderLC(reader,R_EIK_DEFAULT_CHAR_FORMAT_HEIGHT);
+ TBuf<KMaxTypefaceNameLength> 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<CCoeControl*>(&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
--- 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;
}
--- 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;
}
--- 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);
--- 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;
}
// ---------------------------------------------------------
--- 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;
}
--- 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; i<items->Count(); i++)
+
+ TBool browserService = ApiProvider().Preferences().ServiceFeature();
+ TBool firstBoot = ApiProvider().Preferences().GetIntValue( KBrowserFirstBoot );
+ TInt serviceUid = KErrNotFound;
+
+ for(int i=0; i<items->Count(); 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<TInt>* orderArray = new (ELeave) CArrayFixFlat<TInt>( 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
--- 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);
--- 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;
--- 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();
--- 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
--- 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
--- 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<KWmlSettingsItemMaxLength>& aItemText );
+
+ void AppendSearchProviderL( CDesCArray*& aItemArray,
+ TBuf<KWmlSettingsItemMaxLength>& 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
/**
--- 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
--- 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<KWmlSettingsItemMaxLength>& 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
--- 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
// ---------------------------------------------------------------------------
--- 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,
--- 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; }
+
--- 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; }
--- 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
--- 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
--- 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;
--- 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
Binary file browserui/browser/conf/browserbookmarks.confml has changed
Binary file browserui/browser/conf/browserui.confml has changed
Binary file browserui/browser/conf/browserui_10008D39.crml has changed
--- 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"
--- 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
*/
--- 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
*/